On Mon, May 20, 2024 at 12:30:50PM -0700, Junio C Hamano wrote: > > Invoke the pager when displaying hunks during "add -p" sessions, to make > > it easier for the user to review hunks longer than one screen height. > > If the hunk fits on one screen, it is annoying to see a pager > invoked and then torn down immediately, Good point. > even with "less -F" > (--quit-if-one-screen). As we know how much output we are throwing > at the user, we'd want to make this conditional to the size of the > hunk being shown and the terminal height. Are you thinking of something like?: diff --git a/add-patch.c b/add-patch.c index cefa3941a3..495baad3ac 100644 --- a/add-patch.c +++ b/add-patch.c @@ -1449,11 +1449,18 @@ static int patch_update_file(struct add_p_state *s, strbuf_reset(&s->buf); if (file_diff->hunk_nr) { if (rendered_hunk_index != hunk_index) { - setup_pager(); + int lines = 0; render_hunk(s, hunk, 0, colored, &s->buf); + for(int i = 0; i < s->buf.len; i++) { + if (s->buf.buf[i] == '\n') + lines++; + } + if (lines > term_columns()) + setup_pager(); fputs(s->buf.buf, stdout); rendered_hunk_index = hunk_index; - wait_for_pager(); + if (lines > term_columns()) + wait_for_pager(); } strbuf_reset(&s->buf); This would significantly reduce the blast radius. Thanks.