Je voudrais afficher la partie d'ouverture d'une lunette lorsque celle-ci sort de l'écran.
Exemple:
namespace a
{
...
--------------------- <- display frame
... |
}* | * when cursor is here display "namespace a" in the minibuffer
--------------------- or on screen
Cela pourrait fonctionner pour de nombreux langages de programmation, mais je pense principalement au C ++.
Pour clarifier un peu plus et pour ceux qui connaissent VS, je voudrais une fonctionnalité similaire à celle qui existe pour Visual Studio. c'est-à-dire que le positionnement du curseur à la fin d'une étendue affiche le début de l'étendue en haut du tampon d'édition.
Cette fonctionnalité existe-t-elle déjà quelque part?
Réponses:
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:
Et chargez d'abord CEDET au-dessus de tout le reste dans votre fichier init:
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:
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 fonctionhelm-define-key-with-subkeys
et y déplacer le point.Ensuite, je recommence
helm-semantic-or-imenu
ethelm-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.
la source
emacs -Q
mais je n'obtiens pas le comportement que vous décrivez lorsque je navigue, par exempleorg.el
.Vous pouvez allumer
which-function-mode
en faisantM-x
which-function-mode
RETPour rendre le paramètre permanent, ajoutez
dans votre fichier init.
De la documentation:
Remarque : Le nom ne le suggère pas vraiment, mais cela fonctionne non seulement pour les "fonctions", mais aussi pour d'autres types de portées. Par exemple, dans
org-mode
,which-function-mode
affiche l'en-tête de la sous-arborescence actuelle.la source