diff --git a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/LanguageServerExtension.java b/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/LanguageServerExtension.java index 0994da899f..4460a20b9e 100644 --- a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/LanguageServerExtension.java +++ b/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/LanguageServerExtension.java @@ -30,6 +30,7 @@ import org.eclipse.che.ide.api.extension.Extension; import org.eclipse.che.ide.api.keybinding.KeyBindingAgent; import org.eclipse.che.ide.api.keybinding.KeyBuilder; import org.eclipse.che.ide.dto.DtoFactory; +import org.eclipse.che.ide.resource.Path; import org.eclipse.che.ide.util.browser.UserAgent; import org.eclipse.che.ide.util.input.KeyCodeMap; import org.eclipse.che.plugin.languageserver.ide.editor.LanguageServerEditorConfiguration; @@ -86,13 +87,18 @@ public class LanguageServerExtension { @Inject protected void registerFileEventHandler(final EventBus eventBus, final TextDocumentServiceClient serviceClient, - final DtoFactory dtoFactory) { + final DtoFactory dtoFactory, + final LanguageServerFileTypeRegister fileTypeRegister) { eventBus.addHandler(FileEvent.TYPE, new FileEvent.FileEventHandler() { @Override public void onFileOperation(final FileEvent event) { + Path location = event.getFile().getLocation(); + if (location.getFileExtension() == null || !fileTypeRegister.hasLSForExtension(location.getFileExtension())) { + return; + } final TextDocumentIdentifierDTO documentId = dtoFactory.createDto(TextDocumentIdentifierDTO.class); - documentId.setUri(event.getFile().getPath()); + documentId.setUri(location.toString()); switch (event.getOperationType()) { case OPEN: onOpen(event, dtoFactory, serviceClient); diff --git a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/LanguageServerFileTypeRegister.java b/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/LanguageServerFileTypeRegister.java index 2ae697a180..bba957a752 100644 --- a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/LanguageServerFileTypeRegister.java +++ b/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/java/org/eclipse/che/plugin/languageserver/ide/LanguageServerFileTypeRegister.java @@ -32,7 +32,9 @@ import org.eclipse.che.plugin.languageserver.ide.editor.LanguageServerEditorProv import org.eclipse.che.plugin.languageserver.ide.hover.HoverProvider; import org.eclipse.che.plugin.languageserver.ide.service.LanguageServerRegistryServiceClient; +import java.util.HashSet; import java.util.List; +import java.util.Set; import static com.google.common.collect.Lists.newArrayList; @@ -49,8 +51,10 @@ public class LanguageServerFileTypeRegister implements WsAgentComponent { private final EditorRegistry editorRegistry; private final OrionContentTypeRegistrant contentTypeRegistrant; private final OrionHoverRegistrant orionHoverRegistrant; - private final LanguageServerEditorProvider editorProvider; - private final HoverProvider hoverProvider; + private final LanguageServerEditorProvider editorProvider; + private final HoverProvider hoverProvider; + + private final Set lsExtensions = new HashSet<>(); @Inject public LanguageServerFileTypeRegister(LanguageServerRegistryServiceClient serverLanguageRegistry, @@ -85,6 +89,7 @@ public class LanguageServerFileTypeRegister implements WsAgentComponent { final FileType fileType = new FileType(resources.file(), ext); fileTypeRegistry.registerFileType(fileType); editorRegistry.registerDefaultEditor(fileType, editorProvider); + lsExtensions.add(ext); } List mimeTypes = lang.getMimeTypes(); if (mimeTypes.isEmpty()) { @@ -119,4 +124,8 @@ public class LanguageServerFileTypeRegister implements WsAgentComponent { } }); } + + public boolean hasLSForExtension(String ext) { + return lsExtensions.contains(ext); + } } diff --git a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/resources/org/eclipse/che/plugin/languageserver/LanguageServer.gwt.xml b/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/resources/org/eclipse/che/plugin/languageserver/LanguageServer.gwt.xml index 06e2e9c0a5..33d54915a3 100644 --- a/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/resources/org/eclipse/che/plugin/languageserver/LanguageServer.gwt.xml +++ b/plugins/plugin-languageserver/che-plugin-languageserver-ide/src/main/resources/org/eclipse/che/plugin/languageserver/LanguageServer.gwt.xml @@ -25,6 +25,7 @@ +