MCPcopy Create free account
hub / github.com/OpenEndedGroup/Field2 / updateArgHints

Function updateArgHints

lib/web/CodeMirror/addon/tern/tern.js:277–317  ·  view source on GitHub ↗
(ts, cm)

Source from the content-addressed store, hash-verified

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

Callers 1

tern.jsFile · 0.85

Calls 9

closeArgHintsFunction · 0.85
showArgHintsFunction · 0.85
parseFnTypeFunction · 0.85
somethingSelectedMethod · 0.80
indexOfMethod · 0.80
getLineMethod · 0.65
PosFunction · 0.50
maxMethod · 0.45
testMethod · 0.45

Tested by

no test coverage detected