Якщо ви пишете C / C ++ / Java / Emacs Lisp / Python, тоді семантично-липкий-функціональний режим зробить все, що вам завгодно.
ПРИМІТКА . Це, здається, працює з CEDET від Git, але це не CEDET, що знаходиться в Emacs 24.4. Щоб отримати Emacs від Git:
git clone http://git.code.sf.net/p/cedet/git cedet
І завантажте CEDET спочатку над усім іншим у свій файл init:
(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"))
При ввімкненні цей режим показує, що функціональна точка знаходиться в першому рядку поточного буфера. Це корисно, якщо у вас дуже довга функція, яка поширюється більше, ніж на екрані, і вам не доведеться прокручувати вгору, щоб прочитати ім'я функції, а потім прокрутити вниз до вихідного положення.
Він відображає повнофункціональний інтерфейс (тип повернення, ім'я функції та параметри), а не лише ім'я функції.
Щоб увімкнути це, введіть цей код у свій файл init:
(require 'semantic)
(semantic-mode 1)
(global-semantic-stickyfunc-mode 1)
ОНОВЛЕННЯ : Одна з проблем поточного semantic-stickyfunc-mode
полягає в тому, що він не відображає всіх параметрів, які розкидані по декількох рядках. Щоб вирішити цю проблему, я створив пакет stickyfunc-Impro .
DEMO :
Ось демонстрація на C:
Ось демонстрація в Emacs Lisp:
ОНОВЛЕННЯ : Крім того, ви можете використовувати шлем-семантичний-або-ім'я . Коли ви знаходитесь у функції та виконуєте команду, курсор розміщується праворуч від функції у списку, тож ви завжди зможете побачити повний інтерфейс функції. DEMO:
По-перше, я використовую helm-semantic-or-imenu
для переходу до функції helm-define-key-with-subkeys
і переміщення точки до неї.
Потім я починаю helm-semantic-or-imenu
заново і helm-define-key-with-subkeys
попередньо вибирається.
Потім я переміщу точку на змінну карту helm та helm-semantic-or-imenu
знову виконую дві функції: helm-next-source та helm-previous-source. Цього разу замість того, щоб показувати поточний семантичний тег, над яким я оперую (що це карта шлема), він показує два інші теги в буфері Helm Semantic. Це тому, що я подав аргумент префікса перед запуском команди.
Крім того, ця демонстрація є в Emacs Lisp, вона працює і для C / C ++, і вона більш гнучка, якщо у вас дійсно довгий функціональний інтерфейс.