diff --git a/src/lineengine/history.rs b/src/lineengine/history.rs index 9805cf9..e8454de 100644 --- a/src/lineengine/history.rs +++ b/src/lineengine/history.rs @@ -3,7 +3,7 @@ use std::collections::VecDeque; pub struct History { pub entries: VecDeque, pub max_size: usize, - current_position: Option, + pub current_position: Option, } impl Default for History { fn default() -> Self { diff --git a/src/lineengine/line.rs b/src/lineengine/line.rs index abb660a..9e59014 100644 --- a/src/lineengine/line.rs +++ b/src/lineengine/line.rs @@ -359,7 +359,11 @@ impl LineState { self.clear_and_render(term)?; // Add to history... - self.history.entries.push_front(line.clone()); + if self.history.entries.front() != Some(&line) { + self.history.entries.push_front(line.clone()); + self.history.entries.truncate(self.history.max_size); + } + self.history.current_position = None; // Return line return Ok(Some(ReadlineEvent::Line(line)));