emacs delete-trailing-whitespace除了当前行

par*_*ser 8 emacs removing-whitespace

我最近(delete-trailing-whitespace)为我'before-save-hook的某些编程模式添加了Emacs 函数,但我发现从我当前正在编辑的行中删除空格是相当令人沮丧的.有关如何解决此问题的任何建议?

Sea*_*ean 10

由于考虑delete-trailing-whitespace缩小,一种解决方案是将缓冲区缩小到当前行之前的部分并调用它,然后缩小到当前行之后的部分并再次调用它:

(defun delete-trailing-whitespace-except-current-line ()
  (interactive)
  (let ((begin (line-beginning-position))
        (end (line-end-position)))
    (save-excursion
      (when (< (point-min) begin)
        (save-restriction
          (narrow-to-region (point-min) (1- begin))
          (delete-trailing-whitespace)))
      (when (> (point-max) end)
        (save-restriction
          (narrow-to-region (1+ end) (point-max))
          (delete-trailing-whitespace))))))
Run Code Online (Sandbox Code Playgroud)

把这个功能放在你的before-save-hook而不是delete-trailing-whitespace.