1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-06 03:40:56 -08:00

lisp/emacs-lisp/lisp-mode.el: Fix parser state corruption.

* lisp/emacs-lisp/lisp-mode.el (lisp--local-defform-body-p): Preserve
the point.
* test/lisp/progmodes/elisp-mode-resources/flet.erts: Add corresponding
test example (bug#9622).
This commit is contained in:
akater 2021-11-08 07:37:51 +01:00 committed by Lars Ingebrigtsen
parent 51aa6cee2c
commit ca9fb109f7
2 changed files with 17 additions and 6 deletions

View file

@ -1148,12 +1148,13 @@ STATE is the `parse-partial-sexp' state for current position."
;; that starts a sexp.
t)
(point))))))
(save-excursion
(ignore-errors
;; We rely on `backward-up-list' working
;; even when sexp is incomplete “to the right”.
(backward-up-list 2)
t)
(= local-definitions-starting-point (point))))))))
(= local-definitions-starting-point (point)))))))))
(defun lisp-indent-function (indent-point state)
"This function is the normal value of the variable `lisp-indent-function'.

View file

@ -221,6 +221,16 @@ Name: flet15
i)))
=-=-=
Name: flet16
=-=
(cl-flet ((f (x)
(g x)))
(pcase e
((dangerous-expression)
(form))))
=-=-=
Name: flet-indentation-incomplete-sexp-no-side-effects-1
Code: (lambda () (emacs-lisp-mode) (setq indent-tabs-mode nil) (newline nil t))
Point-Char: |