From bc2793a762b505d2d3c7af65e878f864a36cb19b Mon Sep 17 00:00:00 2001 From: Joe Wilm Date: Sat, 2 Jul 2016 08:32:28 -0700 Subject: Move WriteNotifier type into input module It's a generic impl of `input::Notify` for `Write` types; as such, it seems completely reasonable to include in the input module. Moving it also serves to declutter main. --- src/input.rs | 11 +++++++++++ src/main.rs | 10 +--------- 2 files changed, 12 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/input.rs b/src/input.rs index 6d4d3ab9..ffa19fa8 100644 --- a/src/input.rs +++ b/src/input.rs @@ -23,6 +23,8 @@ //! APIs //! //! TODO handling xmodmap would be good +use std::io::Write; + use glutin::{ElementState, VirtualKeyCode}; use term::mode::{self, TermMode}; @@ -108,6 +110,15 @@ pub trait Notify { fn notify(&mut self, &str); } +/// A notifier type that simply writes bytes to the provided `Write` type +pub struct WriteNotifier<'a, W: Write + 'a>(pub &'a mut W); + +impl<'a, W: Write> Notify for WriteNotifier<'a, W> { + fn notify(&mut self, message: &str) { + self.0.write(message.as_bytes()).unwrap(); + } +} + /// Describes a key combination that should emit a control sequence /// /// The actual triggering key is omitted here since bindings are grouped by the trigger key. diff --git a/src/main.rs b/src/main.rs index 7bf4d7d3..aae02322 100644 --- a/src/main.rs +++ b/src/main.rs @@ -69,14 +69,6 @@ enum ShouldExit { Yes, No } - -struct WriteNotifier<'a, W: Write + 'a>(&'a mut W); -impl<'a, W: Write> input::Notify for WriteNotifier<'a, W> { - fn notify(&mut self, message: &str) { - self.0.write(message.as_bytes()).unwrap(); - } -} - /// Channel used by resize handling on mac static mut resize_sender: Option> = None; @@ -108,7 +100,7 @@ fn handle_event(event: glutin::Event, render_tx.send((w, h)).expect("render thread active"); }, glutin::Event::KeyboardInput(state, _code, key) => { - input_processor.process(state, key, &mut WriteNotifier(writer), *terminal.mode()) + input_processor.process(state, key, &mut input::WriteNotifier(writer), *terminal.mode()) }, _ => () } -- cgit