src/Builder4/GtkView.bjs
authorAlan Knowles <alan@roojs.com>
Mon, 29 Jan 2024 09:25:23 +0000 (17:25 +0800)
committerAlan Knowles <alan@roojs.com>
Mon, 29 Jan 2024 09:25:23 +0000 (17:25 +0800)
src/Builder4/GtkView.vala

src/Builder4/GtkView.bjs
src/Builder4/GtkView.vala

index af46adb..af56f97 100644 (file)
     "\t}",
     "\tvar ar = this.file.getErrors();",
     "\tif (ar.size < 1) {",
+    "\t\tbuf.remove_tag_by_name (\"ERR\", start, end);",
+    "\t\tbuf.remove_tag_by_name (\"WARN\", start, end);",
+    "\t\tbuf.remove_tag_by_name (\"DEPR\", start, end);",
     "\t\tbuf.remove_source_marks (start, end, null);",
     "\t\tthis.last_error_counter = file.error_counter ;",
     "\t\tGLib.debug(\"higjlight has no errors\");",
     " ",
     "\t ",
     "\tbuf.remove_source_marks (start, end, null);",
+    "\tbuf.remove_tag_by_name (\"ERR\", start, end);",
+    "\tbuf.remove_tag_by_name (\"WARN\", start, end);",
+    "\tbuf.remove_tag_by_name (\"DEPR\", start, end);",
     "\tforeach(var diag in ar) { ",
     "\t",
     "\t\t",
     "\t     Gtk.TextIter iter;",
     "//        print(\"get inter\\n\");",
     "\t    var eline = (int)diag.range.start.line ;",
-    "\t    ",
+    "\t    var eline_to = (int)diag.range.end.line;",
     "\t    if (eline > tlines || eline < 0) {",
     "\t        return;",
     "\t    }",
     "\t    ",
     "\t    buf.get_iter_at_line( out iter, eline);",
     "\t   ",
+    "\t  \t buf.get_iter_at_line_offset( out start, ",
+    " \t    \teline, (int)diag.range.start.character); ",
+    " \t    buf.get_iter_at_line_offset( out end, ",
+    " \t    \teline_to, (int)diag.range.end.character); ",
+    " \t    \t",
+    "\t    buf.apply_tag_by_name(diag.category, start, end);",
     "\t   ",
     "\t   ",
     "\t\tvar msg = \"Line: %d %s : %s\".printf(eline+1, diag.category, diag.message);",
index a6203f8..b8600e3 100644 (file)
@@ -345,6 +345,9 @@ public class Xcls_GtkView : Object
                }
                var ar = this.file.getErrors();
                if (ar.size < 1) {
+                       buf.remove_tag_by_name ("ERR", start, end);
+                       buf.remove_tag_by_name ("WARN", start, end);
+                       buf.remove_tag_by_name ("DEPR", start, end);
                        buf.remove_source_marks (start, end, null);
                        this.last_error_counter = file.error_counter ;
                        GLib.debug("higjlight has no errors");
@@ -363,13 +366,16 @@ public class Xcls_GtkView : Object
         
                 
                buf.remove_source_marks (start, end, null);
+               buf.remove_tag_by_name ("ERR", start, end);
+               buf.remove_tag_by_name ("WARN", start, end);
+               buf.remove_tag_by_name ("DEPR", start, end);
                foreach(var diag in ar) { 
                
                        
                     Gtk.TextIter iter;
        //        print("get inter\n");
                    var eline = (int)diag.range.start.line ;
-                   
+                   var eline_to = (int)diag.range.end.line;
                    if (eline > tlines || eline < 0) {
                        return;
                    }
@@ -377,6 +383,12 @@ public class Xcls_GtkView : Object
                    
                    buf.get_iter_at_line( out iter, eline);
                   
+                        buf.get_iter_at_line_offset( out start, 
+                       eline, (int)diag.range.start.character); 
+                   buf.get_iter_at_line_offset( out end, 
+                       eline_to, (int)diag.range.end.character); 
+                       
+                   buf.apply_tag_by_name(diag.category, start, end);
                   
                   
                        var msg = "Line: %d %s : %s".printf(eline+1, diag.category, diag.message);