Редактор Ace вручную добавляет фрагменты
TL; DR
Я пытаюсь вручную вызвать фрагменты редактора ace через вызов функции, а не обычный подход (клавиши клавиатуры).
объяснение
мне нужна функция, которая принимает редактор и строку фрагмента в качестве параметров и добавляет этот фрагмент в Редактор. function addSnippet(editor, snippet)
.
редактор Ace поддерживает сниппеты текст. сообщ-иш.
if (${1:condition_name}) {
${2:body}
}
поэтому, когда мы вызываем эту функцию, следует добавить фрагмент, выделить маркеры фрагмента и выбрать первый. После заполнения первой и нажатия вкладки редактор должен перейти к следующему маркеру фрагмента. Прямо как в Раковина пример (но я хочу добавить/вызвать фрагменты с помощью вызова функции).
Я попытался взломать свой путь и сделал эта функция. Но это грязно и неполно (не поддерживает маркеры и вкладки). Существует ли какой-либо собственный метод для этого? Я видел несколько примеров использования snippetManager
, но они используют триггеры клавиатуры, а не ручные функции.
любая помощь по этому вопросу буду признателен. Спасибо.
2 ответов
после нескольких часов взломов и исследований я, наконец, наткнулся на insertSnippet
функции snippetManager
на ext-language_tools.js
, это работает так:
var snippetManager = ace.require("ace/snippets").snippetManager;
snippetManager.insertSnippet(editor, snippet);
довольно легко на самом деле, не мог найти его раньше из-за отсутствия документации.
Если вы не используете RequireJS, то работает следующий синтаксис:
ace.config.loadModule('ace/ext/language_tools', function () {
editor.insertSnippet(snippetText);
});