Если вы пишете на C / C ++ / Java / Emacs Lisp / Python, то semantic-sticky-func-mode будет делать то, что вы хотите.
ПРИМЕЧАНИЕ : Кажется, что это работает с CEDET из Git, а не с CEDET в настоящее время в Emacs 24.4. Чтобы получить Emacs от Git:
git clone http://git.code.sf.net/p/cedet/git cedet
И сначала загрузите CEDET над всем остальным в вашем файле инициализации:
(load-file (concat user-emacs-directory "/cedet/cedet-devel-load.el"))
(add-to-list 'load-path (concat user-emacs-directory "cedet/contrib"))
(load-file (concat user-emacs-directory "cedet/contrib/cedet-contrib-load.el"))
При включении этот режим показывает, что точка функции находится в первой строке текущего буфера. Это полезно, когда у вас очень длинная функция, которая распространяется не только на экран, и вам не нужно прокручивать вверх, чтобы прочитать имя функции, а затем прокрутить вниз до исходного положения.
Он отображает полный интерфейс функции (тип возвращаемого значения, имя функции и параметры), а не только имя функции.
Чтобы включить его, поместите этот код в файл инициализации:
(require 'semantic)
(semantic-mode 1)
(global-semantic-stickyfunc-mode 1)
ОБНОВЛЕНИЕ : Одной из проблем текущего semantic-stickyfunc-mode
является то, что он не отображает все параметры, которые разбросаны по нескольким строкам. Чтобы решить эту проблему, я создал пакет stickyfunc-gain .
ДЕМО :
Вот демо в C:
Вот демонстрация в Emacs Lisp:
ОБНОВЛЕНИЕ : В качестве альтернативы вы можете использовать helm-semantic-or-imenu . Когда вы находитесь внутри функции и запускаете команду, курсор помещается прямо в функцию в списке, поэтому вы всегда можете увидеть полный интерфейс функции. DEMO:
Сначала я использую helm-semantic-or-imenu
для перехода к функции helm-define-key-with-subkeys
и перемещения точки туда.
Затем я начинаю helm-semantic-or-imenu
снова и helm-define-key-with-subkeys
предварительно выбран.
Затем я перемещаю точку в переменную helm-map и helm-semantic-or-imenu
снова выполняю две функции: helm-next-source и helm-previous-source. На этот раз вместо того, чтобы показывать текущий семантический тег, в котором я работаю (это helm-map), он показывает два других тега в буфере Helm Semantic. Это потому, что я передал команду перед аргументом префикса.
Также эта демонстрация в Emacs Lisp, она работает и для C / C ++, и она более гибкая, если у вас очень длинный интерфейс функций.