Я пытаюсь установить пейджер, используемый для Mercurial, но вывод пуст, даже если я укажу команду в разделе [pager]
или в качестве переменной среды PAGER
.
Я заметил, что предоставленная команда запускается с cmd.exe
. Это причина пустого вывода, и если да, то каков правильный синтаксис?
Среда: Mercurial 1.5, Mercurial 1.4.3
hgrc:
[extensions]
pager =
[pager]
pager = d:\tools\less\less.exe
Примеры командных строк (из Process Explorer):
hg diff
c:\windows\system32\cmd.exe /c "d:\tools\less\less.exe 2> NUL:"
d:\tools\less\less.exe
UPDATE
В pager.py, заменив:
sys.stderr = sys.stdout = util.popen(p, "wb")
с
sys.stderr = sys.stdout = subprocess.Popen(p, stdin = subprocess.PIPE, shell=False).stdin
Мне удалось получить желаемый вывод для статуса hg и diff.
НО, я уверен, что это неправильно (или, по крайней мере, не полностью), и я не могу контролировать приложение пейджера (less.exe): вывод отображается в окне cmd.exe, я вижу менее быстрое (:) но любой дальнейший ввод подается в cmd.exe. Кажется, что приложение пейджера все еще активно в фоновом режиме: после ввода exit в окне cmd.exe я могу контролировать приложение пейджера,
и я могу прекратить это как обычно.
Кроме того, не имеет значения, что я выбираю в качестве пейджерного приложения (больше ведет себя так же).
ОБНОВЛЕНИЕ 2
Issue1677 - Пейджер [PATCH] для вывода «hg help» в windows