diff options
author | Joe Wilm <joe@jwilm.com> | 2016-11-28 14:39:37 -0800 |
---|---|---|
committer | Joe Wilm <joe@jwilm.com> | 2016-12-11 20:23:41 -0800 |
commit | ff5081d5e5cd2ddcf775357853b81afbcf45aef4 (patch) | |
tree | 3deec43af92f64e41cdd96f9137e25c0ea38c10b /src/input.rs | |
parent | 7bf3d059c39c0b8e4529db6f7d84a1e1997738e8 (diff) | |
download | alacritty-ff5081d5e5cd2ddcf775357853b81afbcf45aef4.tar.gz alacritty-ff5081d5e5cd2ddcf775357853b81afbcf45aef4.zip |
Add support for bracketed paste
Binding/Action execute now has access to TermMode to support bracketed
paste mode.
Diffstat (limited to 'src/input.rs')
-rw-r--r-- | src/input.rs | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/input.rs b/src/input.rs index e266dbbc..796e0fb5 100644 --- a/src/input.rs +++ b/src/input.rs @@ -135,8 +135,8 @@ impl KeyBinding { } #[inline] - fn execute<N: Notify>(&self, notifier: &mut N) { - self.binding.action.execute(notifier) + fn execute<N: Notify>(&self, notifier: &mut N, mode: &TermMode) { + self.binding.action.execute(notifier, mode) } } @@ -155,8 +155,8 @@ impl MouseBinding { } #[inline] - fn execute<N: Notify>(&self, notifier: &mut N) { - self.binding.action.execute(notifier) + fn execute<N: Notify>(&self, notifier: &mut N, mode: &TermMode) { + self.binding.action.execute(notifier, mode) } } @@ -174,7 +174,7 @@ pub enum Action { impl Action { #[inline] - fn execute<N: Notify>(&self, notifier: &mut N) { + fn execute<N: Notify>(&self, notifier: &mut N, mode: &TermMode) { match *self { Action::Esc(ref s) => notifier.notify(s.clone().into_bytes()), Action::Paste | Action::PasteSelection => { @@ -183,7 +183,13 @@ impl Action { clip.load_selection() .map(|contents| { println!("got contents"); - notifier.notify(contents.into_bytes()) + if mode.contains(mode::BRACKETED_PASTE) { + notifier.notify("\x1b[200~".as_bytes()); + notifier.notify(contents.into_bytes()); + notifier.notify("\x1b[201~".as_bytes()); + } else { + notifier.notify(contents.into_bytes()); + } }) .unwrap_or_else(|err| { err_println!("Error getting clipboard contents: {}", err); @@ -410,7 +416,7 @@ impl Processor { for binding in bindings { if binding.is_triggered_by(&mode, &mods, &key) { // binding was triggered; run the action - binding.execute(notifier); + binding.execute(notifier, &mode); return true; } } @@ -436,7 +442,7 @@ impl Processor { for binding in bindings { if binding.is_triggered_by(&mode, &mods, &button) { // binding was triggered; run the action - binding.execute(notifier); + binding.execute(notifier, &mode); return true; } } |