Thu, 19 Apr 2018 19:35:14 +0200
Branch make_support has been merged with the default branch.
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
6048
82ad8ec9548c
Updated copyright for 2018.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5765
diff
changeset
|
3 | # Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de> |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a syntax highlighter for diff outputs. |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | from __future__ import unicode_literals |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | import re |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | |
5765
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
14 | from PyQt5.QtGui import QSyntaxHighlighter, QTextCharFormat, QFont |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | import Preferences |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | |
4110
5a106c734527
Added diff syntax highlighters to the various VCS interfaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4109
diff
changeset
|
18 | |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | def TERMINAL(pattern): |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | Function to mark a pattern as the final one to search for. |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | @param pattern pattern to be marked (string) |
4110
5a106c734527
Added diff syntax highlighters to the various VCS interfaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4109
diff
changeset
|
24 | @return marked pattern (string) |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | return "__TERMINAL__:{0}".format(pattern) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | # Cache the results of re.compile for performance reasons |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | _REGEX_CACHE = {} |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | |
4110
5a106c734527
Added diff syntax highlighters to the various VCS interfaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4109
diff
changeset
|
31 | |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | class E5GenericDiffHighlighter(QSyntaxHighlighter): |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | Class implementing a generic diff highlighter. |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | def __init__(self, doc): |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | Constructor |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | @param doc reference to the text document (QTextDocument) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | super(E5GenericDiffHighlighter, self).__init__(doc) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | |
5765
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
44 | self.regenerateRules() |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | |
5765
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
46 | def __initColours(self): |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
47 | """ |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
48 | Private method to initialize the highlighter colours. |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | """ |
5765
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
50 | self.textColor = Preferences.getDiffColour("TextColor") |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
51 | self.addedColor = Preferences.getDiffColour("AddedColor") |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
52 | self.removedColor = Preferences.getDiffColour("RemovedColor") |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
53 | self.replacedColor = Preferences.getDiffColour("ReplacedColor") |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
54 | self.contextColor = Preferences.getDiffColour("ContextColor") |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
55 | self.headerColor = Preferences.getDiffColour("HeaderColor") |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
56 | self.whitespaceColor = Preferences.getDiffColour("BadWhitespaceColor") |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | def createRules(self, *rules): |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | Public method to create the highlighting rules. |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | @param rules set of highlighting rules (list of tuples of rule |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | pattern (string) and highlighting format (QTextCharFormat)) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | """ |
6187
2cc7e3629784
Started to fix some unused loop variable warnings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
65 | for _idx, ruleFormat in enumerate(rules): |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | rule, formats = ruleFormat |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | terminal = rule.startswith(TERMINAL('')) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | if terminal: |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | rule = rule[len(TERMINAL('')):] |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | try: |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | regex = _REGEX_CACHE[rule] |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | except KeyError: |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | regex = _REGEX_CACHE[rule] = re.compile(rule) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | self._rules.append((regex, formats, terminal)) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | def formats(self, line): |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | Public method to determine the highlighting formats for a line of |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | text. |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | @param line text line to be highlighted (string) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | @return list of matched highlighting rules (list of tuples of match |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | object and format (QTextCharFormat)) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | matched = [] |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | for rx, formats, terminal in self._rules: |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | match = rx.match(line) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | if not match: |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | continue |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | matched.append([match, formats]) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | if terminal: |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | return matched |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | return matched |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | def makeFormat(self, fg=None, bg=None, bold=False): |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | Public method to generate a format definition. |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | @param fg foreground color (QColor) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | @param bg background color (QColor) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | @param bold flag indicating bold text (boolean) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | @return format definiton (QTextCharFormat) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | font = Preferences.getEditorOtherFonts("MonospacedFont") |
5587
ea526b78ee6c
Started to fix code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
106 | charFormat = QTextCharFormat() |
ea526b78ee6c
Started to fix code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
107 | charFormat.setFontFamily(font.family()) |
ea526b78ee6c
Started to fix code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
108 | charFormat.setFontPointSize(font.pointSize()) |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | if fg: |
5587
ea526b78ee6c
Started to fix code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
111 | charFormat.setForeground(fg) |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | if bg: |
5587
ea526b78ee6c
Started to fix code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
114 | charFormat.setBackground(bg) |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | if bold: |
5587
ea526b78ee6c
Started to fix code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
117 | charFormat.setFontWeight(QFont.Bold) |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | |
5587
ea526b78ee6c
Started to fix code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
119 | return charFormat |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | def highlightBlock(self, text): |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | Public method to highlight a block of text. |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | @param text text to be highlighted (string) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | formats = self.formats(text) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | if not formats: |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | # nothing matched |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | self.setFormat(0, len(text), self.normalFormat) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | return |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | |
5597
3d88d53f8c2b
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
133 | for match, formatStr in formats: |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | start = match.start() |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | groups = match.groups() |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | # No groups in the regex, assume this is a single rule |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | # that spans the entire line |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | if not groups: |
5597
3d88d53f8c2b
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
140 | self.setFormat(0, len(text), formatStr) |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | continue |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | # Groups exist, rule is a tuple corresponding to group |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | for groupIndex, group in enumerate(groups): |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | if not group: |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | # empty match |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | continue |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | # allow None as a no-op format |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | length = len(group) |
5597
3d88d53f8c2b
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
151 | if formatStr[groupIndex]: |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | self.setFormat(start, start + length, |
5597
3d88d53f8c2b
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
153 | formatStr[groupIndex]) |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | start += length |
5765
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
155 | |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
156 | def regenerateRules(self): |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
157 | """ |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
158 | Public method to initialize or regenerate the syntax highlighter rules. |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
159 | """ |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
160 | self.normalFormat = self.makeFormat() |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
161 | |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
162 | self.__initColours() |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
163 | |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
164 | self._rules = [] |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
165 | self.generateRules() |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
166 | |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
167 | def generateRules(self): |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
168 | """ |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
169 | Public method to generate the rule set. |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
170 | |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
171 | Note: This method must me implemented by derived syntax |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
172 | highlighters. |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
173 | """ |
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5597
diff
changeset
|
174 | pass |