Создаем свой шаблон T9 с умным фильтром

bolsun 480 6 11 10

Контекстная подсказка T9 умеет предлагать подходящие варианты, в зависимости от вводимой строки и контекста кода.

Пример такой умной подсказки:

Подсказка предлагает КонецПроцедуры и не предлагает КонецФункции, КонецЕсли и т.д.

Это происходит благодаря смарт-фильтру.

Создадим свой шаблон

Предположим, мы хотим, чтобы при начале набора слова новый предлагалось создать ТаблицуЗначений, если строка совпадает со следующим условием:
Переменная начинается на тз или таб
После имени переменной есть символ =
Например:
ТабТовары = н

  1. Создадим файл t9_lesson1.t9t в папке TurboConf

t9t - это файлы в формате Json. В файлах поставки t9t можно посмотреть как он формируется.

//Сохраните файл под другим именем после внесения изменений

// Команды:
// <!> установить позицию курсора после вставки текста шаблона
// <?> установить позицию курсора после вставки текста шаблона и нажать Ctrl+Space
// <ENTER> нажать ENTER после вставки, но до установки позиции курсора

//Context:
//	0 - любой (шаблон будет показан везде)
//	1 - глобальный (шаблон будет показан в глобальном контексте)
//	2 - класса (будет показан только после .)

//Priority:
//Шаблоны с более высоким приоритетом показываются в списке меню выше. Чем больше число, тем выше приоритет. По умолчанию 0.
//Шаблоны с приоритетом 0 не показываются в списке, пока в поиске не набран хотя бы один символ
//Встроенные функции языка имеют приоритет 10

//Для динамических шаблонов, специальные переменные:
 //$0 - полное совпадение фильтра
 //$1 - первая захваченная группа (в скобках)
 //$2 - вторая группа и т.д.
  1. Добавим список, с одним шаблоном
[
   {
    "FromContext": true,
    "Priority": 30,
    "CustomFilter": "",
    "Context": 1,
    "ChildItems": null,
    "ValueForFilter": "НовыйТаблицаЗначений",
    "DisplayedValue": "Новый ТаблицаЗначений",
    "Value": "Новый ТаблицаЗначений",
    "IsMethod": false,
    Cached: true,
    SmartFilter: "\\s+(таб|тз)[\\w\\d_]*\\s*=\\s*н[\\w]*$"
  }
]

Основые свойства:
Priority: 30 - добавим высокий приоритет шаблона
Context: 1 - глобальный контекст, т.е. будет шаблон доступен везде, но не после точки
ValueForFilter: по каким буквам искать шаблон, также это уникальный ключ шаблона
DisplayedValue: представление в списке
Value: текст, который будет вставлен в модуль
Cached: true - шаблон всегда будет присутствовать в списке, даже если мы его раньше не использовали
SmartFilter: условие показа шаблона.

Разберем его подробнее:

*\\s+(таб|тз)[\\w\\d]\\s=\\sн[\\w]$*
Это регулярное выражение. Все слеши экранированы, поэтому они двойные. Если убрать экранирующие слеши, то прочесть выражение можно так:
\s+(таб|тз)[\w\d]\s=\sн[\w]$

\s+ есть пробелы, переносы строк или табуляции перед именем переменной
(таб|тз) далее идет таб или тз
затем любое количество символов \w, цифр \d или символов _
затем опять пробельные символы, но не обязательно, т.к. *
символ =
затем опять пробельные символы, но не обязательно, т.к. *
символ н
затем любое количество символов [\w]
$-конец строки, дальше в этой строке ничего нет

Сохраняем шаблон, перезагружаем в конфигураторе Ctrl+Shift+R и проверяем:

Добавим еще шаблон для СпискаЗначений

{
"FromContext": true,
"Priority": 30,
"CustomFilter": "",
"Context": 4,
"ChildItems": null,
"ValueForFilter": "НовыйСписокЗначений",
"DisplayedValue": "Новый СписокЗначений",
"Value": "Новый СписокЗначений",
"IsMethod": false,
Cached: true,
SmartFilter: "\s+(список|сз)[\w\d_]\s=\sн[\w]$"
},

Теперь, если переменная начинается на список или сз будет предлагаться Новый СписокЗначений.

Ну так далее, можно добавить для Файла.

  {
    "FromContext": true,
    "Priority": 30,
    "CustomFilter": "",
    "Context": 4,
    "ChildItems": null,
    "ValueForFilter": "НовыйФайл",
    "DisplayedValue": "Новый Файл",
    "Value": "Новый Файл",
    "IsMethod": true,
    Cached: true,
    SmartFilter: "\\s+файл[\\w\\d_]*\\s*=\\s*н[\\w]*$"
  }

Здесь обратите внимание, свойство IsMethod установлено в true. Поэтому появляются скобки и после вставки курсор встает между этими скобками.

Скачать готовый файл с этим шаблоном t9t_lesson1.zip

Мой блог инди-разработчика в Telegaram Турбокодер

0

Комментарии

Обсуждение в Telegram

Еще в "Секреты TurboConf"

Отладка скриптов

Как найти все скрипты, которые срабатывают автоматически

Как отфильтровать объекты по типу в "Навигаторе по метаданным"

Быстрое добавление объекта в кэш

Ввод специальных символов без переключения раскладки

Как в TurboConf заменить Ctrl+Click для перехода к объекту на горячую клавишу

ИР Точка останова

Переназначение штатных комбинаций горячих клавиш в конфигураторе 1С

Автосохранение текстов модулей в папку TurboConf

Генерация методов "на лету"

Модератору