Skip to content

Commit 9cd2338

Browse files
authored
Merge pull request #186 from ccagml/main
2.17.1
2 parents 51450b2 + 62c1ae7 commit 9cd2338

File tree

9 files changed

+259
-19
lines changed

9 files changed

+259
-19
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,5 @@ out
6464

6565
# Mac
6666
.DS_Store
67+
nls.js
68+
nls.json

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## version 2.17.1
2+
3+
- 增加调试需要参数快速选择按钮
4+
15
## version 2.16.1
26

37
- 增加中英文多语言的配置

nls.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,11 @@ function check_key(object, father: Array<any>) {
4444
if (result_json[key]) {
4545
console.log("重复", key);
4646
}
47-
result_json[key] = object["enumDescriptions"];
48-
object["enumDescriptions"] = `%${key}%`;
47+
for (let e_index = 0; e_index < object["enumDescriptions"].length; e_index++) {
48+
let b_key = key + `.${e_index}`;
49+
result_json[b_key] = object["enumDescriptions"][e_index];
50+
}
51+
// object["enumDescriptions"] = `%${key}%`;
4952
}
5053
}
5154

package.json

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "vscode-leetcode-problem-rating",
33
"displayName": "LeetCode",
44
"description": "%main.description%",
5-
"version": "2.16.1",
5+
"version": "2.17.1",
66
"author": "ccagml",
77
"publisher": "ccagml",
88
"license": "MIT",
@@ -1034,13 +1034,13 @@
10341034
"allcase"
10351035
],
10361036
"enumDescriptions": [
1037-
"Submit your answer to LeetCode.",
1038-
"Test your answer with customized test cases.",
1039-
"Star or unstar the current problem.",
1040-
"Show the top voted solution for the current problem.",
1041-
"Show the problem description page.",
1042-
"Test default case",
1043-
"Test all default case"
1037+
"%main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.0%",
1038+
"%main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.1%",
1039+
"%main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.2%",
1040+
"%main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.3%",
1041+
"%main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.4%",
1042+
"%main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.5%",
1043+
"%main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.6%"
10441044
]
10451045
},
10461046
"description": "%main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.description%"
@@ -1075,6 +1075,14 @@
10751075
"Score (Descending)",
10761076
"ID (Descending)"
10771077
],
1078+
"enumDescriptions": [
1079+
"%main.contributes.configuration.properties.leetcode-problem-rating.problems.sortStrategy.enumDescriptions.0%",
1080+
"%main.contributes.configuration.properties.leetcode-problem-rating.problems.sortStrategy.enumDescriptions.1%",
1081+
"%main.contributes.configuration.properties.leetcode-problem-rating.problems.sortStrategy.enumDescriptions.2%",
1082+
"%main.contributes.configuration.properties.leetcode-problem-rating.problems.sortStrategy.enumDescriptions.3%",
1083+
"%main.contributes.configuration.properties.leetcode-problem-rating.problems.sortStrategy.enumDescriptions.4%",
1084+
"%main.contributes.configuration.properties.leetcode-problem-rating.problems.sortStrategy.enumDescriptions.5%"
1085+
],
10781086
"description": "%main.contributes.configuration.properties.leetcode-problem-rating.problems.sortStrategy.description%"
10791087
},
10801088
"leetcode-problem-rating.pickOneByRankRangeMin": {
@@ -1099,10 +1107,10 @@
10991107
"ScoreRange"
11001108
],
11011109
"enumDescriptions": [
1102-
"Don't hide",
1103-
"Hide questions with scores",
1104-
"Hide questions with no scores",
1105-
"Hide questions outside the range of scores [pickOneByRankRangeMin, pickOneByRankRangeMax]"
1110+
"%main.contributes.configuration.properties.leetcode-problem-rating.hideScore.enumDescriptions.0%",
1111+
"%main.contributes.configuration.properties.leetcode-problem-rating.hideScore.enumDescriptions.1%",
1112+
"%main.contributes.configuration.properties.leetcode-problem-rating.hideScore.enumDescriptions.2%",
1113+
"%main.contributes.configuration.properties.leetcode-problem-rating.hideScore.enumDescriptions.3%"
11061114
],
11071115
"scope": "application",
11081116
"description": "%main.contributes.configuration.properties.leetcode-problem-rating.hideScore.description%"
@@ -1127,8 +1135,8 @@
11271135
"clang"
11281136
],
11291137
"enumDescriptions": [
1130-
"gdb compiler",
1131-
"clang compiler"
1138+
"%main.contributes.configuration.properties.leetcode-problem-rating.cppCompiler.enumDescriptions.0%",
1139+
"%main.contributes.configuration.properties.leetcode-problem-rating.cppCompiler.enumDescriptions.1%"
11321140
],
11331141
"scope": "resource"
11341142
}

package.nls.json

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,5 +98,24 @@
9898
"main.contributes.configuration.properties.leetcode-problem-rating.cppCompiler.enumDescriptions": [
9999
"gdb compiler",
100100
"clang compiler"
101-
]
101+
],
102+
"main.contributes.configuration.properties.leetcode-problem-rating.problems.sortStrategy.enumDescriptions.0": "None",
103+
"main.contributes.configuration.properties.leetcode-problem-rating.problems.sortStrategy.enumDescriptions.1": "Acceptance Rate (Ascending)",
104+
"main.contributes.configuration.properties.leetcode-problem-rating.problems.sortStrategy.enumDescriptions.2": "Acceptance Rate (Descending)",
105+
"main.contributes.configuration.properties.leetcode-problem-rating.problems.sortStrategy.enumDescriptions.3": "Score (Ascending)",
106+
"main.contributes.configuration.properties.leetcode-problem-rating.problems.sortStrategy.enumDescriptions.4": "Score (Descending)",
107+
"main.contributes.configuration.properties.leetcode-problem-rating.problems.sortStrategy.enumDescriptions.5": "ID (Descending)",
108+
"main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.0": "Submit your answer to LeetCode.",
109+
"main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.1": "Test your answer with customized test cases.",
110+
"main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.2": "Star or unstar the current problem.",
111+
"main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.3": "Show the top voted solution for the current problem.",
112+
"main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.4": "Show the problem description page.",
113+
"main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.5": "Test default case",
114+
"main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.6": "Test all default case",
115+
"main.contributes.configuration.properties.leetcode-problem-rating.hideScore.enumDescriptions.0": "Don't hide",
116+
"main.contributes.configuration.properties.leetcode-problem-rating.hideScore.enumDescriptions.1": "Hide questions with scores",
117+
"main.contributes.configuration.properties.leetcode-problem-rating.hideScore.enumDescriptions.2": "Hide questions with no scores",
118+
"main.contributes.configuration.properties.leetcode-problem-rating.hideScore.enumDescriptions.3": "Hide questions outside the range of scores [pickOneByRankRangeMin, pickOneByRankRangeMax]",
119+
"main.contributes.configuration.properties.leetcode-problem-rating.cppCompiler.enumDescriptions.0": "gdb compiler",
120+
"main.contributes.configuration.properties.leetcode-problem-rating.cppCompiler.enumDescriptions.1": "clang compiler"
102121
}

package.nls.zh-cn.json

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,5 +98,24 @@
9898
"main.contributes.configuration.properties.leetcode-problem-rating.cppCompiler.enumDescriptions": [
9999
"gdb compiler",
100100
"clang compiler"
101-
]
101+
],
102+
"main.contributes.configuration.properties.leetcode-problem-rating.problems.sortStrategy.enumDescriptions.0": "默认题目编号排序",
103+
"main.contributes.configuration.properties.leetcode-problem-rating.problems.sortStrategy.enumDescriptions.1": "通过率升序",
104+
"main.contributes.configuration.properties.leetcode-problem-rating.problems.sortStrategy.enumDescriptions.2": "通过率降序",
105+
"main.contributes.configuration.properties.leetcode-problem-rating.problems.sortStrategy.enumDescriptions.3": "分数升序",
106+
"main.contributes.configuration.properties.leetcode-problem-rating.problems.sortStrategy.enumDescriptions.4": "分数降序",
107+
"main.contributes.configuration.properties.leetcode-problem-rating.problems.sortStrategy.enumDescriptions.5": "题目编号降序",
108+
"main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.0": "提交代码",
109+
"main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.1": "测试代码",
110+
"main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.2": "题目加喜爱",
111+
"main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.3": "获取题解",
112+
"main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.4": "展示题目介绍",
113+
"main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.5": "测试默认用例",
114+
"main.contributes.configuration.properties.leetcode-problem-rating.editor.shortcuts.items.enumDescriptions.6": "测试所有用例",
115+
"main.contributes.configuration.properties.leetcode-problem-rating.hideScore.enumDescriptions.0": "不处理",
116+
"main.contributes.configuration.properties.leetcode-problem-rating.hideScore.enumDescriptions.1": "隐藏有分数的题目",
117+
"main.contributes.configuration.properties.leetcode-problem-rating.hideScore.enumDescriptions.2": "隐藏没有分数的题目",
118+
"main.contributes.configuration.properties.leetcode-problem-rating.hideScore.enumDescriptions.3": "隐藏分数在配置[pickOneByRankRangeMin, pickOneByRankRangeMax]范围外的题目",
119+
"main.contributes.configuration.properties.leetcode-problem-rating.cppCompiler.enumDescriptions.0": "gdb编译",
120+
"main.contributes.configuration.properties.leetcode-problem-rating.cppCompiler.enumDescriptions.1": "clang编译"
102121
}

src/controller/DebugController.ts

Lines changed: 119 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,16 @@
77
* Copyright (c) 2023 ccagml . All rights reserved
88
*/
99

10-
import { TextDocument, window } from "vscode";
10+
import { TextDocument, window, Range } from "vscode";
1111
import { getTextEditorFilePathByUri } from "../utils/SystemUtils";
1212
import * as fs from "fs";
1313
import { fileMeta, ProblemMeta, supportDebugLanguages } from "../utils/problemUtils";
1414

1515
import { debugService } from "../service/DebugService";
1616
import { debugArgDao } from "../dao/debugArgDao";
1717

18+
import { IQuickItemEx } from "../model/Model";
19+
1820
// 做杂活
1921
class DebugContorller {
2022
constructor() {}
@@ -66,6 +68,122 @@ class DebugContorller {
6668
//
6769
}
6870
}
71+
72+
public async addDebugType(document: TextDocument, addType) {
73+
const picks: Array<IQuickItemEx<string>> = [
74+
{ label: "number", detail: "类型说明:数字", value: "number" },
75+
{ label: "number[]", detail: "类型说明:数字数组", value: "number[]" },
76+
{ label: "number[][]", detail: "类型说明:数字二维数组", value: "number[][]" },
77+
{ label: "string", detail: "类型说明:字符串", value: "string" },
78+
{ label: "string[]", detail: "类型说明:字符串数组", value: "string[]" },
79+
{ label: "string[][]", detail: "类型说明:字符串二维数组", value: "string[][]" },
80+
{ label: "ListNode", detail: "类型说明:链表", value: "ListNode" },
81+
{ label: "ListNode[]", detail: "类型说明:链表数组", value: "ListNode[]" },
82+
{ label: "character", detail: "类型说明:字节", value: "character" },
83+
{ label: "character[]", detail: "类型说明:字节数组", value: "character[]" },
84+
{ label: "character[][]", detail: "类型说明:字节二维数组", value: "character[][]" },
85+
{ label: "NestedInteger[]", detail: "类型说明:数组", value: "NestedInteger[]" },
86+
{ label: "MountainArray", detail: "类型说明:数组", value: "MountainArray" },
87+
{ label: "TreeNode", detail: "类型说明:树节点", value: "TreeNode" },
88+
];
89+
90+
const choice: IQuickItemEx<string> | undefined = await window.showQuickPick(picks, {
91+
title: "添加调试需要的参数",
92+
matchOnDescription: false,
93+
matchOnDetail: false,
94+
placeHolder: "选择要添加的分类",
95+
canPickMany: false,
96+
});
97+
if (!choice) {
98+
return;
99+
}
100+
101+
const content: string = document.getText();
102+
const matchResult: RegExpMatchArray | null = content.match(/@lc app=.* id=(.*) lang=(.*)/);
103+
if (!matchResult || !matchResult[2]) {
104+
return undefined;
105+
}
106+
// 搜集所有debug
107+
let debugFlag: boolean = false;
108+
for (let i: number = 0; i < document.lineCount; i++) {
109+
const lineContent: string = document.lineAt(i).text;
110+
111+
// 收集所有用例
112+
if (lineContent.indexOf("@lcpr-div-debug-arg-end") >= 0) {
113+
debugFlag = false;
114+
}
115+
116+
if (debugFlag) {
117+
let equal_index = lineContent.indexOf("=");
118+
const last_index = document.lineAt(i).range.end.character;
119+
if (addType == "paramTypes" && lineContent.indexOf("paramTypes=") >= 0) {
120+
window.activeTextEditor?.edit((edit) => {
121+
// 参数是个数组;
122+
// edit.replace(new Position(i, equal_index + 1), choice.value);
123+
let cur_param_str = lineContent.substring(equal_index + 1);
124+
let cur_param_array: any = [];
125+
try {
126+
cur_param_array = JSON.parse(cur_param_str);
127+
} catch (error) {
128+
cur_param_array = [];
129+
}
130+
131+
cur_param_array.push(choice.value);
132+
133+
edit.replace(new Range(i, equal_index + 1, i, last_index), JSON.stringify(cur_param_array));
134+
});
135+
} else if (addType == "returnType" && lineContent.indexOf("returnType=") >= 0) {
136+
window.activeTextEditor?.edit((edit) => {
137+
edit.replace(new Range(i, equal_index + 1, i, last_index), choice.value);
138+
});
139+
}
140+
}
141+
142+
// 收集所有用例
143+
if (lineContent.indexOf("@lcpr-div-debug-arg-start") >= 0) {
144+
debugFlag = true;
145+
}
146+
}
147+
return;
148+
}
149+
public async resetDebugType(document: TextDocument, addType) {
150+
const content: string = document.getText();
151+
const matchResult: RegExpMatchArray | null = content.match(/@lc app=.* id=(.*) lang=(.*)/);
152+
if (!matchResult || !matchResult[2]) {
153+
return undefined;
154+
}
155+
// 搜集所有debug
156+
let debugFlag: boolean = false;
157+
for (let i: number = 0; i < document.lineCount; i++) {
158+
const lineContent: string = document.lineAt(i).text;
159+
160+
// 收集所有用例
161+
if (lineContent.indexOf("@lcpr-div-debug-arg-end") >= 0) {
162+
debugFlag = false;
163+
}
164+
165+
if (debugFlag) {
166+
let equal_index = lineContent.indexOf("=");
167+
const last_index = document.lineAt(i).range.end.character;
168+
if (addType == "paramTypes" && lineContent.indexOf("paramTypes=") >= 0) {
169+
window.activeTextEditor?.edit((edit) => {
170+
let cur_param_array: any = [];
171+
edit.replace(new Range(i, equal_index + 1, i, last_index), JSON.stringify(cur_param_array));
172+
});
173+
} else if (addType == "returnType" && lineContent.indexOf("returnType=") >= 0) {
174+
window.activeTextEditor?.edit((edit) => {
175+
edit.replace(new Range(i, equal_index + 1, i, last_index), "");
176+
});
177+
}
178+
}
179+
180+
// 收集所有用例
181+
if (lineContent.indexOf("@lcpr-div-debug-arg-start") >= 0) {
182+
debugFlag = true;
183+
}
184+
}
185+
return;
186+
}
69187
}
70188

71189
export const debugContorller: DebugContorller = new DebugContorller();

src/extension.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,12 @@ export async function activate(context: ExtensionContext): Promise<void> {
141141
}),
142142
commands.registerCommand("lcpr.simpleDebug", (document: TextDocument, testCase?) =>
143143
debugContorller.startDebug(document, testCase)
144+
),
145+
commands.registerCommand("lcpr.addDebugType", (document: TextDocument, addType) =>
146+
debugContorller.addDebugType(document, addType)
147+
),
148+
commands.registerCommand("lcpr.resetDebugType", (document: TextDocument, addType) =>
149+
debugContorller.resetDebugType(document, addType)
144150
)
145151
);
146152

0 commit comments

Comments
 (0)