diff --git a/core/org.eclipse.cdt.ui.tests/resources/semanticHighlighting/SHTest.cpp b/core/org.eclipse.cdt.ui.tests/resources/semanticHighlighting/SHTest.cpp index 071e3ce998b..875eb016fbf 100644 --- a/core/org.eclipse.cdt.ui.tests/resources/semanticHighlighting/SHTest.cpp +++ b/core/org.eclipse.cdt.ui.tests/resources/semanticHighlighting/SHTest.cpp @@ -7,7 +7,7 @@ enum Enumeration { const int globalConstant = 0; int globalVariable = 0; -static int globalStaticVariable; +static int globalStaticVariable = 0; void globalFunc(int a); static void globalStaticFunc() { @@ -29,6 +29,7 @@ public: static int staticPubMethod(int arg) { FUNCTION_MACRO(arg); globalFunc(arg); + return globalStaticVariable; } int pubMethod(); @@ -71,7 +72,7 @@ private: }; -template class TemplateClass { +template class TemplateClass { T1 tArg1; T2 tArg2; TemplateClass(T1 arg1, T2 arg2) { @@ -80,7 +81,7 @@ template class TemplateClass { } }; -template class PartialInstantiatedClass : TemplateClass {}; +template class PartialInstantiatedClass : TemplateClass {}; struct CppStruct { @@ -94,8 +95,10 @@ union CppUnion { typedef CppUnion TUnion; namespace ns { - int namespaceField = 0; + int namespaceVar = 0; int namespaceFunc() { + globalStaticFunc(); + return namespaceVar; } } @@ -104,17 +107,19 @@ int ClassContainer::protMethod() { } int ClassContainer::pubMethod() { - int localVar; - return pubField; + int localVar = 0; + return pubField + localVar; } int ClassContainer::staticPrivMethod() { - CppStruct st= new CppStruct(); - st.structField= 1; - CppUnion un= new CppUnion(); + CppStruct* st= new CppStruct(); + st->structField= 1; + CppUnion un; un.unionField= 2; staticPubMethod(staticPrivField); label: FUNCTION_MACRO(0); + if (un.unionField < st->structField) goto label; + problemMethod(); return 0; } diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AutomatedSuite.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AutomatedSuite.java index c233dded7a3..74a3980f805 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AutomatedSuite.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/AutomatedSuite.java @@ -19,6 +19,7 @@ import org.eclipse.cdt.ui.tests.text.CBreakIteratorTest; import org.eclipse.cdt.ui.tests.text.CPartitionerTest; import org.eclipse.cdt.ui.tests.text.CWordIteratorTest; import org.eclipse.cdt.ui.tests.text.NumberRuleTest; +import org.eclipse.cdt.ui.tests.text.SemanticHighlightingTest; import org.eclipse.cdt.ui.tests.text.contentassist.CompletionFailedTest_MemberReference_Arrow_Prefix2; import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_ArgumentType_NoPrefix; import org.eclipse.cdt.ui.tests.text.contentassist.CompletionTest_ArgumentType_NoPrefix2; @@ -145,6 +146,10 @@ public class AutomatedSuite extends TestSuite { // Break iterator tests. addTest(CBreakIteratorTest.suite()); addTest(CWordIteratorTest.suite()); + + // highlighting tests + addTest(SemanticHighlightingTest.suite()); + } } diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/AbstractSemanticHighlightingTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/AbstractSemanticHighlightingTest.java index 72d48ed9268..0bdb6580298 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/AbstractSemanticHighlightingTest.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/AbstractSemanticHighlightingTest.java @@ -91,6 +91,8 @@ public class AbstractSemanticHighlightingTest extends TestCase { private static SourceViewer fSourceViewer; + private String fCurrentHighlighting; + protected void setUp() throws Exception { super.setUp(); disableAllSemanticHighlightings(); @@ -112,6 +114,7 @@ public class AbstractSemanticHighlightingTest extends TestCase { String toString(Position[] positions) throws BadLocationException { StringBuffer buf= new StringBuffer(); + buf.append("// "+fCurrentHighlighting+'\n'); IDocument document= fSourceViewer.getDocument(); buf.append("Position[] expected= new Position[] {\n"); for (int i= 0, n= positions.length; i < n; i++) { @@ -133,6 +136,7 @@ public class AbstractSemanticHighlightingTest extends TestCase { } protected void setUpSemanticHighlighting(String semanticHighlighting) { + fCurrentHighlighting= semanticHighlighting; enableSemanticHighlighting(semanticHighlighting); EditorTestHelper.forceReconcile(fSourceViewer); assertTrue(EditorTestHelper.joinReconciler(fSourceViewer, 0, 10000, 100)); diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/SemanticHighlightingTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/SemanticHighlightingTest.java index 0196a034be6..1e5fbfe58d4 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/SemanticHighlightingTest.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/SemanticHighlightingTest.java @@ -27,6 +27,8 @@ import org.eclipse.cdt.internal.ui.editor.SemanticHighlightings; */ public class SemanticHighlightingTest extends AbstractSemanticHighlightingTest { + private static final boolean PRINT_POSITIONS= false; + private static final Class THIS= SemanticHighlightingTest.class; public static Test suite() { @@ -50,13 +52,13 @@ public class SemanticHighlightingTest extends AbstractSemanticHighlightingTest { Position[] expected= new Position[] { createPosition(23, 15, 14), createPosition(25, 21, 19), - createPosition(41, 21, 20), - createPosition(42, 15, 15), - createPosition(56, 21, 20), - createPosition(57, 15, 15), - createPosition(115, 20, 15), + createPosition(42, 21, 20), + createPosition(43, 15, 15), + createPosition(57, 21, 20), + createPosition(58, 15, 15), + createPosition(118, 20, 15), }; -// System.out.println(toString(actual)); + if (PRINT_POSITIONS) System.out.println(toString(actual)); assertEqualPositions(expected, actual); } @@ -66,22 +68,24 @@ public class SemanticHighlightingTest extends AbstractSemanticHighlightingTest { Position[] expected= new Position[] { createPosition(24, 14, 13), createPosition(26, 8, 8), - createPosition(43, 15, 14), - createPosition(44, 8, 9), - createPosition(58, 15, 14), - createPosition(59, 8, 9), - createPosition(74, 7, 5), + createPosition(44, 15, 14), + createPosition(45, 8, 9), + createPosition(59, 15, 14), + createPosition(60, 8, 9), createPosition(75, 7, 5), - createPosition(77, 8, 5), + createPosition(76, 7, 5), createPosition(78, 8, 5), - createPosition(86, 8, 11), - createPosition(90, 8, 10), - createPosition(102, 11, 9), - createPosition(107, 11, 8), - createPosition(112, 7, 11), - createPosition(114, 7, 10), + createPosition(79, 8, 5), + createPosition(87, 8, 11), + createPosition(91, 8, 10), + createPosition(105, 11, 9), + createPosition(110, 11, 8), + createPosition(115, 8, 11), + createPosition(117, 7, 10), + createPosition(121, 11, 10), + createPosition(121, 28, 11), }; -// System.out.println(toString(actual)); + if (PRINT_POSITIONS) System.out.println(toString(actual)); assertEqualPositions(expected, actual); } @@ -90,32 +94,31 @@ public class SemanticHighlightingTest extends AbstractSemanticHighlightingTest { Position[] actual= getSemanticHighlightingPositions(); Position[] expected= new Position[] { createPosition(28, 15, 15), - createPosition(32, 8, 9), - createPosition(46, 15, 16), - createPosition(47, 8, 10), - createPosition(61, 15, 16), - createPosition(62, 8, 10), - createPosition(76, 4, 13), - createPosition(101, 4, 26), - createPosition(101, 20, 10), - createPosition(105, 4, 25), - createPosition(105, 20, 9), - createPosition(110, 4, 32), - createPosition(110, 20, 16), + createPosition(33, 8, 9), + createPosition(47, 15, 16), + createPosition(48, 8, 10), + createPosition(62, 15, 16), + createPosition(63, 8, 10), + createPosition(77, 4, 13), + createPosition(104, 4, 26), + createPosition(104, 20, 10), + createPosition(108, 4, 25), + createPosition(108, 20, 9), + createPosition(113, 4, 32), + createPosition(113, 20, 16), }; -// System.out.println(toString(actual)); + if (PRINT_POSITIONS) System.out.println(toString(actual)); assertEqualPositions(expected, actual); } public void testMethodInvocationHighlighting() throws Exception { setUpSemanticHighlighting(SemanticHighlightings.METHOD_INVOCATION); Position[] expected= new Position[] { - createPosition(111, 22, 9), - createPosition(113, 21, 8), - createPosition(115, 4, 15), + createPosition(114, 23, 9), + createPosition(118, 4, 15), }; Position[] actual= getSemanticHighlightingPositions(); -// System.out.println(toString(actual)); + if (PRINT_POSITIONS) System.out.println(toString(actual)); assertEqualPositions(expected, actual); } @@ -154,23 +157,26 @@ public class SemanticHighlightingTest extends AbstractSemanticHighlightingTest { public void testLocalVariableDeclarationHighlighting() throws Exception { setUpSemanticHighlighting(SemanticHighlightings.LOCAL_VARIABLE_DECLARATION); Position[] expected= new Position[] { - createPosition(106, 8, 8), - createPosition(111, 14, 2), - createPosition(113, 13, 2), + createPosition(109, 8, 8), + createPosition(114, 15, 2), + createPosition(116, 13, 2), }; Position[] actual= getSemanticHighlightingPositions(); -// System.out.println(toString(actual)); + if (PRINT_POSITIONS) System.out.println(toString(actual)); assertEqualPositions(expected, actual); } public void testLocalVariableHighlighting() throws Exception { setUpSemanticHighlighting(SemanticHighlightings.LOCAL_VARIABLE); Position[] expected= new Position[] { - createPosition(112, 4, 2), - createPosition(114, 4, 2), + createPosition(110, 22, 8), + createPosition(115, 4, 2), + createPosition(117, 4, 2), + createPosition(121, 8, 2), + createPosition(121, 24, 2), }; Position[] actual= getSemanticHighlightingPositions(); -// System.out.println(toString(actual)); + if (PRINT_POSITIONS) System.out.println(toString(actual)); assertEqualPositions(expected, actual); } @@ -182,12 +188,12 @@ public class SemanticHighlightingTest extends AbstractSemanticHighlightingTest { createPosition(28, 35, 3), createPosition(29, 8, 19), createPosition(30, 19, 3), - createPosition(76, 21, 4), - createPosition(76, 30, 4), - createPosition(77, 16, 4), + createPosition(77, 21, 4), + createPosition(77, 30, 4), createPosition(78, 16, 4), + createPosition(79, 16, 4), }; -// System.out.println(toString(actual)); + if (PRINT_POSITIONS) System.out.println(toString(actual)); assertEqualPositions(expected, actual); } @@ -195,8 +201,16 @@ public class SemanticHighlightingTest extends AbstractSemanticHighlightingTest { setUpSemanticHighlighting(SemanticHighlightings.TEMPLATE_PARAMETER); Position[] actual= getSemanticHighlightingPositions(); Position[] expected= new Position[] { - }; -// System.out.println(toString(actual)); + createPosition(74, 15, 2), + createPosition(74, 25, 2), + createPosition(75, 4, 2), + createPosition(76, 4, 2), + createPosition(77, 18, 2), + createPosition(77, 27, 2), + createPosition(83, 15, 2), + createPosition(83, 66, 2), + }; + if (PRINT_POSITIONS) System.out.println(toString(actual)); assertEqualPositions(expected, actual); } @@ -215,11 +229,11 @@ public class SemanticHighlightingTest extends AbstractSemanticHighlightingTest { Position[] actual= getSemanticHighlightingPositions(); Position[] expected= new Position[] { createPosition(3, 5, 11), - createPosition(34, 9, 14), - createPosition(49, 9, 15), - createPosition(64, 9, 15), + createPosition(35, 9, 14), + createPosition(50, 9, 15), + createPosition(65, 9, 15), }; -// System.out.println(toString(actual)); + if (PRINT_POSITIONS) System.out.println(toString(actual)); assertEqualPositions(expected, actual); } @@ -233,29 +247,30 @@ public class SemanticHighlightingTest extends AbstractSemanticHighlightingTest { createPosition(18, 23, 5), createPosition(18, 30, 5), createPosition(20, 17, 11), - createPosition(35, 10, 8), - createPosition(36, 10, 9), - createPosition(37, 10, 8), - createPosition(38, 12, 8), - createPosition(50, 10, 9), - createPosition(51, 10, 10), - createPosition(52, 10, 9), - createPosition(53, 12, 9), - createPosition(65, 10, 9), - createPosition(66, 10, 10), - createPosition(67, 10, 9), - createPosition(68, 12, 9), - createPosition(73, 22, 13), - createPosition(82, 19, 24), - createPosition(82, 46, 13), - createPosition(82, 63, 5), - createPosition(85, 7, 9), - createPosition(89, 6, 8), - createPosition(93, 8, 8), - createPosition(111, 4, 9), - createPosition(113, 4, 8), + createPosition(36, 10, 8), + createPosition(37, 10, 9), + createPosition(38, 10, 8), + createPosition(39, 12, 8), + createPosition(51, 10, 9), + createPosition(52, 10, 10), + createPosition(53, 10, 9), + createPosition(54, 12, 9), + createPosition(66, 10, 9), + createPosition(67, 10, 10), + createPosition(68, 10, 9), + createPosition(69, 12, 9), + createPosition(74, 35, 13), + createPosition(83, 25, 24), + createPosition(83, 52, 13), + createPosition(83, 52, 24), + createPosition(83, 70, 5), + createPosition(86, 7, 9), + createPosition(90, 6, 8), + createPosition(94, 8, 8), + createPosition(114, 4, 9), + createPosition(116, 4, 8), }; -// System.out.println(toString(actual)); + if (PRINT_POSITIONS) System.out.println(toString(actual)); assertEqualPositions(expected, actual); } @@ -266,22 +281,9 @@ public class SemanticHighlightingTest extends AbstractSemanticHighlightingTest { createPosition(11, 5, 10), createPosition(12, 12, 16), createPosition(19, 16, 10), - createPosition(28, 15, 15), - createPosition(32, 8, 9), - createPosition(46, 15, 16), - createPosition(47, 8, 10), - createPosition(61, 15, 16), - createPosition(62, 8, 10), - createPosition(76, 4, 13), - createPosition(97, 8, 13), - createPosition(101, 4, 26), - createPosition(101, 20, 10), - createPosition(105, 4, 25), - createPosition(105, 20, 9), - createPosition(110, 4, 32), - createPosition(110, 20, 16), + createPosition(98, 8, 13), }; -// System.out.println(toString(actual)); + if (PRINT_POSITIONS) System.out.println(toString(actual)); assertEqualPositions(expected, actual); } @@ -291,12 +293,10 @@ public class SemanticHighlightingTest extends AbstractSemanticHighlightingTest { Position[] expected= new Position[] { createPosition(29, 8, 19), createPosition(30, 8, 10), - createPosition(111, 22, 9), - createPosition(113, 21, 8), - createPosition(115, 4, 15), - createPosition(117, 4, 17), + createPosition(99, 1, 16), + createPosition(120, 4, 17), }; -// System.out.println(toString(actual)); + if (PRINT_POSITIONS) System.out.println(toString(actual)); assertEqualPositions(expected, actual); } @@ -308,9 +308,11 @@ public class SemanticHighlightingTest extends AbstractSemanticHighlightingTest { createPosition(7, 10, 14), createPosition(8, 4, 14), createPosition(9, 11, 20), - createPosition(96, 8, 14), + createPosition(31, 15, 20), + createPosition(97, 8, 12), + createPosition(100, 8, 12), }; -// System.out.println(toString(actual)); + if (PRINT_POSITIONS) System.out.println(toString(actual)); assertEqualPositions(expected, actual); } @@ -319,9 +321,9 @@ public class SemanticHighlightingTest extends AbstractSemanticHighlightingTest { Position[] actual= getSemanticHighlightingPositions(); Position[] expected= new Position[] { createPosition(29, 8, 19), - createPosition(117, 4, 17), + createPosition(120, 4, 17), }; -// System.out.println(toString(actual)); + if (PRINT_POSITIONS) System.out.println(toString(actual)); assertEqualPositions(expected, actual); } @@ -329,12 +331,12 @@ public class SemanticHighlightingTest extends AbstractSemanticHighlightingTest { setUpSemanticHighlighting(SemanticHighlightings.TYPEDEF); Position[] actual= getSemanticHighlightingPositions(); Position[] expected= new Position[] { - createPosition(38, 21, 10), - createPosition(53, 22, 11), - createPosition(68, 22, 11), - createPosition(93, 17, 6), + createPosition(39, 21, 10), + createPosition(54, 22, 11), + createPosition(69, 22, 11), + createPosition(94, 17, 6), }; -// System.out.println(toString(actual)); + if (PRINT_POSITIONS) System.out.println(toString(actual)); assertEqualPositions(expected, actual); } @@ -342,9 +344,9 @@ public class SemanticHighlightingTest extends AbstractSemanticHighlightingTest { setUpSemanticHighlighting(SemanticHighlightings.NAMESPACE); Position[] actual= getSemanticHighlightingPositions(); Position[] expected= new Position[] { - createPosition(95, 10, 2), + createPosition(96, 10, 2), }; -// System.out.println(toString(actual)); + if (PRINT_POSITIONS) System.out.println(toString(actual)); assertEqualPositions(expected, actual); } @@ -352,9 +354,10 @@ public class SemanticHighlightingTest extends AbstractSemanticHighlightingTest { setUpSemanticHighlighting(SemanticHighlightings.LABEL); Position[] actual= getSemanticHighlightingPositions(); Position[] expected= new Position[] { - createPosition(116, 0, 5), + createPosition(119, 0, 5), + createPosition(121, 46, 5), }; -// System.out.println(toString(actual)); + if (PRINT_POSITIONS) System.out.println(toString(actual)); assertEqualPositions(expected, actual); } @@ -363,11 +366,11 @@ public class SemanticHighlightingTest extends AbstractSemanticHighlightingTest { Position[] actual= getSemanticHighlightingPositions(); Position[] expected= new Position[] { createPosition(4, 4, 10), - createPosition(34, 25, 13), - createPosition(49, 26, 14), - createPosition(64, 26, 14), + createPosition(35, 25, 13), + createPosition(50, 26, 14), + createPosition(65, 26, 14), }; -// System.out.println(toString(actual)); + if (PRINT_POSITIONS) System.out.println(toString(actual)); assertEqualPositions(expected, actual); } @@ -375,16 +378,9 @@ public class SemanticHighlightingTest extends AbstractSemanticHighlightingTest { setUpSemanticHighlighting(SemanticHighlightings.PROBLEM); Position[] actual= getSemanticHighlightingPositions(); Position[] expected= new Position[] { - createPosition(73, 9, 2), - createPosition(73, 12, 2), - createPosition(74, 4, 2), - createPosition(75, 4, 2), - createPosition(76, 18, 2), - createPosition(76, 27, 2), - createPosition(82, 9, 2), - createPosition(82, 60, 2), + createPosition(122, 4, 13), }; -// System.out.println(toString(actual)); + if (PRINT_POSITIONS) System.out.println(toString(actual)); assertEqualPositions(expected, actual); } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CSourceViewer.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CSourceViewer.java index 840af2351a9..af25ecc576d 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CSourceViewer.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CSourceViewer.java @@ -18,8 +18,11 @@ import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.content.IContentType; +import org.eclipse.jface.text.Assert; import org.eclipse.jface.text.DocumentCommand; +import org.eclipse.jface.text.ITextPresentationListener; import org.eclipse.jface.text.ITextViewerExtension; +import org.eclipse.jface.text.TextViewer; import org.eclipse.jface.text.contentassist.IContentAssistant; import org.eclipse.jface.text.information.IInformationPresenter; import org.eclipse.jface.text.source.IOverviewRuler; @@ -221,4 +224,22 @@ public class CSourceViewer extends ProjectionViewer implements ITextViewerExtens super.setRangeIndication(offset, length, false); } } + + /** + * Prepend given listener to the list of presentation listeners + * + * @param listener The listener to be added. + * + * @see TextViewer#addTextPresentationListener(ITextPresentationListener) + * @since 4.0 + */ + public void prependTextPresentationListener(ITextPresentationListener listener) { + Assert.isNotNull(listener); + + if (fTextPresentationListeners == null) + fTextPresentationListeners= new ArrayList(); + + fTextPresentationListeners.remove(listener); + fTextPresentationListeners.add(0, listener); + } } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/InactiveCodeHighlighting.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/InactiveCodeHighlighting.java index bf597fface5..227ee771d7a 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/InactiveCodeHighlighting.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/InactiveCodeHighlighting.java @@ -255,7 +255,7 @@ public class InactiveCodeHighlighting implements ICReconcilingListener { inInactiveCode = true; } else if (elseStmt.taken() && inInactiveCode) { IASTNodeLocation nodeLocation = elseStmt.getNodeLocations()[0]; - int inactiveCodeEnd = nodeLocation.getNodeOffset() + nodeLocation.getNodeLength(); + int inactiveCodeEnd = nodeLocation.getNodeOffset() - 1; positions.add(new HighlightPosition(inactiveCodeStart, inactiveCodeEnd - inactiveCodeStart, fHighlightKey)); inInactiveCode = false; } @@ -267,7 +267,7 @@ public class InactiveCodeHighlighting implements ICReconcilingListener { inInactiveCode = true; } else if (elifStmt.taken() && inInactiveCode) { IASTNodeLocation nodeLocation = elifStmt.getNodeLocations()[0]; - int inactiveCodeEnd = nodeLocation.getNodeOffset() + nodeLocation.getNodeLength(); + int inactiveCodeEnd = nodeLocation.getNodeOffset() - 1; positions.add(new HighlightPosition(inactiveCodeStart, inactiveCodeEnd - inactiveCodeStart, fHighlightKey)); inInactiveCode = false; } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SemanticHighlightingPresenter.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SemanticHighlightingPresenter.java index e8206619f0b..2bed9190c03 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SemanticHighlightingPresenter.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SemanticHighlightingPresenter.java @@ -653,8 +653,7 @@ public class SemanticHighlightingPresenter implements ITextPresentationListener, fSourceViewer= sourceViewer; fPresentationReconciler= backgroundPresentationReconciler; - fSourceViewer.addTextPresentationListener(this); -// fSourceViewer.prependTextPresentationListener(this); + fSourceViewer.prependTextPresentationListener(this); fSourceViewer.addTextInputListener(this); manageDocument(fSourceViewer.getDocument()); } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SemanticHighlightings.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SemanticHighlightings.java index 0c8b5da9f75..dc026d0e994 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SemanticHighlightings.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/SemanticHighlightings.java @@ -781,7 +781,7 @@ public class SemanticHighlightings { * @see org.eclipse.cdt.internal.ui.editor.SemanticHighlighting#getDefaultTextStyleBold() */ public boolean isBoldByDefault() { - return false; + return true; } /* @@ -814,7 +814,7 @@ public class SemanticHighlightings { IASTName name= (IASTName)node; if (name.isDeclaration()) { IBinding binding= token.getBinding(); - if (binding instanceof IFunction) { + if (binding instanceof IFunction && !(binding instanceof ICPPMethod)) { return true; } } @@ -879,7 +879,9 @@ public class SemanticHighlightings { IASTName name= (IASTName)node; if (name.isReference()) { IBinding binding= token.getBinding(); - return binding instanceof IFunction; + if (binding instanceof IFunction && !(binding instanceof ICPPMethod)) { + return true; + } } } return false; @@ -1934,8 +1936,6 @@ public class SemanticHighlightings { if (fgSemanticHighlightings == null) fgSemanticHighlightings= new SemanticHighlighting[] { new MacroSubstitutionHighlighting(), // before all others! - new FunctionDeclarationHighlighting(), - new FunctionInvocationHighlighting(), new ClassHighlighting(), // new StaticConstFieldHighlighting(), new StaticFieldHighlighting(), @@ -1959,6 +1959,8 @@ public class SemanticHighlightings { new EnumHighlighting(), // TLETODO [semanticHighlighting] Macro definition highlighting // new MacroDefinitionHighlighting(), + new FunctionDeclarationHighlighting(), + new FunctionInvocationHighlighting(), new TypedefHighlighting(), new NamespaceHighlighting(), new LabelHighlighting(),