@Jousimies 我目前正在使用你的策略,挺好用的,多谢提醒。
@zqso 我刚才去看了下 org-capture 的源码,优化了下方案。你试试这个看,我这边是完全没问题了。
(setq auto-save-disable-predicates
'((lambda ()
(eq (buffer-base-buffer (get-buffer (concat "CAPTURE-" (buffer-name))))
(current-buffer)))))
明白。果然还是大佬看问题全面些。我的使用场景相对简单,所以一直以来,就用这个了。
给 auto-save 发了个 PR,采用了 org-capture 源码中的类似的策略。
判断当前buffer 是否与 org-capture
的 buffer 有关联,有的话就不保存。
我这边测试下来一切正常了。
已经合并,感谢补丁
最近又开始用 undo-tree,可是undo-tree-visualize
(C-x u) 会和 auto-save 冲突,通过C-x u进行 undo 和 redo 时也会触发自动保存,有时会打断undo-tree-visualize
。
通过下面的设置可以彻底解决这个问题,在 undo-tree-visualize
显示时,不会进行任何的自动保存,只会在退出 undo-tree-visualize
后才保存。
(add-to-list 'auto-save-disable-predicates
(lambda () (buffer-live-p (get-buffer " *undo-tree*"))))
你好,请问你是怎么配置auto-save的呢,我还是无法令他不自动删除行尾空格,可以看看你的这部分设置吗?
auto-save 后来做了很多小改进,默认情况下是不需要调整的。
如果你半年前用straight装过auto-save, 记得升级包。
(use-package auto-save
:hook (find-file-hook . auto-save-enable)
:config
(setq auto-save-idle 1
auto-save-silent t
auto-save-delete-trailing-whitespace t))
好的谢谢,我这就试试看
我也理解不了unless 每次看半天
if nil
if (condition) {
} else {
// "unless" function body goes here
}
可能與我遇到的情況一樣,其實不是auto-save自動刪除的空格,可能是其他配置,同樣,我也找不到誰搞的鬼。
论坛的回复框已经详细说了怎么排查配置, 读一读吧。
这种应该用:custom
会更好些吧?(另外Emacs 29 引入了setopt
)
(use-package auto-save
:hook (find-file-hook . auto-save-enable)
:custom
(auto-save-idle 1)
(auto-save-silent t)
(auto-save-delete-trailing-whitespace t))
或者
(use-package auto-save
:hook (find-file-hook . auto-save-enable)
:config
(setopt auto-save-idle 1
auto-save-silent t
auto-save-delete-trailing-whitespace t))
謝謝,重新拜讀了一遍,學會了二分法。排查了一上午,最後發現auto-save在emacs 29的doom下面,已經是自動刪除空格了。設置無效,即auto-save可能跟doom的某個設置有衝突。
delete trailing whitespace, 使用的是如下配置:
;; Visualize TAB, (HARD) SPACE, NEWLINE
(setq-default show-trailing-whitespace nil) ; Don't show trailing whitespace by default
(defun enable-trailing-whitespace ()
"Show trailing spaces and delete on saving."
(setq show-trailing-whitespace t)
(add-hook 'before-save-hook #'delete-trailing-whitespace nil t))
(add-hook 'prog-mode #'enable-trailing-whitespace)
可是不起作用。
使用 auto-save,
(use-package auto-save
:ensure nil
:load-path "site-lisp/auto-save"
:hook (find-file-hook . auto-save-enable)
:custom
(auto-save-idle 1)
(auto-save-silent t)
(auto-save-delete-trailing-whitespace t))
依然不起作用,这个还真不好调试 ~
:custom 的机制有可能使各种 :defer 机制失败
假设包的 defcustom 写得不规范 (比如参数值必须是数字,但defcustom里错误指定了:type 为 'boolean),包加载时会报错,但用户本身并做不了什么。所以除非是热心用户,经常给上游报错,上游也很 responsive, 不太推荐setopt。
:custom
以前用的比较多 现在不用use-package了。
我自从开始用master以后就开始用setopt
,warning确实多(注意不是报错),不过我每次看到就把对应的包下载下来修改所有的defcustom定义,然后发PR出去。这样至少以后用户在用customize界面时里面的框架是正确的(不会出现要求整数结果来radio button的情况)。