@@ -1240,8 +1240,13 @@ impl Document {
12401240 true
12411241 });
12421242
1243− self.diagnostics
1244− .sort_unstable_by_key(|diagnostic| diagnostic.range);
1243+ self.diagnostics.sort_unstable_by_key(|diagnostic| {
1244+ (
1245+ diagnostic.range,
1246+ diagnostic.severity,
1247+ diagnostic.language_server_id,
1248+ )
1249+ });
12451250
12461251 // Update the inlay hint annotations' positions, helping ensure they are displayed in the proper place
12471252 let apply_inlay_hint_changes = |annotations: &mut Rc<[InlineAnnotation]>| {
@@ -1738,8 +1743,13 @@ impl Document {
17381743 });
17391744 }
17401745 self.diagnostics.extend(diagnostics);
1741− self.diagnostics
1742− .sort_unstable_by_key(|diagnostic| diagnostic.range);
1746+ self.diagnostics.sort_unstable_by_key(|diagnostic| {
1747+ (
1748+ diagnostic.range,
1749+ diagnostic.severity,
1750+ diagnostic.language_server_id,
1751+ )
1752+ });
17431753 }
17441754
17451755 pub fn clear_diagnostics(&mut self, language_server_id: usize) {