@@ -16,7 +16,7 @@ use crate::{
16
16
use anyhow:: { anyhow, Context as _, Result } ;
17
17
use async_trait:: async_trait;
18
18
use client:: { proto, TypedEnvelope } ;
19
- use collections:: { btree_map, BTreeMap , HashMap , HashSet } ;
19
+ use collections:: { btree_map, BTreeMap , BTreeSet , HashMap , HashSet } ;
20
20
use futures:: {
21
21
future:: { join_all, Shared } ,
22
22
select,
@@ -172,7 +172,6 @@ impl LocalLspStore {
172
172
worktree_handle : & Model < Worktree > ,
173
173
delegate : Arc < LocalLspAdapterDelegate > ,
174
174
adapter : Arc < CachedLspAdapter > ,
175
- language : LanguageName ,
176
175
cx : & mut ModelContext < LspStore > ,
177
176
) {
178
177
let worktree = worktree_handle. read ( cx) ;
@@ -243,7 +242,6 @@ impl LocalLspStore {
243
242
let state = LanguageServerState :: Starting ( {
244
243
let server_name = adapter. name . 0 . clone ( ) ;
245
244
let delegate = delegate as Arc < dyn LspAdapterDelegate > ;
246
- let language = language. clone ( ) ;
247
245
let key = key. clone ( ) ;
248
246
let adapter = adapter. clone ( ) ;
249
247
@@ -324,7 +322,6 @@ impl LocalLspStore {
324
322
Ok ( server) => {
325
323
this. update ( & mut cx, |this, mut cx| {
326
324
this. insert_newly_running_language_server (
327
- language,
328
325
adapter,
329
326
server. clone ( ) ,
330
327
server_id,
@@ -416,7 +413,7 @@ impl LocalLspStore {
416
413
self . fs . clone ( ) ,
417
414
cx,
418
415
) ;
419
- self . start_language_server ( worktree, delegate, adapter. clone ( ) , language . clone ( ) , cx) ;
416
+ self . start_language_server ( worktree, delegate, adapter. clone ( ) , cx) ;
420
417
}
421
418
422
419
// After starting all the language servers, reorder them to reflect the desired order
@@ -4797,20 +4794,13 @@ impl LspStore {
4797
4794
. into_iter ( )
4798
4795
. filter_map ( |symbol| Self :: deserialize_symbol ( symbol) . log_err ( ) )
4799
4796
. collect :: < Vec < _ > > ( ) ;
4800
- populate_labels_for_symbols (
4801
- core_symbols,
4802
- & language_registry,
4803
- None ,
4804
- None ,
4805
- & mut symbols,
4806
- )
4807
- . await ;
4797
+ populate_labels_for_symbols ( core_symbols, & language_registry, None , & mut symbols)
4798
+ . await ;
4808
4799
Ok ( symbols)
4809
4800
} )
4810
4801
} else if let Some ( local) = self . as_local ( ) {
4811
4802
struct WorkspaceSymbolsResult {
4812
4803
lsp_adapter : Arc < CachedLspAdapter > ,
4813
- language : LanguageName ,
4814
4804
worktree : WeakModel < Worktree > ,
4815
4805
worktree_abs_path : Arc < Path > ,
4816
4806
lsp_symbols : Vec < ( String , SymbolKind , lsp:: Location ) > ,
@@ -4831,13 +4821,10 @@ impl LspStore {
4831
4821
}
4832
4822
let worktree_abs_path = worktree. abs_path ( ) . clone ( ) ;
4833
4823
4834
- let ( lsp_adapter, language , server) = match local. language_servers . get ( server_id) {
4824
+ let ( lsp_adapter, server) = match local. language_servers . get ( server_id) {
4835
4825
Some ( LanguageServerState :: Running {
4836
- adapter,
4837
- language,
4838
- server,
4839
- ..
4840
- } ) => ( adapter. clone ( ) , language. clone ( ) , server) ,
4826
+ adapter, server, ..
4827
+ } ) => ( adapter. clone ( ) , server) ,
4841
4828
4842
4829
_ => continue ,
4843
4830
} ;
@@ -4874,7 +4861,7 @@ impl LspStore {
4874
4861
4875
4862
WorkspaceSymbolsResult {
4876
4863
lsp_adapter,
4877
- language ,
4864
+
4878
4865
worktree : worktree_handle. downgrade ( ) ,
4879
4866
worktree_abs_path,
4880
4867
lsp_symbols,
@@ -4935,7 +4922,6 @@ impl LspStore {
4935
4922
populate_labels_for_symbols (
4936
4923
core_symbols,
4937
4924
& language_registry,
4938
- Some ( result. language ) ,
4939
4925
Some ( result. lsp_adapter ) ,
4940
4926
& mut symbols,
4941
4927
)
@@ -7467,7 +7453,6 @@ impl LspStore {
7467
7453
7468
7454
fn insert_newly_running_language_server (
7469
7455
& mut self ,
7470
- language : LanguageName ,
7471
7456
adapter : Arc < CachedLspAdapter > ,
7472
7457
language_server : Arc < LanguageServer > ,
7473
7458
server_id : LanguageServerId ,
@@ -7494,7 +7479,6 @@ impl LspStore {
7494
7479
server_id,
7495
7480
LanguageServerState :: Running {
7496
7481
adapter : adapter. clone ( ) ,
7497
- language : language. clone ( ) ,
7498
7482
server : language_server. clone ( ) ,
7499
7483
simulate_disk_based_diagnostics_completion : None ,
7500
7484
} ,
@@ -8298,7 +8282,6 @@ pub enum LanguageServerState {
8298
8282
Starting ( Task < Option < Arc < LanguageServer > > > ) ,
8299
8283
8300
8284
Running {
8301
- language : LanguageName ,
8302
8285
adapter : Arc < CachedLspAdapter > ,
8303
8286
server : Arc < LanguageServer > ,
8304
8287
simulate_disk_based_diagnostics_completion : Option < Task < ( ) > > ,
@@ -8311,10 +8294,9 @@ impl std::fmt::Debug for LanguageServerState {
8311
8294
LanguageServerState :: Starting ( _) => {
8312
8295
f. debug_struct ( "LanguageServerState::Starting" ) . finish ( )
8313
8296
}
8314
- LanguageServerState :: Running { language, .. } => f
8315
- . debug_struct ( "LanguageServerState::Running" )
8316
- . field ( "language" , & language)
8317
- . finish ( ) ,
8297
+ LanguageServerState :: Running { .. } => {
8298
+ f. debug_struct ( "LanguageServerState::Running" ) . finish ( )
8299
+ }
8318
8300
}
8319
8301
}
8320
8302
}
@@ -8654,35 +8636,29 @@ impl LspAdapterDelegate for LocalLspAdapterDelegate {
8654
8636
async fn populate_labels_for_symbols (
8655
8637
symbols : Vec < CoreSymbol > ,
8656
8638
language_registry : & Arc < LanguageRegistry > ,
8657
- default_language : Option < LanguageName > ,
8658
8639
lsp_adapter : Option < Arc < CachedLspAdapter > > ,
8659
8640
output : & mut Vec < Symbol > ,
8660
8641
) {
8661
8642
#[ allow( clippy:: mutable_key_type) ]
8662
8643
let mut symbols_by_language = HashMap :: < Option < Arc < Language > > , Vec < CoreSymbol > > :: default ( ) ;
8663
8644
8664
- let mut unknown_path = None ;
8645
+ let mut unknown_paths = BTreeSet :: new ( ) ;
8665
8646
for symbol in symbols {
8666
8647
let language = language_registry
8667
8648
. language_for_file_path ( & symbol. path . path )
8668
8649
. await
8669
8650
. ok ( )
8670
8651
. or_else ( || {
8671
- unknown_path. get_or_insert ( symbol. path . path . clone ( ) ) ;
8672
- default_language. as_ref ( ) . and_then ( |name| {
8673
- language_registry
8674
- . language_for_name ( & name. 0 )
8675
- . now_or_never ( ) ?
8676
- . ok ( )
8677
- } )
8652
+ unknown_paths. insert ( symbol. path . path . clone ( ) ) ;
8653
+ None
8678
8654
} ) ;
8679
8655
symbols_by_language
8680
8656
. entry ( language)
8681
8657
. or_default ( )
8682
8658
. push ( symbol) ;
8683
8659
}
8684
8660
8685
- if let Some ( unknown_path) = unknown_path {
8661
+ for unknown_path in unknown_paths {
8686
8662
log:: info!(
8687
8663
"no language found for symbol path {}" ,
8688
8664
unknown_path. display( )
0 commit comments