GNU emacs эквивалент func-menu - PullRequest
       38

GNU emacs эквивалент func-menu

7 голосов
/ 20 января 2012

Есть ли и эквивалентное func-menu для GNU emacs?Я использовал func-menu, когда у меня был доступ к xemacs, и я предпочитаю его поведение по сравнению с speedbar или sr-speedbar.В частности:

  • Мне нравится, что отображаются только функции для текущего файла.

  • Список функций может быть вызван из текущего кадра и не является отдельным окном, которое я мог бы закрыть.

  • текущее имя функции отображается в строке режима.

Есть ли пакет для GNU emacs, который ближе к func-menu?

Ответы [ 3 ]

7 голосов
/ 31 мая 2012

imenu будет аналогичной функцией в GNU Emacs.

См. C-h f imenu-add-menubar-index RET .
Вы можете назвать это в вашем режиме ловушками для режимов с поддержкой imenu.

Естественно, поддерживается elisp, поэтому для быстрой демонстрации:

  • М-х find-library RET imenu RET
  • М-х imenu-add-menubar-index RET

, а затем увидеть новый пункт «Указатель» в строке меню, а также на C-

Конечно, есть также интерфейс клавиатуры, просто вызывая Mx imenu RET (с завершением TAB), но я очень рекомендую добавить интеграцию ido, которая может можно найти в EmacsWiki * - я считаю, что это в целом более быстрый интерфейс, чем при использовании мыши.

Подробнее см. C-h i g (elisp) Imenu RET

Для конфигурации см. M-x customize-group RET imenu RET

(*) Наряду с множеством других способов улучшения этой функции, поэтому, даже если вы не хотите использовать ido, вам обязательно нужно прочитать эту вики-страницу после того, как вы ознакомитесь с основными версия в действии.

3 голосов
/ 21 января 2012

Это режим XEmacs func-menu, о котором вы говорите? Он дает вам список функций в текущем файле.

Если это так, то вы можете в основном копироватьфункциональность в GNU Emacs с набором инструментов разработки Emacs, CEDET (в частности, синтаксический анализатор семантического кода) и обозревателем кода Emacs, ECB .

  • Окно Методы ECB показывает все символы в выбранном буфере исходного кода.Это отдельное окно в смысле Emacs, то есть область редактирования, показывающая один буфер, несколько из которых могут находиться в одном окне диспетчера окон.Это не кадр Emacs, поэтому он не будет скрыт.
  • Режим семантики stickyfunc-mode может показывать текущую функцию в строке в верхней части буфера исходного кода.Он использует особенность GNU Emacs заголовок .Это не совсем то же самое, что отображение имени функции в строке режима, но достаточно близко.

Обратите внимание, что ECB требует CEDET, и оба способа сложны в установке без менеджера пакетов XEmacs.

0 голосов
/ 31 мая 2012

Я не уверен, но я думал, что «переход к функции в буфере» был назван режимом дыма. Если это так, поиск аналога для режима дыма может помочь вам сосредоточиться на том, что вы ищете.

Вот выдержка из руководства XEmacs, в котором упоминается режим дыма:

"41. Переход к функции внутри буфера.

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

Поддерживаются следующие режимы:

Ada, Assembly, BibTex, C ++, C, Dired, Ehdm, ELisp, FORTRAN, Ksh, Латекс, Lelisp, Makefile, Maple, Modula2, Modula3, Outline, Objective-C, Pascal, Perl, Postscript, Prolog, PVS, Python, SGML, Схема, Tcl, Verilog, Руководство, Ruby, JavaScript

Чтобы установить этот пакет, добавьте в файл инициализации следующее:

(add-hook 'find-file-hooks 'fume-setup-buffer)

(add-hook 'Manual-mode-hook 'turn-on-fume-mode)"
...