Comments 22
Крутые штуки. Надеюсь Structural Search в Rider тоже когда-нибудь появится. Пока приходится извращаться с регулярками.
Также большой респект ребятам из IntelliJ, они гении.
По описанию выглядит как тоже самое.
Вообще, насколько я понимаю, механизм достаточно абстрактен и универсален. Даром, что даже на SQL запросах и на HTML разметке работает. Ему же, по сути, только Psi модель нужна.
Так что, если решарпер строит эту модель для C#, то и механизм сможет спокойно по нему работать.
О! А это действительно может немного облегчить жизнь. Спасибо!
Хотя от необходимости справки это не избавляет. Но хотя бы упрощает понимание структуры.
А это точно не плагином каким-нибудь делается? У меня нету такого пункта меню...
добавляем idea.is.internal=true.
2. Перезапускаем
Ого! Век живи — век учись!
Но это уже не для рядовой разработки, я так понимаю. Иначе так глубоко не прятали бы.
Там потом еще появляется интересное всякое в Tools | Internal Actions.
Да, так можно случайно открыть портал в ад, мы не особо кричим о наличии реджистри потому что ну… экспериментальное же, может не работать или ломать, кто знает.
Да. Заработало.
Но лично мне плагин пока нравится больше, т.к. даёт больше полезной информации именно для написания скриптов в фильтрах.
Но всё равно спасибо!
Вообще сейчас вспомнил, как в Kotlin изменения делают, а потом интеншены под эти изменения пилят, чтобы автоматически мигрировать на новые версии.
По идее с помощью этого инструмента можно попробовать аналогично и со своими проектами поступать. Например не просто депрекейтить какой-либо метод с указанием на что заменить. А прямо интеншен сделать, чтобы и заменяло сразу.
Но тут понадобится отдельный скилл написания таких вещей...
Я бы хотел предостеречь от полностью автоматического использования структурной замены без проверки глазами результата. К сожалению, может сильно изменить семантику кода.
Так происходит потому что поиск игнорирует какие-то вещи в Psi-дереве (вполне естественно), а структурная замена не пытается "немного переделать" код, а тупо заменяет текст на набранный пользователем шаблон, подставляет переменные шаблона поиска, после чего пытается активно восстановить потерянные вещи. Например, комментарии, модификаторы методов, какие-то отдельные блоки case
… И наверняка что-то не учтено.
Если что, структурный поиск и замена так же доступны в том же VS Code (и можно в другие редакторы добавить).
Для Go это делается через gogrep.
Для PHP это делается через phpgrep.
Ничто не припятствует использовать gogrep/phpgrep внутри emacs/vim/чём-либо другом. Причём плюс перечисленных инструментов в том, что они могут быть использованы в терминале напрямую.
IntelliJ IDEA: Structural Search & Replace