diff options
author | Jesse Luehrs <doy@tozt.net> | 2013-04-01 03:39:34 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2013-04-01 03:39:34 -0500 |
commit | 297f9bba6c646ea9aa55e9181f377cc75c06bdb8 (patch) | |
tree | fe7f3979983f0157ca79608991f089390c91e636 /src | |
parent | ade235fb2daa6e9eaee95e96bce9b90e9443d31e (diff) | |
download | rust-term-297f9bba6c646ea9aa55e9181f377cc75c06bdb8.tar.gz rust-term-297f9bba6c646ea9aa55e9181f377cc75c06bdb8.zip |
clean up keypad mode too
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(); |