fix #7968 - language server support for syntax check and completion
[roobuilder] / src / Builder4 / Editor.bjs
index 492bdd8..038d0a7 100644 (file)
@@ -1,6 +1,5 @@
 {
  "build_module" : "builder",
- "gen_extended" : false,
  "items" : [
   {
    "# GtkSource.SearchContext searchcontext" : "null",
         "\t",
         " ",
         "\t ",
-        "",
-        "       ",
-        "this.el.completion.add_provider(new Palete.CompletionProvider(_this));",
+        "/*",
+        "this is pretty flakey - triggers Gtk with  < 0 d",
+        " var cp = new GtkSource.CompletionWords(\"test\"); ",
+        " cp.minimum_word_size  = 3;",
+        " //cp.priority = 100; //?? does this do anything",
+        " cp.proposals_batch_size  = 10;",
+        " cp.scan_batch_size = 1000;",
         " ",
-        "",
-        "this.el.completion.unblock_interactive();",
+        "cp.register(_this.buffer.el);",
+        "this.el.completion.add_provider(cp);",
+        "*/",
+        "this.el.completion.add_provider(new Palete.CompletionProvider(_this));",
+        "  ",
+        "//this.el.completion.unblock_interactive();",
         "this.el.completion.select_on_show = true; // select",
-        "",
-        "this.el.completion.remember_info_visibility\t = true;",
+        "//this.el.completion.remember_info_visibility\t = true;",
         "",
         "",
         "var attrs = new GtkSource.MarkAttributes();",
           "    }",
           "    ",
           "    // bit presumptiona",
-          "    if (_this.file.xtype == \"PlainFile\" && _this.file.project.xtype == \"Gtk\") {",
+          "    if (_this.file.xtype == \"PlainFile\") {",
           "    ",
           "        // assume it's gtk...",
-          "           ",
-          "\t\tBuilderApplication.valacompilequeue.addFile( ",
-          "\t\t\tPalete.ValaCompileRequestType.FILE_CHANGE, ",
-          "\t\t\t_this.file , str, false) ;",
-          "  ",
-          "",
+          "         var  oldcode =_this.file.toSource();",
+          "        _this.file.setSource(str);",
+          "        _this.file.getLanguageServer().document_change(_this.file);",
+          "        _this.file.setSource(oldcode);",
+          "        ",
+          "\t\t ",
           "        return true;",
           "    ",
           "    }",
           "     ",
           "    GLib.debug(\"calling validate\");    ",
           "    // clear the buttons.",
-          " ",
-          "    BuilderApplication.valacompilequeue.addProp( ",
-          "    \t\tPalete.ValaCompileRequestType.PROP_CHANGE,",
-          "\t\t\t_this.file,",
-          "\t\t\t_this.node,",
-          "\t\t\t_this.prop,",
-          "\t\t\tstr); ",
-          "     ",
+          " \tif (_this.prop.name == \"xns\" || _this.prop.name == \"xtype\") {",
+          "\t\treturn true ;",
+          "\t}",
+          "\tvar oldcode  = _this.prop.val;",
+          "\t",
+          "\t_this.prop.val = str;",
+          "    _this.file.getLanguageServer().document_change(_this.file);",
+          "    _this.prop.val = oldcode;",
           "    ",
           "    ",
           "    //print(\"done mark line\\n\");",
            "\t\t_this.search_entry.el.grab_focus();",
            "\t    return;",
            "\t}",
-           "    ",
+           "    //_this.view.el.show_completion();",
            "   // print(event.key.keyval)",
            "    ",
            "    return;",
     "}"
    ],
    "| void updateErrorMarks" : [
-    "(GLib.ListStore?  ar) {",
+    "(string category) {",
     "\t",
     " ",
-    "\t",
-    "\t var buf = _this.buffer.el;",
+    "",
+    "\tvar buf = _this.buffer.el;",
     "\tGtk.TextIter start;",
     "\tGtk.TextIter end;     ",
     "\tbuf.get_bounds (out start, out end);",
     "",
-    "\tbuf.remove_source_marks (start, end, \"ERR\");",
-    "\tbuf.remove_source_marks (start, end, \"WARN\");",
-    "\tbuf.remove_source_marks (start, end, \"DEPR\");",
+    "\tbuf.remove_source_marks (start, end, category);",
+    " ",
     "\tGLib.debug(\"highlight errors\");\t\t ",
     "",
     "\t // we should highlight other types of errors..",
     "",
-    "\tif (ar == null || ar.get_n_items() < 1) {",
-    "\t\tGLib.debug(\"Return has no errors\\n\");",
-    "\t\treturn;",
-    "\t}",
-    "",
     "\tif (_this.window.windowstate.state != WindowState.State.CODEONLY ",
     "\t\t&&",
     "\t\t_this.window.windowstate.state != WindowState.State.CODE",
     "\t\treturn;",
     "",
     "\t}",
+    "\tvar ar = this.file.getErrors(category);",
+    "\tif (ar == null || ar.get_n_items() < 1) {",
+    "\t\tGLib.debug(\"highlight %s :  %s has no errors\", this.file.relpath, category);",
+    "\t\treturn;",
+    "\t}",
     " ",
     "",
     " ",
     "\t",
-    "\tvar offset = 1;",
+    "\tvar offset = 0;",
     "\t ",
     "",
     "\tvar tlines = buf.get_line_count () +1;",
     "\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 %m\", eline, msg);",
-    "\t   // this.marks.set(eline, msg);",
+    "\t    GLib.debug(\"set line %d to %s\", eline, msg);",
+    "\t    //this.marks.set(eline, msg);",
     "\t}",
     "\treturn ;",
     "",
    ]
   }
  ],
- "name" : "Editor"
+ "modOrder" : "",
+ "name" : "Editor",
+ "parent" : "",
+ "path" : "/home/alan/gitlive/roobuilder/src/Builder4/Editor.bjs",
+ "permname" : "",
+ "title" : ""
 }
\ No newline at end of file