Added diff syntax highlighters to the various VCS interfaces.

Tue, 10 Feb 2015 19:30:11 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 10 Feb 2015 19:30:11 +0100
changeset 4110
5a106c734527
parent 4109
809b8268183d
child 4111
82e21ab01491

Added diff syntax highlighters to the various VCS interfaces.

APIs/Python3/eric6.api file | annotate | diff | comparison | revisions
APIs/Python3/eric6.bas file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Documentation/Source/eric6.E5Gui.E5GenericDiffHighlighter.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffDialog.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffHighlighter.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffHighlighter.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffDialog.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffHighlighter.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric6.Plugins.VcsPlugins.vcsMercurial.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric6.Plugins.VcsPlugins.vcsPySvn.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric6.Plugins.VcsPlugins.vcsSubversion.html file | annotate | diff | comparison | revisions
E5Gui/E5GenericDiffHighlighter.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/HgDiffHighlighter.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsPySvn/SvnDiffHighlighter.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsSubversion/SvnDiffHighlighter.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationDialog.py file | annotate | diff | comparison | revisions
UI/DiffDialog.py file | annotate | diff | comparison | revisions
UI/DiffHighlighter.py file | annotate | diff | comparison | revisions
eric6.e4p file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric6.api	Mon Feb 09 19:57:45 2015 +0100
+++ b/APIs/Python3/eric6.api	Tue Feb 10 19:30:11 2015 +0100
@@ -4627,6 +4627,8 @@
 eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffDialog.HgDiffDialog.on_sendButton_clicked?4()
 eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffDialog.HgDiffDialog.start?4(fn, versions=None, bundle=None, qdiff=False, refreshable=False)
 eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffDialog.HgDiffDialog?1(vcs, parent=None)
+eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffHighlighter.HgDiffHighlighter.generateRules?4()
+eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffHighlighter.HgDiffHighlighter?1(doc)
 eric6.Plugins.VcsPlugins.vcsMercurial.HgExportDialog.HgExportDialog.getParameters?4()
 eric6.Plugins.VcsPlugins.vcsMercurial.HgExportDialog.HgExportDialog.on_changesetsEdit_textChanged?4()
 eric6.Plugins.VcsPlugins.vcsMercurial.HgExportDialog.HgExportDialog.on_directoryButton_clicked?4()
@@ -5228,6 +5230,8 @@
 eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffDialog.SvnDiffDialog.on_saveButton_clicked?4()
 eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffDialog.SvnDiffDialog.start?4(fn, versions=None, urls=None, summary=False, pegRev=None, refreshable=False)
 eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffDialog.SvnDiffDialog?1(vcs, parent=None)
+eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffHighlighter.SvnDiffHighlighter.generateRules?4()
+eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffHighlighter.SvnDiffHighlighter?1(doc)
 eric6.Plugins.VcsPlugins.vcsPySvn.SvnInfoDialog.SvnInfoDialog.start?4(projectPath, fn)
 eric6.Plugins.VcsPlugins.vcsPySvn.SvnInfoDialog.SvnInfoDialog?1(vcs, parent=None)
 eric6.Plugins.VcsPlugins.vcsPySvn.SvnLogBrowserDialog.SvnLogBrowserDialog._reset?5()
@@ -5460,6 +5464,8 @@
 eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffDialog.SvnDiffDialog.on_sendButton_clicked?4()
 eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffDialog.SvnDiffDialog.start?4(fn, versions=None, urls=None, summary=False, refreshable=False)
 eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffDialog.SvnDiffDialog?1(vcs, parent=None)
+eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffHighlighter.SvnDiffHighlighter.generateRules?4()
+eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffHighlighter.SvnDiffHighlighter?1(doc)
 eric6.Plugins.VcsPlugins.vcsSubversion.SvnLogBrowserDialog.SvnLogBrowserDialog.closeEvent?4(e)
 eric6.Plugins.VcsPlugins.vcsSubversion.SvnLogBrowserDialog.SvnLogBrowserDialog.keyPressEvent?4(evt)
 eric6.Plugins.VcsPlugins.vcsSubversion.SvnLogBrowserDialog.SvnLogBrowserDialog.on_buttonBox_clicked?4(button)
--- a/APIs/Python3/eric6.bas	Mon Feb 09 19:57:45 2015 +0100
+++ b/APIs/Python3/eric6.bas	Tue Feb 10 19:30:11 2015 +0100
@@ -307,6 +307,7 @@
 HgCopyDialog QDialog Ui_HgCopyDialog
 HgDialog QDialog Ui_HgDialog
 HgDiffDialog QWidget Ui_HgDiffDialog
+HgDiffHighlighter E5GenericDiffHighlighter
 HgExportDialog QDialog Ui_HgExportDialog
 HgExtension QObject
 HgExtensionProjectBrowserHelper QObject
@@ -647,6 +648,7 @@
 SvnCopyDialog QDialog Ui_SvnCopyDialog
 SvnDialog QDialog Ui_SvnDialog
 SvnDiffDialog QWidget Ui_SvnDiffDialog
+SvnDiffHighlighter E5GenericDiffHighlighter
 SvnInfoDialog QDialog SvnDialogMixin Ui_VcsRepositoryInfoDialog
 SvnLogBrowserDialog QWidget Ui_SvnLogBrowserDialog
 SvnLogDialog QWidget Ui_SvnLogDialog
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Mon Feb 09 19:57:45 2015 +0100
+++ b/Documentation/Help/source.qhp	Tue Feb 10 19:30:11 2015 +0100
@@ -570,6 +570,7 @@
                 <section title="eric6.Plugins.VcsPlugins.vcsMercurial.HgCopyDialog" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgCopyDialog.html" />
                 <section title="eric6.Plugins.VcsPlugins.vcsMercurial.HgDialog" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgDialog.html" />
                 <section title="eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffDialog" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffDialog.html" />
+                <section title="eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffHighlighter" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffHighlighter.html" />
                 <section title="eric6.Plugins.VcsPlugins.vcsMercurial.HgExportDialog" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgExportDialog.html" />
                 <section title="eric6.Plugins.VcsPlugins.vcsMercurial.HgExtension" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgExtension.html" />
                 <section title="eric6.Plugins.VcsPlugins.vcsMercurial.HgExtensionProjectBrowserHelper" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgExtensionProjectBrowserHelper.html" />
@@ -615,6 +616,7 @@
                 <section title="eric6.Plugins.VcsPlugins.vcsPySvn.SvnDialog" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnDialog.html" />
                 <section title="eric6.Plugins.VcsPlugins.vcsPySvn.SvnDialogMixin" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnDialogMixin.html" />
                 <section title="eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffDialog" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffDialog.html" />
+                <section title="eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffHighlighter" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffHighlighter.html" />
                 <section title="eric6.Plugins.VcsPlugins.vcsPySvn.SvnInfoDialog" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnInfoDialog.html" />
                 <section title="eric6.Plugins.VcsPlugins.vcsPySvn.SvnLogBrowserDialog" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnLogBrowserDialog.html" />
                 <section title="eric6.Plugins.VcsPlugins.vcsPySvn.SvnLogDialog" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnLogDialog.html" />
@@ -651,6 +653,7 @@
                 <section title="eric6.Plugins.VcsPlugins.vcsSubversion.SvnCopyDialog" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnCopyDialog.html" />
                 <section title="eric6.Plugins.VcsPlugins.vcsSubversion.SvnDialog" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnDialog.html" />
                 <section title="eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffDialog" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffDialog.html" />
+                <section title="eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffHighlighter" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffHighlighter.html" />
                 <section title="eric6.Plugins.VcsPlugins.vcsSubversion.SvnLogBrowserDialog" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnLogBrowserDialog.html" />
                 <section title="eric6.Plugins.VcsPlugins.vcsSubversion.SvnLogDialog" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnLogDialog.html" />
                 <section title="eric6.Plugins.VcsPlugins.vcsSubversion.SvnMergeDialog" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnMergeDialog.html" />
@@ -5973,6 +5976,10 @@
       <keyword name="HgDiffDialog.on_saveButton_clicked" id="HgDiffDialog.on_saveButton_clicked" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffDialog.html#HgDiffDialog.on_saveButton_clicked" />
       <keyword name="HgDiffDialog.on_sendButton_clicked" id="HgDiffDialog.on_sendButton_clicked" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffDialog.html#HgDiffDialog.on_sendButton_clicked" />
       <keyword name="HgDiffDialog.start" id="HgDiffDialog.start" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffDialog.html#HgDiffDialog.start" />
+      <keyword name="HgDiffHighlighter" id="HgDiffHighlighter" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffHighlighter.html#HgDiffHighlighter" />
+      <keyword name="HgDiffHighlighter (Constructor)" id="HgDiffHighlighter (Constructor)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffHighlighter.html#HgDiffHighlighter.__init__" />
+      <keyword name="HgDiffHighlighter (Module)" id="HgDiffHighlighter (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffHighlighter.html" />
+      <keyword name="HgDiffHighlighter.generateRules" id="HgDiffHighlighter.generateRules" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffHighlighter.html#HgDiffHighlighter.generateRules" />
       <keyword name="HgExportDialog" id="HgExportDialog" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgExportDialog.html#HgExportDialog" />
       <keyword name="HgExportDialog (Constructor)" id="HgExportDialog (Constructor)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgExportDialog.html#HgExportDialog.__init__" />
       <keyword name="HgExportDialog (Module)" id="HgExportDialog (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgExportDialog.html" />
@@ -10770,6 +10777,14 @@
       <keyword name="SvnDiffDialog.on_sendButton_clicked" id="SvnDiffDialog.on_sendButton_clicked" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffDialog.html#SvnDiffDialog.on_sendButton_clicked" />
       <keyword name="SvnDiffDialog.start" id="SvnDiffDialog.start" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffDialog.html#SvnDiffDialog.start" />
       <keyword name="SvnDiffDialog.start" id="SvnDiffDialog.start" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffDialog.html#SvnDiffDialog.start" />
+      <keyword name="SvnDiffHighlighter" id="SvnDiffHighlighter" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffHighlighter.html#SvnDiffHighlighter" />
+      <keyword name="SvnDiffHighlighter" id="SvnDiffHighlighter" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffHighlighter.html#SvnDiffHighlighter" />
+      <keyword name="SvnDiffHighlighter (Constructor)" id="SvnDiffHighlighter (Constructor)" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffHighlighter.html#SvnDiffHighlighter.__init__" />
+      <keyword name="SvnDiffHighlighter (Constructor)" id="SvnDiffHighlighter (Constructor)" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffHighlighter.html#SvnDiffHighlighter.__init__" />
+      <keyword name="SvnDiffHighlighter (Module)" id="SvnDiffHighlighter (Module)" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffHighlighter.html" />
+      <keyword name="SvnDiffHighlighter (Module)" id="SvnDiffHighlighter (Module)" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffHighlighter.html" />
+      <keyword name="SvnDiffHighlighter.generateRules" id="SvnDiffHighlighter.generateRules" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffHighlighter.html#SvnDiffHighlighter.generateRules" />
+      <keyword name="SvnDiffHighlighter.generateRules" id="SvnDiffHighlighter.generateRules" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffHighlighter.html#SvnDiffHighlighter.generateRules" />
       <keyword name="SvnInfoDialog" id="SvnInfoDialog" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnInfoDialog.html#SvnInfoDialog" />
       <keyword name="SvnInfoDialog (Constructor)" id="SvnInfoDialog (Constructor)" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnInfoDialog.html#SvnInfoDialog.__init__" />
       <keyword name="SvnInfoDialog (Module)" id="SvnInfoDialog (Module)" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnInfoDialog.html" />
@@ -14048,6 +14063,7 @@
       <file>eric6.Plugins.VcsPlugins.vcsMercurial.HgCopyDialog.html</file>
       <file>eric6.Plugins.VcsPlugins.vcsMercurial.HgDialog.html</file>
       <file>eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffDialog.html</file>
+      <file>eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffHighlighter.html</file>
       <file>eric6.Plugins.VcsPlugins.vcsMercurial.HgExportDialog.html</file>
       <file>eric6.Plugins.VcsPlugins.vcsMercurial.HgExtension.html</file>
       <file>eric6.Plugins.VcsPlugins.vcsMercurial.HgExtensionProjectBrowserHelper.html</file>
@@ -14123,6 +14139,7 @@
       <file>eric6.Plugins.VcsPlugins.vcsPySvn.SvnDialog.html</file>
       <file>eric6.Plugins.VcsPlugins.vcsPySvn.SvnDialogMixin.html</file>
       <file>eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffDialog.html</file>
+      <file>eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffHighlighter.html</file>
       <file>eric6.Plugins.VcsPlugins.vcsPySvn.SvnInfoDialog.html</file>
       <file>eric6.Plugins.VcsPlugins.vcsPySvn.SvnLogBrowserDialog.html</file>
       <file>eric6.Plugins.VcsPlugins.vcsPySvn.SvnLogDialog.html</file>
@@ -14155,6 +14172,7 @@
       <file>eric6.Plugins.VcsPlugins.vcsSubversion.SvnCopyDialog.html</file>
       <file>eric6.Plugins.VcsPlugins.vcsSubversion.SvnDialog.html</file>
       <file>eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffDialog.html</file>
+      <file>eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffHighlighter.html</file>
       <file>eric6.Plugins.VcsPlugins.vcsSubversion.SvnLogBrowserDialog.html</file>
       <file>eric6.Plugins.VcsPlugins.vcsSubversion.SvnLogDialog.html</file>
       <file>eric6.Plugins.VcsPlugins.vcsSubversion.SvnMergeDialog.html</file>
--- a/Documentation/Source/eric6.E5Gui.E5GenericDiffHighlighter.html	Mon Feb 09 19:57:45 2015 +0100
+++ b/Documentation/Source/eric6.E5Gui.E5GenericDiffHighlighter.html	Tue Feb 10 19:30:11 2015 +0100
@@ -172,7 +172,9 @@
 <dt><i>pattern</i></dt>
 <dd>
 pattern to be marked (string)
-</dd><dt><i>return</i></dt>
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
 <dd>
 marked pattern (string)
 </dd>
--- a/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffDialog.html	Mon Feb 09 19:57:45 2015 +0100
+++ b/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffDialog.html	Tue Feb 10 19:30:11 2015 +0100
@@ -141,16 +141,13 @@
 </dd>
 </dl><a NAME="HgDiffDialog.__appendText" ID="HgDiffDialog.__appendText"></a>
 <h4>HgDiffDialog.__appendText</h4>
-<b>__appendText</b>(<i>txt, format</i>)
+<b>__appendText</b>(<i>txt</i>)
 <p>
         Private method to append text to the end of the contents pane.
 </p><dl>
 <dt><i>txt</i></dt>
 <dd>
 text to insert (string)
-</dd><dt><i>format</i></dt>
-<dd>
-text format to be used (QTextCharFormat)
 </dd>
 </dl><a NAME="HgDiffDialog.__extractFileName" ID="HgDiffDialog.__extractFileName"></a>
 <h4>HgDiffDialog.__extractFileName</h4>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffHighlighter.html	Tue Feb 10 19:30:11 2015 +0100
@@ -0,0 +1,89 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffHighlighter</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffHighlighter</h1>
+<p>
+Module implementing a syntax highlighter for unified and context diff outputs.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#HgDiffHighlighter">HgDiffHighlighter</a></td>
+<td>Class implementing a diff highlighter for Git.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="HgDiffHighlighter" ID="HgDiffHighlighter"></a>
+<h2>HgDiffHighlighter</h2>
+<p>
+    Class implementing a diff highlighter for Git.
+</p>
+<h3>Derived from</h3>
+E5GenericDiffHighlighter
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#HgDiffHighlighter.__init__">HgDiffHighlighter</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#HgDiffHighlighter.generateRules">generateRules</a></td>
+<td>Public method to generate the rule set.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="HgDiffHighlighter.__init__" ID="HgDiffHighlighter.__init__"></a>
+<h4>HgDiffHighlighter (Constructor)</h4>
+<b>HgDiffHighlighter</b>(<i>doc</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>doc</i></dt>
+<dd>
+reference to the text document (QTextDocument)
+</dd>
+</dl><a NAME="HgDiffHighlighter.generateRules" ID="HgDiffHighlighter.generateRules"></a>
+<h4>HgDiffHighlighter.generateRules</h4>
+<b>generateRules</b>(<i></i>)
+<p>
+        Public method to generate the rule set.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffHighlighter.html	Tue Feb 10 19:30:11 2015 +0100
@@ -0,0 +1,89 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffHighlighter</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffHighlighter</h1>
+<p>
+Module implementing a syntax highlighter for unified and context diff outputs.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#SvnDiffHighlighter">SvnDiffHighlighter</a></td>
+<td>Class implementing a diff highlighter for Git.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="SvnDiffHighlighter" ID="SvnDiffHighlighter"></a>
+<h2>SvnDiffHighlighter</h2>
+<p>
+    Class implementing a diff highlighter for Git.
+</p>
+<h3>Derived from</h3>
+E5GenericDiffHighlighter
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#SvnDiffHighlighter.__init__">SvnDiffHighlighter</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#SvnDiffHighlighter.generateRules">generateRules</a></td>
+<td>Public method to generate the rule set.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="SvnDiffHighlighter.__init__" ID="SvnDiffHighlighter.__init__"></a>
+<h4>SvnDiffHighlighter (Constructor)</h4>
+<b>SvnDiffHighlighter</b>(<i>doc</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>doc</i></dt>
+<dd>
+reference to the text document (QTextDocument)
+</dd>
+</dl><a NAME="SvnDiffHighlighter.generateRules" ID="SvnDiffHighlighter.generateRules"></a>
+<h4>SvnDiffHighlighter.generateRules</h4>
+<b>generateRules</b>(<i></i>)
+<p>
+        Public method to generate the rule set.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffDialog.html	Mon Feb 09 19:57:45 2015 +0100
+++ b/Documentation/Source/eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffDialog.html	Tue Feb 10 19:30:11 2015 +0100
@@ -133,16 +133,13 @@
 </dd>
 </dl><a NAME="SvnDiffDialog.__appendText" ID="SvnDiffDialog.__appendText"></a>
 <h4>SvnDiffDialog.__appendText</h4>
-<b>__appendText</b>(<i>txt, format</i>)
+<b>__appendText</b>(<i>txt</i>)
 <p>
         Private method to append text to the end of the contents pane.
 </p><dl>
 <dt><i>txt</i></dt>
 <dd>
 text to insert (string)
-</dd><dt><i>format</i></dt>
-<dd>
-text format to be used (QTextCharFormat)
 </dd>
 </dl><a NAME="SvnDiffDialog.__extractFileName" ID="SvnDiffDialog.__extractFileName"></a>
 <h4>SvnDiffDialog.__extractFileName</h4>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffHighlighter.html	Tue Feb 10 19:30:11 2015 +0100
@@ -0,0 +1,89 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffHighlighter</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffHighlighter</h1>
+<p>
+Module implementing a syntax highlighter for unified and context diff outputs.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#SvnDiffHighlighter">SvnDiffHighlighter</a></td>
+<td>Class implementing a diff highlighter for Git.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="SvnDiffHighlighter" ID="SvnDiffHighlighter"></a>
+<h2>SvnDiffHighlighter</h2>
+<p>
+    Class implementing a diff highlighter for Git.
+</p>
+<h3>Derived from</h3>
+E5GenericDiffHighlighter
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#SvnDiffHighlighter.__init__">SvnDiffHighlighter</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#SvnDiffHighlighter.generateRules">generateRules</a></td>
+<td>Public method to generate the rule set.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="SvnDiffHighlighter.__init__" ID="SvnDiffHighlighter.__init__"></a>
+<h4>SvnDiffHighlighter (Constructor)</h4>
+<b>SvnDiffHighlighter</b>(<i>doc</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>doc</i></dt>
+<dd>
+reference to the text document (QTextDocument)
+</dd>
+</dl><a NAME="SvnDiffHighlighter.generateRules" ID="SvnDiffHighlighter.generateRules"></a>
+<h4>SvnDiffHighlighter.generateRules</h4>
+<b>generateRules</b>(<i></i>)
+<p>
+        Public method to generate the rule set.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/index-eric6.Plugins.VcsPlugins.vcsMercurial.html	Mon Feb 09 19:57:45 2015 +0100
+++ b/Documentation/Source/index-eric6.Plugins.VcsPlugins.vcsMercurial.html	Tue Feb 10 19:30:11 2015 +0100
@@ -119,6 +119,9 @@
 <td><a href="eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffDialog.html">HgDiffDialog</a></td>
 <td>Module implementing a dialog to show the output of the hg diff command process.</td>
 </tr><tr>
+<td><a href="eric6.Plugins.VcsPlugins.vcsMercurial.HgDiffHighlighter.html">HgDiffHighlighter</a></td>
+<td>Module implementing a syntax highlighter for unified and context diff outputs.</td>
+</tr><tr>
 <td><a href="eric6.Plugins.VcsPlugins.vcsMercurial.HgExportDialog.html">HgExportDialog</a></td>
 <td>Module implementing a dialog to enter data for the Mercurial export command.</td>
 </tr><tr>
--- a/Documentation/Source/index-eric6.Plugins.VcsPlugins.vcsPySvn.html	Mon Feb 09 19:57:45 2015 +0100
+++ b/Documentation/Source/index-eric6.Plugins.VcsPlugins.vcsPySvn.html	Tue Feb 10 19:30:11 2015 +0100
@@ -74,6 +74,9 @@
 <td><a href="eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffDialog.html">SvnDiffDialog</a></td>
 <td>Module implementing a dialog to show the output of the svn diff command process.</td>
 </tr><tr>
+<td><a href="eric6.Plugins.VcsPlugins.vcsPySvn.SvnDiffHighlighter.html">SvnDiffHighlighter</a></td>
+<td>Module implementing a syntax highlighter for unified and context diff outputs.</td>
+</tr><tr>
 <td><a href="eric6.Plugins.VcsPlugins.vcsPySvn.SvnInfoDialog.html">SvnInfoDialog</a></td>
 <td>Module implementing a dialog to show repository related information for a file/directory.</td>
 </tr><tr>
--- a/Documentation/Source/index-eric6.Plugins.VcsPlugins.vcsSubversion.html	Mon Feb 09 19:57:45 2015 +0100
+++ b/Documentation/Source/index-eric6.Plugins.VcsPlugins.vcsSubversion.html	Tue Feb 10 19:30:11 2015 +0100
@@ -68,6 +68,9 @@
 <td><a href="eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffDialog.html">SvnDiffDialog</a></td>
 <td>Module implementing a dialog to show the output of the svn diff command process.</td>
 </tr><tr>
+<td><a href="eric6.Plugins.VcsPlugins.vcsSubversion.SvnDiffHighlighter.html">SvnDiffHighlighter</a></td>
+<td>Module implementing a syntax highlighter for unified and context diff outputs.</td>
+</tr><tr>
 <td><a href="eric6.Plugins.VcsPlugins.vcsSubversion.SvnLogBrowserDialog.html">SvnLogBrowserDialog</a></td>
 <td>Module implementing a dialog to browse the log history.</td>
 </tr><tr>
--- a/E5Gui/E5GenericDiffHighlighter.py	Mon Feb 09 19:57:45 2015 +0100
+++ b/E5Gui/E5GenericDiffHighlighter.py	Tue Feb 10 19:30:11 2015 +0100
@@ -15,18 +15,20 @@
 
 import Preferences
 
+
 def TERMINAL(pattern):
     """
     Function to mark a pattern as the final one to search for.
     
     @param pattern pattern to be marked (string)
-    @param return marked pattern (string)
+    @return marked pattern (string)
     """
     return "__TERMINAL__:{0}".format(pattern)
 
 # Cache the results of re.compile for performance reasons
 _REGEX_CACHE = {}
 
+
 class E5GenericDiffHighlighter(QSyntaxHighlighter):
     """
     Class implementing a generic diff highlighter.
--- a/Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py	Mon Feb 09 19:57:45 2015 +0100
+++ b/Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py	Tue Feb 10 19:30:11 2015 +0100
@@ -16,13 +16,14 @@
 import os
 
 from PyQt5.QtCore import pyqtSlot, QProcess, QTimer, QFileInfo, Qt
-from PyQt5.QtGui import QBrush, QColor, QTextCursor, QCursor
+from PyQt5.QtGui import QTextCursor, QCursor
 from PyQt5.QtWidgets import QWidget, QDialogButtonBox, QLineEdit, QApplication
 
 from E5Gui import E5MessageBox, E5FileDialog
 from E5Gui.E5Application import e5App
 
 from .Ui_HgDiffDialog import Ui_HgDiffDialog
+from .HgDiffHighlighter import HgDiffHighlighter
 
 import Utilities
 import Preferences
@@ -61,13 +62,7 @@
         self.contents.setFontFamily(font.family())
         self.contents.setFontPointSize(font.pointSize())
         
-        self.cNormalFormat = self.contents.currentCharFormat()
-        self.cAddedFormat = self.contents.currentCharFormat()
-        self.cAddedFormat.setBackground(QBrush(QColor(190, 237, 190)))
-        self.cRemovedFormat = self.contents.currentCharFormat()
-        self.cRemovedFormat.setBackground(QBrush(QColor(237, 190, 190)))
-        self.cLineNoFormat = self.contents.currentCharFormat()
-        self.cLineNoFormat.setBackground(QBrush(QColor(255, 220, 168)))
+        self.highlighter = HgDiffHighlighter(self.contents.document())
         
         self.process.finished.connect(self.__procFinished)
         self.process.readyReadStandardOutput.connect(self.__readStdout)
@@ -235,9 +230,7 @@
         self.refreshButton.setEnabled(True)
         
         if self.paras == 0:
-            self.contents.setCurrentCharFormat(self.cNormalFormat)
-            self.contents.setPlainText(
-                self.tr('There is no difference.'))
+            self.contents.setPlainText(self.tr('There is no difference.'))
         
         self.buttonBox.button(QDialogButtonBox.Save).setEnabled(self.paras > 0)
         self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True)
@@ -253,23 +246,23 @@
         self.filesCombo.addItem(self.tr("<Start>"), 0)
         self.filesCombo.addItem(self.tr("<End>"), -1)
         for oldFile, newFile, pos in sorted(self.__fileSeparators):
-            if oldFile != newFile:
+            if not oldFile:
+                self.filesCombo.addItem(newFile, pos)
+            elif oldFile != newFile:
                 self.filesCombo.addItem(
                     "{0}\n{1}".format(oldFile, newFile), pos)
             else:
                 self.filesCombo.addItem(oldFile, pos)
     
-    def __appendText(self, txt, format):
+    def __appendText(self, txt):
         """
         Private method to append text to the end of the contents pane.
         
         @param txt text to insert (string)
-        @param format text format to be used (QTextCharFormat)
         """
         tc = self.contents.textCursor()
         tc.movePosition(QTextCursor.End)
         self.contents.setTextCursor(tc)
-        self.contents.setCurrentCharFormat(format)
         self.contents.insertPlainText(txt)
     
     def __extractFileName(self, line):
@@ -281,7 +274,10 @@
         """
         f = line.split(None, 1)[1]
         f = f.rsplit(None, 6)[0]
-        f = f.split("/", 1)[1]
+        if f == "/dev/null":
+            f = ""
+        else:
+            f = f.split("/", 1)[1]
         return f
     
     def __processFileLine(self, line):
@@ -308,15 +304,7 @@
            line.startswith("+++ "):
             self.__processFileLine(line)
         
-        if line.startswith('+'):
-            format = self.cAddedFormat
-        elif line.startswith('-'):
-            format = self.cRemovedFormat
-        elif line.startswith('@@'):
-            format = self.cLineNoFormat
-        else:
-            format = self.cNormalFormat
-        self.__appendText(line, format)
+        self.__appendText(line)
         self.paras += 1
     
     def __readStdout(self):
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Plugins/VcsPlugins/vcsMercurial/HgDiffHighlighter.py	Tue Feb 10 19:30:11 2015 +0100
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2015 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a syntax highlighter for unified and context diff outputs.
+"""
+
+from __future__ import unicode_literals
+
+from E5Gui.E5GenericDiffHighlighter import TERMINAL, E5GenericDiffHighlighter
+
+
+class HgDiffHighlighter(E5GenericDiffHighlighter):
+    """
+    Class implementing a diff highlighter for Git.
+    """
+    def __init__(self, doc):
+        """
+        Constructor
+        
+        @param doc reference to the text document (QTextDocument)
+        """
+        super(HgDiffHighlighter, self).__init__(doc)
+
+    def generateRules(self):
+        """
+        Public method to generate the rule set.
+        """
+        diffHeader = self.makeFormat(fg=self.textColor,
+                                     bg=self.headerColor)
+        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)
+        
+        diffHeaderRegex = TERMINAL(r'^diff -r ')
+
+        diffOldRegex = TERMINAL(r'^--- ')
+        diffNewRegex = TERMINAL(r'^\+\+\+ ')
+        diffContextRegex = TERMINAL(r'^@@ ')
+        
+        diffAddedRegex = TERMINAL(r'^\+')
+        diffRemovedRegex = TERMINAL(r'^-')
+        
+        self.createRules((diffOldRegex, diffRemoved),
+                         (diffNewRegex, diffAdded),
+                         (diffContextRegex, diffContext),
+                         (diffHeaderRegex, diffHeader),
+                         (diffAddedRegex, diffAdded),
+                         (diffRemovedRegex, diffRemoved),
+                         )
--- a/Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py	Mon Feb 09 19:57:45 2015 +0100
+++ b/Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py	Tue Feb 10 19:30:11 2015 +0100
@@ -16,7 +16,7 @@
 import pysvn
 
 from PyQt5.QtCore import QMutexLocker, QFileInfo, QDateTime, Qt, pyqtSlot
-from PyQt5.QtGui import QColor, QCursor, QBrush, QTextCursor
+from PyQt5.QtGui import QCursor, QTextCursor
 from PyQt5.QtWidgets import QWidget, QApplication, QDialogButtonBox
 
 from E5Gui.E5Application import e5App
@@ -24,6 +24,7 @@
 
 from .SvnDialogMixin import SvnDialogMixin
 from .Ui_SvnDiffDialog import Ui_SvnDiffDialog
+from .SvnDiffHighlighter import SvnDiffHighlighter
 
 import Utilities
 import Preferences
@@ -61,13 +62,7 @@
         self.contents.setFontFamily(font.family())
         self.contents.setFontPointSize(font.pointSize())
         
-        self.cNormalFormat = self.contents.currentCharFormat()
-        self.cAddedFormat = self.contents.currentCharFormat()
-        self.cAddedFormat.setBackground(QBrush(QColor(190, 237, 190)))
-        self.cRemovedFormat = self.contents.currentCharFormat()
-        self.cRemovedFormat.setBackground(QBrush(QColor(237, 190, 190)))
-        self.cLineNoFormat = self.contents.currentCharFormat()
-        self.cLineNoFormat.setBackground(QBrush(QColor(255, 220, 168)))
+        self.highlighter = SvnDiffHighlighter(self.contents.document())
         
         self.client = self.vcs.getClient()
         self.client.callback_cancel = \
@@ -278,9 +273,7 @@
         self.__finish()
         
         if self.paras == 0:
-            self.contents.setCurrentCharFormat(self.cNormalFormat)
-            self.contents.setPlainText(
-                self.tr('There is no difference.'))
+            self.contents.setPlainText(self.tr('There is no difference.'))
         
         self.buttonBox.button(QDialogButtonBox.Save).setEnabled(self.paras > 0)
         
@@ -290,21 +283,9 @@
         
         @param line line of text to insert (string)
         """
-        if line.startswith('+') or line.startswith('>') or \
-                line.startswith('A '):
-            format = self.cAddedFormat
-        elif line.startswith('-') or line.startswith('<') or \
-                line.startswith('D '):
-            format = self.cRemovedFormat
-        elif line.startswith('@@'):
-            format = self.cLineNoFormat
-        else:
-            format = self.cNormalFormat
-        
         tc = self.contents.textCursor()
         tc.movePosition(QTextCursor.End)
         self.contents.setTextCursor(tc)
-        self.contents.setCurrentCharFormat(format)
         self.contents.insertPlainText(line)
         self.paras += 1
         
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Plugins/VcsPlugins/vcsPySvn/SvnDiffHighlighter.py	Tue Feb 10 19:30:11 2015 +0100
@@ -0,0 +1,62 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2015 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a syntax highlighter for unified and context diff outputs.
+"""
+
+from __future__ import unicode_literals
+
+from E5Gui.E5GenericDiffHighlighter import TERMINAL, E5GenericDiffHighlighter
+
+
+class SvnDiffHighlighter(E5GenericDiffHighlighter):
+    """
+    Class implementing a diff highlighter for Git.
+    """
+    def __init__(self, doc):
+        """
+        Constructor
+        
+        @param doc reference to the text document (QTextDocument)
+        """
+        super(SvnDiffHighlighter, self).__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)
+
+        diffAdded = self.makeFormat(fg=self.textColor,
+                                    bg=self.addedColor)
+        diffRemoved = self.makeFormat(fg=self.textColor,
+                                      bg=self.removedColor)
+        
+        diffBarRegex = TERMINAL(r'^=+$')
+
+        diffHeaderRegex = TERMINAL(r'^[iI]ndex: \S+')
+        
+        diffOldRegex = TERMINAL(r'^--- ')
+        diffNewRegex = TERMINAL(r'^\+\+\+')
+        diffContextRegex = TERMINAL(r'^@@ ')
+        
+        diffAddedRegex = TERMINAL(r'^[+>]|^A ')
+        diffRemovedRegex = TERMINAL(r'^[-<]|^D ')
+        
+        self.createRules((diffOldRegex, diffRemoved),
+                         (diffNewRegex, diffAdded),
+                         (diffContextRegex, diffContext),
+                         (diffHeaderRegex, diffHeader),
+                         (diffBarRegex, diffHeaderBold),
+                         (diffAddedRegex, diffAdded),
+                         (diffRemovedRegex, diffRemoved),
+                         )
--- a/Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py	Mon Feb 09 19:57:45 2015 +0100
+++ b/Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py	Tue Feb 10 19:30:11 2015 +0100
@@ -17,13 +17,14 @@
 import os
 
 from PyQt5.QtCore import QTimer, QFileInfo, QProcess, pyqtSlot, Qt
-from PyQt5.QtGui import QColor, QBrush, QTextCursor
+from PyQt5.QtGui import QTextCursor
 from PyQt5.QtWidgets import QWidget, QLineEdit, QDialogButtonBox
 
 from E5Gui.E5Application import e5App
 from E5Gui import E5MessageBox, E5FileDialog
 
 from .Ui_SvnDiffDialog import Ui_SvnDiffDialog
+from .SvnDiffHighlighter import SvnDiffHighlighter
 
 import Utilities
 import Preferences
@@ -61,13 +62,7 @@
         self.contents.setFontFamily(font.family())
         self.contents.setFontPointSize(font.pointSize())
         
-        self.cNormalFormat = self.contents.currentCharFormat()
-        self.cAddedFormat = self.contents.currentCharFormat()
-        self.cAddedFormat.setBackground(QBrush(QColor(190, 237, 190)))
-        self.cRemovedFormat = self.contents.currentCharFormat()
-        self.cRemovedFormat.setBackground(QBrush(QColor(237, 190, 190)))
-        self.cLineNoFormat = self.contents.currentCharFormat()
-        self.cLineNoFormat.setBackground(QBrush(QColor(255, 220, 168)))
+        self.highlighter = SvnDiffHighlighter(self.contents.document())
         
         self.process.finished.connect(self.__procFinished)
         self.process.readyReadStandardOutput.connect(self.__readStdout)
@@ -212,9 +207,7 @@
         self.refreshButton.setEnabled(True)
         
         if self.paras == 0:
-            self.contents.setCurrentCharFormat(self.cNormalFormat)
-            self.contents.setPlainText(
-                self.tr('There is no difference.'))
+            self.contents.setPlainText(self.tr('There is no difference.'))
             
         self.buttonBox.button(QDialogButtonBox.Save).setEnabled(self.paras > 0)
         self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True)
@@ -236,17 +229,15 @@
             else:
                 self.filesCombo.addItem(oldFile, pos)
         
-    def __appendText(self, txt, format):
+    def __appendText(self, txt):
         """
         Private method to append text to the end of the contents pane.
         
         @param txt text to insert (string)
-        @param format text format to be used (QTextCharFormat)
         """
         tc = self.contents.textCursor()
         tc.movePosition(QTextCursor.End)
         self.contents.setTextCursor(tc)
-        self.contents.setCurrentCharFormat(format)
         self.contents.insertPlainText(txt)
         
     def __extractFileName(self, line):
@@ -293,17 +284,7 @@
             if line.startswith("--- ") or line.startswith("+++ "):
                     self.__processFileLine(line)
                 
-            if line.startswith('+') or line.startswith('>') or \
-                    line.startswith('A '):
-                format = self.cAddedFormat
-            elif line.startswith('-') or line.startswith('<') or \
-                    line.startswith('D '):
-                format = self.cRemovedFormat
-            elif line.startswith('@@'):
-                format = self.cLineNoFormat
-            else:
-                format = self.cNormalFormat
-            self.__appendText(line, format)
+            self.__appendText(line)
             self.paras += 1
         
     def __readStderr(self):
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Plugins/VcsPlugins/vcsSubversion/SvnDiffHighlighter.py	Tue Feb 10 19:30:11 2015 +0100
@@ -0,0 +1,62 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2015 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a syntax highlighter for unified and context diff outputs.
+"""
+
+from __future__ import unicode_literals
+
+from E5Gui.E5GenericDiffHighlighter import TERMINAL, E5GenericDiffHighlighter
+
+
+class SvnDiffHighlighter(E5GenericDiffHighlighter):
+    """
+    Class implementing a diff highlighter for Git.
+    """
+    def __init__(self, doc):
+        """
+        Constructor
+        
+        @param doc reference to the text document (QTextDocument)
+        """
+        super(SvnDiffHighlighter, self).__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)
+
+        diffAdded = self.makeFormat(fg=self.textColor,
+                                    bg=self.addedColor)
+        diffRemoved = self.makeFormat(fg=self.textColor,
+                                      bg=self.removedColor)
+        
+        diffBarRegex = TERMINAL(r'^=+$')
+
+        diffHeaderRegex = TERMINAL(r'^[iI]ndex: \S+')
+        
+        diffOldRegex = TERMINAL(r'^--- ')
+        diffNewRegex = TERMINAL(r'^\+\+\+')
+        diffContextRegex = TERMINAL(r'^@@ ')
+        
+        diffAddedRegex = TERMINAL(r'^[+>]|^A ')
+        diffRemovedRegex = TERMINAL(r'^[-<]|^D ')
+        
+        self.createRules((diffOldRegex, diffRemoved),
+                         (diffNewRegex, diffAdded),
+                         (diffContextRegex, diffContext),
+                         (diffHeaderRegex, diffHeader),
+                         (diffBarRegex, diffHeaderBold),
+                         (diffAddedRegex, diffAdded),
+                         (diffRemovedRegex, diffRemoved),
+                         )
--- a/Preferences/ConfigurationDialog.py	Mon Feb 09 19:57:45 2015 +0100
+++ b/Preferences/ConfigurationDialog.py	Tue Feb 10 19:30:11 2015 +0100
@@ -142,7 +142,7 @@
                 [self.tr("IRC"), "irc.png",
                  "IrcPage", None, None],
                 "logViewerPage":
-                [self.tr("Log-Viewer"), "preferences-logviewer.png", 
+                [self.tr("Log-Viewer"), "preferences-logviewer.png",
                  "LogViewerPage", None, None],
                 "mimeTypesPage":
                 [self.tr("Mimetypes"), "preferences-mimetypes.png",
--- a/UI/DiffDialog.py	Mon Feb 09 19:57:45 2015 +0100
+++ b/UI/DiffDialog.py	Tue Feb 10 19:30:11 2015 +0100
@@ -418,8 +418,7 @@
                 QApplication.processEvents()
             
         if paras == 0:
-            self.__appendText(
-                self.tr('There is no difference.'), self.cNormalFormat)
+            self.__appendText(self.tr('There is no difference.'))
 
     def __generateContextDiff(self, a, b, fromfile, tofile,
                               fromfiledate, tofiledate):
@@ -442,8 +441,7 @@
                 QApplication.processEvents()
             
         if paras == 0:
-            self.__appendText(
-                self.tr('There is no difference.'), self.cNormalFormat)
+            self.__appendText(self.tr('There is no difference.'))
 
     def __fileChanged(self):
         """
--- a/UI/DiffHighlighter.py	Mon Feb 09 19:57:45 2015 +0100
+++ b/UI/DiffHighlighter.py	Tue Feb 10 19:30:11 2015 +0100
@@ -39,7 +39,7 @@
         diffRemoved = self.makeFormat(fg=self.textColor,
                                       bg=self.removedColor)
         diffReplaced = self.makeFormat(fg=self.textColor,
-                                      bg=self.replacedColor)
+                                       bg=self.replacedColor)
         
         diffBarRegex = TERMINAL(r'^\*+$')
 
--- a/eric6.e4p	Mon Feb 09 19:57:45 2015 +0100
+++ b/eric6.e4p	Tue Feb 10 19:30:11 2015 +0100
@@ -1156,6 +1156,9 @@
     <Source>Preferences/ConfigurationPages/MimeTypesPage.py</Source>
     <Source>E5Gui/E5GenericDiffHighlighter.py</Source>
     <Source>UI/DiffHighlighter.py</Source>
+    <Source>Plugins/VcsPlugins/vcsMercurial/HgDiffHighlighter.py</Source>
+    <Source>Plugins/VcsPlugins/vcsSubversion/SvnDiffHighlighter.py</Source>
+    <Source>Plugins/VcsPlugins/vcsPySvn/SvnDiffHighlighter.py</Source>
   </Sources>
   <Forms>
     <Form>PyUnit/UnittestDialog.ui</Form>

eric ide

mercurial