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

コメントを残す

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