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
4 changes: 1 addition & 3 deletions org.eclipse.lsp4e/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -145,9 +145,7 @@
<initializer
class="org.eclipse.lsp4e.operations.linkedediting.LSPLinkedEditingBase$PreferenceInitializer">
</initializer>
<initializer
class="org.eclipse.lsp4e.operations.rename.LSPInlineRenameLinkedMode$PreferenceInitializer">
</initializer>
<initializer class="org.eclipse.lsp4e.ui.LanguageServerPreferencePage$PreferenceInitializer"/>
</extension>

<extension point="org.eclipse.ui.genericeditor.foldingReconcilers">
Expand Down
3 changes: 2 additions & 1 deletion org.eclipse.lsp4e/src/org/eclipse/lsp4e/LSPEclipseUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@
import org.eclipse.lsp4e.refactoring.CreateFileChange;
import org.eclipse.lsp4e.refactoring.DeleteExternalFile;
import org.eclipse.lsp4e.refactoring.LSPTextChange;
import org.eclipse.lsp4e.ui.LanguageServerPreferencePage;
import org.eclipse.lsp4e.ui.Messages;
import org.eclipse.lsp4e.ui.UI;
import org.eclipse.lsp4j.CallHierarchyPrepareParams;
Expand Down Expand Up @@ -1642,6 +1643,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(LanguageServerPreferencePage.LSP4E_RESOURCE_FALLBACK_ENABLED_PREF_KEY);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@
import org.eclipse.lsp4e.internal.SupportedFeatures;
import org.eclipse.lsp4e.internal.files.FileSystemWatcherManager;
import org.eclipse.lsp4e.server.StreamConnectionProvider;
import org.eclipse.lsp4e.ui.LanguageServerPreferencePage;
import org.eclipse.lsp4e.ui.Messages;
import org.eclipse.lsp4j.ClientCapabilities;
import org.eclipse.lsp4j.ClientInfo;
Expand Down Expand Up @@ -1794,6 +1795,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(LanguageServerPreferencePage.LSP4E_RESOURCE_FALLBACK_ENABLED_PREF_KEY);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,13 @@
import java.util.ArrayList;
import java.util.List;

import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
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 +36,7 @@
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.LanguageServersRegistry;
import org.eclipse.lsp4e.enablement.EnablementTester;
import org.eclipse.swt.SWT;
Expand All @@ -56,11 +60,23 @@ 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;
private final List<ContentTypeToLanguageServerDefinition> changedDefinitions = new ArrayList<>();

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

public static final class PreferenceInitializer extends AbstractPreferenceInitializer {
@Override
public void initializeDefaultPreferences() {
final var store = LanguageServerPlugin.getDefault().getPreferenceStore();
store.setDefault(LSP4E_RESOURCE_FALLBACK_ENABLED_PREF_KEY, LSP4E_RESOURCE_FALLBACK_DEFAULT);
}
}

public LanguageServerPreferencePage() {
contentTypeLinkListener = new SelectionAdapter() {
@Override
Expand Down Expand Up @@ -174,6 +190,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(LSP4E_RESOURCE_FALLBACK_ENABLED_PREF_KEY);
resourceFallbackCheckbox.setSelection(enabled);
Comment thread
raghucssit marked this conversation as resolved.

return res;
}

Expand Down Expand Up @@ -296,6 +321,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(LSP4E_RESOURCE_FALLBACK_ENABLED_PREF_KEY);
boolean newValue = resourceFallbackCheckbox.getSelection();
store.setValue(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();
Comment thread
raghucssit marked this conversation as resolved.
}

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