@@ -2432,23 +2432,32 @@ impl State {
2432
2432
let line = ctx. lnum - 1 ;
2433
2433
let character = ctx. ccol - 1 ;
2434
2434
2435
- let result = self . textDocument_completion (
2436
- & json ! ( {
2435
+ let mut result: Result < Value > = Ok ( Value :: Null ) ;
2436
+ let completion = self . textDocument_completion ( & json ! ( {
2437
2437
"buftype" : "" ,
2438
2438
"languageId" : ctx. filetype,
2439
2439
"filename" : filename,
2440
2440
"line" : line,
2441
2441
"character" : character,
2442
- "handle" : false ,
2443
- } ) . to_params ( ) ?,
2444
- ) ?;
2445
- let result: Option < CompletionResponse > = serde_json:: from_value ( result) ?;
2446
- let result = result. unwrap_or_else ( || CompletionResponse :: Array ( vec ! [ ] ) ) ;
2447
- let is_incomplete = match result {
2442
+ "handle" : false } ) . to_params ( ) ?)
2443
+ . unwrap_or_else ( |err| {
2444
+ result = Err ( err) ;
2445
+ Value :: Null
2446
+ } ) ;
2447
+ let completion: CompletionResponse = serde_json:: from_value ( completion)
2448
+ . unwrap_or_else ( |err| {
2449
+ if result. is_ok ( ) {
2450
+ result = Err ( err. into ( ) ) ;
2451
+ }
2452
+ CompletionResponse :: List ( CompletionList {
2453
+ is_incomplete : true ,
2454
+ items : vec ! [ ] } )
2455
+ } ) ;
2456
+ let is_incomplete = match completion {
2448
2457
CompletionResponse :: Array ( _) => false ,
2449
2458
CompletionResponse :: List ( ref list) => list. is_incomplete ,
2450
2459
} ;
2451
- let matches: Result < Vec < VimCompleteItem > > = match result {
2460
+ let matches: Result < Vec < VimCompleteItem > > = match completion {
2452
2461
CompletionResponse :: Array ( arr) => arr,
2453
2462
CompletionResponse :: List ( list) => list. items ,
2454
2463
} . iter ( )
@@ -2461,7 +2470,7 @@ impl State {
2461
2470
json ! ( [ orig_ctx, ctx. startccol, matches, is_incomplete] ) ,
2462
2471
) ?;
2463
2472
info ! ( "End {}" , REQUEST__NCM2OnComplete ) ;
2464
- Ok ( Value :: Null )
2473
+ result
2465
2474
}
2466
2475
2467
2476
pub fn languageClient_explainErrorAtPoint ( & mut self , params : & Option < Params > ) -> Result < Value > {
0 commit comments