В Эклипсе есть такие удобные функции как Find resource - выводит окошко с инкрементальным поиском по всем файлам в проекте. И Find class - такой же поиск, но по классам. Без них после Эклипса и Идеи тяжко. В Дельфи родных таких нет, там вообще с поиском именно по проекту проблемы, но первое достигается с помощью GExpert'овского Open File, ближайший и вполне удобный аналог второго - Procedure List из CNPack. В Лазарусе есть что-то аналогичное? Procedure List всегда пуст.
Там же есть поиск всех использований идентификатора. В Лазарусе последнее тоже есть, но выводит малопонятную ошибку "No pascal found (maybe function was called before BuildTree)", либо другую, но столь же малопонятную. Возможно, эта фича не работает в редиме совместимости кода с Delphi.
Из стандартных функций лазаруса: Search -> Find In Files / Найти в файлах есть View -> Code Browser есть View -> Code Explorer есть Search -> Find identifier references есть Надо какие-нибудь более менее стабильные сборки лазаруса качать. Не релизы, но и не самые новые, а какие-нибудь промежуточные, но более-менее проверенные У меня Lazarus 1.1 @ 2012-07-30, все перечисленные функции работают, в Code Browser'е по идее можно классы искать, в Code Explorer'е есть полезная фича - фильтр. Find identifier references - просто ставишь курсор на идетнификатор в коде и нажимаешь Ctrl+Shift+I; Enter и все обращения к идентификатору более-менее находятся. Find in files - ну это просто текстовый поиск по проекту либо можно каталог указать
У меня Lazarus 1.1 из пакета CodeTyphoon. FPC 2.7.1. Ubuntu 10.10. На стабильность в общем жалоб нет, но вот именно функции поиска...
> Search -> Find In Files / Найти в файлах есть Нет инкрементального поиска. И потом, оно не ищет по путям проекта.
> View -> Code Browser есть Только по Lazarus IDE что-то находится.
> View -> Code Explorer есть Это только по текущему файлу.
Это ж так удобно - нажал ctrl+shift+R, начал набирать что нужно и оно выводится в виде списка. Вайлдкарды понимает (* и ?). Не всегда ведь точно помнишь как называется та или иная вещь. И сделать такую функцию вроде не сложно.
> Нет инкрементального поиска. И потом, оно не ищет по путям проекта. У меня всё ищет
> Только по Lazarus IDE что-то находится. У меня всё находится
Забыл как называется идентификатор но помнишь файл - иди в Code Explorer, там фильтр есть, не помнишь какой файл - иди в Code Browser, там есть поиск по лазарусу, по проекту и по проекту + по всем используемым в проекте пакетам. Забыл как называется файл в проекте - иди в Project Inspector, там фильтр есть
Code Explorer пуст. Видимо, что-то как-то надо настроить, чтобы работало, а может не работает с исходниками совместимыми с Delphi. Ибо непонятно что нужно настраивать чтобы работал банальный поиск? Компилятор все ведь находит. На виндовой версии Лазаруса тоже самое с моими проектами. Проект по умолчанию что-то показывает.
Code Explorer предлагает после поиска пораскрывать ветки в treeview чтобы найти наконец нужное.
Project Inspector уверен, что ничего, кроме основного модуля в проекте нет, несмотря на кучу модулей в uses.
Когда работаешь с лазарус-проектом, у тебя используется куча модулей. Есть все модули, в том числе Classes, SysUtils и прочие из RTL или там Forms из LCL. Они используются, так как они есть в uses одного или нескольких модулей проекта либо в uses главного файла. И есть модули собственно проекта типа main_executable.lpr, form1.pas. mycoolmodule.pas и прочие. Таким образом, есть модули собственно проекта, и те, которые просто используются и принадлежат RTL'у компилятора, либо какому либо другому пакету, либо просто находятся в одной из папок, по которой осуществляетс поиск модулей. Лазарус-пакеты тоже по тому же принципу строятся, есть модули пакета, есть пакеты-зависимости, и модули пакетов-зависимостей не модули пакета. Таким образом, проект при компиляции получает доступ только к _скомпилированным_ модулям других проектов\пакетов, а не к их исходникам. В Эклипсе, как я подозреваю, по умолчанию все файлы, которые в папке исходников Workspace'а, считаются файлами проекта. Ну или Х его З, не помню я уже, как там. Так вот, в Лазарусе файлы проекта только те файлы, которые явно добавлены в проект кнопкой добавить. Только обычно их не приходится явно добавлять потому, что когда пишешь проект, то создаёшь файл из лазаруса, и он по умолчанию сразу добавляется в список файлов проекта
В Java есть такое понятие как classpath, которое представляет собой список директорий, где могут находиться исходники и библиотеки. Компилятор их там ищет. И, как ни странно, там же их ищет и IDE. И находит, что характерно. И неважно где, как и что создавалось. Аналог classpath есть и FPC. Но в IDE зачем-то решили идти каким-то своим путем. И теперь мне сотню модулей надо руками добавлять. Причем Code Browser теперь их видит, считает пустыми.
Mirage писал(а):В Java есть такое понятие как classpath, которое представляет собой список директорий, где могут находиться исходники и библиотеки. Компилятор их там ищет. И, как ни странно, там же их ищет и IDE. И находит, что характерно. И неважно где, как и что создавалось. Аналог classpath есть и FPC. Но в IDE зачем-то решили идти каким-то своим путем. И теперь мне сотню модулей надо руками добавлять.
hinst писал(а):Так вот, в Лазарусе файлы проекта только те файлы, которые явно добавлены в проект кнопкой добавить. Только обычно их не приходится явно добавлять потому, что когда пишешь проект, то создаёшь файл из лазаруса, и он по умолчанию сразу добавляется в список файлов проекта
Лично мне было бы удобнее делить исходники на несколько категорий: файлы проекта, файлы моих библиотек (группы проектов по некой тематике), файлы сторонних библиотек, файлы библиотек самой среды разработки (лазарь, дельфи). Для компиляции все добавляется словом uses. Для отнесения к проекту все добавляется без классификации. В итоге сам иногда некие файлы добавляешь в проект, а иногда удаляешь (когда список становится неудобно большим). Что мне хотелось я не встречал ни где, хотя м.б. плохо смотрел среды разработок, которыми не пользовался активно (тот же эклипс).