【问题标题】:How do I set indenting options for a language in a VSCode extension?如何为 VSCode 扩展中的语言设置缩进选项?
【发布时间】:2016-07-30 14:35:54
【问题描述】:

我正在为 Dart 开发 VS Code 扩展。 Dart 的约定是缩进 2 个空格(呃,我也讨厌这个),所以我想在用户打开 Dart 文件时自动设置它,而不是使用他们的默认值。

FormattingOptions 类中有一个 insertSpaces 属性,但我不清楚如何设置它,也不清楚最好的方法(在语言级别设置它比在任何时候都保持设置更好例如,打开了一个文档)。

【问题讨论】:

    标签: dart visual-studio-code vscode-extensions


    【解决方案1】:

    VS Code 现在支持每种语言的缩进设置,您可以在 package.json 中设置默认值:

    "configurationDefaults": {
        "[dart]": {
            "editor.tabSize": 2,
            "editor.insertSpaces": true
        },
    

    【讨论】:

    • “package.json”在哪里?我可以为我的所有项目设置一次吗?
    • @TedHenry 这个问题/答案是关于在扩展作者那里做的,而不是作为用户。如果您想将其设置为最终用户,请将其放入您通常的 VS Code 设置中,不带configurationDefaults 部分(请参阅code.visualstudio.com/docs/getstarted/…)。
    • 谢谢。按照您的建议,我设法将 Dart 的空格数配置为 4。当我使用自动代码格式化命令时,它仍然使用 2 个空格。有什么办法解决吗?
    • @TedHenry 不幸的是,Dart 格式化程序不灵活。详情请见github.com/Dart-Code/Dart-Code/issues/914
    • 感谢您的信息。 ?
    【解决方案2】:

    更新:请参阅下面适用于较新版本的 VS Code 的答案。

    要使用FormattingOptions,请在您的扩展程序的activate() 函数中为vscode.window.onDidChangeActiveTextEditor() 设置回调:

    let disposable = vscode.window.onDidChangeActiveTextEditor((editor) => {
        if(!editor) {
            return;
        }
    
        if (editor.document.languageId != "your_id_here") {
            return;
        }
    
        editor.options = {
            cursorStyle: editor.options.cursorStyle,
            insertSpaces: true,
            tabSize: 2
        };
    });
    
    context.subscriptions.push(disposable);
    

    【讨论】:

    • 我的扩展 activate 函数中似乎没有对 editor 的引用(这是有道理的,因为它是特定于编辑器的,我需要为某些文件设置?)跨度>
    • 对不起!我之前没有抓住足够的代码!我已将原始答案更新为更彻底。
    • 太棒了;我想它会是这样的。谢谢! :)
    猜你喜欢
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 2017-06-29
    相关资源
    最近更新 更多