master b2177acb8c8: Fix prog-fill-reindent-defun to better handle an active region
Juri Linkov <[email protected]> Tue, 30 Jun 2026 11:54:07 -0400 (EDT)
| Newsgroups | gmane.emacs.diffs |
|---|---|
| Message-ID | <[email protected]> |
branch: master commit b2177acb8c8293386615f1181180c32f9d574f08 Author: Juri Linkov <[email protected]> Commit: Juri Linkov <[email protected]> Fix prog-fill-reindent-defun to better handle an active region * lisp/progmodes/prog-mode.el (prog--text-at-point-or-region-p): New function (bug#63790, bug#81281). (prog-fill-reindent-defun-default): Use it instead of 'prog--text-at-point-p'. * lisp/treesit.el (treesit-fill-reindent-defun): Use it instead of 'prog--text-at-point-p'. --- lisp/progmodes/prog-mode.el | 10 +++++++++- lisp/treesit.el | 4 ++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lisp/progmodes/prog-mode.el b/lisp/progmodes/prog-mode.el index afa18d9958b..a1cc32d3601 100644 --- a/lisp/progmodes/prog-mode.el +++ b/lisp/progmodes/prog-mode.el @@ -166,6 +166,14 @@ instead." (and (re-search-forward "\\s-*\\s<" (line-end-position) t) (nth 8 (syntax-ppss)))))) +(defun prog--text-at-point-or-region-p () + "Return non-nil if point or region's other end are in text." + (or (prog--text-at-point-p) + (and (use-region-p) + (save-excursion + (goto-char (mark)) + (prog--text-at-point-p))))) + (defvar prog-fill-reindent-defun-function #'prog-fill-reindent-defun-default "Function called by `prog-fill-reindent-defun' to do the actual work. @@ -176,7 +184,7 @@ It should take the same argument as `prog-fill-reindent-defun'.") JUSTIFY is the same as in `fill-paragraph'." (interactive "P") (save-excursion - (if (prog--text-at-point-p) + (if (prog--text-at-point-or-region-p) (fill-paragraph justify (region-active-p)) (beginning-of-defun) (let ((start (point))) diff --git a/lisp/treesit.el b/lisp/treesit.el index dbb39b19226..b5c7f2852d8 100644 --- a/lisp/treesit.el +++ b/lisp/treesit.el @@ -58,7 +58,7 @@ (require 'cl-lib) (require 'font-lock) (require 'seq) -(require 'prog-mode) ; For `prog--text-at-point-p'. +(require 'prog-mode) ; For `prog--text-at-point-or-region-p'. ;;; Function declarations @@ -4165,7 +4165,7 @@ This is a tree-sitter implementation of `prog-fill-reindent-defun'. JUSTIFY is the same as in `fill-paragraph'." (interactive "P") (save-excursion - (if (prog--text-at-point-p) + (if (prog--text-at-point-or-region-p) (fill-paragraph justify (region-active-p)) (let* ((treesit-defun-tactic 'parent-first) (node (treesit-defun-at-point)))