> However, with negative arguments that does not happen, as
> `sh-mode--treesit-beginning-of-defun' moves point to (beginning of) the
> closest sibling function (after point) and
> `sh-mode--treesit-end-of-defun' moves
> point to (end of) the closest sibling function (before point). In this
> case, the selected functions to which point move to are not the same.
Please read the docstring of `end-of-defun-function`, because I suspect
that you are confused about what it's supposed to do. E.g. it's not
supposed to "move point to (end of) the closest sibling function", so
I think you'll need to set it to a different function than
`sh-mode--treesit-end-of-defun`.
Indeed. I was trying to impose the behavior I desired to achieve instead of the intended use. I corrected that in my patch.
Looking forward to comments and suggestions for the patch.