diff --git a/lisp/org.el b/lisp/org.el index 545ca36cd..8346ffe39 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -19296,12 +19296,18 @@ filling the current element." "Break line at point and indent, continuing comment if within one. The inserted newline is marked hard if variable `use-hard-newlines' is true, unless optional argument SOFT is -non-nil." - (if soft (insert-and-inherit ?\n) (newline 1)) - (save-excursion (forward-char -1) (delete-horizontal-space)) - (delete-horizontal-space) - (indent-to-left-margin) - (insert-before-markers-and-inherit fill-prefix)) +non-nil. + +This function is a simplified version of `comment-indent-new-line' +that bypasses the complex Emacs machinery dealing with comments. +We instead rely on Org parser, utilizing `org-adaptive-fill-function'" + (let ((fill-prefix (org-adaptive-fill-function))) + (if soft (insert-and-inherit ?\n) (newline 1)) + (save-excursion (forward-char -1) (delete-horizontal-space)) + (delete-horizontal-space) + (indent-to-left-margin) + (when fill-prefix + (insert-before-markers-and-inherit fill-prefix)))) ;;; Fixed Width Areas diff --git a/testing/lisp/test-org.el b/testing/lisp/test-org.el index 1b4157d0e..4a6a3a0b0 100644 --- a/testing/lisp/test-org.el +++ b/testing/lisp/test-org.el @@ -1405,6 +1405,26 @@ CLOCK: [2022-09-17 sam. 11:00]--[2022-09-17 sam. 11:46] => 0:46" (org-indent-region (point-min) (point-max)) (buffer-string))))) +(ert-deftest test-org/default-indent-new-line () + "Test behavior of default binding `M-j'." + ;; Calling `M-j' when point is not in an Org comment: + (should + (equal "* Some heading\n" + (org-test-with-temp-text "* Some heading" + (call-interactively #'default-indent-new-line) + (buffer-string)))) + ;; Calling `M-j' when point is in an Org comment: + (should + (equal "# Some Org comment\n# " + (org-test-with-temp-text "# Some Org comment" + (call-interactively #'default-indent-new-line) + (buffer-string)))) + (should + (equal "# Some Org\n# comment" + (org-test-with-temp-text "# Some Org comment" + (call-interactively #'default-indent-new-line) + (buffer-string))))) + ;;; Editing