@@ -890,6 +890,15 @@
// }
// }
},
+ // Jupyter settings
+ "jupyter": {
+ "enabled": true
+ // Specify the language name as the key and the kernel name as the value.
+ // "kernel_selections": {
+ // "python": "conda-base"
+ // "typescript": "deno"
+ // }
+ },
// Vim settings
"vim": {
"use_system_clipboard": "always",
@@ -28,7 +28,6 @@ pub struct EditorSettings {
pub search_wrap: bool,
pub auto_signature_help: bool,
pub show_signature_help_after_edits: bool,
- #[serde(default)]
pub jupyter: Jupyter,
}
@@ -69,15 +68,23 @@ pub enum DoubleClickInMultibuffer {
Open,
}
-#[derive(Default, Copy, Clone, Debug, Serialize, Deserialize, PartialEq, Eq, JsonSchema)]
-#[serde(rename_all = "snake_case")]
+#[derive(Debug, Clone, Deserialize)]
pub struct Jupyter {
/// Whether the Jupyter feature is enabled.
///
- /// Default: `false`
+ /// Default: true
pub enabled: bool,
}
+#[derive(Default, Copy, Clone, Debug, Serialize, Deserialize, PartialEq, Eq, JsonSchema)]
+#[serde(rename_all = "snake_case")]
+pub struct JupyterContent {
+ /// Whether the Jupyter feature is enabled.
+ ///
+ /// Default: true
+ pub enabled: Option<bool>,
+}
+
#[derive(Copy, Clone, Debug, Serialize, Deserialize, JsonSchema, PartialEq, Eq)]
pub struct Toolbar {
pub breadcrumbs: bool,
@@ -247,7 +254,7 @@ pub struct EditorSettingsContent {
pub show_signature_help_after_edits: Option<bool>,
/// Jupyter REPL settings.
- pub jupyter: Option<Jupyter>,
+ pub jupyter: Option<JupyterContent>,
}
// Toolbar related settings
@@ -318,6 +325,12 @@ pub struct GutterContent {
pub folds: Option<bool>,
}
+impl EditorSettings {
+ pub fn jupyter_enabled(cx: &AppContext) -> bool {
+ EditorSettings::get_global(cx).jupyter.enabled
+ }
+}
+
impl Settings for EditorSettings {
const KEY: Option<&'static str> = None;
@@ -16,7 +16,7 @@ impl JupyterSettings {
// In order to avoid a circular dependency between `editor` and `repl` crates,
// we put the `enable` flag on its settings.
// This allows the editor to set up context for key bindings/actions.
- EditorSettings::get_global(cx).jupyter.enabled
+ EditorSettings::jupyter_enabled(cx)
}
}
@@ -61,40 +61,3 @@ impl Settings for JupyterSettings {
Ok(settings)
}
}
-
-#[cfg(test)]
-mod tests {
- use gpui::{AppContext, UpdateGlobal};
- use settings::SettingsStore;
-
- use super::*;
-
- #[gpui::test]
- fn test_deserialize_jupyter_settings(cx: &mut AppContext) {
- let store = settings::SettingsStore::test(cx);
- cx.set_global(store);
-
- EditorSettings::register(cx);
- JupyterSettings::register(cx);
-
- assert_eq!(JupyterSettings::enabled(cx), false);
-
- // Setting a custom setting through user settings
- SettingsStore::update_global(cx, |store, cx| {
- store
- .set_user_settings(
- r#"{
- "jupyter": {
- "enabled": true,
- "dock": "left",
- "default_width": 800.0
- }
- }"#,
- cx,
- )
- .unwrap();
- });
-
- assert_eq!(JupyterSettings::enabled(cx), true);
- }
-}