@@ -2547,49 +2547,47 @@ impl LanguageClient {
25472547 . map ( |( line, severity) | Sign :: new ( line, format ! ( "LanguageClient{:?}" , severity) ) )
25482548 . collect ( ) )
25492549 } ) ?;
2550- let signs_prev : Vec < _ > = self . update ( |state| {
2551- Ok ( state
2550+ self . update ( |state| {
2551+ let signs_prev : Vec < _ > = state
25522552 . signs
25532553 . entry ( filename. clone ( ) )
25542554 . or_default ( )
25552555 . iter ( )
25562556 . 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+ _ => { }
25692570 }
2570- _ => { }
25712571 }
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 {
25762574 state. sign_next_id += 1 ;
2577- Ok ( state. sign_next_id )
2578- } ) ? ;
2575+ sign . id = state. sign_next_id ;
2576+ }
25792577 }
2580- }
2581- self . vim ( ) ?
2582- . set_signs ( & filename, & signs_to_add, & signs_to_delete) ?;
2583- self . update ( |state| {
2578+
25842579 let signs = state. signs . entry ( filename. clone ( ) ) . or_default ( ) ;
25852580 // signs might be deleted AND added in the same line to change severity,
25862581 // so deletions must be before additions
2587- for sign in signs_to_delete {
2582+ for sign in & signs_to_delete {
25882583 signs. remove ( & sign. line ) ;
25892584 }
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 ( ) ) ;
25922587 }
2588+ state
2589+ . vim
2590+ . set_signs ( & filename, & signs_to_add, & signs_to_delete) ?;
25932591 Ok ( ( ) )
25942592 } ) ?;
25952593
0 commit comments