Se stai scrivendo C / C ++ / Java / Emacs Lisp / Python, allora la modalità semantica-sticky-func farà quello che vuoi.
NOTA : sembra funzionare con CEDET di Git, non con CEDET attualmente disponibile in Emacs 24.4. Per ottenere Emacs da Git:
clone git http://git.code.sf.net/p/cedet/git cedet
E carica prima CEDET sopra ogni altra cosa nel tuo file 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"))
Quando abilitato, questa modalità mostra che il punto funzione è attualmente nella prima riga del buffer corrente. Ciò è utile quando si dispone di una funzione molto lunga che si estende su più di uno schermo e non è necessario scorrere verso l'alto per leggere il nome della funzione e quindi scorrere verso il basso fino alla posizione originale.
Visualizza l' interfaccia completa delle funzioni (tipo di ritorno, nome della funzione e parametri), non solo il nome della funzione.
Per abilitarlo, inserisci questo codice nel tuo file init:
(require 'semantic)
(semantic-mode 1)
(global-semantic-stickyfunc-mode 1)
AGGIORNAMENTO : Uno dei problemi con corrente semantic-stickyfunc-mode
è che non visualizza tutti i parametri che sono sparsi su più righe. Per risolvere questo problema, ho creato il pacchetto stickyfunc-boost .
DEMO :
Ecco una demo in C:
Ecco una demo in Emacs Lisp:
AGGIORNAMENTO : in alternativa, puoi usare helm-semantic-or-imenu . Quando ci si trova all'interno di una funzione ed si esegue il comando, il cursore si trova proprio sulla funzione nell'elenco, in modo da poter sempre vedere l'interfaccia completa della funzione. DEMO:
In primo luogo, utilizzo helm-semantic-or-imenu
per passare alla funzione helm-define-key-with-subkeys
e spostare il punto lì.
Quindi, ricomincio helm-semantic-or-imenu
ed helm-define-key-with-subkeys
è preselezionato.
Quindi, sposto il punto sulla variabile helm-map ed eseguo helm-semantic-or-imenu
nuovamente su due funzioni: helm-next-source e helm-precedente-source. Questa volta, invece di mostrare l'attuale tag semantico in cui opero (che è helm-map), mostra gli altri due tag nel buffer semantico di Helm. Questo perché ho fornito un argomento prefisso prima di eseguire il comando.
Anche questa demo è in Emacs Lisp, funziona anche con C / C ++ ed è più flessibile se hai un'interfaccia con funzioni davvero lunghe.