Первая функция, которую вы можете получить, реализовав поставщика 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);
Примечание: Обязательно отрегулируйте путь и установите правильные диапазоны. Для простоты я нажимаю только одну позицию в массиве диапазонов. Если вы хотите воздействовать на несколько строк, добавьте соответственно дополнительные диапазоны.