最近、いくつかのプログラミング モード用に Emacs(delete-trailing-whitespace)
機能を追加しまし'before-save-hook
たが、現在編集中の行から空白が削除されるのはかなりイライラします。この問題を解決する方法について何か提案はありますか?
4 に答える
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))))))
before-save-hook
の代わりにこの機能をあなたに置きますdelete-trailing-whitespace
。
于 2010-08-20T18:34:40.080 に答える
4
このラッパーは、次のdelete-trailing-whitespace
ことを行うために使用できます。
(defun delete-trailing-whitespace-except-current-line ()
"do delete-trailing-whitespace, except preserve whitespace of current line"
(interactive)
(let ((current-line (buffer-substring (line-beginning-position) (line-end-position)))
(backward (- (line-end-position) (point))))
(delete-trailing-whitespace)
(when (not (string-equal (buffer-substring (line-beginning-position) (line-end-position))
current-line))
(delete-region (line-beginning-position) (line-end-position))
(insert current-line)
(backward-char backward))))
于 2010-08-20T18:49:38.720 に答える
0
「delete-trailing-whitespace」を 2 回呼び出すためのラッパーを用意しました。
(defun modi/delete-trailing-whitespace-buffer ()
"Delete trailing whitespace in the whole buffer, except on the current line.
The current line exception is because we do want to remove any whitespace
on the current line on saving the file (`before-save-hook') while we are
in-between typing something.
Do not do anything if `do-not-delete-trailing-whitespace' is non-nil."
(interactive)
(when (not (bound-and-true-p do-not-delete-trailing-whitespace))
(delete-trailing-whitespace (point-min) (line-beginning-position))
(delete-trailing-whitespace (line-end-position) (point-max))))
(add-hook 'before-save-hook #'modi/delete-trailing-whitespace-buffer)
于 2016-03-03T19:40:00.050 に答える