Skip to content

Commit 50e56e6

Browse files
committed
feat: make Code Lens/Formatter options of JSTS LangServer configurable
1 parent 9da5b7b commit 50e56e6

18 files changed

+696
-299
lines changed

org.eclipse.wildwebdeveloper/plugin.properties

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,10 @@ HTMLValidationPreferencePage.name=Validation
4141
# JST/TS
4242
JSTSPreferencePage.name=JS/TS (Wild Web Developer)
4343
TypeScriptPreferencePage.name=TypeScript
44-
TypeScriptInlayHintPreferencePage.name=Inlay Hint
4544
JavaScriptPreferencePage.name=JavaScript
46-
JavaScriptInlayHintPreferencePage.name=Inlay Hint
45+
JSTSCodeLensPreferencePage.name=Code Lens
46+
JSTSInlayHintPreferencePage.name=Inlay Hint
47+
JSTSFormatterPreferencePage.name=Formatter
4748

4849
# Markdown
4950
MarkdownPreferencePage.name=Markdown (Wild Web Developer)

org.eclipse.wildwebdeveloper/plugin.xml

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -514,11 +514,27 @@
514514
<keywordReference id="org.eclipse.wildwebdeveloper.js" />
515515
<keywordReference id="org.eclipse.wildwebdeveloper.javascript" />
516516
</page>
517+
<page
518+
category="org.eclipse.wildwebdeveloper.jsts.ui.preferences.javascript.JavaScriptPreferencePage"
519+
class="org.eclipse.wildwebdeveloper.jsts.ui.preferences.javascript.JavaScriptCodeLensPreferencePage"
520+
id="org.eclipse.wildwebdeveloper.jsts.ui.preferences.javascript.JavaScriptCodeLensPreferencePage"
521+
name="%JSTSCodeLensPreferencePage.name">
522+
<keywordReference id="org.eclipse.wildwebdeveloper.js" />
523+
<keywordReference id="org.eclipse.wildwebdeveloper.javascript" />
524+
</page>
517525
<page
518526
category="org.eclipse.wildwebdeveloper.jsts.ui.preferences.javascript.JavaScriptPreferencePage"
519527
class="org.eclipse.wildwebdeveloper.jsts.ui.preferences.javascript.JavaScriptInlayHintPreferencePage"
520528
id="org.eclipse.wildwebdeveloper.jsts.ui.preferences.javascript.JavaScriptInlayHintPreferencePage"
521-
name="%JavaScriptInlayHintPreferencePage.name">
529+
name="%JSTSInlayHintPreferencePage.name">
530+
<keywordReference id="org.eclipse.wildwebdeveloper.js" />
531+
<keywordReference id="org.eclipse.wildwebdeveloper.javascript" />
532+
</page>
533+
<page
534+
category="org.eclipse.wildwebdeveloper.jsts.ui.preferences.javascript.JavaScriptPreferencePage"
535+
class="org.eclipse.wildwebdeveloper.jsts.ui.preferences.javascript.JavaScriptFormatterPreferencePage"
536+
id="org.eclipse.wildwebdeveloper.jsts.ui.preferences.javascript.JavaScriptFormatterPreferencePage"
537+
name="%JSTSFormatterPreferencePage.name">
522538
<keywordReference id="org.eclipse.wildwebdeveloper.js" />
523539
<keywordReference id="org.eclipse.wildwebdeveloper.javascript" />
524540
</page>
@@ -531,11 +547,27 @@
531547
<keywordReference id="org.eclipse.wildwebdeveloper.ts" />
532548
<keywordReference id="org.eclipse.wildwebdeveloper.typescript" />
533549
</page>
550+
<page
551+
category="org.eclipse.wildwebdeveloper.jsts.ui.preferences.typescript.TypeScriptPreferencePage"
552+
class="org.eclipse.wildwebdeveloper.jsts.ui.preferences.typescript.TypeScriptCodeLensPreferencePage"
553+
id="org.eclipse.wildwebdeveloper.jsts.ui.preferences.typescript.TypeScriptCodeLensPreferencePage"
554+
name="%JSTSCodeLensPreferencePage.name">
555+
<keywordReference id="org.eclipse.wildwebdeveloper.ts" />
556+
<keywordReference id="org.eclipse.wildwebdeveloper.typescript" />
557+
</page>
534558
<page
535559
category="org.eclipse.wildwebdeveloper.jsts.ui.preferences.typescript.TypeScriptPreferencePage"
536560
class="org.eclipse.wildwebdeveloper.jsts.ui.preferences.typescript.TypeScriptInlayHintPreferencePage"
537561
id="org.eclipse.wildwebdeveloper.jsts.ui.preferences.typescript.TypeScriptInlayHintPreferencePage"
538-
name="%TypeScriptInlayHintPreferencePage.name">
562+
name="%JSTSInlayHintPreferencePage.name">
563+
<keywordReference id="org.eclipse.wildwebdeveloper.ts" />
564+
<keywordReference id="org.eclipse.wildwebdeveloper.typescript" />
565+
</page>
566+
<page
567+
category="org.eclipse.wildwebdeveloper.jsts.ui.preferences.typescript.TypeScriptPreferencePage"
568+
class="org.eclipse.wildwebdeveloper.jsts.ui.preferences.typescript.TypeScriptFormatterPreferencePage"
569+
id="org.eclipse.wildwebdeveloper.jsts.ui.preferences.typescript.TypeScriptFormatterPreferencePage"
570+
name="%JSTSFormatterPreferencePage.name">
539571
<keywordReference id="org.eclipse.wildwebdeveloper.ts" />
540572
<keywordReference id="org.eclipse.wildwebdeveloper.typescript" />
541573
</page>

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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@
1414
*******************************************************************************/
1515
package org.eclipse.wildwebdeveloper.jsts;
1616

17-
import static org.eclipse.wildwebdeveloper.jsts.ui.preferences.JSTSPreferenceServerConstants.TYPESCRIPT_PREFERENCES_TSSERVER_TYPESCRIPT_VERSION_PROJECT;
18-
import static org.eclipse.wildwebdeveloper.jsts.ui.preferences.JSTSPreferenceServerConstants.getTypeScriptVersion;
17+
import static org.eclipse.wildwebdeveloper.jsts.ui.preferences.JSTSPreferenceServerConstants.*;
1918

2019
import java.io.File;
2120
import java.io.IOException;
@@ -35,8 +34,7 @@
3534
import org.eclipse.lsp4j.services.LanguageServer;
3635
import org.eclipse.wildwebdeveloper.Activator;
3736
import org.eclipse.wildwebdeveloper.embedder.node.NodeJSManager;
38-
import org.eclipse.wildwebdeveloper.jsts.ui.preferences.javascript.JavaScriptPreferenceServerConstants;
39-
import org.eclipse.wildwebdeveloper.jsts.ui.preferences.typescript.TypeScriptPreferenceServerConstants;
37+
import org.eclipse.wildwebdeveloper.jsts.ui.preferences.JSTSLanguagePreferences;
4038
import org.eclipse.wildwebdeveloper.ui.preferences.ProcessStreamConnectionProviderWithPreference;
4139

4240
public class JSTSLanguageServer extends ProcessStreamConnectionProviderWithPreference {
@@ -107,9 +105,9 @@ public Object getInitializationOptions(URI rootUri) {
107105
protected Object createSettings() {
108106
Map<String, Object> settings = new HashMap<>();
109107
// javascript
110-
settings.putAll(JavaScriptPreferenceServerConstants.getGlobalSettings());
108+
settings.putAll(JSTSLanguagePreferences.JS.getGlobalSettings());
111109
// typescript
112-
settings.putAll(TypeScriptPreferenceServerConstants.getGlobalSettings());
110+
settings.putAll(JSTSLanguagePreferences.TS.getGlobalSettings());
113111
return settings;
114112
}
115113

org.eclipse.wildwebdeveloper/src/org/eclipse/wildwebdeveloper/jsts/ui/Messages.java

Lines changed: 48 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,17 @@
77
* SPDX-License-Identifier: EPL-2.0
88
*
99
* Contributors:
10-
* Angelo ZERR (Red Hat Inc.) - initial implementation
11-
* Pierre-Yves Bigourdan - Allow using TypeScript version specified by project
12-
* Pierre-Yves Bigourdan - Allow configuring directory of ESLint package
10+
* Angelo ZERR (Red Hat Inc.) - initial implementation
11+
* Pierre-Yves Bigourdan - Allow using TypeScript version specified by project
12+
* Pierre-Yves Bigourdan - Allow configuring directory of ESLint package
13+
* Sebastian Thomschke (Vegard IT GmbH) - add CodeLensPreferencePage, FormatterPreferencePage keys
1314
*******************************************************************************/
1415
package org.eclipse.wildwebdeveloper.jsts.ui;
1516

1617
import org.eclipse.osgi.util.NLS;
1718

1819
/**
1920
* JS/TS messages keys.
20-
*
2121
*/
2222
public class Messages extends NLS {
2323

@@ -27,19 +27,50 @@ public class Messages extends NLS {
2727

2828
public static String JSTSPreferencePage_eslintNodePath;
2929

30-
// --------- TypeScript Inlay Hints preference page
31-
public static String TypeScriptInlayHintPreferencePage_showInlayHintsFor_label;
32-
public static String TypeScriptInlayHintPreferencePage_includeInlayEnumMemberValueHints;
33-
public static String TypeScriptInlayHintPreferencePage_includeInlayFunctionLikeReturnTypeHints;
34-
public static String TypeScriptInlayHintPreferencePage_includeInlayFunctionParameterTypeHints;
35-
public static String TypeScriptInlayHintPreferencePage_includeInlayParameterNameHints;
36-
public static String TypeScriptInlayHintPreferencePage_includeInlayParameterNameHints_none;
37-
public static String TypeScriptInlayHintPreferencePage_includeInlayParameterNameHints_literals;
38-
public static String TypeScriptInlayHintPreferencePage_includeInlayParameterNameHints_all;
39-
public static String TypeScriptInlayHintPreferencePage_includeInlayParameterNameHintsWhenArgumentMatchesName;
40-
public static String TypeScriptInlayHintPreferencePage_includeInlayPropertyDeclarationTypeHints;
41-
public static String TypeScriptInlayHintPreferencePage_includeInlayVariableTypeHints;
42-
public static String TypeScriptInlayHintPreferencePage_includeInlayVariableTypeHintsWhenTypeMatchesName;
30+
// JavaScript / TypeScript Inlay Hints preference page
31+
public static String InlayHintPreferencePage_showInlayHintsFor_label;
32+
public static String InlayHintPreferencePage_includeInlayEnumMemberValueHints;
33+
public static String InlayHintPreferencePage_includeInlayFunctionLikeReturnTypeHints;
34+
public static String InlayHintPreferencePage_includeInlayFunctionParameterTypeHints;
35+
public static String InlayHintPreferencePage_includeInlayParameterNameHints;
36+
public static String InlayHintPreferencePage_includeInlayParameterNameHints_none;
37+
public static String InlayHintPreferencePage_includeInlayParameterNameHints_literals;
38+
public static String InlayHintPreferencePage_includeInlayParameterNameHints_all;
39+
public static String InlayHintPreferencePage_includeInlayParameterNameHintsWhenArgumentMatchesName;
40+
public static String InlayHintPreferencePage_includeInlayPropertyDeclarationTypeHints;
41+
public static String InlayHintPreferencePage_includeInlayVariableTypeHints;
42+
public static String InlayHintPreferencePage_includeInlayVariableTypeHintsWhenTypeMatchesName;
43+
44+
// JavaScript / TypeScript Code Lens preference page
45+
public static String CodeLensPreferencePage_showCodeLensFor_label;
46+
public static String CodeLensPreferencePage_implementationsCodeLens_enabled;
47+
public static String CodeLensPreferencePage_referencesCodeLens_enabled;
48+
public static String CodeLensPreferencePage_referencesCodeLens_showOnAllFunctions;
49+
50+
public static String FormatterPreferencePage_baseIndentSize;
51+
public static String FormatterPreferencePage_convertTabsToSpaces;
52+
public static String FormatterPreferencePage_indentSize;
53+
public static String FormatterPreferencePage_indentStyle;
54+
public static String FormatterPreferencePage_insertSpaceAfterCommaDelimiter;
55+
public static String FormatterPreferencePage_insertSpaceAfterConstructor;
56+
public static String FormatterPreferencePage_insertSpaceAfterFunctionKeywordForAnonymousFunctions;
57+
public static String FormatterPreferencePage_insertSpaceAfterKeywordsInControlFlowStatements;
58+
public static String FormatterPreferencePage_insertSpaceAfterOpeningAndBeforeClosingEmptyBraces;
59+
public static String FormatterPreferencePage_insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces;
60+
public static String FormatterPreferencePage_insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces;
61+
public static String FormatterPreferencePage_insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets;
62+
public static String FormatterPreferencePage_insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis;
63+
public static String FormatterPreferencePage_insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces;
64+
public static String FormatterPreferencePage_insertSpaceAfterSemicolonInForStatements;
65+
public static String FormatterPreferencePage_insertSpaceAfterTypeAssertion;
66+
public static String FormatterPreferencePage_insertSpaceBeforeAndAfterBinaryOperators;
67+
public static String FormatterPreferencePage_insertSpaceBeforeFunctionParenthesis;
68+
public static String FormatterPreferencePage_insertSpaceBeforeTypeAnnotation;
69+
public static String FormatterPreferencePage_newLineCharacter;
70+
public static String FormatterPreferencePage_placeOpenBraceOnNewLineForControlBlocks;
71+
public static String FormatterPreferencePage_placeOpenBraceOnNewLineForFunctions;
72+
public static String FormatterPreferencePage_semicolons;
73+
public static String FormatterPreferencePage_trimTrailingWhitespace;
4374

4475
static {
4576
NLS.initializeMessages("org.eclipse.wildwebdeveloper.jsts.ui.messages", Messages.class); //$NON-NLS-1$

org.eclipse.wildwebdeveloper/src/org/eclipse/wildwebdeveloper/jsts/ui/messages.properties

Lines changed: 46 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
# * Angelo ZERR (Red Hat Inc.) - initial implementation
1111
# * Pierre-Yves Bigourdan - Allow using TypeScript version specified by project
1212
# * Pierre-Yves Bigourdan - Allow configuring directory of ESLint package
13+
# * Sebastian Thomschke (Vegard IT GmbH) - add CodeLensPreferencePage, FormatterPreferencePage translations
1314
# *******************************************************************************/
1415

1516
JSTSPreferencePage_typeScriptVersion=Typescript version used for JavaScript and TypeScript language features:
@@ -18,16 +19,48 @@ JSTSPreferencePage_typeScriptVersion_project=Project version
1819

1920
JSTSPreferencePage_eslintNodePath=Absolute or project-relative path containing the eslint folder (node_modules used if blank):
2021

21-
# TypeScript Inlay Hints preference page
22-
TypeScriptInlayHintPreferencePage_showInlayHintsFor_label=Show inlay hints for:
23-
TypeScriptInlayHintPreferencePage_includeInlayEnumMemberValueHints=member values in enum declarations.
24-
TypeScriptInlayHintPreferencePage_includeInlayFunctionLikeReturnTypeHints=implicit return types on function signatures.
25-
TypeScriptInlayHintPreferencePage_includeInlayFunctionParameterTypeHints=function parameter type.
26-
TypeScriptInlayHintPreferencePage_includeInlayPropertyDeclarationTypeHints=property declaration type.
27-
TypeScriptInlayHintPreferencePage_includeInlayParameterNameHints=parameter names:
28-
TypeScriptInlayHintPreferencePage_includeInlayParameterNameHints_none=Disable parameter name hints.
29-
TypeScriptInlayHintPreferencePage_includeInlayParameterNameHints_literals=Only for literal arguments.
30-
TypeScriptInlayHintPreferencePage_includeInlayParameterNameHints_all=For literal and non-literal arguments.
31-
TypeScriptInlayHintPreferencePage_includeInlayParameterNameHintsWhenArgumentMatchesName=also on arguments whose text is identical to the parameter name.
32-
TypeScriptInlayHintPreferencePage_includeInlayVariableTypeHints=variable type.
33-
TypeScriptInlayHintPreferencePage_includeInlayVariableTypeHintsWhenTypeMatchesName=also variables whose name is identical to the type name.
22+
# JavaScript / TypeScript Inlay Hints preference page
23+
InlayHintPreferencePage_showInlayHintsFor_label=Show inlay hints for:
24+
InlayHintPreferencePage_includeInlayEnumMemberValueHints=member values in enum declarations
25+
InlayHintPreferencePage_includeInlayFunctionLikeReturnTypeHints=implicit return types on function signatures
26+
InlayHintPreferencePage_includeInlayFunctionParameterTypeHints=function parameter type
27+
InlayHintPreferencePage_includeInlayPropertyDeclarationTypeHints=property declaration type
28+
InlayHintPreferencePage_includeInlayParameterNameHints=parameter names:
29+
InlayHintPreferencePage_includeInlayParameterNameHints_none=Disable parameter name hints
30+
InlayHintPreferencePage_includeInlayParameterNameHints_literals=Only for literal arguments
31+
InlayHintPreferencePage_includeInlayParameterNameHints_all=For literal and non-literal arguments
32+
InlayHintPreferencePage_includeInlayParameterNameHintsWhenArgumentMatchesName=also on arguments whose text is identical to the parameter name
33+
InlayHintPreferencePage_includeInlayVariableTypeHints=variable type
34+
InlayHintPreferencePage_includeInlayVariableTypeHintsWhenTypeMatchesName=also variables whose name is identical to the type name
35+
36+
# JavaScript / TypeScript Code Lens preference page
37+
CodeLensPreferencePage_showCodeLensFor_label=Show code lens for:
38+
CodeLensPreferencePage_implementationsCodeLens_enabled=Implementations (shows the number of implementations for symbols like classes or methods)
39+
CodeLensPreferencePage_referencesCodeLens_enabled=References (shows the number of references/usages for symbols in the project)
40+
CodeLensPreferencePage_referencesCodeLens_showOnAllFunctions=Show reference Code Lens on all functions (not just exported ones)
41+
42+
# JavaScript / TypeScript Formatter preference page
43+
FormatterPreferencePage_baseIndentSize=Base indentation size applied to the entire file
44+
FormatterPreferencePage_indentSize=Number of spaces used for each indentation level
45+
FormatterPreferencePage_indentStyle=Indentation style
46+
FormatterPreferencePage_insertSpaceAfterCommaDelimiter=Insert a space after each comma in lists (arrays, parameters, etc.)
47+
FormatterPreferencePage_insertSpaceAfterConstructor=Insert a space after the 'constructor' keyword before the parameter list
48+
FormatterPreferencePage_insertSpaceAfterFunctionKeywordForAnonymousFunctions=Insert a space after the 'function' keyword in anonymous or inline functions
49+
FormatterPreferencePage_insertSpaceAfterKeywordsInControlFlowStatements=Insert a space after control-flow keywords such as 'if', 'for', 'while', and 'switch'
50+
FormatterPreferencePage_insertSpaceAfterOpeningAndBeforeClosingEmptyBraces=Insert spaces inside empty curly braces (e.g., '{ }')
51+
FormatterPreferencePage_insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces=Insert spaces inside JSX expression braces (e.g., '{ value }')
52+
FormatterPreferencePage_insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces=Insert spaces inside non-empty curly braces (e.g., '{ a: 1 }')
53+
FormatterPreferencePage_insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets=Insert spaces inside brackets (e.g., '[ 1, 2 ]')
54+
FormatterPreferencePage_insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis=Insert spaces inside parentheses (e.g., '( a + b )')
55+
FormatterPreferencePage_insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces=Insert spaces inside template string expressions (e.g., `${ value }`)
56+
FormatterPreferencePage_insertSpaceAfterSemicolonInForStatements=Insert a space after each semicolon in 'for' statement headers
57+
FormatterPreferencePage_insertSpaceAfterTypeAssertion=Insert a space after a type assertion expression (e.g., '<T> value')
58+
FormatterPreferencePage_insertSpaceBeforeAndAfterBinaryOperators=Insert spaces around binary and logical operators (e.g., 'a + b', 'x && y')
59+
FormatterPreferencePage_insertSpaceBeforeFunctionParenthesis=Insert a space before the opening parenthesis in function declarations
60+
FormatterPreferencePage_insertSpaceBeforeTypeAnnotation=Insert a space before a colon in type annotations (e.g., 'let x : number')
61+
FormatterPreferencePage_newLineCharacter=Character(s) used for new lines
62+
FormatterPreferencePage_placeOpenBraceOnNewLineForControlBlocks=Place the opening brace of control blocks (e.g., 'if', 'for') on a new line
63+
FormatterPreferencePage_placeOpenBraceOnNewLineForFunctions=Place the opening brace of function declarations on a new line
64+
FormatterPreferencePage_semicolons=Semicolon handling
65+
FormatterPreferencePage_tabSize=Number of spaces a tab character
66+
FormatterPreferencePage_trimTrailingWhitespace=Remove trailing whitespace characters when formatting

0 commit comments

Comments
 (0)