fix: prevents storing last prompt if is top of stack (#3609)
This commit is contained in:
parent
ee94031fc4
commit
1cbf552554
2 changed files with 15 additions and 9 deletions
|
@ -1977,7 +1977,7 @@ fn extend_line_impl(cx: &mut Context, extend: Extend) {
|
|||
let end = text.line_to_char(
|
||||
match extend {
|
||||
Extend::Above => end_line + 1, // the start of next line
|
||||
Extend::Below => (end_line + count),
|
||||
Extend::Below => end_line + count,
|
||||
}
|
||||
.min(text.len_lines()),
|
||||
);
|
||||
|
|
|
@ -533,18 +533,24 @@ impl Component for Prompt {
|
|||
if self.selection.is_some() && self.line.ends_with(std::path::MAIN_SEPARATOR) {
|
||||
self.recalculate_completion(cx.editor);
|
||||
} else {
|
||||
let last_item = self
|
||||
.history_register
|
||||
.and_then(|reg| cx.editor.registers.last(reg).cloned())
|
||||
.map(|entry| entry.into())
|
||||
.unwrap_or_else(|| Cow::from(""));
|
||||
|
||||
// handle executing with last command in history if nothing entered
|
||||
let input: Cow<str> = if self.line.is_empty() {
|
||||
// latest value in the register list
|
||||
self.history_register
|
||||
.and_then(|reg| cx.editor.registers.last(reg).cloned())
|
||||
.map(|entry| entry.into())
|
||||
.unwrap_or_else(|| Cow::from(""))
|
||||
last_item
|
||||
} else {
|
||||
if let Some(register) = self.history_register {
|
||||
if last_item != self.line {
|
||||
// store in history
|
||||
let register = cx.editor.registers.get_mut(register);
|
||||
register.push(self.line.clone());
|
||||
if let Some(register) = self.history_register {
|
||||
cx.editor
|
||||
.registers
|
||||
.get_mut(register)
|
||||
.push(self.line.clone());
|
||||
};
|
||||
}
|
||||
|
||||
self.line.as_str().into()
|
||||
|
|
Loading…
Add table
Reference in a new issue