我正在编写一个vscode扩展,它接受文档的语言,并在此基础上生成hello world模板。我已经生成了状态栏图标,这也没有出现。这是我的第一个扩展,所以我对所有这些都是新的。当我使用Control + Shift +P运行该命令时,它还会得到一个没有找到该命令的错误。
密码..。
import * as vscode from 'vscode';
import "typescript";
import "./constants";
let myStatusBar : vscode.StatusBarItem;
export function activate(context: vscode.ExtensionContext, { subscriptions }: vscode.ExtensionContext) {
const codeBoilerplateCommand = 'code-boilerplate.CodeBoilerplate';
subscriptions.push(vscode.commands.registerCommand(codeBoilerplateCommand, () => {
const documentFileType = vscode.window.activeTextEditor?.document.languageId;
const documentFileName = vscode.window.activeTextEditor?.document.fileName;
const documentFilePath = vscode.window.activeTextEditor?.document.fileName.split('/');
vscode.window.showInformationMessage("Generating your Code Boilerplate... ⌛")
if (documentFileType === "javascript") {
vscode.window.activeTextEditor.edit(editBuilder => {
editBuilder.insert(new vscode.Position(0, 0), 'console.log("Hello World!")');
});
}
else if (documentFileType === "python") {
vscode.window.activeTextEditor.edit(editBuilder => {
editBuilder.insert(new vscode.Position(0, 0), 'print("Hello World!")');
});
}
else if (documentFileType === "typescript") {
vscode.window.activeTextEditor.edit(editBuilder => {
editBuilder.insert(new vscode.Position(0, 0), 'console.log("Hello World!");');
});
}
else if (documentFileType === "csharp") {
vscode.window.activeTextEditor.edit(editBuilder => {
editBuilder.insert(new vscode.Position(0, 0), 'using System;');
editBuilder.insert(new vscode.Position(3,0), 'namespace' + documentFileName + ' {');
editBuilder.insert(new vscode.Position(6,4), 'class HelloWorld {');
editBuilder.insert(new vscode.Position(9, 8), 'static void Main(string[] args) {');
editBuilder.insert(new vscode.Position(12,12), 'Console.WriteLine("Hello World!");');
editBuilder.insert(new vscode.Position(14,8), '}');
editBuilder.insert(new vscode.Position(15, 4), '}');
editBuilder.insert(new vscode.Position(16, 0), '}');
});
}
else if (documentFileType === "c") {
vscode.window.activeTextEditor.edit(editBuilder => {
editBuilder.insert(new vscode.Position(0,0), '#include <stdio.h>');
editBuilder.insert(new vscode.Position(1,0), 'int main() {');
editBuilder.insert(new vscode.Position(2,4), 'printf("Hello World!");');
editBuilder.insert(new vscode.Position(3,4), 'return 0;');
editBuilder.insert(new vscode.Position(4,0), '}');
})
}
else if (documentFileType === "cpp") {
return null;
}
else if (documentFileType === "java") {
return null;
}
}));
myStatusBar = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 100);
myStatusBar.command = codeBoilerplateCommand;
subscriptions.push(myStatusBar);
subscriptions.push(vscode.window.onDidChangeActiveTextEditor(updateStatusBarItem));
subscriptions.push(vscode.window.onDidChangeTextEditorSelection(updateStatusBarItem));
updateStatusBarItem();
}
function updateStatusBarItem(): void {
myStatusBar.text = `$(new-file) Hello World!`;
myStatusBar.show();
}
export function deactivate() {
myStatusBar.dispose();
}发布于 2022-01-05 09:33:43
您的函数的原型是不正确的,activate只使用一个参数。若要访问订阅,请执行以下操作:
export function activate(context: ExtensionContext) {
context.subscriptions.push(...
}https://stackoverflow.com/questions/70568348
复制相似问题