标签: monaco-editor

如何禁用Monaco上下文菜单?

我正在使用monaco-editor,我正在尝试为Command + Enter添加自定义处理程序.但是当我按下命令键时,会显示Monaco上下文菜单.是否可以禁用上下文菜单,或将其重新绑定到另一个键?

javascript monaco-editor

3
推荐指数
1
解决办法
840
查看次数

摩纳哥编辑器 - 用文本预填充查找控件

我在我的 React 应用程序中托管了一个摩纳哥编辑器。

到目前为止,我已经让编辑器在编辑器安装后打开查找控件,但我需要用一些文本预先填充它。

目前的代码如下所示:

... 

class CodeEditorMonaco extends Component {
  constructor (props) {
    super(props)
    this.editorDidMount = this.editorDidMount.bind(this)
    this.editor = null
  }

  editorDidMount (editor, monaco) {
    editor.focus()
    editor.getAction('actions.find').run()
  } 

  render () {
    return (
      <div className='code-editor'>
        <MonacoEditor
          width='100%'
          height='75vh'
          language='json'
          editorDidMount={this.editorDidMount}
          ref={editor => { this.editor = editor }}
        />
      </div>
    )
  }
}
...
Run Code Online (Sandbox Code Playgroud)

我认为 API 文档并不清楚这是否可行。

我的第一直觉是这样做, editor.getAction('actions.find').run('text here') 但这似乎行不通

当您在编辑器本身中突出显示一个单词,然后按下时,CMD+F您将获得预先填充文本的查找控件,因此我相信这是可以实现的。

任何帮助,将不胜感激。

查找控件: 查找控件

javascript reactjs visual-studio-monaco monaco-editor

3
推荐指数
1
解决办法
1828
查看次数

Monaco-Editor HoverProvider 让鼠标悬停在这个词上

我怎样才能得到我在摩纳哥编辑器中悬停的词?

我想在数组中保存的单词上显示特定值。因此,当用户将鼠标悬停在单词上时,我想将该单词与保存在数组中的单词进行比较,然后显示该单词的保存值。

我知道这两种方法:

model.getValue() // gets all the text stored in the model
model.getValueInRange({startLineNumber, startColumn, endLineNumber, endColumn}) // gets the value in Range, but I don't now the start and end column.
Run Code Online (Sandbox Code Playgroud)

这是我的代码,我只需要 getValueInRange 方法的帮助:

 public variableHoverProvider = <monaco.languages.HoverProvider>{
    // this is for getting the values on hover over context variables and shortcuts
    provideHover: (model, position, token) => {
        if (model.getLineContent(position.lineNumber).trim() !== '') { // if only whitespace don't do anything
            let current = this.store[this.store.length - 1]; // just the …
Run Code Online (Sandbox Code Playgroud)

javascript typescript monaco-editor

3
推荐指数
1
解决办法
2017
查看次数

如何在摩纳哥编辑器中使用 setValue?

设置摩纳哥编辑器文本内容的正确方法是什么,而不必担心撤消堆栈?monacoEditor.setValue("text")似乎在内心深处的某个地方崩溃:

vue.esm.js?efeb:1741 TypeError: (intermediate value)(intermediate value)(intermediate value).create is not a function
    at D (textModel.ts:90)
    at f.setValue (textModel.ts:385)
    at t.setValue (commonCodeEditor.ts:211)
    at VueComponent.loadFile (ResourceViewer.vue?d447:85)
Run Code Online (Sandbox Code Playgroud)

monaco-editor

3
推荐指数
2
解决办法
4305
查看次数

从 Monaco 编辑器中删除 Listner

将任何回调附加到editor.onDidChangeModelContent(event)Monaco 实例后,如何删除(或取消绑定)此函数?

例如,ACE 编辑器提供了完成此操作的功能。removeListener

monaco-editor

3
推荐指数
1
解决办法
1501
查看次数

如何在摩纳哥编辑器中以编程方式查找文本的位置

有没有办法通过原始字符串以及字符串中子字符串的开头和结尾的索引来计算摩纳哥编辑器中的位置?

有可能找到匹配 API

editor.getModel().findMatches('sub_string')
Run Code Online (Sandbox Code Playgroud)

我想知道是否还有其他方法,因为可能有多个匹配项,并且 API 方法并不完全适合我当前的任务。

monaco-editor

3
推荐指数
1
解决办法
3536
查看次数

如何从 monaco 编辑器获取转译后的代码?

如何从摩纳哥编辑器中获取转译的 TypeScript 代码?另外,是否可以访问 TypeScript 语言服务?我试过这个:

monaco.languages.typescript.getTypeScriptWorker();
Run Code Online (Sandbox Code Playgroud)

但它回来了Promise<any>,我不知道该怎么办!

typescript monaco-editor

3
推荐指数
2
解决办法
794
查看次数

如何更改摩纳哥编辑器上的显示语言

不知道如何将显示语言从 javascript 更改为 swift(或其他)

我使用“npm install monaco-editor”命令安装

    <script src="node_modules/monaco-editor/min/vs/loader.js"></script>
    <script>
    var editor;
    require.config({ paths: { 'vs': 'node_modules/monaco-editor/min/vs' 
    }});
    require(['vs/editor/editor.main'], function() {

        editor = 
    monaco.editor.create(document.getElementById('container'), {
            value: [
                'function x() {',
                '\tconsole.log("Hello world!");',
                '}'
            ].join('\n'),
            language: 'javascript',
            theme: "vs-dark"
        });
    });


    function showMessage() {
        var text = editor.getValue();
        monaco.editor.setModelLanguage(editor.getModel(), "swift")
        editor.updateOptions({
            language: "objective-c"
        });
        alert(text);
    }
</script>
Run Code Online (Sandbox Code Playgroud)

我希望在运行 showMessage 函数后,显示代码会从 javascript 更改为 Objective-c。实际上错误什么也没显示。有谁知道怎么做??

javascript monaco-editor

3
推荐指数
1
解决办法
2476
查看次数

无法使用摩纳哥编辑器测试玩笑 - 意外令牌

在应用程序上运行 jest 失败:

Details:

/home/**/node_modules/monaco-editor/esm/vs/editor/editor.api.js:5
import { EDITOR_DEFAULTS } from './common/config/editorOptions.js';
       ^

SyntaxError: Unexpected token {

> 1 | import * as monaco from "monaco-editor/esm/vs/editor/editor.api.js";
    | ^
  2 | 
  3 | /**
  4 |  * Get create function for the editor.

  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:537:17)
  at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:579:25)
  at Object.<anonymous> (src/utils/editor-actions.js:1:1)
Run Code Online (Sandbox Code Playgroud)

应用程序已为jest和安装了软件包babel-jest

巴别配置:

const presets = [
  [
    "@babel/env",
    {
      targets: {
        edge: "17",
        firefox: "60",
        chrome: "67",
        safari: "11.1"
      },
      useBuiltIns: "usage",
      corejs: 3,
    }
  ], …
Run Code Online (Sandbox Code Playgroud)

jestjs monaco-editor

3
推荐指数
1
解决办法
1398
查看次数

摩纳哥 - 取消注册语言功能

我正在向摩纳哥添加自定义语言,如下所示:

monaco.languages.register({ id: 'someLanguage' });
monaco.languages.registerCompletionItemProvider('someLanguage', { 
    provideCompletionItems: function () { /* ... */ }
});
Run Code Online (Sandbox Code Playgroud)

我在开发环境中执行此操作,该环境会在更改时热重新加载,因此它使用热重新加载。每次保存内容时都会再次运行相同的代码。导致上面的代码被多次调用,从而monaco一次又一次地注册相同的函数。在这个完成提供程序的示例中,当在脚本热重新加载后添加新的提供程序时,我以前的所有提供程序都会被保留。

我们有没有办法取消注册一种语言以便再次注册它?

谢谢

monaco-editor

3
推荐指数
1
解决办法
1590
查看次数