簡體   English   中英

如何在Emacs中的js2-mode中修剪尾隨空格

[英]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的建議,

  1. 在文件手動運行delete-trailing空格確實有效。
  2. 沒有空格清理仍然無法正常工作,這並不奇怪,因為...
  3. 似乎在保存時未調用delete-trailing-space。
  4. 基本保存緩沖區也沒有。

我不知道如何調查js2-mode如何攔截/防止之前保存的鈎子被觸發。

  1. 測試當您正常(手動)調用delete-trailing-whitespace是否對JS文件起作用。

  2. 嘗試在同一鈎子上不使用whitespace-cleanup -IOW,簡化以了解問題所在。

  3. 加載定義delete-trailing-whitespace的源文件( simple.el )。 然后Mx debug-on-entry delete-trailing-whitespace 然后保存一個JS文件,看看是否甚至調用了dtw 如果是這樣,請逐步調試程序以找出它是否刪除空格(並且空格可能會在之后放回去),如果沒有刪除,為什么不刪除。

  4. 如果從未調用過,則加載定義了調用buffer-save-hook函數的函數( basic-save-buffer )的文件( files.el )。 Mx cancel-debug-on-entry RET首先取消,然后Mx debug-on-entry basic-save-buffer 同樣,查看掛鈎是否運行,如果不運行,為什么不運行,如果不運行,為什么不進行DTRT,等等。

  5. 請注意,如果其中一個鈎子函數引發錯誤,那么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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM