1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-06 17:26:01 +02:00

Bug 399985: Semantic highlighting for qt signals/slots

The signals, slots, Q_SIGNALS, and Q_SLOTS macros are
used as 'keywords' when developing Qt applications.  This
patch adds a semantic highlighter for these keywords in
projects with a qtnature.

Change-Id: I7a5906aa69e6d7dab4ce20a16b425ae177f9bd25
Reviewed-on: https://git.eclipse.org/r/10179
Reviewed-by: Doug Schaefer <dschaefer@qnx.com>
IP-Clean: Doug Schaefer <dschaefer@qnx.com>
Tested-by: Doug Schaefer <dschaefer@qnx.com>
This commit is contained in:
Andrew Eidsness 2013-02-05 09:56:18 -05:00 committed by Doug Schaefer
parent 94e85e44b1
commit 862099aa7a
7 changed files with 102 additions and 3 deletions

View file

@ -11,3 +11,4 @@ Require-Bundle: org.eclipse.core.runtime,
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy
Bundle-Localization: plugin
Export-Package: org.eclipse.cdt.qt.core

View file

@ -0,0 +1,20 @@
/*
* 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
*/
package org.eclipse.cdt.qt.core;
/**
* Declares constants related to tokens that are special in Qt applications.
*/
public class QtKeywords
{
public static final String Q_SIGNALS = "Q_SIGNALS";
public static final String Q_SLOTS = "Q_SLOTS";
public static final String SIGNALS = "signals";
public static final String SLOTS = "slots";
}

View file

@ -1,11 +1,15 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: CDT Qt Support UI
Bundle-SymbolicName: org.eclipse.cdt.qt.ui
Bundle-SymbolicName: org.eclipse.cdt.qt.ui;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: org.eclipse.cdt.qt.ui.Activator
Bundle-Vendor: Eclipse CDT
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime
org.eclipse.core.runtime,
org.eclipse.cdt.ui,
org.eclipse.cdt.core,
org.eclipse.cdt.qt.core
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy

View file

@ -1,4 +1,6 @@
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.
.,\
plugin.xml,\
plugin.properties

View file

@ -0,0 +1,8 @@
# 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
qtHighlighting.extName=Qt Semantic Highlighting
qtHighlighting.displayName=Qt Keywords

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.cdt.ui.semanticHighlighting"
name="%qtHighlighting.extName"
id="org.eclipse.cdt.qt.ui.semanticHighlightings">
<semanticHighlighting
id="org.eclipse.cdt.qt.ui.keywordHighlighting"
priority="5"
class="org.eclipse.cdt.internal.qt.ui.QtHighlighting"
preferenceKey="qt-keywords"
displayName="%qtHighlighting.displayName"
defaultTextColor="127,0,85"
defaultBold="true"
defaultEnabled="true">
<enablement>
<with variable="projectNatures">
<iterate operator="or">
<equals value="org.eclipse.cdt.qt.core.qtNature"/>
</iterate>
</with>
</enablement>
</semanticHighlighting>
</extension>
</plugin>

View file

@ -0,0 +1,38 @@
/*
* 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
*/
package org.eclipse.cdt.internal.qt.ui;
import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IMacroBinding;
import org.eclipse.cdt.qt.core.QtKeywords;
import org.eclipse.cdt.ui.text.ISemanticHighlighter;
import org.eclipse.cdt.ui.text.ISemanticToken;
public class QtHighlighting implements ISemanticHighlighter
{
@Override
public boolean consumes( ISemanticToken token )
{
IBinding binding = token.getBinding();
if( binding instanceof IMacroBinding )
{
IASTNode node = token.getNode();
if( node instanceof IASTName && ( (IASTName)node ).isReference() )
{
String n = binding.getName();
return QtKeywords.SIGNALS.equals( n ) || QtKeywords.SLOTS.equals( n )
|| QtKeywords.Q_SIGNALS.equals( n ) || QtKeywords.Q_SLOTS.equals( n );
}
}
return false;
}
}