Closed tormozit closed 3 years ago
Как при выводе собственного списка автодополнения добавить их в список?
Сниппеты можно обновить через updateSnippets
. На вход нужно JSON с объектом snippets
, например:
updateSnippets('{"snippets": {...}}', true)
где второй параметр отвечает за полную замену штатных.
Как в событии EVENT_ON_SELECT_SUGGEST_ROW выполнить выбранный пользователем сниппет?
Выполнить никак. Он сам выполнится при выборе. Про синтаксис можно почитать тут
В моем списке автодополнения штатные сниппеты не отображаются. Вызываю метод showCustomSuggestions() и вижу только свои слова
Я пока не уверен, нужны ли они мне там. Поэтому хотелось получить способ отображать/скрывать их при отображении этого списка.
В моем списке автодополнения штатные сниппеты не отображаются. Вызываю метод showCustomSuggestions() и вижу только свои слова
Для showCustomSuggestions
это действительно так, показывается только то, что было передано в метод. Доработаю структуру передаваемых данных, чтобы можно было и сниппеты туда же загрузить.
Сниппет можно передать в showCustomSuggestions
так:
showCustomSuggestions(`{
"Для каждого": {
"name": "ДляКаждого",
"text": "Для каждого $\{1:Переменная\} Из $\{2:Коллекция\} Цикл\\n\\t$0\\nКонецЦикла;",
"kind": "Snippet",
"detail": "",
"documentation": ""
}
}`);
Или всё таки нужна возможность показывать/скрывать штатные сниппеты при вызове showCustomSuggestions
?
Да. Хотелось бы и встроенные подключать.
Да. Хотелось бы и встроенные подключать.
Добавил опцию
setOption('showSnippetsOnCustomSuggestions', true);
Сниппеты в список добавляются. Но нет возможности при выборе (например нажатием ENTER) их в списке - выполнить их. Ведь я использую свою обработку события EVENT_ON_SELECT_SUGGEST_ROW. Поэтому мне еще нужен метод, чтобы выполнить выбранный сниппет.
Поэтому мне еще нужен метод, чтобы выполнить выбранный сниппет.
Добавил. Проверь, пожалуйста.
Набрал текст "если" и выбрал из списка шаблон "Если". Сработал мой обработчик события и я в нем вызвал insertSnippet("Если"). При этом вставился текст "Если". В общем пока не заработала вставка.
Набрал текст "если" и выбрал из списка шаблон "Если". Сработал мой обработчик события и я в нем вызвал insertSnippet("Если"). При этом вставился текст "Если". В общем пока не заработала вставка.
А какого поведения ты ожидал? В функцию надо передавать полный текст сниппета.
insertSnippet('Если ${1:Условие} Тогда\n\t$0\nКонецЕсли;');
Как получить этот полный текст? Я ожидал, что по имени сниппета (тому которое в списке видимо), смогу обозначить сниппет для выполнения.
А вот это интересный вопрос, ответа на который у меня пока нет. Постараюсь что-нибудь придумать и передать в событие EVENT_ON_SELECT_SUGGEST_ROW
Как получить этот полный текст? Я ожидал, что по имени сниппета (тому которое в списке видимо), смогу обозначить сниппет для выполнения.
Добавил в параметры события EVENT_ON_SELECT_SUGGEST_ROW
поле insert_text
Заработало
В режиме языка запросов почему то показываются сниппеты от встроенного языка
Пробовал так
РедакторHTML.switchQueryMode();
РедакторHTML.setOption("showSnippetsOnCustomSuggestions", Истина);
и так
РедакторHTML.setOption("showSnippetsOnCustomSuggestions", Истина);
РедакторHTML.switchQueryMode();
Попробуй сейчас
В режиме языка запросов чужие сниппеты пропали, но свои не появились (например для конструкции ВЫБОР).
В режиме языка запросов чужие сниппеты пропали, но свои не появились (например для конструкции ВЫБОР).
Вообще нет сниппетов в списке? У меня вот так показывается:
Да. Вообще сниппетов нет в режиме языка запросов.
Можешь подсказать, как это воспроизвести или может ссылку на исходники сбросишь?
Из-за предыдущей ошибки я отключил подключение сниппетов в режиме языка запросов и забыл включить обратно.
Редактор поставляется с набором сниппетов (snippets.js) . Как при выводе собственного списка автодополнения добавить их в список? Как в событии EVENT_ON_SELECT_SUGGEST_ROW выполнить выбранный пользователем сниппет?