3

Я годами пользуюсь малоизвестным редактором под названием "FTE" (или eFTE); у него есть хорошая утилита, которая может отображать список подпрограмм / функций / классов (или любую другую вещь - в зависимости от того, какое регулярное выражение вы определяете в его файле конфигурации) в исходном текстовом файле (C, C++, Fortran, ... что там у вас). Эта функция позволяет мне быстро переходить из одной точки в другую в исходном файле. Возможно, первоначальный ярлык в FTE - ^I (Control+I). Имеет ли Emacs похожую функциональность? Emacs гораздо более продвинутый, чем FTE, и я был бы удивлен, если бы никто не разработал такой объект.

Спасибо, Wirawan

5 ответов5

6

Попробуйте M-x occur RET exp RET - это перечисляет в новом буфере все вхождения exp в текущем буфере.

5

Конечно, большинство людей скажут вам просто использовать современную IDE, но они не понимают всю мощь emacs . Лично я использую ECB, из-за чего мой emacs выглядит так:

Среднее окно с левой стороны - это список функций текущего исходного файла. Средний щелчок по имени перемещает курсор к определению этой функции.

Для установки следуйте инструкциям на веб-сайте ECB, чтобы установить ECB, а затем добавьте эту строку в ~/.emacs (соответственно изменив местоположение):

(add-to-list 'load-path
             "~/.emacs-lisp/ecb/")

Другим вариантом является CEDET, но я не использовал его.

1

В Emacs есть несколько способов получить эту функциональность.

Более легкий метод - с помощью тегов, которые с подходящей настройкой могут служить большинству целей. После того, как вы создали файл тегов (который выполняется в оболочке, например, через cd /path/to/project; ctags -e -R .) И выбрали его через M-x visit-tags-table RET /path/to/TAGS RET , вы можете, например, использовать M-. при вызове функции, чтобы перейти к определению функции, M-x tags-search для поиска в файлах, описанных в таблице тегов, & c. Смотрите на связанной странице довольно подробное описание доступных инструментов.

Более тяжелый метод - это Semantic, комбинация лексера / парсера, полностью реализованная в Emacs Lisp. Хотя я не настолько знаком с Semantic, как с тегами, у меня сложилось впечатление, что Semantic несет более тяжелую начальную нагрузку при установке в обмен на более общий полезный результат. В дополнение к связанной странице справочника (статья в Emacs Wiki)[ http://www.emacswiki.org/emacs/SemanticBovinator] может помочь здесь.

1

Используйте Imenu:

  1. M-X imenu
  2. tab All.Methods
  3. tab чтобы увидеть все методы
0

Вы сказали «отобразить список подпрограмм / функций / классов (или любую другую вещь - в зависимости от того, какое регулярное выражение вы определяете в его файле конфигурации) в исходном текстовом файле». На данный момент игнорируя роль в паранах, на которую ответили другие, неясно, что вы подразумеваете под функцией и т.д., Находящейся « в » исходном файле.

Если вы спрашиваете о просмотре списка функций и т.д., Которые определены в данном исходном файле, а затем о навигации по их определениям, посмотрите на Imenu в Emacs. Смотрите руководство по Emacs, узел Imenu . Смотрите также эту EmacsWiki страницу о Imenu:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .