diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServerWrapper.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServerWrapper.java index 735d3e9dd..0a4e9cbd4 100644 --- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServerWrapper.java +++ b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServerWrapper.java @@ -1100,13 +1100,16 @@ public void registerCapability(RegistrationParams params) { } break; case "workspace/executeCommand": //$NON-NLS-1$ - final var gson = new Gson(); // TODO? retrieve the GSon used by LS - ExecuteCommandOptions executeCommandOptions = castNonNull(gson.fromJson((JsonObject) reg.getRegisterOptions(), - ExecuteCommandOptions.class)); - List newCommands = executeCommandOptions.getCommands(); - if (!newCommands.isEmpty()) { - addRegistration(reg, () -> unregisterCommands(newCommands)); - registerCommands(newCommands); + try { + ExecuteCommandOptions executeCommandOptions = castNonNull(new Gson().fromJson((JsonObject) reg.getRegisterOptions(), + ExecuteCommandOptions.class)); + List newCommands = executeCommandOptions.getCommands(); + if (!newCommands.isEmpty()) { + addRegistration(reg, () -> unregisterCommands(newCommands)); + registerCommands(newCommands); + } + } catch (final Exception ex) { + LanguageServerPlugin.logError(ex); } break; case "textDocument/formatting": //$NON-NLS-1$ @@ -1114,24 +1117,20 @@ public void registerCapability(RegistrationParams params) { .getDocumentFormattingProvider(); if (documentFormattingProvider == null || documentFormattingProvider.isLeft()) { serverCapabilities.setDocumentFormattingProvider(Boolean.TRUE); - addRegistration(reg, () -> serverCapabilities.setDocumentFormattingProvider(documentFormattingProvider)); } else { serverCapabilities.setDocumentFormattingProvider(documentFormattingProvider.getRight()); - addRegistration(reg, () -> serverCapabilities.setDocumentFormattingProvider(documentFormattingProvider)); } + addRegistration(reg, () -> serverCapabilities.setDocumentFormattingProvider(documentFormattingProvider)); break; case "textDocument/rangeFormatting": //$NON-NLS-1$ Either documentRangeFormattingProvider = serverCapabilities .getDocumentRangeFormattingProvider(); if (documentRangeFormattingProvider == null || documentRangeFormattingProvider.isLeft()) { serverCapabilities.setDocumentRangeFormattingProvider(Boolean.TRUE); - addRegistration(reg, () -> serverCapabilities - .setDocumentRangeFormattingProvider(documentRangeFormattingProvider)); } else { serverCapabilities.setDocumentRangeFormattingProvider(documentRangeFormattingProvider.getRight()); - addRegistration(reg, () -> serverCapabilities - .setDocumentRangeFormattingProvider(documentRangeFormattingProvider)); } + addRegistration(reg, () -> serverCapabilities.setDocumentRangeFormattingProvider(documentRangeFormattingProvider)); break; case "textDocument/codeAction": //$NON-NLS-1$ final Either beforeRegistration = serverCapabilities.getCodeActionProvider(); @@ -1160,11 +1159,10 @@ public void registerCapability(RegistrationParams params) { .getSelectionRangeProvider(); if (selectionRangeProvider == null || selectionRangeProvider.isLeft()) { serverCapabilities.setSelectionRangeProvider(Boolean.TRUE); - addRegistration(reg, () -> serverCapabilities.setSelectionRangeProvider(selectionRangeProvider)); } else { serverCapabilities.setSelectionRangeProvider(selectionRangeProvider.getRight()); - addRegistration(reg, () -> serverCapabilities.setSelectionRangeProvider(selectionRangeProvider)); } + addRegistration(reg, () -> serverCapabilities.setSelectionRangeProvider(selectionRangeProvider)); break; case "textDocument/typeHierarchy": //$NON-NLS-1$ final Either typeHierarchyBeforeRegistration = serverCapabilities.getTypeHierarchyProvider();