aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-04-01 03:39:34 -0500
committerJesse Luehrs <doy@tozt.net>2013-04-01 03:39:34 -0500
commit297f9bba6c646ea9aa55e9181f377cc75c06bdb8 (patch)
treefe7f3979983f0157ca79608991f089390c91e636 /src
parentade235fb2daa6e9eaee95e96bce9b90e9443d31e (diff)
downloadrust-term-297f9bba6c646ea9aa55e9181f377cc75c06bdb8.tar.gz
rust-term-297f9bba6c646ea9aa55e9181f377cc75c06bdb8.zip
clean up keypad mode too
Diffstat (limited to 'src')
-rw-r--r--src/term.rs13
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();