eric6/UI/DiffHighlighter.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.

4109
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
6645
ad476851d7e0 Updated copyright for 2019.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
3 # Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
4109
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a syntax highlighter for unified and context diff outputs.
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 from E5Gui.E5GenericDiffHighlighter import TERMINAL, E5GenericDiffHighlighter
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 class DiffHighlighter(E5GenericDiffHighlighter):
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 """
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 Class implementing a diff highlighter for Git.
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 """
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 def __init__(self, doc):
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 """
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 Constructor
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 @param doc reference to the text document (QTextDocument)
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 """
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 super(DiffHighlighter, self).__init__(doc)
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 def generateRules(self):
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 """
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 Public method to generate the rule set.
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 diffHeaderBold = self.makeFormat(fg=self.textColor,
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 bg=self.headerColor,
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 bold=True)
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 diffContext = self.makeFormat(fg=self.textColor,
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 bg=self.contextColor)
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 diffAdded = self.makeFormat(fg=self.textColor,
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 bg=self.addedColor)
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 diffRemoved = self.makeFormat(fg=self.textColor,
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 bg=self.removedColor)
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 diffReplaced = self.makeFormat(fg=self.textColor,
4110
5a106c734527 Added diff syntax highlighters to the various VCS interfaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4109
diff changeset
41 bg=self.replacedColor)
4109
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 diffBarRegex = TERMINAL(r'^\*+$')
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 diffOldRegex = TERMINAL(r'^--- ')
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 diffNewRegex = TERMINAL(r'^\+\+\+ |^\*\*\*')
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 diffContextRegex = TERMINAL(r'^@@ ')
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 diffAddedRegex = TERMINAL(r'^[+>]')
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 diffRemovedRegex = TERMINAL(r'^[-<]')
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 diffReplacedRegex = TERMINAL(r'^!')
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 self.createRules((diffBarRegex, diffHeaderBold),
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 (diffOldRegex, diffRemoved),
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 (diffNewRegex, diffAdded),
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 (diffContextRegex, diffContext),
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 (diffAddedRegex, diffAdded),
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 (diffRemovedRegex, diffRemoved),
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 (diffReplacedRegex, diffReplaced),
809b8268183d Changed the diff dialog to use the new diff highlighter logic.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 )

eric ide

mercurial