История изменений
Исправление void, (текущая версия) :
Ты как-то слишком глубоко капнул :) Если используются элементы метапрограммирования, то на переваривание такого кода много ресурсов будет уходить - его же надо переваривать на лету. Я думаю это главная причина, почему IDEшки хитрые конструкции не индексируют.
Только что проверил в RubyMine в одном классе создать метод через define_method (аналог, кажется, create_function в php), в другом классе вызывая этот метод RubyMine его подчеркивает - не может определить действительно ли в том классе такой метод определен. То есть даже такие вещи уже не попадают в индекс и, естественно, можно забыть про autocomplete, go to declaration и тд. Как и в твоем примере, в общем.
Но мне и не нужно идеального go to declaration, мне хватает того, что дает индексатор в том же RubyMine - без парсинга сложный конструкций.
Вот есть реактивный кодо-индексатор ctags, есть плагин для его интеграции в ST2. Если бы он нормально индексировал руби код, мне его тоже хватило бы. Но он почему-то иногда не находит явным образом объявленые методы, иногда находит declaration методов в тексте комментариев (название метода совпадает со словом в тексте комментария). Если сердце так и не ляжет ни к какой IDE, вернусь на ST2/Vim и попробую допилить парсер рубишного кода для ctags.
А что значит статически определить declaration и жесткий runtime? Во всяком случае на лету дергать целый интерпретатор мне представляется очень дорогим решением...
Исходная версия void, :
Ты как-то слишком глубоко капнул :) Если используются элементы метапрограммирования, то на переваривание такого кода много ресурсов будет уходить - его же надо переваривать на лету. Я думаю это главная причина, почему IDEшки хитрые конструкции не индексируют.
Только что проверил в RubyMine в одном классе создать метод через define_method (аналог, кажется, create_function в php), в другом классе вызывая этот метод RubyMine его подчеркивает - не может определить действительно ли в том классе такой метод определен. То есть даже такие вещи уже не попадают в индекс и, естественно, можно забыть про autocomplete, go to declaration и тд.
Но мне и не нужно идеального go to declaration, мне хватает того, что дает индексатор в том же RubyMine - без парсинга сложный конструкций.
Вот есть реактивный кодо-индексатор ctags, есть плагин для его интеграции в ST2. Если бы он нормально индексировал руби код, мне его тоже хватило бы. Но он почему-то иногда не находит явным образом объявленые методы, иногда находит declaration методов в тексте комментариев (название метода совпадает со словом в тексте комментария). Если сердце так и не ляжет ни к какой IDE, вернусь на ST2/Vim и попробую допилить парсер рубишного кода для ctags.
А что значит статически определить declaration и жесткий runtime? Во всяком случае на лету дергать целый интерпретатор мне представляется очень дорогим решением...