diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/term.rs | 13 |
1 files changed, 11 insertions, 2 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(); |