Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1642,6 +1642,6 @@ public static boolean isReadOnly(final IResource resource) {

private static boolean isNonBufferedFileHandlingEnabled() {
IPreferenceStore store = LanguageServerPlugin.getDefault().getPreferenceStore();
return store.getBoolean("org.eclipse.lsp4e.resourceFallback.enabled"); //$NON-NLS-1$
return store.getBoolean(LanguageServerWrapper.LSP4E_RESOURCE_FALLBACK_ENABLED_PREF_KEY);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -1663,6 +1663,8 @@ private static String getThrowableMessage(Throwable throwable) {
// Preference key: org.eclipse.lsp4e.resourceFallback.enabled (boolean). Default: false
private final boolean resourceFallbackEnabled;

public static final String LSP4E_RESOURCE_FALLBACK_ENABLED_PREF_KEY = "org.eclipse.lsp4e.resourceFallback.enabled"; //$NON-NLS-1$

/**
* Listener that translates workspace resource changes into LSP file-level
* events for files that are not backed by file buffers(Ex. Xtext Documents) and
Expand Down Expand Up @@ -1794,6 +1796,6 @@ private void handlePreChangeEvent(IResourceChangeEvent event) {

private boolean isNonBufferedFileListenerEnabled() {
IPreferenceStore store = LanguageServerPlugin.getDefault().getPreferenceStore();
return store.getBoolean("org.eclipse.lsp4e.resourceFallback.enabled"); //$NON-NLS-1$
return store.getBoolean(LSP4E_RESOURCE_FALLBACK_ENABLED_PREF_KEY);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.CheckboxTableViewer;
Expand All @@ -33,6 +35,8 @@
import org.eclipse.jface.viewers.ViewerComparator;
import org.eclipse.lsp4e.ContentTypeToLSPLaunchConfigEntry;
import org.eclipse.lsp4e.ContentTypeToLanguageServerDefinition;
import org.eclipse.lsp4e.LanguageServerPlugin;
import org.eclipse.lsp4e.LanguageServerWrapper;
import org.eclipse.lsp4e.LanguageServersRegistry;
import org.eclipse.lsp4e.enablement.EnablementTester;
import org.eclipse.swt.SWT;
Expand All @@ -56,6 +60,7 @@ public class LanguageServerPreferencePage extends PreferencePage implements IWor
private final LanguageServersRegistry registry = LanguageServersRegistry.getInstance();
private List<ContentTypeToLSPLaunchConfigEntry> workingCopy = lateNonNull();
private Button removeButton = lateNonNull();
private Button resourceFallbackCheckbox = lateNonNull();
private CheckboxTableViewer checkboxViewer = lateNonNull();
private TableViewer viewer = lateNonNull();
private final SelectionAdapter contentTypeLinkListener;
Expand Down Expand Up @@ -174,6 +179,15 @@ public void widgetSelected(SelectionEvent e) {
viewer.addSelectionChangedListener(event -> updateButtons());
viewer.setInput(workingCopy);
updateButtons();

// non-buffered file handling for Xtext like editors.
resourceFallbackCheckbox = new Button(res, SWT.CHECK);
GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).span(2, 1).applyTo(resourceFallbackCheckbox);
resourceFallbackCheckbox.setText(Messages.non_buffered_file_support);
IPreferenceStore store = LanguageServerPlugin.getDefault().getPreferenceStore();
boolean enabled = store.getBoolean(LanguageServerWrapper.LSP4E_RESOURCE_FALLBACK_ENABLED_PREF_KEY);
resourceFallbackCheckbox.setSelection(enabled);

return res;
}

Expand Down Expand Up @@ -296,6 +310,17 @@ public boolean performOk() {
this.registry.setAssociations(this.workingCopy);
final var enableDisableLSJob = new EnableDisableLSJob(changedDefinitions, getEditors());
enableDisableLSJob.schedule();

IPreferenceStore store = LanguageServerPlugin.getDefault().getPreferenceStore();
boolean oldValue = store.getBoolean(LanguageServerWrapper.LSP4E_RESOURCE_FALLBACK_ENABLED_PREF_KEY);
boolean newValue = resourceFallbackCheckbox.getSelection();
store.setValue(LanguageServerWrapper.LSP4E_RESOURCE_FALLBACK_ENABLED_PREF_KEY, newValue);
if (oldValue != newValue) {
var shell = getShell();
String title = Messages.PreferencesPage_nonBufferedFileSupportRestartTitle;
String msg = Messages.PreferencesPage_nonBufferedFileSupportWarningMessage;
MessageDialog.openWarning(shell, title, msg);
}
return super.performOk();
}

Expand Down
3 changes: 3 additions & 0 deletions org.eclipse.lsp4e/src/org/eclipse/lsp4e/ui/Messages.java
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,9 @@ public final class Messages extends NLS {
public static String TH_diplay_hint;
public static String TH_cannot_find_file;
public static String occurrences;
public static String non_buffered_file_support;
public static String PreferencesPage_nonBufferedFileSupportRestartTitle;
public static String PreferencesPage_nonBufferedFileSupportWarningMessage;

static {
NLS.initializeMessages("org.eclipse.lsp4e.ui.messages", Messages.class); //$NON-NLS-1$
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ PreferencesPage_restartWarning_restart=Restart Now
PreferencesPage_enableOnTypeFormatting=Enable on type formatting
NewContentTypeLSPLaunchDialog_associateContentType=Associate content-type...
NewContentTypeLSPLaunchDialog_withLSPLaunch=...with Language Server Launch Configuration
non_buffered_file_support=Enable non-buffered file handling (support for Xtext-like editors)
PreferencesPage_nonBufferedFileSupportRestartTitle=Non-buffered File Support Restart Required
PreferencesPage_nonBufferedFileSupportWarningMessage=Change in non-buffered file support may require a restart of all opened editors to take effect.

codeActions_description=Code Actions from language server.
codeActions_label=Code Actions
Expand Down
Loading