History

Resolve proto hints with empty resolve data (#19274)

Fixed ssh remoting not showing a lot of hints Release Notes: - N/A

Kirill Bulatov committed 2 years ago

Commit 02f63e41 parent 3dcc6382 files · +10 −10Browse files

Unified · Split

2 files
  1. crates/project/src/lsp_command.rs +9 −9
  2. crates/proto/proto/zed.proto +1 −1
crates/project/src/lsp_command.rs+9−9
@@ -2439,15 +2439,13 @@ impl InlayHints { · 2438 unmodified lines
24392439 ResolveState::Resolved => (0, None),
24402440 ResolveState::CanResolve(server_id, resolve_data) => (
24412441 1,
2442− resolve_data
2443− .map(|json_data| {
2442+ Some(proto::resolve_state::LspResolveState {
2443+ server_id: server_id.0 as u64,
2444+ value: resolve_data.map(|json_data| {
24442445 serde_json::to_string(&json_data)
24452446 .expect("failed to serialize resolve json data")
2446− })
2447− .map(|value| proto::resolve_state::LspResolveState {
2448− server_id: server_id.0 as u64,
2449− value,
24502447 }),
2448+ }),
24512449 ),
24522450 ResolveState::Resolving => (2, None),
24532451 };
@@ -2515,9 +2513,11 @@ impl InlayHints { · 61 unmodified lines
25152513 let resolve_state_data = resolve_state
25162514 .lsp_resolve_state.as_ref()
25172515 .map(|lsp_resolve_state| {
2518− serde_json::from_str::<Option<lsp::LSPAny>>(&lsp_resolve_state.value)
2519− .with_context(|| format!("incorrect proto inlay hint message: non-json resolve state {lsp_resolve_state:?}"))
2520− .map(|state| (LanguageServerId(lsp_resolve_state.server_id as usize), state))
2516+ let value = lsp_resolve_state.value.as_deref().map(|value| {
2517+ serde_json::from_str::<Option<lsp::LSPAny>>(value)
2518+ .with_context(|| format!("incorrect proto inlay hint message: non-json resolve state {lsp_resolve_state:?}"))
2519+ }).transpose()?.flatten();
2520+ anyhow::Ok((LanguageServerId(lsp_resolve_state.server_id as usize), value))
25212521 })
25222522 .transpose()?;
25232523 let resolve_state = match resolve_state.state {
crates/proto/proto/zed.proto+1−1
@@ -1207,7 +1207,7 @@ message ResolveState { · 1206 unmodified lines
12071207 }
12081208
12091209 message LspResolveState {
1210− string value = 1;
1210+ optional string value = 1;
12111211 uint64 server_id = 2;
12121212 }
12131213 }