Si vous écrivez C / C ++ / Java / Emacs Lisp / Python, alors le mode sémantique-collant-func fera ce que vous voulez.
REMARQUE : Cela semble fonctionner avec CEDET de Git, pas en stock CEDET actuellement dans Emacs 24.4. Pour obtenir Emacs de Git:
git clone http://git.code.sf.net/p/cedet/git cedet
Et chargez d'abord CEDET au-dessus de tout le reste dans votre fichier 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"))
Lorsqu'il est activé, ce mode montre que le point de fonction est actuellement dans la première ligne du tampon actuel. Cela est utile lorsque vous avez une fonction très longue qui s'étale sur plus d'un écran, et que vous n'avez pas à faire défiler vers le haut pour lire le nom de la fonction, puis vers le bas jusqu'à sa position d'origine.
Il affiche une interface de fonction complète (type de retour, nom de fonction et paramètres), pas seulement le nom de fonction.
Pour l'activer, mettez ce code dans votre fichier init:
(require 'semantic)
(semantic-mode 1)
(global-semantic-stickyfunc-mode 1)
MISE À JOUR : L'un des problèmes du courant semantic-stickyfunc-mode
est qu'il n'affiche pas tous les paramètres dispersés sur plusieurs lignes. Pour résoudre ce problème, j'ai créé le package stickyfunc-enhancement .
DÉMO :
Voici une démo en C:
Voici une démo dans Emacs Lisp:
MISE À JOUR : Alternativement, vous pouvez utiliser helm-semantic-or-imenu . Lorsque vous êtes à l'intérieur d'une fonction et exécutez la commande, le curseur est placé directement sur la fonction dans la liste, de sorte que vous pouvez toujours voir l'interface complète de la fonction. DÉMO:
Tout d'abord, j'utilise helm-semantic-or-imenu
pour passer à la fonction helm-define-key-with-subkeys
et y déplacer le point.
Ensuite, je recommence helm-semantic-or-imenu
et helm-define-key-with-subkeys
est présélectionné.
Ensuite, je déplace le point vers la variable helm-map et exécute à helm-semantic-or-imenu
nouveau sur deux fonctions: helm-next-source et helm-previous-source. Cette fois, au lieu d'afficher la balise sémantique actuelle dans laquelle j'opère (qui est helm-map), elle montre les deux autres balises dans le tampon Helm Semantic. En effet, j'ai fourni un argument préfixe avant d'exécuter la commande.
Cette démo est également dans Emacs Lisp, elle fonctionne également pour C / C ++ et elle est plus flexible si vous avez une interface de fonction très longue.