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