From 692c21f172d7d06546b37388b9eed13164b1d2d5 Mon Sep 17 00:00:00 2001 From: azerr Date: Wed, 1 Jul 2020 18:50:34 +0200 Subject: [PATCH] vscode-quarkus should not be a Java formatter Fixes https://github.com/redhat-developer/vscode-quarkus/issues/166 Signed-off-by: azerr --- .../MicroProfileCapabilityManager.java | 40 ++++++++++++++----- .../ServerCapabilitiesConstants.java | 11 ++++- 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/microprofile.ls/com.redhat.microprofile.ls/src/main/java/com/redhat/microprofile/settings/capabilities/MicroProfileCapabilityManager.java b/microprofile.ls/com.redhat.microprofile.ls/src/main/java/com/redhat/microprofile/settings/capabilities/MicroProfileCapabilityManager.java index de4aaf9d8..253f0ed65 100644 --- a/microprofile.ls/com.redhat.microprofile.ls/src/main/java/com/redhat/microprofile/settings/capabilities/MicroProfileCapabilityManager.java +++ b/microprofile.ls/com.redhat.microprofile.ls/src/main/java/com/redhat/microprofile/settings/capabilities/MicroProfileCapabilityManager.java @@ -1,16 +1,22 @@ -/******************************************************************************* - * Copyright (c) 2019 Red Hat Inc. and others. All rights reserved. This program - * and the accompanying materials which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v20.html +/** + * Copyright (c) 2019-2020 Red Hat, Inc. and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 * - * Contributors: Red Hat Inc. - initial API and implementation - *******************************************************************************/ + * Contributors: + * Red Hat Inc. - initial API and implementation + */ package com.redhat.microprofile.settings.capabilities; import static com.redhat.microprofile.settings.capabilities.ServerCapabilitiesConstants.CODE_ACTION_ID; import static com.redhat.microprofile.settings.capabilities.ServerCapabilitiesConstants.CODE_LENS_ID; import static com.redhat.microprofile.settings.capabilities.ServerCapabilitiesConstants.COMPLETION_ID; import static com.redhat.microprofile.settings.capabilities.ServerCapabilitiesConstants.DEFAULT_COMPLETION_OPTIONS; +import static com.redhat.microprofile.settings.capabilities.ServerCapabilitiesConstants.DEFAULT_FORMATTING_OPTIONS; import static com.redhat.microprofile.settings.capabilities.ServerCapabilitiesConstants.DEFINITION_ID; import static com.redhat.microprofile.settings.capabilities.ServerCapabilitiesConstants.DOCUMENT_SYMBOL_ID; import static com.redhat.microprofile.settings.capabilities.ServerCapabilitiesConstants.FORMATTING_ID; @@ -74,14 +80,30 @@ public void initializeCapabilities() { registerCapability(DEFINITION_ID, TEXT_DOCUMENT_DEFINITION); } if (this.getClientCapabilities().isFormattingDynamicRegistered()) { - registerCapability(FORMATTING_ID, TEXT_DOCUMENT_FORMATTING); + // The MP language server manages properties and Java files, but for formatting + // and range formatting + // feature, only properties file are supported. + // We need to inform to the client that only properties are supported for format + // feature with register options: + /** + *
+			 * "registerOptions": {
+					"documentSelector": [
+						{ "language": "microprofile-properties" },
+						{ "language": "quarkus-properties" }
+					]
+				}
+			 * 
+ */ + registerCapability(FORMATTING_ID, TEXT_DOCUMENT_FORMATTING, DEFAULT_FORMATTING_OPTIONS); } if (this.getClientCapabilities().isFormattingDynamicRegistered()) { - registerCapability(RANGE_FORMATTING_ID, TEXT_DOCUMENT_RANGE_FORMATTING); + registerCapability(RANGE_FORMATTING_ID, TEXT_DOCUMENT_RANGE_FORMATTING, DEFAULT_FORMATTING_OPTIONS); } } - public void setClientCapabilities(ClientCapabilities clientCapabilities, ExtendedClientCapabilities extendedClientCapabilities) { + public void setClientCapabilities(ClientCapabilities clientCapabilities, + ExtendedClientCapabilities extendedClientCapabilities) { this.clientWrapper = new ClientCapabilitiesWrapper(clientCapabilities, extendedClientCapabilities); } diff --git a/microprofile.ls/com.redhat.microprofile.ls/src/main/java/com/redhat/microprofile/settings/capabilities/ServerCapabilitiesConstants.java b/microprofile.ls/com.redhat.microprofile.ls/src/main/java/com/redhat/microprofile/settings/capabilities/ServerCapabilitiesConstants.java index eb785d06f..a8762ceaf 100644 --- a/microprofile.ls/com.redhat.microprofile.ls/src/main/java/com/redhat/microprofile/settings/capabilities/ServerCapabilitiesConstants.java +++ b/microprofile.ls/com.redhat.microprofile.ls/src/main/java/com/redhat/microprofile/settings/capabilities/ServerCapabilitiesConstants.java @@ -17,6 +17,8 @@ import org.eclipse.lsp4j.CodeLensOptions; import org.eclipse.lsp4j.CompletionOptions; +import org.eclipse.lsp4j.DocumentFilter; +import org.eclipse.lsp4j.TextDocumentRegistrationOptions; /** * Server Capabilities Constants @@ -44,8 +46,13 @@ private ServerCapabilitiesConstants() { public static final String CODE_ACTION_ID = UUID.randomUUID().toString(); public static final String CODE_LENS_ID = UUID.randomUUID().toString(); - public static final CompletionOptions DEFAULT_COMPLETION_OPTIONS = new CompletionOptions(false, Arrays.asList(".", - "%", "=" /* triggered characters for properties file */ , "@" /* triggered characters for java snippets annotation */)); + public static final CompletionOptions DEFAULT_COMPLETION_OPTIONS = new CompletionOptions(false, + Arrays.asList(".", "%", "=" /* triggered characters for properties file */ , + "@" /* triggered characters for java snippets annotation */)); public static final CodeLensOptions DEFAULT_CODELENS_OPTIONS = new CodeLensOptions(); + + public static final TextDocumentRegistrationOptions DEFAULT_FORMATTING_OPTIONS = new TextDocumentRegistrationOptions( + Arrays.asList(new DocumentFilter("microprofile-properties", null, null), + new DocumentFilter("quarkus-properties", null, null))); } \ No newline at end of file