src/Builder4/ValaCompileErrors.bjs
authorAlan Knowles <alan@roojs.com>
Sun, 17 May 2015 11:21:48 +0000 (19:21 +0800)
committerAlan Knowles <alan@roojs.com>
Sun, 17 May 2015 11:21:48 +0000 (19:21 +0800)
src/Builder4/ValaCompileErrors.vala

src/Builder4/ValaCompileErrors.bjs
src/Builder4/ValaCompileErrors.vala

index 079942e..f37faf1 100644 (file)
@@ -98,7 +98,7 @@
            "gboolean show_line_marks" : true,
            "id" : "sourceview",
            "* init" : "{\n    this.curfname = \"\";\n}\n",
-           "| void loadFile" : "(string fname, int line ) {\n\n    var buf = ((Gtk.SourceBuffer)(this.el.get_buffer()));\n    Gtk.TextIter start;\n    Gtk.TextIter end;     \n    buf.get_bounds (out start, out end);\n        \n    buf.remove_source_marks (start, end, null);\n         \n     \n    \n    string str;\n    FileUtils.get_contents(fname, out str);\n\t\t\t\n    buf.set_text(str, str.length);\n    var lm = Gtk.SourceLanguageManager.get_default();\n    \n   \n    buf.set_language(lm.get_language(\"vala\"));\n \n     \n    this.el.grab_focus();\n\n\n   \n    var lines = _this.notices.get_object_member(fname);\n     \n        \n    lines.foreach_member((obj, line, node) => {\n        \n             Gtk.TextIter iter;\n    //        print(\"get inter\\n\");\n            var eline = int.parse(line);\n             \n            \n            buf.get_iter_at_line( out iter, eline);\n            //print(\"mark line\\n\");\n            var msg  = \"Line: %d\".printf(eline+1);\n            var ar = lines.get_array_member(line);\n            for (var i = 0 ; i < ar.get_length(); i++) {\n\t\t    msg += (msg.length > 0) ? \"\\n\" : \"\";\n\t\t    msg += ar.get_string_element(i);\n\t    }\n            \n            \n            buf.create_source_mark(msg, \"error\", iter);\n        } );\n\n    \n\n\n}\n",
+           "| void loadFile" : "(string fname, int line ) {\n\n    if (this.curfname != fname) {\n        this.curfname = fname;\n\n        var buf = ((Gtk.SourceBuffer)(this.el.get_buffer()));\n        Gtk.TextIter start;\n        Gtk.TextIter end;     \n        buf.get_bounds (out start, out end);\n            \n        buf.remove_source_marks (start, end, null);\n             \n         \n        \n        string str;\n        FileUtils.get_contents(fname, out str);\n\t\t\t\n        buf.set_text(str, str.length);\n        var lm = Gtk.SourceLanguageManager.get_default();\n        \n       \n        buf.set_language(lm.get_language(\"vala\"));\n     \n         \n        this.el.grab_focus();\n\n\n       \n        var lines = _this.notices.get_object_member(fname);\n         \n            \n        lines.foreach_member((obj, line, node) => {\n            \n                 Gtk.TextIter iter;\n        //        print(\"get inter\\n\");\n                var eline = int.parse(line);\n                 \n                \n                buf.get_iter_at_line( out iter, eline);\n                //print(\"mark line\\n\");\n                var msg  = \"Line: %d\".printf(eline+1);\n                var ar = lines.get_array_member(line);\n                for (var i = 0 ; i < ar.get_length(); i++) {\n\t\t        msg += (msg.length > 0) ? \"\\n\" : \"\";\n\t\t        msg += ar.get_string_element(i);\n\t        }\n                \n                \n                buf.create_source_mark(msg, \"error\", iter);\n            } );\n    }\n    // jump to the line...\n        \n\n\n}\n",
            "* pack" : "add",
            "xtype" : "SourceView",
            "$ xns" : "Gtk",
index 76c97b4..a8e1297 100644 (file)
@@ -444,53 +444,57 @@ public class Xcls_ValaCompileErrors : Object
         // user defined functions 
         public void loadFile (string fname, int line ) {
         
-            var buf = ((Gtk.SourceBuffer)(this.el.get_buffer()));
-            Gtk.TextIter start;
-            Gtk.TextIter end;     
-            buf.get_bounds (out start, out end);
-                
-            buf.remove_source_marks (start, end, null);
+            if (this.curfname != fname) {
+                this.curfname = fname;
+        
+                var buf = ((Gtk.SourceBuffer)(this.el.get_buffer()));
+                Gtk.TextIter start;
+                Gtk.TextIter end;     
+                buf.get_bounds (out start, out end);
+                    
+                buf.remove_source_marks (start, end, null);
+                     
                  
-             
-            
-            string str;
-            FileUtils.get_contents(fname, out str);
+                
+                string str;
+                FileUtils.get_contents(fname, out str);
                                
-            buf.set_text(str, str.length);
-            var lm = Gtk.SourceLanguageManager.get_default();
-            
-           
-            buf.set_language(lm.get_language("vala"));
-         
+                buf.set_text(str, str.length);
+                var lm = Gtk.SourceLanguageManager.get_default();
+                
+               
+                buf.set_language(lm.get_language("vala"));
              
-            this.el.grab_focus();
+                 
+                this.el.grab_focus();
         
         
-           
-            var lines = _this.notices.get_object_member(fname);
-             
-                
-            lines.foreach_member((obj, line, node) => {
-                
-                     Gtk.TextIter iter;
-            //        print("get inter\n");
-                    var eline = int.parse(line);
-                     
-                    
-                    buf.get_iter_at_line( out iter, eline);
-                    //print("mark line\n");
-                    var msg  = "Line: %d".printf(eline+1);
-                    var ar = lines.get_array_member(line);
-                    for (var i = 0 ; i < ar.get_length(); i++) {
-                           msg += (msg.length > 0) ? "\n" : "";
-                           msg += ar.get_string_element(i);
-                   }
+               
+                var lines = _this.notices.get_object_member(fname);
+                 
                     
+                lines.foreach_member((obj, line, node) => {
                     
-                    buf.create_source_mark(msg, "error", iter);
-                } );
-        
-            
+                         Gtk.TextIter iter;
+                //        print("get inter\n");
+                        var eline = int.parse(line);
+                         
+                        
+                        buf.get_iter_at_line( out iter, eline);
+                        //print("mark line\n");
+                        var msg  = "Line: %d".printf(eline+1);
+                        var ar = lines.get_array_member(line);
+                        for (var i = 0 ; i < ar.get_length(); i++) {
+                               msg += (msg.length > 0) ? "\n" : "";
+                               msg += ar.get_string_element(i);
+                       }
+                        
+                        
+                        buf.create_source_mark(msg, "error", iter);
+                    } );
+            }
+            // jump to the line...
+                
         
         
         }