总结了一下自动保存的姿势

还真是yapf惹的祸,谢谢了

请问一下使用auto-save进行自动保存的时候,即使开了silent模式,还是会在minibuffer中不断出现提示信息。有什么办法彻底让auto-save安静呢?

Omitting...
Omitted 2 lines.
Omitting...

已解决:这个跟自动保存没有关系,是dired-x的锅。

(setq dired-omit-verbose nil)
(setq auto-revert-verbose nil)

这样就不会提示了。

1 个赞

歪个楼,在任何编辑工具中都会关闭自动保存。感觉自己不按C-xC-s心里总是没底(我把系统的C-s也绑定了C-xC-s)。

能告诉我你们为什么这么喜欢自动保存么?我怎么get不到它的一点好处?靠自己手点不香么?手动保存完全不会打断思路,就是下意识的动作

modeline背景颜色提示当前文件状态(已保存或已修改),

;; {{ change mode-line color by evil state
(defconst my-default-color (cons (face-background 'mode-line)
                                 (face-foreground 'mode-line)))
(defun my-show-evil-state ()
  "Change mode line color to notify user evil current state."
  (let* ((color (cond ((minibufferp) my-default-color)
                      ((evil-insert-state-p) '("#e80000" . "#ffffff"))
                      ((evil-emacs-state-p)  '("#444488" . "#ffffff"))
                      ((buffer-modified-p)   '("#006fa0" . "#ffffff"))
                      (t my-default-color))))
    (set-face-background 'mode-line (car color))
    (set-face-foreground 'mode-line (cdr color))))
(add-hook 'post-command-hook #'my-show-evil-state)
;; }}

在追求极致编程速度的同时,也可以用工具解决人需要可视地确认文件状态的问题。

7 个赞

手动保存按的手累啊,用了自动保存以后,从来就没关心过保存的事情。写完直接关,写错直接undo。C-x,C-s的按键我都取消了。 :joy:
这个你要亲自试试看,就能get到了。

1 个赞

不习惯自动保存,但C-x C-s确实很累,我也不用,我的是shift-s,后来发现在某些情况下,S按得太多,也有那么点累,然后我就针对某些情况单独处理,把保存的行为用输入空格事件来触发,虽然还是手动按保存,但没有再按累的情况

;;在每次输入空格时都触发保存按钮,先插入空格在保存,与正常输入空格不冲突
(defun my-insert-spc()
  (interactive)
  (progn
    (insert-char 32)
    (save-buffer)
    ))
3 个赞

还有这样玩的 :+1:
如果按连续快速按几个空格会不会有卡顿啊?
我用自动保存的另外一个原因是Emacs和外部的编辑器同时编辑同一个文件的时候,我只要切换窗口马上就可以编辑。

好点子。

我的办法是窗口失去焦点就保存。用起来也挺舒服。

连接按空格时没有卡顿,不过比起正常连续输入空格的操作是要慢那么一点

如果使用evil的话,也可以在其他state回到normal state时自动保存

请问下通过auto-save.el 开了自动删除尾行空格后,为什么在org-capture mode 会自动删除星号后面的空格,但是在org-mode 却不会? 如下图中,在NEXT后面打一个空格,很快就会被删掉。

自动保存不能和保存时删除空格、保存时自动缩进这种一起开吧?不然写到一半顿了一下就被删掉了空格/改了缩进,不是很抓狂

auto-save.el 可以做到不删除当前行的空格,不影响indent。但是在org-capture-mode 不知道什么不行。

我也有这个问题。我的解决方法是在这个buffer时,把auto-save禁用了。反正你需要用C-c C-c完成。

为啥不用默认自动保存?没有任何这种问题⋯⋯

1 个赞

:+1: 现在用 super-save + ws-butlersuper-save 开启 1 s 空闲自动保存。
解决了一些以前遇到的问题:

  1. 不会在 markdown-mode 启动清除尾行空格
  2. 只有改动的行清除空格,这样不会产生额外的 diff
  3. 不会影响 undo-tree
  4. 不会影响 org-capture
3 个赞

我目前的解决方案是

  1. 在org-capture关掉auto-save:
(add-hook 'org-capture-prepare-finalize-hook 'auto-save-disable)
(add-hook 'org-capture-after-finalize-hook 'auto-save-enable)
  1. 给删除当前行空格加advice:
  (advice-add
   'auto-save-delete-trailing-whitespace-except-current-line
   :around
   (lambda (fn) (interactive) (unless (org-capture-mode) fn)))
  1. 还尝试了在auto-save-disable-predicates加入org-capture buffer的判断,但这个尝试失败了。
 (setq auto-save-disable-predicates
        '((lambda () (string-suffix-p
                      "gpg" (file-name-extension (buffer-name)) t))
          ;;  FIXME 2022-01-15: not working below:
          ;; (lambda () (string-match-p
          ;;             (regexp-quote "CAPTURE-") (buffer-name)))
          ))

目前我用 super-save 没这个问题,体验和 auto-save 差不多。设置 1秒保存。

前段时间一直在用你提到的 super-save + ws-butler 方案, 但它只保存当前 buffer,以及 (setq super-save-exclude '(".gpg")) 不起作用,还没排查出什么原因,暂时回到auto-save了。 :rofl:

我这边 (setq super-save-exclude '(".gpg")) 正常。

本来想用回 auto-save 的,结果我关闭了自动删除尾行空格,在 org-capture 时还是会自动删空格。实在没办法,就放弃了 :grinning_face_with_smiling_eyes:

(setq auto-save-delete-trailing-whitespace nil)

请问下你用什么命令会编辑非当前buffer?