eric6/E5Gui/E5GenericDiffHighlighter.py

Tue, 10 Sep 2019 19:30:07 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 10 Sep 2019 19:30:07 +0200
changeset 7229
53054eb5b15a
parent 6942
2602857055c5
child 7360
9190402e4505
permissions
-rw-r--r--

Removed obsolete "from __future__ import ..." statements.

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
6645
ad476851d7e0 Updated copyright for 2019.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6187
diff changeset
3 # Copyright (c) 2015 - 2019 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
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import re
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
5765
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
13 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
14
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 import Preferences
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
4110
5a106c734527 Added diff syntax highlighters to the various VCS interfaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4109
diff changeset
17
4108
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 def TERMINAL(pattern):
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 """
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 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
21
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 @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
23 @return marked pattern (string)
4108
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 return "__TERMINAL__:{0}".format(pattern)
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 # 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
28 _REGEX_CACHE = {}
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
4110
5a106c734527 Added diff syntax highlighters to the various VCS interfaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4109
diff changeset
30
4108
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 class E5GenericDiffHighlighter(QSyntaxHighlighter):
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 """
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 Class implementing a generic diff highlighter.
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 """
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 def __init__(self, doc):
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 """
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 Constructor
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @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
40 """
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 super(E5GenericDiffHighlighter, self).__init__(doc)
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
5765
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
43 self.regenerateRules()
4108
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44
5765
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
45 def __initColours(self):
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
46 """
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
47 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
48 """
5765
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
49 self.textColor = Preferences.getDiffColour("TextColor")
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
50 self.addedColor = Preferences.getDiffColour("AddedColor")
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
51 self.removedColor = Preferences.getDiffColour("RemovedColor")
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
52 self.replacedColor = Preferences.getDiffColour("ReplacedColor")
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
53 self.contextColor = Preferences.getDiffColour("ContextColor")
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
54 self.headerColor = Preferences.getDiffColour("HeaderColor")
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
55 self.whitespaceColor = Preferences.getDiffColour("BadWhitespaceColor")
4108
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 def createRules(self, *rules):
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 """
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 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
60
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 @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
62 pattern (string) and highlighting format (QTextCharFormat))
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 """
6187
2cc7e3629784 Started to fix some unused loop variable warnings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
64 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
65 rule, formats = ruleFormat
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 terminal = rule.startswith(TERMINAL(''))
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 if terminal:
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 rule = rule[len(TERMINAL('')):]
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 try:
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 regex = _REGEX_CACHE[rule]
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 except KeyError:
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 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
73 self._rules.append((regex, formats, terminal))
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 def formats(self, line):
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 """
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 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
78 text.
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 @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
81 @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
82 object and format (QTextCharFormat))
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 """
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 matched = []
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 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
86 match = rx.match(line)
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 if not match:
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 continue
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 matched.append([match, formats])
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 if terminal:
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 return matched
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 return matched
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 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
96 """
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 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
98
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 @param fg foreground color (QColor)
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 @param bg background color (QColor)
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 @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
102 @return format definiton (QTextCharFormat)
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 """
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 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
105 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
106 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
107 charFormat.setFontPointSize(font.pointSize())
4108
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 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
110 charFormat.setForeground(fg)
4108
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 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
113 charFormat.setBackground(bg)
4108
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 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
116 charFormat.setFontWeight(QFont.Bold)
4108
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117
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 return charFormat
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 def highlightBlock(self, text):
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 """
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 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
123
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 @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
125 """
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 formats = self.formats(text)
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 if not formats:
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 # nothing matched
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 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
130 return
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131
5597
3d88d53f8c2b Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5587
diff changeset
132 for match, formatStr in formats:
4108
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 start = match.start()
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 groups = match.groups()
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 # 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
137 # that spans the entire line
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 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
139 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
140 continue
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 # 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
143 for groupIndex, group in enumerate(groups):
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 if not group:
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 # empty match
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 continue
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 # 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
149 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
150 if formatStr[groupIndex]:
4108
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 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
152 formatStr[groupIndex])
4108
0059d2d09ab8 Added a generic syntax highlighter for diff outputs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 start += length
5765
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
154
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
155 def regenerateRules(self):
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
156 """
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
157 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
158 """
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
159 self.normalFormat = self.makeFormat()
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
160
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
161 self.__initColours()
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
162
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
163 self._rules = []
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
164 self.generateRules()
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
165
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
166 def generateRules(self):
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
167 """
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
168 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
169
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
170 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
171 highlighters.
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
172 """
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
173 pass

eric ide

mercurial