* lisp/emacs-lisp/smie.el (smie-auto-fill): Don't inf-loop if there's no
token before point. Fixes: debbugs:13942
This commit is contained in:
parent
95b43468a4
commit
efe8bf5d9b
2 changed files with 39 additions and 31 deletions
|
@ -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>
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue