[gnome-builder] Fix diagnostic for LSP provider



commit 9e31c473914ec3e0d0db551cd5391ac5d489a566
Author: Günther Wagner <info gunibert de>
Date:   Thu Jun 25 20:37:59 2020 +0200

    Fix diagnostic for LSP provider
    
    Prevent applying single location diagnostic if a range is available

 src/libide/code/ide-buffer.c | 42 ++++++++++++++++++++++--------------------
 1 file changed, 22 insertions(+), 20 deletions(-)
---
diff --git a/src/libide/code/ide-buffer.c b/src/libide/code/ide-buffer.c
index 4e658b77f..9df02da72 100644
--- a/src/libide/code/ide-buffer.c
+++ b/src/libide/code/ide-buffer.c
@@ -2466,33 +2466,35 @@ ide_buffer_apply_diagnostic (IdeBuffer     *self,
       return;
     }
 
-  if ((location = ide_diagnostic_get_location (diagnostic)))
+  n_ranges = ide_diagnostic_get_n_ranges (diagnostic);
+  if (n_ranges == 0)
     {
-      GtkTextIter begin_iter;
-      GtkTextIter end_iter;
+      if ((location = ide_diagnostic_get_location (diagnostic)))
+        {
+          GtkTextIter begin_iter;
+          GtkTextIter end_iter;
 
-      ide_buffer_get_iter_at_location (self, &begin_iter, location);
-      end_iter = begin_iter;
+          ide_buffer_get_iter_at_location (self, &begin_iter, location);
+          end_iter = begin_iter;
 
-      if (gtk_text_iter_ends_line (&end_iter))
-        {
-          gtk_text_iter_backward_char (&begin_iter);
-        }
-      else
-        {
-          /* Only highlight to next word */
-          if (_ide_source_iter_inside_word (&end_iter) ||
-              _ide_source_iter_starts_word (&end_iter))
-            _ide_source_iter_forward_visible_word_end (&end_iter);
+          if (gtk_text_iter_ends_line (&end_iter))
+            {
+              gtk_text_iter_backward_char (&begin_iter);
+            }
           else
-            gtk_text_iter_forward_to_line_end (&end_iter);
-        }
+            {
+              /* Only highlight to next word */
+              if (_ide_source_iter_inside_word (&end_iter) ||
+                  _ide_source_iter_starts_word (&end_iter))
+                _ide_source_iter_forward_visible_word_end (&end_iter);
+              else
+                gtk_text_iter_forward_to_line_end (&end_iter);
+            }
 
-      gtk_text_buffer_apply_tag_by_name (GTK_TEXT_BUFFER (self), tag_name, &begin_iter, &end_iter);
+          gtk_text_buffer_apply_tag_by_name (GTK_TEXT_BUFFER (self), tag_name, &begin_iter, &end_iter);
+        }
     }
 
-  n_ranges = ide_diagnostic_get_n_ranges (diagnostic);
-
   for (guint i = 0; i < n_ranges; i++)
     {
       GtkTextIter begin_iter;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]