diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2013-03-14 10:48:03 -0400 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2013-03-14 10:48:03 -0400 |
commit | efe8bf5d9bd5ec99867abe624ddb055236a882f4 (patch) | |
tree | f019dccf8633cfb73fc55dbb5dc06d4a810fa496 | |
parent | 95b43468a4958795cee5e7bd232239c5f61d2475 (diff) | |
download | emacs-efe8bf5d9bd5ec99867abe624ddb055236a882f4.tar.gz |
* lisp/emacs-lisp/smie.el (smie-auto-fill): Don't inf-loop if there's no
token before point.
Fixes: debbugs:13942
-rw-r--r-- | lisp/ChangeLog | 17 | ||||
-rw-r--r-- | lisp/emacs-lisp/smie.el | 53 |
2 files changed, 39 insertions, 31 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 993d9789bad..71460a3d7a7 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2013-03-14 Stefan Monnier <monnier@iro.umontreal.ca> + + * emacs-lisp/smie.el (smie-auto-fill): Don't inf-loop if there's no + token before point (bug#13942). + 2013-03-14 Leo Liu <sdl.web@gmail.com> * thingatpt.el (end-of-sexp): Fix bug#13952. Use syntax-after. @@ -25,8 +30,8 @@ 2013-02-20 Fabián Ezequiel Gallina <fgallina@cuca> - * progmodes/python.el (python-info-current-defun): Enhance - match-data cluttering prevention. + * progmodes/python.el (python-info-current-defun): + Enhance match-data cluttering prevention. 2013-02-19 Glenn Morris <rgm@gnu.org> @@ -40,8 +45,8 @@ 2013-02-19 Fabián Ezequiel Gallina <fgallina@cuca> - * progmodes/python.el (python-indent-context): Fix - python-info-line-ends-backslash-p call. + * progmodes/python.el (python-indent-context): + Fix python-info-line-ends-backslash-p call. (python-info-line-ends-backslash-p) (python-info-beginning-of-backslash): Respect line-number argument. @@ -119,8 +124,8 @@ searching for its match. (c-invalidate-state-cache-1): Add HERE parameter to function call. (c-parse-state-1): Don't narrow here for 'forward strategy, - instead passing extra parameter HERE to several functions. Remove - 'BOD strategy. + instead passing extra parameter HERE to several functions. + Remove 'BOD strategy. 2013-02-01 Stefan Monnier <monnier@iro.umontreal.ca> diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el index eb3fa8f3b09..18cc0e811ce 100644 --- a/lisp/emacs-lisp/smie.el +++ b/lisp/emacs-lisp/smie.el @@ -1631,31 +1631,34 @@ to which that point should be aligned, if we were to reindent it.") (defun smie-auto-fill () (let ((fc (current-fill-column))) (while (and fc (> (current-column) fc)) - (cond - ((not (or (nth 8 (save-excursion - (syntax-ppss (line-beginning-position)))) - (nth 8 (syntax-ppss)))) - (save-excursion - (beginning-of-line) - (smie-indent-forward-token) - (let ((bsf (point)) - (gain 0) - curcol) - (while (<= (setq curcol (current-column)) fc) - ;; FIXME? `smie-indent-calculate' can (and often will) - ;; return a result that actually depends on the presence/absence - ;; of a newline, so the gain computed here may not be accurate, - ;; but in practice it seems to works well enough. - (let* ((newcol (smie-indent-calculate)) - (newgain (- curcol newcol))) - (when (> newgain gain) - (setq gain newgain) - (setq bsf (point)))) - (smie-indent-forward-token)) - (when (> gain 0) - (goto-char bsf) - (newline-and-indent))))) - (t (do-auto-fill)))))) + (or (unless (or (nth 8 (save-excursion + (syntax-ppss (line-beginning-position)))) + (nth 8 (syntax-ppss))) + (save-excursion + (let ((end (point)) + (bsf (progn (beginning-of-line) + (smie-indent-forward-token) + (point))) + (gain 0) + curcol) + (while (and (<= (point) end) + (<= (setq curcol (current-column)) fc)) + ;; FIXME? `smie-indent-calculate' can (and often will) + ;; return a result that actually depends on the + ;; presence/absence of a newline, so the gain computed here + ;; may not be accurate, but in practice it seems to works + ;; well enough. + (let* ((newcol (smie-indent-calculate)) + (newgain (- curcol newcol))) + (when (> newgain gain) + (setq gain newgain) + (setq bsf (point)))) + (smie-indent-forward-token)) + (when (> gain 0) + (goto-char bsf) + (newline-and-indent) + 'done)))) + (do-auto-fill))))) (defun smie-setup (grammar rules-function &rest keywords) |