1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-21 18:23:59 +00:00

Modify `beginning-of-defun-comments'

* lisp/emacs-lisp/lisp.el (beginning-of-defun-comments): Try not to stop
in the middle of a multiline comment.
This commit is contained in:
Noam Postavsky 2017-05-09 09:38:49 +02:00 committed by Marcin Borkowski
parent cb8fcbc3cb
commit aa779b0f15

View File

@ -417,14 +417,22 @@ whitespace."
(interactive "^p")
(unless arg (setq arg 1))
(beginning-of-defun arg)
(let (nbobp)
(while (progn
(setq nbobp (zerop (forward-line -1)))
(and (not (looking-at "^\\s-*$"))
(beginning-of-defun--in-emptyish-line-p)
nbobp)))
(when nbobp
(forward-line 1))))
(let (first-line-p)
(while (let ((ppss (progn (setq first-line-p (= (forward-line -1) -1))
(syntax-ppss (line-end-position)))))
(while (and (nth 4 ppss) ; If eol is in a line-spanning comment,
(< (nth 8 ppss) (line-beginning-position)))
(goto-char (nth 8 ppss)) ; skip to comment start.
(setq ppss (syntax-ppss (line-end-position))))
(and (not first-line-p)
(progn (skip-syntax-backward
"-" (line-beginning-position))
(not (bolp))) ; Check for blank line.
(progn (parse-partial-sexp
(line-beginning-position) (line-end-position)
nil t (syntax-ppss (line-beginning-position)))
(eolp))))) ; Check for non-comment text.
(forward-line (if first-line-p 0 1))))
(defvar end-of-defun-function
(lambda () (forward-sexp 1))