[英]How to trim trailing whitespace in js2-mode in emacs
修剪尾隨空白可以在所有非JS文件上正常工作。 我的.emacs中包含以下行:
(add-hook 'before-save-hook 'delete-trailing-whitespace)
(add-hook 'before-save-hook 'whitespace-cleanup)
我還使用了Mx 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如何攔截/防止之前保存的鈎子被觸發。
測試當您正常(手動)調用delete-trailing-whitespace
是否對JS文件起作用。
嘗試在同一鈎子上不使用whitespace-cleanup
-IOW,簡化以了解問題所在。
加載定義delete-trailing-whitespace
的源文件( simple.el
)。 然后Mx debug-on-entry delete-trailing-whitespace
。 然后保存一個JS文件,看看是否甚至調用了dtw
。 如果是這樣,請逐步調試程序以找出它是否刪除空格(並且空格可能會在之后放回去),如果沒有刪除,為什么不刪除。
如果從未調用過,則加載定義了調用buffer-save-hook
函數的函數( basic-save-buffer
)的文件( files.el
)。 Mx cancel-debug-on-entry RET
首先取消,然后Mx debug-on-entry basic-save-buffer
。 同樣,查看掛鈎是否運行,如果不運行,為什么不運行,如果不運行,為什么不進行DTRT,等等。
請注意,如果其中一個鈎子函數引發錯誤,那么basic-save-hook
不會運行完畢。 查看掛鈎上有什么功能,等等。確定是否有錯誤阻止了TRT。
您有主意:調查。
我通過將delete-trailing-space封裝在lambda中而不是引用中來使其工作。
(add-hook 'js2-mode-hook (lambda ()
(add-hook 'before-save-hook (lambda () (delete-trailing-whitespace)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.