in src/view/completion-view.js [50:78]
completeText(mirror, text) {
let cur = mirror.getCursor();
let token = mirror.getTokenAt(cur);
let from = {line: cur.line, ch: token.start};
let to = {line: cur.line, ch: token.end};
const currentSymbol = token.string.trim();
if ([".", "", "(", ":"].includes(currentSymbol)) {
mirror.replaceRange(text, to)
} else {
/*
Replace string with $ in string in case=>
val world = "world"
println("Hello $world)
Plain string => cursorInStringIndex = -1
completionText will be equals result.text
*/
let cursorInStringIndex = cur.ch - token.start;
let sentence$index = currentSymbol.substring(0, cursorInStringIndex).lastIndexOf('$');
let firstSentence = currentSymbol.substring(0, sentence$index + 1);
let completionText = firstSentence + text + currentSymbol.substring(cursorInStringIndex, token.string.length);
mirror.replaceRange(completionText, from, to);
mirror.setCursor(cur.line, token.start + sentence$index + this.completion.text.length + 1);
if (completionText.endsWith('(')) {
mirror.replaceRange(")", {line: cur.line, ch: token.start + this.completion.text.length});
mirror.execCommand("goCharLeft");
}
}
}