列出与文件关联的缓冲区?
List buffers associated with files?
我对使用 lisp 还很陌生,如果这是一个微不足道的问题,我很抱歉。经过一段时间的谷歌搜索后,我一直无法找到解决方案,但我确信这是我的错。
所以。我正在尝试编写一个命令来恢复所有打开的缓冲区。简单的。我只是
(setq revert-without-query (buffer-list))
(mapc 'revert-buffer (buffer-list))`
不幸的是,如果有任何缓冲区不与文件关联——也就是说,总是这样,这最终会失败。
对列表缓冲区执行 C-x C-b
会打印类似
的内容
CRM Buffer Size Mode File
init.el 300 Emacs-lisp ~/.spacemacs.d/init.el
%scratch% 30 Test
好的。很容易。如果允许我混合使用 lisp 和 python,我会做类似
的事情
(setq revert-without-query [b for b in buffer-list if b.File != ""])
;; Or would I test for nil? Decisions, decisions...
经过一番挖掘,我发现存在remove-if
。不幸的是,作为 lisp 的新手,我不知道如何访问列表、它们的属性,或者……好吧……任何东西。介意帮帮我吗?
一种可能性是检查 buffer-file-name
如果缓冲区没有访问文件,它将 return 为 nil,例如
(cl-loop for buf in (buffer-list)
if (buffer-file-name buf)
collect buf)
或
(cl-remove-if-not 'buffer-file-name (buffer-list))
您可能还想恢复目录。任何类型的缓冲区都可以有自己专门的还原(参见 revert-buffer-function
)。所以你可能想检查 buffer-file-name
和 dired-directory
是否非零。
(dolist (b (buffer-list))
(when (buffer-live-p b)
(with-current-buffer b
(when (or buffer-file-name dired-directory)
(revert-buffer 'ignore-auto 'noconfirm)))))
您也可以使用 ignore-errors
锤子,但最好在遇到极端情况时修复它们。
我对使用 lisp 还很陌生,如果这是一个微不足道的问题,我很抱歉。经过一段时间的谷歌搜索后,我一直无法找到解决方案,但我确信这是我的错。
所以。我正在尝试编写一个命令来恢复所有打开的缓冲区。简单的。我只是
(setq revert-without-query (buffer-list))
(mapc 'revert-buffer (buffer-list))`
不幸的是,如果有任何缓冲区不与文件关联——也就是说,总是这样,这最终会失败。
对列表缓冲区执行 C-x C-b
会打印类似
CRM Buffer Size Mode File
init.el 300 Emacs-lisp ~/.spacemacs.d/init.el
%scratch% 30 Test
好的。很容易。如果允许我混合使用 lisp 和 python,我会做类似
的事情(setq revert-without-query [b for b in buffer-list if b.File != ""])
;; Or would I test for nil? Decisions, decisions...
经过一番挖掘,我发现存在remove-if
。不幸的是,作为 lisp 的新手,我不知道如何访问列表、它们的属性,或者……好吧……任何东西。介意帮帮我吗?
一种可能性是检查 buffer-file-name
如果缓冲区没有访问文件,它将 return 为 nil,例如
(cl-loop for buf in (buffer-list)
if (buffer-file-name buf)
collect buf)
或
(cl-remove-if-not 'buffer-file-name (buffer-list))
您可能还想恢复目录。任何类型的缓冲区都可以有自己专门的还原(参见 revert-buffer-function
)。所以你可能想检查 buffer-file-name
和 dired-directory
是否非零。
(dolist (b (buffer-list))
(when (buffer-live-p b)
(with-current-buffer b
(when (or buffer-file-name dired-directory)
(revert-buffer 'ignore-auto 'noconfirm)))))
您也可以使用 ignore-errors
锤子,但最好在遇到极端情况时修复它们。