Skip to content

Commit 8674247

Browse files
committed
Implement lsp4e configuration provider
1 parent 33ab7ea commit 8674247

File tree

3 files changed

+69
-36
lines changed

3 files changed

+69
-36
lines changed

org.eclipse.wildwebdeveloper/plugin.xml

+26-2
Original file line numberDiff line numberDiff line change
@@ -550,14 +550,38 @@
550550
priority="low">
551551
</content-type>
552552
</extension>
553-
553+
<extension
554+
point="org.eclipse.lsp4e.languageServerConfiguration">
555+
<provider class="org.eclipse.wildwebdeveloper.jsts.ui.preferences.javascript.JSTSConfigurationProvider">
556+
557+
</provider>
558+
559+
<alias source="javascript.inlayHints.includeInlayEnumMemberValueHints" target="javascript.inlayHints.enumMemberValues.enabled" />
560+
<alias source="javascript.inlayHints.includeInlayParameterNameHints" target="javascript.inlayHints.parameterNames.enabled" />
561+
<alias source="javascript.inlayHints.includeInlayParameterNameHintsWhenArgumentMatchesName" target="javascript.inlayHints.parameterNames.suppressWhenArgumentMatchesName" />
562+
<alias source="javascript.inlayHints.includeInlayFunctionParameterTypeHints" target="javascript.inlayHints.parameterTypes.enabled" />
563+
<alias source="javascript.inlayHints.includeInlayVariableTypeHints" target="javascript.inlayHints.variableTypes.enabled" />
564+
<alias source="javascript.inlayHints.includeInlayVariableTypeHintsWhenTypeMatchesName" target="javascript.inlayHints.variableTypes.suppressWhenTypeMatchesName" />
565+
<alias source="javascript.inlayHints.includeInlayPropertyDeclarationTypeHints" target="javascript.inlayHints.propertyDeclarationTypes.enabled" />
566+
<alias source="javascript.inlayHints.includeInlayFunctionLikeReturnTypeHints" target="javascript.inlayHints.functionLikeReturnTypes.enabled" />
567+
568+
<alias source="typescript.inlayHints.includeInlayEnumMemberValueHints" target="typescript.inlayHints.enumMemberValues.enabled" />
569+
<alias source="typescript.inlayHints.includeInlayParameterNameHints" target="typescript.inlayHints.parameterNames.enabled" />
570+
<alias source="typescript.inlayHints.includeInlayParameterNameHintsWhenArgumentMatchesName" target="typescript.inlayHints.parameterNames.suppressWhenArgumentMatchesName" />
571+
<alias source="typescript.inlayHints.includeInlayFunctionParameterTypeHints" target="typescript.inlayHints.parameterTypes.enabled" />
572+
<alias source="typescript.inlayHints.includeInlayVariableTypeHints" target="typescript.inlayHints.variableTypes.enabled" />
573+
<alias source="typescript.inlayHints.includeInlayVariableTypeHintsWhenTypeMatchesName" target="typescript.inlayHints.variableTypes.suppressWhenTypeMatchesName" />
574+
<alias source="typescript.inlayHints.includeInlayPropertyDeclarationTypeHints" target="typescript.inlayHints.propertyDeclarationTypes.enabled" />
575+
<alias source="typescript.inlayHints.includeInlayFunctionLikeReturnTypeHints" target="typescript.inlayHints.functionLikeReturnTypes.enabled" />
576+
</extension>
554577
<extension
555578
point="org.eclipse.lsp4e.languageServer">
556579
<server
557580
class="org.eclipse.wildwebdeveloper.jsts.JSTSLanguageServer"
558581
clientImpl="org.eclipse.wildwebdeveloper.jsts.JSTSLanguageClientImpl"
559582
id="org.eclipse.wildwebdeveloper.jsts"
560-
label="JavaScript-TypeScript Language Server">
583+
label="JavaScript-TypeScript Language Server"
584+
watchConfiguration="javascript,typescript">
561585
</server>
562586
<contentTypeMapping
563587
languageId="javascript"

org.eclipse.wildwebdeveloper/src/org/eclipse/wildwebdeveloper/jsts/JSTSLanguageServer.java

+3-34
Original file line numberDiff line numberDiff line change
@@ -29,27 +29,16 @@
2929
import org.eclipse.core.runtime.FileLocator;
3030
import org.eclipse.core.runtime.IStatus;
3131
import org.eclipse.core.runtime.Status;
32-
import org.eclipse.lsp4j.DidChangeConfigurationParams;
33-
import org.eclipse.lsp4j.InitializeResult;
34-
import org.eclipse.lsp4j.jsonrpc.messages.Message;
35-
import org.eclipse.lsp4j.jsonrpc.messages.ResponseMessage;
36-
import org.eclipse.lsp4j.services.LanguageServer;
32+
import org.eclipse.lsp4e.server.ProcessStreamConnectionProvider;
3733
import org.eclipse.wildwebdeveloper.Activator;
3834
import org.eclipse.wildwebdeveloper.embedder.node.NodeJSManager;
39-
import org.eclipse.wildwebdeveloper.jsts.ui.preferences.javascript.JavaScriptPreferenceServerConstants;
40-
import org.eclipse.wildwebdeveloper.jsts.ui.preferences.typescript.TypeScriptPreferenceServerConstants;
41-
import org.eclipse.wildwebdeveloper.ui.preferences.ProcessStreamConnectionProviderWithPreference;
4235

43-
public class JSTSLanguageServer extends ProcessStreamConnectionProviderWithPreference {
44-
45-
private static final String JSTS_LANGUAGE_SERVER_ID = "org.eclipse.wildwebdeveloper.jsts";
46-
47-
private static final String[] SUPPORTED_SECTIONS = { "typescript", "javascript" };
36+
public class JSTSLanguageServer extends ProcessStreamConnectionProvider {
4837

4938
private static String tsserverPath;
5039

5140
public JSTSLanguageServer() {
52-
super(JSTS_LANGUAGE_SERVER_ID, Activator.getDefault().getPreferenceStore(), SUPPORTED_SECTIONS);
41+
super();
5342
List<String> commands = new ArrayList<>();
5443
commands.add(NodeJSManager.getNodeJsLocation().getAbsolutePath());
5544
try {
@@ -99,24 +88,4 @@ public Object getInitializationOptions(URI rootUri) {
9988
return options;
10089
}
10190

102-
@Override
103-
protected Object createSettings() {
104-
Map<String, Object> settings = new HashMap<>();
105-
// javascript
106-
settings.putAll(JavaScriptPreferenceServerConstants.getGlobalSettings());
107-
// typescript
108-
settings.putAll(TypeScriptPreferenceServerConstants.getGlobalSettings());
109-
return settings;
110-
}
111-
112-
@Override
113-
public void handleMessage(Message message, LanguageServer languageServer, URI rootUri) {
114-
if (message instanceof ResponseMessage responseMessage) {
115-
if (responseMessage.getResult() instanceof InitializeResult) {
116-
// enable validation: so far, no better way found than changing conf after init.
117-
DidChangeConfigurationParams params = new DidChangeConfigurationParams(createSettings());
118-
languageServer.getWorkspaceService().didChangeConfiguration(params);
119-
}
120-
}
121-
}
12291
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2023 Dawid Pakuła and others.
3+
* This program and the accompanying materials are made
4+
* available under the terms of the Eclipse Public License 2.0
5+
* which is available at https://www.eclipse.org/legal/epl-2.0/
6+
*
7+
* SPDX-License-Identifier: EPL-2.0
8+
*
9+
* Contributors:
10+
* Dawid Pakuła - initial implementation
11+
*******************************************************************************/
12+
package org.eclipse.wildwebdeveloper.jsts.ui.preferences.javascript;
13+
14+
import org.eclipse.lsp4e.configuration.EclipsePreferenceProvider;
15+
import org.eclipse.wildwebdeveloper.Activator;
16+
import org.eclipse.wildwebdeveloper.jsts.ui.preferences.typescript.TypeScriptPreferenceServerConstants;
17+
18+
public class JSTSConfigurationProvider extends EclipsePreferenceProvider {
19+
20+
public JSTSConfigurationProvider() {
21+
super(Activator.PLUGIN_ID);
22+
23+
addBool(JavaScriptPreferenceServerConstants.JAVASCRIPT_PREFERENCES_INLAY_HINTS_INCLUDE_INLAY_ENUM_MEMBER_VALUE_HINTS);
24+
addBool(JavaScriptPreferenceServerConstants.JAVASCRIPT_PREFERENCES_INLAY_HINTS_INCLUDE_INLAY_FUNCTION_LIKE_RETURN_TYPE_HINTS);
25+
addBool(JavaScriptPreferenceServerConstants.JAVASCRIPT_PREFERENCES_INLAY_HINTS_INCLUDE_INLAY_FUNCTION_PARAMETER_TYPE_HINTS);
26+
add(JavaScriptPreferenceServerConstants.JAVASCRIPT_PREFERENCES_INLAY_HINTS_INCLUDE_INLAY_PARAMETER_NAME_HINTS);
27+
addBool(JavaScriptPreferenceServerConstants.JAVASCRIPT_PREFERENCES_INLAY_HINTS_INCLUDE_INLAY_PARAMETER_NAME_HINTS_WHEN_ARGUMENT_MATCHES_NAME);
28+
addBool(JavaScriptPreferenceServerConstants.JAVASCRIPT_PREFERENCES_INLAY_HINTS_INCLUDE_INLAY_PROPERTY_DECLARATION_TYPE_HINTS);
29+
addBool(JavaScriptPreferenceServerConstants.JAVASCRIPT_PREFERENCES_INLAY_HINTS_INCLUDE_INLAY_VARIABLE_TYPE_HINTS_WHEN_TYPE_MATCHES_NAME);
30+
31+
addBool(TypeScriptPreferenceServerConstants.TYPESCRIPT_PREFERENCES_INLAY_HINTS_INCLUDE_INLAY_ENUM_MEMBER_VALUE_HINTS);
32+
addBool(TypeScriptPreferenceServerConstants.TYPESCRIPT_PREFERENCES_INLAY_HINTS_INCLUDE_INLAY_FUNCTION_LIKE_RETURN_TYPE_HINTS);
33+
addBool(TypeScriptPreferenceServerConstants.TYPESCRIPT_PREFERENCES_INLAY_HINTS_INCLUDE_INLAY_FUNCTION_PARAMETER_TYPE_HINTS);
34+
add(TypeScriptPreferenceServerConstants.TYPESCRIPT_PREFERENCES_INLAY_HINTS_INCLUDE_INLAY_PARAMETER_NAME_HINTS);
35+
addBool(TypeScriptPreferenceServerConstants.TYPESCRIPT_PREFERENCES_INLAY_HINTS_INCLUDE_INLAY_PARAMETER_NAME_HINTS_WHEN_ARGUMENT_MATCHES_NAME);
36+
addBool(TypeScriptPreferenceServerConstants.TYPESCRIPT_PREFERENCES_INLAY_HINTS_INCLUDE_INLAY_PROPERTY_DECLARATION_TYPE_HINTS);
37+
addBool(TypeScriptPreferenceServerConstants.TYPESCRIPT_PREFERENCES_INLAY_HINTS_INCLUDE_INLAY_VARIABLE_TYPE_HINTS_WHEN_TYPE_MATCHES_NAME);
38+
}
39+
40+
}

0 commit comments

Comments
 (0)