Emacs - Utilisation de & # 8220; Sélectionner tout & # 8221; in Function (comment trouver la fonction liée à une clé)
Question
J'essaie de trouver Elisp, et j'ai heurté un barrage routier.
Je veux une fonction qui indente tout le fichier. Pour le moment, je sélectionne tout le fichier ( C-x h ), puis je fais M-x indent-region (avec une touche de raccourci).
J'aimerais combiner cela en une seule pression de touche, mais je ne peux pas comprendre comment faire C-x h dans une fonction.
Merci
La solution
Pour savoir ce que fera Emacs lorsque vous invoquerez une certaine combinaison de touches, préfixez-le avec: C-h k . Dans votre cas, vous devez taper:
C-h k C-x h
qui donne
C-x h exécute la commande mark-whole-buffer, qui est un fonction Lisp compilée interactive dans `simple.el '.
Il est lié à C-x h, . (mark-whole-buffer)
Placez le point au début et marquez à la fin de tampon. Vous ne devriez probablement pas utiliser cette fonction dans les programmes Lisp; il est généralement une erreur pour une fonction Lisp d'utiliser un sous-programme qui utilise ou définit la marque.
Remarque: Vous pouvez également utiliser Ch K (notez que K est en majuscule), ce qui vous permettra d'accéder à la documentation de la commande. .
Autres conseils
Il est à noter que vous ne souhaitez pas utiliser la marque et le point en code non interactif; vous voulez (indent-region (point-min) (point-max))
, pas (save-excursion (mark-whole-buffer) (appel-interactivement indent-region))
, même si les effets sont similaires.
(Pas pour gâcher votre plaisir, mais la séquence entière ressemblera à (global-set-key (kbd "CM-r") (lambda () (interactif) (indent-region (point min) (point-max)))
.)