Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何控制Ace编辑器自动完成器写入文件的内容_Javascript_Reactjs_Autocomplete_Ace Editor - Fatal编程技术网

Javascript 如何控制Ace编辑器自动完成器写入文件的内容

Javascript 如何控制Ace编辑器自动完成器写入文件的内容,javascript,reactjs,autocomplete,ace-editor,Javascript,Reactjs,Autocomplete,Ace Editor,我使用react ace编辑器允许用户在网站上输入Scala代码。我还为它定义了一个自动补全器。现在,当用户接受自动完成程序对某个函数的建议时,自动完成程序会将整个函数签名粘贴到文件中,用函数的参数名替换参数,这对用户来说既没有帮助也很烦人 我希望autocompleter可以执行以下操作:当用户接受函数的建议时,只需粘贴函数名和一个开括号。然后,自动完成程序应向用户显示函数参数的列表,包括它们的名称和类型,即param1:type1,param2:type2,…,但如果用户点击enter键,则

我使用react ace编辑器允许用户在网站上输入Scala代码。我还为它定义了一个自动补全器。现在,当用户接受自动完成程序对某个函数的建议时,自动完成程序会将整个函数签名粘贴到文件中,用函数的参数名替换参数,这对用户来说既没有帮助也很烦人

我希望autocompleter可以执行以下操作:当用户接受函数的建议时,只需粘贴函数名和一个开括号。然后,自动完成程序应向用户显示函数参数的列表,包括它们的名称和类型,即param1:type1,param2:type2,…,但如果用户点击enter键,则不应将它们粘贴进去。作为扩展目标,我希望将用户当前正在键入的参数的位置参数加粗。我想要的行为是受IDE的启发,比如IntelliJ或VisualStudio就是这样做的


在react ace编辑器中是否有类似操作的方法?

ace自动完成程序项可以具有值片段和标题属性。标题是弹出窗口中要显示的内容,值是用户按enter键时要插入的内容。snippet是value的替代品,value是textmate样式的代码段,允许在选择文本后指定光标的位置

在这种情况下,您可以返回如下项

{value: "funcName", caption: "funcName(x, y, z)"}

甚至是代码段:funcName${1:paramName1},${2:paramName2}$0,以允许用户通过参数进行制表

如果希望它们显示为文字$and\,请确保在代码段中返回\$和\\


至于显示参数类型而不是插入它们的第二部分,它不是由自动完成器完成的,而是由工具提示完成的,而工具提示尚未内置到ace中。以下是它在cloud9 ide中的实现方式

关于您的最后一点,我是否可以通过将值设置为空字符串来模拟所需的行为?弹出窗口的打开方式和键绑定方式完全不同,因此即使您可以这样做,它也无法正常工作
{snippet: "funcName($0)", caption: "funcName(x, y, z)"}