我正在尝试在 ace 编辑器中添加 php 自定义片段,但自定义片段在编辑器中不可用

I'm trying to add php custom snippet in ace editor, but the custom snippets are not available in the editor

我正在尝试在 ace 编辑器中添加 php 自定义代码段。我在 "ace-master/lib/ace/snippets/php.snippets" 中添加了以下代码片段,然后使用 "node Makefile.dryice.js" 构建项目。

snippet rett
    return true;
snippet retf
    return false;
snippet test_snippet
    echo "This is a test snippet";

构建项目后,自定义代码段已正确添加到 "ace-master/build/src/snippets/php.js" 中,如下所示

snippet rett\n\
    return true;\n\
snippet retf\n\
    return false;\n\
snippet test_snippet\n\
    echo \"This is a test snippet\";";

但是,自定义代码段在编辑器中不可用。虽然其他片段工作得很好。 我试过清除浏览器缓存、重新启动 Apache、重新加载编辑器等

一个可能的问题是您使用空格而不是制表符进行缩进。 另一个问题可能是由 ace 中的一个错误引起的,当它把整行当作 html 时,如果它在行尾是 html,并且不包括 php 片段那条线。

但通常更好的方法是在代码中添加片段而不是重新构建 ace

var snippetManager = require("ace/snippets").snippetManager
var text = 'snippet rett\n\
\treturn true;\n\
snippet retf\n\
\treturn false;\n\
snippet test_snippet\n\
\techo \"This is a test snippet\";";'
var snippets = snippetManager.parseSnippetFile(text, "php");
snippetManager.register(snippets, "php");

甚至直接添加片段 json

snippetManager.register([
    {
        "tabTrigger": "rett",
        "name": "rett",
        "content": "return true;"
    },
    {
        "tabTrigger": "retf",
        "name": "retf",
        "content": "return false;"
    },
    {
        "tabTrigger": "test_snippet",
        "name": "test_snippet",
        "content": "echo \"This is a test snippet\";\";"
    }
], "php")