Bläddra i källkod

Remove the console codemirror plugin

Steven Silvester 8 år sedan
förälder
incheckning
a4591e796b

+ 0 - 1
jupyterlab/src/extensions.ts

@@ -10,7 +10,6 @@ module.exports = [
   require('../../lib/commandlinker/plugin').plugin,
   require('../../lib/commandlinker/plugin').plugin,
   require('../../lib/commandpalette/plugin').plugin,
   require('../../lib/commandpalette/plugin').plugin,
   require('../../lib/console/plugin').plugin,
   require('../../lib/console/plugin').plugin,
-  require('../../lib/console/codemirror/plugin').plugin,
   require('../../lib/csvwidget/plugin').plugin,
   require('../../lib/csvwidget/plugin').plugin,
   require('../../lib/docmanager/plugin').plugin,
   require('../../lib/docmanager/plugin').plugin,
   require('../../lib/docregistry/plugin').plugin,
   require('../../lib/docregistry/plugin').plugin,

+ 0 - 51
src/console/codemirror/index.ts

@@ -1,51 +0,0 @@
-// Copyright (c) Jupyter Development Team.
-// Distributed under the terms of the Modified BSD License.
-
-import {
-  ConsoleContent
-} from '../content';
-
-import {
-  IEditorServices
-} from '../../codeeditor';
-
-import {
-  CodeMirrorEditorFactory, CodeMirrorMimeTypeService
-} from '../../codemirror';
-
-import {
-  CodeCellWidget
-} from '../../notebook/cells';
-
-
-/**
- * Create a console renderer given editor services.
- */
-export
-function createRenderer(editorServices?: IEditorServices): ConsoleContent.IRenderer {
-  editorServices = editorServices || {
-    factory: new CodeMirrorEditorFactory(),
-    mimeTypeService: new CodeMirrorMimeTypeService()
-  };
-  const bannerRenderer = new CodeCellWidget.Renderer({
-    editorFactory: host => editorServices.factory.newInlineEditor(host.node, {
-      wordWrap: true
-    })
-  });
-  const promptRenderer = new CodeCellWidget.Renderer({
-    editorFactory: host => editorServices.factory.newInlineEditor(host.node, {
-      extra: {
-        matchBrackets: false,
-        autoCloseBrackets: false,
-        extraKeys: {
-          Enter: function () { /* no-op */ }
-        }
-      }
-    })
-  });
-  const foreignCellRenderer = promptRenderer;
-  const editorMimeTypeService = editorServices.mimeTypeService;
-  return new ConsoleContent.Renderer({
-    bannerRenderer, promptRenderer, foreignCellRenderer, editorMimeTypeService
-  });
-}

+ 0 - 36
src/console/codemirror/plugin.ts

@@ -1,36 +0,0 @@
-// Copyright (c) Jupyter Development Team.
-// Distributed under the terms of the Modified BSD License.
-
-import {
-  JupyterLab, JupyterLabPlugin
-} from '../../application';
-
-import {
-  ConsoleContent
-} from '../content';
-
-import {
-  IEditorServices
-} from '../../codeeditor';
-
-import {
-  createRenderer
-} from '.';
-
-/**
- * The provider for a console's code mirror renderer.
- */
-export
-const plugin: JupyterLabPlugin<ConsoleContent.IRenderer> = {
-  id: 'jupyter.services.console.codemirror.renderer',
-  requires: [IEditorServices],
-  provides: ConsoleContent.IRenderer,
-  activate: activateRendererProvider
-};
-
-/**
- * Activates the renderer provider extension.
- */
-function activateRendererProvider(app: JupyterLab, editorServices: IEditorServices): ConsoleContent.IRenderer {
-  return createRenderer(editorServices);
-}

+ 35 - 29
src/console/content.ts

@@ -38,7 +38,7 @@ import {
 } from '../inspector';
 } from '../inspector';
 
 
 import {
 import {
-  IEditorMimeTypeService
+  IEditorMimeTypeService, IEditorServices, CodeEditor
 } from '../codeeditor';
 } from '../codeeditor';
 
 
 import {
 import {
@@ -713,19 +713,16 @@ namespace ConsoleContent {
    */
    */
   export
   export
   class Renderer implements IRenderer {
   class Renderer implements IRenderer {
-
     /**
     /**
      * The banner renderer.
      * The banner renderer.
      */
      */
-    readonly bannerRenderer: CodeCellWidget.IRenderer;
+    readonly bannerRenderer: BaseCellWidget.IRenderer;
+
     /**
     /**
      * The prompt renderer.
      * The prompt renderer.
      */
      */
     readonly promptRenderer: CodeCellWidget.IRenderer;
     readonly promptRenderer: CodeCellWidget.IRenderer;
-    /**
-     * The foreign cell renderer.
-     */
-    readonly foreignCellRenderer: CodeCellWidget.IRenderer;
+
     /**
     /**
      * The mime type service of a code editor.
      * The mime type service of a code editor.
      */
      */
@@ -735,10 +732,16 @@ namespace ConsoleContent {
      * Create a new renderer.
      * Create a new renderer.
      */
      */
     constructor(options: Renderer.IOptions) {
     constructor(options: Renderer.IOptions) {
-      this.bannerRenderer = options.bannerRenderer;
-      this.promptRenderer = options.promptRenderer;
-      this.foreignCellRenderer = options.foreignCellRenderer;
-      this.editorMimeTypeService = options.editorMimeTypeService;
+      let factory = options.editorServices.factory;
+      this.bannerRenderer = new BaseCellWidget.Renderer({
+        editorFactory: host => factory.newInlineEditor(host.node, {
+          wordWrap: true
+        })
+      });
+      this.promptRenderer = new Private.PromptRenderer({
+        editorFactory: host => factory.newInlineEditor(host.node, {})
+      });
+      this.editorMimeTypeService = options.editorServices.mimeTypeService;
     }
     }
 
 
     /**
     /**
@@ -770,7 +773,7 @@ namespace ConsoleContent {
     createForeignCell(rendermime: IRenderMime, context: ConsoleContent): CodeCellWidget {
     createForeignCell(rendermime: IRenderMime, context: ConsoleContent): CodeCellWidget {
       let widget = new CodeCellWidget({
       let widget = new CodeCellWidget({
         rendermime,
         rendermime,
-        renderer: this.foreignCellRenderer
+        renderer: this.promptRenderer
       });
       });
       widget.model = new CodeCellModel();
       widget.model = new CodeCellModel();
       return widget;
       return widget;
@@ -782,7 +785,6 @@ namespace ConsoleContent {
     getCodeMimetype(info: nbformat.ILanguageInfoMetadata): string {
     getCodeMimetype(info: nbformat.ILanguageInfoMetadata): string {
       return this.editorMimeTypeService.getMimeTypeByLanguage(info);
       return this.editorMimeTypeService.getMimeTypeByLanguage(info);
     }
     }
-
   }
   }
 
 
   /**
   /**
@@ -795,22 +797,7 @@ namespace ConsoleContent {
      */
      */
     export
     export
     interface IOptions {
     interface IOptions {
-      /**
-       * The banner renderer.
-       */
-      readonly bannerRenderer: CodeCellWidget.IRenderer;
-      /**
-       * The prompt renderer.
-       */
-      readonly promptRenderer: CodeCellWidget.IRenderer;
-      /**
-       * The foreign cell renderer.
-       */
-      readonly foreignCellRenderer: CodeCellWidget.IRenderer;
-      /**
-       * The mime type service of a code editor.
-       */
-      readonly editorMimeTypeService: IEditorMimeTypeService;
+      readonly editorServices: IEditorServices;
     }
     }
   }
   }
 
 
@@ -837,4 +824,23 @@ namespace Private {
   function scrollToBottom(node: HTMLElement): void {
   function scrollToBottom(node: HTMLElement): void {
     node.scrollTop = node.scrollHeight - node.clientHeight;
     node.scrollTop = node.scrollHeight - node.clientHeight;
   }
   }
+
+  /**
+   * A custom renderer for a prompt that suppresses "enter" handling.
+   */
+  export
+  class PromptRenderer extends CodeCellWidget.Renderer {
+    /**
+     * Create a new cell editor for the widget.
+     */
+    createCellEditor(): ICellEditorWidget {
+      let widget = super.createCellEditor();
+      // Suppress the default "Enter" key handling.
+      let cb = (editor: CodeEditor.IEditor, event: KeyboardEvent) => {
+        return event.keyCode === 13;  // Enter;
+      };
+      widget.editor.onKeyDown = cb;
+      return widget;
+    }
+  }
 }
 }

+ 7 - 2
src/console/plugin.ts

@@ -17,6 +17,10 @@ import {
   JupyterLab, JupyterLabPlugin
   JupyterLab, JupyterLabPlugin
 } from '../application';
 } from '../application';
 
 
+import {
+  IEditorServices
+} from '../codeeditor';
+
 import {
 import {
   ICommandPalette
   ICommandPalette
 } from '../commandpalette';
 } from '../commandpalette';
@@ -80,7 +84,7 @@ const plugin: JupyterLabPlugin<IConsoleTracker> = {
     IInspector,
     IInspector,
     ICommandPalette,
     ICommandPalette,
     IPathTracker,
     IPathTracker,
-    ConsoleContent.IRenderer,
+    IEditorServices,
     IStateDB,
     IStateDB,
     ILayoutRestorer
     ILayoutRestorer
   ],
   ],
@@ -119,13 +123,14 @@ interface ICreateConsoleArgs extends JSONObject {
 /**
 /**
  * Activate the console extension.
  * Activate the console extension.
  */
  */
-function activateConsole(app: JupyterLab, services: IServiceManager, rendermime: IRenderMime, mainMenu: IMainMenu, inspector: IInspector, palette: ICommandPalette, pathTracker: IPathTracker, renderer: ConsoleContent.IRenderer, state: IStateDB, layout: ILayoutRestorer): IConsoleTracker {
+function activateConsole(app: JupyterLab, services: IServiceManager, rendermime: IRenderMime, mainMenu: IMainMenu, inspector: IInspector, palette: ICommandPalette, pathTracker: IPathTracker, editorServices: IEditorServices, state: IStateDB, layout: ILayoutRestorer): IConsoleTracker {
   let manager = services.sessions;
   let manager = services.sessions;
 
 
   let { commands, keymap } = app;
   let { commands, keymap } = app;
   let category = 'Console';
   let category = 'Console';
   let command: string;
   let command: string;
   let menu = new Menu({ commands, keymap });
   let menu = new Menu({ commands, keymap });
+  let renderer = new ConsoleContent.Renderer({ editorServices });
 
 
   // Create an instance tracker for all console panels.
   // Create an instance tracker for all console panels.
   const tracker = new InstanceTracker<ConsolePanel>({
   const tracker = new InstanceTracker<ConsolePanel>({

+ 5 - 0
src/notebook/cells/editor.ts

@@ -133,6 +133,11 @@ interface ICompletionRequest extends IEditorState {
  */
  */
 export
 export
 interface ICellEditorWidget extends Widget {
 interface ICellEditorWidget extends Widget {
+  /**
+   * The editor used by the widget.
+   */
+  readonly editor: CodeEditor.IEditor;
+
   /**
   /**
    * The cell model used by the editor.
    * The cell model used by the editor.
    */
    */