Mercurial > emacs
changeset 101449:577a3b5b05f5
(align-region): Avoid infloop.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Sat, 24 Jan 2009 23:42:42 +0000 |
parents | d6d07d783be3 |
children | 2bdde6d84336 |
files | lisp/align.el |
diffstat | 1 files changed, 9 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/align.el Sat Jan 24 23:42:14 2009 +0000 +++ b/lisp/align.el Sat Jan 24 23:42:42 2009 +0000 @@ -1307,6 +1307,7 @@ (rulesep (assq 'separate rule)) (thissep (if rulesep (cdr rulesep) separate)) same (eol 0) + search-start group group-c spacing spacing-c tab-stop tab-stop-c @@ -1412,6 +1413,7 @@ ;; while we can find the rule in the alignment ;; region.. (while (and (< (point) end-mark) + (setq search-start (point)) (if regfunc (funcall regfunc end-mark nil) (re-search-forward regexp @@ -1436,7 +1438,7 @@ ;; if the search ended us on the beginning of ;; the next line, move back to the end of the ;; previous line. - (if (bolp) + (if (and (bolp) (> (point) search-start)) (forward-char -1)) ;; lookup the `group' attribute the first time @@ -1576,7 +1578,12 @@ ;; the next line; don't bother searching ;; anymore on this one (if (and (not repeat) (not (bolp))) - (forward-line))))) + (forward-line)) + + ;; if the search did not change point, + ;; move forward to avoid an infinite loop + (if (= (point) search-start) + (forward-char))))) ;; when they are no more matches for this rule, ;; align whatever was left over