Browse Source

Make `org-comment-dwim' check if on a heading

* lisp/org.el (org-comment-dwim): If on a heading, comment the
  heading.

* testing/lisp/test-org.el: Add test.

TINYCHANGE
Alex Branham 7 months ago
parent
commit
ee7ead62aa
2 changed files with 14 additions and 4 deletions
  1. 8 4
      lisp/org.el
  2. 6 0
      testing/lisp/test-org.el

+ 8 - 4
lisp/org.el

@@ -22813,11 +22813,15 @@ strictly within a source block, use appropriate comment syntax."
 		(forward-line)))))))))
 
 (defun org-comment-dwim (_arg)
-  "Call `comment-dwim' within a source edit buffer if needed."
+  "Call the comment command you mean.
+Call `org-toggle-comment' if on a heading, otherwise call
+`comment-dwim', within a source edit buffer if needed."
   (interactive "*P")
-  (if (org-in-src-block-p)
-      (org-babel-do-in-edit-buffer (call-interactively 'comment-dwim))
-    (call-interactively 'comment-dwim)))
+  (cond ((org-at-heading-p)
+	 (call-interactively #'org-toggle-comment))
+	((org-in-src-block-p)
+	 (org-babel-do-in-edit-buffer (call-interactively #'comment-dwim)))
+	(t (call-interactively #'comment-dwim))))
 
 
 ;;; Timestamps API

+ 6 - 0
testing/lisp/test-org.el

@@ -148,6 +148,12 @@
 	  (org-test-with-temp-text "#+KEYWORD: value"
 	    (call-interactively #'org-comment-dwim)
 	    (buffer-string))))
+  ;; Comment a heading
+  (should
+   (equal "* COMMENT Test"
+	  (org-test-with-temp-text "* Test"
+	    (call-interactively #'org-comment-dwim)
+	    (buffer-string))))
   ;; In a source block, use appropriate syntax.
   (should
    (equal "  ;; "