繁体   English   中英

ACE 编辑器自动完成以在 `.` 上打开

[英]ACE Editor Autocomplete to open on `.`

如果启用实时自动完成,工具提示会在您键入内容时打开。 但是,它永远不会在按下时打开. 直到你输入别的东西。

因此,如果我输入fo ,将会出现一个工具提示,试图将fo与某些东西( forfunction等)相匹配。 但是,如果键入fo. 然后工具提示消失,直到我再输入一个字母它才会打开。

我有自定义自动完成键,我真的希望工具提示能够打开我的所有建议。

假设我将user作为特殊键,将name, age, profile作为建议。 我希望能够输入event. 以及显示name, age, profile的工具提示。 现在,我必须输入event.n ,例如,让name显示为建议。

在编辑器初始化期间使用这段代码来显示工具提示以打开所有建议

editor.commands.on("afterExec", function (e) {
    if (e.command.name == "insertstring" && /^[\w.]$/.test(e.args)) {
        editor.execCommand("startAutocomplete");
    }
});

这对我来说对特殊字符有用(我需要在'.'和'{'上自动完成。出于某种原因它不适用于'$':

@ViewChild('editor') public aceEditor: AceEditorComponent;
let editor = this.aceEditor.getEditor();
// create your completers
this.langTools.setCompleters(completers);
// trigger typeahead
editor.completer.showPopup(editor);

最终找到了一个简单的解决方案:

const doLiveAutocomplete = editor => {
  editor.insert('.');
  editor.execCommand('startAutocomplete');
};

enableLiveAutocompletion与自定义命令一起使用{ bindKey: { win: '.', mac: '.' }, exec: doLiveAutocomplete } { bindKey: { win: '.', mac: '.' }, exec: doLiveAutocomplete }

使用 react-ace 很简单:

<AceEditor
  {...props}
  enableLiveAutocompletion
  commands={[{ bindKey: { win: '.', mac: '.' }, exec: doLiveAutocomplete }]} />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM