--- a/src/eric7/Plugins/VcsPlugins/vcsGit/GitDiffHighlighter.py Wed Jul 13 11:16:20 2022 +0200 +++ b/src/eric7/Plugins/VcsPlugins/vcsGit/GitDiffHighlighter.py Wed Jul 13 14:55:47 2022 +0200 @@ -9,87 +9,83 @@ from PyQt6.QtGui import QColor -from EricGui.EricGenericDiffHighlighter import ( - TERMINAL, EricGenericDiffHighlighter -) +from EricGui.EricGenericDiffHighlighter import TERMINAL, EricGenericDiffHighlighter class GitDiffHighlighter(EricGenericDiffHighlighter): """ Class implementing a diff highlighter for Git. """ + def __init__(self, doc, whitespace=True): """ Constructor - + @param doc reference to the text document (QTextDocument) @param whitespace flag indicating to highlight whitespace at the end of a line (boolean) """ self.whitespace = whitespace - + super().__init__(doc) def generateRules(self): """ Public method to generate the rule set. """ - diffHeader = self.makeFormat(fg=self.textColor, - bg=self.headerColor) - diffHeaderBold = self.makeFormat(fg=self.textColor, - bg=self.headerColor, - bold=True) - diffContext = self.makeFormat(fg=self.textColor, - bg=self.contextColor) + diffHeader = self.makeFormat(fg=self.textColor, bg=self.headerColor) + 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) + diffAdded = self.makeFormat(fg=self.textColor, bg=self.addedColor) + diffRemoved = self.makeFormat(fg=self.textColor, bg=self.removedColor) if self.whitespace: try: - badWhitespace = self.makeFormat(fg=self.textColor, - bg=self.whitespaceColor) + badWhitespace = self.makeFormat( + fg=self.textColor, bg=self.whitespaceColor + ) except AttributeError: - badWhitespace = self.makeFormat(fg=self.textColor, - bg=QColor(255, 0, 0, 192)) + badWhitespace = self.makeFormat( + fg=self.textColor, bg=QColor(255, 0, 0, 192) + ) # We specify the whitespace rule last so that it is # applied after the diff addition/removal rules. - diffOldRegex = TERMINAL(r'^--- ') - diffNewRegex = TERMINAL(r'^\+\+\+ ') - diffContextRegex = TERMINAL(r'^@@ ') + diffOldRegex = TERMINAL(r"^--- ") + diffNewRegex = TERMINAL(r"^\+\+\+ ") + diffContextRegex = TERMINAL(r"^@@ ") + + diffHeader1Regex = TERMINAL(r"^diff --git a/.*b/.*") + diffHeader2Regex = TERMINAL(r"^index \S+\.\.\S+") + diffHeader3Regex = TERMINAL(r"^new file mode") + diffHeader4Regex = TERMINAL(r"^deleted file mode") - diffHeader1Regex = TERMINAL(r'^diff --git a/.*b/.*') - diffHeader2Regex = TERMINAL(r'^index \S+\.\.\S+') - diffHeader3Regex = TERMINAL(r'^new file mode') - diffHeader4Regex = TERMINAL(r'^deleted file mode') - - diffAddedRegex = TERMINAL(r'^\+') - diffRemovedRegex = TERMINAL(r'^-') - diffBarRegex = TERMINAL(r'^([ ]+.*)(\|[ ]+\d+[ ]+[+-]+)$') - diffStsRegex = (r'(.+\|.+?)(\d+)(.+?)([\+]*?)([-]*?)$') - diffSummaryRegex = (r'(\s+\d+ files changed[^\d]*)' - r'(:?\d+ insertions[^\d]*)' - r'(:?\d+ deletions.*)$') + diffAddedRegex = TERMINAL(r"^\+") + diffRemovedRegex = TERMINAL(r"^-") + diffBarRegex = TERMINAL(r"^([ ]+.*)(\|[ ]+\d+[ ]+[+-]+)$") + diffStsRegex = r"(.+\|.+?)(\d+)(.+?)([\+]*?)([-]*?)$" + diffSummaryRegex = ( + r"(\s+\d+ files changed[^\d]*)" + r"(:?\d+ insertions[^\d]*)" + r"(:?\d+ deletions.*)$" + ) if self.whitespace: - self.createRules((r'(..*?)(\s+)$', (None, badWhitespace))) - self.createRules((diffOldRegex, diffRemoved), - (diffNewRegex, diffAdded), - (diffContextRegex, diffContext), - (diffBarRegex, (diffHeaderBold, diffHeader)), - (diffHeader1Regex, diffHeader), - (diffHeader2Regex, diffHeader), - (diffHeader3Regex, diffHeader), - (diffHeader4Regex, diffHeader), - (diffAddedRegex, diffAdded), - (diffRemovedRegex, diffRemoved), - (diffStsRegex, (None, diffHeader, - None, diffHeader, - diffHeader)), - (diffSummaryRegex, (diffHeader, - diffHeader, - diffHeader)) - ) + self.createRules((r"(..*?)(\s+)$", (None, badWhitespace))) + self.createRules( + (diffOldRegex, diffRemoved), + (diffNewRegex, diffAdded), + (diffContextRegex, diffContext), + (diffBarRegex, (diffHeaderBold, diffHeader)), + (diffHeader1Regex, diffHeader), + (diffHeader2Regex, diffHeader), + (diffHeader3Regex, diffHeader), + (diffHeader4Regex, diffHeader), + (diffAddedRegex, diffAdded), + (diffRemovedRegex, diffRemoved), + (diffStsRegex, (None, diffHeader, None, diffHeader, diffHeader)), + (diffSummaryRegex, (diffHeader, diffHeader, diffHeader)), + )