Skip to content

Commit 5ec9425

Browse files
committed
Fix #106: Don't start LanguageClient on non-Win OS
This change causes the LanguageClient class to not be created on non-Windows OSes (specifically OS X and Linux). Previously this had not caused a major issue for users on OS X but it eventually became apparent that VS Code's default word-based completion engine did not work for OS X users because we were still registering our completion provider even though it was not able to execute on that OS.
1 parent 7cd3f99 commit 5ec9425

File tree

1 file changed

+38
-33
lines changed

1 file changed

+38
-33
lines changed

src/main.ts

+38-33
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
'use strict';
66

7+
import os = require('os');
78
import path = require('path');
89
import vscode = require('vscode');
910
import settingsManager = require('./settings');
@@ -64,45 +65,49 @@ export function activate(context: vscode.ExtensionContext): void {
6465
}
6566
});
6667

67-
let args = [];
68-
if (settings.developer.editorServicesWaitForDebugger) {
69-
args.push('/waitForDebugger');
70-
}
71-
if (settings.developer.editorServicesLogLevel) {
72-
args.push('/logLevel:' + settings.developer.editorServicesLogLevel)
73-
}
74-
75-
let serverPath = resolveLanguageServerPath(settings);
76-
let serverOptions = {
77-
run: {
78-
command: serverPath,
79-
args: args
80-
},
81-
debug: {
82-
command: serverPath,
83-
args: ['/waitForDebugger']
68+
// The language server is only available on Windows
69+
if (os.platform() == "win32")
70+
{
71+
let args = [];
72+
if (settings.developer.editorServicesWaitForDebugger) {
73+
args.push('/waitForDebugger');
8474
}
85-
};
75+
if (settings.developer.editorServicesLogLevel) {
76+
args.push('/logLevel:' + settings.developer.editorServicesLogLevel)
77+
}
78+
79+
let serverPath = resolveLanguageServerPath(settings);
80+
let serverOptions = {
81+
run: {
82+
command: serverPath,
83+
args: args
84+
},
85+
debug: {
86+
command: serverPath,
87+
args: ['/waitForDebugger']
88+
}
89+
};
8690

87-
let clientOptions: LanguageClientOptions = {
88-
documentSelector: [PowerShellLanguageId],
89-
synchronize: {
90-
configurationSection: PowerShellLanguageId,
91-
//fileEvents: vscode.workspace.createFileSystemWatcher('**/.eslintrc')
91+
let clientOptions: LanguageClientOptions = {
92+
documentSelector: [PowerShellLanguageId],
93+
synchronize: {
94+
configurationSection: PowerShellLanguageId,
95+
//fileEvents: vscode.workspace.createFileSystemWatcher('**/.eslintrc')
96+
}
9297
}
93-
}
9498

95-
languageServerClient =
96-
new LanguageClient(
97-
'PowerShell Editor Services',
98-
serverOptions,
99-
clientOptions);
99+
languageServerClient =
100+
new LanguageClient(
101+
'PowerShell Editor Services',
102+
serverOptions,
103+
clientOptions);
100104

101-
languageServerClient.onReady().then(
102-
() => registerFeatures(),
103-
(reason) => vscode.window.showErrorMessage("Could not start language service: " + reason));
105+
languageServerClient.onReady().then(
106+
() => registerFeatures(),
107+
(reason) => vscode.window.showErrorMessage("Could not start language service: " + reason));
104108

105-
languageServerClient.start();
109+
languageServerClient.start();
110+
}
106111
}
107112

108113
function registerFeatures() {

0 commit comments

Comments
 (0)