В Emacs, как я могу переключаться между функциями в текущем файле? - PullRequest
18 голосов
/ 25 января 2010

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

Я обычно использую etags для навигации, но иногда я ищу метод фреймворка, который был переопределен в нескольких файлах. В этих случаях я могу найти нужный мне файл, но затем я бы хотел быстро перейти к этой функции. В TextMate есть аналогичная функция, где вы можете выбрать определение из списка в правом нижнем углу редактора.

Ответы [ 8 ]

35 голосов
/ 25 января 2010

Просто для перехода по функциям в текущем файле? Используйте имя . Это самая простая и легкая из всех перечисленных альтернатив, которых может быть достаточно для того, что вы хотите. Он также встроен в Emacs и имеет минимальные трудности при настройке. Он имеет графический и текстовый интерфейсы. Все, что угодно дополнительно , и вам будет лучше, если вы воспользуетесь другими замечательными предложениями, сделанными здесь

2 голосов
/ 25 января 2010

Вы можете использовать etags-select для выбора из нескольких совпадающих тегов. Но ответ на ваш вопрос: имя .

1 голос
/ 25 января 2010
Speedbar

входит в стандартную комплектацию и предоставляет вам складное меню для каждого файла в текущем каталоге, по умолчанию средний щелчок по записи для определения функции переходит к этому определению. В emacs23 это было изменено на более обычный щелчок левой кнопкой мыши.

0 голосов
/ 22 августа 2011

Для навигации по текущему файлу или выбранному набору файлов вам не нужен файл TAGS. Вы можете использовать Imenu . Но лучше использовать команды Icicles imenu .

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

Команда icicle-imenu связана в режиме Сосулька с C-c = . Но вы также можете найти только команду или просто некомандную функцию (неинтерактивную), используя команду icicle-imenu-command или icicle-imenu-non-interactive-function.

Эти команды мультикоманды , что означает, что они на самом деле являются браузерами: вы можете переключаться между определениями функций с помощью клавиш C-RET или C-mouse-2 (прямые прыжки) и C-down (цикл). Нажмите RET или щелкните mouse-2 , чтобы расположиться в конечном пункте назначения.

0 голосов
/ 26 января 2010

глобальные gtags очень хороши

0 голосов
/ 25 января 2010

Если М-. воспитывает неправильный метод, вы можете набрать C-u M-. найти следующую с тем же именем.

0 голосов
/ 25 января 2010

попробуйте CEDET. Сложно настроить первый, но вот отличный урок: от Alex ott

И когда он будет установлен, вы можете использовать semantic-complete-jump. нажал пару раз вкладку, и это также вызывает определения символов.

0 голосов
/ 25 января 2010

Сосульки, вероятно, ближе к тому, что вы ищете:

http://www.emacswiki.org/emacs/Icicles_-_Tags_Enhancements

Это расширение etags и включает (помимо прочего) имя файла с тегом, чтобы вы могли определить, ищите ли вы его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...