--- ./results/plugins/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/DefinedSymbolHover.java.fix 2006-09-11 15:53:00.000000000 -0400
+++ ./results/plugins/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/c/hover/DefinedSymbolHover.java 2006-09-11 15:52:51.000000000 -0400
@@ -0,0 +1,67 @@
+package org.eclipse.cdt.internal.ui.text.c.hover;
+
+import java.util.Map;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.model.IWorkingCopy;
+import org.eclipse.cdt.core.parser.IScannerInfo;
+import org.eclipse.cdt.core.parser.IScannerInfoProvider;
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.cdt.ui.IWorkingCopyManager;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+
+public class DefinedSymbolHover extends AbstractCEditorTextHover {
+
+ /**
+ *
+ */
+ public DefinedSymbolHover() {
+ super();
+ }
+
+ /*
+ * @see ITextHover#getHoverInfo(ITextViewer, IRegion)
+ */
+ public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {
+ IEditorPart editor = getEditor();
+ if (editor != null) {
+ IEditorInput input= editor.getEditorInput();
+ IWorkingCopyManager manager= CUIPlugin.getDefault().getWorkingCopyManager();
+ IWorkingCopy copy = manager.getWorkingCopy(input);
+ if (copy == null) {
+ return null;
+ }
+
+ String expression;
+ try {
+ expression = textViewer.getDocument().get(hoverRegion.getOffset(), hoverRegion.getLength());
+ expression = expression.trim();
+ if (expression.length() == 0)
+ return null;
+
+ String source = null;
+ IResource res = copy.getUnderlyingResource();
+
+ IScannerInfo info;
+ IScannerInfoProvider provider = CCorePlugin.getDefault().getScannerInfoProvider(res.getProject());
+ if (provider != null) {
+ info = provider.getScannerInformation(res);
+ Map definedSymbols = info.getDefinedSymbols();
+ String x = (String)definedSymbols.get(expression);
+ if (x != null) {
+ source = "-D" + expression + (x.length() > 0 ? " = " +
+ x : "");
+ }
+ }
+ return source;
+ } catch (BadLocationException e) {
+ }
+ }
+ return null;
+ }
+}
--- ./results/plugins/org.eclipse.cdt.ui/plugin.properties.fix 2006-09-11 15:50:03.000000000 -0400
+++ ./results/plugins/org.eclipse.cdt.ui/plugin.properties 2006-09-11 15:50:43.000000000 -0400
@@ -283,6 +283,8 @@ ViewCommand.typeHierarchy.description= S
CEditorTextHoversName=C Editor Text Hovers
sourceHover= Source
sourceHoverDescription= Shows the source of the selected element.
+definedSymbolHover= Defined Symbol
+definedSymbolHoverDescription= Shows the definition of a selected defined symbol.
cdocHover= Documentation
cdocHoverDescription= Shows the documentation of the selected element.
sequentialHover= Combined Hover
--- ./results/plugins/org.eclipse.cdt.ui/plugin.xml.fix 2006-09-11 15:49:54.000000000 -0400
+++ ./results/plugins/org.eclipse.cdt.ui/plugin.xml 2006-09-11 15:51:19.000000000 -0400
@@ -145,6 +145,12 @@
class="org.eclipse.cdt.internal.ui.text.c.hover.CSourceHover"
id="org.eclipse.cdt.ui.CSourceHover">
</hover>
+ <hover
+ label="%definedSymbolHover"
+ description="%definedSymbolHoverDescription"
+ class="org.eclipse.cdt.internal.ui.text.c.hover.DefinedSymbolHover"
+ id="org.eclipse.cdt.ui.DefinedSymbolHover">
+ </hover>
<!--hover
label="%problemHover"
description="%problemHoverDescription"