mercurial/ui.py
changeset 40592 83e571ea06a9
parent 40590 83dd8c63a0c6
child 40593 6f0941f4a184
equal deleted inserted replaced
40591:c49283e740da 40592:83e571ea06a9
  1388 
  1388 
  1389     def prompt(self, msg, default="y"):
  1389     def prompt(self, msg, default="y"):
  1390         """Prompt user with msg, read response.
  1390         """Prompt user with msg, read response.
  1391         If ui is not interactive, the default is returned.
  1391         If ui is not interactive, the default is returned.
  1392         """
  1392         """
       
  1393         return self._prompt(msg, default=default)
       
  1394 
       
  1395     def _prompt(self, msg, **opts):
       
  1396         default = opts[r'default']
  1393         if not self.interactive():
  1397         if not self.interactive():
  1394             self._writemsg(self._fmsgout, msg, ' ', type='prompt')
  1398             self._writemsg(self._fmsgout, msg, ' ', type='prompt', **opts)
  1395             self._writemsg(self._fmsgout, default or '', "\n",
  1399             self._writemsg(self._fmsgout, default or '', "\n",
  1396                            type='promptecho')
  1400                            type='promptecho')
  1397             return default
  1401             return default
  1398         self._writemsgnobuf(self._fmsgout, msg, type='prompt')
  1402         self._writemsgnobuf(self._fmsgout, msg, type='prompt', **opts)
  1399         self.flush()
  1403         self.flush()
  1400         try:
  1404         try:
  1401             r = self._readline()
  1405             r = self._readline()
  1402             if not r:
  1406             if not r:
  1403                 r = default
  1407                 r = default
  1447         """
  1451         """
  1448 
  1452 
  1449         msg, choices = self.extractchoices(prompt)
  1453         msg, choices = self.extractchoices(prompt)
  1450         resps = [r for r, t in choices]
  1454         resps = [r for r, t in choices]
  1451         while True:
  1455         while True:
  1452             r = self.prompt(msg, resps[default])
  1456             r = self._prompt(msg, default=resps[default], choices=choices)
  1453             if r.lower() in resps:
  1457             if r.lower() in resps:
  1454                 return resps.index(r.lower())
  1458                 return resps.index(r.lower())
  1455             # TODO: shouldn't it be a warning?
  1459             # TODO: shouldn't it be a warning?
  1456             self._writemsg(self._fmsgout, _("unrecognized response\n"))
  1460             self._writemsg(self._fmsgout, _("unrecognized response\n"))
  1457 
  1461