in public/src/autocomplete.js [313:393]
function addReplacementInfoToContext(context, pos, replacingTerm) {
// extract the initial value, rangeToReplace & textBoxPosition
// Scenarios for current token:
// - Nice token { "bla|"
// - Broken text token { bla|
// - No token : { |
// - Broken scenario { , bla|
// - Nice token, broken before: {, "bla"
var session = editor.getSession();
var insertingRelativeToToken;
context.updatedForToken = _.clone(session.getTokenAt(pos.row, pos.column));
if (!context.updatedForToken) {
context.updatedForToken = {value: "", start: pos.column};
} // empty line
var anchorToken = context.createdWithToken;
if (!anchorToken) {
anchorToken = context.updatedForToken;
}
switch (context.updatedForToken.type) {
case "variable":
case "string":
case "text":
case "constant.numeric":
case "constant.language.boolean":
case "method":
case "url.index":
case "url.type":
case "url.id":
case "url.method":
case "url.endpoint":
case "url.part":
case "url.param":
case "url.value":
insertingRelativeToToken = 0;
context.rangeToReplace = new AceRange(
pos.row, anchorToken.start, pos.row,
context.updatedForToken.start + context.updatedForToken.value.length
);
context.replacingToken = true;
break;
default:
if (replacingTerm && context.updatedForToken.value == replacingTerm) {
insertingRelativeToToken = 0;
context.rangeToReplace = new AceRange(
pos.row, anchorToken.start, pos.row,
context.updatedForToken.start + context.updatedForToken.value.length
);
context.replacingToken = true;
}
else {
// standing on white space, quotes or another punctuation - no replacing
context.rangeToReplace = new AceRange(
pos.row, pos.column, pos.row, pos.column
);
context.replacingToken = false;
}
break;
}
context.textBoxPosition = {row: context.rangeToReplace.start.row, column: context.rangeToReplace.start.column};
switch (context.autoCompleteType) {
case "path":
addPathPrefixSuffixToContext(context);
break;
case "url_params":
addUrlParamsPrefixSuffixToContext(context);
break;
case "method":
addMethodPrefixSuffixToContext(context);
break;
case "body":
addBodyPrefixSuffixToContext(context);
break;
}
}