Я пытаюсь внести интересные изменения в область редактирования vscode. Я хочу знать, поддерживает ли API следующие две функции? - PullRequest
0 голосов
/ 18 июня 2020

Во-первых, поддерживает ли область редактора vscode вставку некоторых строк только для целей отображения и не влияет на свойства самой области редактирования, такие как неизменный номер строки. Я знаю, что Gitlens может отображать соответствующую информацию об авторе после определенной строки, теперь я хочу вставить эту нередактируемую информацию в отдельные строки.

Во-вторых, в области редактора, где точка останова отмечена во время отладки (то есть слева от номера строки), можно ли добавить новый столбец для отображения некоторых сообщений, соответствующих строке? Или я могу просто изменить номер строки, добавить несколько символов слева от нее?

Я искал несколько дней и не нашел такой интерфейс для вызова.

Спасибо .

1 Ответ

0 голосов
/ 19 июня 2020

Первая функция, которую вы можете получить, реализовав поставщика CodeLens в своей кодовой базе. Вот пример:

export class MyCodeLensProvider implements CodeLensProvider {
    async provideCodeLenses(document: TextDocument): Promise<CodeLens[]> {
        let location = new Range(0, 0, 0, 0)

        let codeLens = new CodeLens(location, {
            command: 'say.testCmd',
            title: 'Insert console here',
        })

        return [codeLens];
    }
}

Что касается второй функции, вы можете иметь значки перед номером строки, установив gutterIcon, вот небольшой фрагмент, который я извлек из своей кодовой базы, надеюсь, это даст вам подсказку ; как добиться того, что вы искали:

const todoStyle = {
    text: "TODO:",
    color: '#fff',
    backgroundColor: '#ffbd2a',
    overviewRulerColor: 'rgba(255,0,42,0.8)',
    dark: {
        gutterIconPath: path.join(__filename, '..', '..', 'src', 'resources', 'dark', 'todo.png')
    }
}
const fontColorDecorator = vscode.window.createTextEditorDecorationType(style.todoStyle);

    /* Ranges */
    let ranges: vscode.Range[] = [];
    const startPos = new vscode.Position(lineNumber, characterPosition);
    const endPos = new vscode.Position(lineNumber, characterPosition); 
    let singleRange: vscode.Range = new vscode.Range(startPos, endPos);
    ranges.push(singleRange);

    activeEditor.setDecorations(fontColorDecorator, ranges);

Примечание: Обязательно отрегулируйте путь и установите правильные диапазоны. Для простоты я нажимаю только одну позицию в массиве диапазонов. Если вы хотите воздействовать на несколько строк, добавьте соответственно дополнительные диапазоны.

...