Hi, I noticed that using org-metaup when a region is active seems to behave in an unintuitive and potentially dangerous way. I would expect that it would behave similarly to org-refile when a region is active, but it doesn't.
Looking at the code, I see that it does this: ┌──── │ (let* ((a (min (region-beginning) (region-end))) │ (b (1- (max (region-beginning) (region-end)))) │ (c (save-excursion (goto-char a) │ (move-beginning-of-line 0))) │ (d (save-excursion (goto-char a) │ (move-end-of-line 0) (point)))) │ (transpose-regions a b c d) │ (goto-char c)) └──── It was difficult for me to understand what that would do, and the docstring of transpose-regions didn't help. So I did a small experiment, defining that code as a command and calling it in this buffer (where the region is marked with brackets): ┌──── │ abcd │ [efgh │ hijk] │ lmno └──── The result was this: ┌──── │ efgh │ hij │ abcdk │ lmno └──── Now for an example with Org headings, before: ┌──── │ * A │ ** A1 │ ** A2 │ [* B │ ** B1 │ ** B2] │ * C │ ** C1 │ ** C2 └──── After: ┌──── │ * A │ ** A1 │ * B │ ** B1 │ ** B │ ** A22 │ * C │ ** C1 │ ** C2 └──── As you can see, it's corrupted the outline: Heading B2 is now another B but on the second level, and heading A2 is now a child of the first-level B but named A22. And these examples don't even have entry text… Ideally it would act on all headings in the region, but given the complexity of doing that correctly, would it be a good first step to simply do nothing when org-metaup is called and a region is active? It would at least avoid corrupting data. I think that's a non-trivial risk, because when I noticed this behavior, it was in a partially collapsed outline, and some of the headings in the region (and their entry content) seemed to vanish altogether; I only recovered them with undo. Thanks.