~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/shelf_ui.py

  • Committer: Vincent Ladeuil
  • Date: 2011-09-28 14:49:44 UTC
  • mto: This revision was merged to the branch mainline in revision 6175.
  • Revision ID: v.ladeuil+lp@free.fr-20110928144944-gly88bevm0ivj4ms
Address gz's review comments.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
 
18
18
from cStringIO import StringIO
 
19
import os
19
20
import shutil
20
21
import sys
21
22
import tempfile
251
252
        diff_file.seek(0)
252
253
        return patches.parse_patch(diff_file)
253
254
 
 
255
    def _char_based(self):
 
256
        # FIXME: A bit hackish to use INSIDE_EMACS here, but there is another
 
257
        # work in progress moving this method (and more importantly prompt()
 
258
        # below) into the ui area and address the issue in better ways.
 
259
        # -- vila 2011-09-28
 
260
        return os.environ.get('INSIDE_EMACS', None) is None
 
261
 
254
262
    def prompt(self, message):
255
263
        """Prompt the user for a character.
256
264
 
257
265
        :param message: The message to prompt a user with.
258
266
        :return: A character.
259
267
        """
260
 
        char_based = not(os.environ.get('INSIDE_EMACS', None) is not None)
 
268
        char_based = self._char_based()
261
269
        if char_based and not sys.stdin.isatty():
262
270
            # Since there is no controlling terminal we will hang when
263
271
            # trying to prompt the user, better abort now.  See
277
285
                # XXX: Warn if more than one char is typed ?
278
286
                char = line[0]
279
287
            else:
280
 
                # In the char based implementation, the default value is
281
 
                # selected when the user just hit enter, so we return that here
282
 
                # for edge cases.
283
 
                char = '\n'
 
288
                # Empty input, callers handle it as enter
 
289
                char = ''
284
290
        sys.stdout.write("\r" + ' ' * len(message) + '\r')
285
291
        sys.stdout.flush()
286
292
        return char