mirror of
https://github.com/microsoft/vscode-extension-samples.git
synced 2026-06-13 07:10:26 +08:00
Switches all samples to use eslint 9 with flat configs. I've tried to migrate existing settings as much as possible. However our eslint configs were also inconsistent so I've tried to align these too
56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
import * as vscode from 'vscode';
|
|
|
|
/**
|
|
* CodelensProvider
|
|
*/
|
|
export class CodelensProvider implements vscode.CodeLensProvider {
|
|
|
|
private codeLenses: vscode.CodeLens[] = [];
|
|
private regex: RegExp;
|
|
private _onDidChangeCodeLenses: vscode.EventEmitter<void> = new vscode.EventEmitter<void>();
|
|
public readonly onDidChangeCodeLenses: vscode.Event<void> = this._onDidChangeCodeLenses.event;
|
|
|
|
constructor() {
|
|
this.regex = /(.+)/g;
|
|
|
|
vscode.workspace.onDidChangeConfiguration((_) => {
|
|
this._onDidChangeCodeLenses.fire();
|
|
});
|
|
}
|
|
|
|
public provideCodeLenses(document: vscode.TextDocument, _token: vscode.CancellationToken): vscode.CodeLens[] | Thenable<vscode.CodeLens[]> {
|
|
|
|
if (vscode.workspace.getConfiguration("codelens-sample").get("enableCodeLens", true)) {
|
|
this.codeLenses = [];
|
|
const regex = new RegExp(this.regex);
|
|
const text = document.getText();
|
|
let matches;
|
|
while ((matches = regex.exec(text)) !== null) {
|
|
const line = document.lineAt(document.positionAt(matches.index).line);
|
|
const indexOf = line.text.indexOf(matches[0]);
|
|
const position = new vscode.Position(line.lineNumber, indexOf);
|
|
const range = document.getWordRangeAtPosition(position, new RegExp(this.regex));
|
|
if (range) {
|
|
this.codeLenses.push(new vscode.CodeLens(range));
|
|
}
|
|
}
|
|
return this.codeLenses;
|
|
}
|
|
return [];
|
|
}
|
|
|
|
public resolveCodeLens(codeLens: vscode.CodeLens, _token: vscode.CancellationToken) {
|
|
if (vscode.workspace.getConfiguration("codelens-sample").get("enableCodeLens", true)) {
|
|
codeLens.command = {
|
|
title: "Codelens provided by sample extension",
|
|
tooltip: "Tooltip provided by sample extension",
|
|
command: "codelens-sample.codelensAction",
|
|
arguments: ["Argument 1", false]
|
|
};
|
|
return codeLens;
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
|