我有一个需求:在当前文件保存前,将当前 Buffer 的内容交给 ESlint 去修复,然后再写入。
我需要注意的是:
-
before-save-hook
是仅在当前设置的文件中生效吗?会不会影响其它的文件,我需要只影响当前文件。 - 我写了
before-save-hook
后,Emacs 还会继续执行文件的保存吗?我需要的是 Emacs 中断保存文件。
我在网上查了查,好像没有相关的介绍。如果有大佬知道,烦请在下面留言,不胜感激
我有一个需求:在当前文件保存前,将当前 Buffer 的内容交给 ESlint 去修复,然后再写入。
我需要注意的是:
before-save-hook
是仅在当前设置的文件中生效吗?会不会影响其它的文件,我需要只影响当前文件。before-save-hook
后,Emacs 还会继续执行文件的保存吗?我需要的是 Emacs 中断保存文件。我在网上查了查,好像没有相关的介绍。如果有大佬知道,烦请在下面留言,不胜感激
你直接用 add-advice 去改变 save-buffer 这个函数更简单, 只针对当前文件, 结合 local var 就好了。
大佬,你说的是 advice-add
吗?我在网上只查到了这个……
你看一下 before-save-hook
的文档就都明白了,哪里用得着等人来给你解答
文档里写着,这个 hook 只会被 save-buffer
这个函数调用,并且在 buffer 保存之前运行
懒猫大佬的意思是,如果你担心影响别的文件,就只修改 save-buffer
对应的行为就行了;至于名字啥的,毕竟不是每个人随时都在电脑前,明白相关的意思就行了
关于你问题的解决方法,也很简单
;; hook
(add-to-list 'before-save-hook (lambda () ...))
;; advice
(advice-add 'save-buffer :before (lambda (&rest r) ...))
emacs 有自带文档,直接 C-h f
再 add-advice
这样查看函数的使用