VSCode Colonize插件Shift+Enter自动接受代码建议问题排查
问题:Colonize插件Shift+Enter触发代码建议自动接受的问题
问题描述
我使用Colonize插件,原本功能是按Shift+Enter在行末添加分号,但现在出现异常:只要有代码建议弹窗时按下Shift+Enter,不仅会在行末插入指定内容,还会自动选中并接受第一个代码建议,这不符合预期效果。
排查过程
- 先查看插件仓库的Issue,发现已有其他用户反馈相同问题。
- 尝试在
keybindings.json中禁用所有Shift+Enter相关的接受建议命令,此时不启用Colonize插件时操作正常:
{ "key": "shift+Enter", "command": "-acceptSelectedSuggestion", "when": "true" }, { "key": "shift+Enter", "command": "-acceptSelectedSuggestionOnEnter", "when": "true" }, { "key": "shift+enter", "command": "-acceptAlternativeSelectedSuggestion", "when": "true" }
- 检查插件源码,发现核心逻辑是用
editBuilder插入内容,但怀疑某段代码是问题根源,注释该部分后,自动接受建议的问题仍未解决:
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') });
演示效果
(图中的
;lol是测试时的修改标记)
复现步骤
- 下载并安装Colonize插件
- 输入代码触发VS Code的代码建议弹窗
- 按下Shift+Enter
- 观察到行末添加指定内容,同时第一个代码建议被自动接受
VS Code版本信息
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
内容的提问来源于stack exchange,提问作者Askhento
相关产品推荐
相关产品推荐

