Indent Defun
As a continuation of our previous topic of indenting a buffer or a region, this time around I’ll show you how to indent a single defun1. So here’s the magic bit of code:
(defun er-indent-defun ()
"Indent the current defun."
(interactive)
(save-excursion
(mark-defun)
(indent-region (region-beginning) (region-end))))
This function should work in all properly written major programming modes.
Why would you want to use er-indent-defun
instead of
er-indent-region-or-buffer
? Pretty simple - indenting huge buffers can
take quite a while and you might want to save a bit of time if you
know that a buffer’s indentation is correct pretty much everywhere
else.
I’d suggest binding the command to C-M-z
(since it kind of resembles
the keybinding for function evaluation in major modes for dynamic
programming languages C-M-x
).
(global-set-key (kbd "C-M-z") #'er-indent-defun)
Special thanks to Fuco
2 who
suggested that command in the previous post.
er-indent-defun
is available in
crux (but with a crux-
prefix).
-
Emacs slang/terminology for a function/procedure/method definition, originating from the way functions are defined in Emacs Lisp and a few other Lisp dialects. ↩
-
Who I assume is Matus Goljer, of smartparens fame. ↩