2020import org .eclipse .jface .action .Action ;
2121import org .eclipse .jface .dialogs .IDialogConstants ;
2222import org .eclipse .jface .layout .GridDataFactory ;
23+ import org .eclipse .jface .preference .IPreferenceStore ;
2324import org .eclipse .jface .preference .PreferencePage ;
2425import org .eclipse .jface .viewers .ArrayContentProvider ;
2526import org .eclipse .jface .viewers .CheckboxTableViewer ;
3334import org .eclipse .jface .viewers .ViewerComparator ;
3435import org .eclipse .lsp4e .ContentTypeToLSPLaunchConfigEntry ;
3536import org .eclipse .lsp4e .ContentTypeToLanguageServerDefinition ;
37+ import org .eclipse .lsp4e .LanguageServerPlugin ;
3638import org .eclipse .lsp4e .LanguageServersRegistry ;
3739import org .eclipse .lsp4e .enablement .EnablementTester ;
3840import org .eclipse .swt .SWT ;
@@ -56,6 +58,7 @@ public class LanguageServerPreferencePage extends PreferencePage implements IWor
5658 private final LanguageServersRegistry registry = LanguageServersRegistry .getInstance ();
5759 private List <ContentTypeToLSPLaunchConfigEntry > workingCopy = lateNonNull ();
5860 private Button removeButton = lateNonNull ();
61+ private Button resourceFallbackCheckbox = lateNonNull ();
5962 private CheckboxTableViewer checkboxViewer = lateNonNull ();
6063 private TableViewer viewer = lateNonNull ();
6164 private final SelectionAdapter contentTypeLinkListener ;
@@ -174,6 +177,15 @@ public void widgetSelected(SelectionEvent e) {
174177 viewer .addSelectionChangedListener (event -> updateButtons ());
175178 viewer .setInput (workingCopy );
176179 updateButtons ();
180+
181+ // non-buffered file handling for Xtext like editors.
182+ resourceFallbackCheckbox = new Button (res , SWT .CHECK );
183+ GridDataFactory .swtDefaults ().align (SWT .FILL , SWT .CENTER ).span (2 , 1 ).applyTo (resourceFallbackCheckbox );
184+ resourceFallbackCheckbox .setText (Messages .non_buffered_file_support );
185+ IPreferenceStore store = LanguageServerPlugin .getDefault ().getPreferenceStore ();
186+ boolean enabled = store .getBoolean ("org.eclipse.lsp4e.resourceFallback.enabled" ); //$NON-NLS-1$
187+ resourceFallbackCheckbox .setSelection (enabled );
188+
177189 return res ;
178190 }
179191
@@ -296,6 +308,9 @@ public boolean performOk() {
296308 this .registry .setAssociations (this .workingCopy );
297309 final var enableDisableLSJob = new EnableDisableLSJob (changedDefinitions , getEditors ());
298310 enableDisableLSJob .schedule ();
311+
312+ IPreferenceStore store = LanguageServerPlugin .getDefault ().getPreferenceStore ();
313+ store .setValue ("org.eclipse.lsp4e.resourceFallback.enabled" , resourceFallbackCheckbox .getSelection ()); //$NON-NLS-1$
299314 return super .performOk ();
300315 }
301316
0 commit comments