@@ -212,6 +212,14 @@ impl Prompt {
212 self.completion = (self.completion_fn)(&self.line);
212 self.completion = (self.completion_fn)(&self.line);
215+ pub fn delete_char_forwards(&mut self) {
216+ let pos = self.eval_movement(Movement::ForwardChar(1));
217+ self.line.replace_range(self.cursor..pos, "");
219+ self.exit_selection();
220+ self.completion = (self.completion_fn)(&self.line);
215 pub fn delete_word_backwards(&mut self) {
223 pub fn delete_word_backwards(&mut self) {
216 let pos = self.eval_movement(Movement::BackwardWord(1));
224 let pos = self.eval_movement(Movement::BackwardWord(1));
217 self.line.replace_range(pos..self.cursor, "");
225 self.line.replace_range(pos..self.cursor, "");
@@ -221,6 +229,15 @@ impl Prompt {
221 self.completion = (self.completion_fn)(&self.line);
229 self.completion = (self.completion_fn)(&self.line);
232+ pub fn kill_to_start_of_line(&mut self) {
233+ let pos = self.eval_movement(Movement::StartOfLine);
234+ self.line.replace_range(pos..self.cursor, "");
237+ self.exit_selection();
238+ self.completion = (self.completion_fn)(&self.line);
224 pub fn kill_to_end_of_line(&mut self) {
241 pub fn kill_to_end_of_line(&mut self) {
225 let pos = self.eval_movement(Movement::EndOfLine);
242 let pos = self.eval_movement(Movement::EndOfLine);
226 self.line.replace_range(self.cursor..pos, "");
243 self.line.replace_range(self.cursor..pos, "");
@@ -472,12 +489,31 @@ impl Component for Prompt {
472 modifiers: KeyModifiers::CONTROL,
489 modifiers: KeyModifiers::CONTROL,
473 } => self.kill_to_end_of_line(),
490 } => self.kill_to_end_of_line(),
474 KeyEvent {
491 KeyEvent {
492+ code: KeyCode::Char('u'),
493+ modifiers: KeyModifiers::CONTROL,
494+ } => self.kill_to_start_of_line(),
496+ code: KeyCode::Char('h'),
497+ modifiers: KeyModifiers::CONTROL,
475 code: KeyCode::Backspace,
500 code: KeyCode::Backspace,
476 modifiers: KeyModifiers::NONE,
501 modifiers: KeyModifiers::NONE,
478 self.delete_char_backwards();
503 self.delete_char_backwards();
479 (self.callback_fn)(cx, &self.line, PromptEvent::Update);
504 (self.callback_fn)(cx, &self.line, PromptEvent::Update);
507+ code: KeyCode::Char('d'),
508+ modifiers: KeyModifiers::CONTROL,
511+ code: KeyCode::Delete,
512+ modifiers: KeyModifiers::NONE,
514+ self.delete_char_forwards();
515+ (self.callback_fn)(cx, &self.line, PromptEvent::Update);
481 KeyEvent {
517 KeyEvent {
482 code: KeyCode::Char('s'),
518 code: KeyCode::Char('s'),
483 modifiers: KeyModifiers::CONTROL,
519 modifiers: KeyModifiers::CONTROL,