Skip to content

Commit

Permalink
CSS formatter with preferences
Browse files Browse the repository at this point in the history
  • Loading branch information
azerr committed Nov 15, 2022
1 parent 6f723aa commit 81b0969
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 31 deletions.
21 changes: 9 additions & 12 deletions org.eclipse.wildwebdeveloper/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -191,22 +191,25 @@
point="org.eclipse.lsp4e.languageServer">
<server
class="org.eclipse.wildwebdeveloper.css.CSSLanguageServer"
clientImpl="org.eclipse.wildwebdeveloper.css.CSSLanguageClient"
languageClientConfigurationProvider="org.eclipse.wildwebdeveloper.css.CSSLanguageClientConfigurationProvider"
id="org.eclipse.wildwebdeveloper.css"
label="CSS/LESS/SCSS Language Server (VSCode)"
singleton="true">
</server>
<contentTypeMapping
contentType="org.eclipse.wildwebdeveloper.css"
id="org.eclipse.wildwebdeveloper.css">
id="org.eclipse.wildwebdeveloper.css"
languageId="css">
</contentTypeMapping>
<contentTypeMapping
contentType="org.eclipse.wildwebdeveloper.scss"
id="org.eclipse.wildwebdeveloper.css">
id="org.eclipse.wildwebdeveloper.css"
languageId="scss">
</contentTypeMapping>
<contentTypeMapping
contentType="org.eclipse.wildwebdeveloper.less"
id="org.eclipse.wildwebdeveloper.css">
id="org.eclipse.wildwebdeveloper.css"
languageId="less">
</contentTypeMapping>
</extension>

Expand Down Expand Up @@ -280,14 +283,12 @@
id="org.eclipse.wildwebdeveloper.css.ui.preferences.CSSCompletionPreferencePage"
name="%CSSCompletionPreferencePage.name">
</page>
<!-- Once https://github.com/microsoft/vscode/issues/164772 will be fixed, please uncomment this CSS format preference page to benefit with CSS formatting
<page
category="org.eclipse.wildwebdeveloper.css.ui.preferences.CSSPreferencePage"
class="org.eclipse.wildwebdeveloper.css.ui.preferences.CSSFormatPreferencePage"
id="org.eclipse.wildwebdeveloper.css.ui.preferences.CSSFormatPreferencePage"
name="%CSSFormatPreferencePage.name">
</page>
-->
</page>
<page
category="org.eclipse.wildwebdeveloper.css.ui.preferences.CSSPreferencePage"
class="org.eclipse.wildwebdeveloper.css.ui.preferences.CSSHoverPreferencePage"
Expand Down Expand Up @@ -316,14 +317,12 @@
id="org.eclipse.wildwebdeveloper.css.ui.preferences.less.LESSCompletionPreferencePage"
name="%LESSCompletionPreferencePage.name">
</page>
<!-- Once https://github.com/microsoft/vscode/issues/164772 will be fixed, please uncomment this LESS format preference page to benefit with LESS formatting
<page
category="org.eclipse.wildwebdeveloper.css.ui.preferences.less.LESSPreferencePage"
class="org.eclipse.wildwebdeveloper.css.ui.preferences.less.LESSFormatPreferencePage"
id="org.eclipse.wildwebdeveloper.css.ui.preferences.less.LESSFormatPreferencePage"
name="%LESSFormatPreferencePage.name">
</page>
-->
<page
category="org.eclipse.wildwebdeveloper.css.ui.preferences.less.LESSPreferencePage"
class="org.eclipse.wildwebdeveloper.css.ui.preferences.less.LESSHoverPreferencePage"
Expand Down Expand Up @@ -352,14 +351,12 @@
id="org.eclipse.wildwebdeveloper.css.ui.preferences.scss.SCSSCompletionPreferencePage"
name="%SCSSCompletionPreferencePage.name">
</page>
<!-- Once https://github.com/microsoft/vscode/issues/164772 will be fixed, please uncomment this SCSS format preference page to benefit with SCSS formatting
<page
<page
category="org.eclipse.wildwebdeveloper.css.ui.preferences.scss.SCSSPreferencePage"
class="org.eclipse.wildwebdeveloper.css.ui.preferences.scss.SCSSFormatPreferencePage"
id="org.eclipse.wildwebdeveloper.css.ui.preferences.scss.SCSSFormatPreferencePage"
name="%SCSSFormatPreferencePage.name">
</page>
-->
<page
category="org.eclipse.wildwebdeveloper.css.ui.preferences.scss.SCSSPreferencePage"
class="org.eclipse.wildwebdeveloper.css.ui.preferences.scss.SCSSHoverPreferencePage"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,3 @@
/*******************************************************************************
* Copyright (c) 2022 Red Hat Inc. and others.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Angelo ZERR (Red Hat Inc.) - initial implementation
*******************************************************************************/
package org.eclipse.wildwebdeveloper.css;

import static org.eclipse.wildwebdeveloper.css.ui.preferences.CSSPreferenceServerConstants.isMatchCssSection;
Expand All @@ -18,21 +6,21 @@

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.CompletableFuture;

import org.eclipse.lsp4e.LanguageClientImpl;
import org.eclipse.lsp4e.LanguageClientConfigurationProvider;
import org.eclipse.lsp4j.ConfigurationItem;
import org.eclipse.lsp4j.ConfigurationParams;
import org.eclipse.lsp4j.FormattingOptions;
import org.eclipse.lsp4j.TextDocumentIdentifier;
import org.eclipse.wildwebdeveloper.css.ui.preferences.CSSPreferenceServerConstants;
import org.eclipse.wildwebdeveloper.css.ui.preferences.less.LESSPreferenceServerConstants;
import org.eclipse.wildwebdeveloper.css.ui.preferences.scss.SCSSPreferenceServerConstants;
import org.eclipse.wildwebdeveloper.ui.preferences.Settings;

/**
* CSS language client implementation.
*
*/
public class CSSLanguageClient extends LanguageClientImpl {
public class CSSLanguageClientConfigurationProvider implements LanguageClientConfigurationProvider {

@Override
public CompletableFuture<List<Object>> configuration(ConfigurationParams params) {
Expand Down Expand Up @@ -64,4 +52,38 @@ public CompletableFuture<List<Object>> configuration(ConfigurationParams params)
return settings;
});
}

@Override
public void collectFormatting(FormattingOptions formattingOptions, TextDocumentIdentifier identifier,
String languageId) {
Settings settings = getSettings(languageId);
if (settings != null) {
Map<String, Object> result = (Map<String, Object>) settings.findSettings(languageId, "format");
if (result != null) {
for (Entry<String, Object> entry : result.entrySet()) {
if (entry.getValue() instanceof String) {
formattingOptions.putString(entry.getKey(), (String) entry.getValue());
} else if (entry.getValue() instanceof Boolean) {
formattingOptions.putBoolean(entry.getKey(), (Boolean) entry.getValue());
} else if (entry.getValue() instanceof Number) {
formattingOptions.putNumber(entry.getKey(), (Number) entry.getValue());
}
}
}
}
}

private static Settings getSettings(String languageId) {
if (isMatchCssSection(languageId)) {
return CSSPreferenceServerConstants.getGlobalSettings();
}
if (isMatchLessSection(languageId)) {
return LESSPreferenceServerConstants.getGlobalSettings();
}
if (isMatchScssSection(languageId)) {
return SCSSPreferenceServerConstants.getGlobalSettings();
}
return null;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ private static void fillSetting(String preferenceId, Object preferenceValue, Map
result.put(path, preferenceValue);
}

public Object findSettings(String[] sections) {
public Object findSettings(String... sections) {
Map<String, Object> current = this;
for (String section : sections) {
Object result = current.get(section);
Expand Down

0 comments on commit 81b0969

Please sign in to comment.