Skip to content

Commit cc782c3

Browse files
committed
refactor: Moved formatter to server
feat: vscode settings can notify server feat server console log now works
1 parent d0e7c00 commit cc782c3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+6065
-7533
lines changed

.vscode/launch.json

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,8 @@
1111
"outFiles": ["${workspaceRoot}/client/out/**/*.js"],
1212
"preLaunchTask": {
1313
"type": "npm",
14-
"script": "watch"
14+
"script": "compile"
1515
}
16-
},
17-
{
18-
"name": "Language Server E2E Test",
19-
"type": "extensionHost",
20-
"request": "launch",
21-
"runtimeExecutable": "${execPath}",
22-
"args": [
23-
"--extensionDevelopmentPath=${workspaceRoot}",
24-
"--extensionTestsPath=${workspaceRoot}/client/out/test/index",
25-
"${workspaceRoot}/client/testFixture"
26-
],
27-
"outFiles": ["${workspaceRoot}/client/out/test/**/*.js"]
2816
}
2917
]
3018
}

.vscode/settings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
"typescript.tsc.autoDetect": "off",
44
"typescript.preferences.quoteStyle": "single",
55
"editor.codeActionsOnSave": {
6-
"source.fixAll.eslint": true
6+
"source.fixAll.eslint": "explicit"
77
}
88
}

client/src/extension.ts

Lines changed: 8 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,12 @@ import {
1515

1616
let client: LanguageClient;
1717
let languageServerRunning = false;
18+
1819
const ZSconfig = vscode.workspace.getConfiguration('ZeroSyntax');
1920
const EditorConfig = vscode.workspace.getConfiguration('editor')
2021

22+
let forceAddModule = ZSconfig.get<boolean>('forceAddModule', false)
23+
2124
export function activate(context: vscode.ExtensionContext) {
2225

2326
// const command = "extension.formatDocument";
@@ -26,21 +29,17 @@ export function activate(context: vscode.ExtensionContext) {
2629

2730
let languageServerRunning = ZSconfig.get<boolean>('serverStartupSetting', false); // Default to 2 if not set
2831

29-
context.subscriptions.push(vscode.languages.registerDocumentFormattingEditProvider('ini', {
30-
provideDocumentFormattingEdits: (document: vscode.TextDocument): vscode.TextEdit[] => {
31-
return formatDocument(document);
32-
}
33-
}));
34-
3532
context.subscriptions.push(vscode.commands.registerCommand('ZeroSyntax.stopLanguageServer', () => {
3633
if(languageServerRunning) {
34+
console.log(`Stopping LS...`)
3735
client.stop();
3836
languageServerRunning = false;
3937
}
4038
}));
4139

4240
context.subscriptions.push(vscode.commands.registerCommand('ZeroSyntax.startLanguageServer', () => {
4341
if(!languageServerRunning) {
42+
console.log(`Starting LS...`)
4443
client.start();
4544
languageServerRunning = true;
4645
}
@@ -59,7 +58,7 @@ export function activate(context: vscode.ExtensionContext) {
5958
run: { module: serverModule, transport: TransportKind.ipc },
6059
debug: {
6160
module: serverModule,
62-
transport: TransportKind.ipc,
61+
transport: TransportKind.ipc
6362
}
6463
};
6564

@@ -70,16 +69,13 @@ export function activate(context: vscode.ExtensionContext) {
7069
synchronize: {
7170
// Notify the server about file changes to '.clientrc files contained in the workspace
7271
fileEvents: vscode.workspace.createFileSystemWatcher('**/.clientrc')
73-
},
74-
initializationOptions: {
75-
forceAddmodule: ZSconfig.get<boolean>('forceAddModule', false)
7672
}
7773
};
7874

7975
// Create the language client and start the client.
8076
client = new LanguageClient(
81-
'languageServerExample',
82-
'Language Server Example',
77+
'ZeroSyntax',
78+
'Zero Hour Language Server',
8379
serverOptions,
8480
clientOptions
8581
);
@@ -90,64 +86,6 @@ export function activate(context: vscode.ExtensionContext) {
9086
}
9187
}
9288

93-
function formatDocument(document: vscode.TextDocument): vscode.TextEdit[] {
94-
const edits: vscode.TextEdit[] = [];
95-
let indentlevel = 0;
96-
97-
const indentSize = EditorConfig.get<number>('tabSize', 2); // Default to 2 if not set
98-
99-
let ObjectsRegex = ["^\\b([Oo]bject)\\s+[a-zA-Z0-9_]", "^\\b([Oo]bject[Rr]eskin)\\s+[a-zA-Z0-9_]", "^\\b([Aa]dd[Mm]odule)$", "^\\b([Rr]eplace[Mm]odule)", "^\\b([Dd]efault[Cc]ondition[Ss]tate)$", "^\\b([Uu]nit[Ss]pecific[Ss]ounds)$", "^\\b([Pp]rerequisites)$", "^\\b([Aa]rmor[Ss]et)$", "^\\b([Ww]eapon[Ss]et)$", "^\\b([Dd]raw)\\s*=", "^\\b([Cc]ondition[Ss]tate)\\s*=", "^\\b([Tt]ransition[Ss]tate)\\s*=", "^\\b([Bb]ody)\\s*=", "^\\b([Bb]ehavior)\\s*=", "^\\b([Cc]lient[Uu]pdate)\\s*=", "^\\b(Turret)$"];
100-
let SimpleClassesRegex = ["^\\b([Mm]apped[Ii]mage)\\s+[a-zA-Z0-9_]", "^\\b([Pp]article[Ss]ystem)\\s+[a-zA-Z0-9_]", "^\\b([Ll]ocomotor)\\s+[a-zA-Z0-9_]", "^\\b([Aa]udio[Ee]vent)\\s+[a-zA-Z0-9_]", "^\\b([Dd]ialog[Ee]vent)\\s+[a-zA-Z0-9_]", "^\\b([Aa]rmor)\\s+[a-zA-Z0-9_]", "^\\b([Cc]ommand[Ss]et)\\s+[a-zA-Z0-9_]", "^\\b([Cc]ommand[Bb]utton)\\s+[a-zA-Z0-9_]", "^\\b([Ww]eapon)\\s+[a-zA-Z0-9_]", "^\\b([Dd]amage[Ff][Xx])\\s+[A-Za-z0-9_]", "^\\b([Uu]pgrade)\\s+[a-zA-Z0-9_]", "^\\b([Pp]layer[Tt]emplate)\\s+[a-zA-Z0-9_]", "^\\b(Rank)\\s+[1-8]$", "^\\b([Ii]n[Gg]ame[Uu][Ii])$", "^\\b(A10StrikeRadiusCursor)$", "^\\b(AmbushRadiusCursor)$", "^\\b(ClusterMinesRadiusCursor)$", "^\\b(AnthraxBombRadiusCursor)$"];
101-
let OCLRegex = ["^\\b([Oo]bject[Cc]reation[Ll]ist)\\s+[a-zA-Z0-9_]", "^\\b([Cc]reate[Oo]bject)$", "^\\b([Cc]reate[Dd]ebris)$", "^\\b([Aa]pply[Rr]andom[Ff]orce)$", "^\\b([Dd]eliver[Pp]ayload)$", "^\\b([Dd]elivery[Dd]ecal)$", "^\\b([Ff]ire[ww]eapon)$", "^\\b([Aa]ttack)$"];
102-
let FXlistRegex = ["^\\b([Ff][Xx][Ll]ist)\\s+[a-zA-Z0-9_]", "^\\b([Pp]article[Ss]ystem)$", "^\\b([Ss]ound)$", "^\\b([Tt]errain[Ss]corch)$", "^\\b([Tt]racer)$", "^\\b([Ll]ight[Pp]ulse)$", "^\\b([Vv]iew[Ss]hake)$", "^\\b([Ff][Xx][Ll]ist[Aa]t[Bb]one[Pp]os)$"];
103-
104-
let EndRegex = ["^\\b([Ee]nd)$", "^\\b(END)$"]
105-
106-
for(let i = 0; i < document.lineCount; i++) {
107-
const lineText = document.lineAt(i).text;
108-
const trimmedLine = lineText.trim();
109-
110-
for(let block of EndRegex) {
111-
if(checkLineWithRegex(trimmedLine, block)) {
112-
indentlevel = Math.max(0, indentlevel - 1);
113-
}
114-
}
115-
116-
const indentedLine = " ".repeat(indentSize * indentlevel) + trimmedLine;
117-
const range = new vscode.Range(i, 0, i, lineText.length);
118-
edits.push(vscode.TextEdit.replace(range, indentedLine));
119-
120-
121-
for(let block of ObjectsRegex) {
122-
if(checkLineWithRegex(trimmedLine, block)) {
123-
indentlevel++;
124-
}
125-
}
126-
for(let block of SimpleClassesRegex) {
127-
if(checkLineWithRegex(trimmedLine, block)) {
128-
indentlevel++;
129-
}
130-
}
131-
for(let block of FXlistRegex) {
132-
if(checkLineWithRegex(trimmedLine, block)) {
133-
indentlevel++;
134-
}
135-
}
136-
for(let block of OCLRegex) {
137-
if(checkLineWithRegex(trimmedLine, block)) {
138-
indentlevel++;
139-
}
140-
}
141-
}
142-
143-
return edits;
144-
}
145-
146-
function checkLineWithRegex(line: string, regex: string) {
147-
let Regex = new RegExp(regex, "g");
148-
return Regex.test(line);
149-
}
150-
15189
vscode.workspace.onDidChangeConfiguration((e) => {
15290
if(e.affectsConfiguration('ZeroSyntax.serverStartupSetting')) {
15391
languageServerRunning = ZSconfig.get<boolean>('serverStartupSetting', false);

client/testFixture/completion.txt

Whitespace-only changes.

client/testFixture/diagnostics.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,21 +76,21 @@
7676
"default": false,
7777
"description": "Controls whether the server is started automatically after the extension is activated."
7878
},
79-
"languageServerExample.maxNumberOfProblems": {
79+
"ZeroSyntax.maxNumberOfProblems": {
8080
"scope": "resource",
8181
"type": "number",
8282
"default": 100,
8383
"description": "Controls the maximum number of problems produced by the server."
8484
},
85-
"languageServerExample.trace.server": {
85+
"ZeroSyntax.trace.server": {
8686
"scope": "window",
8787
"type": "string",
8888
"enum": [
8989
"off",
9090
"messages",
9191
"verbose"
9292
],
93-
"default": "off",
93+
"default": "verbose",
9494
"description": "Traces the communication between VS Code and the language server."
9595
}
9696
}
@@ -102,8 +102,8 @@
102102
"watch": "tsc -b -w",
103103
"lint": "eslint ./client/src ./server/src --ext .ts,.tsx",
104104
"postinstall": "cd client && npm install && cd ../server && npm install && cd ..",
105-
"test": " tsc -b && npm run antlr4ts",
106-
"antlr4ts": "antlr4ts -visitor ./server/src/antlr/MapIni.g4 -o ./server/src/antlr/.antlr"
105+
"test": "npm run antlr4ts && tsc -b",
106+
"antlr4ts": "antlr4ts -visitor ./server/src/utils/antlr/MapIni.g4 -o ./server/src/utils/antlr/"
107107
},
108108
"devDependencies": {
109109
"@types/mocha": "^9.1.0",

0 commit comments

Comments
 (0)