Fix beginning/end-of-defun with tree-sitter

* lisp/treesit.el (treesit-beginning-of-defun)
(treesit-end-of-defun): Push mark, as other beginning/end-of-defun
functions do.
This commit is contained in:
Eli Zaretskii 2023-05-07 09:13:10 +03:00
parent e205f68717
commit 910a7b30df

View file

@ -1862,6 +1862,10 @@ This is a tree-sitter equivalent of `beginning-of-defun'.
Behavior of this function depends on `treesit-defun-type-regexp'
and `treesit-defun-skipper'."
(interactive "^p")
(or (not (eq this-command 'treesit-beginning-of-defun))
(eq last-command 'treesit-beginning-of-defun)
(and transient-mark-mode mark-active)
(push-mark))
(let ((orig-point (point))
(success nil))
(catch 'done
@ -1892,6 +1896,10 @@ this function depends on `treesit-defun-type-regexp' and
(interactive "^p\nd")
(let ((orig-point (point)))
(if (or (null arg) (= arg 0)) (setq arg 1))
(or (not (eq this-command 'treesit-end-of-defun))
(eq last-command 'treesit-end-of-defun)
(and transient-mark-mode mark-active)
(push-mark))
(catch 'done
(dotimes (_ 2) ; Not making progress is better than infloop.