Ver Fonte

Clean up shortcuts extension.

Afshin Darian há 7 anos atrás
pai
commit
553fbc4725
1 ficheiros alterados com 16 adições e 7 exclusões
  1. 16 7
      packages/shortcuts-extension/src/index.ts

+ 16 - 7
packages/shortcuts-extension/src/index.ts

@@ -54,12 +54,12 @@ const plugin: JupyterLabPlugin<void> = {
   id: 'jupyter.extensions.shortcuts',
   requires: [ISettingRegistry],
   activate: (app: JupyterLab, settingReqistry: ISettingRegistry): void => {
-    settingReqistry.load(plugin.id).then(settings => {
-      let disposables = Private.loadShortcuts(app, settings);
+    const { commands } = app;
 
+    settingReqistry.load(plugin.id).then(settings => {
+      Private.loadShortcuts(commands, settings);
       settings.changed.connect(() => {
-        disposables.dispose();
-        disposables = Private.loadShortcuts(app, settings);
+        Private.loadShortcuts(commands, settings);
       });
     }).catch((reason: Error) => {
       console.error('Loading shortcut settings failed.', reason.message);
@@ -79,19 +79,28 @@ export default plugin;
  * A namespace for private module data.
  */
 namespace Private {
+  /**
+   * The internal collection of currently loaded shortcuts.
+   */
+  let disposables: IDisposable;
+
   /**
    * Load the keyboard shortcuts from settings.
    */
   export
-  function loadShortcuts(app: JupyterLab, settings: ISettingRegistry.ISettings): IDisposable {
+  function loadShortcuts(commands: CommandRegistry, settings: ISettingRegistry.ISettings): void {
+    if (disposables) {
+      disposables.dispose();
+    }
+
     const { composite } = settings;
     const keys = Object.keys(composite);
 
-    return keys.reduce((acc, val): DisposableSet => {
+    disposables = keys.reduce((acc, val): DisposableSet => {
       const options = normalizeOptions(composite[val]);
 
       if (options) {
-        acc.add(app.commands.addKeyBinding(options));
+        acc.add(commands.addKeyBinding(options));
       }
 
       return acc;