# Semantic Highlighting

###### Identifier:

org.eclipse.cdt.ui.semanticHighligher

###### Since:

8.2

###### Description:

This extension point allows extensions to contribute to the semantic highlighting.

Extensions specify the priority of the highlighting, which determines the order in which the highlighting is invoked.

This extension point supports the `enablement` tag. Properties to test on are:

- projectNatures: type Collection; all project natures of the current project
- languageId: type String; the result if ILanguage.getId on the token's ITranslationUnit

Contributed highlightings will be visible in the Code tree of the 'C/C++ - Editor - Syntax Colouring' preference page.

###### Configuration Markup:

<!ELEMENT extension (semanticHighlighting+)>

<!ATTLIST extension

point CDATA #REQUIRED

id CDATA #IMPLIED

name CDATA #IMPLIED>

- point - a fully qualified identifier of the target extension point
- id - an optional identifier of the extension instance
- name - an optional name of the extension instance

<!ELEMENT semanticHighlighting (enablement?)>

<!ATTLIST semanticHighlighting

id IDREF #REQUIRED

name CDATA #IMPLIED

class CDATA #REQUIRED

priority CDATA #REQUIRED

preferenceKey CDATA #REQUIRED

displayName CDATA #REQUIRED

defaultTextColor CDATA #IMPLIED

defaultBold (true | false)

defaultItalic (true | false)

defaultStrikethrough (true | false)

defaultUnderline (true | false)

defaultEnabled (true | false) >

- id - A unique identifier for the Quick Fix processor.
- name - A localized name of the Quick Fix processor.
- class - The name of the class that implements this Semantic Highlighting. The class must be public and implement `org.eclipse.cdt.ui.text.ISemanticHighlighter` with a public 0-argument constructor.
- priority - The priority determines the order in which highlightings are given the opportunity to highlight a token. Lower values are more important. The priorities of the built-in highlightings are available in `org.eclipse.cdt.internal.ui.editor.SemanticHighlightings.loadBuiltInSemanticHighlightings`.
- preferenceKey - A key to uniquely identify the highlighting's settings in the preference store.
- displayName - The name that is displayed for the highlighter in the Preferences window.
- defaultTextColor - The default text color of the contributed highlighting. The value must be the integer RGB values (0-255) separated by commas. E.g., "127,0,85". Defaults to "0,0,0" (black).
- defaultBold - Defaults to `false`.
- defaultItalic - Defaults to `false`.
- defaultStrikethrough - Defaults to `false`.
- defaultUnderline - Defaults to `false`.
- defaultEnabled - Defaults to `false`.

###### Examples:

The following is an example of a Semantic Highligher contribution:

    <extension
        point="org.eclipse.cdt.ui.semanticHighlighting"
        name="%extensionName"
        id="com.example.ui.semanticHighlightings">
        <semanticHighlighting
            id="com.example.ui.keywordHighlighting"
            priority="5"
            class="com.example.internal.ui.ExampleHighlighting"
            preferenceKey="example-keywords"
            displayName="%exampleHighlighting.displayName"
            defaultTextColor="127,0,85"
            defaultBold="true"
            defaultEnabled="true">
            <enablement>
                <with variable="projectNatures">
                    <iterate operator="or">
                        <equals value="org.eclipse.cdt.core.ccnature"/>
                    </iterate>
                </with>
                <with variable="languageId">
                 <or>
                  <equals value="org.eclipse.cdt.core.g++"/>
                  <equals value="org.eclipse.cdt.core.gcc"/>
                 </or>
                </with>
            </enablement>
        </semanticHighlighting>
    </extension>

###### API Information:

The contributed class must implement `org.eclipse.cdt.ui.text.ISemanticHighlighter`

Copyright (c) 2013 QNX Software Systems and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html