QScintilla/Lexers/LexerPygments.py

changeset 945
8cd4d08fa9f6
parent 871
fbbcef4f43fb
child 1509
c0b5e693b0eb
equal deleted inserted replaced
944:1b59c4ba121e 945:8cd4d08fa9f6
46 PYGMENTS_OTHER, \ 46 PYGMENTS_OTHER, \
47 PYGMENTS_NUMBER, \ 47 PYGMENTS_NUMBER, \
48 PYGMENTS_HEADING, \ 48 PYGMENTS_HEADING, \
49 PYGMENTS_SUBHEADING, \ 49 PYGMENTS_SUBHEADING, \
50 PYGMENTS_DELETED, \ 50 PYGMENTS_DELETED, \
51 PYGMENTS_INSERTED = list(range(32)) 51 PYGMENTS_INSERTED = list(range(32))
52 # 32 to 39 are reserved for QScintilla internal styles 52 # 32 to 39 are reserved for QScintilla internal styles
53 PYGMENTS_GENERIC_ERROR, \ 53 PYGMENTS_GENERIC_ERROR, \
54 PYGMENTS_EMPHASIZE, \ 54 PYGMENTS_EMPHASIZE, \
55 PYGMENTS_STRONG, \ 55 PYGMENTS_STRONG, \
56 PYGMENTS_PROMPT, \ 56 PYGMENTS_PROMPT, \
59 PYGMENTS_ERROR, \ 59 PYGMENTS_ERROR, \
60 PYGMENTS_MULTILINECOMMENT, \ 60 PYGMENTS_MULTILINECOMMENT, \
61 PYGMENTS_PROPERTY, \ 61 PYGMENTS_PROPERTY, \
62 PYGMENTS_CHAR, \ 62 PYGMENTS_CHAR, \
63 PYGMENTS_HEREDOC, \ 63 PYGMENTS_HEREDOC, \
64 PYGMENTS_PUNCTUATION = list(range(40, 52)) 64 PYGMENTS_PUNCTUATION = list(range(40, 52))
65 65
66 #-----------------------------------------------------------------------------# 66 #-----------------------------------------------------------------------------#
67 67
68 TOKEN_MAP = { 68 TOKEN_MAP = {
69 Token.Comment: PYGMENTS_COMMENT, 69 Token.Comment: PYGMENTS_COMMENT,
127 Token.Generic.Strong: PYGMENTS_STRONG, 127 Token.Generic.Strong: PYGMENTS_STRONG,
128 Token.Generic.Prompt: PYGMENTS_PROMPT, 128 Token.Generic.Prompt: PYGMENTS_PROMPT,
129 Token.Generic.Output: PYGMENTS_OUTPUT, 129 Token.Generic.Output: PYGMENTS_OUTPUT,
130 Token.Generic.Traceback: PYGMENTS_TRACEBACK, 130 Token.Generic.Traceback: PYGMENTS_TRACEBACK,
131 131
132 Token.Error: PYGMENTS_ERROR, 132 Token.Error: PYGMENTS_ERROR,
133 } 133 }
134 134
135 #-----------------------------------------------------------------------------# 135 #-----------------------------------------------------------------------------#
136 136
137
137 class LexerPygments(LexerContainer): 138 class LexerPygments(LexerContainer):
138 """ 139 """
139 Class implementing a custom lexer using pygments. 140 Class implementing a custom lexer using pygments.
140 """ 141 """
141 def __init__(self, parent = None, name = ""): 142 def __init__(self, parent=None, name=""):
142 """ 143 """
143 Constructor 144 Constructor
144 145
145 @param parent parent widget of this lexer 146 @param parent parent widget of this lexer
146 @keyparam name name of the pygments lexer to use (string) 147 @keyparam name name of the pygments lexer to use (string)
148 LexerContainer.__init__(self, parent) 149 LexerContainer.__init__(self, parent)
149 150
150 self.__pygmentsName = name 151 self.__pygmentsName = name
151 152
152 self.descriptions = { 153 self.descriptions = {
153 PYGMENTS_DEFAULT : self.trUtf8("Default"), 154 PYGMENTS_DEFAULT: self.trUtf8("Default"),
154 PYGMENTS_COMMENT : self.trUtf8("Comment"), 155 PYGMENTS_COMMENT: self.trUtf8("Comment"),
155 PYGMENTS_PREPROCESSOR : self.trUtf8("Preprocessor"), 156 PYGMENTS_PREPROCESSOR: self.trUtf8("Preprocessor"),
156 PYGMENTS_KEYWORD : self.trUtf8("Keyword"), 157 PYGMENTS_KEYWORD: self.trUtf8("Keyword"),
157 PYGMENTS_PSEUDOKEYWORD : self.trUtf8("Pseudo Keyword"), 158 PYGMENTS_PSEUDOKEYWORD: self.trUtf8("Pseudo Keyword"),
158 PYGMENTS_TYPEKEYWORD : self.trUtf8("Type Keyword"), 159 PYGMENTS_TYPEKEYWORD: self.trUtf8("Type Keyword"),
159 PYGMENTS_OPERATOR : self.trUtf8("Operator"), 160 PYGMENTS_OPERATOR: self.trUtf8("Operator"),
160 PYGMENTS_WORD : self.trUtf8("Word"), 161 PYGMENTS_WORD: self.trUtf8("Word"),
161 PYGMENTS_BUILTIN : self.trUtf8("Builtin"), 162 PYGMENTS_BUILTIN: self.trUtf8("Builtin"),
162 PYGMENTS_FUNCTION : self.trUtf8("Function or method name"), 163 PYGMENTS_FUNCTION: self.trUtf8("Function or method name"),
163 PYGMENTS_CLASS : self.trUtf8("Class name"), 164 PYGMENTS_CLASS: self.trUtf8("Class name"),
164 PYGMENTS_NAMESPACE : self.trUtf8("Namespace"), 165 PYGMENTS_NAMESPACE: self.trUtf8("Namespace"),
165 PYGMENTS_EXCEPTION : self.trUtf8("Exception"), 166 PYGMENTS_EXCEPTION: self.trUtf8("Exception"),
166 PYGMENTS_VARIABLE : self.trUtf8("Identifier"), 167 PYGMENTS_VARIABLE: self.trUtf8("Identifier"),
167 PYGMENTS_CONSTANT : self.trUtf8("Constant"), 168 PYGMENTS_CONSTANT: self.trUtf8("Constant"),
168 PYGMENTS_LABEL : self.trUtf8("Label"), 169 PYGMENTS_LABEL: self.trUtf8("Label"),
169 PYGMENTS_ENTITY : self.trUtf8("Entity"), 170 PYGMENTS_ENTITY: self.trUtf8("Entity"),
170 PYGMENTS_ATTRIBUTE : self.trUtf8("Attribute"), 171 PYGMENTS_ATTRIBUTE: self.trUtf8("Attribute"),
171 PYGMENTS_TAG : self.trUtf8("Tag"), 172 PYGMENTS_TAG: self.trUtf8("Tag"),
172 PYGMENTS_DECORATOR : self.trUtf8("Decorator"), 173 PYGMENTS_DECORATOR: self.trUtf8("Decorator"),
173 PYGMENTS_STRING : self.trUtf8("String"), 174 PYGMENTS_STRING: self.trUtf8("String"),
174 PYGMENTS_DOCSTRING : self.trUtf8("Documentation string"), 175 PYGMENTS_DOCSTRING: self.trUtf8("Documentation string"),
175 PYGMENTS_SCALAR : self.trUtf8("Scalar"), 176 PYGMENTS_SCALAR: self.trUtf8("Scalar"),
176 PYGMENTS_ESCAPE : self.trUtf8("Escape"), 177 PYGMENTS_ESCAPE: self.trUtf8("Escape"),
177 PYGMENTS_REGEX : self.trUtf8("Regular expression"), 178 PYGMENTS_REGEX: self.trUtf8("Regular expression"),
178 PYGMENTS_SYMBOL : self.trUtf8("Symbol"), 179 PYGMENTS_SYMBOL: self.trUtf8("Symbol"),
179 PYGMENTS_OTHER : self.trUtf8("Other string"), 180 PYGMENTS_OTHER: self.trUtf8("Other string"),
180 PYGMENTS_NUMBER : self.trUtf8("Number"), 181 PYGMENTS_NUMBER: self.trUtf8("Number"),
181 PYGMENTS_HEADING : self.trUtf8("Heading"), 182 PYGMENTS_HEADING: self.trUtf8("Heading"),
182 PYGMENTS_SUBHEADING : self.trUtf8("Subheading"), 183 PYGMENTS_SUBHEADING: self.trUtf8("Subheading"),
183 PYGMENTS_DELETED : self.trUtf8("Deleted"), 184 PYGMENTS_DELETED: self.trUtf8("Deleted"),
184 PYGMENTS_INSERTED : self.trUtf8("Inserted"), 185 PYGMENTS_INSERTED: self.trUtf8("Inserted"),
185 PYGMENTS_GENERIC_ERROR : self.trUtf8("Generic error"), 186 PYGMENTS_GENERIC_ERROR: self.trUtf8("Generic error"),
186 PYGMENTS_EMPHASIZE : self.trUtf8("Emphasized text"), 187 PYGMENTS_EMPHASIZE: self.trUtf8("Emphasized text"),
187 PYGMENTS_STRONG : self.trUtf8("Strong text"), 188 PYGMENTS_STRONG: self.trUtf8("Strong text"),
188 PYGMENTS_PROMPT : self.trUtf8("Prompt"), 189 PYGMENTS_PROMPT: self.trUtf8("Prompt"),
189 PYGMENTS_OUTPUT : self.trUtf8("Output"), 190 PYGMENTS_OUTPUT: self.trUtf8("Output"),
190 PYGMENTS_TRACEBACK : self.trUtf8("Traceback"), 191 PYGMENTS_TRACEBACK: self.trUtf8("Traceback"),
191 PYGMENTS_ERROR : self.trUtf8("Error"), 192 PYGMENTS_ERROR: self.trUtf8("Error"),
192 PYGMENTS_MULTILINECOMMENT : self.trUtf8("Comment block"), 193 PYGMENTS_MULTILINECOMMENT: self.trUtf8("Comment block"),
193 PYGMENTS_PROPERTY : self.trUtf8("Property"), 194 PYGMENTS_PROPERTY: self.trUtf8("Property"),
194 PYGMENTS_CHAR : self.trUtf8("Character"), 195 PYGMENTS_CHAR: self.trUtf8("Character"),
195 PYGMENTS_HEREDOC : self.trUtf8("Here document"), 196 PYGMENTS_HEREDOC: self.trUtf8("Here document"),
196 PYGMENTS_PUNCTUATION : self.trUtf8("Punctuation"), 197 PYGMENTS_PUNCTUATION: self.trUtf8("Punctuation"),
197 } 198 }
198 199
199 self.defaultColors = { 200 self.defaultColors = {
200 PYGMENTS_DEFAULT : QColor("#000000"), 201 PYGMENTS_DEFAULT: QColor("#000000"),
201 PYGMENTS_COMMENT : QColor("#408080"), 202 PYGMENTS_COMMENT: QColor("#408080"),
202 PYGMENTS_PREPROCESSOR : QColor("#BC7A00"), 203 PYGMENTS_PREPROCESSOR: QColor("#BC7A00"),
203 PYGMENTS_KEYWORD : QColor("#008000"), 204 PYGMENTS_KEYWORD: QColor("#008000"),
204 PYGMENTS_PSEUDOKEYWORD : QColor("#008000"), 205 PYGMENTS_PSEUDOKEYWORD: QColor("#008000"),
205 PYGMENTS_TYPEKEYWORD : QColor("#B00040"), 206 PYGMENTS_TYPEKEYWORD: QColor("#B00040"),
206 PYGMENTS_OPERATOR : QColor("#666666"), 207 PYGMENTS_OPERATOR: QColor("#666666"),
207 PYGMENTS_WORD : QColor("#AA22FF"), 208 PYGMENTS_WORD: QColor("#AA22FF"),
208 PYGMENTS_BUILTIN : QColor("#008000"), 209 PYGMENTS_BUILTIN: QColor("#008000"),
209 PYGMENTS_FUNCTION : QColor("#0000FF"), 210 PYGMENTS_FUNCTION: QColor("#0000FF"),
210 PYGMENTS_CLASS : QColor("#0000FF"), 211 PYGMENTS_CLASS: QColor("#0000FF"),
211 PYGMENTS_NAMESPACE : QColor("#0000FF"), 212 PYGMENTS_NAMESPACE: QColor("#0000FF"),
212 PYGMENTS_EXCEPTION : QColor("#D2413A"), 213 PYGMENTS_EXCEPTION: QColor("#D2413A"),
213 PYGMENTS_VARIABLE : QColor("#19177C"), 214 PYGMENTS_VARIABLE: QColor("#19177C"),
214 PYGMENTS_CONSTANT : QColor("#880000"), 215 PYGMENTS_CONSTANT: QColor("#880000"),
215 PYGMENTS_LABEL : QColor("#A0A000"), 216 PYGMENTS_LABEL: QColor("#A0A000"),
216 PYGMENTS_ENTITY : QColor("#999999"), 217 PYGMENTS_ENTITY: QColor("#999999"),
217 PYGMENTS_ATTRIBUTE : QColor("#7D9029"), 218 PYGMENTS_ATTRIBUTE: QColor("#7D9029"),
218 PYGMENTS_TAG : QColor("#008000"), 219 PYGMENTS_TAG: QColor("#008000"),
219 PYGMENTS_DECORATOR : QColor("#AA22FF"), 220 PYGMENTS_DECORATOR: QColor("#AA22FF"),
220 PYGMENTS_STRING : QColor("#BA2121"), 221 PYGMENTS_STRING: QColor("#BA2121"),
221 PYGMENTS_DOCSTRING : QColor("#BA2121"), 222 PYGMENTS_DOCSTRING: QColor("#BA2121"),
222 PYGMENTS_SCALAR : QColor("#BB6688"), 223 PYGMENTS_SCALAR: QColor("#BB6688"),
223 PYGMENTS_ESCAPE : QColor("#BB6622"), 224 PYGMENTS_ESCAPE: QColor("#BB6622"),
224 PYGMENTS_REGEX : QColor("#BB6688"), 225 PYGMENTS_REGEX: QColor("#BB6688"),
225 PYGMENTS_SYMBOL : QColor("#19177C"), 226 PYGMENTS_SYMBOL: QColor("#19177C"),
226 PYGMENTS_OTHER : QColor("#008000"), 227 PYGMENTS_OTHER: QColor("#008000"),
227 PYGMENTS_NUMBER : QColor("#666666"), 228 PYGMENTS_NUMBER: QColor("#666666"),
228 PYGMENTS_HEADING : QColor("#000080"), 229 PYGMENTS_HEADING: QColor("#000080"),
229 PYGMENTS_SUBHEADING : QColor("#800080"), 230 PYGMENTS_SUBHEADING: QColor("#800080"),
230 PYGMENTS_DELETED : QColor("#A00000"), 231 PYGMENTS_DELETED: QColor("#A00000"),
231 PYGMENTS_INSERTED : QColor("#00A000"), 232 PYGMENTS_INSERTED: QColor("#00A000"),
232 PYGMENTS_GENERIC_ERROR : QColor("#FF0000"), 233 PYGMENTS_GENERIC_ERROR: QColor("#FF0000"),
233 PYGMENTS_PROMPT : QColor("#000080"), 234 PYGMENTS_PROMPT: QColor("#000080"),
234 PYGMENTS_OUTPUT : QColor("#808080"), 235 PYGMENTS_OUTPUT: QColor("#808080"),
235 PYGMENTS_TRACEBACK : QColor("#0040D0"), 236 PYGMENTS_TRACEBACK: QColor("#0040D0"),
236 PYGMENTS_MULTILINECOMMENT : QColor("#007F00"), 237 PYGMENTS_MULTILINECOMMENT: QColor("#007F00"),
237 PYGMENTS_PROPERTY : QColor("#00A0E0"), 238 PYGMENTS_PROPERTY: QColor("#00A0E0"),
238 PYGMENTS_CHAR : QColor("#7F007F"), 239 PYGMENTS_CHAR: QColor("#7F007F"),
239 PYGMENTS_HEREDOC : QColor("#7F007F"), 240 PYGMENTS_HEREDOC: QColor("#7F007F"),
240 PYGMENTS_PUNCTUATION : QColor("#000000"), 241 PYGMENTS_PUNCTUATION: QColor("#000000"),
241 } 242 }
242 243
243 self.defaultPapers = { 244 self.defaultPapers = {
244 PYGMENTS_ERROR : QColor("#FF0000"), 245 PYGMENTS_ERROR: QColor("#FF0000"),
245 PYGMENTS_MULTILINECOMMENT : QColor("#A8FFA8"), 246 PYGMENTS_MULTILINECOMMENT: QColor("#A8FFA8"),
246 PYGMENTS_HEREDOC : QColor("#DDD0DD"), 247 PYGMENTS_HEREDOC: QColor("#DDD0DD"),
247 } 248 }
248 249
249 self.defaultEolFills = { 250 self.defaultEolFills = {
250 PYGMENTS_ERROR : True, 251 PYGMENTS_ERROR: True,
251 PYGMENTS_MULTILINECOMMENT : True, 252 PYGMENTS_MULTILINECOMMENT: True,
252 PYGMENTS_HEREDOC : True, 253 PYGMENTS_HEREDOC: True,
253 } 254 }
254 255
255 def language(self): 256 def language(self):
256 """ 257 """
257 Public method returning the language of the lexer. 258 Public method returning the language of the lexer.
318 return QFont("Comic Sans MS", 10) 319 return QFont("Comic Sans MS", 10)
319 else: 320 else:
320 return QFont("Bitstream Vera Serif", 10) 321 return QFont("Bitstream Vera Serif", 10)
321 322
322 if style in [PYGMENTS_KEYWORD, PYGMENTS_OPERATOR, PYGMENTS_WORD, PYGMENTS_BUILTIN, 323 if style in [PYGMENTS_KEYWORD, PYGMENTS_OPERATOR, PYGMENTS_WORD, PYGMENTS_BUILTIN,
323 PYGMENTS_ATTRIBUTE, PYGMENTS_FUNCTION, PYGMENTS_CLASS, 324 PYGMENTS_ATTRIBUTE, PYGMENTS_FUNCTION, PYGMENTS_CLASS,
324 PYGMENTS_NAMESPACE, PYGMENTS_EXCEPTION, PYGMENTS_ENTITY, 325 PYGMENTS_NAMESPACE, PYGMENTS_EXCEPTION, PYGMENTS_ENTITY,
325 PYGMENTS_TAG, PYGMENTS_SCALAR, PYGMENTS_ESCAPE, PYGMENTS_HEADING, 326 PYGMENTS_TAG, PYGMENTS_SCALAR, PYGMENTS_ESCAPE, PYGMENTS_HEADING,
326 PYGMENTS_SUBHEADING, PYGMENTS_STRONG, PYGMENTS_PROMPT]: 327 PYGMENTS_SUBHEADING, PYGMENTS_STRONG, PYGMENTS_PROMPT]:
327 f = LexerContainer.defaultFont(self, style) 328 f = LexerContainer.defaultFont(self, style)
328 f.setBold(True) 329 f.setBold(True)
329 return f 330 return f
330 331
452 """ 453 """
453 Public method to check, if a style is a string style. 454 Public method to check, if a style is a string style.
454 455
455 @return flag indicating a string style (boolean) 456 @return flag indicating a string style (boolean)
456 """ 457 """
457 return style in [PYGMENTS_STRING, PYGMENTS_DOCSTRING, PYGMENTS_OTHER, 458 return style in [PYGMENTS_STRING, PYGMENTS_DOCSTRING, PYGMENTS_OTHER,
458 PYGMENTS_HEADING, PYGMENTS_SUBHEADING, PYGMENTS_EMPHASIZE, 459 PYGMENTS_HEADING, PYGMENTS_SUBHEADING, PYGMENTS_EMPHASIZE,
459 PYGMENTS_STRONG] 460 PYGMENTS_STRONG]
460 461
461 def defaultKeywords(self, kwSet): 462 def defaultKeywords(self, kwSet):
462 """ 463 """
463 Public method to get the default keywords. 464 Public method to get the default keywords.
464 465
465 @param kwSet number of the keyword set (integer) 466 @param kwSet number of the keyword set (integer)
466 @return string giving the keywords (string) or None 467 @return string giving the keywords (string) or None
467 """ 468 """
468 return None 469 return None

eric ide

mercurial