Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

allow to completely omit zero ("same") lines (like diff -U0 would do) #1644

Open
calestyo opened this issue Mar 1, 2024 Discussed in #1620 · 8 comments
Open

allow to completely omit zero ("same") lines (like diff -U0 would do) #1644

calestyo opened this issue Mar 1, 2024 Discussed in #1620 · 8 comments

Comments

@calestyo
Copy link

calestyo commented Mar 1, 2024

Discussed in #1620

Originally posted by calestyo February 8, 2024
Hey.

I found no way to to disable the "surrounding" unmodified lines. omit doesn’t seem to work with --zero-style and there doesn’t seem to be a counterpart to diff’s -U0.

Is this somehow possible?

Thanks,
Chris.

@dandavison
Copy link
Owner

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?

@calestyo
Copy link
Author

calestyo commented Mar 1, 2024

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.

@dandavison
Copy link
Owner

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

@dandavison
Copy link
Owner

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.

@calestyo
Copy link
Author

calestyo commented Mar 2, 2024

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 for git 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.

@dandavison
Copy link
Owner

dandavison commented Mar 2, 2024

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:

let diff_cmd = if via_process_substitution(minus_file) || via_process_substitution(plus_file) {
["diff", "-u", "--"].as_slice()
} else {
["git", "diff", "--no-index", "--color", "--"].as_slice()
};

@dandavison
Copy link
Owner

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 #1697

@calestyo
Copy link
Author

calestyo commented May 7, 2024

Thanks :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants