Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio code VSCode:如何以编程方式在编辑器';我的分机中的语言更改事件?_Visual Studio Code_Vscode Extensions - Fatal编程技术网

Visual studio code VSCode:如何以编程方式在编辑器';我的分机中的语言更改事件?

Visual studio code VSCode:如何以编程方式在编辑器';我的分机中的语言更改事件?,visual-studio-code,vscode-extensions,Visual Studio Code,Vscode Extensions,我为VS代码做了一个扩展。我的任务是在使用特定语言(例如SQL)时向状态栏添加一个元素。对于其他语言,不需要显示元素。 我创建了一个命令: envStatusBarItem=vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right,80); envStatusBarItem.command=aseChangeEnvironmentCommand; context.subscriptions.push(envStatusBa

我为VS代码做了一个扩展。我的任务是在使用特定语言(例如SQL)时向状态栏添加一个元素。对于其他语言,不需要显示元素。 我创建了一个命令:

envStatusBarItem=vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right,80);
envStatusBarItem.command=aseChangeEnvironmentCommand;
context.subscriptions.push(envStatusBarItem);
并设置侦听器:

context.subscriptions.push(vscode.window.onDidChangeActiveTextEditor(updateEnvStatusBarItemFn));
此外,在
package.json
中,将条件
“onLanguage:sql”
添加到
activationEvents

我显示和隐藏状态栏元素,如下所示:

const updateEnvStatusBarItemFn=()=>{
const editor=vscode.window.activeTextEditor;
如果(编辑){
if(editor.document.languageId=='sql'){
让aseCurrentServer=context.globalState.get('aseCurrentServer','';
envStatusBarItem.text=`ASE[${aseCurrentServer}]`;
envStatusBarItem.show();
}
否则{
envStatusBarItem.hide();
}
}
否则{
envStatusBarItem.hide();
}
};
问题是,当您将编辑器中的语言更改为SQL或打开*.SQL文件时(根据package.json中的条件),扩展名被激活。显示状态栏元素,但是扩展被认为是活动的,并且在切换选项卡时,显示/隐藏状态栏元素的功能仅在安装的软件
onDidChangeActiveTextEditor
处理程序上有效。我找不到与更改可挂起处理程序的语言相关的侦听器。
有这样一种方法吗,或者我应该写功能请求吗?

我在github上收到了VSCode团队的答复:

当文档的语言更改时,
onDidCloseTextDocument
onDidOpenTextDocument
事件被触发:

说明在VSCode源代码中