gpt4 book ai didi

javascript - 如何在 emacs 的 js2 模式下 trim 尾随空格

转载 作者:行者123 更新时间:2023-11-29 17:12:59 27 4
gpt4 key购买 nike

trim 尾随空格对所有非 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.

但它仍然不会在保存时 trim 空格!我错过了什么?

编辑补充:响应德鲁的建议,

  1. 在文件上手动运行 delete-trailing whitespace 确实有效。
  2. 如果没有清理空白,仍然无法工作,这并不奇怪,因为...
  3. delete-trailing-whitespace 似乎没有在保存时调用。
  4. basic-save-buffer 也没有。

我不确定如何调查 js2-mode 是如何拦截/防止触发 before-save-hooks 的。

最佳答案

  1. 测试正常(手动)调用 delete-trailing-whitespace 是否对 JS 文件起作用。

  2. 尝试在同一个钩子(Hook)上不使用 whitespace-cleanup -- IOW,简化以查看问题所在。

  3. 加载定义delete-trailing-whitespace 的源文件(simple.el)。然后 M-x debug-on-entry delete-trailing-whitespace。然后保存一个 JS 文件并查看 d-t-w 是否被调用。如果是,请逐步检查调试器以查明它是否删除了空格(并且空格可能会在之后放回原位),如果没有,原因是什么。

  4. 如果从未调用过,则加载定义调用 的函数 (basic-save-buffer) 的文件 (files.el) >缓冲区保存 Hook M-x cancel-debug-on-entry RET 取消第一个,然后是 M-x debug-on-entry basic-save-buffer。同样的,看hook是否运行,如果没有,为什么没有,如果有,为什么不DTRT等等。

  5. 请注意,如果其中一个 Hook 函数引发错误,basic-save-hook 不会运行完成。查看钩子(Hook)上有哪些函数等。确定错误是否阻止了 TRT。

你明白了:调查。

关于javascript - 如何在 emacs 的 js2 模式下 trim 尾随空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20413787/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com