A simple CPU rendered GUI IDE experience.
Diffstat (limited to 'src/lsp/communication.rs')
| -rw-r--r-- | src/lsp/communication.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/lsp/communication.rs b/src/lsp/communication.rs index 8899f0f..0013ad1 100644 --- a/src/lsp/communication.rs +++ b/src/lsp/communication.rs @@ -35,6 +35,7 @@ pub fn handler( loop { crossbeam::select! { recv(req_rx) -> x => match x { + Ok((.., BehaviourAfter::RedrawNow)) => w.request_redraw(), Ok((x, y, and)) => { debug!("received request {x}"); assert!(map.insert(x, (y, Instant::now(), and)).is_none()); @@ -162,7 +163,7 @@ impl super::Client { self.request_::<X, { Redraw }>(y) } #[must_use] - pub(super) fn request_<'me, X: Request, const THEN: BehaviourAfter>( + pub fn request_<'me, X: Request, const THEN: BehaviourAfter>( &'me self, y: &X::Params, ) -> Result< @@ -224,4 +225,12 @@ impl super::Client { id, )) } + + pub fn redraw_now<'me>( + &'me self, + ) -> Result<(), SendError<(i32, oneshot::Sender<Re>, BehaviourAfter)>> + { + let (tx, _) = oneshot::channel(); + self.send_to.send((0, tx, BehaviourAfter::RedrawNow)) + } } |