Find resource/Find class

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Find resource/Find class

Сообщение Mirage » 08.09.2012 09:56:54

В Эклипсе есть такие удобные функции как Find resource - выводит окошко с инкрементальным поиском по всем файлам в проекте.
И Find class - такой же поиск, но по классам.
Без них после Эклипса и Идеи тяжко.
В Дельфи родных таких нет, там вообще с поиском именно по проекту проблемы, но первое достигается с помощью GExpert'овского Open File, ближайший и вполне удобный аналог второго - Procedure List из CNPack.
В Лазарусе есть что-то аналогичное?
Procedure List всегда пуст.:(

Там же есть поиск всех использований идентификатора.
В Лазарусе последнее тоже есть, но выводит малопонятную ошибку "No pascal found (maybe function was called before BuildTree)", либо другую, но столь же малопонятную. Возможно, эта фича не работает в редиме совместимости кода с Delphi.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Find resource/Find class

Сообщение sign » 08.09.2012 15:54:11

У меня Список Процедур (как и остальное) работает во всех режимах.
XP SP3
Лазарь 1.1
2.6.0
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: Find resource/Find class

Сообщение hinst » 09.09.2012 16:51:52

Из стандартных функций лазаруса:
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 - ну это просто текстовый поиск по проекту либо можно каталог указать

Procedure List - это где вообще такое?
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Find resource/Find class

Сообщение sign » 10.09.2012 04:53:04

hinst писал(а):Procedure List - это где вообще такое?

Меню: "Поиск" -> "Список процедур"
Или Ctrl-G
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: Find resource/Find class

Сообщение Mirage » 11.09.2012 23:57:23

У меня 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, начал набирать что нужно и оно выводится в виде списка. Вайлдкарды понимает (* и ?). Не всегда ведь точно помнишь как называется та или иная вещь.
И сделать такую функцию вроде не сложно.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Find resource/Find class

Сообщение hinst » 12.09.2012 01:24:58

> Нет инкрементального поиска. И потом, оно не ищет по путям проекта.
У меня всё ищет

> Только по Lazarus IDE что-то находится.
У меня всё находится

Забыл как называется идентификатор но помнишь файл - иди в Code Explorer, там фильтр есть, не помнишь какой файл - иди в Code Browser, там есть поиск по лазарусу, по проекту и по проекту + по всем используемым в проекте пакетам. Забыл как называется файл в проекте - иди в Project Inspector, там фильтр есть
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Find resource/Find class

Сообщение Mirage » 15.09.2012 15:09:29

Code Explorer пуст. Видимо, что-то как-то надо настроить, чтобы работало, а может не работает с исходниками совместимыми с Delphi.
Ибо непонятно что нужно настраивать чтобы работал банальный поиск? Компилятор все ведь находит.
На виндовой версии Лазаруса тоже самое с моими проектами. Проект по умолчанию что-то показывает.

Code Explorer предлагает после поиска пораскрывать ветки в treeview чтобы найти наконец нужное.

Project Inspector уверен, что ничего, кроме основного модуля в проекте нет, несмотря на кучу модулей в uses.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Find resource/Find class

Сообщение Максим » 15.09.2012 18:37:19

Mirage писал(а):Ибо непонятно что нужно настраивать чтобы работал банальный поиск? Компилятор все ведь находит.

Mirage писал(а):Project Inspector уверен, что ничего, кроме основного модуля в проекте нет, несмотря на кучу модулей в uses.

Нужно добавить все модули проекта в него так, чтобы они были видны в инспекторе проекта.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 599
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: Find resource/Find class

Сообщение Mirage » 15.09.2012 19:02:54

Вроде в Паскале модули добавляются посредством ключевого слова "uses".
Как можно еще добавить модули я, честно говоря, не знаю.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Find resource/Find class

Сообщение hinst » 15.09.2012 21:12:43

Когда работаешь с лазарус-проектом, у тебя используется куча модулей. Есть все модули, в том числе Classes, SysUtils и прочие из RTL или там Forms из LCL. Они используются, так как они есть в uses одного или нескольких модулей проекта либо в uses главного файла. И есть модули собственно проекта типа main_executable.lpr, form1.pas. mycoolmodule.pas и прочие. Таким образом, есть модули собственно проекта, и те, которые просто используются и принадлежат RTL'у компилятора, либо какому либо другому пакету, либо просто находятся в одной из папок, по которой осуществляетс поиск модулей. Лазарус-пакеты тоже по тому же принципу строятся, есть модули пакета, есть пакеты-зависимости, и модули пакетов-зависимостей не модули пакета. Таким образом, проект при компиляции получает доступ только к _скомпилированным_ модулям других проектов\пакетов, а не к их исходникам.
В Эклипсе, как я подозреваю, по умолчанию все файлы, которые в папке исходников Workspace'а, считаются файлами проекта. Ну или Х его З, не помню я уже, как там. Так вот, в Лазарусе файлы проекта только те файлы, которые явно добавлены в проект кнопкой добавить. Только обычно их не приходится явно добавлять потому, что когда пишешь проект, то создаёшь файл из лазаруса, и он по умолчанию сразу добавляется в список файлов проекта
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Find resource/Find class

Сообщение Mirage » 15.09.2012 23:09:28

В Java есть такое понятие как classpath, которое представляет собой список директорий, где могут находиться исходники и библиотеки. Компилятор их там ищет. И, как ни странно, там же их ищет и IDE. И находит, что характерно. И неважно где, как и что создавалось.
Аналог classpath есть и FPC. Но в IDE зачем-то решили идти каким-то своим путем. И теперь мне сотню модулей надо руками добавлять.
Причем Code Browser теперь их видит, считает пустыми. :shock:
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Find resource/Find class

Сообщение alexey38 » 16.09.2012 06:28:37

Mirage писал(а):В Java есть такое понятие как classpath, которое представляет собой список директорий, где могут находиться исходники и библиотеки. Компилятор их там ищет. И, как ни странно, там же их ищет и IDE. И находит, что характерно. И неважно где, как и что создавалось.
Аналог classpath есть и FPC. Но в IDE зачем-то решили идти каким-то своим путем. И теперь мне сотню модулей надо руками добавлять.

hinst писал(а):Так вот, в Лазарусе файлы проекта только те файлы, которые явно добавлены в проект кнопкой добавить. Только обычно их не приходится явно добавлять потому, что когда пишешь проект, то создаёшь файл из лазаруса, и он по умолчанию сразу добавляется в список файлов проекта


Лично мне было бы удобнее делить исходники на несколько категорий: файлы проекта, файлы моих библиотек (группы проектов по некой тематике), файлы сторонних библиотек, файлы библиотек самой среды разработки (лазарь, дельфи). Для компиляции все добавляется словом uses. Для отнесения к проекту все добавляется без классификации. В итоге сам иногда некие файлы добавляешь в проект, а иногда удаляешь (когда список становится неудобно большим). Что мне хотелось я не встречал ни где, хотя м.б. плохо смотрел среды разработок, которыми не пользовался активно (тот же эклипс).
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: Find resource/Find class

Сообщение hinst » 16.09.2012 13:14:38

Mirage У тебя в проекте сотня модулей? и они все лежат по разным папкам?
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Find resource/Find class

Сообщение Максим » 16.09.2012 16:15:42

alexey38 писал(а):Для отнесения к проекту все добавляется без классификации.

Это неправда, есть пакеты.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 599
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: Find resource/Find class

Сообщение Mirage » 16.09.2012 17:03:57

Что мне хотелось я не встречал ни где


Чтобы встречать, надо пробовать новое, причем как следует пробовать.
Тут большинство, видимо, пробовало только Лазарус и Дельфи.

У тебя в проекте сотня модулей? и они все лежат по разным папкам?


Модулей около того. Папок около десятка.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 235

Рейтинг@Mail.ru