Контекстная подсказка T9 умеет предлагать подходящие варианты, в зависимости от вводимой строки и контекста кода.
Пример такой умной подсказки:
Подсказка предлагает КонецПроцедуры и не предлагает КонецФункции, КонецЕсли и т.д.
Это происходит благодаря смарт-фильтру.
Предположим, мы хотим, чтобы при начале набора слова новый предлагалось создать ТаблицуЗначений
, если строка совпадает со следующим условием:
Переменная начинается на тз или таб
После имени переменной есть символ =
Например:
ТабТовары = н
t9t - это файлы в формате Json. В файлах поставки t9t можно посмотреть как он формируется.
//Сохраните файл под другим именем после внесения изменений
// Команды:
// <!> установить позицию курсора после вставки текста шаблона
// <?> установить позицию курсора после вставки текста шаблона и нажать Ctrl+Space
// <ENTER> нажать ENTER после вставки, но до установки позиции курсора
//Context:
// 0 - любой (шаблон будет показан везде)
// 1 - глобальный (шаблон будет показан в глобальном контексте)
// 2 - класса (будет показан только после .)
//Priority:
//Шаблоны с более высоким приоритетом показываются в списке меню выше. Чем больше число, тем выше приоритет. По умолчанию 0.
//Шаблоны с приоритетом 0 не показываются в списке, пока в поиске не набран хотя бы один символ
//Встроенные функции языка имеют приоритет 10
//Для динамических шаблонов, специальные переменные:
//$0 - полное совпадение фильтра
//$1 - первая захваченная группа (в скобках)
//$2 - вторая группа и т.д.
[
{
"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 Турбокодер
Как в TurboConf заменить Ctrl+Click для перехода к объекту на горячую клавишу
Как найти все скрипты, которые срабатывают автоматически
Как отфильтровать объекты по типу в "Навигаторе по метаданным"
Быстрое добавление объекта в кэш
Ввод специальных символов без переключения раскладки
Переназначение штатных комбинаций горячих клавиш в конфигураторе 1С