Skip to content

Commit ae9bdd2

Browse files
Merge pull request #2973 from matthiasblaesing/pr-2877
Import changes from #2877 and do followup fixes
2 parents a9f38e8 + 61be330 commit ae9bdd2

3 files changed

Lines changed: 35 additions & 18 deletions

File tree

‎cpplite/cpplite.editor/src/org/netbeans/modules/cpplite/editor/lsp/LanguageServerImpl.java‎

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,13 @@ public void removeChangeListener(ChangeListener listener) {
172172
private static File getCompileCommandsDir(CProjectConfigurationProvider configProvider) {
173173
ProjectConfiguration config = configProvider.getProjectConfiguration();
174174

175-
if (config.commandJsonCommand != null || config.commandJsonPath != null || config.commandJsonContent != null) {
175+
if (config == null) {
176+
return null;
177+
}
178+
179+
File commandsPath = config.commandJsonPath != null ? new File(config.commandJsonPath) : null;
180+
181+
if (config.commandJsonCommand != null || (commandsPath != null && commandsPath.canRead()) || config.commandJsonContent != null) {
176182
File tempFile = Places.getCacheSubfile("cpplite/compile_commands/" + tempDirIndex++ + "/compile_commands.json");
177183
if (config.commandJsonCommand != null) {
178184
try {
@@ -181,16 +187,13 @@ private static File getCompileCommandsDir(CProjectConfigurationProvider configPr
181187
LOG.log(Level.WARNING, null, ex);
182188
return null;
183189
}
184-
} else if (config.commandJsonPath != null) {
185-
File commandsPath = new File(config.commandJsonPath);
186-
if (commandsPath.canRead()) {
187-
try (InputStream in = new FileInputStream(commandsPath);
188-
OutputStream out = new FileOutputStream(tempFile)) {
189-
FileUtil.copy(in, out);
190-
} catch (IOException ex) {
191-
LOG.log(Level.WARNING, null, ex);
192-
return null;
193-
}
190+
} else if (commandsPath != null && commandsPath.canRead()) {
191+
try (InputStream in = new FileInputStream(commandsPath);
192+
OutputStream out = new FileOutputStream(tempFile)) {
193+
FileUtil.copy(in, out);
194+
} catch (IOException ex) {
195+
LOG.log(Level.WARNING, null, ex);
196+
return null;
194197
}
195198
} else if (config.commandJsonContent != null) {
196199
try (OutputStream out = new FileOutputStream(tempFile)) {

‎cpplite/cpplite.project/src/org/netbeans/modules/cpplite/project/ActionProviderImpl.java‎

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
package org.netbeans.modules.cpplite.project;
2020

2121
import java.io.File;
22+
import java.util.ArrayList;
2223
import java.util.Collections;
2324
import java.util.List;
2425
import java.util.regex.Matcher;
@@ -49,6 +50,7 @@
4950
public class ActionProviderImpl implements ActionProvider {
5051
private static final String[] SUPPORTED_ACTIONS = {
5152
COMMAND_BUILD,
53+
COMMAND_CLEAN,
5254
COMMAND_REBUILD,
5355
COMMAND_RUN,
5456
COMMAND_DEBUG,
@@ -59,8 +61,9 @@ public class ActionProviderImpl implements ActionProvider {
5961
public ActionProviderImpl(CPPLiteProject prj) {
6062
this.prj = prj;
6163
}
62-
64+
6365
@Override
66+
@SuppressWarnings("ReturnOfCollectionOrArrayField")
6467
public String[] getSupportedActions() {
6568
return SUPPORTED_ACTIONS;
6669
}
@@ -84,7 +87,14 @@ public void invokeAction(String command, Lookup context) throws IllegalArgumentE
8487
List<List<String>> executablesFor = config.executablesFor(COMMAND_RUN);
8588
return Debugger.startInDebugger(executablesFor.get(0), FileUtil.toFile(prj.getProjectDirectory()));
8689
}
87-
List<List<String>> executablesFor = config.executablesFor(command);
90+
List<List<String>> executablesFor;
91+
if (COMMAND_REBUILD.equals(command)) {
92+
executablesFor = new ArrayList<>();
93+
executablesFor.addAll(config.executablesFor(COMMAND_CLEAN));
94+
executablesFor.addAll(config.executablesFor(COMMAND_BUILD));
95+
} else {
96+
executablesFor = config.executablesFor(command);
97+
}
8898
String arg = executablesFor.stream().map(c -> quote(c.stream().map(p -> quote(p)).collect(Collectors.joining(" ")))).collect(Collectors.joining(" "));
8999
return new ProcessBuilder("java", "-classpath", module.getAbsolutePath(), Runner.class.getName(), arg).directory(FileUtil.toFile(prj.getProjectDirectory())).start();
90100
}, executionDescriptor, ProjectUtils.getInformation(prj).getDisplayName() + " - " + command).run();
@@ -97,11 +107,14 @@ private static String quote(String s) {
97107
@Override
98108
public boolean isActionEnabled(String command, Lookup context) throws IllegalArgumentException {
99109
if (COMMAND_DEBUG.equals(command)) {
100-
command = COMMAND_RUN;
110+
return isActionEnabled(COMMAND_RUN, context);
111+
} else if (COMMAND_REBUILD.equals(command)) {
112+
return isActionEnabled(COMMAND_CLEAN, context) && isActionEnabled(COMMAND_BUILD, context);
113+
} else {
114+
return prj.getActiveBuildConfiguration().executablesFor(command) != null;
101115
}
102-
return prj.getActiveBuildConfiguration().executablesFor(command) != null;
103116
}
104-
117+
105118
private static class ErrorLineConvertor implements LineConvertor {
106119

107120
@Override

‎cpplite/cpplite.project/src/org/netbeans/modules/cpplite/project/ui/wizard/CPPLiteProjectWizardIterator.java‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
*/
1919
package org.netbeans.modules.cpplite.project.ui.wizard;
2020

21-
import java.awt.Component;
2221
import java.io.File;
2322
import java.io.IOException;
2423
import java.util.Arrays;
@@ -33,6 +32,7 @@
3332
import org.netbeans.api.templates.TemplateRegistration;
3433
import org.netbeans.modules.cpplite.project.BuildConfiguration;
3534
import org.netbeans.modules.cpplite.project.CPPLiteProject;
35+
import static org.netbeans.modules.cpplite.project.CPPLiteProject.KEY_COMPILE_COMMANDS;
3636
import static org.netbeans.modules.cpplite.project.CPPLiteProject.getBuildPreferences;
3737
import org.netbeans.modules.cpplite.project.ui.Build;
3838
import org.netbeans.modules.cpplite.project.ui.Editor;
@@ -74,10 +74,11 @@ public class CPPLiteProjectWizardIterator implements WizardDescriptor.Instantiat
7474
@Override
7575
public Set instantiate() throws IOException {
7676
CPPLiteProjectSettings settings = CPPLiteProjectSettings.get(wizard);
77-
FileObject projectDirectory = FileUtil.toFileObject(new File(settings.projectPath));
77+
FileObject projectDirectory = FileUtil.toFileObject(new File(settings.getProjectPath()));
7878
Preferences prefs = CPPLiteProject.getRootPreferences(projectDirectory);
7979
prefs.putBoolean(CPPLiteProject.KEY_IS_PROJECT, true);
8080
settings.getBuildConfig().save(getBuildPreferences(projectDirectory));
81+
prefs.put(KEY_COMPILE_COMMANDS, settings.getEditorConfigPath());
8182
return Collections.singleton(projectDirectory);
8283
}
8384

0 commit comments

Comments
 (0)