[PATCH 6 of 9] chgserver: remove getpager command
Jun Wu
quark at fb.com
Sun Nov 13 16:55:50 EST 2016
# HG changeset patch
# User Jun Wu <quark at fb.com>
# Date 1479072035 0
# Sun Nov 13 21:20:35 2016 +0000
# Node ID 2b3091653f9a1f5ed2caef4b7205e5e6dacdad30
# Parent 76abed25eed8358e6742e20018ab612bd0ec7e99
chgserver: remove getpager command
Since we don't run "uisetup" of the pager extension, "getpager" will just
return nothing. We are going to send the pager command via channeledsystem
instead.
diff --git a/mercurial/chgserver.py b/mercurial/chgserver.py
--- a/mercurial/chgserver.py
+++ b/mercurial/chgserver.py
@@ -17,7 +17,4 @@
change current directory
-'getpager' command
- checks if pager is enabled and which pager should be executed
-
'setenv' command
replace os.environ completely
@@ -46,5 +43,4 @@ import inspect
import os
import re
-import signal
import struct
import sys
@@ -55,5 +51,4 @@ from .i18n import _
from . import (
cmdutil,
- commands,
commandserver,
dispatch,
@@ -201,41 +196,4 @@ class hashstate(object):
return hashstate(confighash, mtimehash, mtimepaths)
-# copied from hgext/pager.py:uisetup()
-def _setuppagercmd(ui, options, cmd):
- if not ui.formatted():
- return
-
- p = ui.config("pager", "pager", os.environ.get("PAGER"))
- usepager = False
- always = util.parsebool(options['pager'])
- auto = options['pager'] == 'auto'
-
- if not p:
- pass
- elif always:
- usepager = True
- elif not auto:
- usepager = False
- else:
- attended = ['annotate', 'cat', 'diff', 'export', 'glog', 'log', 'qdiff']
- attend = ui.configlist('pager', 'attend', attended)
- ignore = ui.configlist('pager', 'ignore')
- cmds, _ = cmdutil.findcmd(cmd, commands.table)
-
- for cmd in cmds:
- var = 'attend-%s' % cmd
- if ui.config('pager', var):
- usepager = ui.configbool('pager', var)
- break
- if (cmd in attend or
- (cmd not in ignore and not attend)):
- usepager = True
- break
-
- if usepager:
- ui.setconfig('ui', 'formatted', ui.formatted(), 'pager')
- ui.setconfig('ui', 'interactive', False, 'pager')
- return p
-
def _newchgui(srcui, csystem):
class chgui(srcui.__class__):
@@ -502,33 +460,4 @@ class chgcmdserver(commandserver.server)
os.umask(mask)
- def getpager(self):
- """Read cmdargs and write pager command to r-channel if enabled
-
- If pager isn't enabled, this writes '\0' because channeledoutput
- does not allow to write empty data.
- """
- args = self._readlist()
- try:
- cmd, _func, args, options, _cmdoptions = dispatch._parse(self.ui,
- args)
- except (error.Abort, error.AmbiguousCommand, error.CommandError,
- error.UnknownCommand):
- cmd = None
- options = {}
- if not cmd or 'pager' not in options:
- self.cresult.write('\0')
- return
-
- pagercmd = _setuppagercmd(self.ui, options, cmd)
- if pagercmd:
- # Python's SIGPIPE is SIG_IGN by default. change to SIG_DFL so
- # we can exit if the pipe to the pager is closed
- if util.safehasattr(signal, 'SIGPIPE') and \
- signal.getsignal(signal.SIGPIPE) == signal.SIG_IGN:
- signal.signal(signal.SIGPIPE, signal.SIG_DFL)
- self.cresult.write(pagercmd)
- else:
- self.cresult.write('\0')
-
def setenv(self):
"""Clear and update os.environ
@@ -548,5 +477,4 @@ class chgcmdserver(commandserver.server)
capabilities.update({'attachio': attachio,
'chdir': chdir,
- 'getpager': getpager,
'setenv': setenv,
'setumask': setumask})
More information about the Mercurial-devel
mailing list