All of lore.kernel.org
 help / color / mirror / Atom feed
* (no subject)
@ 2021-06-22 22:40 Avishay Matayev
  2021-06-23  1:56 ` Felipe Contreras
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Avishay Matayev @ 2021-06-22 22:40 UTC (permalink / raw)
  To: git; +Cc: gitster

Hi there!

Fugitive[1] is a vim plugin that wraps git and many of its commands
into the editor in a really awesome way, I won't meddle into it too
much as you can read about it in its README, but as you understand, it
uses git, a lot.

Some git commands use a pager, which is usually a program that needs a
pty to function properly (`less`, for example). Fugitive can't really
use a pty for the pager as vim runs its subprocesses without a pty.
Therefore Fugitive just creates its own pager (which is a simple
window in vim) and pastes the git command output there.

The only problem left is that Fugitive can't reliably know when git
decides to use the pager, for example `git reflog show` does raise the
pager while `git reflog expire` does not. Fugitive currently maintains
an (very possibly) incomplete list of commands that need a pager but
maintaining it manually isn't ideal.

I started discussing this on an issue in Fugitive's github page[2] and
Tim Pope (the creator and maintainer of Fugitive, thank you!)
explained that `git` doesn't use a pager if there is no pty so it's
impossible to override its behavior.

We had some ideas how to make this feasible (as you can read on the
thread) but for brevity's sake I'll present the best (IMO) idea:
Essentially, at `pager.c`, don't short-circuit in `git_pager` (or
`setup_pager`?) due to pty absence if a new environment variable is
present, perhaps something like `GIT_PAGER_FORCE` which will override
the `PAGER` and `GIT_PAGER` variables. This will allow Fugitive to
apply custom logic through to pager to know if one exists and present
the window in vim.

I will appreciate any written thoughts on the matter, thank you :)

P.S. I am a complete newbie in regards to mailing lists etiquette,
pardon me if I've done anything incorrect
P.P.S. I CC'd Junio C Hamano because he signed off on (almost?) all
changes to `pager.c`, sorry if that was wrong of me (You probably got
this mail twice because of a misconfiguration, oops)


1. https://github.com/tpope/vim-fugitive
2. https://github.com/tpope/vim-fugitive/issues/1772

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2021-06-29  6:09 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-22 22:40 Avishay Matayev
2021-06-23  1:56 ` Felipe Contreras
2021-06-23  8:25   ` Forcing git to use a pager without a tty Avishay Matayev
2021-06-25 17:42     ` Felipe Contreras
2021-06-26 10:28       ` Avishay Matayev
2021-06-23  8:12 ` Why empty subject? (was Re: ) Bagas Sanjaya
2021-06-23  8:21   ` Avishay Matayev
2021-06-23  9:05 ` Forcing git to use a pager without a tty Phillip Wood
2021-06-23  9:29   ` Phillip Wood
2021-06-24 20:25     ` Avishay Matayev
2021-06-24 22:10       ` Ævar Arnfjörð Bjarmason
2021-06-26 10:26         ` Avishay Matayev
2021-06-29  6:09         ` Junio C Hamano

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.