Skip to content

Commit 0df1fb9

Browse files
authored
Merge pull request #24 from jpogran/configurationsettings
Configuration settings
2 parents 0c2756b + e245be5 commit 0df1fb9

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)