Javascript 如何在VS代码中以自定义HTML模式实现点击?
我想在扩展中实现类似于HTML模板中的Go-to定义的东西 例如,按住ctrl键单击路径将打开一个编辑器,其中文件位于以下路径:Javascript 如何在VS代码中以自定义HTML模式实现点击?,javascript,visual-studio-code,vscode-extensions,Javascript,Visual Studio Code,Vscode Extensions,我想在扩展中实现类似于HTML模板中的Go-to定义的东西 例如,按住ctrl键单击路径将打开一个编辑器,其中文件位于以下路径: {% include "relative/path/to/snippet.html" %} 您是否有任何关于回购协议的相关文件的指示 我对VSCode扩展非常陌生,对Intellisense完全是新手,所以我需要一些示例 我想应该包括: 解析HTML/文本文件以查找相关的可单击区域 让IntelliSense做些有趣的事情 实现这些新奇的东西(我最终会弄明白这一部分
{% include "relative/path/to/snippet.html" %}
您是否有任何关于回购协议的相关文件的指示
我对VSCode扩展非常陌生,对Intellisense完全是新手,所以我需要一些示例
我想应该包括:
此功能由一个电源供电。您的扩展可以创建一个自定义定义提供程序,该提供程序只返回您感兴趣的路径的结果。对于
html
语言模式,将使用registerDefinitionProvider
注册提供程序
这看起来像:
import * as vscode from 'vscode';
import * as path from 'path'
class MyProvider implements vscode.DefinitionProvider {
provideDefinition(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): vscode.ProviderResult<vscode.Definition> {
const linkText = getLinkText(document, position); // implement this
if (! linkText) {
return null;
}
const workspace = vscode.workspace.getWorkspaceFolder(document.uri);
const root = workspace ? workspace.uri : document.uri;
return new vscode.Location(
root.with({
path: path.join(root.path, linkText)
}),
new vscode.Position(0, 0));
}
}
vscode.languages.registerDefinitionProvider('html', new MyProvider());
import*作为“vscode”中的vscode;
从“路径”导入*作为路径
类MyProvider实现vscode.DefinitionProvider{
ProviderDefinition(文档:vscode.TextDocument,位置:vscode.position,标记:vscode.CancellationToken):vscode.ProviderResult{
const linkText=getLinkText(文档,位置);//实现这个
如果(!linkText){
返回null;
}
const workspace=vscode.workspace.getWorkspaceFolder(document.uri);
const root=workspace?workspace.uri:document.uri;
返回新的vscode.Location(
根({
path:path.join(root.path,linkText)
}),
新的vscode.Position(0,0));
}
}
registerDefinitionProvider('html',new MyProvider());
谢谢。我需要一些时间来了解如何插入并了解它是如何工作的。我将扩展作为一种语言支持启动,然后在我的package.json和入口点中丢失了开发依赖项。扩展是否需要注册贡献语言才能工作?我似乎无法为JSON文件加载提供程序