-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathklab-ide-diff.diff
More file actions
66 lines (62 loc) · 3.07 KB
/
klab-ide-diff.diff
File metadata and controls
66 lines (62 loc) · 3.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
diff --git a/src/main/java/org/integratedmodelling/klab/ide/components/WorkspaceEditor.java b/src/main/java/org/integratedmodelling/klab/ide/components/WorkspaceEditor.java
index 4a0afae..29a33c5 100644
--- a/src/main/java/org/integratedmodelling/klab/ide/components/WorkspaceEditor.java
+++ b/src/main/java/org/integratedmodelling/klab/ide/components/WorkspaceEditor.java
@@ -245,8 +245,10 @@ public class WorkspaceEditor extends EditorPage<NavigableWorkspace, NavigableAss
Path workspaceRoot = Paths.get(System.getProperty("user.home") + "/git/klab-ide");
try {
KlabLspService.getInstance().startIfNeeded(workspaceRoot);
+ System.out.println("[WorkspaceEditor] LSP Server initialized");
} catch (Exception e) {
e.printStackTrace();
+ System.err.println("[WorkspaceEditor] Error starting LSP Server" + e);
}
String languageId =
@@ -267,24 +269,11 @@ public class WorkspaceEditor extends EditorPage<NavigableWorkspace, NavigableAss
ret.loadEditor(document.getSourceCode(), languageId, theme);
KlabLspService lsp = KlabLspService.getInstance();
+
System.out.println("[WorkspaceEditor] Opening LSP document " + documentUri);
lsp.openDocument(documentUri, languageId, document.getSourceCode());
- // 5. Hook editor content changes -> LSP didChange. Sometimes it gets invoked, sometimes not
- ret.setChangeListener(
- newText -> {
- try {
- // Send to LSP. This does not happen reliably.
- System.err.println("[WorkspaceEditor] Sending changes for " + documentUri);
- lsp.changeDocument(documentUri, newText);
- } catch (Exception e) {
- System.err.println("[WorkspaceEditor] Failed didChange for " + documentUri);
- e.printStackTrace();
- }
- });
-
DiagnosticsService diagnosticsService = DiagnosticsService.getInstance();
-
DiagnosticsService.Listener listener =
(uri, diagnostics) -> {
System.out.println(
@@ -315,12 +304,24 @@ public class WorkspaceEditor extends EditorPage<NavigableWorkspace, NavigableAss
ret.setDiagnostics(existing);
}
+ ret.setChangeListener(
+ newText -> {
+ try {
+ // Send to LSP. This does not happen reliably.
+ System.err.println("[WorkspaceEditor] Sending changes for " + documentUri);
+ lsp.changeDocument(documentUri, newText);
+ } catch (Exception e) {
+ System.err.println("[WorkspaceEditor] Failed didChange for " + documentUri);
+ e.printStackTrace();
+ }
+ });
// 5. Automatic cleanup: when editor node is detached from scene, remove listener
ret.sceneProperty()
.addListener(
(obs, oldScene, newScene) -> {
if (newScene == null) {
diagnosticsService.removeListener(listener);
+ lsp.closeDocument(documentUri);
}
});
return ret;