Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'lib/lsp-server/src/stdio.rs')
| -rw-r--r-- | lib/lsp-server/src/stdio.rs | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/lib/lsp-server/src/stdio.rs b/lib/lsp-server/src/stdio.rs index d3789ce5c0..55b2f7b223 100644 --- a/lib/lsp-server/src/stdio.rs +++ b/lib/lsp-server/src/stdio.rs @@ -5,7 +5,7 @@ use std::{ use log::debug; -use crossbeam_channel::{Receiver, Sender, bounded}; +use crossbeam_channel::{Receiver, Sender, bounded, unbounded}; use crate::Message; /// Creates an LSP connection via stdio. @@ -13,15 +13,16 @@ pub fn stdio_transport( mut read_from: impl Read + std::io::BufRead + Sync + Send + 'static, mut write_to: impl Write + Sync + Send + 'static, ) -> (Sender<Message>, Receiver<Message>, IoThreads) { - let (writer_sender, writer_receiver) = bounded::<Message>(0); + let (writer_sender, writer_receiver) = unbounded::<Message>(); let writer = thread::Builder::new() .name("LspServerWriter".to_owned()) .spawn(move || { - writer_receiver.into_iter().try_for_each(|it| { + loop { + let it = writer_receiver.recv().unwrap(); debug!("sent message {it:#?}"); - let result = it.write(&mut write_to); + let result = it.write(&mut write_to).unwrap(); result - }) + } }) .unwrap(); let (reader_sender, reader_receiver) = bounded::<Message>(0); @@ -55,8 +56,8 @@ pub(crate) fn make_io_threads( } pub struct IoThreads { - reader: thread::JoinHandle<io::Result<()>>, - writer: thread::JoinHandle<io::Result<()>>, + pub reader: thread::JoinHandle<io::Result<()>>, + pub writer: thread::JoinHandle<io::Result<()>>, } impl IoThreads { |