Fix indent-sexp when called from inside a string (Bug#21343)

* lisp/emacs-lisp/lisp-mode.el (indent-sexp): Get initial syntax parse
state from `syntax-ppss'.
This commit is contained in:
Noam Postavsky 2017-03-05 00:53:58 -05:00
parent 3ee3995d10
commit cf670b49a7

View file

@ -1075,10 +1075,14 @@ ENDPOS is encountered."
;; since every line we indent is more deeply nested than point is.
(starting-point (save-excursion (if endpos (beginning-of-defun))
(point)))
(state nil)
(init-depth 0)
(next-depth 0)
(last-depth 0)
;; Use `syntax-ppss' to get initial state so we don't get
;; confused by starting inside a string. We don't use
;; `syntax-ppss' in the loop, because this is measurably
;; slower when we're called on a long list.
(state (syntax-ppss))
(init-depth (car state))
(next-depth init-depth)
(last-depth init-depth)
(last-syntax-point (point)))
(unless endpos
;; Get error now if we don't have a complete sexp after point.