如何指定要在 Ace 编辑器中自动完成的自定义标记列表?

How to specify a list of custom tokens to list for autocompletion in Ace Editor?

使用 Ace Editor, I have it working with react-ace 完成自动完成设置后。但是,我需要在内置自动完成列表中提供一些自定义标记。

react-ace 的存储库将这些属性定义为

enableBasicAutocompletion: PropTypes.oneOfType([PropTypes.bool, PropTypes.array]),
enableLiveAutocompletion: PropTypes.oneOfType([PropTypes.bool, PropTypes.array]),

但这 array 是什么?

我已经尝试设置 enableBasicAutocompletion={ ['custom'] }enableBasicAutocompletion={ [ (...args) => console.log(args) ] },但都失败了,并出现关于 getCompletions not a function 的错误。

如何将这些自定义自动完成关键字添加到列表中?

<AceEditor
    name={ this.uniqueName }
    mode="javascript"
    theme="github"
    onChange={ onChange }
    enableBasicAutocompletion
    enableLiveAutocompletion
/>

使用editor.completers数组来添加一个新的补全returns你想要的补全

editor.completers.push({
    getCompletions: function(editor, session, pos, prefix, callback) {
        var completions = [];
        // we can use session and pos here to decide what we are going to show
        ["word1", "word2"].forEach(function(w) {

            completions.push({
                value: w,
                meta: "my completion",

            });
        });
        callback(null, completions);
    }
})

只需导入这个!

import "ace-builds/src-noconflict/ext-language_tools"

并在你的渲染函数中写入这段代码

<AceEditor
    mode="java"
    theme="github"
    onChange={onChange}
    name="UNIQUE_ID_OF_DIV"
    editorProps={{ $blockScrolling: true }}
    setOptions={{
      enableBasicAutocompletion: true,
      enableLiveAutocompletion: true,
      enableSnippets: true
    }}