VSCode editBuilder 隐式接受建议

问题描述 投票:0回答:1

我正在使用Colonize扩展。 扩展名添加;按 Shift + Enter 键在该行的末尾。 然而,当我收到建议时,他们就会被选中。我不想要这个。

我想到的第一件事是检查回购问题:有人也这么认为。 然后我决定检查源代码,但我没有看到任何实际选择该建议的内容。

我尝试将所有要禁用的命令添加到 keybindings.json 中,并且它无需殖民即可工作!

    {
        "key": "shift+Enter",
        "command": "-acceptSelectedSuggestion",
        "when": "true"
    },
    {
        "key": "shift+Enter",
        "command": "-acceptSelectedSuggestionOnEnter",
        "when": "true"
    },

    {
      "key": "shift+enter",
      "command": "-acceptAlternativeSelectedSuggestion",
      "when": "true"
    }

合乎逻辑的下一步是检查扩展的源代码。 幸运的是它很短,只是使用 editBuilder 插入分号。 我怀疑这个声明可能是问题所在,但是在扩展的 js 文件中评论这部分之后,没有任何改变接受建议的条款:

  vscode.commands.executeCommand("acceptSelectedSuggestion").then(() => {
    var lineIndex = editor.selection.active.line;
    var lineObject = editor.document.lineAt(lineIndex);
    var lineLength = lineObject.text.length;

    if (
      lineObject.text.charAt(lineLength - 1) !== ";" &&
      !lineObject.isEmptyOrWhitespace
    ) {
      var insertionSuccess = editor.edit((editBuilder) => {
        editBuilder.insert(new vscode.Position(lineIndex, lineLength), ";lol"); // MOD HERE!
      });

      if (!insertionSuccess) return;
    }

    if (option === "hold") return;

    // MOD HERE !
    // option === 'endline'
    //   ? vscode.commands.executeCommand('cursorEnd')
    //   : vscode.commands.executeCommand('editor.action.insertLineAfter')
  });

这是一个演示gif(哈哈,表明我做了修改):

Image

重现步骤:

  1. 下载扩展程序
  2. 开始输入以查看建议
  3. 按 Shift + Enter
  4. 观看添加分号并接受第一个建议
  Version: 1.95.3 (user setup)
  Commit: f1a4fb101478ce6ec82fe9627c43efbf9e98c813
  Date: 2024-11-13T14:50:04.152Z
  Electron: 32.2.1
  ElectronBuildId: 10427718
  Chromium: 128.0.6613.186
  Node.js: 20.18.0
  V8: 12.8.374.38-electron.0
  OS: Windows_NT x64 10.0.22631
visual-studio-code
1个回答
0
投票

首先确保您没有任何影响建议的扩展程序。 尝试直接覆盖这些键的行为,写入 keybindings.json

{
    "key": "shift+enter",
    "command": "colonize.insertSemicolonAtEndOfLine",
    "when": "editorTextFocus"
}

您可以尝试通过写入settings.json来禁用自动完成功能

"editor.acceptSuggestionOnEnter": "off"

如果不太需要使用shift+enter,您可以更改绑定:)

© www.soinside.com 2019 - 2024. All rights reserved.