diff options
| author | Stefan Monnier | 2017-12-13 14:13:11 -0500 |
|---|---|---|
| committer | Stefan Monnier | 2017-12-13 14:13:11 -0500 |
| commit | 57e2ca5c504fda014ba1971e850a26ef001a7bfd (patch) | |
| tree | 8cf8a178a007ae2cc9143c623c535a683df61b72 | |
| parent | a93c8e36f0e17b4f209cd943e581f0141789450f (diff) | |
| download | emacs-57e2ca5c504fda014ba1971e850a26ef001a7bfd.tar.gz 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.
| -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." | |||
| 339 | 339 | ||
| 340 | ((or defun-prompt-regexp open-paren-in-column-0-is-defun-start) | 340 | ((or defun-prompt-regexp open-paren-in-column-0-is-defun-start) |
| 341 | (and (< arg 0) (not (eobp)) (forward-char 1)) | 341 | (and (< arg 0) (not (eobp)) (forward-char 1)) |
| 342 | (and (re-search-backward (if defun-prompt-regexp | 342 | (and (let (found) |
| 343 | (concat (if open-paren-in-column-0-is-defun-start | 343 | (while |
| 344 | "^\\s(\\|" "") | 344 | (and (setq found |
| 345 | "\\(?:" defun-prompt-regexp "\\)\\s(") | 345 | (re-search-backward |
| 346 | "^\\s(") | 346 | (if defun-prompt-regexp |
| 347 | nil 'move arg) | 347 | (concat (if open-paren-in-column-0-is-defun-start |
| 348 | "^\\s(\\|" "") | ||
| 349 | "\\(?:" defun-prompt-regexp "\\)\\s(") | ||
| 350 | "^\\s(") | ||
| 351 | nil 'move arg)) | ||
| 352 | (nth 8 (syntax-ppss)))) | ||
| 353 | found) | ||
| 348 | (progn (goto-char (1- (match-end 0))) | 354 | (progn (goto-char (1- (match-end 0))) |
| 349 | t))) | 355 | t))) |
| 350 | 356 | ||