move Python to new highlighter API, extract Python and ReST colors out of platform color scheme (PY-8841)

This commit is contained in:
Dmitry Jemerov
2013-03-01 15:58:02 +01:00
parent 1f28f83453
commit 63081aeecb
6 changed files with 92 additions and 57 deletions
+2
View File
@@ -17,6 +17,8 @@
<lang.formatter language="ReST" implementationClass="com.jetbrains.rest.formatter.RestFormattingModelBuilder"/>
<codeInsight.fillParagraph language="ReST" implementationClass="com.jetbrains.rest.actions.RestFillParagraphHandler"/>
<additionalTextAttributes scheme="Default" file="colorSchemes/RestDefault.xml"/>
<additionalTextAttributes scheme="Darcula" file="colorSchemes/RestDarcula.xml"/>
</extensions>
<extensions defaultExtensionNs="com.intellij.spellchecker">
@@ -0,0 +1,27 @@
<list>
<option name="REST.BOLD">
<value>
<option name="FONT_TYPE" value="1" />
</value>
</option>
<option name="REST.FIXED">
<value>
<option name="BACKGROUND" value="a3a08" />
</value>
</option>
<option name="REST.INLINE">
<value>
<option name="BACKGROUND" value="236423" />
</value>
</option>
<option name="REST.INTERPRETED">
<value>
<option name="BACKGROUND" value="15463c" />
</value>
</option>
<option name="REST.ITALIC">
<value>
<option name="FONT_TYPE" value="2" />
</value>
</option>
</list>
@@ -0,0 +1,27 @@
<list>
<option name="REST.BOLD">
<value>
<option name="FONT_TYPE" value="1" />
</value>
</option>
<option name="REST.FIXED">
<value>
<option name="BACKGROUND" value="D9D9F0" />
</value>
</option>
<option name="REST.INLINE">
<value>
<option name="BACKGROUND" value="EDFCED" />
</value>
</option>
<option name="REST.INTERPRETED">
<value>
<option name="BACKGROUND" value="CADABA" />
</value>
</option>
<option name="REST.ITALIC">
<value>
<option name="FONT_TYPE" value="2" />
</value>
</option>
</list>
@@ -462,6 +462,9 @@
<statistics.usagesCollector implementation="com.jetbrains.python.statistics.PyInterpreterUsagesCollector"/>
<statistics.usagesCollector implementation="com.jetbrains.python.statistics.PyPackageUsagesCollector"/>
<additionalTextAttributes scheme="Default" file="colorSchemes/PythonDefault.xml"/>
<additionalTextAttributes scheme="Darcula" file="colorSchemes/PythonDarcula.xml"/>
<!-- Cython -->
<lang.parserDefinition language="Cython" implementationClass="com.jetbrains.cython.parser.CythonParserDefinition"/>
<lang.syntaxHighlighterFactory key="Cython" implementationClass="com.jetbrains.cython.CythonSyntaxHighlighterFactory"/>
@@ -18,6 +18,7 @@ package com.jetbrains.python.buildout.config;
import com.google.common.collect.Maps;
import com.intellij.lexer.Lexer;
import com.intellij.openapi.editor.DefaultLanguageHighlighterColors;
import com.intellij.openapi.editor.SyntaxHighlighterColors;
import com.intellij.openapi.editor.colors.TextAttributesKey;
import com.intellij.openapi.fileTypes.SyntaxHighlighterBase;
@@ -41,34 +42,34 @@ public class BuildoutCfgSyntaxHighlighter extends SyntaxHighlighterBase implemen
public static final TextAttributesKey BUILDOUT_SECTION_NAME =
TextAttributesKey.createTextAttributesKey("BUILDOUT.SECTION_NAME", SyntaxHighlighterColors.NUMBER.getDefaultAttributes().clone());
TextAttributesKey.createTextAttributesKey("BUILDOUT.SECTION_NAME", SyntaxHighlighterColors.NUMBER);
public static final TextAttributesKey BUILDOUT_KEY = TextAttributesKey.createTextAttributesKey(
"BUILDOUT.KEY",
SyntaxHighlighterColors.KEYWORD.getDefaultAttributes()
DefaultLanguageHighlighterColors.KEYWORD
);
public static final TextAttributesKey BUILDOUT_VALUE = TextAttributesKey.createTextAttributesKey(
"BUILDOUT.VALUE",
SyntaxHighlighterColors.STRING.getDefaultAttributes()
DefaultLanguageHighlighterColors.STRING
);
public static final TextAttributesKey BUILDOUT_COMMENT = TextAttributesKey.createTextAttributesKey(
"BUILDOUT.LINE_COMMENT",
SyntaxHighlighterColors.LINE_COMMENT.getDefaultAttributes()
DefaultLanguageHighlighterColors.LINE_COMMENT
);
public static final TextAttributesKey BUILDOUT_KEY_VALUE_SEPARATOR = TextAttributesKey.createTextAttributesKey(
"BUILDOUT.KEY_VALUE_SEPARATOR",
SyntaxHighlighterColors.OPERATION_SIGN.getDefaultAttributes()
DefaultLanguageHighlighterColors.OPERATION_SIGN
);
public static final TextAttributesKey BUILDOUT_VALID_STRING_ESCAPE = TextAttributesKey.createTextAttributesKey(
"BUILDOUT.VALID_STRING_ESCAPE",
SyntaxHighlighterColors.VALID_STRING_ESCAPE.getDefaultAttributes()
DefaultLanguageHighlighterColors.VALID_STRING_ESCAPE
);
public static final TextAttributesKey BUILDOUT_INVALID_STRING_ESCAPE = TextAttributesKey.createTextAttributesKey(
"BUILDOUT.INVALID_STRING_ESCAPE",
SyntaxHighlighterColors.INVALID_STRING_ESCAPE.getDefaultAttributes()
DefaultLanguageHighlighterColors.INVALID_STRING_ESCAPE
);
@@ -3,9 +3,7 @@ package com.jetbrains.python.highlighting;
import com.intellij.lexer.LayeredLexer;
import com.intellij.lexer.Lexer;
import com.intellij.openapi.editor.HighlighterColors;
import com.intellij.openapi.editor.colors.CodeInsightColors;
import com.intellij.openapi.editor.colors.TextAttributesKey;
import com.intellij.openapi.editor.markup.TextAttributes;
import com.intellij.openapi.fileTypes.SyntaxHighlighterBase;
import com.intellij.psi.StringEscapesTokenTypes;
import com.intellij.psi.tree.IElementType;
@@ -16,11 +14,10 @@ import com.jetbrains.python.lexer.PythonHighlightingLexer;
import com.jetbrains.python.psi.LanguageLevel;
import org.jetbrains.annotations.NotNull;
import java.awt.*;
import java.util.HashMap;
import java.util.Map;
import static com.intellij.openapi.editor.SyntaxHighlighterColors.*;
import static com.intellij.openapi.editor.DefaultLanguageHighlighterColors.*;
/**
* Colors and lexer(s) needed for highlighting.
@@ -56,72 +53,50 @@ public class PyHighlighter extends SyntaxHighlighterBase {
return new PythonHighlightingLexer(myLanguageLevel);
}
private static TextAttributesKey _copy(String name, TextAttributesKey src) {
return TextAttributesKey.createTextAttributesKey(name, src.getDefaultAttributes().clone());
}
public static final TextAttributesKey PY_KEYWORD = TextAttributesKey.createTextAttributesKey("PY.KEYWORD", KEYWORD);
public static final TextAttributesKey PY_KEYWORD = _copy("PY.KEYWORD", KEYWORD);
public static final TextAttributesKey PY_BYTE_STRING = TextAttributesKey.createTextAttributesKey("PY.STRING.B", STRING);
public static final TextAttributesKey PY_UNICODE_STRING = TextAttributesKey.createTextAttributesKey("PY.STRING.U", STRING);
public static final TextAttributesKey PY_NUMBER = TextAttributesKey.createTextAttributesKey("PY.NUMBER", NUMBER);
public static final TextAttributesKey PY_BYTE_STRING = _copy("PY.STRING.B", STRING);
public static final TextAttributesKey PY_UNICODE_STRING = TextAttributesKey.createTextAttributesKey(
"PY.STRING.U",
new TextAttributes(new Color(0, 128, 128), null, null, null, STRING.getDefaultAttributes().getFontType())
);
public static final TextAttributesKey PY_NUMBER = _copy("PY.NUMBER", NUMBER);
static final TextAttributesKey PY_LINE_COMMENT = TextAttributesKey.createTextAttributesKey("PY.LINE_COMMENT", LINE_COMMENT);
static final TextAttributesKey PY_LINE_COMMENT = _copy("PY.LINE_COMMENT", LINE_COMMENT);
static final TextAttributesKey PY_OPERATION_SIGN = TextAttributesKey.createTextAttributesKey("PY.OPERATION_SIGN", OPERATION_SIGN);
static final TextAttributesKey PY_OPERATION_SIGN = _copy("PY.OPERATION_SIGN", OPERATION_SIGN);
static final TextAttributesKey PY_PARENTHS = TextAttributesKey.createTextAttributesKey("PY.PARENTHS", PARENTHESES);
static final TextAttributesKey PY_PARENTHS = _copy("PY.PARENTHS", PARENTHS);
static final TextAttributesKey PY_BRACKETS = TextAttributesKey.createTextAttributesKey("PY.BRACKETS", BRACKETS);
static final TextAttributesKey PY_BRACKETS = _copy("PY.BRACKETS", BRACKETS);
static final TextAttributesKey PY_BRACES = TextAttributesKey.createTextAttributesKey("PY.BRACES", BRACES);
static final TextAttributesKey PY_BRACES = _copy("PY.BRACES", BRACES);
static final TextAttributesKey PY_COMMA = TextAttributesKey.createTextAttributesKey("PY.COMMA", COMMA);
static final TextAttributesKey PY_COMMA = _copy("PY.COMMA", COMMA);
static final TextAttributesKey PY_DOT = TextAttributesKey.createTextAttributesKey("PY.DOT", DOT);
static final TextAttributesKey PY_DOT = _copy("PY.DOT", DOT);
public static final TextAttributesKey PY_DOC_COMMENT = TextAttributesKey.createTextAttributesKey("PY.DOC_COMMENT", DOC_COMMENT);
public static final TextAttributesKey PY_DOC_COMMENT = _copy("PY.DOC_COMMENT", DOC_COMMENT);
public static final TextAttributesKey PY_DOC_COMMENT_TAG = TextAttributesKey.createTextAttributesKey("PY.DOC_COMMENT_TAG", DOC_COMMENT_TAG);
public static final TextAttributesKey PY_DOC_COMMENT_TAG = _copy("PY.DOC_COMMENT_TAG", DOC_COMMENT_TAG);
public static final TextAttributesKey PY_DECORATOR = TextAttributesKey.createTextAttributesKey("PY.DECORATOR", IDENTIFIER);
public static final TextAttributesKey PY_DECORATOR = TextAttributesKey.createTextAttributesKey(
"PY.DECORATOR", new TextAttributes(Color.blue.darker(), null, null, null, Font.PLAIN)
);
public static final TextAttributesKey PY_CLASS_DEFINITION = TextAttributesKey.createTextAttributesKey("PY.CLASS_DEFINITION", CLASS_NAME);
public static final TextAttributesKey PY_CLASS_DEFINITION = TextAttributesKey.createTextAttributesKey(
"PY.CLASS_DEFINITION", new TextAttributes(Color.black, null, null, null, Font.BOLD)
);
public static final TextAttributesKey PY_FUNC_DEFINITION = TextAttributesKey.createTextAttributesKey("PY.FUNC_DEFINITION", FUNCTION_DECLARATION);
public static final TextAttributesKey PY_FUNC_DEFINITION = TextAttributesKey.createTextAttributesKey(
"PY.FUNC_DEFINITION", new TextAttributes(Color.black, null, null, null, Font.BOLD)
);
public static final TextAttributesKey PY_PREDEFINED_DEFINITION = TextAttributesKey.createTextAttributesKey("PY.PREDEFINED_DEFINITION", PREDEFINED_SYMBOL);
public static final TextAttributesKey PY_PREDEFINED_DEFINITION = TextAttributesKey.createTextAttributesKey(
"PY.PREDEFINED_DEFINITION", new TextAttributes(Color.magenta.darker(), null, null, null, Font.BOLD)
);
public static final TextAttributesKey PY_PREDEFINED_USAGE = TextAttributesKey.createTextAttributesKey("PY.PREDEFINED_USAGE", PREDEFINED_SYMBOL);
public static final TextAttributesKey PY_PREDEFINED_USAGE = TextAttributesKey.createTextAttributesKey(
"PY.PREDEFINED_USAGE", new TextAttributes(Color.magenta.darker(), null, null, null, Font.PLAIN)
);
public static final TextAttributesKey PY_BUILTIN_NAME = TextAttributesKey.createTextAttributesKey("PY.BUILTIN_NAME", PREDEFINED_SYMBOL);
public static final TextAttributesKey PY_BUILTIN_NAME = TextAttributesKey.createTextAttributesKey(
"PY.BUILTIN_NAME",
new TextAttributes(KEYWORD.getDefaultAttributes().getForegroundColor(), null, null, null, Font.PLAIN)
);
public static final TextAttributesKey PY_PARAMETER = TextAttributesKey.createTextAttributesKey("PY.PARAMETER", PARAMETER);
public static final TextAttributesKey PY_SELF_PARAMETER = TextAttributesKey.createTextAttributesKey( "PY.SELF_PARAMETER", PARAMETER);
public static final TextAttributesKey PY_PARAMETER =_copy("PY.PARAMETER", CodeInsightColors.PARAMETER_ATTRIBUTES);
public static final TextAttributesKey PY_SELF_PARAMETER = TextAttributesKey.createTextAttributesKey(
"PY.SELF_PARAMETER", new TextAttributes(new Color(148, 85, 141), null, null, null, Font.PLAIN));
public static final TextAttributesKey PY_KEYWORD_ARGUMENT = TextAttributesKey.createTextAttributesKey("PY.KEYWORD_ARGUMENT", PARAMETER);
public static final TextAttributesKey PY_KEYWORD_ARGUMENT = TextAttributesKey.createTextAttributesKey(
"PY.KEYWORD_ARGUMENT", new TextAttributes(new Color(102, 0, 153), null, null, null, Font.PLAIN));
public static final TextAttributesKey PY_VALID_STRING_ESCAPE = TextAttributesKey.createTextAttributesKey("PY.VALID_STRING_ESCAPE", VALID_STRING_ESCAPE);
public static final TextAttributesKey PY_VALID_STRING_ESCAPE = _copy("PY.VALID_STRING_ESCAPE", VALID_STRING_ESCAPE);
public static final TextAttributesKey PY_INVALID_STRING_ESCAPE = _copy("PY.INVALID_STRING_ESCAPE", INVALID_STRING_ESCAPE);
public static final TextAttributesKey PY_INVALID_STRING_ESCAPE = TextAttributesKey.createTextAttributesKey("PY.INVALID_STRING_ESCAPE", INVALID_STRING_ESCAPE);
/**
* The 'heavy' constructor that initializes everything. PySyntaxHighlighterFactory caches such instances per level.