emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master cf670b4 2/2: Fix indent-sexp when called from insid


From: Noam Postavsky
Subject: [Emacs-diffs] master cf670b4 2/2: Fix indent-sexp when called from inside a string (Bug#21343)
Date: Sun, 12 Mar 2017 20:14:07 -0400 (EDT)

branch: master
commit cf670b49a7704d63575863f832426d32bf6a8c3c
Author: Noam Postavsky <address@hidden>
Commit: Noam Postavsky <address@hidden>

    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'.
---
 lisp/emacs-lisp/lisp-mode.el | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 5faa6a5..eb07c18 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]