Commit c66aaa61 authored by Noam Postavsky's avatar Noam Postavsky

Recomplexify ‘delete-trailing-whitespace’ by treating \n as whitespace again

Mostly reverts "Simplify ‘delete-trailing-whitespace’ by not treating
\n as whitespace" from 2016-07-04.  Setting \n to non-whitespace
causes the regex engine to backtrack a lot when searching for
"\\s-+$" (Bug#26079).

* lisp/simple.el (delete-trailing-whitespace): Don't change newline
syntax, search for "\\s-$" and then skip backward over trailing
whitespace.
parent fac0bb9c
......@@ -633,10 +633,9 @@ buffer if the variable `delete-trailing-lines' is non-nil."
(with-syntax-table (make-syntax-table (syntax-table))
;; Don't delete formfeeds, even if they are considered whitespace.
(modify-syntax-entry ?\f "_")
;; Treating \n as non-whitespace makes things easier.
(modify-syntax-entry ?\n "_")
(while (re-search-forward "\\s-+$" end-marker t)
(let ((b (match-beginning 0)) (e (match-end 0)))
(while (re-search-forward "\\s-$" end-marker t)
(skip-syntax-backward "-" (line-beginning-position))
(let ((b (point)) (e (match-end 0)))
(when (region-modifiable-p b e)
(delete-region b e)))))
(if end
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment