Emacs - Utilizzo di "Seleziona tutto" in Funzione (come trovare la funzione associata a un tasto)
Domanda
Sto cercando di capire Elisp e ho raggiunto un blocco.
Voglio una funzione che indenterà l'intero file. In questo momento, seleziono l'intero file ( C-x h ) e quindi eseguo M-x indent-region (che ha un tasto di scelta rapida).
Vorrei combinarlo in un solo tasto, ma non riesco a capire come fare C-x h in una funzione.
Grazie
Soluzione
Per scoprire cosa farà Emacs quando invochi una determinata combinazione di tasti, aggiungi il prefisso con: C-h k . Nel tuo caso, dovresti digitare:
C-h k C-x h
che produce
C-x h esegue il comando mark-whole-buffer, che è un funzione Lisp compilata interattiva in `Simple.el'.
È associato a C-x h, . (Mark-tutta-buffer)
Metti il ??punto all'inizio e segna alla fine del buffer. Probabilmente non dovresti usare questa funzione nei programmi Lisp; è di solito un errore per una funzione Lisp per utilizzare qualsiasi subroutine che utilizza o imposta il segno.
Nota: Puoi anche usare Ch K (nota che K è in maiuscolo), che passerà alla documentazione per il comando .
Altri suggerimenti
Vale la pena notare che non si desidera utilizzare il segno e il punto nel codice non interattivo; vuoi (indent-region (point-min) (point-max))
, non (save-excursion (mark-whole-buffer) (call-indent-indent-region))
, anche se gli effetti sono simili.
(Non per rovinare il divertimento, ma l'intera sequenza sarà simile a (global-set-key (kbd " CM-r ") (lambda () (interattivo) (indent-region (point- min) (point-max)))
.)