25 июня 2020

RAD Studio 10.4. Новый Code Insight

    Недавно я стал пробовать собирать свои старые проекты на Delphi 10.4. Пока впечатления от новой версии положительные. Я еще не столкнулся с горой ошибок, которыми пугали в "интернетах", а сама IDE грузится и работает заметно быстрее Delphi 10.3. Еще перед релизом RAD Studio 10.4 Sydney нам много и восхищенно рассказывали о новой версии Code Insight. Оценил ее и я.
    Code Insight в RAD Studio 10.4 Sydney реализован с использованием Language Server Protocol for Delphi. Language Server Protocol (LSP) - это открытый протокол на основе JSON-RPC для связи между интегрированными средами разработки (IDE) или редакторами исходного кода и специальными приложениями (серверами), которые предоставляют функции завершения кода, подсветки синтаксиса, маркеров ошибок и предупреждений, рефакторинга и так далее. Таким образом обеспечивается поддержка этих функций с учетом специфики языка программирования независимо от используемого IDE или редактора. Что дала программистам новая реализация Code Insight в RAD Studio 10.4 Sydney?
  1. Повысилась скорость реакции Code Insight. Я не заметил, что бы IDE задумывалось (подвисало) пока ищется подсказка, что часто случалось на предыдущих версиях.
  2. Code Insight работает во время отладки.
  3. Code Insight ищет с фильтром по вхождению вводимой строки, а не по ее началу. Это удобно, когда точно не помнишь, как называется метод или свойство.
  4. Code Insight в секции uses ищет не только по модулям, которые добавлены в проект, но и по любым скомпилированным модулям. Для этого достаточно, что бы DCU-файл модуля можно было найти по одному из путей указанных в настройках Delphi: "Tools > Options > Language > Delphi > Library > Library path".
  5. Всегда срабатывает переход к методу или свойству по клику на него мышкой с нажатым CTRL. Раньше IDE иногда никак не реагировала на подобные действия, что сильно раздражало.
  6. IDE и LSP-сервер являются разными процессами, поэтому каждый распределяет себе ресурсы в своем адресном пространстве, что хорошо для IDE Delphi на фоне адресных ограничений 32-х битных программ.
Теперь о попавшихся мне на глаза проблемах с Code Insight в Delphi 10.4.
  1. То, что Code Insight ищет с фильтром по вхождению вводимой строки, а не по ее началу, я назвал выше, как плюс. Но подобный поиск, является и минусом. Например, если в Delphi 10.3 в теле функции нажать "r", то сразу подставится "Result":
    Если в этом же модуле в Delphi 10.4 нажать "r", то там не повезет:
    Если продолжить набирать, то Code Insight уйдет далеко от искомого результата
    и подставит "Result" только, если набрать "resu":
  2. Несколько раз повторился старый баг c зависанием ScrollBar'а от Code Insight. Это когда после закрытия Code Insight его ScrollBar живет своей, отдельной от IDE жизнью. Он виден поверх окон любого другого приложения и даже, если свернуть все окна, поверх рабочего стола. Решением является повторный вызов Code Insight.
  3. В секции uses Code Insight ищет только по нативным библиотекам. Он даже не видит модули, которые включены в uses проекта, но не добавлены в проект. В Delphi 10.3, хоть с глюками, но это работало. Решением является настройка "Library path", как описано выше.
    Как вы видите, проблемы новой версии Code Insight в Delphi 10.4 Sydney мелкие или решаемые. Поэтому я говорю ей "ДА". Возможно я, что-то упустил, или пока не увидел. Тем, кому новый Code Insight не нравится, сообщаю или напоминаю, что ее легко можно вернуть к классической версии или отключить совсем:

1 комментарий: