Skip to content

Commit e245be5

Browse files
committed
Add language server configuration settings
This adds language server configuration settings, in the default location that can be overriden by the user. It also moves the tcp server function down to where the other functions are and cleans up the function a bit.
1 parent 0c2756b commit e245be5

File tree

2 files changed

+80
-38
lines changed

2 files changed

+80
-38
lines changed

client/package.json

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,44 @@
6868
"dark": "./media/PreviewOnRightPane_16x_dark.svg"
6969
}
7070
}
71-
]
71+
],
72+
"configurationDefaults": {
73+
"[puppet]":{
74+
"editor.tabSize": 2,
75+
"editor.insertSpaces":true
76+
}
77+
},
78+
"configuration": {
79+
"type": "object",
80+
"title": "puppet",
81+
"properties": {
82+
"puppet.languageserver.address": {
83+
"type": "string",
84+
"default": "127.0.0.1",
85+
"description": "The address of the VSCode languge sever to connect to"
86+
},
87+
"puppet.languageserver.port": {
88+
"type": "integer",
89+
"default": 8081,
90+
"description": "The port of the VSCode languge sever to connect to"
91+
},
92+
"puppet.languageserver.stopOnClientExit": {
93+
"type":"boolean",
94+
"default": true,
95+
"description": "Stop the VSCode languge sever when the client disconnects"
96+
},
97+
"puppet.languageserver.timeout": {
98+
"type": "integer",
99+
"default": 10,
100+
"description": "The timeout to connect to the VSCode languge sever"
101+
},
102+
"puppet.languageserver.preLoadPuppet": {
103+
"type":"boolean",
104+
"default": true,
105+
"description": "Initalize puppet on VSCode languge start"
106+
}
107+
}
108+
}
72109
},
73110
"scripts": {
74111
"vscode:prepublish": "tsc -p ./",

client/src/extension.ts

Lines changed: 42 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -15,50 +15,22 @@ import { puppetResourceCommand } from '../src/commands/puppetResourceCommand';
1515
import { puppetModuleCommand } from '../src/commands/puppetModuleCommand';
1616
import * as messages from '../src/messages';
1717

18+
const langID = 'puppet';
1819
var statusBarItem;
1920
var languageServerClient: LanguageClient = undefined;
2021

21-
var host = '127.0.0.1';
22-
var port = 8081;
23-
var title = `tcp lang server (host ${host} port ${port})`;
24-
var langID = 'puppet';
25-
26-
function startLangServerTCP(host: string, addr: number, documentSelector: string | string[]): vscode.Disposable {
27-
let serverOptions: ServerOptions = function () {
28-
return new Promise((resolve, reject) => {
29-
var client = new net.Socket();
30-
client.connect(addr, host, function () {
31-
resolve({ reader: client, writer: client });
32-
});
33-
client.on('error', function (err) {
34-
console.log(`[Puppet Lang Server Client] #{err}`);
35-
})
36-
});
37-
}
38-
39-
let clientOptions: LanguageClientOptions = {
40-
documentSelector: [langID],
41-
}
42-
43-
languageServerClient = new LanguageClient(title, serverOptions, clientOptions)
44-
languageServerClient.onReady().then(() => {
45-
languageServerClient.sendRequest(messages.PuppetVersionRequest.type).then((versionDetails) => {
46-
statusBarItem.color = "#affc74";
47-
statusBarItem.text = "$(terminal) " + versionDetails.puppetVersion;
48-
});
49-
}, (reason) => {
50-
this.setSessionFailure("Could not start language service: ", reason);
51-
});
52-
53-
return languageServerClient.start();
54-
}
55-
5622
export function activate(context: vscode.ExtensionContext) {
57-
console.log('Congratulations, your extension "vscode-puppet" is now active!');
23+
let config = vscode.workspace.getConfiguration('puppet');
24+
25+
var host = config['languageserver']['address']; // '127.0.0.1';
26+
var port = config['languageserver']['port']; // 8081;
27+
var stopOnClientExit = config['languageserver']['stopOnClientExit']; // true;
28+
var timeout = config['languageserver']['timeout']; // 8081;
29+
var preLoadPuppet = config['languageserver']['preLoadPuppet']; // true;
5830

5931
createStatusBarItem();
6032

61-
context.subscriptions.push(startLangServerTCP(host, port, [langID]));
33+
context.subscriptions.push(startLangServerTCP(host, port, langID, [langID]));
6234

6335
let resourceCommand = new puppetResourceCommand(languageServerClient);
6436
context.subscriptions.push(resourceCommand);
@@ -86,12 +58,45 @@ export function activate(context: vscode.ExtensionContext) {
8658
contentProvider.update(uri);
8759
}
8860
}));
61+
62+
console.log('Congratulations, your extension "vscode-puppet" is now active!');
8963
}
9064

9165
// this method is called when your extension is deactivated
9266
export function deactivate() {
9367
}
9468

69+
function startLangServerTCP(host: string, port: number, langID: string, documentSelector: string | string[]): vscode.Disposable {
70+
let serverOptions: ServerOptions = function () {
71+
return new Promise((resolve, reject) => {
72+
var client = new net.Socket();
73+
client.connect(port, host, function () {
74+
resolve({ reader: client, writer: client });
75+
});
76+
client.on('error', function (err) {
77+
console.log(`[Puppet Lang Server Client] ` + err);
78+
})
79+
});
80+
}
81+
82+
let clientOptions: LanguageClientOptions = {
83+
documentSelector: [langID],
84+
}
85+
86+
var title = `tcp lang server (host ${host} port ${port})`;
87+
languageServerClient = new LanguageClient(title, serverOptions, clientOptions)
88+
languageServerClient.onReady().then(() => {
89+
languageServerClient.sendRequest(messages.PuppetVersionRequest.type).then((versionDetails) => {
90+
statusBarItem.color = "#affc74";
91+
statusBarItem.text = "$(terminal) " + versionDetails.puppetVersion;
92+
});
93+
}, (reason) => {
94+
this.setSessionFailure("Could not start language service: ", reason);
95+
});
96+
97+
return languageServerClient.start();
98+
}
99+
95100
// Status Bar handler
96101
export function createStatusBarItem() {
97102
if (statusBarItem === undefined) {

0 commit comments

Comments
 (0)