diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/CPPLanguageServerPreferencePage.java b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/CPPLanguageServerPreferencePage.java index 0c1258f4254..f3c29ea1fc8 100644 --- a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/CPPLanguageServerPreferencePage.java +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/CPPLanguageServerPreferencePage.java @@ -8,7 +8,10 @@ package org.eclipse.lsp4e.cpp.language; +import java.io.File; + import org.eclipse.jface.preference.*; +import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.ui.IWorkbenchPreferencePage; import org.eclipse.ui.IWorkbench; @@ -46,6 +49,16 @@ public class CPPLanguageServerPreferencePage extends FieldEditorPreferencePage i addField(serverOptions); } + @Override + public void propertyChange(PropertyChangeEvent event) { + if(event.getSource() == serverChoice && event.getProperty() == FieldEditor.VALUE) { + File changedLSLocation = CPPStreamConnectionProvider.getDefaultLSLocation((String) event.getNewValue()); + if(changedLSLocation != null) { + serverPath.setStringValue(changedLSLocation.getAbsolutePath()); + } + } + } + @Override public void init(IWorkbench workbench) { } diff --git a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/CPPStreamConnectionProvider.java b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/CPPStreamConnectionProvider.java index ba773e3a539..d2b8d110c7c 100644 --- a/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/CPPStreamConnectionProvider.java +++ b/lsp4e-cpp/org.eclipse.lsp4e.cpp.language/src/org/eclipse/lsp4e/cpp/language/CPPStreamConnectionProvider.java @@ -124,7 +124,7 @@ public class CPPStreamConnectionProvider extends ProcessStreamConnectionProvider return null; } - private static File getDefaultLSLocation(String selectedLanguageServer) { + static File getDefaultLSLocation(String selectedLanguageServer) { String res = null; String[] command = new String[] {"/bin/bash", "-c", "which " + selectedLanguageServer}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ if (Platform.getOS().equals(Platform.OS_WIN32)) {