Студия/Редактор модулей

From SunFlurry wiki
Jump to: navigation, search

Редактор модулей предназначен для редактирования текстов, не сворачивающихся в параграфы (произвольной длины строки) и обычно используется в системе для редактирования модулей, редактор обладает следующими возможностями:

  • Выделение цветом и параметрами шрифта конструкций и констант языка для быстрой визуальной ориентации разработчика в коде.
    • Цвета можно менять, выбирая из существующих шаблонов или создать свою схему.
  • Редактор позволяет работать с любыми символами Unicode (в т.ч. с кодами больше 65535) (на данный момент не реализована только работа с текстом, выводящимся справа налево для арабских языков).
  • Имеет встроенный буфер отмены изменения произвольной глубины.
  • Может использовать также не равноширинные шрифты (обычно в этом нет необходимости, так как это ухудшает читаемость текстов программ)
  • Выделяет не-ASCII символы подчеркиванием, чтобы разработчик не путал кириллическую букву о с латинской.
  • Имеет встроенную подсказку по объектам и функциям системы, которая может быть вызвана с помощью комбинации клавиш или автоматически.
  • Позволяет использовать закладки.

Общее описание

Редактор модулей используется в Студии для редактирования исходных текстов программ и обработчиков визуальных событий, ini-файлов или любых текстовых файлов, кроме того, он используется при выводе текстового файла на экран в клиенте (см. функцию Text.Show), в административной панели клиента и в других местах программной среды. При редактировании текстов программ, редактор не делит текст на параграфы, каждая строка может иметь произвольную длину, с помощью горизонтального ползунка (см. рис. 1), используя комбинацию Shift+<Колесо мыши>, либо переместив курсор редактора, можно получить доступ к разным частям строки, если из-за ее длины, она не вмещается в ширину экрана.

Для удобства разработчика, редактор производит выделение цветом или параметрами шрифта элементов языка программы. Выделение доступно только при редактировании текстов программ, обычный текст не будет выделен. Шаблон выделения можно настроить по собственному желанию (см. ниже Параметры редактора модулей). Редактор различает и позволяет выделять разными способами следующие части программного текста:

  • Ключевые слова языка -- ключевые слова конструкций языка, к примеру Function или EndIf.
  • Строковые константы, Числовые константы и Константы типа дата и время -- для разного вида констант можно задать свое выделение.
  • Комментарии -- комментарии в тексте программ задаются после знаков //, либо внутри блоков, ограниченных знаками { и }.
  • Глобальные функции программы и функции и интерфейсы языка -- Обычные функции, к примеру, Функции общего назначения будут выделены своим цветом, также будут выделены функции глобальных модулей, имеющих префикс Export.

Редактор не использует символ табуляции, зачастую портящий вид исходных текстов в системах с другим количеством символов на знак табуляции или попадающий в строковые константы. При использовании клавиши табуляции или импортировании (вставки из буфера) текста со знаками табуляции, последняя заменяется на требуемое количество пробелов. Ширину табуляции можно настроить, однако рекомендуется оставлять ее значение по умолчанию (2 знакоместа).

С помощью особого выделения не ASCII-символов (см. рис. 1, подчеркивание линиями, состоящими из красных точек), редактор позволяет исключить путаницу между похожими символами кириллицы и латиницы. К примеру, слова Документ и Дoкумент выглядят совершенно одинаково, однако, второе слово содержит латинский знак o, во второй позиции, поэтому, эти слова не идентичны, и, к примеру, при поиске второго слова по части слова в таблице, результат будет неверным. Те же самые проблемы могут возникнуть при ошибках в наименованиях функций или переменных. Редактор модулей выделит эти слова по-разному, позволяя разработчику визуально идентифицировать ошибку.

Редактирование происходит в режиме UTF-16. Поддерживаются все символы Unicode, в том числе символы с кодами больше 65535 (занимающие 4 байта). Это позволяет вставлять в текст как редко используемые азиатские символы, так и знаки, типа emoji (к примеру, для формирования эмодзи доменов).

При работе с текстом программ, часто нужно перемещаться в разные его места для изменения и дописывания различных частей. Для быстрого перемещения удобно использовать закладки. Закладки могут быть как нумерованными, так и без номеров. Первые 10 закладок всегда имеют номера 1, 2, 3, 4, 5, 6, 7, 8, 9 и 0 по которым их удобно вызывать с клавиатуры с помощью комбинации Ctrl+<цифровая клавиша>. Номера даются автоматически, либо присваиваются по желанию разработчика, если вместо комбинации Alt+F2, позволяющей установить (или удалить) закладку в текущей строке текста, он использует комбинацию Ctrl+Shift+<цифровая клавиша>, позволяющую установить закладку с определенным номером в данной строке текста (при этом, если в тексте уже существует закладка с этим номером, она будет удалена).

Главное меню Студии имеет набор пунктов для работы с редактором модулей. Большинство этих пунктов располагается в меню Модуль. Доступны следующие пункты:

  • Найти -- выводит диалог поиска подстроки в текущем тексте.
  • Найти и заменить -- выводит диалог поиска и замены подстроки в текущем тексте.
  • Продолжить поиск -- продолжает поиск без вывода диалога. Используются параметры предыдущего поиска.
  • Перейти к строке -- переходит к строке по ее номеру.
  • Подменю "блок текста" содержит функции для работы с выделенным блоком текста:
    • Сдвинуть вправо -- добавить требуемое (соответствующее размеру табуляции в данной позиции) количество пробелов в текст, начиная с текущей позиции, если в тексте отсутствует выделение, либо с начала каждой выделенной строки, если выделение присутствует.
    • Сдвинуть влево -- удалить требуемое (соответствующее размеру табуляции в данной позиции) количество пробелов в тексте, начиная с текущей позиции, если в тексте отсутствует выделение, либо с начала каждой выделенной строки, если выделение присутствует и в строке есть требуемое количество пробелов.
    • Добавить знак комментария -- добавить в выделенные строки знаки комментария (//).
    • Удалить знак комментария -- удалить знаки комментария (//) из выделенных строк.
  • Подменю "закладки" содержит функции для работы с закладками текста:
    • Добавить или удалить закладку -- установить (или удалить) закладку в текущей строке (в которой находится курсор текста). Если закладка уже установлена, она будет удалена.
    • Перейти на следующую закладку -- перейти к следующей по тексту закладке, если таковая имеется.
    • Перейти на предыдущую закладку -- перейти к предыдущей по тексту закладке, если таковая имеется.
    • Удалить все закладки -- удалить все закладки из текста. Внимание! Запрос по удалению не задается!
  • Подменю "функции" содержит возможности для работы с функциями:
    • Список всех функций модуля -- показывает диалог со списком всех функций текущего модуля, в т.ч. вложенных функций. Имеется возможности перейти к выбранной функции с помощью двойного клика мыши.
  • Синтаксической контроль -- выполняет быструю компиляцию текущего текста, без сохранения ее результатов на диск. Если во время компиляции будут найдены ошибки, они будут добавлены в лог сообщений, если ошибок найдено не будет, соответствующее сообщение будет выведено на экран.
  • Параметры редактора -- вводит диалог параметров редактора (см. ниже).

Панель инструментов редактора модулей (см. рис. 1) имеет следующие возможности:

  • Кнопки работы с закладками позволяют добавлять, удалять или переходить к закладкам текста.
  • Кнопки сдвига вправо или влево позволяют добавить или удалить требуемое (соответствующее размеру табуляции в данной позиции) количество пробелов, начиная с текущей позиции, если в тексте отсутствует выделение, либо с начала каждой выделенной строки, если выделение присутствует.
  • Кнопки добавления или удаления комментария позволяют добавить или удалить знак комментария (//) для выделенных строк.
  • Кнопка синтаксического контроля выполняет быструю компиляцию текущего текста, без сохранения ее результатов на диск. Если во время компиляции будут найдены ошибки, они будут добавлены в лог сообщений, если ошибок найдено не будет, соответствующее сообщение будет выведено на экран.
  • Кнопка списка всех функций модуля показывает диалог со списком всех функций текущего модуля, в т.ч. вложенных функций. Имеется возможности перейти к выбранной функции с помощью двойного клика мыши.

Особенные комбинации клавиш, используемые редактором модулей

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

  • Общие функции:
    • Ctrl+S -- сохранить изменения в текущем тексте на диске (то же самое, что и нажатие на иконку дискеты на панели инструментов).
    • Alt+G -- вызов диалога ввода номера строки, чтобы перейти к строке с указанным номером.
    • Ctrl+A -- выделить весь текст.
    • Tab -- добавить требуемое (соответствующее размеру табуляции в данной позиции) количество пробелов в текст, начиная с текущей позиции, если в тексте отсутствует выделение, либо с начала каждой выделенной строки, если выделение присутствует.
    • Shift+Tab -- удалить требуемое (соответствующее размеру табуляции в данной позиции) количество пробелов в тексте, начиная с текущей позиции, если в тексте отсутствует выделение, либо с начала каждой выделенной строки, если выделение присутствует и в строке есть требуемое количество пробелов.
    • ENTER -- разбить строку на две, начиная с символа за курсором. Если позволяет соответствующий режим, в новую строку также будет добавлено то количество пробелов, которое содержится в начале исходной строки.
    • Backspace, Delete -- удалить символ до курсора или после курсора соответственно. Удаление может также соединить две строки.
    • Ctrl+Backspace, Ctrl+Delete -- удалить слово до курсора или после курсора соответственно. Удаление может также соединить две строки.
    • Insert -- переключить режим замены символа под курсором, если этот режим разрешен.
    • Ctrl+[ -- добавить в выделенные строки знаки комментария (//).
    • Ctrl+] -- удалить знаки комментария (//) из выделенных строк.
    • Ctrl+X -- удалить выделенный текст.
    • Ctrl+Y -- удалить текущую строку.
  • Изменение положения курсора:
    • Down, Right, Left, Up -- передвинуть курсор на один символ или линию в соответствующем направлении.
    • Ctrl+Right, Ctrl+Left -- передвинуть курсор влево или вправо на одно слово.
    • Shift+Down, Shift+Right, Shift+Left, Shift+Up -- передвинуть курсор на один символ или линию в соответствующем направлении, при этом выделив ту часть текста, которая находится между предыдущим положением курсора и текущим его положением. Если текст уже был выделен, данные операции добавляют текст к выделению.
    • Ctrl+Shift+Right, Ctrl+Shift+Left -- передвинуть курсор влево или вправо на одно слово, при этом выделив ту часть текста, которая находится между предыдущим положением курсора и текущим его положением. Если текст уже был выделен, данные операции добавляют текст к выделению.
    • Home, Ctrl+Home -- передвинуть курсор в начало текущей строки или начало текста соответственно.
    • Shift+Home, Ctrl+Shift+Home -- передвинуть курсор в начало текущей строки или начало текста соответственно, при этом выделив ту часть текста, которая находится между предыдущим положением курсора и текущим его положением. Если текст уже был выделен, данные операции добавляют текст к выделению.
    • End, Ctrl+End -- передвинуть курсор в конец текущей строки (после последнего символа) или конец последней строки текста соответственно.
    • Shift+End, Ctrl+Shift+End -- передвинуть курсор в конец текущей строки (после последнего символа) или конец последней строки текста соответственно, при этом выделив ту часть текста, которая находится между предыдущим положением курсора и текущим его положением. Если текст уже был выделен, данные операции добавляют текст к выделению.
    • Page Down, Page Up -- передвинуть курсор на видимое в текущем окне количество строк вниз или вверх соответственно.
    • Shift+Page Down, Shift+Page Up -- передвинуть курсор на видимое в текущем окне количество строк вниз или вверх соответственно, при этом выделив ту часть текста, которая находится между предыдущим положением курсора и текущим его положением. Если текст уже был выделен, данные операции добавляют текст к выделению.
  • Работа с буфером обмена:
    • Ctrl+Insert, Ctrl+C -- поместить выделенный фрагмент текста в буфер обмена.
    • Shift+Insert, Ctrl+V -- поместить фрагмент текста из буфера обмена в позицию текущего положения курсора (при этом выделенные фрагменты в тексте будут удалены).
  • Работа с буфером отмены изменений:
    • Ctrl+Z, Alt+Backspace -- отменить последнее сделанное изменение.
  • Поиск и замена в тексте:
    • Ctrl+F -- вызов диалога поиска подстроки в тексте.
    • Ctrl+L или F3 -- найти следующую позицию подстроки в тексте (параметры поиска заданы ранее с помощью функции поиска (Ctrl+F)).
    • Ctrl+Shift+L или Shift+F3 -- найти предыдущую позицию подстроки в тексте (параметры поиска заданы ранее с помощью функции поиска (Ctrl+F)).
    • Ctrl+H -- вызов диалога поиска и замены подстроки в тексте.
  • Работа с закладками:
    • F2 -- перейти к следующей по тексту закладке, если таковая имеется.
    • Shift+F2 -- перейти к предыдущей по тексту закладке, если таковая имеется.
    • Alt+F2 -- установить (или удалить) закладку в текущей строке (в которой находится курсор текста). Если закладка уже установлена, она будет удалена.
    • Ctrl+Shift+<цифровая клавиша> -- установить закладку с указанным номером на текущей строке (в которой находится курсор текста). Если в тексте уже существует закладка с этим номером, она будет удалена.
    • Ctrl+<цифровая клавиша> -- перейти к закладке с указанным номером. Если в тексте не существует закладки с этим номером, положение курсора изменено не будет.
    • Ctrl+Alt+F2 -- удалить все закладки из текста. Внимание! Запрос по удалению не задается!
  • Работа с контекстной помощью:
    • Ctrl+. -- Вывести окно встроенной (контекстной) подсказки по методам и атрибутам объекта, слева от курсора.
    • F1 -- Вывести окно встроенной (контекстной) подсказки по функции рядом с курсом.
    • Ctrl+F1 -- Вывести окно встроенной (контекстной) подсказки.

Параметры редактора модулей

Диалог параметров редактора текста доступен из главного меню Студии и имеет три закладки, содержащие следующие настройки:

  • Закладка "Общие" содержит основные настройки редактора модулей:
    • Ширина табуляции -- позволяет настроить максимальное количество пробелов, добавляемых в текст к нажатии на кнопку Tab, а также при импорте текстов со знаками табуляции в них. Рекомендуемое значение ширины табуляции равно 2 знакоместам.
    • Автоотступ -- установка разрешает режим автоматического отступа, когда, при вводе новой строки, позиция курсора по умолчанию устанавливается в соответствии с позицией первого символа после пробелов предыдущей строки.
    • Величина буфера отмены -- задает количество шагов возврата для буфера отмены.
    • Шрифт текста -- задает шрифт текста в редакторе модулей. Обычно используется моноширинный шрифт. По умолчанию, это Consolas.
    • Размер шрифта -- задает размер шрифта в редакторе модулей. По умолчанию это 11 пунктов.
    • Insert включает режим вставки -- функция вынесена в отдельную установку, чтобы по умолчанию запретить режим вставки или замены символов под курсором, так как при частом использовании буфера обмена, он может помешать работе при переключении режима по ошибке или неосторожности.
    • Выделять не ASCII символы -- включает режим подчеркивания не ASCII символов, чтобы исключить путаницу между символами с похожим начертанием.
  • Закладка "Цветовое выделение" содержит темы цветового выделения программных модулей:
    • Цветовыделение -- позволяет запретить цветовое выделение при необходимости.
    • Профиль -- позволяет выбрать шаблон цветового выделения модулей из существующих встроенных шаблонов.
    • Таблица цветов -- содержит все части программного текста, которые можно выделить отдельно. Для изменения параметров выделения какой-либо части, необходимо два раза кликнуть по ее строке, будет выведен всплывающий диалог, позволяющий:
      • Изменить цвет -- выводит диалог, изменяющий цвет выделения для данной строки.
      • Полужирный, Курсив, Подчеркнутый, Зачеркнутый -- при выборе этих пунктов устанавливаются или снимаются соответствующие свойства шрифта выделения.
  • Закладка "Встроенные описание" содержит установки встроенной помощи при работе редактором:
    • Автоматически показывать описание из кода -- включает режим автоматической всплывающей подсказки после нажатия . при работе с редактором.
    • Включать отладочные и внутренние функции в описание -- включает в описание дополнительные функции.
    • Показывать описание по функциям при наведении курсора мыши -- включает режим всплывающей подсказке по функциям при наведении курсора мыши.
    • Расширенное (двухстрочное) описание в подсказке -- увеличивает размер описания в строках со списком функций.

Диалог поиска и замены текста

Диалог поиска и замены текста позволяет искать фразы и куски текста в модуле. Поиск начинается от текущего положения курсора по направлению к концу текста или к началу текста (в зависимости от установки поля Направление). после ввода фразы для поиска, необходимо нажать на кнопку "найти" и диалог будет закрыт, первая найденная фраза выделена в тексте, если ни одного вхождения фразы не найдено, будет выведено соответствующее сообщение. Чтобы найти следующее вхождение фразы в том же направлении, в каком осуществлялся начальный поиск, можно воспользоваться клавишей F3 или комбинацией Ctrl+L.

Для того, чтобы найденные вхождения фразы автоматически заменялись на другую фразу существует диалог поиска и замены. Диалог можно вызвать отдельно или превратить диалог поиска в диалог поиска и замены, выбрав вторую закладку "Заменить" (см. рис. 3). Кроме поля "заменить на", становятся также доступны кнопки "Заменить" (выполнить поиск и замену первого найденного вхождения), и "Заменить все", выполнить поиск и замену всех найденных в тексте вхождений.

Кроме основного функционала, диалог обладает дополнительными настройками при поиске (и замене):

  • Учитывать регистр при поиске -- будет произведен поиск фразы с учетом регистра. В этом случае Документ и документ не будут равны.
  • Искать полные слова -- позволяет искать только вхождения, когда искомая фраза отделена с обоих сторон не буквенными символами (не является частью какого-либо слова). К примеру, при поиске Try текст, содержащий EndTry не будет засчитан, как вхождение.