修剪尾随空格可以在所有非JS文件上正常工作。我的.emacs中有这些行:
(add-hook 'before-save-hook 'delete-trailing-whitespace)
(add-hook 'before-save-hook 'whitespace-cleanup)
我还使用M-x customize-group <enter> js2-mode
设置:
Js2 Cleanup Whitespace: [Hide Value] [Toggle] on (non-nil)
[State]: SAVED and set.
Non-nil to invoke `delete-trailing-whitespace' before saves.
但是它仍然不会在保存时修剪空白!我错过了什么?
编辑添加:回应Drew的建议,
我不确定如何调查js2-mode如何拦截/阻止触发前保存挂钩。
答案 0 :(得分:4)
测试delete-trailing-whitespace
在正常调用(手动)时是否对JS文件起作用。
在同一个钩子上尝试不使用whitespace-cleanup
- IOW,简化以查看问题所在。
加载定义simple.el
的源文件(delete-trailing-whitespace
)。然后是M-x debug-on-entry delete-trailing-whitespace
。然后保存一个JS文件,看看是否会调用d-t-w
。如果确实如此,请逐步调试调试器以确定它是否删除了空格(之后可能会放回空格),如果没有,为什么不删除。
如果从未调用过,则加载定义调用files.el
的函数(basic-save-buffer
)的文件(buffer-save-hook
)。 M-x cancel-debug-on-entry RET
取消第一个,然后M-x debug-on-entry basic-save-buffer
。同样,看看钩子是否运行,如果没有,为什么不运行,如果是,为什么它不是DTRT等。
请注意,如果其中一个挂钩函数引发错误,则basic-save-hook
不会运行完成。查看钩子上的功能等。确定错误是否阻止TRT。
你明白了:调查。
答案 1 :(得分:1)
我通过在lambda而不是quote中包含delete-trailing-whitespace来实现它。
(add-hook 'js2-mode-hook (lambda ()
(add-hook 'before-save-hook (lambda () (delete-trailing-whitespace)))