mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-26 03:13:29 +04:00
ESC should exit both completion and insert mode
This commit is contained in:
parent
a28eaa81a0
commit
d54ae09d3b
@ -207,6 +207,13 @@ pub fn is_empty(&self) -> bool {
|
|||||||
|
|
||||||
impl Component for Completion {
|
impl Component for Completion {
|
||||||
fn handle_event(&mut self, event: Event, cx: &mut Context) -> EventResult {
|
fn handle_event(&mut self, event: Event, cx: &mut Context) -> EventResult {
|
||||||
|
// let the Editor handle Esc instead
|
||||||
|
if let Event::Key(KeyEvent {
|
||||||
|
code: KeyCode::Esc, ..
|
||||||
|
}) = event
|
||||||
|
{
|
||||||
|
return EventResult::Ignored;
|
||||||
|
}
|
||||||
self.popup.handle_event(event, cx)
|
self.popup.handle_event(event, cx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -584,7 +584,6 @@ fn handle_event(&mut self, event: Event, cx: &mut Context) -> EventResult {
|
|||||||
if completion.is_empty() {
|
if completion.is_empty() {
|
||||||
self.completion = None;
|
self.completion = None;
|
||||||
}
|
}
|
||||||
// TODO: if exiting InsertMode, remove completion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -605,16 +604,24 @@ fn handle_event(&mut self, event: Event, cx: &mut Context) -> EventResult {
|
|||||||
let (view, doc) = cx.editor.current();
|
let (view, doc) = cx.editor.current();
|
||||||
view.ensure_cursor_in_view(doc);
|
view.ensure_cursor_in_view(doc);
|
||||||
|
|
||||||
if mode == Mode::Normal && doc.mode() == Mode::Insert {
|
// mode transitions
|
||||||
// HAXX: if we just entered insert mode from normal, clear key buf
|
match (mode, doc.mode()) {
|
||||||
// and record the command that got us into this mode.
|
(Mode::Normal, Mode::Insert) => {
|
||||||
|
// HAXX: if we just entered insert mode from normal, clear key buf
|
||||||
|
// and record the command that got us into this mode.
|
||||||
|
|
||||||
// how we entered insert mode is important, and we should track that so
|
// how we entered insert mode is important, and we should track that so
|
||||||
// we can repeat the side effect.
|
// we can repeat the side effect.
|
||||||
|
|
||||||
self.last_insert.0 = self.keymap[&mode][&key];
|
self.last_insert.0 = self.keymap[&mode][&key];
|
||||||
self.last_insert.1.clear();
|
self.last_insert.1.clear();
|
||||||
};
|
}
|
||||||
|
(Mode::Insert, Mode::Normal) => {
|
||||||
|
// if exiting insert mode, remove completion
|
||||||
|
self.completion = None;
|
||||||
|
}
|
||||||
|
_ => (),
|
||||||
|
}
|
||||||
|
|
||||||
EventResult::Consumed(callback)
|
EventResult::Consumed(callback)
|
||||||
}
|
}
|
||||||
|
@ -122,14 +122,12 @@ fn inner_rect(area: Rect) -> Rect {
|
|||||||
let padding_vertical = area.height * 20 / 100;
|
let padding_vertical = area.height * 20 / 100;
|
||||||
let padding_horizontal = area.width * 20 / 100;
|
let padding_horizontal = area.width * 20 / 100;
|
||||||
|
|
||||||
let area = Rect::new(
|
Rect::new(
|
||||||
area.x + padding_horizontal,
|
area.x + padding_horizontal,
|
||||||
area.y + padding_vertical,
|
area.y + padding_vertical,
|
||||||
area.width - padding_horizontal * 2,
|
area.width - padding_horizontal * 2,
|
||||||
area.height - padding_vertical * 2,
|
area.height - padding_vertical * 2,
|
||||||
);
|
)
|
||||||
|
|
||||||
area
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T: 'static> Component for Picker<T> {
|
impl<T: 'static> Component for Picker<T> {
|
||||||
|
Loading…
Reference in New Issue
Block a user