diff options
-rw-r--r-- | src/term.rs | 13 | ||||
-rw-r--r-- | test/rl.rs | 2 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/term.rs b/src/term.rs index 3f99e40..9e98688 100644 --- a/src/term.rs +++ b/src/term.rs @@ -81,11 +81,12 @@ enum Keypress { struct Reader { priv escapes: ~Trie<Keypress>, priv buf: ~str, + priv cleanup: bool, } -pub fn Reader () -> Reader { +pub fn Reader (cleanup: bool) -> Reader { io::print(escape("smkx")); - Reader { escapes: build_escapes_trie(), buf: ~"" } + Reader { escapes: build_escapes_trie(), buf: ~"", cleanup: cleanup } } impl Reader { @@ -153,6 +154,14 @@ impl Reader { } } +impl Drop for Reader { + fn finalize (&self) { + if self.cleanup { + io::print(escape("rmkx")); + } + } +} + // XXX this whole thing needs to be able to deal with caps that don't exist fn build_escapes_trie () -> ~Trie<Keypress> { let mut trie = ~Trie(); @@ -3,7 +3,7 @@ use term::{KeyCharacter,KeyEscape,KeyUp,KeyDown,KeyLeft,KeyRight}; fn term_app (body: &fn (r: &mut term::Reader, w: &term::Writer)) { let writer = term::Writer(true); - let mut reader = term::Reader(); + let mut reader = term::Reader(true); do term::ios::preserve { writer.alternate_screen(true); body(&mut reader, &writer); |