Ако изтриете файл foo
в dired-x
, ще получите въпрос Kill buffer of foo, too?
. Как мога да пропусна този въпрос и винаги да отговарям с yes
?
dired-x: Как да настроя Kill буфер и на ? до да без потвърждение?
Отговори (2)
Просто предефинирайте dired-clean-up-after-deletion в dired-x.el.
;; redefine the definition in dired-x.el, so that we are not prompted
;; to remove buffers that were associated with deleted
;; files/directories
(eval-after-load "dired-x" '(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?
))
person
pmielke
schedule
19.07.2012
Можете да посъветвате функцията dired-delete-entry
, така че всички файлови буфери да бъдат затворени преди изтриването:
(defadvice dired-delete-entry (before force-clean-up-buffers (file) activate)
(kill-buffer (get-file-buffer file)))
Ръководството на Elisp описва съветването като „по-чисто от предефинирането на цялата функция“ и е по-малко вероятно да се повреди, ако дефиницията на функцията се промени в бъдеще.
person
Michael Hoffman
schedule
18.07.2012
Току-що разбрах, че за съжаление това не се държи според очакванията. Когато ме помолят да убия и буфера и аз избера да, все още съм в dired(-x) буфера, който ми показва останалите файлове. С вашия код обаче се случва следното: Когато изтрия файл (без да бъда попитан), той ме хвърля в различен буфер, вместо просто да изтрия файла, без да променям буфера.
- person Marius Hofert; 19.07.2012