Vladimir Bormotov <bor(a)vb.dn.ua> writes:
Hi, Artur!
>>>>> "AP" == Artur Penttinen
<artur+xemacs.org(a)niif.spb.su> writes:
>> >> VB> что-от пошуршал апропосом по функциям/переменынм не нашел как
бы
>> >> VB> научить xemacs удалять хвостовые пробельные символы.
>>
>> AP> я просто, вручную задаю \C-x h \M-\A-% [ ^I]+$
>> попробую вот сию конструкцию в виде e-lisp'а повесить на save... ;-))
AP> навскидку:
AP> (defun arto-delete-trailing-whitespaces (beg end)
AP> (interactive "r") (save-excursion
AP> (goto-char beg) (while (re-search-forward "\s-+$" end t nil)
AP> (replace-match ""))))
вот это уже не навскидку, рабочий код ;-)
;; strip trailing spaces on write any file
(defun strip-trailing-whitespaces (beg end)
(interactive "r")
(save-excursion
(goto-char beg)
(while (re-search-forward "\\s-+$" end t nil)
(replace-match "")
)))
(defun strip-trailing-whitespaces-buffer ()
(interactive)
(strip-trailing-whitespaces (point-min) (point-max))
)
(add-hook 'write-file-hooks 'strip-trailing-whitespaces-buffer)
Вот вариант
с just-one-space, он также старается корректно
обрабатывать конец региона.
(defun strip-trailing-whitespace (&optional min max)
(interactive
(if (region-active-p)
(list (region-beginning) (region-end))))
(let ((min (or min (point-min)))
(max (or max (point-max)))
bias)
(save-excursion
(goto-char min)
(condition-case err
(loop
(end-of-line) (setq bias (point))
(just-one-space)
(delete-char -1)
(setq max (- max (- bias (point))))
(forward-char 1)
(if (> (point) max)
(signal-error 'end-of-buffer nil)))
(end-of-buffer)))))
-- Ed