Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Emacs - Using "Select All" in Function (how to find the function bound to a key)

Tags:

emacs

elisp

I'm trying to figure out Elisp, and I've hit a roadblock.

I want a function that will Indent the entire file. Right now, I'm selecting the whole file (C-x h) and then doing M-x indent-region (which does have a shortcut key).

I'd like to combine that in to a single keypress, but can't figure out how to do C-x h in a function.

Thanks

like image 736
MattBelanger Avatar asked Oct 22 '09 01:10

MattBelanger


2 Answers

To find what Emacs will do when you invoke a certain key combination, prefix that with: C-h k. In your case, you'd type:

C-h k C-x h

which yields

C-x h runs the command mark-whole-buffer, which is an interactive compiled Lisp function in `simple.el'.

It is bound to C-x h, . (mark-whole-buffer)

Put point at beginning and mark at end of buffer. You probably should not use this function in Lisp programs; it is usually a mistake for a Lisp function to use any subroutine that uses or sets the mark.

Note: You can also use C-h K (note the K is capitalized), which will jump you to the documentation for the command.

like image 106
Trey Jackson Avatar answered Nov 16 '22 20:11

Trey Jackson


It is worth noting that you don't want to use the mark and point in non-interactive code; you want (indent-region (point-min) (point-max)), not (save-excursion (mark-whole-buffer) (call-interactively indent-region)), even though the effects are similar.

(Not to ruin your fun, but the whole sequence will look something like (global-set-key (kbd "C-M-r") (lambda () (interactive) (indent-region (point-min) (point-max))).)

like image 40
jrockway Avatar answered Nov 16 '22 21:11

jrockway