首页 > 解决方案 > 如何在摩纳哥编辑器上更改显示语言

问题描述

不知道如何将显示语言从 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>

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

标签: javascriptmonaco-editor

解决方案


我不太确定你想做什么,但我做了这个小功能:

const changeLang = lang => {
    monaco.editor.setModelLanguage(editor.getModel(), lang);
    console.log(`model language was changed to ${editor.getModel().getLanguageIdentifier().language}`);
}

它每次都会更改语言并为我打印新的模型语言。

你的线路editor.updateOptions({language: "objective-c"})不会做任何事情。如果您查看文档,您会发现ITextModelUpdateOptions只需要indentSize, insertSpaces, tabSize, 或trimAutoWhitespace.

看起来您可能一直在查看此 github 问题的前几个答案以做出该行。给出的第一个答案是不正确的。

text = editor.getValue()在函数的开始和alert(text)结束时都这样做,但text永远不会改变。模型语言只会影响外观,不会影响内容。如果您只是想获取静态内容,那么您编写它的方式就可以了。但如果你期望它会改变,它不会。


推荐阅读