Skip to content

Commit 1e3d0a3

Browse files
authored
Merge pull request #55 from ViTeXFTW/development
Development
2 parents 706f41c + aec64c7 commit 1e3d0a3

File tree

4 files changed

+44
-11
lines changed

4 files changed

+44
-11
lines changed

client/src/extension.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ export function activate(context: vscode.ExtensionContext) {
3434
let languageServerRunning = ZSconfig.get<boolean>('serverStartupSetting', false); // Default to 2 if not set
3535
let displayAlphaWarning = ZSconfig.get<boolean>('displayAlphaWarning', true);
3636
let precompileTransitionKeys = ZSconfig.get<boolean>('precompileTransitionKeys', false);
37+
let doAutocompletions = ZSconfig.get<boolean>('enableAutocomplete', false);
3738

3839
context.subscriptions.push(vscode.commands.registerCommand('ZeroSyntax.stopLanguageServer', () => {
3940
if (languageServerRunning) {
@@ -76,7 +77,8 @@ export function activate(context: vscode.ExtensionContext) {
7677
},
7778
initializationOptions: {
7879
precompileTransitionKeys: precompileTransitionKeys,
79-
forceAddModule: forceAddModule
80+
forceAddModule: forceAddModule,
81+
doAutocompletions: doAutocompletions
8082
// SemanticTokenTypes,
8183
// SemanticTokenModifiers
8284
},
@@ -118,11 +120,24 @@ export function activate(context: vscode.ExtensionContext) {
118120
}
119121
}
120122

121-
vscode.workspace.onDidChangeConfiguration((e) => {
123+
vscode.workspace.onDidChangeConfiguration(async (e) => {
122124
if (e.affectsConfiguration('ZeroSyntax.serverStartupSetting')) {
123125
languageServerRunning = ZSconfig.get<boolean>('serverStartupSetting', false);
124126
toggleLanguageServer();
125127
}
128+
129+
if(e.affectsConfiguration('ZeroSyntax.enableAutocomplete')) {
130+
// Optionally, prompt the user before reloading
131+
const answer = await vscode.window.showInformationMessage(
132+
'Autocompletion setting changed. Do you want to reload the window to apply changes?',
133+
'Reload',
134+
'Cancel'
135+
);
136+
137+
if (answer === 'Reload') {
138+
await vscode.commands.executeCommand('workbench.action.reloadWindow');
139+
}
140+
}
126141
});
127142

128143
function toggleLanguageServer() {

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"displayName": "ZeroSyntax-Server",
44
"description": "Language server for Generals Zero Hour INI files",
55
"icon": "images/icon.png",
6-
"version": "0.1.9",
6+
"version": "0.1.9-hotfix1",
77
"publisher": "ViTeXFTW",
88
"author": {
99
"name": "ViTeXFTW",
@@ -72,6 +72,11 @@
7272
"type": "object",
7373
"title": "ZeroSyntax Settings",
7474
"properties": {
75+
"ZeroSyntax.enableAutocomplete": {
76+
"type": "boolean",
77+
"default": true,
78+
"description": "Constrols if the extension should provide autocompletion."
79+
},
7580
"ZeroSyntax.indentNumber": {
7681
"type": "number",
7782
"default": 2,

server/src/server.ts

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import { MapIniParser } from './utils/antlr4ng/MapIniParser';
3030
import { MapIniLexer } from './utils/antlr4ng/MapIniLexer';
3131
import { CharStream, CommonTokenStream, DefaultErrorStrategy } from 'antlr4ng';
3232
import { findContextAtPosition, findTokenIndex, generateCompletionItems, getContextSpecificCompletions } from './completion/helpers';
33+
import { read } from 'fs';
3334

3435
// Create a connection for the server, using Node's IPC as a transport.
3536
// Also include all preview / proposed LSP features.
@@ -51,8 +52,9 @@ const documents: TextDocuments<TextDocument> = new TextDocuments(TextDocument);
5152
let parser: Parser = new Parser();
5253
let currentParser: MapIniParser;
5354

54-
let forceAddModule: boolean = true
55-
let precompileTransitionKeys: boolean = false
55+
let forceAddModule: boolean = true;
56+
let precompileTransitionKeys: boolean = false;
57+
let doAutocompletions: boolean = false;
5658

5759
connection.onInitialize((params: InitializeParams) => {
5860
const capabilities = params.capabilities;
@@ -72,16 +74,25 @@ connection.onInitialize((params: InitializeParams) => {
7274
capabilities.textDocument.publishDiagnostics.relatedInformation
7375
);
7476

77+
doAutocompletions = options.doAutocompletions !== undefined ? options.doAutocompletions : false;
78+
7579
const result: InitializeResult = {
7680
capabilities: {
7781
textDocumentSync: TextDocumentSyncKind.Full,
7882
documentFormattingProvider: true,
7983
// Tell the client that this server supports code completion.
8084
// definitionProvider: false, //true
8185
// hoverProvider: false, //true
82-
completionProvider: {
83-
resolveProvider: false
84-
},
86+
87+
...(doAutocompletions && {
88+
completionProvider: {
89+
resolveProvider: false
90+
}
91+
})
92+
93+
// completionProvider: {
94+
// resolveProvider: false
95+
// }
8596
// semanticTokensProvider: {
8697
// legend: {
8798
// tokenTypes,
@@ -191,9 +202,11 @@ documents.onDidChangeContent((change) => {
191202
}, diagnosticParserDelay)
192203
});
193204

194-
195205
connection.onCompletion((_textDocumentPosition: TextDocumentPositionParams): CompletionItem[] => {
196206
// console.log(`Requesting completions!`)
207+
if (!doAutocompletions) {
208+
return [];
209+
}
197210

198211
// Retrieve the document
199212
const document = documents.get(_textDocumentPosition.textDocument.uri)!;

0 commit comments

Comments
 (0)