From: Eli Zaretskii Date: Sun, 7 May 2023 06:13:10 +0000 (+0300) Subject: Fix beginning/end-of-defun with tree-sitter X-Git-Tag: emacs-29.0.91~35 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=910a7b30dfd185eda78caf48e6f634a6a6e086f1;p=emacs.git 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. --- diff --git a/lisp/treesit.el b/lisp/treesit.el index 1d4749c8cd2..147b052d287 100644 --- a/lisp/treesit.el +++ b/lisp/treesit.el @@ -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.