@@ -2547,49 +2547,47 @@ impl LanguageClient {
2547
2547
. map ( |( line, severity) | Sign :: new ( line, format ! ( "LanguageClient{:?}" , severity) ) )
2548
2548
. collect ( ) )
2549
2549
} ) ?;
2550
- let signs_prev : Vec < _ > = self . update ( |state| {
2551
- Ok ( state
2550
+ self . update ( |state| {
2551
+ let signs_prev : Vec < _ > = state
2552
2552
. signs
2553
2553
. entry ( filename. clone ( ) )
2554
2554
. or_default ( )
2555
2555
. iter ( )
2556
2556
. map ( |( _, sign) | sign. clone ( ) )
2557
- . collect ( ) )
2558
- } ) ?;
2559
- let mut signs_to_add = vec ! [ ] ;
2560
- let mut signs_to_delete = vec ! [ ] ;
2561
- let diffs = diff:: slice ( & signs_next, & signs_prev) ;
2562
- for diff in diffs {
2563
- match diff {
2564
- diff:: Result :: Left ( s) => {
2565
- signs_to_add. push ( s. clone ( ) ) ;
2566
- }
2567
- diff:: Result :: Right ( s) => {
2568
- signs_to_delete. push ( s. clone ( ) ) ;
2557
+ . collect ( ) ;
2558
+ let mut signs_to_add = vec ! [ ] ;
2559
+ let mut signs_to_delete = vec ! [ ] ;
2560
+ let diffs = diff:: slice ( & signs_next, & signs_prev) ;
2561
+ for diff in diffs {
2562
+ match diff {
2563
+ diff:: Result :: Left ( s) => {
2564
+ signs_to_add. push ( s. clone ( ) ) ;
2565
+ }
2566
+ diff:: Result :: Right ( s) => {
2567
+ signs_to_delete. push ( s. clone ( ) ) ;
2568
+ }
2569
+ _ => { }
2569
2570
}
2570
- _ => { }
2571
2571
}
2572
- }
2573
- for sign in & mut signs_to_add {
2574
- if sign. id == 0 {
2575
- sign. id = self . update ( |state| {
2572
+ for sign in & mut signs_to_add {
2573
+ if sign. id == 0 {
2576
2574
state. sign_next_id += 1 ;
2577
- Ok ( state. sign_next_id )
2578
- } ) ? ;
2575
+ sign . id = state. sign_next_id ;
2576
+ }
2579
2577
}
2580
- }
2581
- self . vim ( ) ?
2582
- . set_signs ( & filename, & signs_to_add, & signs_to_delete) ?;
2583
- self . update ( |state| {
2578
+
2584
2579
let signs = state. signs . entry ( filename. clone ( ) ) . or_default ( ) ;
2585
2580
// signs might be deleted AND added in the same line to change severity,
2586
2581
// so deletions must be before additions
2587
- for sign in signs_to_delete {
2582
+ for sign in & signs_to_delete {
2588
2583
signs. remove ( & sign. line ) ;
2589
2584
}
2590
- for sign in signs_to_add {
2591
- signs. insert ( sign. line , sign) ;
2585
+ for sign in & signs_to_add {
2586
+ signs. insert ( sign. line , sign. clone ( ) ) ;
2592
2587
}
2588
+ state
2589
+ . vim
2590
+ . set_signs ( & filename, & signs_to_add, & signs_to_delete) ?;
2593
2591
Ok ( ( ) )
2594
2592
} ) ?;
2595
2593
0 commit comments