Как лучше всего просматривать исходный код внутри Emacs?

У меня есть рабочий процесс, в котором я использую grep и другие инструменты в оболочке для поиска в разных проектах, хотя мой главный редактор - emacs. Я обычно работаю над исправлением ошибок и незначительной разработкой исходного кода, который часто мне неизвестен, поэтому важно знать код. Я в основном работаю в php, ruby, java, perl и иногда python.

Существует ли какое-то общее расширение IDE в emacs, которое позволит мне иметь функциональность, например, определение goto из нескольких файлов, охватывающих все эти языки? Могут ли быть некоторые другие модули, которые могут быть полезны, будь то просмотр кода или индексированный поиск?

Ответ 1

Если вы хотите работать с множеством разных языков, ctags довольно гибкий. См. EmacsWiki для инструкций по интеграции ctags.

Ответ 2

Просмотр кода может означать кучу разных вещей. Режим, который вы упоминаете при использовании grep, подразумевает, что вы ищете определения функций или, возможно, ищете использование определенной функции.

В то время как CEDET поддерживает все перечисленные вами языки (некоторые с парсером ctags), начиная с новой области исходного кода, CEDEt не слишком хорош, пока он не проиндексировал весь проект для перечисленных вами задач. Однако вы можете использовать GNU Global или idutils, Я думаю, idutils поддерживает больше языков.

В CEDET команды semantic-symref и связанные с ними команды будут выполнять grep-подобную операцию с помощью grep, global или idutils (в зависимости от того, какой тип созданной таблицы тегов). В отличие от вывода стиля grep, вывод symref buffer показывает, какие функции используют эту команду. Затем вы можете выполнять макросы по хитам символа, который вам нужен, чтобы выполнять большие операции рефакторинга.

CEDET также поддерживает теги, такие как переход к функции, хотя, если вы уже используете что-то вроде ctags, которое отлично работает. CEDET лучше, когда дело доходит до обработки полиморфизма в некоторых случаях.

С помощью CEDET вы также можете получить структурированный просмотр через imenu, speedbar и ECB (браузер кода emacs). ECB особенно хорош тем, что буфер методов позволяет быстро перейти к различным частям класса. Особенно удобно для классов, где куски распространяются вокруг, как на С++. CEDET может даже создавать симпатичные диаграммы UML структур наследования классов, которые связаны с вашим кодом.

CEDET действительно учится, и некоторые из языков, которые вы перечисляете, не полностью поддерживаются для всех инструментов, хотя основной просмотр, рассмотренный выше, должен быть в порядке.

Ответ 3

etags-select (который вы можете получить от ELPA) делает мой браузер TAGS более приятным, по моему опыту, если вы привязываете M-. к etags-select-find-tag.

Ответ 4

Также, как etags/ctags, попробуйте запустить grep с помощью команды M-x grep, а не в оболочке, чтобы получить кликаемые ссылки в Emacs, вместо того, чтобы вручную находить файл и строку, соответствующие выходу grep.

Ответ 5

Для просмотра кода вы также можете использовать M-x imenu-tree