diff options
| author | Noam Postavsky | 2017-03-14 09:23:08 -0400 |
|---|---|---|
| committer | Noam Postavsky | 2017-03-14 22:14:30 -0400 |
| commit | c66aaa61639e72a70a4f2c4bc73645048caebe53 (patch) | |
| tree | 4212412986c469f27334972e44861c4296520fed | |
| parent | fac0bb9cf76072941ae9dc9c7019929eb1a0f1dd (diff) | |
| download | emacs-c66aaa61639e72a70a4f2c4bc73645048caebe53.tar.gz emacs-c66aaa61639e72a70a4f2c4bc73645048caebe53.zip | |
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.
| -rw-r--r-- | lisp/simple.el | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/lisp/simple.el b/lisp/simple.el index f110c6f3267..369fbf71923 100644 --- a/lisp/simple.el +++ b/lisp/simple.el | |||
| @@ -633,10 +633,9 @@ buffer if the variable `delete-trailing-lines' is non-nil." | |||
| 633 | (with-syntax-table (make-syntax-table (syntax-table)) | 633 | (with-syntax-table (make-syntax-table (syntax-table)) |
| 634 | ;; Don't delete formfeeds, even if they are considered whitespace. | 634 | ;; Don't delete formfeeds, even if they are considered whitespace. |
| 635 | (modify-syntax-entry ?\f "_") | 635 | (modify-syntax-entry ?\f "_") |
| 636 | ;; Treating \n as non-whitespace makes things easier. | 636 | (while (re-search-forward "\\s-$" end-marker t) |
| 637 | (modify-syntax-entry ?\n "_") | 637 | (skip-syntax-backward "-" (line-beginning-position)) |
| 638 | (while (re-search-forward "\\s-+$" end-marker t) | 638 | (let ((b (point)) (e (match-end 0))) |
| 639 | (let ((b (match-beginning 0)) (e (match-end 0))) | ||
| 640 | (when (region-modifiable-p b e) | 639 | (when (region-modifiable-p b e) |
| 641 | (delete-region b e))))) | 640 | (delete-region b e))))) |
| 642 | (if end | 641 | (if end |