diff --git a/application.py b/application.py index 747aad9..07c9112 100755 --- a/application.py +++ b/application.py @@ -5,8 +5,8 @@ from subprocess import Popen, PIPE, STDOUT import buffer, buffer.about, buffer.color, buffer.console, buffer.data import buffer.fs -import bufferlist, color, completer, keyinput, method, minibuffer, mode -import util, window +import bufferlist, color, completer, ispell, keyinput, method, minibuffer +import mode, util, window from point import Point class Application(object): @@ -879,6 +879,7 @@ def run_app(stdscr, buffers, jump_to_line=None, init_mode=None): curses.def_shell_mode() a = Application(stdscr, buffers, jump_to_line, init_mode) a.run() + return 0 if __name__ == "__main__": ciphers = { @@ -976,12 +977,16 @@ if __name__ == "__main__": keyinput.disable_control_chars() # ok, now run our app - retval = 1 try: - retval = curses.wrapper(run_app, buffers, opts.goto, opts.mode) + curses.wrapper(run_app, buffers, opts.goto, opts.mode) + err = 0 except: traceback.print_exc() + err = 1 # restore terminal state termios.tcsetattr(sys.stdin, termios.TCSANOW, attr) - sys.exit(retval) + ispell.free() + if not err: + os.system('clear') + sys.exit(err) diff --git a/ispell.py b/ispell.py index d4d01ce..ce3591b 100644 --- a/ispell.py +++ b/ispell.py @@ -7,11 +7,15 @@ _speller = None _can_spell = os.system('which ispell > /dev/null 2>&1') == 0 def can_spell(): - global _can_spell return _can_spell def get_speller(): global _speller + if _can_spell and not _speller: + _speller = Speller() return _speller +def free(): + if _speller: + _speller.close() class Speller(object): def __init__(self, cmd='ispell'): @@ -77,9 +81,6 @@ class Speller(object): self.pipe.stdin.flush() self.flush(word) -if _can_spell: - _speller = Speller() - if __name__ == "__main__": s = Speller() while True: