Visual studio code 我可以有条件地接管vscode扩展中的密钥绑定吗?

Visual studio code 我可以有条件地接管vscode扩展中的密钥绑定吗?,visual-studio-code,vscode-extensions,Visual Studio Code,Vscode Extensions,我使用的语法处理注释与大多数语言不同。它是基本的,这意味着注释切换来自: 10 PRINT "Hi" 到 因此,目前我使用了以下(类型)代码: 我遇到的问题是,一旦扩展被激活,all注释切换将通过我的代码,而早期返回语句只会导致注释根本不起作用(在我的nextbasic语言之外) 有人知道有没有办法说:如果语言不匹配,让原始的命令.action.commentLine处理这个问题?我认为一个更干净的解决方案是使用不同的ID生成命令,并告诉用户为其添加键绑定,或者在package.json中使用

我使用的语法处理注释与大多数语言不同。它是基本的,这意味着注释切换来自:

10 PRINT "Hi"

因此,目前我使用了以下(类型)代码:

我遇到的问题是,一旦扩展被激活,all注释切换将通过我的代码,而早期返回语句只会导致注释根本不起作用(在我的
nextbasic
语言之外)


有人知道有没有办法说:如果语言不匹配,让原始的
命令.action.commentLine
处理这个问题?

我认为一个更干净的解决方案是使用不同的ID生成命令,并告诉用户为其添加键绑定,或者在
package.json
中使用
contributions.keybindings
。此键绑定应具有检查活动语言ID的
when
条件

“贡献”:{
“键绑定”:[
{
“命令”:“myExtension.commentLine”,
“键”:“ctrl+oem_2”,
“何时”:“editorLangId=='nextbasic'”
}
]
}
请注意,这不包括为内置
commentLine
命令自定义键绑定的用户


除此之外,您还可以监听
onDidChangeActiveEditor
事件,并根据语言ID动态注销/注册您的命令(您可以使用注册时返回的
一次性
注销)。不过,我不确定在注销时是否恢复了内置命令,因为使用已经存在的ID注册命令有点麻烦

我认为一个更干净的解决方案是使用不同的ID生成一个命令,告诉用户为它添加一个keybinding,或者在
package.json
中使用
contributions.keybindings
。此键绑定应具有检查活动语言ID的
when
条件

“贡献”:{
“键绑定”:[
{
“命令”:“myExtension.commentLine”,
“键”:“ctrl+oem_2”,
“何时”:“editorLangId=='nextbasic'”
}
]
}
请注意,这不包括为内置
commentLine
命令自定义键绑定的用户


除此之外,您还可以监听
onDidChangeActiveEditor
事件,并根据语言ID动态注销/注册您的命令(您可以使用注册时返回的
一次性
注销)。不过,我不确定在注销时是否恢复了内置命令,因为使用已经存在的ID注册命令有点麻烦

谢谢-采取了这种方法并进行了分类谢谢-采取了这种方法并进行了分类
10 REM PRINT "Hi"
// register on vscode's default comment toggle
vscode.commands.registerCommand('editor.action.commentLine', () => {
  if (vscode.window.activeTextEditor.document.languageId !== 'nextbasic') {
    // if this isn't our language give control back…?
    return;
  }

  // … handle my own bespoke comment method
})