--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric7/UI/DiffHighlighter.py Sat May 15 18:45:04 2021 +0200 @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2015 - 2021 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a syntax highlighter for unified and context diff outputs. +""" + +from E5Gui.E5GenericDiffHighlighter import TERMINAL, E5GenericDiffHighlighter + + +class DiffHighlighter(E5GenericDiffHighlighter): + """ + Class implementing a diff highlighter for Git. + """ + def __init__(self, doc): + """ + Constructor + + @param doc reference to the text document (QTextDocument) + """ + super().__init__(doc) + + def generateRules(self): + """ + Public method to generate the rule set. + """ + diffHeaderBold = self.makeFormat(fg=self.textColor, + bg=self.headerColor, + bold=True) + diffContext = self.makeFormat(fg=self.textColor, + bg=self.contextColor) + + diffAdded = self.makeFormat(fg=self.textColor, + bg=self.addedColor) + diffRemoved = self.makeFormat(fg=self.textColor, + bg=self.removedColor) + diffReplaced = self.makeFormat(fg=self.textColor, + bg=self.replacedColor) + + diffBarRegex = TERMINAL(r'^\*+$') + + diffOldRegex = TERMINAL(r'^--- ') + diffNewRegex = TERMINAL(r'^\+\+\+ |^\*\*\*') + diffContextRegex = TERMINAL(r'^@@ ') + + diffAddedRegex = TERMINAL(r'^[+>]') + diffRemovedRegex = TERMINAL(r'^[-<]') + diffReplacedRegex = TERMINAL(r'^!') + + self.createRules((diffBarRegex, diffHeaderBold), + (diffOldRegex, diffRemoved), + (diffNewRegex, diffAdded), + (diffContextRegex, diffContext), + (diffAddedRegex, diffAdded), + (diffRemovedRegex, diffRemoved), + (diffReplacedRegex, diffReplaced), + )