emacsでのファイルのリロード

普段、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) しているんだそうな。

カテゴリー: Linux, PC&Web タグ: , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です