Emacsでメジャーモードを保持したままバッファをリロード

2015-12-24

バッファをリロードする方法がEmacsで現在開いてるバッファを再読込する - Qiitaで書かれてるんだけど、メジャーモードを保持していてもらいたかったのでちょっと修正した:

(defun revert-buffer-no-confirm (&optional force-reverting)
"Interactive call to revert-buffer. Ignoring the auto-save
file and not requesting for confirmation. When the current buffer
is modified, the command refuses to revert it, unless you specify
the optional argument: force-reverting to true."
(interactive "P")
;;(message "force-reverting value is %s" force-reverting)
(if (or force-reverting (not (buffer-modified-p)))
(let ((mm (with-current-buffer (current-buffer)
major-mode)))
(revert-buffer :ignore-auto :noconfirm)
(with-current-buffer (current-buffer) (funcall mm)))
(error "The buffer has been modified")))

;; reload buffer
(global-set-key "\M-r" 'revert-buffer-no-confirm)

読み込み前のメジャーモードを保持しておいて、リロード後に再適用する。