ИР Автодополнение / контекстная подсказка

tormozit 26 1 2

При наборе текста программного кода многие из нас привыкли к автодополнению (контекстной подсказке), т.е. подсказывающему списку вариантов продолжения слова. Иногда он открывается автоматически (например после ".") и иногда мы открываем его явно сочетанием CTRL+Space.

В ТурбкоКонфе есть ряд улучшений этого механизма, включающих открытие собственного списка (Т9) через ALT+ или Ctrl+Space, когда штатный список не открывается или уже открыт (клавиша CTRL должна быть отжата). Однако в нем до сих пор отсутствовал глубокий анализ контекста. Адаптер ИР добавляет собственный мощный анализатор кода и потому список подсказки ТурбоКонфа теперь будет содержать значительно более релевантные элементы в огромном числе ситуаций. Список подсказки при открытии всегда фильтруется по фрагменту левее каретки, но фильтр можно отключить нажатием Alt+ или Ctrl+Space.

Видео и к нему демо конфигурация

Анализ кода ИР

  1. Вычисление типов, например:
  • возвращаемых значений методов модулей
  • параметров через локальные вызовы метода
  • параметров через подписки на события объектов и форм
  • нетипизированных свойств объекта и переменных модуля в области инициации модуля
  • из типизирующих комментариев к инструкциям (подробнее далее)
  • типизирующие инструкции (подробнее далее)
  • в ветке условия проверяющего тип через ТипЗнч()=Тип("...")
  1. Вычисление динамических свойств объектов, например:
  • колонок и параметров запроса, построителя запроса, построителя отчетов
  • колонок таблицы значений, дерева значений, выборки результата запроса
  • свойств структуры
  • свойств данных управляемой и обычной формы
  1. Вычисление возможных значений строковых литералов, например:
  • в параметре метода платформы опираясь на имя метода и формального параметра
  • в параметре метода модуля опираясь на роль формального параметра в теле метода
  1. Вычисление контекстов запросов (подробнее далее)
  • входящих параметров, включая таблицы
  • входящих/исходящих временных таблиц
  1. Понимает синтаксически некорректный текст
  2. Другие виды анализа, которые можно найти в задачах проекта ИР

Анализ кода ИР опирается на

  1. Конфигурацию (метаданные) в приложении ИР. Обновляется при перезапуске приложения, который мягко делается в фоне по запросу пользователя.
  2. Собственный кэш модулей. Его предлагается целиком заполнить при первом подключении базы, но можно делать это и в любой момент командой ОбновитьКэшМодулей (например после массовых изменений модулей). Кэш модуля обновляется в его окне при вызове любой команды ИР, а также в TurboConf версии 6.0+ автоматически при редактировании, если его окно развернуто.
  3. Собственный кэш управляемых форм. Кэш управляемой формы обновляется в окне ее модуля в следующих случаях:
  • автоматически при вызове любой команды ИР с обращением к отсутствующему в кэше конкретному элементу, реквизиту, команде или по прошествии 5 минут с последнего обновления этой формы
  • вручную командой "Обновить кэш объектов конфигурации" в списке подсказки

Где работает подсказка

Подсказка работает в следующих типах окружения встроенного языка:

  1. Инструкция встроенного языка
  2. Комментарий - например ввод имени типа, указателя на объект метаданных или метод модуля
  3. Текстовый (строковый) литерал - зависит от контекста, которым обычно является формальный параметр метода, либо аналогично комментарию

Если применять приложение ИР во всех базах, где редактируется код, то удобнее отключить автовызов штатной подсказки (автоподсказку) после нажатия ".".

В Турбоконф 6.1+ адаптер переключает эти настройки полуавтоматически через всплывающее уведомление.

В окне "Выражение" в TurboConf 6.0+ используется контекст последнего активного модуля.
А в нижних версиях TurboConf используется контекст последнего модуля, в котором вызывалась команда адаптера. Для этих версий есть специальная команда для открытия этого окна с передачей контекста Вычислить выражение с контекстом

В окнах "Условие останова" (8.3.23-) и "Параметры точки останова" (8.3.24+) поведение аналогичное

Типизирующие комментарии

В конфигураторе встроенный анализатор кода не предоставляет возможности явно назначить документирующий тип выражению.
Поэтому приходилось применять различные обходные пути типа таких.
Анализатор кода ИР допускает явное назначение типов с помощью комментариев:

  • переменным при их объявлении
  • параметрам методов
  • возвращаемым значениям функций
  • левым операндам в инструкциях присвоения
  • итераторам при обходе коллекций
  • свойствам структуры после Вставить()
  • колонкам таблицы/дерева значений после Добавить/Вставить()

Используется расширенный стандарт типизирующих комментариев EDT. Подробнее тут
Также поддерживаются произвольные инструкции для анализатора кода, не поддерживаемые со стороны EDT. Строка такой инструкции начинается с "//!" или "//:".

Примеры:

МояПеременная3 = 0; // ОбработкаОбъект.ЗагрузкаЦен
Для каждого МояПеременная4 из Массив Цикл // Структура
Структура.Вставить("ф"); // см. ирОбщий.ВсеОбработчикиСобытийФормаЛкс[0]
Таблица.Колонки.Добавить("ф"); // см. ирОбщий.ВсеОбработчикиСобытийФормаЛкс
//! МояПеременная1 = Обработки.ЗагрузкаЦен.Создать();
//! МояПеременная2 = 0; // ОбработкаОбъект.ЗагрузкаЦен

Язык запросов

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

Подсказка работает в любом окне редактора полного текста запроса. Например в редакторе запроса схемы компоновки данных

0

Еще в "TurboConf ИР"

ИР Свернуть дерево кроме текущей

ИР Создать описание метода

ИР Найти в списке

ИР Найти последнюю правку в Гите

ИР Запомнить для сравнения

ИР Переименовать слово

ИР Открыть объект метаданных

ИР Анализ замера

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

ИР Форматировать текст

Модератору