Skip to content

Commit 8d7e4ac

Browse files
committed
💬 update display strings
1 parent fcf3c37 commit 8d7e4ac

File tree

11 files changed

+229
-147
lines changed

11 files changed

+229
-147
lines changed

i18n/i18n.zh-cn.json

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,5 @@
11
{
22
"activate.hello": "成功激活拓展masm/tasm",
3-
"keykind.Command": "操作码助记符",
4-
"keykind.Memory": "数据定义指令",
5-
"keykind.Instruction": "伪指令助记符",
6-
"keykind.Register": "Register寄存器",
7-
"keykind.Saved": "Saved保留字",
8-
"keykind.Size": "Size",
9-
"keykind.Label": "Label标号",
10-
"keykind.Macro": "Macro宏指令",
11-
"keykind.Procedure": "Proc子程序",
12-
"keykind.Structure": "Structure 结构体",
13-
"keykind.Variable": "Variable 变量",
14-
"keykind.Segment": "Segment 段",
153
"ascii.NUL": "(空字符)",
164
"ascii.SOH": "(标题开始)",
175
"ascii.STX": "(正文开始)",
@@ -50,17 +38,25 @@
5038
"num.oct": "八进制数",
5139
"num.dec": "十进制数",
5240
"num.bin": "二进制数",
53-
"dosbox.console.stdout": "[DOSBox 控制台标准输出] No.{0}",
54-
"dosbox.console.stderr": "[DOSBox 控制台标准错误输出] No.{0}",
55-
"openemu.msg": "[执行命令] 在文件的位置打开DOS模拟器{0}并配置{2}环境\n\t{1}",
56-
"run.msg": "[执行命令] 在{2}中使用{1}编译运行文件\n\t{0}: ",
57-
"debug.msg": "[执行命令] 在{2}中使用{1}调试汇编文件\n\t{0}:",
58-
"copy.msg": "\n复制文件为{0}",
59-
"runcode.error": "{0}汇编出错,无法运行/调试,详细信息见输出面板",
60-
"runcode.warn": "成功汇编链接生成EXE,但是汇编时产生了警告信息({0}warning),可能无法运行/调试,是否继续操作",
61-
"runcode.continue": "继续",
62-
"runcode.stop": "",
63-
"diag.msg": "[汇编器输出信息] 插件收集到{0}条错误,{1}条警告",
64-
"config.title": "[设置信息] {0}",
65-
"config.content": "默认使用的独立文件夹:{0}\n使用的工具集来自:{1}"
41+
"keykind.Command": "操作码助记符",
42+
"keykind.Memory": "数据定义指令",
43+
"keykind.Instruction": "伪指令助记符",
44+
"keykind.Register": "Register寄存器",
45+
"keykind.Saved": "Saved保留字",
46+
"keykind.Size": "Size",
47+
"keykind.Label": "Label标号",
48+
"keykind.Macro": "Macro宏指令",
49+
"keykind.Procedure": "Proc子程序",
50+
"keykind.Structure": "Structure 结构体",
51+
"keykind.Variable": "Variable 变量",
52+
"keykind.Segment": "Segment 段",
53+
"ASM.singleFileMode": "[ASM] single file Mode执行命令前文件将被复制到如下目录\n\t {0}",
54+
"ASM.openemu.msg": "[执行命令] 在文件的位置打开DOS模拟器{2}并配置{1}环境\n\t{0}",
55+
"ASM.run.msg": "[执行命令] 在{2}中使用{1}运行汇编文件\n\t{0}",
56+
"ASM.debug.msg": "[执行命令] 在{2}中使用{1}调试汇编文件\n\t{0}",
57+
"diag.msg": "[ASM] 插件从如下信息中收集到 {0}条错误,{1}条警告",
58+
"ASM.error": "汇编错误,参看输出面板",
59+
"ASM.warn": "成功汇编链接生成EXE,但是汇编时产生了警告信息({0}warning),可能无法运行/调试,是否继续操作",
60+
"ASM.continue": "继续",
61+
"ASM.stop": ""
6662
}

package.json

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -101,29 +101,29 @@
101101
{
102102
"command": "masm-tasm.cleanalldiagnose",
103103
"title": "%command.cleanalldianose%"
104-
},
105-
{
106-
"command": "masm-tasm.dosboxhere",
107-
"title": "%command.dosboxhere%"
108104
}
109105
],
110106
"configuration": {
111107
"type": "object",
112108
"title": "MASM/TASM",
113109
"properties": {
110+
"masmtasm.ASM.mode": {
111+
"type": "string",
112+
"default": "single file",
113+
"enum": [
114+
"singla file"
115+
],
116+
"markdownDescription": "choose working Mode"
117+
},
114118
"masmtasm.ASM.assembler": {
115119
"type": "string",
116120
"default": "TASM",
117-
"description": "%config.masmortasm.description%",
121+
"description": "%config.assembler.description%",
118122
"enum": [
119123
"TASM",
120124
"MASM",
121125
"MASM-v5.00",
122126
"MASM-v6.11"
123-
],
124-
"enumDescriptions": [
125-
"%config.masmortasm.enum1%",
126-
"%config.masmortasm.enum2%"
127127
]
128128
},
129129
"masmtasm.ASM.actions": {
@@ -192,15 +192,10 @@
192192
"enumDescriptions": [
193193
"%config.emulator.jsdos%",
194194
"%config.emulator.dosbox%",
195-
"%config.emulator.player%",
196-
"%config.emulator.auto%"
195+
"%config.emulator.dosboxX%",
196+
"%config.emulator.player%"
197197
]
198198
},
199-
"masmtasm.ASM.singleFileMode": {
200-
"type": "boolean",
201-
"default": true,
202-
"markdownDescription": "%config.singleFileMode%"
203-
},
204199
"masmtasm.ASM.savefirst": {
205200
"type": "boolean",
206201
"default": true,

package.nls.zh-cn.json

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,38 +3,19 @@
33
"editor.runAsm": "运行当前程序(汇编+链接+运行)",
44
"editor.debugAsm": "调试当前程序(汇编+链接+调试)",
55
"command.cleanalldianose": "MASM/TASM: 清除MASM/TASM的所有问题信息",
6-
"command.dosboxhere": "DOSBox here: 打开DOSBox,并配置相关环境",
7-
"config.toolspath.mddescription": "自定义的汇编目录,用来替换插件自带的工具集",
8-
"config.masmortasm.description": "使用MASM还是TASM作为汇编工具",
9-
"config.masmortasm.enum1": "使用MASM汇编工具集,包括masm.exe,link.exe,debug.exe...",
10-
"config.masmortasm.enum2": "使用TASM汇编工具集,包括tasm.exe,tlink.exe,td.exe...",
6+
"config.assembler.description": "选择使用的汇编工具",
117
"config.emulator.description": "选择使用的DOS环境模拟器",
12-
"config.emulator.jsdos": "使用jsdos(推荐) 在webview中运行jsdos(wdosbox)来提供DOS环境",
13-
"config.emulator.dosbox": "使用dosbox(推荐,最稳定)模拟DOS系统环境,非windows系统需要先安装dosbox并添加到PATH",
8+
"config.emulator.jsdos": "使用jsdos在webview中运行jsdos(wdosbox)来提供DOS环境",
9+
"config.emulator.dosbox": "使用dosbox模拟DOS系统环境,非windows系统需要先安装dosbox并添加到PATH",
10+
"config.emulator.dosboxX": "使用DOSBox-x模拟dos环境",
1411
"config.emulator.player": "尽量使用msdos player模拟,不会弹出一个窗口,但是可能无法得到程序预期的运行结果",
15-
"config.emulator.auto": "使用MSDOS-player汇编链接,使用dosbox运行,TD调试时用dosbox,debug调试时用MSDOS player",
1612
"config.savefirst": "在运行之前先保存文件,不保存的话,无法体现当前变更",
1713
"config.boxrun.description": "选择在dosbox中运行代码时,运行代码结束后执行什么操作",
1814
"config.boxrun.enum1": "运行之后在dosbox窗口停留,可以输入exit,点击右上角“x”,或者按Ctrl+F9关闭DOSBOX",
1915
"config.boxrun.enum2": "运行程序之后直接关闭DOSBOX",
2016
"config.boxrun.enum3": "运行程序之后先停顿一下,输入任意字符后关闭DOSBOX窗口",
2117
"config.boxrun.choose": "使用choose命令,来选择是否关闭dosbox",
22-
"config.boxcommand": "假如设定了该值,插件将使用这个命令来打开dosbox并在这条命令之后传递参数",
23-
"config.boxconsole.description": "控制windows系统下dosbox的控制台窗口如何显示",
24-
"config.boxconsole.min": "- windows系统下,最小化控制台窗口,使用命令如`start/min dosbox`\n- 其他系统将不处理控制台输出",
25-
"config.boxconsole.normal": "- windows系统下,显示控制台窗口,使用命令如`dosbox`\n- 其他系统下将不处理控制台输出",
26-
"config.boxconsole.noconsole": "不显示控制台窗口\n\n- windows系统下,使用命令如`dosbox -noconsole`重定向到文件\n- 其他系统下将不处理控制台输出",
27-
"config.boxconsole.redirect-show": "DOSBox控制台信息重定向到VSCode输出窗口并显示窗口,windows下无法实时显示",
28-
"config.boxconsole.redirect": "DOSBox控制台信息重定向到VSCode输出窗口,windows下无法实时显示",
2918
"config.boxconfig.description": "dosbox的配置信息,将会写到插件专用的配置文件中, 参见 [dosbox官网的说明](https://www.dosbox.com/wiki/Dosbox.conf),如果需要设置AUTOEXEC,可以使用格式如`\"AUTOEXEC\":\"echo hi\\ndir\"`",
3019
"config.hover": "是否显示悬浮提示(hover),可能需要重启vscode来应用变更",
31-
"config.PLF": "使用提供大纲,跳到定义,查找引用等programmatic features",
32-
"config.separateSpace": "总是使用独立的文件夹来进行操作,插件会将源代码文件复制到一个独立的文件夹来操作。当插件认为模拟器文件系统可能不支持需操作文件路径时会自动进行进行复制,设置为true表示总是进行复制",
33-
"config.clean": "在执行操作前清理可能会干扰的文件,包括同名的exe文件和obj文件",
34-
"config.jsdos.viewColumn": "在哪个位置展示用于运行JS-Dos的webview [ViewColumn](https://code.visualstudio.com/api/references/vscode-api#ViewColumn)",
35-
"config.jsdos.viewColumn.Active": "当前位置",
36-
"config.jsdos.viewColumn.Besides": "侧边位置",
37-
"config.dosbox.more": "在DOSBox中使用的命令\n\n- 插件会自动将汇编工具文件夹挂载到`C`盘, 文件所在文件夹挂载到D盘\n- 并挂载一个独立的文件夹到X盘,并获取文件`X:\\ASM.LOG`来处理汇编器输出\n",
38-
"config.jsdos.more": "在wDOSBox(JSDOS)中需要执行的命令,插件会读取dosbox的标准输出",
39-
"config.msdos.more": "在msdos中需要执行的命令,其实是在cmd中执行,插件会读取cmd的标准输出"
20+
"config.PLF": "使用提供大纲,跳到定义,查找引用等programmatic features"
4021
}

src/ASM/main.ts

Lines changed: 50 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,17 @@ export interface AsmResult {
2626
warn?: number
2727
}
2828

29+
function actionMessage(act: conf.actionType, file: string): string {
30+
switch (act) {
31+
case conf.actionType.open:
32+
return logger.localize("ASM.openemu.msg", file, conf.extConf.asmType, conf.extConf.emulator);
33+
case conf.actionType.run:
34+
return logger.localize("ASM.run.msg", file, conf.extConf.asmType, conf.extConf.emulator);
35+
case conf.actionType.debug:
36+
return logger.localize("ASM.debug.msg", file, conf.extConf.asmType, conf.extConf.emulator);
37+
}
38+
}
39+
2940
export async function activate(context: vscode.ExtensionContext) {
3041
statusBar.activate(context);
3142
const diag = Diag.activate(context);
@@ -37,7 +48,7 @@ export async function activate(context: vscode.ExtensionContext) {
3748
const seperateSpaceFolder = vscode.Uri.joinPath(context.globalStorageUri, "workspace");
3849

3950
async function singleFileMode(act: conf.actionType, _uri: vscode.Uri): Promise<AsmResult> {
40-
logger.actionLog(act, _uri);
51+
logger.channel(actionMessage(act, _uri.fsPath));
4152

4253
if (nodefs.existsSync(seperateSpaceFolder.fsPath)) {
4354
await fs.delete(seperateSpaceFolder, { recursive: true, useTrash: false });
@@ -102,6 +113,26 @@ export async function activate(context: vscode.ExtensionContext) {
102113

103114
const box = conf.extConf.emulator === conf.DosEmulatorType.dosboxX ? api.dosboxX : api.dosbox;
104115
await box.fromBundle(bundle, assemblyToolsFolder);
116+
117+
switch (vscode.workspace.getConfiguration('masm-tasm').get('dosbox.run')) {
118+
case "keep":
119+
break;
120+
case "exit":
121+
autoexec.push('exit');
122+
break;
123+
case 'pause':
124+
autoexec.push('pause', 'exit');
125+
break;
126+
case "choose":
127+
default:
128+
autoexec.push(
129+
"@choice Do you need to keep the DOSBox",
130+
"@IF ERRORLEVEL 2 exit",
131+
"@IF ERRORLEVEL 1 echo on"
132+
);
133+
break;
134+
}
135+
105136
box.updateAutoexec(autoexec);
106137

107138
if (act !== conf.actionType.open) {
@@ -221,6 +252,16 @@ export async function activate(context: vscode.ExtensionContext) {
221252
}
222253

223254
const diagnose = diag.process(result, doc, conf.extConf.asmType);
255+
if (diagnose) {
256+
if (diagnose?.error > 0) {
257+
vscode.window.showErrorMessage(logger.localize("ASM.error"));
258+
logger.outputChannel.show();
259+
}
260+
logger.channel(
261+
logger.localize('diag.msg', diagnose.error.toString(), diagnose.warn.toString()),
262+
"\n\t" + result.replace(/\r/g, "").replace(/[\n]*/g, "\n\t")
263+
);
264+
}
224265

225266
return {
226267
message: result,
@@ -229,9 +270,14 @@ export async function activate(context: vscode.ExtensionContext) {
229270
};
230271
}
231272

273+
const workingMode = singleFileMode;
274+
275+
const msg = logger.localize("ASM.singleFileMode", seperateSpaceFolder.fsPath);
276+
logger.channel(msg);
277+
232278
context.subscriptions.push(
233-
vscode.commands.registerCommand('masm-tasm.openEmulator', (uri: vscode.Uri) => singleFileMode(conf.actionType.open, uri)),
234-
vscode.commands.registerCommand('masm-tasm.runASM', (uri: vscode.Uri) => singleFileMode(conf.actionType.run, uri)),
235-
vscode.commands.registerCommand('masm-tasm.debugASM', (uri: vscode.Uri) => singleFileMode(conf.actionType.debug, uri))
279+
vscode.commands.registerCommand('masm-tasm.openEmulator', (uri: vscode.Uri) => workingMode(conf.actionType.open, uri)),
280+
vscode.commands.registerCommand('masm-tasm.runASM', (uri: vscode.Uri) => workingMode(conf.actionType.run, uri)),
281+
vscode.commands.registerCommand('masm-tasm.debugASM', (uri: vscode.Uri) => workingMode(conf.actionType.debug, uri))
236282
);
237283
}

src/extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export function activate(context: vscode.ExtensionContext): void {
1313
//provide run and debug features via DOS emulators
1414
asm.activate(context);
1515

16-
console.log(localize("activate.hello", 'Congratulations, your extension "masm-tasm" is now active!'));
16+
console.log(localize("activate.hello"));
1717
}
1818

1919
// this method is called when your extension is deactivated

src/language/wordinfo.ts

Lines changed: 50 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -6,39 +6,39 @@ export function isNumberStr(str: string): boolean {
66
return false;
77
}
88
const asciiname: string[] = [
9-
"NUL" + localize("ascii.NUL", "(NULL)"),
10-
"SOH" + localize("ascii.SOH", "(Start Of Headling)"),
11-
"STX" + localize("ascii.STX", "(Start Of Text)"),
12-
"ETX" + localize("ascii.ETX", "(End Of Text)"),
13-
"EOT" + localize("ascii.EOT", "(End Of Transmission)"),
14-
"ENQ" + localize("ascii.ENQ", "(Enquiry)"),
15-
"ACK" + localize("ascii.ACK", "(Acknowledge)"),
16-
"BEL" + localize("ascii.BEL", "(Bell)"),
17-
"BS " + localize("ascii.BS", "(Backspace)"),
18-
"HT " + localize("ascii.HT", "(Horizontal Tab)"),
19-
"LF/NL" + localize("ascii.LFNL", "(Line Feed/New Line)"),
20-
"VT " + localize("ascii.VT", "(Vertical Tab)"),
21-
"FF/NP " + localize("ascii.FFNP", "(Form Feed/New Page)"),
22-
"CR" + localize("ascii.CR", "(Carriage Return) "),
23-
"SO" + localize("ascii.SO", "(Shift Out)"),
24-
"SI" + localize("ascii.SI", "(Shift In)"),
25-
"DLE" + localize("ascii.DLE", "(Data Link Escape)"),
26-
"DC1/XON" + localize("ascii.DC1", "(Device Control 1/Transmission On)"),
27-
"DC2" + localize("ascii.DC2", "(Device Control 2)"),
28-
"DC3/XOFF" + localize("ascii.DC3", "(Device Control 3/Transmission Off)"),
29-
"DC4" + localize("ascii.DC4", "(Device Control 4)"),
30-
"NAK" + localize("ascii.NAK", "(Negative Acknowledge)"),
31-
"SYN" + localize("ascii.SYN", "(Synchronous Idle)"),
32-
"ETB" + localize("ascii.ETB", "(End of Transmission Block) "),
33-
"CAN" + localize("ascii.CAN", "(Cancel)"),
34-
"EM" + localize("ascii.EM", "(End of Medium)"),
35-
"SUB" + localize("ascii.SUB", "(Substitute)"),
36-
"ESC" + localize("ascii.ESC", "(Escape)"),
37-
"FS" + localize("ascii.FS", "(File Separator)"),
38-
"GS" + localize("ascii.GS", "(Group Separator)"),
39-
"RS" + localize("ascii.RS", "(Record Separator)"),
40-
"US" + localize("ascii.US", "(Unit Separator)"),
41-
localize("ascii.space", "(Space) "),
9+
"NUL" + localize("ascii.NUL",),
10+
"SOH" + localize("ascii.SOH",),
11+
"STX" + localize("ascii.STX",),
12+
"ETX" + localize("ascii.ETX",),
13+
"EOT" + localize("ascii.EOT",),
14+
"ENQ" + localize("ascii.ENQ",),
15+
"ACK" + localize("ascii.ACK",),
16+
"BEL" + localize("ascii.BEL",),
17+
"BS " + localize("ascii.BS",),
18+
"HT " + localize("ascii.HT",),
19+
"LF/NL" + localize("ascii.LFNL",),
20+
"VT " + localize("ascii.VT",),
21+
"FF/NP " + localize("ascii.FFNP",),
22+
"CR" + localize("ascii.CR",),
23+
"SO" + localize("ascii.SO",),
24+
"SI" + localize("ascii.SI",),
25+
"DLE" + localize("ascii.DLE",),
26+
"DC1/XON" + localize("ascii.DC1",),
27+
"DC2" + localize("ascii.DC2",),
28+
"DC3/XOFF" + localize("ascii.DC3",),
29+
"DC4" + localize("ascii.DC4",),
30+
"NAK" + localize("ascii.NAK",),
31+
"SYN" + localize("ascii.SYN",),
32+
"ETB" + localize("ascii.ETB",),
33+
"CAN" + localize("ascii.CAN",),
34+
"EM" + localize("ascii.EM",),
35+
"SUB" + localize("ascii.SUB",),
36+
"ESC" + localize("ascii.ESC",),
37+
"FS" + localize("ascii.FS",),
38+
"GS" + localize("ascii.GS",),
39+
"RS" + localize("ascii.RS",),
40+
"US" + localize("ascii.US",),
41+
localize("ascii.space",),
4242
"!", "\" ", "#",
4343
"$", "%", "&", "'", "(",
4444
")", "*", "+", ",", "-",
@@ -59,15 +59,15 @@ const asciiname: string[] = [
5959
"t", "u", "v", "w", "x",
6060
"y", "z", "{", "|", "}",
6161
"~",
62-
"DEL" + localize("ascii.DEL", "(Delete)"),
62+
"DEL" + localize("ascii.DEL"),
6363
];
6464
export function getNumMsg(word: string): string {
6565
const base: number = word.endsWith('h') ? 16 : word.endsWith('q') ? 8 : word.endsWith('b') ? 2 : 10;
6666
const value: number = Number.parseInt(word, base);
67-
const hex = localize("num.hex", "Hexadecimal Number");
68-
const oct = localize("num.oct", "Octal Number");
69-
const dec = localize("num.dec", "Decimal Number");
70-
const bin = localize("num.bin", "Binary Number");
67+
const hex = localize("num.hex",);
68+
const oct = localize("num.oct",);
69+
const dec = localize("num.dec",);
70+
const bin = localize("num.bin",);
7171
let s = "(" + (base === 16 ? hex : base === 8 ? oct : base === 10 ? dec : bin) + ") " + word + ":\n\n";
7272
s += " `DEC`: " + value.toString(10) + "D\n\n";
7373
s += " `HEX`: " + value.toString(16) + "H\n\n";
@@ -103,29 +103,29 @@ export function getType(type: KeywordType | string): string {
103103
}
104104
switch (itsType) {
105105
case KeywordType.Instruction:
106-
return localize("keykind.Command", "(Opcode mnemonics)");
106+
return localize("keykind.Command");
107107
case KeywordType.MemoryAllocation:
108-
return localize("keykind.Memory", "(Data definitions)");
108+
return localize("keykind.Memory",);
109109
case KeywordType.PreCompileCommand:
110-
return localize("keykind.Instruction", "(Assembly directives)");
110+
return localize("keykind.Instruction",);
111111
case KeywordType.Register:
112-
return localize("keykind.Register", "(Register)");
112+
return localize("keykind.Register",);
113113
case KeywordType.SavedWord:
114-
return localize("keykind.Saved", "(Saved)");
114+
return localize("keykind.Saved",);
115115
case KeywordType.Size:
116-
return localize("keykind.Size", "(Size)");
116+
return localize("keykind.Size",);
117117
case KeywordType.Label:
118-
return localize("keykind.Label", "(Label)");
118+
return localize("keykind.Label",);
119119
case KeywordType.Macro:
120-
return localize("keykind.Macro", "(Macro)");
120+
return localize("keykind.Macro",);
121121
case KeywordType.Procedure:
122-
return localize("keykind.Procedure", "(Procedure)");
122+
return localize("keykind.Procedure",);
123123
case KeywordType.Structure:
124-
return localize("keykind.Structure", "(Structure)");
124+
return localize("keykind.Structure",);
125125
case KeywordType.Variable:
126-
return localize("keykind.Variable", "(Variable)");
126+
return localize("keykind.Variable",);
127127
case KeywordType.Segment:
128-
return localize("keykind.Segment", "(Segment)");
128+
return localize("keykind.Segment",);
129129
}
130130
return type.toString();
131131
}

0 commit comments

Comments
 (0)