どうも yank (C-y) した後にそれをインデントする操作をよくやっているような気がしました。なのでそれら操作をくっつけてみました。とりあえず C-y キーにバインドして様子を見ていますが便利です。
~/.emacs.d/init.el
;; yank 後にインデント
(defun my-yank-and-indent-it ()
"Yank and indent it."
(interactive)
(yank)
(save-excursion
(exchange-point-and-mark)
(indent-region (point) (mark))))
(global-set-key (kbd "C-M-y") 'yank) ; yank を C-M-y に移して
(global-set-key (kbd "C-y") 'my-yank-and-indent-it) ; 普通の yank に割り当てられているキーをこれに
(with-eval-after-load 'make-mode
(define-key makefile-mode-map (kbd "C-y") 'yank))
2018/6/4 追記
Makefile でインデントするとコマンド行先頭のタブがなくなってしまいます。なので make-mode 時の C-y は普通の yank に設定しました。
2021/3/30 追記
遅ればせながらleaf.elを使い始めました。ということでleafを使った設定を書いておきます。
~/.emacs.d/init.el
(leaf yank-and-indent
:init
(defun yank-and-indent ()
"Yank and indent it."
(interactive)
(yank)
(save-excursion
(exchange-point-and-mark)
(indent-region (point) (mark))))
:hook
((emacs-lisp-mode-hook ruby-mode-hook web-mode-hook) .
(lambda ()
(local-set-key (kbd "C-y") #'yank-and-indent)
(local-set-key (kbd "C-M-y") #'yank))))
明示的に有効にするモードを指定するようにしました。:hookキーワードにモードフックのリストがありますのでそこで有効にしたいモードのフックを追加してください。関数名が変わっちゃってますがすいません、気分で変えました。