Skip to content

Commit 82dc0ec

Browse files
committed
Refresh saved java files to update compilation errors in the workspace. Fixes eclipse-jdtls#187
Signed-off-by: Fred Bricon <[email protected]>
1 parent 92e4fa0 commit 82dc0ec

File tree

2 files changed

+29
-5
lines changed

2 files changed

+29
-5
lines changed

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/handlers/DocumentLifeCycleHandler.java

+25-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
import org.eclipse.jdt.ls.core.internal.JavaClientConnection;
2828
import org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin;
2929
import org.eclipse.jdt.ls.core.internal.SharedASTProvider;
30+
import org.eclipse.jdt.ls.core.internal.managers.ProjectsManager;
31+
import org.eclipse.jdt.ls.core.internal.managers.ProjectsManager.CHANGE_TYPE;
3032
import org.eclipse.jdt.ls.core.internal.preferences.PreferenceManager;
3133
import org.eclipse.jdt.ls.core.internal.preferences.Preferences;
3234
import org.eclipse.jdt.ls.core.internal.preferences.Preferences.Severity;
@@ -49,6 +51,7 @@ public class DocumentLifeCycleHandler {
4951

5052
private JavaClientConnection connection;
5153
private PreferenceManager preferenceManager;
54+
private ProjectsManager projectsManager;
5255

5356

5457
void didClose(DidCloseTextDocumentParams params){
@@ -91,11 +94,22 @@ public void run(IProgressMonitor monitor) throws CoreException {
9194
}
9295

9396
void didSave(DidSaveTextDocumentParams params){
97+
try {
98+
ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
99+
@Override
100+
public void run(IProgressMonitor monitor) throws CoreException {
101+
handleSaved(params);
102+
}
103+
}, new NullProgressMonitor());
104+
} catch (CoreException e) {
105+
JavaLanguageServerPlugin.logException("Handle document save ", e);
106+
}
94107
}
95108

96-
public DocumentLifeCycleHandler(JavaClientConnection connection, PreferenceManager preferenceManager) {
109+
public DocumentLifeCycleHandler(JavaClientConnection connection, PreferenceManager preferenceManager, ProjectsManager projectsManager) {
97110
this.connection = connection;
98111
this.preferenceManager = preferenceManager;
112+
this.projectsManager = projectsManager;
99113
}
100114

101115
private void handleOpen(DidOpenTextDocumentParams params) {
@@ -192,4 +206,14 @@ private void handleClosed(DidCloseTextDocumentParams params) {
192206
} catch (CoreException e) {
193207
}
194208
}
209+
210+
private void handleSaved(DidSaveTextDocumentParams params) {
211+
JavaLanguageServerPlugin.logInfo("DocumentLifeCycleHandler.handleSaved");
212+
String uri = params.getTextDocument().getUri();
213+
ICompilationUnit unit = JDTUtils.resolveCompilationUnit(uri);
214+
if (unit != null && unit.isWorkingCopy()) {
215+
projectsManager.fileChanged(uri, CHANGE_TYPE.CHANGED);
216+
}
217+
}
218+
195219
}

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/handlers/JDTLanguageServer.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ public CompletableFuture<WorkspaceEdit> rename(RenameParams params) {
331331
@Override
332332
public void didOpen(DidOpenTextDocumentParams params) {
333333
logInfo(">> document/didOpen");
334-
DocumentLifeCycleHandler handler = new DocumentLifeCycleHandler(client, preferenceManager);
334+
DocumentLifeCycleHandler handler = new DocumentLifeCycleHandler(client, preferenceManager, pm);
335335
handler.didOpen(params);
336336
}
337337

@@ -341,7 +341,7 @@ public void didOpen(DidOpenTextDocumentParams params) {
341341
@Override
342342
public void didChange(DidChangeTextDocumentParams params) {
343343
logInfo(">> document/didChange");
344-
DocumentLifeCycleHandler handler = new DocumentLifeCycleHandler(client, preferenceManager);
344+
DocumentLifeCycleHandler handler = new DocumentLifeCycleHandler(client, preferenceManager, pm);
345345
handler.didChange(params);
346346
}
347347

@@ -351,7 +351,7 @@ public void didChange(DidChangeTextDocumentParams params) {
351351
@Override
352352
public void didClose(DidCloseTextDocumentParams params) {
353353
logInfo(">> document/didClose");
354-
DocumentLifeCycleHandler handler = new DocumentLifeCycleHandler(client, preferenceManager);
354+
DocumentLifeCycleHandler handler = new DocumentLifeCycleHandler(client, preferenceManager, pm);
355355
handler.didClose(params);
356356
}
357357

@@ -361,7 +361,7 @@ public void didClose(DidCloseTextDocumentParams params) {
361361
@Override
362362
public void didSave(DidSaveTextDocumentParams params) {
363363
logInfo(">> document/didSave");
364-
DocumentLifeCycleHandler handler = new DocumentLifeCycleHandler(client, preferenceManager);
364+
DocumentLifeCycleHandler handler = new DocumentLifeCycleHandler(client, preferenceManager, pm);
365365
handler.didSave(params);
366366
}
367367

0 commit comments

Comments
 (0)