~abentley/bzrtools/bzrtools.dev

« back to all changes in this revision

Viewing changes to shell.py

  • Committer: Aaron Bentley
  • Date: 2009-09-26 16:53:09 UTC
  • mfrom: (723.2.1 shell_improvement_^C)
  • Revision ID: aaron@aaronbentley.com-20090926165309-dbw4ikblf5ce63yi
Merge Benoît Pierre's ^C fix

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# Copyright (C) 2004, 2005 Aaron Bentley
2
 
# <aaron.bentley@utoronto.ca>
 
2
# <aaron@aaronbentley.com>
3
3
#
4
4
#    This program is free software; you can redistribute it and/or modify
5
5
#    it under the terms of the GNU General Public License as published by
24
24
import string
25
25
import sys
26
26
 
 
27
from bzrlib import osutils
27
28
from bzrlib.branch import Branch
 
29
from bzrlib.config import config_dir, ensure_config_dir_exists
28
30
from bzrlib.commands import get_cmd_object, get_all_cmds, get_alias
29
31
from bzrlib.errors import BzrError
30
32
from bzrlib.workingtree import WorkingTree
84
86
 
85
87
 
86
88
class PromptCmd(cmd.Cmd):
 
89
 
87
90
    def __init__(self):
88
91
        cmd.Cmd.__init__(self)
89
92
        self.prompt = "bzr> "
94
97
        self.set_title()
95
98
        self.set_prompt()
96
99
        self.identchars += '-'
97
 
        self.history_file = os.path.expanduser("~/.bazaar/shell-history")
98
 
        readline.set_completer_delims(string.whitespace)
 
100
        ensure_config_dir_exists()
 
101
        self.history_file = osutils.pathjoin(config_dir(), 'shell-history')
 
102
        whitespace = ''.join(c for c in string.whitespace if c < chr(127))
 
103
        readline.set_completer_delims(whitespace)
99
104
        if os.access(self.history_file, os.R_OK) and \
100
105
            os.path.isfile(self.history_file):
101
106
            readline.read_history_file(self.history_file)
219
224
def run_shell():
220
225
    try:
221
226
        prompt = PromptCmd()
222
 
        try:
223
 
            prompt.cmdloop()
224
 
        finally:
225
 
            prompt.write_history()
 
227
        while True:
 
228
            try:
 
229
                try:
 
230
                    prompt.cmdloop()
 
231
                except KeyboardInterrupt:
 
232
                    print
 
233
            finally:
 
234
                prompt.write_history()
226
235
    except StopIteration:
227
236
        pass
228
237