Как реализовать переход по клику в пользовательском режиме HTML в VS Code? - PullRequest
0 голосов
/ 12 июня 2018

Я хотел бы реализовать в расширении что-то похожее на «Перейти к определению» в шаблоне HTML.

Например, нажатие Ctrl + клик по пути откроет редактор с файлом по этому пути:

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

Есть ли у вас какие-либо ссылки на соответствующую документацию, в любом репо, делающем что-то подобное?

Я довольно новичок в расширениях VSCode и совсем новичок в Intellisense, поэтому мне понадобятся некоторые примеры.

Я думаю, это будет включать:

  1. Анализ HTML / текстового файла, чтобы найти соответствующую активируемую зону
  2. Скажите IntelliSense сделать что-то причудливое
  3. Реализовать причудливые вещи (в конце концов я разберусь с этой частью)

1 Ответ

0 голосов
/ 12 июня 2018

Эта функция работает от 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());
...