フォルダを削除するときに常にdiredバッファを殺す方法は?


7

diredで、サブフォルダーに別のdiredバッファー(ディレクトリを上下に移動するときの一般的な状況)があり、フォルダーを削除したい場合は、を押して削除のDxマークを付けてから実行します。

次に、Emacsがフォルダーをゴミ箱に移動するかどうかを尋ねます。確認すると、フォルダのdiredバッファも削除するかどうかを尋ねられます。

フォルダーを破棄してバッファーを保持したい状況は考えられません。フォルダを破棄するときに常にバッファを破棄する方法はありますか?


Diredバッファは常に特定のフォルダに対応するとは限りません。Diredバッファーには、ファイルシステムの任意の部分からのフォルダーとファイルをいくつでも含めることができます。おそらくあなたの質問は、Diredバッファーが1つのフォルダーに1対1でマッピングされる場合にのみ当てはまります。
ドリュー

回答:


2

安全のためだと思います。Emacsがユーザーに尋ねずに通常のバッファを削除するのは驚くべきことだからです。必要に応じて、バグレポートを提出できます。その間あなたはいつもy-or-n-pあなたがやりたいことをするようにアドバイスすることができます。

(define-advice dired-clean-up-after-deletion
    (:around (old-fun &rest r) kill-dired-buffer-quietly)
  (define-advice y-or-n-p (:around (old-fun prompt) just-yes)
    (if (string-prefix-p "Kill Dired buffer" prompt)
        t
      (funcall old-fun prompt)))
  (unwind-protect (apply old-fun r)
    (advice-remove 'y-or-n-p #'y-or-n-p@just-yes)))

3

initファイルに次のスニペットを追加できます。

(eval-after-load  'dired                                                                                                               
  '(defun dired-clean-up-after-deletion (fn)
     "My. Clean up after a deleted file or directory FN.                                                                               
Remove expanded subdir of deleted dir, if any."
     (save-excursion (and (cdr dired-subdir-alist)
                          (dired-goto-subdir fn)
                          (dired-kill-subdir)))

     ;; Offer to kill buffer of deleted file FN.                                                                                       
     (if dired-clean-up-buffers-too
         (progn
           (let ((buf (get-file-buffer fn)))
             (and buf
                  (save-excursion ; you never know where kill-buffer leaves you                                                        
                    (kill-buffer buf))))
           (let ((buf-list (dired-buffers-for-dir (expand-file-name fn)))
                 (buf nil))
             (and buf-list
                  (while buf-list
                    (save-excursion (kill-buffer (car buf-list)))
                    (setq buf-list (cdr buf-list)))))))
     ;; Anything else?                                                                                                                 
     ))

pmielkeの礼儀

また、Diredでのバッファーの再利用に関するこのEmacs wikiページを閲覧することもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.