git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] diff: add --no-indicators option

From
PWPhillip Wood <phillip.wood123@gmail.com>
Date
Dec 19, 2025, 10:33 UTC
Message-ID
<035238d7-f98a-4072-a363-9a57650abb95@gmail.com>
In-Reply-To
<pull.2133.git.git.1766132264231.gitgitgadget@gmail.com>
Hi Harald
On 19/12/2025 08:17, Harald Nordgren via GitGitGadget wrote:
Show 8 quoted lines
> From: Harald Nordgren <haraldnordgren@gmail.com>
> 
> Add --no-indicators to replace '+', '-', and ' ' indicators in the
> left margin with spaces. Colors are preserved, allowing diffs to be
> distinguished by color alone.
> 
> This is useful when copy-pasting diff output, as the indicators no
> longer need to be manually removed.

But you're still left with a space at the beginning of each line. I'd have thought it would be better for --no-indicators to just strip the leading '+', ' ', '-' though that still leaves us with

     \ No newline at end of file
should that whole line be stripped as well?

If you just want to replace the indicators with a space then you can always set up an alias that does

     diff --output-indicator-old=' '  --output-indicator-new=' ' \
          --output-indicator-context=' '

The --output-indicator-* options error out if you pass an empty string so you cannot use them to remove the indicators all together.

Thanks
Phillip
Show 92 quoted lines
> Signed-off-by: Harald Nordgren <haraldnordgren@gmail.com>
> ---
>      diff: add '--no-indicators' option
> 
> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2133%2FHaraldNordgren%2Fno-indicators-v1
> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2133/HaraldNordgren/no-indicators-v1
> Pull-Request: https://github.com/git/git/pull/2133
> 
>   diff.c                 | 17 +++++++++++++++++
>   t/t4000-diff-format.sh | 32 ++++++++++++++++++++++++++++++++
>   2 files changed, 49 insertions(+)
> 
> diff --git a/diff.c b/diff.c
> index 436da250eb..668ba349fe 100644
> --- a/diff.c
> +++ b/diff.c
> @@ -5290,6 +5290,20 @@ static int diff_opt_char(const struct option *opt,
>   	return 0;
>   }
>   
> +static int diff_opt_no_indicators(const struct option *opt,
> +				  const char *arg, int unset)
> +{
> +	struct diff_options *options = opt->value;
> +
> +	BUG_ON_OPT_NEG(unset);
> +	BUG_ON_OPT_ARG(arg);
> +
> +	options->output_indicators[OUTPUT_INDICATOR_NEW] = ' ';
> +	options->output_indicators[OUTPUT_INDICATOR_OLD] = ' ';
> +	options->output_indicators[OUTPUT_INDICATOR_CONTEXT] = ' ';
> +	return 0;
> +}
> +
>   static int diff_opt_color_moved(const struct option *opt,
>   				const char *arg, int unset)
>   {
> @@ -5828,6 +5842,9 @@ struct option *add_diff_options(const struct option *opts,
>   		OPT_INTEGER_F(0, "inter-hunk-context", &options->interhunkcontext,
>   			      N_("show context between diff hunks up to the specified number of lines"),
>   			      PARSE_OPT_NONEG),
> +		OPT_CALLBACK_F(0, "no-indicators", options, NULL,
> +			       N_("do not show '+', '-' and ' ' indicators in the left margin"),
> +			       PARSE_OPT_NONEG | PARSE_OPT_NOARG, diff_opt_no_indicators),
>   		OPT_CALLBACK_F(0, "output-indicator-new",
>   			       &options->output_indicators[OUTPUT_INDICATOR_NEW],
>   			       N_("<char>"),
> diff --git a/t/t4000-diff-format.sh b/t/t4000-diff-format.sh
> index 32b14e3a71..1863553056 100755
> --- a/t/t4000-diff-format.sh
> +++ b/t/t4000-diff-format.sh
> @@ -95,6 +95,38 @@ test_expect_success 'git diff-files --patch --no-patch does not show the patch'
>   	test_must_be_empty err
>   '
>   
> +cat >expected_no_indicators <<\EOF
> +diff --git a/path0 b/path0
> +old mode 100644
> +new mode 100755
> +--- a/path0
> ++++ b/path0
> +@@ -1,3 +1,3 @@
> + Line 1
> + Line 2
> + line 3
> + Line 3
> +diff --git a/path1 b/path1
> +deleted file mode 100755
> +--- a/path1
> ++++ /dev/null
> +@@ -1,3 +0,0 @@
> + Line 1
> + Line 2
> + line 3
> +EOF
> +
> +test_expect_success 'git diff-files --no-indicators replaces +/- with spaces' '
> +	git diff-files -p --no-indicators >actual &&
> +	compare_diff_patch expected_no_indicators actual
> +'
> +
> +test_expect_success 'git diff-files --no-indicators --color preserves colors' '
> +	git diff-files -p --no-indicators --color --ws-error-highlight=none >actual.raw &&
> +	test_decode_color <actual.raw >actual &&
> +	grep -F "<RED> line 3<RESET>" actual &&
> +	grep -F "<GREEN> Line 3<RESET>" actual
> +'
>   
>   # Smudge path2/path3 so that dirstat has something to show
>   date >path2/path3
> 
> base-commit: c4a0c8845e2426375ad257b6c221a3a7d92ecfda
Previous: Harald NordgrenNext: Harald Nordgren
Message 6 of 18 in “diff: add --no-indicators option”
  1. diff: add --no-indicators optionHarald Nordgren via GitGitGadget, Dec 19, 2025
  2. Collin FunkDec 19, 2025
  3. Harald NordgrenDec 19, 2025
  4. Ben KnobleDec 19, 2025
  5. Harald NordgrenDec 19, 2025
  6. Phillip WoodDec 19, 2025
  7. Harald NordgrenDec 19, 2025
  8. Phillip WoodDec 19, 2025
  9. Chris TorekDec 19, 2025
  10. Harald NordgrenDec 19, 2025
  11. Chris TorekDec 19, 2025
  12. Harald NordgrenDec 19, 2025
  13. Harald NordgrenDec 19, 2025
  14. Johannes SixtDec 20, 2025
  15. Junio C HamanoDec 19, 2025
  16. Harald NordgrenDec 19, 2025
  17. Junio C HamanoDec 20, 2025
  18. Harald NordgrenDec 20, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.