Ну и от меня вам картиночка
От: Блудов Павел Россия  
Дата: 01.11.06 07:39
Оценка: 124 (4)


Так выглядит Goto для типа, который живёт в другой сборке если рядом есть .pdb. Поскольку в pdb-файлах хранится информация только о методах, то максимум что получается это вывалить список Locations для всех методов этого класса. Включая конструкторы, геттеры, индексеры и т.д.

В идеале можно распарсивать по-новой файлы, до которых добрались через pdb и находить настоящие объявления классов. Но лично мне хватает того, что пока получилось.
... << RSDN@Home 1.2.0 alpha rev. 642>>
Re: Ну и от меня вам картиночка
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.11.06 11:02
Оценка:
Здравствуйте, Блудов Павел, Вы писали:

БП>Поскольку в pdb-файлах хранится информация только о методах, то максимум что получается это вывалить список Locations для всех методов этого класса.


Это не хорошо.

БП>В идеале можно распарсивать по-новой файлы, до которых добрались через pdb и находить настоящие объявления классов. Но лично мне хватает того, что пока получилось.


Предлагаю все же пропускать этот файл через парсер и вытягивать таким образом список типов. Ну, а там уже пробегая по АСТ находить нужный тип (и вообще нужные элементы).

Темболее что это совсем не сложно. Надо создать лексер/парсер и скормить им файл.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Ну и от меня вам картиночка
От: IT Россия linq2db.com
Дата: 01.11.06 14:55
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Темболее что это совсем не сложно. Надо создать лексер/парсер и скормить им файл.


Всё таки нужен скрытый проект для таких вещей.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Ну и от меня вам картиночка
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.11.06 16:46
Оценка:
Здравствуйте, IT, Вы писали:


IT>Всё таки нужен скрытый проект для таких вещей.


По крайней мере для этой задачи никакой проект не нужен. Тут нужно тупо распарсиь (без типизации) файл и найти в нем локешон класса (по имени).
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Ну и от меня вам картиночка
От: Блудов Павел Россия  
Дата: 03.11.06 04:00
Оценка: 1 (1)
Здравствуйте, VladD2, Вы писали:

VD>По крайней мере для этой задачи никакой проект не нужен. Тут нужно тупо распарсиь (без типизации) файл и найти в нем локешон класса (по имени).

Похоже, всё-таки нужен. Дело в том, что сейчас можно из Nemerle.Completion2\CodeModel\ExprFinder.n попасть в Nemerle\ncc\parsing\AST.n, если нажать F12 на типе Location.
Но открывшийся файл получается сам по себе. Он никак не раскрашен, сделать Goto из него тоже не получается. А хочется. Вот тут можно создать виртуальный проект или что-то навроде и добавлять в него файлики по мере надобности.
... << RSDN@Home 1.2.0 alpha rev. 642>>
Re[5]: Ну и от меня вам картиночка
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.11.06 08:10
Оценка:
Здравствуйте, Блудов Павел, Вы писали:

БП>Но открывшийся файл получается сам по себе. Он никак не раскрашен, сделать Goto из него тоже не получается.


То что не получается сделать goto — это понятно. А то что он вообще не раскрашен — это проблемы реализации. Нет никаких причин препятсвующих минимальной раскраске таких файлов.

БП> А хочется. Вот тут можно создать виртуальный проект или что-то навроде и добавлять в него файлики по мере надобности.


Тут есть два момента:
1. Каждый проект отжирает ресурсы. И не факт, что конечный пльзователь захочит платить за лишний проект. Ведь он всегда может окрыть этот проект в среде явным образом.
2. Не ясно как получить полный список файлов такого проекта. Этот пункт наверно решаем, но с этим нуно разбираться.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Ну и от меня вам картиночка
От: Блудов Павел Россия  
Дата: 03.11.06 08:18
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>2. Не ясно как получить полный список файлов такого проекта. Этот пункт наверно решаем, но с этим нуно разбираться.

В общем виде никак не рашаем. Гарантировано можно получить только список файлов, в которых есть исполняемый код.
Если кода нет, а есть, например, только определение енума, то о пренадлежности такого файла к проекту можно лишь гадать.
С другой стороны, если кода нет, то всё что нужно можно нагенерить из метаданных. Кроме комментариев, разумеется.
... << RSDN@Home 1.2.0 alpha rev. 642>>
Re[7]: Ну и от меня вам картиночка
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.11.06 11:35
Оценка: +1
Здравствуйте, Блудов Павел, Вы писали:

БП>С другой стороны, если кода нет, то всё что нужно можно нагенерить из метаданных. Кроме комментариев, разумеется.


Ну, да. Остается только Рефлектор подключить и будет все ОК.
У нас не слишком наполеоновские планы?

Откровенно говоря то что работает переход по pdb уже офигительно круто! В C#-проектах этого очень нехватало.

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

Ну, а fake-проекты будет создавать уже как-нить потом.

Сейчас самое важное довести проект до работоспособности. Так чтобы на нем уже можно было развивать самого себя и писать другие проекты.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Ну и от меня вам картиночка
От: Блудов Павел Россия  
Дата: 03.11.06 11:58
Оценка:
Здравствуйте, VladD2, Вы писали:

+1 ко всему сказаному. Мне, например, очень хочется довести проект до того состояния, когда можно будет сделать хотя бы бету, пересесть на неё и дальше уже писать на ней.
... << RSDN@Home 1.2.0 alpha rev. 642>>
Re[9]: Ну и от меня вам картиночка
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.11.06 12:25
Оценка:
Здравствуйте, Блудов Павел, Вы писали:

БП>+1 ко всему сказаному. Мне, например, очень хочется довести проект до того состояния, когда можно будет сделать хотя бы бету, пересесть на неё и дальше уже писать на ней.


О том и речь. И в принципе осталось не так уж много.

Потому и не охота сейчас ввязываться в объемистые переделки или расширения.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Ну и от меня вам картиночка
От: PhantomIvan  
Дата: 03.11.06 16:09
Оценка:
БП>>+1 ко всему сказаному. Мне, например, очень хочется довести проект до того состояния, когда можно будет сделать хотя бы бету, пересесть на неё и дальше уже писать на ней.

а я бы на вашем месте уже пересел бы
по крайней мере я сижу уже, и наблюдаю некоторый комфорт
что мешает собственно?

а фейк проект и наполеоновские планы — я за них
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[11]: Ну и от меня вам картиночка
От: Блудов Павел Россия  
Дата: 04.11.06 08:03
Оценка:
Здравствуйте, PhantomIvan, Вы писали:

PI>что мешает собственно?

Кое-что поглюкивает. В основном компилятор, который используется немного не по назначению.
... << RSDN@Home 1.2.0 alpha rev. 642>>
Re[12]: Ну и от меня вам картиночка
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.11.06 10:58
Оценка:
Здравствуйте, Блудов Павел, Вы писали:

БП>Кое-что поглюкивает. В основном компилятор, который используется немного не по назначению.


Компилятор работает по назначению. Все что в нем не так или недостает нужно просто деделать.

Так что не стесняйтесь. Говорите что нехватает. Прикрутим.

ЗЫ

Кстати, все же при переходе на типы точно надо парсить исходник. Я уже малось задолбался высматривать тип по списку его членов (он ведь иногда не маленький).

Надо бы сделать так...
1. По членам классов определять список файлов в которых расположен тип.
2. Парсить эти файлы и по АСТ находить в нем фхождения нужного типа.
3. Выводить на экран список этих файлов или сразу переходить к началу типа если он находитс в одном файле.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Ну и от меня вам картиночка
От: Блудов Павел Россия  
Дата: 04.11.06 11:03
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Надо бы сделать так...

VD>1. По членам классов определять список файлов в которых расположен тип.
VD>2. Парсить эти файлы и по АСТ находить в нем фхождения нужного типа.
VD>3. Выводить на экран список этих файлов или сразу переходить к началу типа если он находитс в одном файле.

Именно этим я и занимаюсь. Более того, без этого нельзя, например, перейти к публичному полю.
Опять-таки хочется чтобы курсор вставал на имя свойства, а не на его геттера/сеттера. Это тоже только распарсиванием.
Вобщем позараз нужно.
... << RSDN@Home 1.2.0 alpha rev. 642>>
Re[14]: Ну и от меня вам картиночка
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.11.06 11:31
Оценка:
Здравствуйте, Блудов Павел, Вы писали:

БП>Опять-таки хочется чтобы курсор вставал на имя свойства, а не на его геттера/сеттера. Это тоже только распарсиванием.


Эта проблема вызвана кривотой локешонов в свойствах. В принципе я думал заняться ими когда разгребу другие проблемы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.