Skip to content

Commit 25b4367

Browse files
committed
cmd: restartServer
1 parent b5a9d58 commit 25b4367

File tree

2 files changed

+46
-25
lines changed

2 files changed

+46
-25
lines changed

package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,12 @@
1515
],
1616
"main": "./out/extension",
1717
"contributes": {
18-
"commands": [],
18+
"commands": [
19+
{
20+
"command": "emmy.restartServer",
21+
"title": "EmmyLua: Restart Lua Server"
22+
}
23+
],
1924
"languages": [
2025
{
2126
"id": "EmmyLua",

src/extension.ts

Lines changed: 40 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@ import * as notifications from "./notifications";
1313
var savedContext: vscode.ExtensionContext;
1414
var client: LanguageClient;
1515
var activeEditor: vscode.TextEditor;
16+
var progressBar: vscode.StatusBarItem;
1617

1718
export function activate(context: vscode.ExtensionContext) {
1819
console.log("emmy lua actived!");
1920
savedContext = context;
21+
progressBar = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left);
2022
startClient();
2123

2224
vscode.window.onDidChangeActiveTextEditor(editor => {
@@ -28,6 +30,8 @@ export function activate(context: vscode.ExtensionContext) {
2830
// Annotator.updateDecorations(activeEditor);
2931
// }
3032
// }, null, savedContext.subscriptions);
33+
34+
vscode.commands.registerCommand("emmy.restartServer", restartServer);
3135
}
3236

3337
// this method is called when your extension is deactivated
@@ -49,31 +53,33 @@ function startClient() {
4953
}
5054
};
5155

52-
// The server is a started as a separate app and listens on port 5007
53-
let connectionInfo = {
54-
port: 5007
55-
};
56-
let serverOptions: ServerOptions = () => {
57-
// Connect to language server via socket
58-
let socket = net.connect(connectionInfo);
59-
let result: StreamInfo = {
60-
writer: socket,
61-
reader: socket as NodeJS.ReadableStream
56+
let socketMode = false;
57+
var serverOptions: ServerOptions;
58+
if (socketMode) {
59+
// The server is a started as a separate app and listens on port 5007
60+
let connectionInfo = {
61+
port: 5007
6262
};
63-
socket.on("close", () => {
64-
console.log("client connect error!");
65-
});
66-
return Promise.resolve(result);
67-
};
68-
69-
// let cp = path.resolve(savedContext.extensionPath, "../language-server/build/libs", "language-server.jar");
70-
71-
// let exec: Executable = {
72-
// command: "java",
73-
// args: ["-cp", cp, "org.emmylua.vscode.MainKt"]
74-
// };
75-
let progressBar = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left);
76-
63+
serverOptions = () => {
64+
// Connect to language server via socket
65+
let socket = net.connect(connectionInfo);
66+
let result: StreamInfo = {
67+
writer: socket,
68+
reader: socket as NodeJS.ReadableStream
69+
};
70+
socket.on("close", () => {
71+
console.log("client connect error!");
72+
});
73+
return Promise.resolve(result);
74+
};
75+
} else {
76+
let cp = path.resolve(savedContext.extensionPath, "../EmmyLua-LanguageServer/EmmyLua-PSI/build/libs", "*");
77+
serverOptions = {
78+
command: "java",
79+
args: ["-cp", cp, "com.tang.vscode.vscode.MainKt"]
80+
};
81+
}
82+
7783
client = new LanguageClient("EmmyLua", "EmmyLua plugin for vscode.", serverOptions, clientOptions);
7884
client.onReady().then(() => {
7985
console.log("client ready");
@@ -101,4 +107,14 @@ function startClient() {
101107
decreaseIndentPattern: /end|else|elseif|until/,
102108
}
103109
});
110+
}
111+
112+
function restartServer() {
113+
if (!client) {
114+
startClient();
115+
} else {
116+
client.stop().then(() => {
117+
startClient();
118+
});
119+
}
104120
}

0 commit comments

Comments
 (0)