mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
The IndexView now skips linkages in the hierarchy if there is only one in a project (i.e. not a multi-language project). Also fixed a bug with paths in the GCCLanguage and warnings in GPPLanguage.
This commit is contained in:
parent
4f0893f7f7
commit
e9eb7ef7e6
3 changed files with 25 additions and 15 deletions
|
@ -92,20 +92,22 @@ public class GCCLanguage extends PlatformObject implements ILanguage {
|
||||||
fileCreator = SavedCodeReaderFactory.getInstance();
|
fileCreator = SavedCodeReaderFactory.getInstance();
|
||||||
|
|
||||||
CodeReader reader;
|
CodeReader reader;
|
||||||
|
IFile rfile = (IFile)file.getResource();
|
||||||
if (file instanceof IWorkingCopy) {
|
if (file instanceof IWorkingCopy) {
|
||||||
// get the working copy contents
|
// get the working copy contents
|
||||||
IFile rfile = (IFile)file.getResource();
|
|
||||||
reader = new CodeReader(rfile.getLocation().toOSString(), file.getContents());
|
reader = new CodeReader(rfile.getLocation().toOSString(), file.getContents());
|
||||||
} else {
|
} else {
|
||||||
String path = file.getPath().toOSString();
|
String path
|
||||||
|
= rfile != null
|
||||||
|
? rfile.getLocation().toOSString()
|
||||||
|
: file.getPath().toOSString();
|
||||||
reader = fileCreator.createCodeReaderForTranslationUnit(path);
|
reader = fileCreator.createCodeReaderForTranslationUnit(path);
|
||||||
if (reader == null)
|
if (reader == null)
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IScannerExtensionConfiguration scannerExtensionConfiguration
|
||||||
IScannerExtensionConfiguration scannerExtensionConfiguration =
|
= C_GNU_SCANNER_EXTENSION;
|
||||||
scannerExtensionConfiguration = C_GNU_SCANNER_EXTENSION;
|
|
||||||
|
|
||||||
IScanner scanner = new DOMScanner(reader, scanInfo, ParserMode.COMPLETE_PARSE,
|
IScanner scanner = new DOMScanner(reader, scanInfo, ParserMode.COMPLETE_PARSE,
|
||||||
ParserLanguage.C, ParserFactory.createDefaultLogService(), scannerExtensionConfiguration, fileCreator );
|
ParserLanguage.C, ParserFactory.createDefaultLogService(), scannerExtensionConfiguration, fileCreator );
|
||||||
|
|
|
@ -90,8 +90,8 @@ public class GPPLanguage extends PlatformObject implements ILanguage {
|
||||||
else
|
else
|
||||||
fileCreator = SavedCodeReaderFactory.getInstance();
|
fileCreator = SavedCodeReaderFactory.getInstance();
|
||||||
|
|
||||||
IFile rfile = (IFile)file.getResource();
|
|
||||||
CodeReader reader;
|
CodeReader reader;
|
||||||
|
IFile rfile = (IFile)file.getResource();
|
||||||
if (file instanceof IWorkingCopy) {
|
if (file instanceof IWorkingCopy) {
|
||||||
// get the working copy contents
|
// get the working copy contents
|
||||||
reader = new CodeReader(rfile.getLocation().toOSString(), file.getContents());
|
reader = new CodeReader(rfile.getLocation().toOSString(), file.getContents());
|
||||||
|
@ -105,8 +105,8 @@ public class GPPLanguage extends PlatformObject implements ILanguage {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
IScannerExtensionConfiguration scannerExtensionConfiguration =
|
IScannerExtensionConfiguration scannerExtensionConfiguration
|
||||||
scannerExtensionConfiguration = CPP_GNU_SCANNER_EXTENSION;
|
= CPP_GNU_SCANNER_EXTENSION;
|
||||||
|
|
||||||
IScanner scanner = new DOMScanner(reader, scanInfo, ParserMode.COMPLETE_PARSE,
|
IScanner scanner = new DOMScanner(reader, scanInfo, ParserMode.COMPLETE_PARSE,
|
||||||
ParserLanguage.CPP, ParserFactory.createDefaultLogService(), scannerExtensionConfiguration, fileCreator );
|
ParserLanguage.CPP, ParserFactory.createDefaultLogService(), scannerExtensionConfiguration, fileCreator );
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
package org.eclipse.cdt.internal.ui.indexview;
|
package org.eclipse.cdt.internal.ui.indexview;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.CCorePlugin;
|
import org.eclipse.cdt.core.CCorePlugin;
|
||||||
import org.eclipse.cdt.core.dom.IPDOM;
|
|
||||||
import org.eclipse.cdt.core.dom.IPDOMNode;
|
import org.eclipse.cdt.core.dom.IPDOMNode;
|
||||||
import org.eclipse.cdt.core.dom.IPDOMVisitor;
|
import org.eclipse.cdt.core.dom.IPDOMVisitor;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
|
import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
|
||||||
|
@ -29,10 +28,8 @@ import org.eclipse.cdt.core.model.ICProject;
|
||||||
import org.eclipse.cdt.internal.core.pdom.PDOM;
|
import org.eclipse.cdt.internal.core.pdom.PDOM;
|
||||||
import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding;
|
import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding;
|
||||||
import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage;
|
import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage;
|
||||||
import org.eclipse.cdt.internal.core.pdom.dom.PDOMMemberOwner;
|
|
||||||
import org.eclipse.cdt.internal.core.pdom.dom.PDOMName;
|
import org.eclipse.cdt.internal.core.pdom.dom.PDOMName;
|
||||||
import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode;
|
import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode;
|
||||||
import org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPNamespace;
|
|
||||||
import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider;
|
import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider;
|
||||||
import org.eclipse.cdt.ui.CUIPlugin;
|
import org.eclipse.cdt.ui.CUIPlugin;
|
||||||
import org.eclipse.core.resources.ResourcesPlugin;
|
import org.eclipse.core.resources.ResourcesPlugin;
|
||||||
|
@ -48,7 +45,6 @@ import org.eclipse.jface.action.Separator;
|
||||||
import org.eclipse.jface.viewers.DoubleClickEvent;
|
import org.eclipse.jface.viewers.DoubleClickEvent;
|
||||||
import org.eclipse.jface.viewers.IDoubleClickListener;
|
import org.eclipse.jface.viewers.IDoubleClickListener;
|
||||||
import org.eclipse.jface.viewers.ISelectionChangedListener;
|
import org.eclipse.jface.viewers.ISelectionChangedListener;
|
||||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
|
||||||
import org.eclipse.jface.viewers.ITreeContentProvider;
|
import org.eclipse.jface.viewers.ITreeContentProvider;
|
||||||
import org.eclipse.jface.viewers.LabelProvider;
|
import org.eclipse.jface.viewers.LabelProvider;
|
||||||
import org.eclipse.jface.viewers.SelectionChangedEvent;
|
import org.eclipse.jface.viewers.SelectionChangedEvent;
|
||||||
|
@ -104,7 +100,7 @@ public class IndexView extends ViewPart implements PDOM.IListener {
|
||||||
* editor (if option enabled)
|
* editor (if option enabled)
|
||||||
*/
|
*/
|
||||||
void handleSelectionChanged(SelectionChangedEvent event) {
|
void handleSelectionChanged(SelectionChangedEvent event) {
|
||||||
final IStructuredSelection selection = (IStructuredSelection) event.getSelection();
|
// final IStructuredSelection selection = (IStructuredSelection) event.getSelection();
|
||||||
// updateStatusLine(selection);
|
// updateStatusLine(selection);
|
||||||
// updateActionBars(selection);
|
// updateActionBars(selection);
|
||||||
if (isLinking) {
|
if (isLinking) {
|
||||||
|
@ -187,8 +183,13 @@ public class IndexView extends ViewPart implements PDOM.IListener {
|
||||||
if (parentElement instanceof ICProject) {
|
if (parentElement instanceof ICProject) {
|
||||||
PDOM pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM((ICProject)parentElement);
|
PDOM pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM((ICProject)parentElement);
|
||||||
int n = 0;
|
int n = 0;
|
||||||
for (PDOMLinkage linkage = pdom.getFirstLinkage(); linkage != null; linkage = linkage.getNextLinkage())
|
PDOMLinkage firstLinkage = pdom.getFirstLinkage();
|
||||||
|
for (PDOMLinkage linkage = firstLinkage; linkage != null; linkage = linkage.getNextLinkage())
|
||||||
++n;
|
++n;
|
||||||
|
if (n == 1) {
|
||||||
|
// Skip linkages in hierarchy if there is only one
|
||||||
|
return getChildren(firstLinkage);
|
||||||
|
}
|
||||||
PDOMLinkage[] linkages = new PDOMLinkage[n];
|
PDOMLinkage[] linkages = new PDOMLinkage[n];
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (PDOMLinkage linkage = pdom.getFirstLinkage(); linkage != null; linkage = linkage.getNextLinkage())
|
for (PDOMLinkage linkage = pdom.getFirstLinkage(); linkage != null; linkage = linkage.getNextLinkage())
|
||||||
|
@ -218,7 +219,14 @@ public class IndexView extends ViewPart implements PDOM.IListener {
|
||||||
try {
|
try {
|
||||||
if (element instanceof ICProject) {
|
if (element instanceof ICProject) {
|
||||||
PDOM pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM((ICProject)element);
|
PDOM pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM((ICProject)element);
|
||||||
return pdom.getFirstLinkage() != null;
|
PDOMLinkage firstLinkage = pdom.getFirstLinkage();
|
||||||
|
if (firstLinkage == null)
|
||||||
|
return false;
|
||||||
|
else if (firstLinkage.getNextLinkage() == null)
|
||||||
|
// Skipping linkages if only one
|
||||||
|
return hasChildren(firstLinkage);
|
||||||
|
else
|
||||||
|
return true;
|
||||||
} else if (element instanceof IPDOMNode) {
|
} else if (element instanceof IPDOMNode) {
|
||||||
HasChildren hasChildren = new HasChildren();
|
HasChildren hasChildren = new HasChildren();
|
||||||
try {
|
try {
|
||||||
|
|
Loading…
Add table
Reference in a new issue