普段、Winの環境に慣れてるとこういうのがサクッとサポートされてないと戸惑う。 おそらく全てをemacs上で賄ってしまえる人は問題ないのだろうけど。。。
本題。
emacsでファイルを開いた状態で、外部エディタ等でファイルを編集した場合、 一度 kill-buffer してから 開き直したり, revert-buffer を利用する必要がある. これでは面倒だし,それまでの変更を取り消すことができなくなってしまって困る。 ので、以下のような設定をしておくと便利だそうな。
(defun reopen-file () (interactive) (let ((file-name (buffer-file-name)) (old-supersession-threat (symbol-function ‘ask-user-about-supersession-threat)) (point (point))) (when file-name (fset ‘ask-user-about-supersession-threat (lambda (fn))) (unwind-protect (progn (erase-buffer) (insert-file file-name) (set-visited-file-modtime) (goto-char point)) (fset ‘ask-user-about-supersession-threat old-supersession-threat))))) (define-key ctl-x-map “C-r” ‘reopen-file)これで、C-x C-r でファイルを開き直すことができ、アンドゥで元に戻すこともできる。 何をしてるかというと、 バッファの内容を消して (erase-buffer) ファイルを挿入 (insert-file) しているんだそうな。