diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2017-12-13 14:13:11 -0500 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2017-12-13 14:13:11 -0500 |
commit | 57e2ca5c504fda014ba1971e850a26ef001a7bfd (patch) | |
tree | 8cf8a178a007ae2cc9143c623c535a683df61b72 /lisp/emacs-lisp | |
parent | a93c8e36f0e17b4f209cd943e581f0141789450f (diff) | |
download | emacs-57e2ca5c504fda014ba1971e850a26ef001a7bfd.tar.gz emacs-57e2ca5c504fda014ba1971e850a26ef001a7bfd.tar.bz2 emacs-57e2ca5c504fda014ba1971e850a26ef001a7bfd.zip |
Don't get fooled by open parens in column 0 within strings
* lisp/emacs-lisp/lisp.el (beginning-of-defun-raw):
Skip defun-prompt-regexp and open-paren-in-0 within strings and comments.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r-- | lisp/emacs-lisp/lisp.el | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el index 6952ef4cf49..09aa51055e0 100644 --- a/lisp/emacs-lisp/lisp.el +++ b/lisp/emacs-lisp/lisp.el @@ -339,12 +339,18 @@ is called as a function to find the defun's beginning." ((or defun-prompt-regexp open-paren-in-column-0-is-defun-start) (and (< arg 0) (not (eobp)) (forward-char 1)) - (and (re-search-backward (if defun-prompt-regexp - (concat (if open-paren-in-column-0-is-defun-start - "^\\s(\\|" "") - "\\(?:" defun-prompt-regexp "\\)\\s(") - "^\\s(") - nil 'move arg) + (and (let (found) + (while + (and (setq found + (re-search-backward + (if defun-prompt-regexp + (concat (if open-paren-in-column-0-is-defun-start + "^\\s(\\|" "") + "\\(?:" defun-prompt-regexp "\\)\\s(") + "^\\s(") + nil 'move arg)) + (nth 8 (syntax-ppss)))) + found) (progn (goto-char (1- (match-end 0))) t))) |