Unnamed repository; edit this file 'description' to name the repository.
hmm5
| -rw-r--r-- | Cargo.lock | 70 | ||||
| -rw-r--r-- | crates/rust-analyzer/Cargo.toml | 2 | ||||
| -rw-r--r-- | crates/rust-analyzer/src/handlers/dispatch.rs | 3 | ||||
| -rw-r--r-- | crates/rust-analyzer/src/main_loop.rs | 6 | ||||
| -rw-r--r-- | lib/lsp-server/src/stdio.rs | 15 |
5 files changed, 34 insertions, 62 deletions
diff --git a/Cargo.lock b/Cargo.lock index a02a623756..e19ac93f0c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -145,9 +145,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.4" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] name = "borsh" @@ -771,7 +771,7 @@ dependencies = [ name = "helix-lsp-types" version = "0.95.1" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "serde", "serde_json", "url", @@ -820,7 +820,7 @@ version = "0.0.0" dependencies = [ "arrayvec", "base-db", - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg", "cov-mark", "drop_bomb", @@ -1102,7 +1102,7 @@ version = "0.0.0" dependencies = [ "arrayvec", "base-db", - "bitflags 2.9.4", + "bitflags 2.10.0", "cov-mark", "crossbeam-channel", "either", @@ -1207,7 +1207,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "inotify-sys", "libc", ] @@ -1358,7 +1358,7 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "libc", ] @@ -1445,19 +1445,6 @@ dependencies = [ ] [[package]] -name = "lsp-server" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d6ada348dbc2703cbe7637b2dda05cff84d3da2819c24abcb305dd613e0ba2e" -dependencies = [ - "crossbeam-channel", - "log", - "serde", - "serde_derive", - "serde_json", -] - -[[package]] name = "lsp-types" version = "0.95.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1485,7 +1472,7 @@ name = "mbe" version = "0.0.0" dependencies = [ "arrayvec", - "bitflags 2.9.4", + "bitflags 2.10.0", "cov-mark", "expect-test", "intern", @@ -1577,7 +1564,7 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "cfg_aliases", "libc", @@ -1595,7 +1582,7 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "fsevent-sys", "inotify", "kqueue", @@ -1974,7 +1961,7 @@ checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.9.4", + "bitflags 2.10.0", "num-traits", "rand", "rand_chacha", @@ -2011,7 +1998,7 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "memchr", "unicase", ] @@ -2064,7 +2051,7 @@ version = "0.143.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d49dbe5d570793b3c3227972a6ac85fc3e830f09b32c3cb3b68cfceebad3b0a" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "ra-ap-rustc_hashes", "ra-ap-rustc_index", "tracing", @@ -2159,7 +2146,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a86e33c46b2b261a173b23f207461a514812a8b2d2d7935bbc685f733eacce10" dependencies = [ "arrayvec", - "bitflags 2.9.4", + "bitflags 2.10.0", "derive-where", "ena", "indexmap", @@ -2248,7 +2235,7 @@ version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", ] [[package]] @@ -2327,7 +2314,7 @@ dependencies = [ "indexmap", "itertools 0.14.0", "load-cargo", - "lsp-server 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)", + "lsp-server", "lsp-types", "memchr", "mimalloc", @@ -2412,7 +2399,7 @@ version = "0.2.3+llvm-462a31f5a5ab" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "486c2179b4796f65bfe2ee33679acf0927ac83ecf583ad6c91c3b4570911b9ad" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "smallvec", ] @@ -2431,7 +2418,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys", @@ -2550,27 +2537,6 @@ dependencies = [ ] [[package]] -name = "serde-untagged" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "299d9c19d7d466db4ab10addd5703e4c615dec2a5a16dbbafe191045e87ee66e" -dependencies = [ - "erased-serde", - "serde", - "typeid", -] - -[[package]] -name = "serde-value" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" -dependencies = [ - "ordered-float", - "serde", -] - -[[package]] name = "serde_core" version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" diff --git a/crates/rust-analyzer/Cargo.toml b/crates/rust-analyzer/Cargo.toml index d1283ca59e..94c0d32be1 100644 --- a/crates/rust-analyzer/Cargo.toml +++ b/crates/rust-analyzer/Cargo.toml @@ -41,8 +41,8 @@ serde_derive.workspace = true tenthash = "1.1.0" num_cpus = "1.17.0" mimalloc = { version = "0.1.46", default-features = false, optional = true } -lsp-server.workspace = true smallvec.workspace = true +lsp-server = { version = "0.7.9", path = "../../lib/lsp-server" } tracing.workspace = true tracing-subscriber.workspace = true tracing-tree.workspace = true diff --git a/crates/rust-analyzer/src/handlers/dispatch.rs b/crates/rust-analyzer/src/handlers/dispatch.rs index 67bd643fce..f3b24bf0e7 100644 --- a/crates/rust-analyzer/src/handlers/dispatch.rs +++ b/crates/rust-analyzer/src/handlers/dispatch.rs @@ -421,6 +421,9 @@ impl NotificationDispatcher<'_> { self.not = Some(not); return self; } + Err(ExtractError::NoResult) => { + panic!() + } }; tracing::debug!(?params); diff --git a/crates/rust-analyzer/src/main_loop.rs b/crates/rust-analyzer/src/main_loop.rs index 10f45ddb25..24298dff45 100644 --- a/crates/rust-analyzer/src/main_loop.rs +++ b/crates/rust-analyzer/src/main_loop.rs @@ -272,8 +272,10 @@ impl GlobalState { } select! { - recv(inbox) -> msg => - return Ok(msg.ok().map(Event::Lsp)), + recv(inbox) -> msg => { + tracing::debug!("{msg:?}"); + return Ok(msg.ok().map(Event::Lsp)) + }, recv(self.task_pool.receiver) -> task => task.map(Event::Task), 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 { |