如何在VS Code中以自定义HTML模式实现点击?

时间:2018-06-12 10:01:44

标签: javascript visual-studio-code vscode-extensions

我想在扩展程序中实现与HTML模板中的Go To Definition类似的内容。

例如,在路径上按住Ctrl键单击将打开一个包含该路径文件的编辑器:

{% include "relative/path/to/snippet.html" %}

你有任何指向相关文档的指针,任何回购做类似的事情吗?

我对VSCode扩展和Intellisense的全新内容都很陌生,所以我需要一些例子。

我想它会包括:

  1. 解析HTML /文本文件以查找相关的可点击区域
  2. 告诉IntelliSense做一些花哨的事情
  3. 实施花哨的东西(我最终会弄清楚这部分)

1 个答案:

答案 0 :(得分:1)

此功能由DefinitionProvider提供支持。您的扩展程序可以创建自定义定义提供程序,该提供程序仅返回您感兴趣的路径的结果。将使用registerDefinitionProvider语言模式使用html注册提供程序

这看起来像是:

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());