sapling/mercurial
Matt Harbison 6b815a9943 pager: fix the invocation of more on Windows
After 6a86fe38f1f6, with 'shell' being (mostly) set to False, invoking `more` no
longer worked.  Instead, a warning was printed and the pager was disabled.
Invoking `more.com` works.  Since a user may have configured 'pager.pager=more',
do this substitution at the end.  Surprisingly, `more` does allow for arguments,
so those are preserved.  This also allows `more` to work in MSYS.

Setting 'shell=False' runs the executable via CreateProcess(), which has rather
wonky rules for resolving an executable without an extension [1].  Resolving to
*.com is not among them.  Since 'shell=True' yields a cryptic error for a bad
$PAGER, and a *.exe program will work without specifying the extension, sticking
with current 'shell=False' seems like the right thing to do.  I don't think
there are any other *.com pagers out there, so this one special case seems OK.

If somebody wants to do something crazy that requires cmd.exe, I was able to get
normal paged output with 'pager.pager="cmd.exe /c more"'.  I assume you can
replace `more` with *.bat, *.vbs or various other creatures listed in $PATHEXT.

[1] https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx
2017-03-20 00:19:33 -04:00
..
cffi setup: move cffi stuff to mercurial/cffi 2016-11-09 22:08:30 +00:00
default.d mergetools.rc: find OSX FileMerge in the new location inside Xcode 4.3 2015-10-16 11:37:34 +02:00
help help: format `commands` heading correctly 2017-03-22 16:36:53 -07:00
hgweb py3: add __bool__ to every class defining __nonzero__ 2017-03-13 12:40:14 -07:00
httpclient httpclient: don't use mutable default argument value 2017-03-14 23:49:25 -07:00
pure pure: use int instead of long 2017-03-20 21:40:28 -07:00
templates hgweb: support Content Security Policy 2017-01-10 23:37:08 -08:00
__init__.py py3: rewrite itervalues() as values() by importer 2017-03-13 08:44:57 -07:00
ancestor.py py3: add __bool__ to every class defining __nonzero__ 2017-03-13 12:40:14 -07:00
archival.py py3: remove use of *L syntax 2016-09-01 02:29:46 +05:30
base85.c base85: fix comparison of an int and a long 2015-08-21 14:29:42 -04:00
bdiff_module.c bdiff: use Python memory allocator in fixws 2017-03-09 11:54:25 -08:00
bdiff.c bdiff: split bdiff into cpy-aware and cpy-agnostic part 2016-07-13 10:46:26 +02:00
bdiff.h bdiff: split bdiff into cpy-aware and cpy-agnostic part 2016-07-13 10:46:26 +02:00
bitmanipulation.h internals: move the bitmanipulation routines into its own file 2016-06-06 13:08:13 +02:00
bookmarks.py bookmarks: use tryunlink 2017-03-21 06:50:28 -07:00
branchmap.py branchmap: be more careful about using %d on ints 2017-03-19 01:01:25 -04:00
bundle2.py py3: add __bool__ to every class defining __nonzero__ 2017-03-13 12:40:14 -07:00
bundlerepo.py revlog: flag processor 2017-01-10 16:15:21 +00:00
byterange.py pycompat: switch to util.urlreq/util.urlerr for py3 compat 2016-04-06 23:22:12 +00:00
changegroup.py revlog: add 'raw' argument to revision and _addrevision 2017-01-05 17:16:07 +00:00
changelog.py util: wrap s.decode('string_escape') calls for future py3 compatibility 2017-03-17 23:42:46 +09:00
chgserver.py chgserver: use tryunlink 2017-03-21 06:50:28 -07:00
cmdutil.py graphlog: pass function arguments without expansion 2017-03-14 18:16:13 +09:00
color.py templater: make pad() strip color codes before computing width (issue5416) 2017-03-18 21:02:20 +09:00
commands.py plain: ignore [commands] config 2017-03-21 21:26:52 -07:00
commandserver.py commandserver: update comment about setpgid 2016-07-18 15:59:08 +01:00
compat.h compat: define ssize_t as int on 32bit Windows, silences C4142 warning 2016-07-15 23:54:56 +09:00
config.py ui: move configlist parser to config.py 2017-03-17 09:19:56 -07:00
context.py py3: add __bool__ to every class defining __nonzero__ 2017-03-13 12:40:14 -07:00
copies.py merge: avoid superfluous filemerges when grafting through renames (issue5407) 2016-10-25 21:01:53 +02:00
crecord.py crecord: add an experimental option for space key to move cursor down 2017-01-08 10:08:29 +08:00
dagparser.py error: get Abort from 'error' instead of 'util' 2015-10-08 12:55:45 -07:00
dagutil.py dagutil: use absolute_import 2015-08-08 19:04:09 -07:00
debugcommands.py debugfsinfo: print fstype information 2017-03-12 01:34:17 -08:00
demandimport.py demandimport: do not raise ImportError for unknown item in fromlist 2016-12-19 22:46:00 +09:00
destutil.py update: use single quotes in use warning 2016-09-02 21:49:33 +00:00
diffhelpers.c diffhelpers: fix botched return statement from e48d70075d8a 2015-01-28 13:34:20 -05:00
dirs.c dirs: use PyVarObject_HEAD_INIT 2016-10-13 13:14:14 +02:00
dirstate.py dirstate: use tryunlink 2017-03-21 06:50:28 -07:00
dirstateguard.py dirstateguard: move to new module so I can break some layering violations 2016-11-21 21:29:32 -05:00
discovery.py checkheads: extract obsolete post processing in its own function 2017-03-21 23:30:13 +01:00
dispatch.py dispatch: use pycompat.maplist to allow summing with args 2017-03-19 14:17:07 -04:00
dummycert.pem
encoding.py encoding: add converter between native str and byte string 2017-03-13 09:12:56 -07:00
error.py error: use r-string to properly pop hints from **kw 2017-03-19 01:02:42 -04:00
exchange.py exchange: use v2 bundles for modern compression engines (issue5506) 2017-03-16 12:33:15 -07:00
exewrapper.c exewrapper: prefer HackableMercurial python if availbale 2017-03-13 12:44:13 -07:00
extensions.py encoding: add converter between native str and byte string 2017-03-13 09:12:56 -07:00
fancyopts.py flags: allow specifying --no-boolean-flag on the command line (BC) 2016-09-13 22:57:57 -04:00
filelog.py revlog: merge hash checking subfunctions 2016-12-13 14:21:36 +00:00
filemerge.py filemerge: explicitly tests for None 2017-03-15 15:11:52 -07:00
fileset.py help: clarify quotes are needed for filesets.size expressions 2016-09-21 16:33:37 +00:00
formatter.py formatter: support json formatting of long type 2017-03-13 18:31:29 -07:00
graphmod.py graphlog: draw multiple edges towards null node (issue5440) 2017-03-20 11:50:55 +09:00
hbisect.py bisect: move check_state into the bisect module 2016-08-24 04:25:20 +02:00
help.py help: make "mergetool" an alias for "merge-tools" 2017-01-13 21:21:02 -08:00
hg.py clone: get rid of ui.backupconfig 2017-03-16 14:18:50 -07:00
hook.py hook: split config reading further 2016-04-14 17:03:49 -07:00
httpconnection.py httpconnection: make sure to clear progress of httpsendfile at EOF 2017-03-18 16:02:14 +09:00
httppeer.py httppeer: advertise and support application/mercurial-0.2 2016-12-24 15:22:18 -07:00
i18n.py i18n: make the locale directory name the same string type as the datapath 2016-10-08 05:26:18 -04:00
keepalive.py keepalive: switch from thread to threading module 2016-07-01 19:17:16 +05:30
localrepo.py localrepo: use tryunlink 2017-03-21 06:50:28 -07:00
lock.py lock: do not encode result of gethostname on Python 2 2017-03-12 16:26:34 -07:00
lsprof.py lsprof: use print function 2016-01-02 11:40:53 -08:00
lsprofcalltree.py lsprofcalltree: use print function 2016-01-02 11:45:29 -08:00
mail.py encoding: factor out unicode variants of from/tolocal() 2017-03-13 09:11:08 -07:00
manifest.c manifest: use PyVarObject_HEAD_INIT 2016-10-13 13:17:23 +02:00
manifest.py manifest: refer to bytestrings as bytes, not str 2017-03-19 01:12:03 -04:00
match.py match: explicitly tests for None 2017-03-15 15:08:45 -07:00
mdiff.py patch: add similarity config knob in experimental section 2017-01-09 10:51:44 -08:00
merge.py merge: remove unnecessary matcher checks 2017-03-19 11:42:17 -07:00
mergeutil.py checkunresolved: move to new package to help avoid import cycles 2016-11-21 21:31:45 -05:00
minirst.py minirst: use bytes.strip instead of str.strip 2017-03-12 22:46:57 +05:30
mpatch_module.c mpatch: raise MemoryError instead of mpatchError if lalloc() failed 2016-08-07 10:06:56 +09:00
mpatch.c internals: move the bitmanipulation routines into its own file 2016-06-06 13:08:13 +02:00
mpatch.h mpatch: raise MemoryError instead of mpatchError if lalloc() failed 2016-08-07 10:06:56 +09:00
namespaces.py namespaces: fix name/node confusion 2016-03-16 23:12:43 +00:00
node.py node: use byte literals to construct nullid and wdirid 2016-03-12 14:04:57 -08:00
obsolete.py py3: add __bool__ to every class defining __nonzero__ 2017-03-13 12:40:14 -07:00
osutil.c osutil: export a "getfstype" method 2017-03-20 16:34:12 -07:00
parser.py util: wrap s.decode('string_escape') calls for future py3 compatibility 2017-03-17 23:42:46 +09:00
parsers.c parsers: use Python memory allocator for indexObject->offsets 2017-03-09 12:09:31 -08:00
patch.py patch: check length of git index header only if integer is specified 2017-01-15 16:33:15 +09:00
pathencode.c pathencode: use assert() for PyBytes_Check() 2016-10-13 21:42:11 +02:00
pathutil.py util: rename checkcase() to fscasesensitive() (API) 2016-08-30 09:22:53 -07:00
peer.py py3: convert to next() function 2016-05-16 21:30:53 +00:00
phases.py phases: explicitly evaluate list returned by map 2017-03-11 20:53:20 -05:00
policy.py py3: add "b" prefix to string literals related to module policy 2017-03-13 04:06:36 +09:00
posix.py util: unify unlinkpath 2017-03-21 06:50:28 -07:00
profiling.py py3: replace pycompat.getenv with encoding.environ.get 2017-01-15 13:17:05 +05:30
progress.py progress: stop excessive clearing (issue4801) 2016-05-06 17:53:06 -05:00
pushkey.py pushkey: use absolute_import 2015-08-08 19:57:27 -07:00
pvec.py pvec: use absolute_import 2015-12-21 21:32:58 -08:00
pycompat.py py3: stop exporting urlparse from pycompat and util (API) 2017-03-21 22:47:49 -07:00
registrar.py registrar: make format strings unicodes and not bytes 2016-10-07 08:32:18 -04:00
repair.py repair: clean up stale lock file from store backup 2016-11-24 18:45:29 -08:00
repoview.py py3: use portable way to stringify cache key of repoview 2017-03-12 17:20:42 -07:00
revlog.py revlog: use pycompat.maplist to eagerly evaluate map on Python 3 2017-03-21 17:39:49 -04:00
revset.py revset: prevent using outgoing() and remote() in hgweb session (BC) 2017-01-20 21:33:18 +09:00
revsetlang.py revsetlang: portably turn int into bytestring 2017-03-19 01:03:53 -04:00
scmposix.py smcposix: pass unicode as first argument to array.array 2017-03-12 22:27:53 +05:30
scmutil.py scmutil: add a simple key-value file helper 2017-03-10 14:33:42 -08:00
scmwindows.py py3: conditionalize _winreg import 2016-08-10 04:35:44 +05:30
server.py server: use tryunlink 2017-03-21 06:50:28 -07:00
setdiscovery.py setdiscovery: use iterbatch interface instead of batch 2016-03-01 17:44:41 -05:00
similar.py similar: use cheaper hash() function to test exact matches 2017-03-23 20:57:27 +09:00
simplemerge.py simplemerge: move conflict warning message to filemerge 2015-10-09 13:54:52 -07:00
smartset.py py3: add __bool__ to every class defining __nonzero__ 2017-03-13 12:40:14 -07:00
sshpeer.py i18n: translate abort messages 2016-06-14 11:53:55 +02:00
sshserver.py wireproto: compress data from a generator 2016-10-16 11:10:21 -07:00
sslutil.py sslutil: guard against broken certifi installations (issue5406) 2016-10-19 18:06:14 +02:00
statichttprepo.py manifest: make manifestlog a storecache 2016-10-18 17:33:39 -07:00
statprof.py statprof: require input file 2017-01-18 22:45:07 -08:00
store.py store: fix many single-byte ops to use slicing in _auxencode 2017-03-12 00:50:44 -05:00
streamclone.py streamclone: clear caches after writing changes into files for visibility 2016-09-12 03:06:29 +09:00
subrepo.py merge with stable 2017-03-21 18:36:14 -04:00
tagmerge.py tagmerge: use 'wvfs' instead of 'wfile' 2017-03-15 00:28:58 -07:00
tags.py py3: drop unused aliases to array.array which are replaced with bytearray 2017-03-12 11:47:02 -07:00
templatefilters.py util: wrap s.encode('string_escape') call for future py3 compatibility 2017-03-15 23:06:50 +09:00
templatekw.py templatekw: make join() escape values of extras (BC) (issue5504) 2017-03-15 23:21:30 +09:00
templater.py templater: make pad() strip color codes before computing width (issue5416) 2017-03-18 21:02:20 +09:00
transaction.py transaction: open a file with checkambig=True to avoid file stat ambiguity 2016-09-22 21:52:00 +09:00
treediscovery.py error: get Abort from 'error' instead of 'util' 2015-10-08 12:55:45 -07:00
txnutil.py txnutil: factor out the logic to read file in according to HG_PENDING 2017-02-21 01:20:59 +09:00
ui.py pager: fix the invocation of more on Windows 2017-03-20 00:19:33 -04:00
unionrepo.py revlog: add 'raw' argument to revision and _addrevision 2017-01-05 17:16:07 +00:00
url.py py3: replace pycompat.getenv with encoding.environ.get 2017-01-15 13:17:05 +05:30
util.h parsers: move PyInt aliasing out of util.h 2016-10-09 13:50:53 +02:00
util.py util: enable hardlink for copyfile 2017-03-12 01:03:23 -08:00
verify.py verify: specify unit for ui.progress when checking files 2016-03-11 20:18:41 +08:00
vfs.py vfs: use tryunlink 2017-03-21 06:50:28 -07:00
win32.py py3: use pycompat.getcwd instead of os.getcwd 2016-12-22 01:54:17 +05:30
windows.py util: unify unlinkpath 2017-03-21 06:50:28 -07:00
wireproto.py util: wrap s.encode('string_escape') call for future py3 compatibility 2017-03-15 23:06:50 +09:00
worker.py worker: flush messages written by child processes before exit 2017-02-25 12:48:50 +09:00