Browse Source

disable autoClosingBrackets by default everywhere (#9488)

* added 'notebook:toggle-autoclosing-brackets' command

- toggles autoClosingBrackets option for all cell types

* fix settings bug by adding missing `editorConfig.handlePaste` to schema

* implemented `fileeditor:toggle-autoclosing-brackets-universal` command

* set `autoClosingBrackets = false` by default everywhere

* Remove handlePaste from user editor settings.

The error that this fixed was fixed in another way in #10585

* Delete duplicate import from merge error

* Fix merge error regarding fetching notebook settings.

This fixes an automated merge error that incorrectly resolved conflicts
with #10131

* Lint

* Move autoclose settings menu item to the universal command to affect notebook too.

Also, remove unnecessary file editor menu code brought in by the merge that had already been removed from master.

* Fix UI test screenshots to reflect autoclose brackets disabled by default.

* Update ui test screenshots that were slightly shifted.

As seen in the previous commit, this PR changed a menu item from “Auto Close Brackets for Text Editor” to “Auto Close Brackets”, which made the menu slightly narrower, which in turn slightly shifted the submenus. This resulted in the screen capture being slightly shifted compared to the reference screenshots.

Co-authored-by: Jason Grout <jgrout6@bloomberg.net>
Max Klein 3 years ago
parent
commit
7527bf35a9
23 changed files with 89 additions and 25 deletions
  1. 1 1
      packages/codeeditor/src/editor.ts
  2. 17 17
      packages/fileeditor-extension/schema/plugin.json
  3. 34 2
      packages/fileeditor-extension/src/commands.ts
  4. 1 1
      packages/notebook-extension/schema/tracker.json
  5. 32 0
      packages/notebook-extension/src/index.ts
  6. 1 1
      packages/notebook/src/widget.ts
  7. 3 3
      packages/notebook/test/widget.spec.ts
  8. BIN
      ui-tests/reference-output/screenshots/general_opened_menu_settings.png
  9. BIN
      ui-tests/reference-output/screenshots/general_opened_menu_settings_console_run_keystroke.png
  10. BIN
      ui-tests/reference-output/screenshots/general_opened_menu_settings_jupyterlab_theme.png
  11. BIN
      ui-tests/reference-output/screenshots/general_opened_menu_settings_language.png
  12. BIN
      ui-tests/reference-output/screenshots/general_opened_menu_settings_terminal_theme.png
  13. BIN
      ui-tests/reference-output/screenshots/general_opened_menu_settings_text_editor_indentation.png
  14. BIN
      ui-tests/reference-output/screenshots/general_opened_menu_settings_text_editor_key_map.png
  15. BIN
      ui-tests/reference-output/screenshots/general_opened_menu_settings_text_editor_theme.png
  16. BIN
      ui-tests/reference-output/screenshots/notebook_create_opened_menu_settings.png
  17. BIN
      ui-tests/reference-output/screenshots/notebook_create_opened_menu_settings_console_run_keystroke.png
  18. BIN
      ui-tests/reference-output/screenshots/notebook_create_opened_menu_settings_jupyterlab_theme.png
  19. BIN
      ui-tests/reference-output/screenshots/notebook_create_opened_menu_settings_language.png
  20. BIN
      ui-tests/reference-output/screenshots/notebook_create_opened_menu_settings_terminal_theme.png
  21. BIN
      ui-tests/reference-output/screenshots/notebook_create_opened_menu_settings_text_editor_indentation.png
  22. BIN
      ui-tests/reference-output/screenshots/notebook_create_opened_menu_settings_text_editor_key_map.png
  23. BIN
      ui-tests/reference-output/screenshots/notebook_create_opened_menu_settings_text_editor_theme.png

+ 1 - 1
packages/codeeditor/src/editor.ts

@@ -808,7 +808,7 @@ export namespace CodeEditor {
     tabSize: 4,
     insertSpaces: true,
     matchBrackets: true,
-    autoClosingBrackets: true,
+    autoClosingBrackets: false,
     handlePaste: true,
     rulers: [],
     codeFolding: false

+ 17 - 17
packages/fileeditor-extension/schema/plugin.json

@@ -77,7 +77,7 @@
             "rank": 30
           },
           {
-            "command": "fileeditor:toggle-autoclosing-brackets",
+            "command": "fileeditor:toggle-autoclosing-brackets-universal",
             "rank": 30
           },
           {
@@ -148,6 +148,9 @@
         "autoClosingBrackets": {
           "type": "boolean"
         },
+        "codeFolding": {
+          "type": "boolean"
+        },
         "cursorBlinkRate": {
           "type": "number",
           "title": "Cursor blinking rate",
@@ -161,6 +164,9 @@
           "minimum": 1,
           "maximum": 100
         },
+        "insertSpaces": {
+          "type": "boolean"
+        },
         "lineHeight": {
           "type": ["number", "null"]
         },
@@ -177,23 +183,17 @@
         "readOnly": {
           "type": "boolean"
         },
-        "insertSpaces": {
-          "type": "boolean"
-        },
-        "tabSize": {
-          "type": "number"
-        },
-        "wordWrapColumn": {
-          "type": "integer"
-        },
         "rulers": {
           "type": "array",
           "items": {
             "type": "number"
           }
         },
-        "codeFolding": {
-          "type": "boolean"
+        "tabSize": {
+          "type": "number"
+        },
+        "wordWrapColumn": {
+          "type": "integer"
         }
       },
       "additionalProperties": false,
@@ -206,20 +206,20 @@
       "description": "The configuration for all text editors.\nIf `fontFamily`, `fontSize` or `lineHeight` are `null`,\nvalues from current theme are used.",
       "$ref": "#/definitions/editorConfig",
       "default": {
-        "autoClosingBrackets": true,
+        "autoClosingBrackets": false,
+        "codeFolding": false,
         "cursorBlinkRate": 530,
         "fontFamily": null,
         "fontSize": null,
+        "insertSpaces": true,
         "lineHeight": null,
         "lineNumbers": true,
         "lineWrap": "on",
         "matchBrackets": true,
         "readOnly": false,
-        "insertSpaces": true,
-        "tabSize": 4,
-        "wordWrapColumn": 80,
         "rulers": [],
-        "codeFolding": false
+        "tabSize": 4,
+        "wordWrapColumn": 80
       }
     }
   },

+ 34 - 2
packages/fileeditor-extension/src/commands.ts

@@ -43,6 +43,8 @@ import {
   ReadonlyPartialJSONObject
 } from '@lumino/coreutils';
 
+const autoClosingBracketsNotebook = 'notebook:toggle-autoclosing-brackets';
+
 /**
  * The command IDs used by the fileeditor plugin.
  */
@@ -63,6 +65,9 @@ export namespace CommandIDs {
 
   export const autoClosingBrackets = 'fileeditor:toggle-autoclosing-brackets';
 
+  export const autoClosingBracketsUniversal =
+    'fileeditor:toggle-autoclosing-brackets-universal';
+
   export const createConsole = 'fileeditor:create-console';
 
   export const replaceSelection = 'fileeditor:replace-selection';
@@ -434,8 +439,10 @@ export namespace Commands {
     id: string
   ): void {
     commands.addCommand(CommandIDs.autoClosingBrackets, {
-      execute: () => {
-        config.autoClosingBrackets = !config.autoClosingBrackets;
+      execute: args => {
+        config.autoClosingBrackets = !!(
+          args['force'] ?? !config.autoClosingBrackets
+        );
         return settingRegistry
           .set(id, 'editorConfig', (config as unknown) as JSONObject)
           .catch((reason: Error) => {
@@ -445,6 +452,31 @@ export namespace Commands {
       label: trans.__('Auto Close Brackets for Text Editor'),
       isToggled: () => config.autoClosingBrackets
     });
+
+    commands.addCommand(CommandIDs.autoClosingBracketsUniversal, {
+      execute: () => {
+        const anyToggled =
+          commands.isToggled(CommandIDs.autoClosingBrackets) ||
+          commands.isToggled(autoClosingBracketsNotebook);
+        // if any auto closing brackets options is toggled, toggle both off
+        if (anyToggled) {
+          void commands.execute(CommandIDs.autoClosingBrackets, {
+            force: false
+          });
+          void commands.execute(autoClosingBracketsNotebook, { force: false });
+        } else {
+          // both are off, turn them on
+          void commands.execute(CommandIDs.autoClosingBrackets, {
+            force: true
+          });
+          void commands.execute(autoClosingBracketsNotebook, { force: true });
+        }
+      },
+      label: trans.__('Auto Close Brackets'),
+      isToggled: () =>
+        commands.isToggled(CommandIDs.autoClosingBrackets) ||
+        commands.isToggled(autoClosingBracketsNotebook)
+    });
   }
 
   /**

+ 1 - 1
packages/notebook-extension/schema/tracker.json

@@ -645,7 +645,7 @@
       "description": "The configuration for all code cells.",
       "$ref": "#/definitions/editorConfig",
       "default": {
-        "autoClosingBrackets": true,
+        "autoClosingBrackets": false,
         "cursorBlinkRate": 530,
         "fontFamily": null,
         "fontSize": null,

+ 32 - 0
packages/notebook-extension/src/index.ts

@@ -246,6 +246,8 @@ namespace CommandIDs {
 
   export const replaceSelection = 'notebook:replace-selection';
 
+  export const autoClosingBrackets = 'notebook:toggle-autoclosing-brackets';
+
   export const toggleCollapseCmd = 'Collapsible_Headings:Toggle_Collapse';
 
   export const collapseAllCmd = 'Collapsible_Headings:Collapse_All';
@@ -1065,6 +1067,36 @@ function activateNotebookHandler(
         settings.changed.connect(() => {
           updateConfig(settings);
         });
+        commands.addCommand(CommandIDs.autoClosingBrackets, {
+          execute: args => {
+            const codeConfig = settings.get('codeCellConfig')
+              .composite as JSONObject;
+            const markdownConfig = settings.get('markdownCellConfig')
+              .composite as JSONObject;
+            const rawConfig = settings.get('rawCellConfig')
+              .composite as JSONObject;
+
+            const anyToggled =
+              codeConfig.autoClosingBrackets ||
+              markdownConfig.autoClosingBrackets ||
+              rawConfig.autoClosingBrackets;
+            const toggled = !!(args['force'] ?? !anyToggled);
+            [
+              codeConfig.autoClosingBrackets,
+              markdownConfig.autoClosingBrackets,
+              rawConfig.autoClosingBrackets
+            ] = [toggled, toggled, toggled];
+
+            void settings.set('codeCellConfig', codeConfig);
+            void settings.set('markdownCellConfig', markdownConfig);
+            void settings.set('rawCellConfig', rawConfig);
+          },
+          label: trans.__('Auto Close Brackets for All Notebook Cell Types'),
+          isToggled: () =>
+            ['codeCellConfig', 'markdownCellConfig', 'rawCellConfig'].some(
+              x => (settings.get(x).composite as JSONObject).autoClosingBrackets
+            )
+        });
       })
       .catch((reason: Error) => {
         console.warn(reason.message);

+ 1 - 1
packages/notebook/src/widget.ts

@@ -895,7 +895,7 @@ export namespace StaticNotebook {
       ...CodeEditor.defaultConfig,
       lineWrap: 'off',
       matchBrackets: true,
-      autoClosingBrackets: true
+      autoClosingBrackets: false
     },
     markdown: {
       ...CodeEditor.defaultConfig,

+ 3 - 3
packages/notebook/test/widget.spec.ts

@@ -410,19 +410,19 @@ describe('@jupyter/notebook', () => {
       it('should be settable', () => {
         const widget = createWidget();
         expect(widget.widgets[0].editor.getOption('autoClosingBrackets')).toBe(
-          true
+          false
         );
         const newConfig = {
           raw: editorConfig.raw,
           markdown: editorConfig.markdown,
           code: {
             ...editorConfig.code,
-            autoClosingBrackets: false
+            autoClosingBrackets: true
           }
         };
         widget.editorConfig = newConfig;
         expect(widget.widgets[0].editor.getOption('autoClosingBrackets')).toBe(
-          false
+          true
         );
       });
     });

BIN
ui-tests/reference-output/screenshots/general_opened_menu_settings.png


BIN
ui-tests/reference-output/screenshots/general_opened_menu_settings_console_run_keystroke.png


BIN
ui-tests/reference-output/screenshots/general_opened_menu_settings_jupyterlab_theme.png


BIN
ui-tests/reference-output/screenshots/general_opened_menu_settings_language.png


BIN
ui-tests/reference-output/screenshots/general_opened_menu_settings_terminal_theme.png


BIN
ui-tests/reference-output/screenshots/general_opened_menu_settings_text_editor_indentation.png


BIN
ui-tests/reference-output/screenshots/general_opened_menu_settings_text_editor_key_map.png


BIN
ui-tests/reference-output/screenshots/general_opened_menu_settings_text_editor_theme.png


BIN
ui-tests/reference-output/screenshots/notebook_create_opened_menu_settings.png


BIN
ui-tests/reference-output/screenshots/notebook_create_opened_menu_settings_console_run_keystroke.png


BIN
ui-tests/reference-output/screenshots/notebook_create_opened_menu_settings_jupyterlab_theme.png


BIN
ui-tests/reference-output/screenshots/notebook_create_opened_menu_settings_language.png


BIN
ui-tests/reference-output/screenshots/notebook_create_opened_menu_settings_terminal_theme.png


BIN
ui-tests/reference-output/screenshots/notebook_create_opened_menu_settings_text_editor_indentation.png


BIN
ui-tests/reference-output/screenshots/notebook_create_opened_menu_settings_text_editor_key_map.png


BIN
ui-tests/reference-output/screenshots/notebook_create_opened_menu_settings_text_editor_theme.png