@@ -3033,26 +3033,28 @@ impl LanguageClient {
30333033 viewport : & viewport:: Viewport ,
30343034 ) -> Result < Vec < VirtualText > > {
30353035 let mut virtual_texts = vec ! [ ] ;
3036- let diagnostics = self . get_state ( |state| state. diagnostics . clone ( ) ) ?;
3036+ let diagnostics =
3037+ self . get_state ( |state| state. diagnostics . get ( filename) . cloned ( ) . unwrap_or_default ( ) ) ?;
3038+ let diagnostics: Vec < Diagnostic > = diagnostics
3039+ . into_iter ( )
3040+ . sorted_by ( |a, b| Ord :: cmp ( & b. severity , & a. severity ) )
3041+ . collect ( ) ;
30373042 let diagnostics_display = self . get_config ( |c| c. diagnostics_display . clone ( ) ) ?;
3038- let diag_list = diagnostics. get ( filename) ;
3039- if let Some ( diag_list) = diag_list {
3040- for diag in diag_list {
3041- if viewport. overlaps ( diag. range ) {
3042- let mut explanation = diag. message . clone ( ) ;
3043- if let Some ( source) = & diag. source {
3044- explanation = format ! ( "{}: {}\n " , source, explanation) ;
3045- }
3046- virtual_texts. push ( VirtualText {
3047- line : diag. range . start . line ,
3048- text : explanation. replace ( "\n " , " " ) ,
3049- hl_group : diagnostics_display
3050- . get ( & ( diag. severity . unwrap_or ( DiagnosticSeverity :: Hint ) as u64 ) )
3051- . ok_or_else ( || anyhow ! ( "Failed to get display" ) ) ?
3052- . virtual_texthl
3053- . clone ( ) ,
3054- } ) ;
3043+ for diag in diagnostics {
3044+ if viewport. overlaps ( diag. range ) {
3045+ let mut explanation = diag. message . clone ( ) ;
3046+ if let Some ( source) = & diag. source {
3047+ explanation = format ! ( "{}: {}\n " , source, explanation) ;
30553048 }
3049+ virtual_texts. push ( VirtualText {
3050+ line : diag. range . start . line ,
3051+ text : explanation. replace ( "\n " , " " ) ,
3052+ hl_group : diagnostics_display
3053+ . get ( & ( diag. severity . unwrap_or ( DiagnosticSeverity :: Hint ) as u64 ) )
3054+ . ok_or_else ( || anyhow ! ( "Failed to get display" ) ) ?
3055+ . virtual_texthl
3056+ . clone ( ) ,
3057+ } ) ;
30563058 }
30573059 }
30583060
0 commit comments