aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
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();