4 # |
4 # |
5 |
5 |
6 """ |
6 """ |
7 Module implementing a custom lexer using pygments. |
7 Module implementing a custom lexer using pygments. |
8 """ |
8 """ |
|
9 |
|
10 import contextlib |
9 |
11 |
10 from pygments.token import Token |
12 from pygments.token import Token |
11 from pygments.lexers import ( |
13 from pygments.lexers import ( |
12 guess_lexer_for_filename, guess_lexer, find_lexer_class |
14 guess_lexer_for_filename, guess_lexer, find_lexer_class |
13 ) |
15 ) |
451 elif text: |
453 elif text: |
452 # step 1: guess based on filename and text |
454 # step 1: guess based on filename and text |
453 if self.editor is not None: |
455 if self.editor is not None: |
454 fn = self.editor.getFileName() |
456 fn = self.editor.getFileName() |
455 if fn: |
457 if fn: |
456 try: |
458 with contextlib.suppress(ClassNotFound): |
457 lexer = guess_lexer_for_filename(fn, text) |
459 lexer = guess_lexer_for_filename(fn, text) |
458 except ClassNotFound: |
|
459 pass |
|
460 |
460 |
461 # step 2: guess on text only |
461 # step 2: guess on text only |
462 if lexer is None: |
462 if lexer is None: |
463 try: |
463 with contextlib.suppress(ClassNotFound): |
464 lexer = guess_lexer(text) |
464 lexer = guess_lexer(text) |
465 except ClassNotFound: |
|
466 pass |
|
467 |
465 |
468 return lexer |
466 return lexer |
469 |
467 |
470 def canStyle(self): |
468 def canStyle(self): |
471 """ |
469 """ |