我想在一个扩展中实现一些类似于HTML模板中的Go to定义的东西。
例如,按住ctrl键并单击路径将打开一个编辑器,其中的文件位于以下路径:
{% include "relative/path/to/snippet.html" %}
在做类似事情的任何repo上,您是否有任何指向相关文档的指针?
我对VSCode扩展和智能感知完全是个新手,所以我需要一些例子。
我猜它将包括:
发布于 2018-06-13 01:56:13
此功能由DefinitionProvider
提供支持。您的扩展可以创建自定义定义提供程序,该提供程序只返回您感兴趣的路径的结果。将使用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());
https://stackoverflow.com/questions/50814413
复制相似问题