in public/src/autocomplete.js [242:311]
function getAutoCompleteType(pos) {
// return "method", "path" or "body" to determine auto complete type.
var rowMode = editor.parser.getRowParseMode(pos.row);
//noinspection JSBitwiseOperatorUsage
if (rowMode & editor.parser.MODE.IN_REQUEST) {
return "body";
}
//noinspection JSBitwiseOperatorUsage
if (rowMode & editor.parser.MODE.REQUEST_START) {
// on url path, url params or method.
var tokenIter = editor.iterForPosition(pos.row, pos.column);
var t = tokenIter.getCurrentToken();
while (t.type == "url.comma") {
t = tokenIter.stepBackward();
}
switch (t.type) {
case "method":
return "method";
case "whitespace":
t = editor.parser.prevNonEmptyToken(tokenIter);
switch ((t || {}).type) {
case "method":
// we moved one back
return "path";
break;
default:
if (isUrlPathToken(t)) {
return "path";
}
if (isUrlParamsToken(t)) {
return "url_params";
}
return null;
}
break;
default:
if (isUrlPathToken(t)) {
return "path";
}
if (isUrlParamsToken(t)) {
return "url_params";
}
return null;
}
}
// after start to avoid single line url only requests
//noinspection JSBitwiseOperatorUsage
if (rowMode & editor.parser.MODE.REQUEST_END) {
return "body"
}
// in between request on an empty
if ((editor.getSession().getLine(pos.row) || "").trim() === "") {
// check if the previous line is a single line begging of a new request
rowMode = editor.parser.getRowParseMode(pos.row - 1);
//noinspection JSBitwiseOperatorUsage
if ((rowMode & editor.parser.MODE.REQUEST_START) && (rowMode & editor.parser.MODE.REQUEST_END)) {
return "body";
}
//o.w suggest a method
return "method";
}
return null;
}