A simple CPU rendered GUI IDE experience.
Diffstat (limited to 'src/edi/lsp_impl.rs')
-rw-r--r--src/edi/lsp_impl.rs19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/edi/lsp_impl.rs b/src/edi/lsp_impl.rs
index d8f2898..068667d 100644
--- a/src/edi/lsp_impl.rs
+++ b/src/edi/lsp_impl.rs
@@ -1,5 +1,6 @@
use std::iter::repeat;
+use Default::default;
use lsp_server::Request as LRq;
use lsp_types::request::*;
use lsp_types::*;
@@ -8,7 +9,7 @@ use ttools::{Tupl, With};
use crate::complete::Complete;
use crate::edi::st::*;
-use crate::hov::Hovr;
+use crate::hov::{Hoverable, Hovring};
use crate::lsp::{RequestError, Rq};
use crate::runnables::Runnables;
use crate::sym::GoTo;
@@ -150,7 +151,21 @@ impl crate::edi::Editor {
});
}
State::Hovering(x) => {
- if x.poll(|x, _| x.ok().flatten()) && x.result.is_none() {
+ if x.poll(|x, (_, p)| {
+ Some(match p {
+ Some(mut p) if !p.of.is_empty() => {
+ p.of.extend(
+ x.ok().flatten().map(Hoverable::Lsp),
+ );
+ p
+ }
+ _ => Hovring {
+ of: vec![Hoverable::Lsp(x.ok()??)],
+ ..default()
+ },
+ })
+ }) && x.result.is_none()
+ {
self.state = State::Default;
}
}