Merge pull request #157 from gwenn/misc
Misc
diff --git a/TODO.md b/TODO.md
index 75b2667..7037243 100644
--- a/TODO.md
+++ b/TODO.md
@@ -49,6 +49,9 @@
- [ ] Encoding
- [ ] [Ctrl-][Alt-][Shift-]<Key> (#121)
+Layout
+- [ ] Redraw perf (https://crates.io/crates/cassowary)
+
Mouse
- [ ] Mouse support
diff --git a/src/keymap.rs b/src/keymap.rs
index 9841f78..50f50cd 100644
--- a/src/keymap.rs
+++ b/src/keymap.rs
@@ -397,35 +397,45 @@
}
}
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('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('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,
@@ -437,29 +447,37 @@
_ => 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('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('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,
@@ -682,11 +700,13 @@
}
}
let cmd = match key {
- KeyPress::Char(c) => if self.input_mode == InputMode::Replace {
- Cmd::Overwrite(c)
- } else {
- Cmd::SelfInsert(1, c)
- },
+ 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 => {
diff --git a/src/lib.rs b/src/lib.rs
index 90b3ac2..97436a5 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -469,14 +469,16 @@
Cmd::Overwrite(c) => {
try!(s.edit_overwrite_char(c));
}
- Cmd::EndOfFile => if !input_state.is_emacs_mode() && !s.line.is_empty() {
- try!(s.edit_move_end());
- break;
- } else if s.line.is_empty() {
- return Err(error::ReadlineError::Eof);
- } else {
- try!(s.edit_delete(1))
- },
+ Cmd::EndOfFile => {
+ if !input_state.is_emacs_mode() && !s.line.is_empty() {
+ try!(s.edit_move_end());
+ break;
+ } else if s.line.is_empty() {
+ return Err(error::ReadlineError::Eof);
+ } else {
+ try!(s.edit_delete(1))
+ }
+ }
Cmd::Move(Movement::EndOfLine) => {
// Move to the end of line.
try!(s.edit_move_end())
@@ -521,10 +523,12 @@
try!(s.edit_yank(&input_state, text, anchor, n))
}
}
- Cmd::ViYankTo(ref mvt) => if let Some(text) = s.line.copy(mvt) {
- let mut kill_ring = editor.kill_ring.lock().unwrap();
- kill_ring.kill(&text, Mode::Append)
- },
+ Cmd::ViYankTo(ref mvt) => {
+ if let Some(text) = s.line.copy(mvt) {
+ let mut kill_ring = editor.kill_ring.lock().unwrap();
+ kill_ring.kill(&text, Mode::Append)
+ }
+ }
// TODO CTRL-_ // undo
Cmd::AcceptLine => {
#[cfg(test)]
@@ -643,7 +647,7 @@
editor
.term
.create_writer()
- .write_and_flush("\n".as_bytes())
+ .write_and_flush(b"\n")
.unwrap();
user_input
}
diff --git a/src/line_buffer.rs b/src/line_buffer.rs
index ae3fe70..de80a55 100644
--- a/src/line_buffer.rs
+++ b/src/line_buffer.rs
@@ -693,23 +693,29 @@
}
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())
@@ -741,16 +747,20 @@
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
+ }
+ }
}
}
diff --git a/src/test/mod.rs b/src/test/mod.rs
index 8642b03..53ac34c 100644
--- a/src/test/mod.rs
+++ b/src/test/mod.rs
@@ -1,9 +1,9 @@
use std::collections::HashMap;
use std::sync::{Arc, RwLock};
-use super::{Editor, Result};
+use super::{Editor, Result, StdStream};
use completion::Completer;
-use config::{Config, EditMode};
+use config::{Config, EditMode, OutputStreamType};
use edit::init_state;
use keymap::{Cmd, InputState};
use keys::KeyPress;
@@ -47,7 +47,8 @@
&completer,
None,
&Config::default(),
- ).unwrap();
+ )
+ .unwrap();
assert_eq!(Some(Cmd::AcceptLine), cmd);
assert_eq!("rust", s.line.as_str());
assert_eq!(4, s.line.pos());
@@ -104,3 +105,8 @@
assert_line(*mode, &[KeyPress::UnknownEscSeq, KeyPress::Enter], "");
}
}
+
+#[test]
+fn from_stream_type() {
+ StdStream::from_stream_type(OutputStreamType::Stdout);
+}
diff --git a/src/tty/unix.rs b/src/tty/unix.rs
index c21fb32..ffcbc97 100644
--- a/src/tty/unix.rs
+++ b/src/tty/unix.rs
@@ -395,7 +395,7 @@
let out = StdStream::from_stream_type(stream_type);
let (cols, _) = get_win_size(&out);
PosixRenderer {
- out: out,
+ out,
cols,
buffer: String::with_capacity(1024),
}