Open calestyo opened 4 months ago
Hi Chris, ok I'm sorry to say something that sounds silly, but isn't the answer -U0
?? As in git show -U0
? Or is the issue that you want this when doing delta file_1 file_2
?
Hey Dan.
Oh yes, I was thinking about the delta file_1 file_2
case.
But your answer made me realise that I could at least get the behaviour via diff -U0 a b | delta
.
Nevertheless, would be nicer if it would work straight from delta.
Right, my feeling has always been that it would be a mess to try to add the various diff options (actually git diff options) into delta's command-line parsing. delta a b
is actually[1] a shorthand for git diff --no-index a b
(a rather little-known command that allows git diff
to be used on any arbitrary pair of files) and so my stock answer here is to say "would you mind just using git diff --no-index a b ... | delta
?" and admitting that perhaps I should never have implemented the delta a b
shorthand!
[1] of course, this may have started out true but is not quite true any longer... we implemented support for things like delta <(echo a) <(echo b)
which is an improvement over
$ git diff --no-index <(echo a) <(echo b)
error: /dev/fd/11: unsupported file type
fatal: cannot hash /dev/fd/11
To justify "a mess" -- it's that delta at heart is really a tool that takes in diff / grep / blame input and outputs unparseable stuff to look at. And it has a pretty large collection of options for doing that! So one hesitates before adding options for generating the diff output.
Right, my feeling has always been that it would be a mess to try to add the various diff options (actually git diff options) into delta's command-line parsing.
One way would perhaps be to add a single option, that allows passing any options to the actually used diff
backend, be it git diff
(which probably then also uses diff
) or as in my example above diff
itself.
That way you could allow people to give options, but don't have to handle each of them manually in your parsing.
delta a b
is actually[1] a shorthand forgit diff --no-index a b
Out of curiosity: Also if git
is not available? Or would it then use diff
?
"would you mind just using
git diff --no-index a b ... | delta
?"
Well I would probably do so, if the above idea isn't an alternative for you either. ;-) It does however make life at least a tin bit more complicated in usage, as one needs (at least in scripting) to check diff
’s exit status, which would be lost because of he pipe.
If delta
would handle things internally (and does proper error handling), that could be avoided.
and admitting that perhaps I should never have implemented the
delta a b
shorthand!
I personally rather like the idea that delta
is also standalone and not fully tied to git
. Especially as it can also be used with diff
/grep
, as you said above.
Thanks, Chris.
One way would perhaps be to add a single option, that allows passing any options to the actually used diff backend
OK I think you're right, that seems to makes sense. Any interest in implementing? I have to admit I am low on spare programming time currently due to day job. (But trying to at least keep up with the nice PRs and issue suggestions that come in).
if git is not available? Or would it then use diff?
Actually no, not currently, but that would be an easy fix to make I think:
One way would perhaps be to add a single option, that allows passing any options to the actually used diff backend
Finally got around to implementing that at https://github.com/dandavison/delta/pull/1697
Thanks :-)
Discussed in https://github.com/dandavison/delta/discussions/1620