Sat, 06 May 2017 13:43:21 +0200
Merged with default branch in order to prepare the 17.05 release.
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 | |
5389
9b1c800daff3
Updated copyright for 2017.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
3 | # Copyright (c) 2015 - 2017 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 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | from PyQt5.QtGui import QSyntaxHighlighter, QColor, QTextCharFormat, QFont |
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 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | self.textColor = QColor(0, 0, 0) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | self.addedColor = QColor(190, 237, 190) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | self.removedColor = QColor(237, 190, 190) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | self.replacedColor = QColor(190, 190, 237) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | self.contextColor = QColor(255, 220, 168) |
4109
809b8268183d
Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4108
diff
changeset
|
49 | self.headerColor = QColor(237, 237, 190) |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | self.normalFormat = self.makeFormat() |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | self._rules = [] |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | self.generateRules() |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | def generateRules(self): |
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 | Public method to generate the rule set. |
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 | Note: This method must me implemented by derived syntax |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | highlighters. |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | pass |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | def createRules(self, *rules): |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | 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
|
68 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | @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
|
70 | pattern (string) and highlighting format (QTextCharFormat)) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | for idx, ruleFormat in enumerate(rules): |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | rule, formats = ruleFormat |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | terminal = rule.startswith(TERMINAL('')) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | if terminal: |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | rule = rule[len(TERMINAL('')):] |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | try: |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | regex = _REGEX_CACHE[rule] |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | except KeyError: |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | 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
|
81 | self._rules.append((regex, formats, terminal)) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | def formats(self, line): |
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 | 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
|
86 | text. |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | @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
|
89 | @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
|
90 | object and format (QTextCharFormat)) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | matched = [] |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | 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
|
94 | match = rx.match(line) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | if not match: |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | continue |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | matched.append([match, formats]) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | if terminal: |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | return matched |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | return matched |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | 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
|
104 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | 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
|
106 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | @param fg foreground color (QColor) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | @param bg background color (QColor) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | @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
|
110 | @return format definiton (QTextCharFormat) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | 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
|
113 | 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
|
114 | 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
|
115 | charFormat.setFontPointSize(font.pointSize()) |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | 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
|
118 | charFormat.setForeground(fg) |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | 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
|
121 | charFormat.setBackground(bg) |
4108
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 | 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
|
124 | charFormat.setFontWeight(QFont.Bold) |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | |
5587
ea526b78ee6c
Started to fix code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
126 | return charFormat |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | def highlightBlock(self, text): |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | 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
|
131 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | @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
|
133 | """ |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | formats = self.formats(text) |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | if not formats: |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | # nothing matched |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | 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
|
138 | return |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | |
5597
3d88d53f8c2b
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
140 | for match, formatStr in formats: |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | start = match.start() |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | groups = match.groups() |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | # 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
|
145 | # that spans the entire line |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | 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
|
147 | 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
|
148 | continue |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | # 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
|
151 | for groupIndex, group in enumerate(groups): |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | if not group: |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | # empty match |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | continue |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | |
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | # 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
|
157 | 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
|
158 | if formatStr[groupIndex]: |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | 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
|
160 | formatStr[groupIndex]) |
4108
0059d2d09ab8
Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | start += length |