MCPcopy Create free account
hub / github.com/TruthHun/BookStack / updateArgHints

Function updateArgHints

static/editor.md/lib/codemirror/addon/tern/tern.js:274–314  ·  view source on GitHub ↗
(ts, cm)

Source from the content-addressed store, hash-verified

272 // Maintaining argument hints
273
274 function updateArgHints(ts, cm) {
275 closeArgHints(ts);
276
277 if (cm.somethingSelected()) return;
278 var state = cm.getTokenAt(cm.getCursor()).state;
279 var inner = CodeMirror.innerMode(cm.getMode(), state);
280 if (inner.mode.name != "javascript") return;
281 var lex = inner.state.lexical;
282 if (lex.info != "call") return;
283
284 var ch, argPos = lex.pos || 0, tabSize = cm.getOption("tabSize");
285 for (var line = cm.getCursor().line, e = Math.max(0, line - 9), found = false; line >= e; --line) {
286 var str = cm.getLine(line), extra = 0;
287 for (var pos = 0;;) {
288 var tab = str.indexOf("\t", pos);
289 if (tab == -1) break;
290 extra += tabSize - (tab + extra) % tabSize - 1;
291 pos = tab + 1;
292 }
293 ch = lex.column - extra;
294 if (str.charAt(ch) == "(") {found = true; break;}
295 }
296 if (!found) return;
297
298 var start = Pos(line, ch);
299 var cache = ts.cachedArgHints;
300 if (cache && cache.doc == cm.getDoc() && cmpPos(start, cache.start) == 0)
301 return showArgHints(ts, cm, argPos);
302
303 ts.request(cm, {type: "type", preferFunction: true, end: start}, function(error, data) {
304 if (error || !data.type || !(/^fn\(/).test(data.type)) return;
305 ts.cachedArgHints = {
306 start: pos,
307 type: parseFnType(data.type),
308 name: data.exprName || data.name || "fn",
309 guess: data.guess,
310 doc: cm.getDoc()
311 };
312 showArgHints(ts, cm, argPos);
313 });
314 }
315
316 function showArgHints(ts, cm, pos) {
317 closeArgHints(ts);

Callers 1

tern.jsFile · 0.85

Calls 3

closeArgHintsFunction · 0.85
showArgHintsFunction · 0.85
parseFnTypeFunction · 0.85

Tested by

no test coverage detected