Skip to content

Commit 1f48e94

Browse files
committed
Add Code Lens for submitting the answer
1 parent b68b352 commit 1f48e94

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

src/codeLensProvider.ts

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Copyright (c) jdneo. All rights reserved.
2+
// Licensed under the MIT license.
3+
4+
import * as vscode from "vscode";
5+
6+
class CodeLensProvider implements vscode.CodeLensProvider {
7+
8+
private validFileNamePattern: RegExp = /\d+\..*\.(.+)/;
9+
10+
public provideCodeLenses(document: vscode.TextDocument): vscode.ProviderResult<vscode.CodeLens[]> {
11+
const fileName: string = document.fileName.trim();
12+
const matchResult: RegExpMatchArray | null = fileName.match(this.validFileNamePattern);
13+
if (!matchResult) {
14+
return undefined;
15+
}
16+
17+
const range: vscode.Range = new vscode.Range(document.lineCount - 1, 0, document.lineCount - 1, 0);
18+
19+
const lens: vscode.CodeLens = new vscode.CodeLens(range, {
20+
title: "🙏 Submit to LeetCode",
21+
command: "leetcode.submitSolution",
22+
});
23+
24+
return [lens];
25+
}
26+
}
27+
28+
export const codeLensProvider: CodeLensProvider = new CodeLensProvider();

src/extension.ts

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Licensed under the MIT license.
33

44
import * as vscode from "vscode";
5+
import { codeLensProvider } from "./codeLensProvider";
56
import * as cache from "./commands/cache";
67
import * as plugin from "./commands/plugin";
78
import * as session from "./commands/session";
@@ -25,6 +26,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
2526
leetCodeStatusBarItem,
2627
leetCodeChannel,
2728
vscode.window.registerTreeDataProvider("leetCodeExplorer", leetCodeTreeDataProvider),
29+
vscode.languages.registerCodeLensProvider({ scheme: "file" }, codeLensProvider),
2830
vscode.commands.registerCommand("leetcode.deleteCache", () => cache.deleteCache()),
2931
vscode.commands.registerCommand("leetcode.toogleLeetCodeCn", () => plugin.toogleLeetCodeCn()),
3032
vscode.commands.registerCommand("leetcode.signin", () => leetCodeManager.signIn()),

0 commit comments

Comments
 (0)