A simple CPU rendered GUI IDE experience.
Diffstat (limited to 'src/edi/st.rs')
| -rw-r--r-- | src/edi/st.rs | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/src/edi/st.rs b/src/edi/st.rs index 859ce4f..17da088 100644 --- a/src/edi/st.rs +++ b/src/edi/st.rs @@ -1,6 +1,7 @@ -#![allow(dead_code, unused)] +#![allow(dead_code, unused, unexpected_cfgs)] use Default::default; use NamedKey::*; +use lsp_types::request::HoverRequest; use lsp_types::*; use regex::Regex; use rust_analyzer::lsp::ext::Runnable; @@ -10,7 +11,8 @@ use winit::keyboard::{Key, NamedKey, SmolStr}; use crate::commands::Commands; use crate::edi::handle2; use crate::gotolist::GoToList; -use crate::lsp::{AQErr, Rq, RqS}; +use crate::hov::Hovr; +use crate::lsp::{AQErr, RequestError, Rq, RqS}; use crate::menu::generic::{GenericMenu, MenuData}; use crate::sym::{Symbols, SymbolsList}; use crate::text::TextArea; @@ -72,10 +74,27 @@ Default => { C(((usize, usize)) => .. if unsafe { CLICKING }) => Selection [StartSelection], Changed => RequestBoolean(BoolRequest => BoolRequest::ReloadFile), K(Key::Named(Escape)) => _ [Escape], - C(_) => _ [Hover], + C(_) => Hovered [Hover], K(_) => _ [Edit], M(_) => _, }, +Hovered => { + HOnSomething(((usize, usize)) => pos) => Hovering(Rq<Hovr, Option<Hovr>, (usize, usize), RequestError<HoverRequest>> => default()) [SetHovering], + HOnNothing => Default, +}, +Hovering(x) => { + // now hovering over something else, cancel existing hover + HOnSomething(pos if let Some((_, c)) = x.request && dbg!(c != pos)) => _ [SetHovering], + HOnSomething(_) => _ [SetHovering], + HOnNothing => Default, + SetHovering((tokio::task::JoinHandle< + Result<Option<Hovr>, RequestError<HoverRequest>>, + >, (usize, usize)) => (h, d)) => Hovering({ let mut x = x; x.request_d(h, d); x }), + C(_) => _ [Hover], + MovedOut => Default, + K(_) => _, + M(_) => _ [ClickedHover], +}, Command(_) => K(Key::Named(Escape)) => Default, Command(t) => K(Key::Named(Enter) if let Some(Ok(x)) = t.sel()) => Default [ProcessCommand((Commands, crate::commands::Cmd) => (t, x))], Command(t) => K(Key::Named(Enter)) => _, |