aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-04-01 02:53:16 -0500
committerJesse Luehrs <doy@tozt.net>2013-04-01 02:53:16 -0500
commit832234a37913e64c5650bc549341dcecd2f6a659 (patch)
tree7963c4596f355fef75603a8907f708d7ec59055a /src
parent2c129f6533e319774be67ea4828190ee8213180a (diff)
downloadrust-term-832234a37913e64c5650bc549341dcecd2f6a659.tar.gz
rust-term-832234a37913e64c5650bc549341dcecd2f6a659.zip
fix next_key
Diffstat (limited to 'src')
-rw-r--r--src/term.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/term.rs b/src/term.rs
index 02a1306..ec45629 100644
--- a/src/term.rs
+++ b/src/term.rs
@@ -136,6 +136,17 @@ impl Reader {
fn next_key (&mut self) -> Keypress {
fail_unless!(str::len(self.buf) > 0);
+ for uint::range_rev(str::len(self.buf), 0) |i| {
+ match self.escapes.find(str::slice(self.buf, 0, i)) {
+ &Some(k) => {
+ for uint::range(0, i) |_| {
+ str::shift_char(&mut self.buf);
+ }
+ return k
+ }
+ &None => { }
+ }
+ }
let next = str::shift_char(&mut self.buf);
return KeyCharacter(next);
}