src/Builder4/Editor.bjs
authorAlan Knowles <alan@roojs.com>
Tue, 26 Mar 2024 15:21:08 +0000 (23:21 +0800)
committerAlan Knowles <alan@roojs.com>
Tue, 26 Mar 2024 15:21:08 +0000 (23:21 +0800)
src/Builder4/Editor.vala

src/Builder4/Editor.bjs
src/Builder4/Editor.vala

index 45ff4c8..3d5f6d4 100644 (file)
               " "
              ],
              "| void showHelp" : [
-              "() {",
-              "",
+              "(Gtk.TextIter iter) {",
+              "\tvar back = iter.copy();",
+              "\tback.backward_char();",
+              "\t",
+              "\tvar forward = iter.copy();",
+              "\tforward.forward_char();",
+              "\t",
+              "\t// what's the character at the iter?",
+              "\tvar str = back.get_text(iter);",
+              "\tstr += iter.get_text(forward);",
+              "\tif (str.strip().length < 1) {",
+              "\t\treturn;",
+              "\t}",
+              "\tvar offset = iter.get_line_offset();",
+              "\tvar line = iter.get_line();",
+              "\tif (_this.prop != null) {",
+              "\t\t\t\t// ",
+              "\t\tline += _this.prop.start_line ; ",
+              "\t\t\t\t\t// this is based on Gtk using tabs (hence 1/2 chars);",
+              "\t\toffset += _this.node.node_pad.length;",
+              "\t\t\t\t\t// javascript listeners are indented 2 more spaces.",
+              "\t\tif (_this.prop.ptype == JsRender.NodePropType.LISTENER) {",
+              "\t\t\toffset += 2;",
+              "\t\t}",
+              "\t} ",
+              "\t",
+              "\tvar ls = _this.file.getLanguageServer();",
+              "\tls.hover.begin(",
+              "\t\t_this.file, line, offset,",
+              "\t\t( a, o)  => {",
+              "\t\t\tvar res = ls.hover.end(o );",
+              "\t\t\t_this.helper.setHelp(res);",
+              "\t\t});",
+              "}\t",
+              "\t\t ",
+              " ",
               "}"
              ]
             },
index 6210577..2669897 100644 (file)
@@ -1215,8 +1215,42 @@ public class Editor : Object
                    //print("TO STRING? " + ret);
                    return ret;
                }
-               public void showHelp () {
-               
+               public void showHelp (Gtk.TextIter iter) {
+                       var back = iter.copy();
+                       back.backward_char();
+                       
+                       var forward = iter.copy();
+                       forward.forward_char();
+                       
+                       // what's the character at the iter?
+                       var str = back.get_text(iter);
+                       str += iter.get_text(forward);
+                       if (str.strip().length < 1) {
+                               return;
+                       }
+                       var offset = iter.get_line_offset();
+                       var line = iter.get_line();
+                       if (_this.prop != null) {
+                                               // 
+                               line += _this.prop.start_line ; 
+                                                       // this is based on Gtk using tabs (hence 1/2 chars);
+                               offset += _this.node.node_pad.length;
+                                                       // javascript listeners are indented 2 more spaces.
+                               if (_this.prop.ptype == JsRender.NodePropType.LISTENER) {
+                                       offset += 2;
+                               }
+                       } 
+                       
+                       var ls = _this.file.getLanguageServer();
+                       ls.hover.begin(
+                               _this.file, line, offset,
+                               ( a, o)  => {
+                                       var res = ls.hover.end(o );
+                                       _this.helper.setHelp(res);
+                               });
+               }       
+                                
+                
                }
        }