如何在 JupyterLab 中获取对 CodeMirror 实例的引用?

How can I get a reference to a CodeMirror instance in JupyterLab?

文档表明在CodeEditorWrapper实例中有一个CodeMirror实例:https://jupyterlab.readthedocs.io/en/stable/extension/notebook.html?highlight=codemirror#widget-hierarchy

我在 CodeEditorWrapper 实例上找到了 editor 属性。我认为它可能是一个像这里描述的那样的 CodeMirror 实例:https://codemirror.net/doc/manual.html,但它似乎不是。

如何在 JupyterLab 中获取对 CodeMirror 实例的引用?

我正在尝试执行此处描述的操作:https://discuss.codemirror.net/t/get-visible-lines-with-respect-to-current-scroll/1429

编辑:

一旦你有一个单元格的引用,它可以像这样获得:

(Cell<ICellModel>#editor as CodeMirrorEditor).editor

例如,

Notebook#widgets.forEach((cell: Cell<ICellModel>) => {
            (cell.editor as CodeMirrorEditor).editor // Editor
        });

如果您想获得 CodeMirror 实例,我认为您不需要使用 CodeEditorWrapper。对于 JupyterLab 3.0,以下内容应该运行良好:

const cell: Cell = getTheCellObjectSomehow();
const editor = cell.editor as CodeMirrorEditor;
// or
// const fileEditor: FileEditor = getTheFileEditorObjectSomehow();
// const editor = cell.fileEditor as CodeMirrorEditor;
const cm: CodeMirror.Editor = cm.editor;

其中 cm 是您的 CodeMirror 实例。如有疑问,请咨询拼写检查扩展 (here) or lsp extension (here) 如何处理 CodeMirror 访问。