0

在使用Ace Editor设置自动完成后,我让它与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
/>
4

2 回答 2

4

使用 editor.completers 数组添加一个新的完成者,返回你想要的完成

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);
    }
})
于 2018-12-05T22:44:08.927 回答
2

只导入这个!

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
    }}
于 2020-07-29T15:38:14.613 回答