Fix (end-of-defun N) for N >= 2
* lisp/emacs-lisp/lisp.el (end-of-defun): Only skip to next line when after end of defun when ARG is 1 or less. * test/lisp/emacs-lisp/lisp-tests.el (end-of-defun-twice): New test (bug#24427).
This commit is contained in:
parent
2a47ef86e9
commit
9b9473ad75
2 changed files with 57 additions and 1 deletions
|
@ -482,7 +482,8 @@ is called as a function to find the defun's end."
|
|||
(if (looking-at "\\s<\\|\n")
|
||||
(forward-line 1))))))
|
||||
(funcall end-of-defun-function)
|
||||
(funcall skip)
|
||||
(when (<= arg 1)
|
||||
(funcall skip))
|
||||
(cond
|
||||
((> arg 0)
|
||||
;; Moving forward.
|
||||
|
|
|
@ -367,6 +367,61 @@ start."
|
|||
"
|
||||
"Test buffer for `mark-defun'."))
|
||||
|
||||
;;; end-of-defun
|
||||
|
||||
(ert-deftest end-of-defun-twice ()
|
||||
"Test behavior of prefix arg for `end-of-defun' (Bug#24427).
|
||||
Calling `end-of-defun' twice should be the same as a prefix arg
|
||||
of two."
|
||||
(setq last-command nil)
|
||||
(cl-flet ((eod2 (lambda ()
|
||||
(goto-char (point-min))
|
||||
(end-of-defun)
|
||||
(end-of-defun)
|
||||
(let ((pt-eod2 (point)))
|
||||
(goto-char (point-min))
|
||||
(end-of-defun 2)
|
||||
(should (= (point) pt-eod2))))))
|
||||
(with-temp-buffer
|
||||
(insert "\
|
||||
\(defun a ())
|
||||
|
||||
\(defun b ())
|
||||
|
||||
\(defun c ())")
|
||||
(eod2))
|
||||
(with-temp-buffer
|
||||
(insert "\
|
||||
\(defun a ())
|
||||
\(defun b ())
|
||||
\(defun c ())")
|
||||
(eod2)))
|
||||
(elisp-tests-with-temp-buffer ";; Comment header
|
||||
|
||||
\(defun func-1 (arg)
|
||||
\"docstring\"
|
||||
body)
|
||||
=!p1=
|
||||
;; Comment before a defun
|
||||
\(defun func-2 (arg)
|
||||
\"docstring\"
|
||||
body)
|
||||
|
||||
\(defun func-3 (arg)
|
||||
\"docstring\"
|
||||
body)
|
||||
=!p2=(defun func-4 (arg)
|
||||
\"docstring\"
|
||||
body)
|
||||
|
||||
;; end
|
||||
"
|
||||
(goto-char p1)
|
||||
(end-of-defun 2)
|
||||
(should (= (point) p2))))
|
||||
|
||||
;;; mark-defun
|
||||
|
||||
(ert-deftest mark-defun-no-arg-region-inactive ()
|
||||
"Test `mark-defun' with no prefix argument and inactive
|
||||
region."
|
||||
|
|
Loading…
Add table
Reference in a new issue