From 31564be89042e5a4184fa7b8e29d200f30ec596e Mon Sep 17 00:00:00 2001 From: Jens Schmidt Date: Tue, 26 Sep 2023 21:36:19 +0200 Subject: [PATCH] Fix beginning-of-defun not jumping to BOF In batch mode or when font-lock and some other niceties are switched off, function `syntax-ppss' can modify match data held by function `beginning-of-defun-raw'. In that case, `beginning-of-defun' can jump to some seemingly arbitrary position, and not the actual BOF. * lisp/emacs-lisp/lisp.el (beginning-of-defun-raw): Save match data around a call to `syntax-ppss'. (Bug#66218) --- lisp/emacs-lisp/lisp.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el index a4aa79c171e..ee481dc4ed3 100644 --- a/lisp/emacs-lisp/lisp.el +++ b/lisp/emacs-lisp/lisp.el @@ -422,7 +422,8 @@ beginning-of-defun-raw "\\(?:" defun-prompt-regexp "\\)\\s(") "^\\s(") nil 'move arg)) - (nth 8 (syntax-ppss)))) + (save-match-data + (nth 8 (syntax-ppss))))) found) (progn (goto-char (1- (match-end 0))) t))) -- 2.30.2