@@ -26,6 +26,7 @@ use tui::{
26pub struct EditorView {
26pub struct EditorView {
27 keymap: Keymaps,
27 keymap: Keymaps,
28 on_next_key: Option<Box<dyn FnOnce(&mut commands::Context, KeyEvent)>>,
28 on_next_key: Option<Box<dyn FnOnce(&mut commands::Context, KeyEvent)>>,
29+ status_msg: Option<String>,
31const OFFSET: u16 = 7; // 1 diagnostic + 5 linenr + 1 gutter
32const OFFSET: u16 = 7; // 1 diagnostic + 5 linenr + 1 gutter
@@ -35,6 +36,7 @@ impl EditorView {
36 keymap: keymap::default(),
37 keymap: keymap::default(),
37 on_next_key: None,
38 on_next_key: None,
@@ -68,6 +70,12 @@ impl EditorView {
70 self.render_statusline(&doc, area, surface, theme, is_focused);
72 self.render_statusline(&doc, area, surface, theme, is_focused);
75+ if let Some(status_msg) = &self.status_msg {
76+ let style = Style::default().fg(Color::Rgb(164, 160, 232)); // lavender
77+ surface.set_string(viewport.x, viewport.y + viewport.height, status_msg, style);
73 pub fn render_buffer(
81 pub fn render_buffer(
@@ -441,8 +449,12 @@ impl Component for EditorView {
441 callback: None,
449 callback: None,
442 callbacks: cx.callbacks,
450 callbacks: cx.callbacks,
443 on_next_key_callback: None,
451 on_next_key_callback: None,
456+ self.status_msg = None;
446 if let Some(on_next_key) = self.on_next_key.take() {
458 if let Some(on_next_key) = self.on_next_key.take() {
447 // if there's a command waiting input, do that first
459 // if there's a command waiting input, do that first
448 on_next_key(&mut cxt, event);
460 on_next_key(&mut cxt, event);
@@ -486,6 +498,7 @@ impl Component for EditorView {
488 self.on_next_key = cxt.on_next_key_callback.take();
500 self.on_next_key = cxt.on_next_key_callback.take();
501+ self.status_msg = cxt.status_msg.take();
490 // appease borrowck
503 // appease borrowck
491 let callback = cxt.callback.take();
504 let callback = cxt.callback.take();