Rustfmt
diff --git a/src/completion.rs b/src/completion.rs
index fac3366..8bcc76a 100644
--- a/src/completion.rs
+++ b/src/completion.rs
@@ -116,7 +116,9 @@
 
 impl FilenameCompleter {
     pub fn new() -> FilenameCompleter {
-        FilenameCompleter { break_chars: DEFAULT_BREAK_CHARS.iter().cloned().collect() }
+        FilenameCompleter {
+            break_chars: DEFAULT_BREAK_CHARS.iter().cloned().collect(),
+        }
     }
 }
 
@@ -167,10 +169,7 @@
         return input;
     }
     let esc_char = esc_char.unwrap();
-    let n = input
-        .chars()
-        .filter(|c| break_chars.contains(c))
-        .count();
+    let n = input.chars().filter(|c| break_chars.contains(c)).count();
     if n == 0 {
         return input;
     }
diff --git a/src/config.rs b/src/config.rs
index b621a27..531777b 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -106,7 +106,9 @@
 
 impl Builder {
     pub fn new() -> Builder {
-        Builder { p: Config::default() }
+        Builder {
+            p: Config::default(),
+        }
     }
 
     /// Set the maximum length for the history.
diff --git a/src/consts.rs b/src/consts.rs
index c20ff72..5841016 100644
--- a/src/consts.rs
+++ b/src/consts.rs
@@ -47,7 +47,7 @@
         '\x06' => KeyPress::Ctrl('F'),
         '\x07' => KeyPress::Ctrl('G'),
         '\x08' => KeyPress::Backspace, // '\b'
-        '\x09' => KeyPress::Tab, // '\t'
+        '\x09' => KeyPress::Tab,       // '\t'
         '\x0a' => KeyPress::Ctrl('J'), // '\n' (10)
         '\x0b' => KeyPress::Ctrl('K'),
         '\x0c' => KeyPress::Ctrl('L'),
@@ -76,7 +76,7 @@
 
 #[cfg(test)]
 mod tests {
-    use super::{KeyPress, char_to_key_press};
+    use super::{char_to_key_press, KeyPress};
 
     #[test]
     fn char_to_key() {
diff --git a/src/error.rs b/src/error.rs
index 3df6e70..2ac7ef4 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -23,10 +23,8 @@
     /// Unix Error from syscall
     #[cfg(unix)]
     Errno(nix::Error),
-    #[cfg(windows)]
-    WindowResize,
-    #[cfg(windows)]
-    Decode(char::DecodeUtf16Error),
+    #[cfg(windows)] WindowResize,
+    #[cfg(windows)] Decode(char::DecodeUtf16Error),
 }
 
 impl fmt::Display for ReadlineError {
diff --git a/src/history.rs b/src/history.rs
index 68d355c..3fe60dc 100644
--- a/src/history.rs
+++ b/src/history.rs
@@ -58,10 +58,10 @@
         }
         if line.as_ref().is_empty() ||
             (self.ignore_space &&
-                 line.as_ref().chars().next().map_or(
-                    true,
-                    |c| c.is_whitespace(),
-                ))
+                line.as_ref()
+                    .chars()
+                    .next()
+                    .map_or(true, |c| c.is_whitespace()))
         {
             return false;
         }
diff --git a/src/keymap.rs b/src/keymap.rs
index 4c57f73..ffca6cb 100644
--- a/src/keymap.rs
+++ b/src/keymap.rs
@@ -85,9 +85,12 @@
 impl Cmd {
     pub fn should_reset_kill_ring(&self) -> bool {
         match *self {
-            Cmd::Kill(Movement::BackwardChar(_)) |
-            Cmd::Kill(Movement::ForwardChar(_)) => true,
-            Cmd::ClearScreen | Cmd::Kill(_) | Cmd::Noop | Cmd::Suspend | Cmd::Yank(_, _) |
+            Cmd::Kill(Movement::BackwardChar(_)) | Cmd::Kill(Movement::ForwardChar(_)) => true,
+            Cmd::ClearScreen |
+            Cmd::Kill(_) |
+            Cmd::Noop |
+            Cmd::Suspend |
+            Cmd::Yank(_, _) |
             Cmd::YankPop => false,
             _ => true,
         }
@@ -290,15 +293,13 @@
         loop {
             let key = try!(rdr.next_key());
             match key {
-                KeyPress::Char(digit @ '0'...'9') |
-                KeyPress::Meta(digit @ '0'...'9') => {
+                KeyPress::Char(digit @ '0'...'9') | KeyPress::Meta(digit @ '0'...'9') => {
                     if self.num_args == -1 {
                         self.num_args *= digit.to_digit(10).unwrap() as i16;
                     } else {
-                        self.num_args = self.num_args.saturating_mul(10).saturating_add(
-                            digit.to_digit(10).unwrap() as
-                                i16,
-                        );
+                        self.num_args = self.num_args
+                            .saturating_mul(10)
+                            .saturating_add(digit.to_digit(10).unwrap() as i16);
                     }
                 }
                 _ => return Ok(key),
@@ -323,48 +324,35 @@
             });
         }
         let cmd = match key {
-            KeyPress::Char(c) => {
-                if positive {
-                    Cmd::SelfInsert(n, c)
-                } else {
-                    Cmd::Unknown
-                }
-            }
+            KeyPress::Char(c) => if positive {
+                Cmd::SelfInsert(n, c)
+            } else {
+                Cmd::Unknown
+            },
             KeyPress::Ctrl('A') => Cmd::Move(Movement::BeginningOfLine),
-            KeyPress::Ctrl('B') => {
-                if positive {
-                    Cmd::Move(Movement::BackwardChar(n))
-                } else {
-                    Cmd::Move(Movement::ForwardChar(n))
-                }
-            }
+            KeyPress::Ctrl('B') => if positive {
+                Cmd::Move(Movement::BackwardChar(n))
+            } else {
+                Cmd::Move(Movement::ForwardChar(n))
+            },
             KeyPress::Ctrl('E') => Cmd::Move(Movement::EndOfLine),
-            KeyPress::Ctrl('F') => {
-                if positive {
-                    Cmd::Move(Movement::ForwardChar(n))
-                } else {
-                    Cmd::Move(Movement::BackwardChar(n))
-                }
-            }
-            KeyPress::Ctrl('G') |
-            KeyPress::Esc |
-            KeyPress::Meta('\x07') => Cmd::Abort,
-            KeyPress::Ctrl('H') |
-            KeyPress::Backspace => {
-                if positive {
-                    Cmd::Kill(Movement::BackwardChar(n))
-                } else {
-                    Cmd::Kill(Movement::ForwardChar(n))
-                }
-            }
+            KeyPress::Ctrl('F') => if positive {
+                Cmd::Move(Movement::ForwardChar(n))
+            } else {
+                Cmd::Move(Movement::BackwardChar(n))
+            },
+            KeyPress::Ctrl('G') | KeyPress::Esc | KeyPress::Meta('\x07') => Cmd::Abort,
+            KeyPress::Ctrl('H') | KeyPress::Backspace => if positive {
+                Cmd::Kill(Movement::BackwardChar(n))
+            } else {
+                Cmd::Kill(Movement::ForwardChar(n))
+            },
             KeyPress::Tab => Cmd::Complete,
-            KeyPress::Ctrl('K') => {
-                if positive {
-                    Cmd::Kill(Movement::EndOfLine)
-                } else {
-                    Cmd::Kill(Movement::BeginningOfLine)
-                }
-            }
+            KeyPress::Ctrl('K') => if positive {
+                Cmd::Kill(Movement::EndOfLine)
+            } else {
+                Cmd::Kill(Movement::BeginningOfLine)
+            },
             KeyPress::Ctrl('L') => Cmd::ClearScreen,
             KeyPress::Ctrl('N') => Cmd::NextHistory,
             KeyPress::Ctrl('P') => Cmd::PreviousHistory,
@@ -376,50 +364,33 @@
                     _ => Cmd::Unknown,
                 }
             }
-            KeyPress::Meta('\x08') |
-            KeyPress::Meta('\x7f') => {
-                if positive {
-                    Cmd::Kill(Movement::BackwardWord(n, Word::Emacs))
-                } else {
-                    Cmd::Kill(Movement::ForwardWord(n, At::AfterEnd, Word::Emacs))
-                }
-            }
+            KeyPress::Meta('\x08') | KeyPress::Meta('\x7f') => if positive {
+                Cmd::Kill(Movement::BackwardWord(n, Word::Emacs))
+            } else {
+                Cmd::Kill(Movement::ForwardWord(n, At::AfterEnd, Word::Emacs))
+            },
             KeyPress::Meta('<') => Cmd::BeginningOfHistory,
             KeyPress::Meta('>') => Cmd::EndOfHistory,
-            KeyPress::Meta('B') |
-            KeyPress::Meta('b') => {
-                if positive {
-                    Cmd::Move(Movement::BackwardWord(n, Word::Emacs))
-                } else {
-                    Cmd::Move(Movement::ForwardWord(n, At::AfterEnd, Word::Emacs))
-                }
-            }
-            KeyPress::Meta('C') |
-            KeyPress::Meta('c') => Cmd::CapitalizeWord,
-            KeyPress::Meta('D') |
-            KeyPress::Meta('d') => {
-                if positive {
-                    Cmd::Kill(Movement::ForwardWord(n, At::AfterEnd, Word::Emacs))
-                } else {
-                    Cmd::Kill(Movement::BackwardWord(n, Word::Emacs))
-                }
-            }
-            KeyPress::Meta('F') |
-            KeyPress::Meta('f') => {
-                if positive {
-                    Cmd::Move(Movement::ForwardWord(n, At::AfterEnd, Word::Emacs))
-                } else {
-                    Cmd::Move(Movement::BackwardWord(n, Word::Emacs))
-                }
-            }
-            KeyPress::Meta('L') |
-            KeyPress::Meta('l') => Cmd::DowncaseWord,
-            KeyPress::Meta('T') |
-            KeyPress::Meta('t') => Cmd::TransposeWords(n),
-            KeyPress::Meta('U') |
-            KeyPress::Meta('u') => Cmd::UpcaseWord,
-            KeyPress::Meta('Y') |
-            KeyPress::Meta('y') => Cmd::YankPop,
+            KeyPress::Meta('B') | KeyPress::Meta('b') => if positive {
+                Cmd::Move(Movement::BackwardWord(n, Word::Emacs))
+            } else {
+                Cmd::Move(Movement::ForwardWord(n, At::AfterEnd, Word::Emacs))
+            },
+            KeyPress::Meta('C') | KeyPress::Meta('c') => Cmd::CapitalizeWord,
+            KeyPress::Meta('D') | KeyPress::Meta('d') => if positive {
+                Cmd::Kill(Movement::ForwardWord(n, At::AfterEnd, Word::Emacs))
+            } else {
+                Cmd::Kill(Movement::BackwardWord(n, Word::Emacs))
+            },
+            KeyPress::Meta('F') | KeyPress::Meta('f') => if positive {
+                Cmd::Move(Movement::ForwardWord(n, At::AfterEnd, Word::Emacs))
+            } else {
+                Cmd::Move(Movement::BackwardWord(n, Word::Emacs))
+            },
+            KeyPress::Meta('L') | KeyPress::Meta('l') => Cmd::DowncaseWord,
+            KeyPress::Meta('T') | KeyPress::Meta('t') => Cmd::TransposeWords(n),
+            KeyPress::Meta('U') | KeyPress::Meta('u') => Cmd::UpcaseWord,
+            KeyPress::Meta('Y') | KeyPress::Meta('y') => Cmd::YankPop,
             _ => self.common(key, n, positive),
         };
         debug!(target: "rustyline", "Emacs command: {:?}", cmd);
@@ -432,10 +403,9 @@
             let key = try!(rdr.next_key());
             match key {
                 KeyPress::Char(digit @ '0'...'9') => {
-                    self.num_args = self.num_args.saturating_mul(10).saturating_add(
-                        digit.to_digit(10).unwrap() as
-                            i16,
-                    );
+                    self.num_args = self.num_args
+                        .saturating_mul(10)
+                        .saturating_add(digit.to_digit(10).unwrap() as i16);
                 }
                 _ => return Ok(key),
             };
@@ -619,15 +589,12 @@
             });
         }
         let cmd = match key {
-            KeyPress::Char(c) => {
-                if self.input_mode == InputMode::Replace {
-                    Cmd::Overwrite(c)
-                } else {
-                    Cmd::SelfInsert(1, c)
-                }
-            }
-            KeyPress::Ctrl('H') |
-            KeyPress::Backspace => Cmd::Kill(Movement::BackwardChar(1)),
+            KeyPress::Char(c) => if self.input_mode == InputMode::Replace {
+                Cmd::Overwrite(c)
+            } else {
+                Cmd::SelfInsert(1, c)
+            },
+            KeyPress::Ctrl('H') | KeyPress::Backspace => Cmd::Kill(Movement::BackwardChar(1)),
             KeyPress::Tab => Cmd::Complete,
             KeyPress::Esc => {
                 // vi-movement-mode/vi-command-mode
@@ -678,23 +645,18 @@
                     None => None,
                 }
             }
-            KeyPress::Char(';') => {
-                match self.last_char_search {
-                    Some(ref cs) => Some(Movement::ViCharSearch(n, cs.clone())),
-                    None => None,
-                }
+            KeyPress::Char(';') => match self.last_char_search {
+                Some(ref cs) => Some(Movement::ViCharSearch(n, cs.clone())),
+                None => None,
+            },
+            KeyPress::Char(',') => match self.last_char_search {
+                Some(ref cs) => Some(Movement::ViCharSearch(n, cs.opposite())),
+                None => None,
+            },
+            KeyPress::Char('h') | KeyPress::Ctrl('H') | KeyPress::Backspace => {
+                Some(Movement::BackwardChar(n))
             }
-            KeyPress::Char(',') => {
-                match self.last_char_search {
-                    Some(ref cs) => Some(Movement::ViCharSearch(n, cs.opposite())),
-                    None => None,
-                }
-            }
-            KeyPress::Char('h') |
-            KeyPress::Ctrl('H') |
-            KeyPress::Backspace => Some(Movement::BackwardChar(n)),
-            KeyPress::Char('l') |
-            KeyPress::Char(' ') => Some(Movement::ForwardChar(n)),
+            KeyPress::Char('l') | KeyPress::Char(' ') => Some(Movement::ForwardChar(n)),
             KeyPress::Char('w') => {
                 // 'cw' is 'ce'
                 if key == KeyPress::Char('c') {
diff --git a/src/lib.rs b/src/lib.rs
index 7d51716..d76db7c 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -19,18 +19,18 @@
 #![feature(unicode)]
 #![allow(unknown_lints)]
 
+#[cfg(windows)]
+extern crate kernel32;
 extern crate libc;
 #[macro_use]
 extern crate log;
+#[cfg(unix)]
+extern crate nix;
 extern crate std_unicode;
 extern crate unicode_segmentation;
 extern crate unicode_width;
-#[cfg(unix)]
-extern crate nix;
 #[cfg(windows)]
 extern crate winapi;
-#[cfg(windows)]
-extern crate kernel32;
 
 pub mod completion;
 mod consts;
@@ -56,9 +56,9 @@
 
 use tty::{Position, RawMode, RawReader, Renderer, Term, Terminal};
 
-use completion::{Completer, longest_common_prefix};
+use completion::{longest_common_prefix, Completer};
 use history::{Direction, History};
-use line_buffer::{LineBuffer, MAX_LINE, WordAction};
+use line_buffer::{LineBuffer, WordAction, MAX_LINE};
 pub use keymap::{Anchor, At, CharSearch, Cmd, Movement, RepeatCount, Word};
 use keymap::EditState;
 use kill_ring::{KillRing, Mode};
@@ -73,10 +73,11 @@
 /// Implement rendering.
 struct State<'out, 'prompt> {
     out: &'out mut Renderer,
-    prompt: &'prompt str, // Prompt to display
-    prompt_size: Position, // Prompt Unicode/visible width and height
-    line: LineBuffer, // Edited line buffer
-    cursor: Position, // Cursor position (relative to the start of the prompt for `row`)
+    prompt: &'prompt str,               // Prompt to display
+    prompt_size: Position,              // Prompt Unicode/visible width and height
+    line: LineBuffer,                   // Edited line buffer
+    cursor: Position,                   /* Cursor position (relative to the start of the prompt
+                                         * for `row`) */
     old_rows: usize, // Number of rows used so far (from start of prompt to end of input)
     history_index: usize, // The history index we are currently editing
     saved_line_for_history: LineBuffer, // Current edited line before history browsing
@@ -123,10 +124,8 @@
     }
 
     fn backup(&mut self) {
-        self.saved_line_for_history.update(
-            self.line.as_str(),
-            self.line.pos(),
-        );
+        self.saved_line_for_history
+            .update(self.line.as_str(), self.line.pos());
     }
     fn restore(&mut self) {
         self.line.update(
@@ -137,10 +136,8 @@
 
     fn move_cursor(&mut self) -> Result<()> {
         // calculate the desired position of the cursor
-        let cursor = self.out.calculate_position(
-            &self.line[..self.line.pos()],
-            self.prompt_size,
-        );
+        let cursor = self.out
+            .calculate_position(&self.line[..self.line.pos()], self.prompt_size);
         if self.cursor == cursor {
             return Ok(());
         }
@@ -197,10 +194,8 @@
         if push {
             if n == 1 && s.cursor.col + ch.width().unwrap_or(0) < s.out.get_columns() {
                 // Avoid a full update of the line in the trivial case.
-                let cursor = s.out.calculate_position(
-                    &s.line[..s.line.pos()],
-                    s.prompt_size,
-                );
+                let cursor = s.out
+                    .calculate_position(&s.line[..s.line.pos()], s.prompt_size);
                 s.cursor = cursor;
                 let bits = ch.encode_utf8(&mut s.byte_buffer);
                 let bits = bits.as_bytes();
@@ -228,7 +223,11 @@
         false
     };
     s.changes.borrow_mut().end();
-    if succeed { s.refresh_line() } else { Ok(()) }
+    if succeed {
+        s.refresh_line()
+    } else {
+        Ok(())
+    }
 }
 
 /// Overwrite the character under the cursor (Vi mode)
@@ -347,7 +346,11 @@
     s.changes.borrow_mut().begin();
     let succeed = s.line.transpose_chars();
     s.changes.borrow_mut().end();
-    if succeed { s.refresh_line() } else { Ok(()) }
+    if succeed {
+        s.refresh_line()
+    } else {
+        Ok(())
+    }
 }
 
 fn edit_move_to_prev_word(s: &mut State, word_def: Word, n: RepeatCount) -> Result<()> {
@@ -406,14 +409,22 @@
     s.changes.borrow_mut().begin();
     let succeed = s.line.edit_word(a);
     s.changes.borrow_mut().end();
-    if succeed { s.refresh_line() } else { Ok(()) }
+    if succeed {
+        s.refresh_line()
+    } else {
+        Ok(())
+    }
 }
 
 fn edit_transpose_words(s: &mut State, n: RepeatCount) -> Result<()> {
     s.changes.borrow_mut().begin();
     let succeed = s.line.transpose_words(n);
     s.changes.borrow_mut().end();
-    if succeed { s.refresh_line() } else { Ok(()) }
+    if succeed {
+        s.refresh_line()
+    } else {
+        Ok(())
+    }
 }
 
 /// Substitute the currently edited line with the next or previous history
@@ -598,8 +609,7 @@
                 cmd = try!(s.next_cmd(rdr));
             }
             match cmd {
-                Cmd::SelfInsert(1, 'y') |
-                Cmd::SelfInsert(1, 'Y') => true,
+                Cmd::SelfInsert(1, 'y') | Cmd::SelfInsert(1, 'Y') => true,
                 _ => false,
             }
         } else {
@@ -654,9 +664,7 @@
                 cmd = try!(s.next_cmd(rdr));
             }
             match cmd {
-                Cmd::SelfInsert(1, 'y') |
-                Cmd::SelfInsert(1, 'Y') |
-                Cmd::SelfInsert(1, ' ') => {
+                Cmd::SelfInsert(1, 'y') | Cmd::SelfInsert(1, 'Y') | Cmd::SelfInsert(1, ' ') => {
                     pause_row += s.out.get_rows() - 1;
                 }
                 Cmd::AcceptLine => {
@@ -867,16 +875,14 @@
             Cmd::Overwrite(c) => {
                 try!(edit_overwrite_char(&mut s, c));
             }
-            Cmd::EndOfFile => {
-                if !s.edit_state.is_emacs_mode() && !s.line.is_empty() {
-                    try!(edit_move_end(&mut s));
-                    break;
-                } else if s.line.is_empty() {
-                    return Err(error::ReadlineError::Eof);
-                } else {
-                    try!(edit_delete(&mut s, 1))
-                }
-            }
+            Cmd::EndOfFile => if !s.edit_state.is_emacs_mode() && !s.line.is_empty() {
+                try!(edit_move_end(&mut s));
+                break;
+            } else if s.line.is_empty() {
+                return Err(error::ReadlineError::Eof);
+            } else {
+                try!(edit_delete(&mut s, 1))
+            },
             Cmd::Move(Movement::EndOfLine) => {
                 // Move to the end of line.
                 try!(edit_move_end(&mut s))
@@ -914,20 +920,16 @@
                 // Fetch the previous command from the history list.
                 try!(edit_history_next(&mut s, &editor.history, true))
             }
-            Cmd::HistorySearchBackward => {
-                try!(edit_history_search(
-                    &mut s,
-                    &editor.history,
-                    Direction::Reverse,
-                ))
-            }
-            Cmd::HistorySearchForward => {
-                try!(edit_history_search(
-                    &mut s,
-                    &editor.history,
-                    Direction::Forward,
-                ))
-            }
+            Cmd::HistorySearchBackward => try!(edit_history_search(
+                &mut s,
+                &editor.history,
+                Direction::Reverse,
+            )),
+            Cmd::HistorySearchForward => try!(edit_history_search(
+                &mut s,
+                &editor.history,
+                Direction::Forward,
+            )),
             Cmd::TransposeChars => {
                 // Exchange the char before cursor with the character at cursor.
                 try!(edit_transpose_chars(&mut s))
@@ -950,11 +952,9 @@
                     try!(edit_yank(&mut s, text, anchor, n))
                 }
             }
-            Cmd::ViYankTo(mvt) => {
-                if let Some(text) = s.line.copy(mvt) {
-                    editor.kill_ring.borrow_mut().kill(&text, Mode::Append)
-                }
-            }
+            Cmd::ViYankTo(mvt) => if let Some(text) = s.line.copy(mvt) {
+                editor.kill_ring.borrow_mut().kill(&text, Mode::Append)
+            },
             // TODO CTRL-_ // undo
             Cmd::AcceptLine => {
                 // Accept the line regardless of where the cursor is.
diff --git a/src/line_buffer.rs b/src/line_buffer.rs
index 9f8a41d..7037903 100644
--- a/src/line_buffer.rs
+++ b/src/line_buffer.rs
@@ -49,7 +49,7 @@
 /// The methods do text manipulations or/and cursor movements.
 pub struct LineBuffer {
     buf: String, // Edited line buffer
-    pos: usize, // Current cursor position (byte position)
+    pos: usize,  // Current cursor position (byte position)
     dl: Option<Rc<RefCell<DeleteListener>>>,
     cl: Option<Rc<RefCell<ChangeListener>>>,
 }
@@ -469,18 +469,14 @@
     fn search_char_pos(&self, cs: &CharSearch, n: RepeatCount) -> Option<usize> {
         let mut shift = 0;
         let search_result = match *cs {
-            CharSearch::Backward(c) |
-            CharSearch::BackwardAfter(c) => {
-                self.buf[..self.pos]
-                    .char_indices()
-                    .rev()
-                    .filter(|&(_, ch)| ch == c)
-                    .take(n)
-                    .last()
-                    .map(|(i, _)| i)
-            }
-            CharSearch::Forward(c) |
-            CharSearch::ForwardBefore(c) => {
+            CharSearch::Backward(c) | CharSearch::BackwardAfter(c) => self.buf[..self.pos]
+                .char_indices()
+                .rev()
+                .filter(|&(_, ch)| ch == c)
+                .take(n)
+                .last()
+                .map(|(i, _)| i),
+            CharSearch::Forward(c) | CharSearch::ForwardBefore(c) => {
                 if let Some(cc) = self.grapheme_at_cursor() {
                     shift = self.pos + cc.len();
                     if shift < self.buf.len() {
@@ -547,8 +543,7 @@
         };
         if let Some(pos) = search_result {
             match cs {
-                CharSearch::Backward(_) |
-                CharSearch::BackwardAfter(_) => {
+                CharSearch::Backward(_) | CharSearch::BackwardAfter(_) => {
                     let end = self.pos;
                     self.pos = pos;
                     self.drain(pos..end, Direction::Backward);
@@ -638,11 +633,8 @@
     pub fn replace(&mut self, range: Range<usize>, text: &str) {
         let start = range.start;
         for cl in &self.cl {
-            cl.borrow_mut().replace(
-                start,
-                self.buf.index(range.clone()),
-                text,
-            );
+            cl.borrow_mut()
+                .replace(start, self.buf.index(range.clone()), text);
         }
         self.buf.drain(range);
         if start == self.buf.len() {
@@ -676,18 +668,12 @@
 
     fn drain(&mut self, range: Range<usize>, dir: Direction) -> Drain {
         for dl in &self.dl {
-            dl.borrow_mut().delete(
-                range.start,
-                &self.buf[range.start..range.end],
-                dir,
-            );
+            dl.borrow_mut()
+                .delete(range.start, &self.buf[range.start..range.end], dir);
         }
         for cl in &self.cl {
-            cl.borrow_mut().delete(
-                range.start,
-                &self.buf[range.start..range.end],
-                dir,
-            );
+            cl.borrow_mut()
+                .delete(range.start, &self.buf[range.start..range.end], dir);
         }
         self.buf.drain(range)
     }
@@ -700,29 +686,23 @@
         }
         match mvt {
             Movement::WholeLine => Some(self.buf.clone()),
-            Movement::BeginningOfLine => {
-                if self.pos == 0 {
-                    None
-                } else {
-                    Some(self.buf[..self.pos].to_owned())
-                }
-            }
-            Movement::ViFirstPrint => {
-                if self.pos == 0 {
-                    None
-                } else if let Some(pos) = self.next_word_pos(0, At::Start, Word::Big, 1) {
-                    Some(self.buf[pos..self.pos].to_owned())
-                } else {
-                    None
-                }
-            }
-            Movement::EndOfLine => {
-                if self.pos == self.buf.len() {
-                    None
-                } else {
-                    Some(self.buf[self.pos..].to_owned())
-                }
-            }
+            Movement::BeginningOfLine => if self.pos == 0 {
+                None
+            } else {
+                Some(self.buf[..self.pos].to_owned())
+            },
+            Movement::ViFirstPrint => if self.pos == 0 {
+                None
+            } else if let Some(pos) = self.next_word_pos(0, At::Start, Word::Big, 1) {
+                Some(self.buf[pos..self.pos].to_owned())
+            } else {
+                None
+            },
+            Movement::EndOfLine => if self.pos == self.buf.len() {
+                None
+            } else {
+                Some(self.buf[self.pos..].to_owned())
+            },
             Movement::BackwardWord(n, word_def) => {
                 if let Some(pos) = self.prev_word_pos(self.pos, word_def, n) {
                     Some(self.buf[pos..self.pos].to_owned())
@@ -746,8 +726,9 @@
                 };
                 if let Some(pos) = search_result {
                     Some(match cs {
-                        CharSearch::Backward(_) |
-                        CharSearch::BackwardAfter(_) => self.buf[pos..self.pos].to_owned(),
+                        CharSearch::Backward(_) | CharSearch::BackwardAfter(_) => {
+                            self.buf[pos..self.pos].to_owned()
+                        }
                         CharSearch::ForwardBefore(_) => self.buf[self.pos..pos].to_owned(),
                         CharSearch::Forward(c) => self.buf[self.pos..pos + c.len_utf8()].to_owned(),
                     })
@@ -755,20 +736,16 @@
                     None
                 }
             }
-            Movement::BackwardChar(n) => {
-                if let Some(pos) = self.prev_pos(n) {
-                    Some(self.buf[pos..self.pos].to_owned())
-                } else {
-                    None
-                }
-            }
-            Movement::ForwardChar(n) => {
-                if let Some(pos) = self.next_pos(n) {
-                    Some(self.buf[self.pos..pos].to_owned())
-                } else {
-                    None
-                }
-            }
+            Movement::BackwardChar(n) => if let Some(pos) = self.prev_pos(n) {
+                Some(self.buf[pos..self.pos].to_owned())
+            } else {
+                None
+            },
+            Movement::ForwardChar(n) => if let Some(pos) = self.next_pos(n) {
+                Some(self.buf[self.pos..pos].to_owned())
+            } else {
+                None
+            },
         }
     }
 }
@@ -809,7 +786,7 @@
     use std::cell::RefCell;
     use std::rc::Rc;
     use keymap::{At, CharSearch, Word};
-    use super::{ChangeListener, DeleteListener, Direction, LineBuffer, MAX_LINE, WordAction};
+    use super::{ChangeListener, DeleteListener, Direction, LineBuffer, WordAction, MAX_LINE};
 
     struct Listener {
         deleted_str: Option<String>,
diff --git a/src/tty/unix.rs b/src/tty/unix.rs
index 107a8d3..d0cd992 100644
--- a/src/tty/unix.rs
+++ b/src/tty/unix.rs
@@ -123,10 +123,10 @@
                     Ok(match seq2 {
                         '1' | '7' => KeyPress::Home, // tmux, xrvt
                         '2' => KeyPress::Insert,
-                        '3' => KeyPress::Delete, // kdch1
+                        '3' => KeyPress::Delete,    // kdch1
                         '4' | '8' => KeyPress::End, // tmux, xrvt
-                        '5' => KeyPress::PageUp, // kpp
-                        '6' => KeyPress::PageDown, // knp
+                        '5' => KeyPress::PageUp,    // kpp
+                        '6' => KeyPress::PageDown,  // knp
                         _ => {
                             debug!(target: "rustyline", "unsupported esc sequence: ESC [ {} ~", seq2);
                             KeyPress::UnknownEscSeq
@@ -136,15 +136,15 @@
                     let seq4 = try!(self.next_char());
                     if seq4 == '~' {
                         Ok(match (seq2, seq3) {
-                            ('1', '1') => KeyPress::F(1), // rxvt-unicode
-                            ('1', '2') => KeyPress::F(2), // rxvt-unicode
-                            ('1', '3') => KeyPress::F(3), // rxvt-unicode
-                            ('1', '4') => KeyPress::F(4), // rxvt-unicode
-                            ('1', '5') => KeyPress::F(5), // kf5
-                            ('1', '7') => KeyPress::F(6), // kf6
-                            ('1', '8') => KeyPress::F(7), // kf7
-                            ('1', '9') => KeyPress::F(8), // kf8
-                            ('2', '0') => KeyPress::F(9), // kf9
+                            ('1', '1') => KeyPress::F(1),  // rxvt-unicode
+                            ('1', '2') => KeyPress::F(2),  // rxvt-unicode
+                            ('1', '3') => KeyPress::F(3),  // rxvt-unicode
+                            ('1', '4') => KeyPress::F(4),  // rxvt-unicode
+                            ('1', '5') => KeyPress::F(5),  // kf5
+                            ('1', '7') => KeyPress::F(6),  // kf6
+                            ('1', '8') => KeyPress::F(7),  // kf7
+                            ('1', '9') => KeyPress::F(8),  // kf8
+                            ('2', '0') => KeyPress::F(9),  // kf9
                             ('2', '1') => KeyPress::F(10), // kf10
                             ('2', '3') => KeyPress::F(11), // kf11
                             ('2', '4') => KeyPress::F(12), // kf12
@@ -208,10 +208,10 @@
             } else {
                 // ANSI
                 Ok(match seq2 {
-                    'A' => KeyPress::Up, // kcuu1
-                    'B' => KeyPress::Down, // kcud1
+                    'A' => KeyPress::Up,    // kcuu1
+                    'B' => KeyPress::Down,  // kcud1
                     'C' => KeyPress::Right, // kcuf1
-                    'D' => KeyPress::Left, // kcub1
+                    'D' => KeyPress::Left,  // kcub1
                     'F' => KeyPress::End,
                     'H' => KeyPress::Home, // khome
                     _ => {
@@ -225,16 +225,16 @@
             // ESC O sequences. (SS3)
             let seq2 = try!(self.next_char());
             Ok(match seq2 {
-                'A' => KeyPress::Up, // kcuu1
-                'B' => KeyPress::Down, // kcud1
+                'A' => KeyPress::Up,    // kcuu1
+                'B' => KeyPress::Down,  // kcud1
                 'C' => KeyPress::Right, // kcuf1
-                'D' => KeyPress::Left, // kcub1
-                'F' => KeyPress::End, // kend
-                'H' => KeyPress::Home, // khome
-                'P' => KeyPress::F(1), // kf1
-                'Q' => KeyPress::F(2), // kf2
-                'R' => KeyPress::F(3), // kf3
-                'S' => KeyPress::F(4), // kf4
+                'D' => KeyPress::Left,  // kcub1
+                'F' => KeyPress::End,   // kend
+                'H' => KeyPress::Home,  // khome
+                'P' => KeyPress::F(1),  // kf1
+                'Q' => KeyPress::F(2),  // kf2
+                'R' => KeyPress::F(3),  // kf3
+                'S' => KeyPress::F(4),  // kf4
                 _ => {
                     debug!(target: "rustyline", "unsupported esc sequence: ESC O {:?}", seq2);
                     KeyPress::UnknownEscSeq
@@ -534,7 +534,7 @@
 
     fn enable_raw_mode(&self) -> Result<Mode> {
         use nix::errno::Errno::ENOTTY;
-        use nix::sys::termios::{BRKINT, CS8, ECHO, ICANON, ICRNL, IEXTEN, INPCK, ISIG, ISTRIP,
+        use nix::sys::termios::{CS8, BRKINT, ECHO, ICANON, ICRNL, IEXTEN, INPCK, ISIG, ISTRIP,
                                 IXON, /* OPOST, */ VMIN, VTIME};
         if !self.stdin_isatty {
             try!(Err(nix::Error::from_errno(ENOTTY)));
diff --git a/src/tty/windows.rs b/src/tty/windows.rs
index 62014ff..aa129ff 100644
--- a/src/tty/windows.rs
+++ b/src/tty/windows.rs
@@ -25,7 +25,7 @@
         try!(Err(io::Error::new(
             io::ErrorKind::Other,
             "no stdio handle available for this process",
-        )));
+        ),));
     }
     Ok(handle)
 }
@@ -89,9 +89,9 @@
     pub fn new() -> Result<ConsoleRawReader> {
         let handle = try!(get_std_handle(STDIN_FILENO));
         Ok(ConsoleRawReader {
-               handle: handle,
-               buf: None,
-           })
+            handle: handle,
+            buf: None,
+        })
     }
 }
 
@@ -183,7 +183,8 @@
                     winapi::VK_F10 => return Ok(KeyPress::F(10)),
                     winapi::VK_F11 => return Ok(KeyPress::F(11)),
                     winapi::VK_F12 => return Ok(KeyPress::F(12)),
-                    // winapi::VK_BACK is correctly handled because the key_event.UnicodeChar is also
+                    // winapi::VK_BACK is correctly handled because the key_event.UnicodeChar is
+                    // also
                     // set.
                     _ => continue,
                 };
@@ -443,13 +444,13 @@
             try!(Err(io::Error::new(
                 io::ErrorKind::Other,
                 "no stdio handle available for this process",
-            )));
+            ),));
         }
         let original_mode = try!(get_console_mode(self.stdin_handle));
         // Disable these modes
         let raw = original_mode &
             !(winapi::wincon::ENABLE_LINE_INPUT | winapi::wincon::ENABLE_ECHO_INPUT |
-                  winapi::wincon::ENABLE_PROCESSED_INPUT);
+                winapi::wincon::ENABLE_PROCESSED_INPUT);
         // Enable these modes
         let raw = raw | winapi::wincon::ENABLE_EXTENDED_FLAGS;
         let raw = raw | winapi::wincon::ENABLE_INSERT_MODE;
@@ -457,9 +458,9 @@
         let raw = raw | winapi::wincon::ENABLE_WINDOW_INPUT;
         check!(kernel32::SetConsoleMode(self.stdin_handle, raw));
         Ok(Mode {
-               original_mode: original_mode,
-               stdin_handle: self.stdin_handle,
-           })
+            original_mode: original_mode,
+            stdin_handle: self.stdin_handle,
+        })
     }
 
     fn create_reader(&self, _: &Config) -> Result<ConsoleRawReader> {
diff --git a/src/undo.rs b/src/undo.rs
index 80e6ee7..910aa1d 100644
--- a/src/undo.rs
+++ b/src/undo.rs
@@ -163,9 +163,9 @@
         self.redos.clear();
 
         if !Self::single_char(string.as_ref()) ||
-            !self.undos.last().map_or(false, |lc| {
-                lc.delete_seq(indx, string.as_ref().len())
-            })
+            !self.undos
+                .last()
+                .map_or(false, |lc| lc.delete_seq(indx, string.as_ref().len()))
         {
             self.undos.push(Change::Delete {
                 idx: indx,
@@ -194,10 +194,10 @@
 
     fn single_char(s: &str) -> bool {
         let mut graphemes = s.graphemes(true);
-        graphemes.next().map_or(
-            false,
-            |grapheme| grapheme.is_alphanumeric(),
-        ) && graphemes.next().is_none()
+        graphemes
+            .next()
+            .map_or(false, |grapheme| grapheme.is_alphanumeric()) &&
+            graphemes.next().is_none()
     }
 
     pub fn replace<S: AsRef<str> + Into<String> + Debug>(&mut self, indx: usize, old_: S, new_: S) {