如何使自动完成替换整行而不是当前关键字?
How to make autocompletion replace the entire line instead of the current keyword?
在 Ace 编辑器中,我有一个这样的自定义完成器:
var customCompleter = {
getCompletions: function (editor, session, pos, prefix, callback) {
callback(null, [
{
value: 'foo.bar', score: 1, meta: 'History'
}
])
}
}
当我输入 foo
时,它会提示 foo.bar
并将 foo
替换为 foo.bar
。但是当我输入 foo.b
时,它会将 foo.b
替换为 foo.foo.bar
而不是 foo.bar
.
如何让 Ace 自动完成替换整行而不是当前关键字?
您可以在自定义自动完成的 insertMatch 中使用 ace 函数 jumpToMatching 将光标移动到单词的起始位置,然后然后使用 replace 添加自动完成的单词。
var customCompleter = {
getCompletions: function (editor, session, pos, prefix, callback) {
callback(null, [
{
value: 'foo.bar', score: 1, meta: 'History',
completer: {
insertMatch: function (insertEditor, data) {
var insertValue = data.value;
var lastPositon = editor.selection.getCursor();
insertEditor.jumpToMatching();
var startPosition = editor.selection.getCursor();
insertEditor.session.replace({
start: { row: startPosition.row, column: startPosition.column },
end: { row: lastPositon.row, column: lastPositon.column }
}, "");
}
}
])
}
}
此处 startPosition 是单词的起始位置,lastPositon 是您希望替换单词的位置。
在 Ace 编辑器中,我有一个这样的自定义完成器:
var customCompleter = {
getCompletions: function (editor, session, pos, prefix, callback) {
callback(null, [
{
value: 'foo.bar', score: 1, meta: 'History'
}
])
}
}
当我输入 foo
时,它会提示 foo.bar
并将 foo
替换为 foo.bar
。但是当我输入 foo.b
时,它会将 foo.b
替换为 foo.foo.bar
而不是 foo.bar
.
如何让 Ace 自动完成替换整行而不是当前关键字?
您可以在自定义自动完成的 insertMatch 中使用 ace 函数 jumpToMatching 将光标移动到单词的起始位置,然后然后使用 replace 添加自动完成的单词。
var customCompleter = {
getCompletions: function (editor, session, pos, prefix, callback) {
callback(null, [
{
value: 'foo.bar', score: 1, meta: 'History',
completer: {
insertMatch: function (insertEditor, data) {
var insertValue = data.value;
var lastPositon = editor.selection.getCursor();
insertEditor.jumpToMatching();
var startPosition = editor.selection.getCursor();
insertEditor.session.replace({
start: { row: startPosition.row, column: startPosition.column },
end: { row: lastPositon.row, column: lastPositon.column }
}, "");
}
}
])
}
}
此处 startPosition 是单词的起始位置,lastPositon 是您希望替换单词的位置。