Преглед изворни кода

[console/codemirror] Use IEditorServices and default renderers

akosyakov пре 8 година
родитељ
комит
a130caec19
2 измењених фајлова са 34 додато и 115 уклоњено
  1. 34 4
      src/console/codemirror/plugin.ts
  2. 0 111
      src/console/codemirror/widget.ts

+ 34 - 4
src/console/codemirror/plugin.ts

@@ -2,7 +2,7 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  JupyterLabPlugin
+  JupyterLab, JupyterLabPlugin
 } from '../../application';
 
 import {
@@ -10,8 +10,12 @@ import {
 } from '../content';
 
 import {
-  CodeMirrorConsoleRenderer
-} from './widget';
+  IEditorServices
+} from '../../codeeditor';
+
+import {
+  CodeCellWidget
+} from '../../notebook/cells';
 
 
 /**
@@ -20,6 +24,32 @@ import {
 export
 const plugin: JupyterLabPlugin<ConsoleContent.IRenderer> = {
   id: 'jupyter.services.console.codemirror.renderer',
+  requires: [IEditorServices],
   provides: ConsoleContent.IRenderer,
-  activate: () => CodeMirrorConsoleRenderer.defaultRenderer
+  activate: activateRendererProvider
 };
+
+/**
+ * Activates the renderer provider extension.
+ */
+function activateRendererProvider(app: JupyterLab, editorServices: IEditorServices): ConsoleContent.IRenderer {
+  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, {
+      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 - 111
src/console/codemirror/widget.ts

@@ -1,111 +0,0 @@
-// Copyright (c) Jupyter Development Team.
-// Distributed under the terms of the Modified BSD License.
-
-import {
-  nbformat
-} from '@jupyterlab/services';
-
-import {
-  CodeCellModel, RawCellModel
-} from '../../notebook/cells/model';
-
-import {
-  CodeCellWidget, RawCellWidget
-} from '../../notebook/cells/widget';
-
-import {
-  CodeMirrorCodeCellWidgetRenderer
-} from '../../notebook/codemirror/cells/widget';
-
-import {
-  CodeMirrorNotebookRenderer
-} from '../../notebook/codemirror/notebook/widget';
-
-import {
-  mimetypeForLanguage
-} from '../../notebook/common/mimetype';
-
-import {
-  RenderMime
-} from '../../rendermime';
-
-import {
-  ConsoleContent
-} from '../content';
-
-
-/**
- * A code mirror renderer for a console.
- */
-export
-class CodeMirrorConsoleRenderer implements ConsoleContent.IRenderer {
-  /**
-   * Create a new banner widget.
-   */
-  createBanner(): RawCellWidget {
-    let widget = new RawCellWidget({
-      renderer: CodeMirrorNotebookRenderer.defaultRawCellRenderer
-    });
-    widget.model = new RawCellModel();
-    return widget;
-  }
-
-  /**
-   * Create a new prompt widget.
-   */
-  createPrompt(rendermime: RenderMime, context: ConsoleContent): CodeCellWidget {
-    let widget = new CodeCellWidget({
-      rendermime,
-      renderer: CodeMirrorConsoleRenderer.defaultCodeCellRenderer
-    });
-    widget.model = new CodeCellModel();
-    return widget;
-  }
-
-  /**
-   * Create a new code cell widget for an input from a foreign session.
-   */
-  createForeignCell(rendermime: RenderMime, context: ConsoleContent): CodeCellWidget {
-    let widget = new CodeCellWidget({
-      rendermime,
-      renderer: CodeMirrorConsoleRenderer.defaultCodeCellRenderer
-    });
-    widget.model = new CodeCellModel();
-    return widget;
-  }
-
-  /**
-   * Get the preferred mimetype given language info.
-   */
-  getCodeMimetype(info: nbformat.ILanguageInfoMetadata): string {
-    return mimetypeForLanguage(info);
-  }
-}
-
-
-/**
- * A namespace for `CodeMirrorConsoleRenderer` statics.
- */
-export
-namespace CodeMirrorConsoleRenderer {
-  /**
-   * A default code mirror renderer for a console.
-   */
-  export
-  const defaultRenderer = new CodeMirrorConsoleRenderer();
-
-
-  /**
-   * A default code mirror renderer for a code cell editor.
-   */
-  export
-  const defaultCodeCellRenderer = new CodeMirrorCodeCellWidgetRenderer({
-    editorInitializer: (editor) => {
-      editor.setOption('matchBrackets', false);
-      editor.setOption('autoCloseBrackets', false);
-      editor.setOption('extraKeys', {
-        Enter: function() { /* no-op */ }
-      });
-    }
-  });
-}