fix #7968 - language server support for syntax check and completion
[roobuilder] / src / Builder4 / GtkView.bjs
index 3e9a975..5d63044 100644 (file)
             "}",
             ""
            ],
-           "| void highlightErrorsJson" : [
-            " (string type, Json.Object obj) {",
-            "      Gtk.TextIter start;",
-            "     Gtk.TextIter end;   ",
-            "     ",
-            "     var buf =  this.el.get_buffer();",
-            "       var sbuf = (GtkSource.Buffer)buf;",
-            "        buf.get_bounds (out start, out end);",
-            "        ",
-            "        sbuf.remove_source_marks (start, end, type);",
-            "                 ",
-            "     ",
-            "     // we should highlight other types of errors..",
-            "    ",
-            "    if (!obj.has_member(type)) {",
-            "        GLib.debug(\"Return has no errors\\n\");",
-            "        return  ;",
-            "    }",
-            "    var err = obj.get_object_member(type);",
-            "    ",
-            "    if (_this.file == null) { ",
-            "\t",
-            "        return; // just in case the file has not loaded yet?",
-            "    }",
-            " ",
-            "",
-            "    var valafn = \"\";",
-            "      try {             ",
-            "           var  regex = new Regex(\"\\\\.bjs$\");",
-            "        ",
-            "         ",
-            "            valafn = regex.replace(_this.file.path,_this.file.path.length , 0 , \".vala\");",
-            "         } catch (GLib.RegexError e) {",
-            "            return;",
-            "        }   ",
-            "",
-            "   if (!err.has_member(valafn)) {",
-            "        GLib.debug(\"File path has no errors\\n\");",
-            "        return  ;",
-            "    }",
-            "    var lines = err.get_object_member(valafn);",
-            "    ",
-            "   ",
-            "    ",
-            "    var tlines = buf.get_line_count () +1;",
-            "    ",
-            "    lines.foreach_member((obj, line, node) => {",
-            "        ",
-            "             Gtk.TextIter iter;",
-            "    //        print(\"get inter\\n\");",
-            "            var eline = int.parse(line) -1  ;",
-            "            GLib.debug(\"GOT ERROR on line %s -- converted to %d\\n\", line,eline);",
-            "            ",
-            "            ",
-            "            if (eline > tlines || eline < 0) {",
-            "                return;",
-            "            }",
-            "            sbuf.get_iter_at_line( out iter, eline);",
-            "            //print(\"mark line\\n\");",
-            "            var msg  = type + \" on line: %d - %s\".printf(eline+1, valafn);",
-            "            var ar = lines.get_array_member(line);",
-            "            for (var i = 0 ; i < ar.get_length(); i++) {",
-            "\t\t    msg += (msg.length > 0) ? \"\\n\" : \"\";",
-            "\t\t    msg += ar.get_string_element(i);",
-            "\t    }",
-            "            ",
-            "            ",
-            "            sbuf.create_source_mark(msg, type, iter);",
-            "        } );",
-            "        return  ;",
-            "    ",
-            " ",
-            "",
-            "",
-            "}"
-           ],
            "| void loadFile" : [
             "( ) {",
             "    this.loading = true;",
             "    ",
             "    ((GtkSource.Buffer)(buf)) .set_language(lm.get_language(_this.file.language));",
             "  ",
-            "    ",
-            "    Gtk.TextIter start;",
-            "    Gtk.TextIter end;     ",
-            "        ",
-            "    sbuf.get_bounds (out start, out end);",
-            "    sbuf.remove_source_marks (start, end, null); // remove all marks..",
-            "    ",
-            "    ",
-            "    if (_this.main_window.windowstate.last_compile_result != null) {",
-            "        var obj = _this.main_window.windowstate.last_compile_result;",
-            "        this.highlightErrorsJson(\"ERR\", obj);",
-            "        this.highlightErrorsJson(\"WARN\", obj);",
-            "        this.highlightErrorsJson(\"DEPR\", obj);\t\t\t",
-            "    }",
-            "    // while (Gtk.events_pending()) {",
-            "     //   Gtk.main_iteration();",
-            "   // }",
+            "     ",
+            "   _this.main_window.windowstate.updateErrorMarksAll(); ",
+            "   ",
+            "  ",
             "    ",
             "    this.loading = false; ",
             "}",
     "   ",
     "}",
     ""
+   ],
+   "| void updateErrorMarks" : [
+    "(string category) {",
+    "\t",
+    " ",
+    "",
+    "\tvar buf = _this.buffer.el;",
+    "\tGtk.TextIter start;",
+    "\tGtk.TextIter end;     ",
+    "\tbuf.get_bounds (out start, out end);",
+    "",
+    "\tbuf.remove_source_marks (start, end, category);",
+    " ",
+    "\tGLib.debug(\"highlight errors\");\t\t ",
+    "",
+    "\t // we should highlight other types of errors..",
+    "",
+    " ",
+    "",
+    "\t ",
+    "\tif (_this.file == null) {",
+    "\t\tGLib.debug(\"file is null?\");",
+    "\t\treturn;",
+    "",
+    "\t}",
+    "\tvar ar = this.file.getErrors(category);",
+    "\tif (ar == null || ar.get_n_items() < 1) {",
+    "\t\tGLib.debug(\"higjlight %s has no errors\", category);",
+    "\t\treturn;",
+    "\t}",
+    " ",
+    "",
+    " ",
+    "\t",
+    "\tvar offset = 0;",
+    "\t ",
+    "",
+    "\tvar tlines = buf.get_line_count () +1;",
+    "\t",
+    " ",
+    "\t ",
+    "\tfor (var i = 0; i < ar.get_n_items();i++) {",
+    "\t\tvar err = (Palete.CompileError) ar.get_item(i);",
+    "\t\t",
+    "\t     Gtk.TextIter iter;",
+    "//        print(\"get inter\\n\");",
+    "\t    var eline = err.line - offset;",
+    "\t    GLib.debug(\"GOT ERROR on line %d -- converted to %d  (offset = %d)\",",
+    "\t    \terr.line ,eline, offset);",
+    "\t    ",
+    "\t    ",
+    "\t    if (eline > tlines || eline < 0) {",
+    "\t        return;",
+    "\t    }",
+    "\t   ",
+    "\t    ",
+    "\t    buf.get_iter_at_line( out iter, eline);",
+    "\t   ",
+    "\t   ",
+    "\t\tvar msg = \"Line: %d %s : %s\".printf(eline+1, err.category, err.msg);",
+    "\t    buf.create_source_mark( msg, err.category, iter);",
+    "\t    GLib.debug(\"set line %d to %s\", eline, msg);",
+    "\t    //this.marks.set(eline, msg);",
+    "\t}",
+    "\treturn ;",
+    "",
+    "",
+    "",
+    " ",
+    "",
+    "}"
    ]
   }
  ],