Wenn Sie C / C ++ / Java / Emacs Lisp / Python schreiben, macht der Semantic-Sticky-Func-Modus das, was Sie wollen.
HINWEIS : Dies scheint mit CEDET von Git zu funktionieren, nicht mit CEDET, das derzeit in Emacs 24.4 verfügbar ist. So erhalten Sie Emacs von Git:
Git-Klon http://git.code.sf.net/p/cedet/git Ceded
Und laden Sie CEDET zuerst über alles in Ihre Init-Datei:
(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"))
Bei Aktivierung zeigt dieser Modus an, dass sich der Funktionspunkt derzeit in der ersten Zeile des aktuellen Puffers befindet. Dies ist nützlich, wenn Sie eine sehr lange Funktion haben, die sich über mehr als einen Bildschirm erstreckt, und nicht nach oben scrollen müssen, um den Funktionsnamen zu lesen, und dann nach unten zur ursprünglichen Position scrollen müssen.
Es zeigt die vollständige Funktionsoberfläche (Rückgabetyp, Funktionsname und Parameter) an, nicht nur den Funktionsnamen.
Fügen Sie diesen Code in Ihre Init-Datei ein, um ihn zu aktivieren:
(require 'semantic)
(semantic-mode 1)
(global-semantic-stickyfunc-mode 1)
UPDATE : Eines der Probleme mit current semantic-stickyfunc-mode
ist, dass nicht alle Parameter angezeigt werden, die auf mehrere Zeilen verteilt sind. Um dieses Problem zu lösen, habe ich das Paket stickyfunc-boost erstellt .
DEMO :
Hier ist eine Demo in C:
Hier ist eine Demo in Emacs Lisp:
UPDATE : Alternativ können Sie helm-semantic-or-imenu verwenden . Wenn Sie sich in einer Funktion befinden und den Befehl ausführen, befindet sich der Cursor direkt auf der Funktion in der Liste, sodass Sie immer die vollständige Funktionsoberfläche sehen können. DEMO:
Zuerst helm-semantic-or-imenu
bewege ich mich zur Funktion helm-define-key-with-subkeys
und verschiebe dort den Punkt.
Dann starte ich helm-semantic-or-imenu
erneut und bin helm-define-key-with-subkeys
vorausgewählt.
Dann bewege ich den Punkt zur Variablen helm-map und führe helm-semantic-or-imenu
zwei Funktionen erneut aus: helm-next-source und helm-previous-source. Dieses Mal werden anstelle des aktuellen semantischen Tags, in dem ich arbeite (die Helmkarte), die beiden anderen Tags im Helm-Semantik-Puffer angezeigt. Dies liegt daran, dass ich vor dem Ausführen des Befehls ein Präfixargument angegeben habe.
Auch diese Demo ist in Emacs Lisp, sie funktioniert auch für C / C ++ und ist flexibler, wenn Sie eine wirklich lange Funktionsoberfläche haben.