[PATCH 2 of 3] ui: prompt_key -- like prompt, but inputs only one keystroke
Kirill Smelkov
kirr at mns.spb.ru
Tue Dec 25 09:52:26 CST 2007
# HG changeset patch
# User Kirill Smelkov <kirr at mns.spb.ru>
# Date 1198597912 -10800
# Node ID d829b3f63a93b3035782dd4da569e9df54d696c1
# Parent b74f1d14d56ea89736a1505e6a0dc1e9f246b81a
ui: prompt_key -- like prompt, but inputs only one keystroke
rationale: we'll need this for 'record'
diff --git a/mercurial/ui.py b/mercurial/ui.py
--- a/mercurial/ui.py
+++ b/mercurial/ui.py
@@ -22,6 +22,9 @@ def updateconfig(source, dest, sections=
dest.add_section(section)
for name, value in source.items(section, raw=True):
dest.set(section, name, value)
+
+# ui related flags
+INPUT_KEYSTROKE = 0x0001
class ui(object):
_isatty = None
@@ -410,16 +413,26 @@ class ui(object):
line = line[:-1]
return line
- def prompt(self, msg, pat=None, default="y", matchflags=0):
+ def prompt(self, msg, pat=None, default="y", matchflags=0, inputflags=0):
if not self.interactive: return default
try:
- r = self._readline(msg + ' ')
+ if inputflags & INPUT_KEYSTROKE:
+ self.write(msg + ' ')
+ self.flush()
+ r = util.getch()
+ self.write(r + '\n')
+ else:
+ r = self._readline(msg + ' ')
+
if not pat or re.match(pat, r, matchflags):
return r
else:
self.write(_("unrecognized response\n"))
except EOFError:
raise util.Abort(_('response expected'))
+
+ def prompt_key(self, msg, pat=None, default='y', matchflags=0):
+ return self.prompt(msg, pat, default, matchflags, inputflags=INPUT_KEYSTROKE)
def getpass(self, prompt=None, default=None):
if not self.interactive: return default
More information about the Mercurial-devel
mailing list