Ace编辑器手动添加代码段
Ace Editor manually adding snippets
TL;DR
我试图通过函数调用手动触发ace编辑器片段,而不是传统的方法(键盘键)。
解释
我需要一个函数,它将编辑器和一个代码片段字符串作为参数,并将该代码片段添加到编辑器中。CCD_ 1。
Ace编辑器支持TextMate风格的代码段。
if (${1:condition_name}) {
${2:body}
}
因此,当我们调用这个函数时,它应该添加代码段,突出显示代码段标记并选择第一个。在填充第一个并点击选项卡之后,编辑器应该移动到下一个代码段标记。就像Kitchen Sink的例子一样(但我想通过函数调用添加/触发片段)。
我试着破解并实现了这个功能。但它是混乱和不完整的(不支持标记和制表)。有本地方法吗?我看到了一些使用snippetManager
的例子,但它们使用键盘触发器,而不是手动功能。
如有任何有关此问题的帮助,我们将不胜感激。谢谢
经过数小时的破解和研究,我终于在ext-language_tools.js
中发现了snippetManager
的insertSnippet
函数,它是这样工作的:
var snippetManager = ace.require("ace/snippets").snippetManager;
snippetManager.insertSnippet(editor, snippet);
实际上很容易,由于缺乏文档,无法更早找到它。
如果您不使用RequireJS,那么以下语法也适用:
ace.config.loadModule('ace/ext/language_tools', function () {
editor.insertSnippet(snippetText);
});
使用ace.define(...)
添加代码段。这些片段是用tex-like
语言编写的。
- 对于
./src/lib/json-snippet.js
中定义的代码段:
// eslint-disable-next-line
const snippet = '# AddNode'n'
snippet addn'n'
{'n'
"nodeName": "${1:node_name}",'n'
"algorithmName": "${2:algo_name}",'n'
"input": []'n'
}'n'
';
export default snippet;
// import your snippet
import snippet from "../lib/json-snippet";
// SUPER HACK FOR ADDING SNIPPETS
ace.define("ace/snippets/json", ["require", "exports", "module"], (e, t, n) => {
// eslint-disable-next-line
(t.snippetText = snippet), (t.scope = "json");
});
使用
brace/mode/{filetype}
、function addSnippet(editor, snippet)
0来定义文件类型及其片段。在
node_module/brace/snippets/
中查找现有的代码段以进行覆盖。
import "brace/mode/json";
import "brace/snippets/json";
import "brace/ext/language_tools";
欲了解更多信息,请查看:
- Demo
- 此存储库
其他答案似乎有点陈旧或相当粗糙。这对我在v1.4.12上使用实际的Ace API起到了作用(尽管这似乎完全没有记录,令人沮丧)。
const snippetManager = ace.require('ace/snippets').snippetManager;
const snippetContent = `
# scope: html
snippet hello
<p>Hello, '${1:name}!</p>
`;
const snippets = snippetManager.parseSnippetFile(snippetContent);
snippetManager.register(snippets, 'html');
将html
交换到您想要的任何范围。
在编辑器中键入";你好";然后是TAB以触发该片段。
- 将 jQuery 代码添加到 Index.aspx 页面
- Javascript代码添加了一些不应该存在的内容
- 将Google AdWords转换跟踪(javascript)代码添加到PrestaShop/Smarty页面中
- 向以下代码添加不接受“0”的另一个条件
- 如何为该代码添加回调函数
- 将javascript代码添加到URL
- jquery将HTML代码添加到页面中
- jQuery/can'我找不到避免代码添加类的方法
- 如何将我自己的验证代码添加到MooTools的lightface表单中
- 需要帮助将一些JavaScript代码添加到我的wordpress主题中
- 将 JQuery 或 Javascript(不是 coffee.script)代码添加到 Rails 3.2 应用程序中
- JQuery 悬停代码:添加 If 语句会破坏它
- 如何在jsp中单击按钮时将代码添加到jqPlot条形图另存为图像
- JavaScript 将代码添加到已经设置的事件中
- 仅将 Javascript 代码添加到最后一个文本区域
- 如何使用此示例使用 javascript 将代码添加到我的表单标签中
- 将 Jquery 无冲突代码添加到我当前的代码中
- 如何将自定义代码添加到prestashop
- 调试JavaScript和css代码:添加一个事件处理程序
- Dojo 使用 domConstruct 将声明性代码添加到现有手风琴中