Skip to content

Commit a4ca633

Browse files
committed
configuration: emmylua.java.home
1 parent ec53943 commit a4ca633

File tree

3 files changed

+59
-1
lines changed

3 files changed

+59
-1
lines changed

package.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,13 @@
4646
],
4747
"configuration": {
4848
"title": "EmmyLua",
49-
"properties": {}
49+
"properties": {
50+
"emmylua.java.home": {
51+
"type":["string", "null"],
52+
"default": null,
53+
"description": "Specifies the path to the java home"
54+
}
55+
}
5056
},
5157
"configurationDefaults": {
5258
"[EmmyLua]": {

src/extension.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,22 @@ import * as net from "net";
77
import { LanguageClient, LanguageClientOptions, ServerOptions, StreamInfo } from "vscode-languageclient";
88
import * as Annotator from "./annotator";
99
import * as notifications from "./notifications";
10+
import findJava from "./findJava";
1011

1112
var savedContext: vscode.ExtensionContext;
1213
var client: LanguageClient;
1314
var activeEditor: vscode.TextEditor;
1415
var progressBar: vscode.StatusBarItem;
16+
var javaExecutablePath: string;
1517

1618
export function activate(context: vscode.ExtensionContext) {
1719
console.log("emmy lua actived!");
1820
savedContext = context;
1921
progressBar = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left);
2022
startClient();
2123

24+
vscode.workspace.onDidChangeConfiguration(onDidChangeConfiguration);
25+
2226
vscode.window.onDidChangeActiveTextEditor(editor => {
2327
activeEditor = editor as vscode.TextEditor;
2428
}, null, savedContext.subscriptions);
@@ -37,6 +41,13 @@ export function deactivate() {
3741
stopServer();
3842
}
3943

44+
function onDidChangeConfiguration(event: vscode.ConfigurationChangeEvent) {
45+
let newJavaExecutablePath = findJava();
46+
if (newJavaExecutablePath !== javaExecutablePath) {
47+
console.log(newJavaExecutablePath);
48+
}
49+
}
50+
4051
function startClient() {
4152
let clientOptions: LanguageClientOptions = {
4253
documentSelector: [ { scheme: 'file', language: 'EmmyLua' } ],

src/findJava.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import * as path from "path";
2+
import * as vscode from "vscode";
3+
4+
function validateJava(javaPath: string): boolean {
5+
return true;
6+
}
7+
8+
export default function(): string|null {
9+
var executableFile: string = "java";
10+
if(process["platform"] === "win32") {
11+
executableFile += ".exe";
12+
}
13+
14+
var settingsPath = vscode.workspace.getConfiguration("emmylua").get("java.home");
15+
if (settingsPath) {
16+
let javaPath = path.join(<string>settingsPath, "bin", executableFile);
17+
if (validateJava(javaPath)) {
18+
return javaPath;
19+
}
20+
}
21+
22+
if("JAVA_HOME" in process.env) {
23+
let javaHome = <string> process.env.JAVA_HOME;
24+
let javaPath = path.join(javaHome, "bin", executableFile);
25+
return javaPath;
26+
}
27+
28+
if("PATH" in process.env) {
29+
let PATH = <string> process.env.PATH;
30+
let paths = PATH.split(path.delimiter);
31+
let pathCount = paths.length;
32+
for(let i = 0; i < pathCount; i++) {
33+
let javaPath = path.join(paths[i], executableFile);
34+
if(validateJava(javaPath)) {
35+
return javaPath;
36+
}
37+
}
38+
}
39+
40+
return null;
41+
}

0 commit comments

Comments
 (0)