QScintilla/Lexers/LexerPygments.py

changeset 808
8f85926125ef
parent 791
9ec2ac20e54e
child 815
093b3b8204d1
equal deleted inserted replaced
805:83ca4d1ff648 808:8f85926125ef
54 PYGMENTS_EMPHASIZE, \ 54 PYGMENTS_EMPHASIZE, \
55 PYGMENTS_STRONG, \ 55 PYGMENTS_STRONG, \
56 PYGMENTS_PROMPT, \ 56 PYGMENTS_PROMPT, \
57 PYGMENTS_OUTPUT, \ 57 PYGMENTS_OUTPUT, \
58 PYGMENTS_TRACEBACK, \ 58 PYGMENTS_TRACEBACK, \
59 PYGMENTS_ERROR = list(range(40, 47)) 59 PYGMENTS_ERROR, \
60 PYGMENTS_MULTILINECOMMENT, \
61 PYGMENTS_PROPERTY, \
62 PYGMENTS_CHAR, \
63 PYGMENTS_HEREDOC, \
64 PYGMENTS_PUNCTUATION = list(range(40, 52))
60 65
61 #-----------------------------------------------------------------------------# 66 #-----------------------------------------------------------------------------#
62 67
63 TOKEN_MAP = { 68 TOKEN_MAP = {
64 Token.Comment: PYGMENTS_COMMENT, 69 Token.Comment: PYGMENTS_COMMENT,
65 Token.Comment.Preproc: PYGMENTS_PREPROCESSOR, 70 Token.Comment.Preproc: PYGMENTS_PREPROCESSOR,
66 71 Token.Comment.Multiline: PYGMENTS_MULTILINECOMMENT,
67 Token.Keyword: PYGMENTS_KEYWORD, 72 Token.Comment.Single: PYGMENTS_COMMENT,
68 Token.Keyword.Pseudo: PYGMENTS_PSEUDOKEYWORD, 73 Token.Comment.Special: PYGMENTS_COMMENT,
69 Token.Keyword.Type: PYGMENTS_TYPEKEYWORD, 74
70 75 Token.Keyword: PYGMENTS_KEYWORD,
71 Token.Operator: PYGMENTS_OPERATOR, 76 Token.Keyword.Pseudo: PYGMENTS_PSEUDOKEYWORD,
72 Token.Operator.Word: PYGMENTS_WORD, 77 Token.Keyword.Type: PYGMENTS_TYPEKEYWORD,
73 78 Token.Keyword.Namespace: PYGMENTS_KEYWORD,
74 Token.Name.Builtin: PYGMENTS_BUILTIN, 79
75 Token.Name.Function: PYGMENTS_FUNCTION, 80 Token.Operator: PYGMENTS_OPERATOR,
76 Token.Name.Class: PYGMENTS_CLASS, 81 Token.Operator.Word: PYGMENTS_WORD,
77 Token.Name.Namespace: PYGMENTS_NAMESPACE, 82
78 Token.Name.Exception: PYGMENTS_EXCEPTION, 83 Token.Name: PYGMENTS_DEFAULT,
79 Token.Name.Variable: PYGMENTS_VARIABLE, 84 Token.Name.Builtin: PYGMENTS_BUILTIN,
80 Token.Name.Constant: PYGMENTS_CONSTANT, 85 Token.Name.Builtin.Pseudo: PYGMENTS_BUILTIN,
81 Token.Name.Label: PYGMENTS_LABEL, 86 Token.Name.Function: PYGMENTS_FUNCTION,
82 Token.Name.Entity: PYGMENTS_ENTITY, 87 Token.Name.Class: PYGMENTS_CLASS,
83 Token.Name.Attribute: PYGMENTS_ATTRIBUTE, 88 Token.Name.Namespace: PYGMENTS_NAMESPACE,
84 Token.Name.Tag: PYGMENTS_TAG, 89 Token.Name.Exception: PYGMENTS_EXCEPTION,
85 Token.Name.Decorator: PYGMENTS_DECORATOR, 90 Token.Name.Variable: PYGMENTS_VARIABLE,
86 91 Token.Name.Variable.Class: PYGMENTS_VARIABLE,
87 Token.String: PYGMENTS_STRING, 92 Token.Name.Variable.Global: PYGMENTS_VARIABLE,
88 Token.String.Doc: PYGMENTS_DOCSTRING, 93 Token.Name.Variable.Instance: PYGMENTS_VARIABLE,
89 Token.String.Interpol: PYGMENTS_SCALAR, 94 Token.Name.Constant: PYGMENTS_CONSTANT,
90 Token.String.Escape: PYGMENTS_ESCAPE, 95 Token.Name.Label: PYGMENTS_LABEL,
91 Token.String.Regex: PYGMENTS_REGEX, 96 Token.Name.Entity: PYGMENTS_ENTITY,
92 Token.String.Symbol: PYGMENTS_SYMBOL, 97 Token.Name.Attribute: PYGMENTS_ATTRIBUTE,
93 Token.String.Other: PYGMENTS_OTHER, 98 Token.Name.Tag: PYGMENTS_TAG,
94 Token.Number: PYGMENTS_NUMBER, 99 Token.Name.Decorator: PYGMENTS_DECORATOR,
95 100 Token.Name.Property: PYGMENTS_PROPERTY,
96 Token.Generic.Heading: PYGMENTS_HEADING, 101
97 Token.Generic.Subheading: PYGMENTS_SUBHEADING, 102 Token.String: PYGMENTS_STRING,
98 Token.Generic.Deleted: PYGMENTS_DELETED, 103 Token.String.Char: PYGMENTS_CHAR,
99 Token.Generic.Inserted: PYGMENTS_INSERTED, 104 Token.String.Doc: PYGMENTS_DOCSTRING,
100 Token.Generic.Error: PYGMENTS_GENERIC_ERROR, 105 Token.String.Interpol: PYGMENTS_SCALAR,
101 Token.Generic.Emph: PYGMENTS_EMPHASIZE, 106 Token.String.Escape: PYGMENTS_ESCAPE,
102 Token.Generic.Strong: PYGMENTS_STRONG, 107 Token.String.Regex: PYGMENTS_REGEX,
103 Token.Generic.Prompt: PYGMENTS_PROMPT, 108 Token.String.Symbol: PYGMENTS_SYMBOL,
104 Token.Generic.Output: PYGMENTS_OUTPUT, 109 Token.String.Other: PYGMENTS_OTHER,
105 Token.Generic.Traceback: PYGMENTS_TRACEBACK, 110 Token.String.Heredoc: PYGMENTS_HEREDOC,
106 111
107 Token.Error: PYGMENTS_ERROR, 112 Token.Number: PYGMENTS_NUMBER,
113 Token.Number.Float: PYGMENTS_NUMBER,
114 Token.Number.Hex: PYGMENTS_NUMBER,
115 Token.Number.Integer: PYGMENTS_NUMBER,
116 Token.Number.Integer.Long: PYGMENTS_NUMBER,
117 Token.Number.Oct: PYGMENTS_NUMBER,
118
119 Token.Punctuation: PYGMENTS_PUNCTUATION,
120
121 Token.Generic.Heading: PYGMENTS_HEADING,
122 Token.Generic.Subheading: PYGMENTS_SUBHEADING,
123 Token.Generic.Deleted: PYGMENTS_DELETED,
124 Token.Generic.Inserted: PYGMENTS_INSERTED,
125 Token.Generic.Error: PYGMENTS_GENERIC_ERROR,
126 Token.Generic.Emph: PYGMENTS_EMPHASIZE,
127 Token.Generic.Strong: PYGMENTS_STRONG,
128 Token.Generic.Prompt: PYGMENTS_PROMPT,
129 Token.Generic.Output: PYGMENTS_OUTPUT,
130 Token.Generic.Traceback: PYGMENTS_TRACEBACK,
131
132 Token.Error: PYGMENTS_ERROR,
108 } 133 }
109 134
110 #-----------------------------------------------------------------------------# 135 #-----------------------------------------------------------------------------#
111 136
112 class LexerPygments(LexerContainer): 137 class LexerPygments(LexerContainer):
123 LexerContainer.__init__(self, parent) 148 LexerContainer.__init__(self, parent)
124 149
125 self.__pygmentsName = name 150 self.__pygmentsName = name
126 151
127 self.descriptions = { 152 self.descriptions = {
128 PYGMENTS_DEFAULT : self.trUtf8("Default"), 153 PYGMENTS_DEFAULT : self.trUtf8("Default"),
129 PYGMENTS_COMMENT : self.trUtf8("Comment"), 154 PYGMENTS_COMMENT : self.trUtf8("Comment"),
130 PYGMENTS_PREPROCESSOR : self.trUtf8("Preprocessor"), 155 PYGMENTS_PREPROCESSOR : self.trUtf8("Preprocessor"),
131 PYGMENTS_KEYWORD : self.trUtf8("Keyword"), 156 PYGMENTS_KEYWORD : self.trUtf8("Keyword"),
132 PYGMENTS_PSEUDOKEYWORD : self.trUtf8("Pseudo Keyword"), 157 PYGMENTS_PSEUDOKEYWORD : self.trUtf8("Pseudo Keyword"),
133 PYGMENTS_TYPEKEYWORD : self.trUtf8("Type Keyword"), 158 PYGMENTS_TYPEKEYWORD : self.trUtf8("Type Keyword"),
134 PYGMENTS_OPERATOR : self.trUtf8("Operator"), 159 PYGMENTS_OPERATOR : self.trUtf8("Operator"),
135 PYGMENTS_WORD : self.trUtf8("Word"), 160 PYGMENTS_WORD : self.trUtf8("Word"),
136 PYGMENTS_BUILTIN : self.trUtf8("Builtin"), 161 PYGMENTS_BUILTIN : self.trUtf8("Builtin"),
137 PYGMENTS_FUNCTION : self.trUtf8("Function or method name"), 162 PYGMENTS_FUNCTION : self.trUtf8("Function or method name"),
138 PYGMENTS_CLASS : self.trUtf8("Class name"), 163 PYGMENTS_CLASS : self.trUtf8("Class name"),
139 PYGMENTS_NAMESPACE : self.trUtf8("Namespace"), 164 PYGMENTS_NAMESPACE : self.trUtf8("Namespace"),
140 PYGMENTS_EXCEPTION : self.trUtf8("Exception"), 165 PYGMENTS_EXCEPTION : self.trUtf8("Exception"),
141 PYGMENTS_VARIABLE : self.trUtf8("Identifier"), 166 PYGMENTS_VARIABLE : self.trUtf8("Identifier"),
142 PYGMENTS_CONSTANT : self.trUtf8("Constant"), 167 PYGMENTS_CONSTANT : self.trUtf8("Constant"),
143 PYGMENTS_LABEL : self.trUtf8("Label"), 168 PYGMENTS_LABEL : self.trUtf8("Label"),
144 PYGMENTS_ENTITY : self.trUtf8("Entity"), 169 PYGMENTS_ENTITY : self.trUtf8("Entity"),
145 PYGMENTS_ATTRIBUTE : self.trUtf8("Attribute"), 170 PYGMENTS_ATTRIBUTE : self.trUtf8("Attribute"),
146 PYGMENTS_TAG : self.trUtf8("Tag"), 171 PYGMENTS_TAG : self.trUtf8("Tag"),
147 PYGMENTS_DECORATOR : self.trUtf8("Decorator"), 172 PYGMENTS_DECORATOR : self.trUtf8("Decorator"),
148 PYGMENTS_STRING : self.trUtf8("String"), 173 PYGMENTS_STRING : self.trUtf8("String"),
149 PYGMENTS_DOCSTRING : self.trUtf8("Documentation string"), 174 PYGMENTS_DOCSTRING : self.trUtf8("Documentation string"),
150 PYGMENTS_SCALAR : self.trUtf8("Scalar"), 175 PYGMENTS_SCALAR : self.trUtf8("Scalar"),
151 PYGMENTS_ESCAPE : self.trUtf8("Escape"), 176 PYGMENTS_ESCAPE : self.trUtf8("Escape"),
152 PYGMENTS_REGEX : self.trUtf8("Regular expression"), 177 PYGMENTS_REGEX : self.trUtf8("Regular expression"),
153 PYGMENTS_SYMBOL : self.trUtf8("Symbol"), 178 PYGMENTS_SYMBOL : self.trUtf8("Symbol"),
154 PYGMENTS_OTHER : self.trUtf8("Other string"), 179 PYGMENTS_OTHER : self.trUtf8("Other string"),
155 PYGMENTS_NUMBER : self.trUtf8("Number"), 180 PYGMENTS_NUMBER : self.trUtf8("Number"),
156 PYGMENTS_HEADING : self.trUtf8("Heading"), 181 PYGMENTS_HEADING : self.trUtf8("Heading"),
157 PYGMENTS_SUBHEADING : self.trUtf8("Subheading"), 182 PYGMENTS_SUBHEADING : self.trUtf8("Subheading"),
158 PYGMENTS_DELETED : self.trUtf8("Deleted"), 183 PYGMENTS_DELETED : self.trUtf8("Deleted"),
159 PYGMENTS_INSERTED : self.trUtf8("Inserted"), 184 PYGMENTS_INSERTED : self.trUtf8("Inserted"),
160 PYGMENTS_GENERIC_ERROR : self.trUtf8("Generic error"), 185 PYGMENTS_GENERIC_ERROR : self.trUtf8("Generic error"),
161 PYGMENTS_EMPHASIZE : self.trUtf8("Emphasized text"), 186 PYGMENTS_EMPHASIZE : self.trUtf8("Emphasized text"),
162 PYGMENTS_STRONG : self.trUtf8("Strong text"), 187 PYGMENTS_STRONG : self.trUtf8("Strong text"),
163 PYGMENTS_PROMPT : self.trUtf8("Prompt"), 188 PYGMENTS_PROMPT : self.trUtf8("Prompt"),
164 PYGMENTS_OUTPUT : self.trUtf8("Output"), 189 PYGMENTS_OUTPUT : self.trUtf8("Output"),
165 PYGMENTS_TRACEBACK : self.trUtf8("Traceback"), 190 PYGMENTS_TRACEBACK : self.trUtf8("Traceback"),
166 PYGMENTS_ERROR : self.trUtf8("Error"), 191 PYGMENTS_ERROR : self.trUtf8("Error"),
192 PYGMENTS_MULTILINECOMMENT : self.trUtf8("Comment block"),
193 PYGMENTS_PROPERTY : self.trUtf8("Property"),
194 PYGMENTS_CHAR : self.trUtf8("Character"),
195 PYGMENTS_HEREDOC : self.trUtf8("Here document"),
196 PYGMENTS_PUNCTUATION : self.trUtf8("Punctuation"),
167 } 197 }
168 198
169 self.defaultColors = { 199 self.defaultColors = {
170 PYGMENTS_DEFAULT : QColor("#000000"), 200 PYGMENTS_DEFAULT : QColor("#000000"),
171 PYGMENTS_COMMENT : QColor("#408080"), 201 PYGMENTS_COMMENT : QColor("#408080"),
172 PYGMENTS_PREPROCESSOR : QColor("#BC7A00"), 202 PYGMENTS_PREPROCESSOR : QColor("#BC7A00"),
173 PYGMENTS_KEYWORD : QColor("#008000"), 203 PYGMENTS_KEYWORD : QColor("#008000"),
174 PYGMENTS_PSEUDOKEYWORD : QColor("#008000"), 204 PYGMENTS_PSEUDOKEYWORD : QColor("#008000"),
175 PYGMENTS_TYPEKEYWORD : QColor("#B00040"), 205 PYGMENTS_TYPEKEYWORD : QColor("#B00040"),
176 PYGMENTS_OPERATOR : QColor("#666666"), 206 PYGMENTS_OPERATOR : QColor("#666666"),
177 PYGMENTS_WORD : QColor("#AA22FF"), 207 PYGMENTS_WORD : QColor("#AA22FF"),
178 PYGMENTS_BUILTIN : QColor("#008000"), 208 PYGMENTS_BUILTIN : QColor("#008000"),
179 PYGMENTS_FUNCTION : QColor("#0000FF"), 209 PYGMENTS_FUNCTION : QColor("#0000FF"),
180 PYGMENTS_CLASS : QColor("#0000FF"), 210 PYGMENTS_CLASS : QColor("#0000FF"),
181 PYGMENTS_NAMESPACE : QColor("#0000FF"), 211 PYGMENTS_NAMESPACE : QColor("#0000FF"),
182 PYGMENTS_EXCEPTION : QColor("#D2413A"), 212 PYGMENTS_EXCEPTION : QColor("#D2413A"),
183 PYGMENTS_VARIABLE : QColor("#19177C"), 213 PYGMENTS_VARIABLE : QColor("#19177C"),
184 PYGMENTS_CONSTANT : QColor("#880000"), 214 PYGMENTS_CONSTANT : QColor("#880000"),
185 PYGMENTS_LABEL : QColor("#A0A000"), 215 PYGMENTS_LABEL : QColor("#A0A000"),
186 PYGMENTS_ENTITY : QColor("#999999"), 216 PYGMENTS_ENTITY : QColor("#999999"),
187 PYGMENTS_ATTRIBUTE : QColor("#7D9029"), 217 PYGMENTS_ATTRIBUTE : QColor("#7D9029"),
188 PYGMENTS_TAG : QColor("#008000"), 218 PYGMENTS_TAG : QColor("#008000"),
189 PYGMENTS_DECORATOR : QColor("#AA22FF"), 219 PYGMENTS_DECORATOR : QColor("#AA22FF"),
190 PYGMENTS_STRING : QColor("#BA2121"), 220 PYGMENTS_STRING : QColor("#BA2121"),
191 PYGMENTS_DOCSTRING : QColor("#BA2121"), 221 PYGMENTS_DOCSTRING : QColor("#BA2121"),
192 PYGMENTS_SCALAR : QColor("#BB6688"), 222 PYGMENTS_SCALAR : QColor("#BB6688"),
193 PYGMENTS_ESCAPE : QColor("#BB6622"), 223 PYGMENTS_ESCAPE : QColor("#BB6622"),
194 PYGMENTS_REGEX : QColor("#BB6688"), 224 PYGMENTS_REGEX : QColor("#BB6688"),
195 PYGMENTS_SYMBOL : QColor("#19177C"), 225 PYGMENTS_SYMBOL : QColor("#19177C"),
196 PYGMENTS_OTHER : QColor("#008000"), 226 PYGMENTS_OTHER : QColor("#008000"),
197 PYGMENTS_NUMBER : QColor("#666666"), 227 PYGMENTS_NUMBER : QColor("#666666"),
198 PYGMENTS_HEADING : QColor("#000080"), 228 PYGMENTS_HEADING : QColor("#000080"),
199 PYGMENTS_SUBHEADING : QColor("#800080"), 229 PYGMENTS_SUBHEADING : QColor("#800080"),
200 PYGMENTS_DELETED : QColor("#A00000"), 230 PYGMENTS_DELETED : QColor("#A00000"),
201 PYGMENTS_INSERTED : QColor("#00A000"), 231 PYGMENTS_INSERTED : QColor("#00A000"),
202 PYGMENTS_GENERIC_ERROR : QColor("#FF0000"), 232 PYGMENTS_GENERIC_ERROR : QColor("#FF0000"),
203 PYGMENTS_PROMPT : QColor("#000080"), 233 PYGMENTS_PROMPT : QColor("#000080"),
204 PYGMENTS_OUTPUT : QColor("#808080"), 234 PYGMENTS_OUTPUT : QColor("#808080"),
205 PYGMENTS_TRACEBACK : QColor("#0040D0"), 235 PYGMENTS_TRACEBACK : QColor("#0040D0"),
236 PYGMENTS_MULTILINECOMMENT : QColor("#007F00"),
237 PYGMENTS_PROPERTY : QColor("#00A0E0"),
238 PYGMENTS_CHAR : QColor("#7F007F"),
239 PYGMENTS_HEREDOC : QColor("#7F007F"),
240 PYGMENTS_PUNCTUATION : QColor("#000000"),
206 } 241 }
207 242
208 self.defaultPapers = { 243 self.defaultPapers = {
209 PYGMENTS_ERROR : QColor("#FF0000"), 244 PYGMENTS_ERROR : QColor("#FF0000"),
245 PYGMENTS_MULTILINECOMMENT : QColor("#A8FFA8"),
246 PYGMENTS_HEREDOC : QColor("#DDD0DD"),
247 }
248
249 self.defaultEolFill = {
250 PYGMENTS_ERROR : True,
251 PYGMENTS_MULTILINECOMMENT : True,
252 PYGMENTS_HEREDOC : True,
210 } 253 }
211 254
212 def language(self): 255 def language(self):
213 """ 256 """
214 Public method returning the language of the lexer. 257 Public method returning the language of the lexer.
259 Public method to get the default font for a style. 302 Public method to get the default font for a style.
260 303
261 @param style style number (integer) 304 @param style style number (integer)
262 @return font (QFont) 305 @return font (QFont)
263 """ 306 """
264 if style in [PYGMENTS_COMMENT, PYGMENTS_PREPROCESSOR]: 307 if style in [PYGMENTS_COMMENT, PYGMENTS_PREPROCESSOR, PYGMENTS_MULTILINECOMMENT]:
265 if Utilities.isWindowsPlatform(): 308 if Utilities.isWindowsPlatform():
266 f = QFont("Comic Sans MS", 9) 309 f = QFont("Comic Sans MS", 9)
267 else: 310 else:
268 f = QFont("Bitstream Vera Serif", 9) 311 f = QFont("Bitstream Vera Serif", 9)
269 if style == PYGMENTS_PREPROCESSOR: 312 if style == PYGMENTS_PREPROCESSOR:
270 f.setItalic(True) 313 f.setItalic(True)
271 return f 314 return f
272 315
273 if style in [PYGMENTS_STRING]: 316 if style in [PYGMENTS_STRING, PYGMENTS_CHAR]:
274 if Utilities.isWindowsPlatform(): 317 if Utilities.isWindowsPlatform():
275 return QFont("Comic Sans MS", 10) 318 return QFont("Comic Sans MS", 10)
276 else: 319 else:
277 return QFont("Bitstream Vera Serif", 10) 320 return QFont("Bitstream Vera Serif", 10)
278 321
290 f.setItalic(True) 333 f.setItalic(True)
291 return f 334 return f
292 335
293 return LexerContainer.defaultFont(self, style) 336 return LexerContainer.defaultFont(self, style)
294 337
338 def defaultEolFill(self, style):
339 """
340 Public method to get the default fill to eol flag.
341
342 @param style style number (integer)
343 @return fill to eol flag (boolean)
344 """
345 try:
346 return self.defaultEolFill[style]
347 except KeyError:
348 return LexerContainer.defaultEolFill(self, style)
349
295 def styleBitsNeeded(self): 350 def styleBitsNeeded(self):
296 """ 351 """
297 Public method to get the number of style bits needed by the lexer. 352 Public method to get the number of style bits needed by the lexer.
298 353
299 @return number of style bits needed (integer) 354 @return number of style bits needed (integer)

eric ide

mercurial