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..d1f7c5048 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,29 @@ 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": [
+						{ "pattern": "**//*.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..7060c2f3c 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,12 @@ 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(null, null, "**/*.properties"))); } \ No newline at end of file