Re: Bug: org-toggle-item removes tags from next heading [9.3.7 (release_9.3.7-696-g82b496 @ mixed installation! /home/n/.emacs.d/straight/build/org/ and /home/n/.emacs.d/straight/build/org/eln-x86_64-
No Wayman writes: > Added the test in the attached patch. Thanks. Applied (093b474e6), appending a period to the comment in the test for consistency.
Re: Bug: org-toggle-item removes tags from next heading [9.3.7 (release_9.3.7-696-g82b496 @ mixed installation! /home/n/.emacs.d/straight/build/org/ and /home/n/.emacs.d/straight/build/org/eln-x86_64-
Kyle Meyer writes: Would you mind updating the patch to add a test case along the lines of your ECM to test-org-list/toggle-item? Thanks. Added the test in the attached patch. Thanks, Kyle. ~ Nicholas Vollmer >From 838a6a548396eecfa958161abb66f0a1719a9aef Mon Sep 17 00:00:00 2001 From: Nicholas Vollmer Date: Fri, 31 Jul 2020 18:38:11 -0400 Subject: [PATCH] org-list: Operate on single line if no active region * lisp/org-list.el (org-toggle-item): Operate on single line if no active region. --- lisp/org-list.el | 2 +- testing/lisp/test-org-list.el | 7 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lisp/org-list.el b/lisp/org-list.el index fb061b054..c43630d05 100644 --- a/lisp/org-list.el +++ b/lisp/org-list.el @@ -3032,7 +3032,7 @@ With a prefix argument ARG, change the region in a single item." (if (org-region-active-p) (setq beg (funcall skip-blanks (region-beginning)) end (copy-marker (region-end))) - (setq beg (funcall skip-blanks (point-at-bol)) + (setq beg (point-at-bol) end (copy-marker (point-at-eol ;; Depending on the starting line, choose an action on the text ;; between BEG and END. diff --git a/testing/lisp/test-org-list.el b/testing/lisp/test-org-list.el index abd1a3c83..24a55464d 100644 --- a/testing/lisp/test-org-list.el +++ b/testing/lisp/test-org-list.el @@ -1109,6 +1109,13 @@ b. Item 2" (org-test-with-temp-text "* H\n:PROPERTIES:\n:A: 1\n:END:\n\n\nText" (org-toggle-item nil) (buffer-string + ;; When no region is marked and point is on a blank line + ;; only operate on current line + (should + (equal " \n* H :tag:" + (org-test-with-temp-text " \n* H :tag:" + (org-toggle-item nil) + (buffer-string ;; When a region is marked and first line is a headline, all ;; headlines are turned into items. (should -- 2.27.0
Re: Bug: org-toggle-item removes tags from next heading [9.3.7 (release_9.3.7-696-g82b496 @ mixed installation! /home/n/.emacs.d/straight/build/org/ and /home/n/.emacs.d/straight/build/org/eln-x86_64-
No Wayman writes: > I've attached a patch which removes the call to skip-blanks if > there is no active region. > This works for me with the ECM I've provided. > Not sure if it will have any adverse repercussions outside of > that. Taking a quick look, I don't spot anything. And the org-list tests still pass with the change. Would you mind updating the patch to add a test case along the lines of your ECM to test-org-list/toggle-item? Thanks.
Re: Bug: org-toggle-item removes tags from next heading [9.3.7 (release_9.3.7-696-g82b496 @ mixed installation! /home/n/.emacs.d/straight/build/org/ and /home/n/.emacs.d/straight/build/org/eln-x86_64-
I've attached a patch which removes the call to skip-blanks if there is no active region. This works for me with the ECM I've provided. Not sure if it will have any adverse repercussions outside of that. >From ada4f2a55b7a701aac02d4fc167be4b46e72f2c9 Mon Sep 17 00:00:00 2001 From: Nicholas Vollmer Date: Fri, 31 Jul 2020 18:38:11 -0400 Subject: [PATCH] org-list: Operate on single line if no active region * lisp/org-list.el (org-toggle-item): Operate on single line if no active region. --- lisp/org-list.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/org-list.el b/lisp/org-list.el index fb061b054..c43630d05 100644 --- a/lisp/org-list.el +++ b/lisp/org-list.el @@ -3032,7 +3032,7 @@ With a prefix argument ARG, change the region in a single item." (if (org-region-active-p) (setq beg (funcall skip-blanks (region-beginning)) end (copy-marker (region-end))) - (setq beg (funcall skip-blanks (point-at-bol)) + (setq beg (point-at-bol) end (copy-marker (point-at-eol ;; Depending on the starting line, choose an action on the text ;; between BEG and END. -- 2.27.0
Bug: org-toggle-item removes tags from next heading [9.3.7 (release_9.3.7-696-g82b496 @ mixed installation! /home/n/.emacs.d/straight/build/org/ and /home/n/.emacs.d/straight/build/org/eln-x86_64-pc-l
If `org-toggle-item' is called between the text of an entry and the next heading, it removes the tags from the next heading. ECM: With the following Org markup in a buffer and point denoted by "|": #+begin_example ,* First Some text | ,** Second :tag: #+end_example invoking `org-toggle-item' removes the second heading's tags, resulting in: #+begin_example ,* First Some text | ,** Second #+end_example `org-toggle-item's documentation claims: Convert headings or normal lines to items, items to normal lines. If there is no active region, only the current line is considered. Though this doesn't seem to be the case here. There is no active region, so I would expect it to do nothing in this case. I stepped through `org-toggle-item' and I believe it's because of the following logic: >;; Determine boundaries of changes. >(if (org-region-active-p) (setq beg (funcall skip-blanks (region-beginning)) >end (copy-marker (region-end))) >(setq beg (funcall skip-blanks (point-at-bol)) >end (copy-marker (point-at-eol Blank lines are being skipped regardless of whether region is active or not.