mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-09 10:46:02 +02:00
Merge remote branch 'cdt/master' into sd90
This commit is contained in:
commit
ddde8b7b3b
10 changed files with 96 additions and 46 deletions
|
@ -75,17 +75,12 @@ public class FilterEmtpyFoldersAction extends Action {
|
||||||
if(haveTargets[0]) {
|
if(haveTargets[0]) {
|
||||||
return false; //We found what we were looking for
|
return false; //We found what we were looking for
|
||||||
}
|
}
|
||||||
|
|
||||||
if(proxy.getType() != IResource.FOLDER) {
|
if(proxy.getType() != IResource.FOLDER) {
|
||||||
return true; //We only look at folders for content
|
return true; //We only look at folders for content
|
||||||
}
|
}
|
||||||
IContainer folder = (IContainer) proxy.requestResource();
|
|
||||||
if (CCorePlugin.showSourceRootsAtTopOfProject() && !(folder instanceof IProject)) {
|
|
||||||
boolean isSourceEntry = MakeContentProvider.isSourceEntry(folder);
|
|
||||||
if (isSourceEntry)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
IContainer folder = (IContainer) proxy.requestResource();
|
||||||
IMakeTarget [] targets = MakeCorePlugin.getDefault().getTargetManager().getTargets(folder);
|
IMakeTarget [] targets = MakeCorePlugin.getDefault().getTargetManager().getTargets(folder);
|
||||||
if(targets != null && targets.length > 0) {
|
if(targets != null && targets.length > 0) {
|
||||||
haveTargets[0] = true;
|
haveTargets[0] = true;
|
||||||
|
|
|
@ -70,6 +70,8 @@ import org.eclipse.swt.widgets.ScrollBar;
|
||||||
* @noinstantiate This class is not intended to be instantiated by clients.
|
* @noinstantiate This class is not intended to be instantiated by clients.
|
||||||
*/
|
*/
|
||||||
public class ToolSettingsTab extends AbstractCBuildPropertyTab implements IPreferencePageContainer {
|
public class ToolSettingsTab extends AbstractCBuildPropertyTab implements IPreferencePageContainer {
|
||||||
|
private static ToolListElement selectedElement;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Dialog widgets
|
* Dialog widgets
|
||||||
*/
|
*/
|
||||||
|
@ -87,7 +89,6 @@ public class ToolSettingsTab extends AbstractCBuildPropertyTab implements IPrefe
|
||||||
private Map<String, List<AbstractToolSettingUI>> configToPageListMap;
|
private Map<String, List<AbstractToolSettingUI>> configToPageListMap;
|
||||||
private IPreferenceStore settingsStore;
|
private IPreferenceStore settingsStore;
|
||||||
private AbstractToolSettingUI currentSettingsPage;
|
private AbstractToolSettingUI currentSettingsPage;
|
||||||
private ToolListElement selectedElement;
|
|
||||||
private ToolListContentProvider listprovider;
|
private ToolListContentProvider listprovider;
|
||||||
private Object propertyObject;
|
private Object propertyObject;
|
||||||
|
|
||||||
|
@ -377,7 +378,6 @@ public class ToolSettingsTab extends AbstractCBuildPropertyTab implements IPrefe
|
||||||
@Override
|
@Override
|
||||||
public void setVisible(boolean visible){
|
public void setVisible(boolean visible){
|
||||||
if(visible){
|
if(visible){
|
||||||
selectedElement = null;
|
|
||||||
updateData(page.getResDesc());
|
updateData(page.getResDesc());
|
||||||
}
|
}
|
||||||
super.setVisible(visible);
|
super.setVisible(visible);
|
||||||
|
@ -414,7 +414,7 @@ public class ToolSettingsTab extends AbstractCBuildPropertyTab implements IPrefe
|
||||||
// with an object in the new element list.
|
// with an object in the new element list.
|
||||||
// Otherwise, select the first tool in the tree
|
// Otherwise, select the first tool in the tree
|
||||||
Object primaryObject = null;
|
Object primaryObject = null;
|
||||||
if (selectedElement != null) {
|
if (selectedElement != null && newElements != null) {
|
||||||
selectedElement = matchSelectionElement(selectedElement, newElements);
|
selectedElement = matchSelectionElement(selectedElement, newElements);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2008, 2010 QNX Software Systems and others.
|
* Copyright (c) 2008, 2011 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -30,6 +30,7 @@ import org.eclipse.cdt.core.model.ICProject;
|
||||||
import org.eclipse.cdt.core.testplugin.CProjectHelper;
|
import org.eclipse.cdt.core.testplugin.CProjectHelper;
|
||||||
import org.eclipse.cdt.core.testplugin.CTestPlugin;
|
import org.eclipse.cdt.core.testplugin.CTestPlugin;
|
||||||
import org.eclipse.core.internal.registry.ExtensionRegistry;
|
import org.eclipse.core.internal.registry.ExtensionRegistry;
|
||||||
|
import org.eclipse.core.resources.IMarker;
|
||||||
import org.eclipse.core.resources.IResource;
|
import org.eclipse.core.resources.IResource;
|
||||||
import org.eclipse.core.resources.IWorkspace;
|
import org.eclipse.core.resources.IWorkspace;
|
||||||
import org.eclipse.core.resources.IWorkspaceDescription;
|
import org.eclipse.core.resources.IWorkspaceDescription;
|
||||||
|
@ -305,4 +306,24 @@ public class ErrorParserManagerTest extends TestCase {
|
||||||
assertEquals(" la la 99 ",end);
|
assertEquals(" la la 99 ",end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class TestParser4 implements IErrorParser {
|
||||||
|
public boolean processLine(String line, ErrorParserManager eoParser) {
|
||||||
|
ProblemMarkerInfo problemMarkerInfo = new ProblemMarkerInfo(null, 0, "Workspace level marker", IMarker.SEVERITY_INFO, null);
|
||||||
|
eoParser.addProblemMarker(problemMarkerInfo);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void testWorkspaceLevelError() throws IOException {
|
||||||
|
String id = addErrorParserExtension("test4", TestParser4.class);
|
||||||
|
epManager = new ErrorParserManager(null, markerGenerator, new String[] { id });
|
||||||
|
|
||||||
|
StringBuffer buf = new StringBuffer("errorT: ");
|
||||||
|
output(buf.toString()+"\n");
|
||||||
|
end();
|
||||||
|
assertEquals(1, errorList.size());
|
||||||
|
ProblemMarkerInfo problemMarkerInfo = errorList.get(0);
|
||||||
|
assertEquals("Workspace level marker", problemMarkerInfo.description);
|
||||||
|
assertTrue(problemMarkerInfo.file instanceof IWorkspaceRoot);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,7 +118,7 @@ public class ErrorParserManager extends OutputStream {
|
||||||
* @param parsersIDs - array of error parsers' IDs.
|
* @param parsersIDs - array of error parsers' IDs.
|
||||||
*/
|
*/
|
||||||
public ErrorParserManager(IProject project, IMarkerGenerator markerGenerator, String[] parsersIDs) {
|
public ErrorParserManager(IProject project, IMarkerGenerator markerGenerator, String[] parsersIDs) {
|
||||||
this(project, project.getLocationURI(), markerGenerator, parsersIDs);
|
this(project, (URI)null, markerGenerator, parsersIDs);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -154,8 +154,10 @@ public class ErrorParserManager extends OutputStream {
|
||||||
|
|
||||||
if (baseDirectoryURI != null)
|
if (baseDirectoryURI != null)
|
||||||
fBaseDirectoryURI = baseDirectoryURI;
|
fBaseDirectoryURI = baseDirectoryURI;
|
||||||
else
|
else if (project != null)
|
||||||
fBaseDirectoryURI = project.getLocationURI();
|
fBaseDirectoryURI = project.getLocationURI();
|
||||||
|
else
|
||||||
|
fBaseDirectoryURI = org.eclipse.core.filesystem.URIUtil.toURI(System.getProperty("user.dir")); // CWD //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
|
|
||||||
private void enableErrorParsers(String[] parsersIDs) {
|
private void enableErrorParsers(String[] parsersIDs) {
|
||||||
|
@ -420,12 +422,15 @@ outer:
|
||||||
// Try to find best match considering known partial path
|
// Try to find best match considering known partial path
|
||||||
if (file==null) {
|
if (file==null) {
|
||||||
path = path.setDevice(null);
|
path = path.setDevice(null);
|
||||||
IProject[] prjs = new IProject[] { fProject };
|
IFile[] files = null;
|
||||||
IFile[] files = ResourceLookup.findFilesByName(path, prjs, false);
|
if (fProject != null) {
|
||||||
if (files.length == 0)
|
IProject[] prjs = new IProject[] { fProject };
|
||||||
files = ResourceLookup.findFilesByName(path, prjs, /* ignoreCase */ true);
|
files = ResourceLookup.findFilesByName(path, prjs, false);
|
||||||
if (files.length == 0) {
|
if (files.length == 0)
|
||||||
prjs = ResourcesPlugin.getWorkspace().getRoot().getProjects();
|
files = ResourceLookup.findFilesByName(path, prjs, /* ignoreCase */ true);
|
||||||
|
}
|
||||||
|
if (files == null || files.length == 0) {
|
||||||
|
IProject[] prjs = ResourcesPlugin.getWorkspace().getRoot().getProjects();
|
||||||
files = ResourceLookup.findFilesByName(path, prjs, false);
|
files = ResourceLookup.findFilesByName(path, prjs, false);
|
||||||
if (files.length == 0)
|
if (files.length == 0)
|
||||||
files = ResourceLookup.findFilesByName(path, prjs, /* ignoreCase */ true);
|
files = ResourceLookup.findFilesByName(path, prjs, /* ignoreCase */ true);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2000, 2009 QNX Software Systems and others.
|
* Copyright (c) 2000, 2011 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -10,6 +10,7 @@
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.core;
|
package org.eclipse.cdt.core;
|
||||||
|
|
||||||
|
import org.eclipse.core.resources.IMarker;
|
||||||
import org.eclipse.core.resources.IResource;
|
import org.eclipse.core.resources.IResource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -17,9 +18,9 @@ import org.eclipse.core.resources.IResource;
|
||||||
* @noextend This interface is not intended to be extended by clients.
|
* @noextend This interface is not intended to be extended by clients.
|
||||||
*/
|
*/
|
||||||
public interface IMarkerGenerator {
|
public interface IMarkerGenerator {
|
||||||
int SEVERITY_INFO = 0;
|
int SEVERITY_INFO = IMarker.SEVERITY_INFO; // 0
|
||||||
int SEVERITY_WARNING = 1;
|
int SEVERITY_WARNING = IMarker.SEVERITY_WARNING; // 1
|
||||||
int SEVERITY_ERROR_RESOURCE = 2;
|
int SEVERITY_ERROR_RESOURCE = IMarker.SEVERITY_ERROR; // 2
|
||||||
int SEVERITY_ERROR_BUILD = 3;
|
int SEVERITY_ERROR_BUILD = 3;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -19,6 +19,7 @@ import java.util.Map;
|
||||||
import org.eclipse.cdt.core.resources.ACBuilder;
|
import org.eclipse.cdt.core.resources.ACBuilder;
|
||||||
import org.eclipse.core.resources.IMarker;
|
import org.eclipse.core.resources.IMarker;
|
||||||
import org.eclipse.core.resources.IResource;
|
import org.eclipse.core.resources.IResource;
|
||||||
|
import org.eclipse.core.resources.ResourcesPlugin;
|
||||||
import org.eclipse.core.runtime.IPath;
|
import org.eclipse.core.runtime.IPath;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -52,7 +53,7 @@ public class ProblemMarkerInfo {
|
||||||
* @param variableName - the name of the variable involved in the error if any.
|
* @param variableName - the name of the variable involved in the error if any.
|
||||||
*/
|
*/
|
||||||
public ProblemMarkerInfo(IResource file, int lineNumber, String description, int severity, String variableName) {
|
public ProblemMarkerInfo(IResource file, int lineNumber, String description, int severity, String variableName) {
|
||||||
this.file = file;
|
this.file = (file != null) ? file : ResourcesPlugin.getWorkspace().getRoot();
|
||||||
this.lineNumber = lineNumber;
|
this.lineNumber = lineNumber;
|
||||||
this.description = description;
|
this.description = description;
|
||||||
this.severity = severity;
|
this.severity = severity;
|
||||||
|
|
|
@ -918,8 +918,10 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor,
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int visit(IASTStatement node) {
|
public int visit(IASTStatement node) {
|
||||||
if (startsWithMacroExpansion(node))
|
if (scribe.scanner.getCurrentPosition() <= node.getFileLocation().getNodeOffset() &&
|
||||||
|
startsWithMacroExpansion(node)) {
|
||||||
scribe.printCommentPreservingNewLines();
|
scribe.printCommentPreservingNewLines();
|
||||||
|
}
|
||||||
if (!startNode(node)) { return PROCESS_SKIP; }
|
if (!startNode(node)) { return PROCESS_SKIP; }
|
||||||
int indentLevel= scribe.indentationLevel;
|
int indentLevel= scribe.indentationLevel;
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -2472,8 +2472,10 @@ public class CodeFormatterTest extends BaseUITestCase {
|
||||||
//#define MY_MACRO switch (0) case 0: default: if (bool x = false) ; else GetStream()
|
//#define MY_MACRO switch (0) case 0: default: if (bool x = false) ; else GetStream()
|
||||||
//
|
//
|
||||||
//void test() {
|
//void test() {
|
||||||
//MY_MACRO << "Loooooooooooooooooooong string literal" << " another literal.";
|
//MY_MACRO
|
||||||
//MY_MACRO << "Looooooooooooooooooooong string literal" << " another literal.";
|
//<< "Loooooooooooooooooooong string literal" << " another literal.";
|
||||||
|
//MY_MACRO
|
||||||
|
//<< "Looooooooooooooooooooong string literal" << " another literal.";
|
||||||
//}
|
//}
|
||||||
|
|
||||||
//struct Stream {
|
//struct Stream {
|
||||||
|
|
|
@ -37,7 +37,6 @@ import org.eclipse.swt.events.SelectionAdapter;
|
||||||
import org.eclipse.swt.events.SelectionEvent;
|
import org.eclipse.swt.events.SelectionEvent;
|
||||||
import org.eclipse.swt.graphics.Font;
|
import org.eclipse.swt.graphics.Font;
|
||||||
import org.eclipse.swt.graphics.Image;
|
import org.eclipse.swt.graphics.Image;
|
||||||
import org.eclipse.swt.graphics.Point;
|
|
||||||
import org.eclipse.swt.layout.GridData;
|
import org.eclipse.swt.layout.GridData;
|
||||||
import org.eclipse.swt.layout.GridLayout;
|
import org.eclipse.swt.layout.GridLayout;
|
||||||
import org.eclipse.swt.widgets.Button;
|
import org.eclipse.swt.widgets.Button;
|
||||||
|
@ -124,6 +123,7 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab {
|
||||||
};
|
};
|
||||||
|
|
||||||
private static final Comparator<Object> comp = CDTListComparator.getInstance();
|
private static final Comparator<Object> comp = CDTListComparator.getInstance();
|
||||||
|
private static String selectedLanguageId;
|
||||||
|
|
||||||
private static final int[] DEFAULT_SASH_WEIGHTS = new int[] { 10, 30 };
|
private static final int[] DEFAULT_SASH_WEIGHTS = new int[] { 10, 30 };
|
||||||
|
|
||||||
|
@ -312,6 +312,7 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab {
|
||||||
ICLanguageSetting langSetting = (ICLanguageSetting) items[0].getData();
|
ICLanguageSetting langSetting = (ICLanguageSetting) items[0].getData();
|
||||||
if (langSetting != null) {
|
if (langSetting != null) {
|
||||||
lang = langSetting;
|
lang = langSetting;
|
||||||
|
selectedLanguageId = lang.getLanguageId();
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -394,7 +395,7 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab {
|
||||||
if (rcDes == null || !canBeVisible()) return;
|
if (rcDes == null || !canBeVisible()) return;
|
||||||
updateExport();
|
updateExport();
|
||||||
langTree.removeAll();
|
langTree.removeAll();
|
||||||
TreeItem firstItem = null;
|
TreeItem selectedItem = null;
|
||||||
ls = getLangSetting(rcDes);
|
ls = getLangSetting(rcDes);
|
||||||
if (ls != null) {
|
if (ls != null) {
|
||||||
Arrays.sort(ls, CDTListComparator.getInstance());
|
Arrays.sort(ls, CDTListComparator.getInstance());
|
||||||
|
@ -414,15 +415,15 @@ public abstract class AbstractLangsListTab extends AbstractCPropertyTab {
|
||||||
langId = langSetting.getName();
|
langId = langSetting.getName();
|
||||||
t.setText(0, langId);
|
t.setText(0, langId);
|
||||||
t.setData(langSetting);
|
t.setData(langSetting);
|
||||||
if (firstItem == null) {
|
if (selectedItem == null || langSetting.getLanguageId().equals(selectedLanguageId)) {
|
||||||
firstItem = t;
|
selectedItem = t;
|
||||||
lang = langSetting;
|
lang = langSetting;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (firstItem != null && table != null) {
|
if (selectedItem != null && table != null) {
|
||||||
langTree.setSelection(firstItem);
|
langTree.setSelection(selectedItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
update();
|
update();
|
||||||
|
|
|
@ -151,6 +151,8 @@ implements
|
||||||
private static final String PREF_ASK_REINDEX = "askReindex"; //$NON-NLS-1$
|
private static final String PREF_ASK_REINDEX = "askReindex"; //$NON-NLS-1$
|
||||||
|
|
||||||
private Map<URL, Image> loadedIcons = new HashMap<URL, Image>();
|
private Map<URL, Image> loadedIcons = new HashMap<URL, Image>();
|
||||||
|
private static Map<Class<? extends AbstractPage>, Class<? extends ICPropertyTab>> recentTabs =
|
||||||
|
new HashMap<Class<? extends AbstractPage>, Class<? extends ICPropertyTab>>();
|
||||||
|
|
||||||
private final Image IMG_WARN = CDTSharedImages.getImage(CDTSharedImages.IMG_OBJS_REFACTORING_WARNING);
|
private final Image IMG_WARN = CDTSharedImages.getImage(CDTSharedImages.IMG_OBJS_REFACTORING_WARNING);
|
||||||
/*
|
/*
|
||||||
|
@ -362,20 +364,40 @@ implements
|
||||||
// Set listener after data load, to avoid firing
|
// Set listener after data load, to avoid firing
|
||||||
// selection event on not-initialized tab items
|
// selection event on not-initialized tab items
|
||||||
if (folder != null) {
|
if (folder != null) {
|
||||||
folder.addSelectionListener(new SelectionAdapter() {
|
folder.addSelectionListener(new SelectionAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void widgetSelected(org.eclipse.swt.events.SelectionEvent event) {
|
public void widgetSelected(org.eclipse.swt.events.SelectionEvent event) {
|
||||||
if (folder.getSelection().length > 0 ) {
|
if (folder.getSelection().length > 0 ) {
|
||||||
ICPropertyTab newTab = (ICPropertyTab)folder.getSelection()[0].getData();
|
updateSelectedTab();
|
||||||
if (newTab != null && currentTab != newTab) {
|
}
|
||||||
if (currentTab != null) currentTab.handleTabEvent(ICPropertyTab.VISIBLE, null);
|
}
|
||||||
currentTab = newTab;
|
});
|
||||||
currentTab.handleTabEvent(ICPropertyTab.VISIBLE, NOT_NULL);
|
if (folder.getItemCount() > 0) {
|
||||||
}
|
int selectedTab = 0;
|
||||||
}
|
Class<? extends ICPropertyTab> recentTab = recentTabs.get(getClass());
|
||||||
}
|
if (recentTab != null) {
|
||||||
});
|
TabItem[] tabs = folder.getItems();
|
||||||
if (folder.getItemCount() > 0) folder.setSelection(0);
|
for (int i = 0; i < tabs.length; i++) {
|
||||||
|
TabItem control = tabs[i];
|
||||||
|
if (recentTab.isInstance(control.getData())) {
|
||||||
|
selectedTab = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
folder.setSelection(selectedTab);
|
||||||
|
updateSelectedTab();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateSelectedTab() {
|
||||||
|
ICPropertyTab newTab = (ICPropertyTab)folder.getSelection()[0].getData();
|
||||||
|
if (newTab != null && currentTab != newTab) {
|
||||||
|
recentTabs.put(getClass(), newTab.getClass());
|
||||||
|
if (currentTab != null) currentTab.handleTabEvent(ICPropertyTab.VISIBLE, null);
|
||||||
|
currentTab = newTab;
|
||||||
|
currentTab.handleTabEvent(ICPropertyTab.VISIBLE, NOT_NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Reference in a new issue