Add variable end-of-defun-moves-to-eol

* lisp/emacs-lisp/lisp.el (end-of-defun-moves-to-eol): New variable.
(end-of-defun): Use it.
This commit is contained in:
Filipp Gunbin 2022-08-05 21:01:10 +03:00
parent 0da97d6685
commit 50730a8b04

View file

@ -507,6 +507,13 @@ It is called with no argument, right after calling `beginning-of-defun-raw'.
So the function can assume that point is at the beginning of the defun body. So the function can assume that point is at the beginning of the defun body.
It should move point to the first position after the defun.") It should move point to the first position after the defun.")
(defvar end-of-defun-moves-to-eol t
"Defines whether `end-of-defun' moves to eol before doing
everything else.
Set this to nil in major mode if this movement affects mode's
decisions about context in an unwanted way.")
(defun buffer-end (arg) (defun buffer-end (arg)
"Return the \"far end\" position of the buffer, in direction ARG. "Return the \"far end\" position of the buffer, in direction ARG.
If ARG is positive, that's the end of the buffer. If ARG is positive, that's the end of the buffer.
@ -538,7 +545,9 @@ report errors as appropriate for this kind of usage."
(push-mark)) (push-mark))
(if (or (null arg) (= arg 0)) (setq arg 1)) (if (or (null arg) (= arg 0)) (setq arg 1))
(let ((pos (point)) (let ((pos (point))
(beg (progn (end-of-line 1) (beginning-of-defun-raw 1) (point))) (beg (progn (when end-of-defun-moves-to-eol
(end-of-line 1))
(beginning-of-defun-raw 1) (point)))
(skip (lambda () (skip (lambda ()
;; When comparing point against pos, we want to consider that ;; When comparing point against pos, we want to consider that
;; if point was right after the end of the function, it's ;; if point was right after the end of the function, it's