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.
This commit is contained in:
parent
fac0bb9cf7
commit
c66aaa6163
1 changed files with 3 additions and 4 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue