如何在某个位置用缓冲区文件杀死所有缓冲区?
How to kill all buffers with buffer file in a certain location?
如何在特定位置用缓冲区文件杀死所有缓冲区?
例如,我想用 c:...\dev 中的缓冲区文件和所有到 c:...\dev 的 dired 缓冲区子目录杀死所有缓冲区
或者换句话说,如何遍历 emacs 中所有缓冲区的文件或目录?
谢谢@David @phils。我在 ibuffer
中组合了 elisp 代码和函数
(mapc (lambda (buffer)
(let ((file-name
(or (buffer-file-name buffer)
(with-current-buffer buffer
(and
(boundp 'dired-directory)
(stringp dired-directory)
dired-directory))
)))
(when (and file-name
(string-match "^c:.*?\\dev" file-name))
(kill-buffer buffer))))
(buffer-list))
从 elisp 使用:
(mapc (lambda (buffer)
(let ((file-name
(or (buffer-file-name buffer)
;; In dired-mode we need `dired-directory' which
;; might be a list and may not be fully expanded.
(with-current-buffer buffer
(and (eq major-mode 'dired-mode)
(expand-file-name
(if (consp dired-directory)
(car dired-directory)
dired-directory)))))))
(when (and file-name
(string-match "^c:\\.*\\dev" file-name))
(kill-buffer buffer))))
(buffer-list))
如何在特定位置用缓冲区文件杀死所有缓冲区?
例如,我想用 c:...\dev 中的缓冲区文件和所有到 c:...\dev 的 dired 缓冲区子目录杀死所有缓冲区
或者换句话说,如何遍历 emacs 中所有缓冲区的文件或目录?
谢谢@David @phils。我在 ibuffer
中组合了 elisp 代码和函数(mapc (lambda (buffer)
(let ((file-name
(or (buffer-file-name buffer)
(with-current-buffer buffer
(and
(boundp 'dired-directory)
(stringp dired-directory)
dired-directory))
)))
(when (and file-name
(string-match "^c:.*?\\dev" file-name))
(kill-buffer buffer))))
(buffer-list))
从 elisp 使用:
(mapc (lambda (buffer)
(let ((file-name
(or (buffer-file-name buffer)
;; In dired-mode we need `dired-directory' which
;; might be a list and may not be fully expanded.
(with-current-buffer buffer
(and (eq major-mode 'dired-mode)
(expand-file-name
(if (consp dired-directory)
(car dired-directory)
dired-directory)))))))
(when (and file-name
(string-match "^c:\\.*\\dev" file-name))
(kill-buffer buffer))))
(buffer-list))