templatefuncs: account for user's diffopts in diff() (BC)
authorDenis Laxalde <denis@laxalde.org>
Sat, 05 Oct 2019 12:03:19 +0200
changeset 43051 da3329fe01e3
parent 43050 a614f26d4897
child 43052 3b8a4587a456
templatefuncs: account for user's diffopts in diff() (BC)
mercurial/templatefuncs.py
tests/test-template-functions.t
--- a/mercurial/templatefuncs.py	Sat Oct 05 09:57:00 2019 -0400
+++ b/mercurial/templatefuncs.py	Sat Oct 05 12:03:19 2019 +0200
@@ -16,6 +16,7 @@
 )
 from . import (
     color,
+    diffutil,
     encoding,
     error,
     minirst,
@@ -86,7 +87,8 @@
                 for k, v in args['kwargs'].iteritems())
     return templateutil.hybriddict(data)
 
-@templatefunc('diff([includepattern [, excludepattern]])', requires={'ctx'})
+@templatefunc('diff([includepattern [, excludepattern]])',
+              requires={'ctx', 'ui'})
 def diff(context, mapping, args):
     """Show a diff, optionally
     specifying files to include or exclude."""
@@ -102,7 +104,10 @@
         return []
 
     ctx = context.resource(mapping, 'ctx')
-    chunks = ctx.diff(match=ctx.match([], getpatterns(0), getpatterns(1)))
+    ui = context.resource(mapping, 'ui')
+    diffopts = diffutil.diffallopts(ui)
+    chunks = ctx.diff(match=ctx.match([], getpatterns(0), getpatterns(1)),
+                      opts=diffopts)
 
     return ''.join(chunks)
 
--- a/tests/test-template-functions.t	Sat Oct 05 09:57:00 2019 -0400
+++ b/tests/test-template-functions.t	Sat Oct 05 12:03:19 2019 +0200
@@ -370,6 +370,17 @@
   @@ -0,0 +1,1 @@
   +second
 
+  $ hg --config diff.git=true log -r 8 -T "{diff()}"
+  diff --git a/second b/fourth
+  rename from second
+  rename to fourth
+  diff --git a/third b/third
+  new file mode 100644
+  --- /dev/null
+  +++ b/third
+  @@ -0,0 +1,1 @@
+  +third
+
   $ cd ..
 
 latesttag() function: