Eli Zaretskii <e...@gnu.org> writes: >> > How would kill-line know that it's about to kill a subtree? All it >> > knows is that it is killing some invisible text. >> >> I imagine the following: >> >> 1. `kill-*-line' function will, by default, test if invisible text of >> length size is killed and query the user when called interactively. >> >> 2. Major modes could also set buffer-local `kill-line-query-function' >> that will return nil when killing should proceed without query or a >> string with query text. > > If the command is only sensitive to invisible text, it could warn > about so-and-so many invisible characters being killed, but it could > not warn about "subtrees", which is what you wanted. Invisible text > in a buffer could have nothing to do with subtrees, even if the buffer > is under org-mode.
Let me elaborate. In Elisp, I am thinking about something like: (defvar-local kill-line-query-function #'kill-line-query-default) (defun kill-line-query-default (beg end) (let ((nlines <count invisible lines between beg end>)) (when (> nlines threshold) (format "Kill %d invisible lines? " nlines)))) Then, Org mode can instead have (setq-local kill-line-query-function #'org-kill-line-query) (defun org-kill-line-query (beg end) (org-with-point-at beg (when (and (org-at-heading-p) (progn (end-of-line) (and (< (point) end) (org-fold-folded-p)))) "Kill hidden subtree along with headline? "))) -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at <https://orgmode.org/>. Support Org development at <https://liberapay.com/org-mode>, or support my work at <https://liberapay.com/yantar92>