Skip to content

Commit 0d89d8a

Browse files
[405] fix broken ClangdOptionsDefault (#406)
fixes #405 Co-authored-by: Jonah Graham <[email protected]>
1 parent ddd803d commit 0d89d8a

17 files changed

+85
-122
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2+
<component id="org.eclipse.cdt.lsp.clangd" version="2">
3+
<resource path="src/org/eclipse/cdt/lsp/clangd/ClangdMetadata.java" type="org.eclipse.cdt.lsp.clangd.ClangdMetadata">
4+
<filter id="404000815">
5+
<message_arguments>
6+
<message_argument value="org.eclipse.cdt.lsp.clangd.ClangdMetadata"/>
7+
<message_argument value="logToConsole()"/>
8+
</message_arguments>
9+
</filter>
10+
</resource>
11+
<resource path="src/org/eclipse/cdt/lsp/clangd/ClangdOptions.java" type="org.eclipse.cdt.lsp.clangd.ClangdOptions">
12+
<filter id="404000815">
13+
<message_arguments>
14+
<message_argument value="org.eclipse.cdt.lsp.clangd.ClangdOptions"/>
15+
<message_argument value="logToConsole()"/>
16+
</message_arguments>
17+
</filter>
18+
</resource>
19+
</component>

bundles/org.eclipse.cdt.lsp.clangd/OSGI-INF/org.eclipse.cdt.lsp.clangd.internal.config.BuiltinClangdOptionsDefaults.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.cdt.lsp.clangd.internal.config.BuiltinClangdOptionsDefaults">
33
<property name="service.ranking" type="Integer" value="0"/>
44
<service>
5-
<provide interface="org.eclipse.cdt.lsp.clangd.ClangdOptions2Defaults"/>
5+
<provide interface="org.eclipse.cdt.lsp.clangd.ClangdOptionsDefaults"/>
66
</service>
77
<implementation class="org.eclipse.cdt.lsp.clangd.internal.config.BuiltinClangdOptionsDefaults"/>
88
</scr:component>

bundles/org.eclipse.cdt.lsp.clangd/OSGI-INF/org.eclipse.cdt.lsp.clangd.internal.config.ClangdConfigurationAccess.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<service>
44
<provide interface="org.eclipse.cdt.lsp.clangd.ClangdConfiguration"/>
55
</service>
6-
<reference cardinality="1..1" field="metadata" interface="org.eclipse.cdt.lsp.clangd.ClangdMetadata2" name="metadata"/>
6+
<reference cardinality="1..1" field="metadata" interface="org.eclipse.cdt.lsp.clangd.ClangdMetadata" name="metadata"/>
77
<reference cardinality="1..1" field="workspace" interface="org.eclipse.core.resources.IWorkspace" name="workspace"/>
88
<implementation class="org.eclipse.cdt.lsp.clangd.internal.config.ClangdConfigurationAccess"/>
99
</scr:component>
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.3.0" name="org.eclipse.cdt.lsp.clangd.internal.config.ClangdMetadataDefaults">
33
<service>
4-
<provide interface="org.eclipse.cdt.lsp.clangd.ClangdMetadata2"/>
4+
<provide interface="org.eclipse.cdt.lsp.clangd.ClangdMetadata"/>
55
</service>
6-
<reference cardinality="1..1" field="defaults" interface="org.eclipse.cdt.lsp.clangd.ClangdOptions2Defaults" name="defaults"/>
6+
<reference cardinality="1..1" field="defaults" interface="org.eclipse.cdt.lsp.clangd.ClangdOptionsDefaults" name="defaults"/>
77
<implementation class="org.eclipse.cdt.lsp.clangd.internal.config.ClangdMetadataDefaults"/>
88
</scr:component>

bundles/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/clangd/ClangdMetadata.java

+17
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,21 @@ public interface ClangdMetadata {
8686
*/
8787
PreferenceMetadata<String> additionalOptions();
8888

89+
/**
90+
* Returns the metadata for the "Log to Console" option, must not return <code>null</code>.
91+
*
92+
* @return the metadata for the "Log to Console" option
93+
*
94+
* @see ClangdOptions#logToConsole()
95+
*
96+
* @since 2.2
97+
*/
98+
default PreferenceMetadata<Boolean> logToConsole() {
99+
return new PreferenceMetadata<>(Boolean.class, //
100+
"log_to_console", //$NON-NLS-1$
101+
false, //
102+
"Log to Console", // //$NON-NLS-1$
103+
"Log to Console"); //$NON-NLS-1$
104+
}
105+
89106
}

bundles/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/clangd/ClangdMetadata2.java

-31
This file was deleted.

bundles/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/clangd/ClangdOptions.java

+10
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,14 @@ public interface ClangdOptions {
7171
*/
7272
List<String> additionalOptions();
7373

74+
/**
75+
* Enable logging to Clangd console
76+
*
77+
* @return true if clangd logging is enabled
78+
*
79+
* @since 2.2
80+
*/
81+
default boolean logToConsole() {
82+
return false;
83+
}
7484
}

bundles/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/clangd/ClangdOptions2.java

-27
This file was deleted.

bundles/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/clangd/ClangdOptions2Defaults.java

-20
This file was deleted.

bundles/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/clangd/internal/config/BuiltinClangdOptionsDefaults.java

+2-7
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import java.util.List;
1717
import java.util.Optional;
1818

19-
import org.eclipse.cdt.lsp.clangd.ClangdOptions2Defaults;
19+
import org.eclipse.cdt.lsp.clangd.ClangdOptionsDefaults;
2020
import org.eclipse.cdt.utils.PathUtil;
2121
import org.eclipse.core.runtime.IPath;
2222
import org.osgi.service.component.annotations.Component;
@@ -25,7 +25,7 @@
2525
* Provides the default clangd options for cdt-lsp.
2626
*/
2727
@Component(property = { "service.ranking:Integer=0" })
28-
public class BuiltinClangdOptionsDefaults implements ClangdOptions2Defaults {
28+
public class BuiltinClangdOptionsDefaults implements ClangdOptionsDefaults {
2929

3030
@Override
3131
public String clangdPath() {
@@ -66,9 +66,4 @@ public String queryDriver() {
6666
public List<String> additionalOptions() {
6767
return Collections.emptyList();
6868
}
69-
70-
@Override
71-
public boolean logToConsole() {
72-
return false;
73-
}
7469
}

bundles/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/clangd/internal/config/ClangdConfigurationAccess.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
import java.util.Optional;
1919

2020
import org.eclipse.cdt.lsp.clangd.ClangdConfiguration;
21-
import org.eclipse.cdt.lsp.clangd.ClangdMetadata2;
22-
import org.eclipse.cdt.lsp.clangd.ClangdOptions2;
21+
import org.eclipse.cdt.lsp.clangd.ClangdMetadata;
22+
import org.eclipse.cdt.lsp.clangd.ClangdOptions;
2323
import org.eclipse.cdt.lsp.clangd.ClangdQualifier;
2424
import org.eclipse.cdt.lsp.config.ConfigurationAccess;
2525
import org.eclipse.core.resources.IWorkspace;
@@ -37,7 +37,7 @@
3737
public final class ClangdConfigurationAccess extends ConfigurationAccess implements ClangdConfiguration {
3838

3939
@Reference
40-
private ClangdMetadata2 metadata;
40+
private ClangdMetadata metadata;
4141

4242
@Reference
4343
private IWorkspace workspace;
@@ -47,17 +47,17 @@ public ClangdConfigurationAccess() {
4747
}
4848

4949
@Override
50-
public ClangdMetadata2 metadata() {
50+
public ClangdMetadata metadata() {
5151
return metadata;
5252
}
5353

5454
@Override
55-
public ClangdOptions2 defaults() {
55+
public ClangdOptions defaults() {
5656
return new ClangdPreferredOptions(qualifier, new IScopeContext[] { DefaultScope.INSTANCE }, metadata);
5757
}
5858

5959
@Override
60-
public ClangdOptions2 options(Object context) {
60+
public ClangdOptions options(Object context) {
6161
Optional<ProjectScope> project = projectScope(workspace, context);
6262
IScopeContext[] scopes;
6363
if (project.isPresent()) {
@@ -84,7 +84,7 @@ public String qualifier() {
8484

8585
@Override
8686
public List<String> commands(Object context) {
87-
ClangdOptions2 options = options(context);
87+
ClangdOptions options = options(context);
8888
List<String> list = new ArrayList<>();
8989
list.add(options.clangdPath());
9090
if (options.useTidy()) {

bundles/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/clangd/internal/config/ClangdLanguageServerProvider.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
import org.eclipse.cdt.lsp.clangd.ClangdConfiguration;
2525
import org.eclipse.cdt.lsp.clangd.ClangdFallbackFlags;
26-
import org.eclipse.cdt.lsp.clangd.ClangdOptions2;
26+
import org.eclipse.cdt.lsp.clangd.ClangdOptions;
2727
import org.eclipse.cdt.lsp.config.Configuration;
2828
import org.eclipse.cdt.lsp.editor.LanguageServerEnable;
2929
import org.eclipse.cdt.lsp.server.ICLanguageServerProvider3;
@@ -74,7 +74,8 @@ public boolean isEnabledFor(IProject project) {
7474
@Override
7575
public boolean logToConsole() {
7676
boolean[] enabled = new boolean[1];
77-
configuration.call(c -> enabled[0] = ((ClangdOptions2) c.options(null)).logToConsole());
77+
configuration
78+
.call(c -> enabled[0] = c.options(null) instanceof ClangdOptions copt ? copt.logToConsole() : false);
7879
return enabled[0];
7980
}
8081

bundles/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/clangd/internal/config/ClangdMetadataDefaults.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,18 @@
1515

1616
import java.util.stream.Collectors;
1717

18-
import org.eclipse.cdt.lsp.clangd.ClangdMetadata2;
19-
import org.eclipse.cdt.lsp.clangd.ClangdOptions2Defaults;
18+
import org.eclipse.cdt.lsp.clangd.ClangdMetadata;
19+
import org.eclipse.cdt.lsp.clangd.ClangdOptionsDefaults;
2020
import org.eclipse.cdt.lsp.clangd.internal.ui.LspEditorUiMessages;
2121
import org.eclipse.core.runtime.preferences.PreferenceMetadata;
2222
import org.osgi.service.component.annotations.Component;
2323
import org.osgi.service.component.annotations.Reference;
2424

2525
@Component
26-
public class ClangdMetadataDefaults implements ClangdMetadata2 {
26+
public final class ClangdMetadataDefaults implements ClangdMetadata {
2727

2828
@Reference
29-
private ClangdOptions2Defaults defaults;
29+
private ClangdOptionsDefaults defaults;
3030

3131
@Override
3232
public PreferenceMetadata<String> clangdPath() {

bundles/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/clangd/internal/config/ClangdPreferenceInitializer.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
package org.eclipse.cdt.lsp.clangd.internal.config;
1515

1616
import org.eclipse.cdt.lsp.clangd.ClangdConfiguration;
17-
import org.eclipse.cdt.lsp.clangd.ClangdMetadata2;
17+
import org.eclipse.cdt.lsp.clangd.ClangdMetadata;
1818
import org.eclipse.core.runtime.ServiceCaller;
1919
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
2020
import org.eclipse.core.runtime.preferences.DefaultScope;
@@ -28,7 +28,7 @@ public void initializeDefaultPreferences() {
2828
}
2929

3030
private void initializeDefaults(ClangdConfiguration configuration) {
31-
ClangdMetadata2 metadata = (ClangdMetadata2) configuration.metadata();
31+
ClangdMetadata metadata = (ClangdMetadata) configuration.metadata();
3232
String qualifier = configuration.qualifier();
3333
initializeString(metadata.clangdPath(), qualifier);
3434
initializeBoolean(metadata.useTidy(), qualifier);

bundles/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/clangd/internal/config/ClangdPreferredOptions.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,18 @@
1919
import java.util.Objects;
2020
import java.util.Optional;
2121

22-
import org.eclipse.cdt.lsp.clangd.ClangdMetadata2;
23-
import org.eclipse.cdt.lsp.clangd.ClangdOptions2;
22+
import org.eclipse.cdt.lsp.clangd.ClangdMetadata;
23+
import org.eclipse.cdt.lsp.clangd.ClangdOptions;
2424
import org.eclipse.core.runtime.preferences.IScopeContext;
2525
import org.eclipse.core.runtime.preferences.PreferenceMetadata;
2626

27-
final class ClangdPreferredOptions implements ClangdOptions2 {
27+
final class ClangdPreferredOptions implements ClangdOptions {
2828

2929
private final String qualifier;
3030
private final IScopeContext[] scopes;
31-
private final ClangdMetadata2 metadata;
31+
private final ClangdMetadata metadata;
3232

33-
ClangdPreferredOptions(String qualifier, IScopeContext[] scopes, ClangdMetadata2 metadata) {
33+
ClangdPreferredOptions(String qualifier, IScopeContext[] scopes, ClangdMetadata metadata) {
3434
this.qualifier = Objects.requireNonNull(qualifier);
3535
this.scopes = Objects.requireNonNull(scopes);
3636
this.metadata = Objects.requireNonNull(metadata);

bundles/org.eclipse.cdt.lsp.clangd/src/org/eclipse/cdt/lsp/clangd/internal/ui/ClangdConfigurationArea.java

+6-7
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,8 @@
1919
import java.util.function.Consumer;
2020
import java.util.stream.Collectors;
2121

22-
import org.eclipse.cdt.lsp.clangd.ClangdMetadata2;
22+
import org.eclipse.cdt.lsp.clangd.ClangdMetadata;
2323
import org.eclipse.cdt.lsp.clangd.ClangdOptions;
24-
import org.eclipse.cdt.lsp.clangd.ClangdOptions2;
2524
import org.eclipse.cdt.lsp.ui.ConfigurationArea;
2625
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
2726
import org.eclipse.core.runtime.preferences.OsgiPreferenceMetadataStore;
@@ -65,7 +64,7 @@ public final class ClangdConfigurationArea extends ConfigurationArea {
6564
LspEditorUiMessages.LspEditorPreferencePage_completion_default };
6665
private final Map<String, String> completions;
6766

68-
public ClangdConfigurationArea(Composite parent, ClangdMetadata2 metadata, boolean isProjectScope) {
67+
public ClangdConfigurationArea(Composite parent, ClangdMetadata metadata, boolean isProjectScope) {
6968
super(3);
7069
this.texts = new HashMap<>();
7170
this.combos = new HashMap<>();
@@ -188,9 +187,9 @@ public void load(Object options, boolean enable) {
188187
additional.setText(
189188
clangdOptions.additionalOptions().stream().collect(Collectors.joining(System.lineSeparator())));
190189
enablePreferenceContent(enable);
191-
}
192-
if (logToConsole != null && options instanceof ClangdOptions2 clangdOptions2) {
193-
logToConsole.setSelection(clangdOptions2.logToConsole());
190+
if (logToConsole != null) {
191+
logToConsole.setSelection(clangdOptions.logToConsole());
192+
}
194193
}
195194
}
196195

@@ -209,7 +208,7 @@ public void dispose() {
209208
combos.clear();
210209
}
211210

212-
public boolean optionsChanged(ClangdOptions2 options) {
211+
public boolean optionsChanged(ClangdOptions options) {
213212
return !options.clangdPath().equals(path.getText()) || options.useTidy() != tidy.getSelection()
214213
|| options.useBackgroundIndex() != index.getSelection()
215214
|| !options.completionStyle().equals(completions.get(completion.getText()))

0 commit comments

Comments
 (0)