****************************** Навигация и поиск в редакторе ****************************** Редактор языка Structured Text предоставляет набор инструментов для навигации по коду, поиска символов и анализа их использования. Инструменты работают на основе синтаксического разбора документа и учитывают контекст текущего проекта. .. figure:: image/code_editor.png :align: center Поиск объявления символа ======================== Позволяет быстро перейти к месту, где объявлена функция, функциональный блок, переменная или другой именованный объект. **Как использовать:** 1. Установите курсор на имени символа в любом месте кода. 2. Нажмите ``F2`` или выберите команду *Перейти к объявлению* в контекстном меню. **Что происходит:** - Если объявление находится в текущем документе — курсор перемещается к нему, а редактор прокручивает документ так, чтобы строка оказалась по центру. - Если объявление находится в другом документе текущего контекста — редактор открывает этот документ и переходит к нужной строке. Поиск выполняется в следующем порядке: 1. Локальные определения в текущей области видимости. 2. Глобальные определения в текущем документе. 3. Глобальные определения в других документах контекста (например, в подключённых библиотеках). Поиск использований символа =========================== Позволяет найти все места в проекте, где используется выбранный символ: вызовы функций, обращения к переменным, объявления экземпляров функциональных блоков и т.п. **Как использовать:** 1. Установите курсор на имени символа. 2. Нажмите ``F3`` или выберите команду *Найти использование* в контекстном меню. **Результат:** Открывается панель *Результаты поиска*, в которой совпадения сгруппированы по документам. Для каждого совпадения указываются номер строки и фрагмент кода. **Навигация по результатам:** - Двойной клик по строке результата открывает документ и переходит к соответствующей позиции. - История поиска сохраняется: в панели доступен выпадающий список предыдущих поисков с возможностью вернуться к любому из них. - Первый пункт списка — **Новый поиск**. Он открывает форму параметров нового поиска. - Для выбранной сессии доступна команда **Повторить поиск** — она запускает тот же поиск заново с теми же параметрами, без открытия формы. **Область поиска:** - Для глобальных символов (функции, функциональные блоки, типы) — все документы текущего контекста, включая подключённые библиотеки. - Для локальных переменных — только текущий документ. Текстовый поиск по проекту ========================== Позволяет искать произвольный текст — не только имена символов, но и любые фрагменты кода, комментарии, строковые литералы и т.п. Работает в тех же документах, что и поиск использований, но не привязан к синтаксическому разбору. **Как открыть форму поиска:** - В панели *Результаты поиска* выберите пункт **Новый поиск** в выпадающем списке истории. - Или выполните команду *Расширенный поиск* в редакторе. **Параметры поиска:** - **Область поиска** — определяет, где искать: - *Текущий объект* — только текущий документ; - *Текущая программа* — все документы текущего контекста (программы контроллера), включая подключённые библиотеки; - *Весь проект* — все документы проекта. - **Учитывать регистр** — различать заглавные и строчные буквы. - **Только слова целиком** — находить совпадение только как отдельное слово, а не как часть другого слова. - **Регулярное выражение** — трактовать строку поиска как регулярное выражение. Флажки и область поиска сохраняются между сессиями: при следующем открытии формы они будут теми же, что и в прошлый раз. **Результат:** Совпадения группируются по документам. Для каждого совпадения указываются номер строки и полный текст строки, в которой найдено совпадение. При наведении курсора на строку результата показывается всплывающая подсказка с полным текстом строки. **Навигация по результатам:** - Двойной клик по строке результата открывает документ и переходит к соответствующей строке. - Каждый новый поиск добавляется в историю и становится активной сессией. - Для активной сессии доступна команда **Повторить поиск** — она запускает тот же поиск заново с теми же параметрами. Повторный поиск использует актуальное состояние документов, поэтому учитывает все изменения, сделанные после первого поиска. **Замена:** Форма поиска позволяет выполнить замену всех найденных совпадений. Для этого: 1. В поле **Замена** введите текст, на который нужно заменить. 2. Нажмите **Заменить все**. Замена применяется ко всем найденным совпадениям во всех документах выбранной области. После замены результаты поиска автоматически обновляются. Все изменения, внесённые заменой в одном документе, оформляются как одна операция отмены — их можно отменить одним нажатием ``Ctrl+Z``. Если замена производилась в нескольких документах, то отмену необходимо выполнять в каждом из них отдельно. Панель объявлений ================= В верхней части редактора расположен выпадающий список, в котором перечислены все объявления верхнего уровня текущего документа: программы, функции, функциональные блоки, функции. **Как использовать:** - Раскройте список, чтобы увидеть все объявления документа. - Выберите нужное объявление — редактор перейдёт к соответствующей строке. - При перемещении курсора по коду текущее объявление автоматически выделяется в списке. Подсветка парных скобок ======================= При установке курсора на открывающую или закрывающую скобку редактор подсвечивает обе скобки пары. Это помогает быстро определить границы выражений, списков аргументов и индексов массивов. Поддерживаются круглые ``( )`` и квадратные ``[ ]`` скобки. Скобки внутри строк и комментариев не учитываются. Автодополнение ============== При вводе кода редактор предлагает варианты завершения: - имена символов из текущего файла и всего контекста; - ключевые слова языка; - встроенные функции и функциональные блоки. Список предложений фильтруется по введённому префиксу. Для вызова автодополнения вручную нажмите ``Ctrl+Space``. Сворачивание блоков =================== Редактор позволяет сворачивать многострочные конструкции (тела программ, функций, функциональных блоков, условные операторы, циклы), чтобы сосредоточиться на нужной части кода. **Горячие клавиши:** - ``Ctrl+-`` — свернуть текущий блок. - ``Ctrl++`` — развернуть текущий блок. Комментирование =============== Быстрое добавление и удаление комментариев для выделенного фрагмента кода. Поддерживаются как однострочные комментарии ``//``, так и многострочные ``(* ... *)``. Автоотступы =========== При нажатии ``Enter`` редактор автоматически выравнивает новую строку в соответствии с синтаксической структурой кода. Для выделенного фрагмента можно применить автоформатирование отступов вручную через команду *Сделать автоотступ*. Навигация по коду ================= Помимо поиска объявлений и использований, редактор поддерживает механизм **История навигации** — возврат к предыдущим позициям курсора (например, после перехода к объявлению можно вернуться обратно). Контекстная справка =================== Для встроенных типов данных, операторов и стандартных функций доступна контекстная справка. Установите курсор на интересующем элементе и вызовите справку — откроется соответствующая страница документации.