2009-10-22 13 views
15

J'essaie de comprendre Elisp, et j'ai atteint un barrage routier.Emacs - Utilisation de "Sélectionner tout" dans la fonction (comment trouver la fonction liée à une touche)

Je veux une fonction qui indentera le fichier entier. En ce moment, je sélectionne le fichier entier (C-x h) puis en faisant M-x indent-region (qui a une touche de raccourci).

Je voudrais combiner cela en une seule touche, mais ne peux pas comprendre comment faire C-x h dans une fonction.

Merci

Répondre

21

pour trouver ce que Emacs fera lorsque vous invoquez une certaine combinaison de touches, préfixe avec: C-Hk. Dans votre cas, vous tapez:

C-h k C-x h 

qui donne

h Cx exécute la commande marque-tout-tampon, qui est une fonction interactive Lisp compilé dans `simple.el '. Il est lié à C-xh, . (marqueur-entier-tampon)

Mettez le point au début et marquez à la fin du tampon. Vous ne devriez probablement pas utiliser cette fonction dans les programmes Lisp; c'est habituellement une erreur pour une fonction Lisp pour utiliser n'importe quel sous-programme qui utilise ou définit la marque.

Note: Vous pouvez également utiliser C-h K (notez la K est capitalisé), qui vous saute à la documentation de la commande.

+0

Merci monsieur, Ch k est ce que je ne pouvais pas trouver – MattBelanger

+0

et retourne Ch c juste la fonction, sans documentation, et sans ouvrir un tampon d'aide. Et, C-h C-h est gentil pour ces situations. – quodlibetor

12

Il convient de noter que vous ne souhaitez pas utiliser la marque et pointer dans du code non interactif; vous voulez (indent-region (point-min) (point-max)), pas (save-excursion (mark-whole-buffer) (call-interactively indent-region)), même si les effets sont similaires.

(pas ruiner votre plaisir, mais la séquence entière ressemble à quelque chose comme (global-set-key (kbd "C-M-r") (lambda() (interactive) (indent-region (point-min) (point-max))).)

+0

Pourquoi votre méthode est-elle préférée au marquage de toute la zone tampon/indentation? Je ne suis pas sûr de la différence. – MattBelanger

Questions connexes