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 タグ: , , パーマリンク

コメントを残す

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