forked from mirrors/org-mode
org-comment-line-break-function: Avoid built-in Emacs comment machinery
* lisp/org.el (org-comment-line-break-function): Rely on Org parser (`org-adaptive-fill-function') to determine comment filling. Handle nil values of `fill-prefix' correctly. * testing/lisp/test-org.el (test-org/default-indent-new-line): New test. Written by Kaushal Modi <kaushal.modi@gmail.com> https://list.orgmode.org/CAFyQvY36DkBSNy2mPxDNZWeoTjUK8mAqgJM-zHxNamfReqGkuQ@mail.gmail.com/ Reported-by: Richard Lawrence <richard.lawrence@uni-tuebingen.de> Link: https://list.orgmode.org/87lf18fue9.fsf@aquinas.i-did-not-set--mail-host-address--so-tickle-me/
This commit is contained in:
parent
9db57aee3e
commit
506d5b12dd
10
lisp/org.el
10
lisp/org.el
|
@ -19296,12 +19296,18 @@ filling the current element."
|
||||||
"Break line at point and indent, continuing comment if within one.
|
"Break line at point and indent, continuing comment if within one.
|
||||||
The inserted newline is marked hard if variable
|
The inserted newline is marked hard if variable
|
||||||
`use-hard-newlines' is true, unless optional argument SOFT is
|
`use-hard-newlines' is true, unless optional argument SOFT is
|
||||||
non-nil."
|
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))
|
(if soft (insert-and-inherit ?\n) (newline 1))
|
||||||
(save-excursion (forward-char -1) (delete-horizontal-space))
|
(save-excursion (forward-char -1) (delete-horizontal-space))
|
||||||
(delete-horizontal-space)
|
(delete-horizontal-space)
|
||||||
(indent-to-left-margin)
|
(indent-to-left-margin)
|
||||||
(insert-before-markers-and-inherit fill-prefix))
|
(when fill-prefix
|
||||||
|
(insert-before-markers-and-inherit fill-prefix))))
|
||||||
|
|
||||||
|
|
||||||
;;; Fixed Width Areas
|
;;; Fixed Width Areas
|
||||||
|
|
|
@ -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))
|
(org-indent-region (point-min) (point-max))
|
||||||
(buffer-string)))))
|
(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<point>"
|
||||||
|
(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<point>"
|
||||||
|
(call-interactively #'default-indent-new-line)
|
||||||
|
(buffer-string))))
|
||||||
|
(should
|
||||||
|
(equal "# Some Org\n# comment"
|
||||||
|
(org-test-with-temp-text "# Some Org <point>comment"
|
||||||
|
(call-interactively #'default-indent-new-line)
|
||||||
|
(buffer-string)))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;;; Editing
|
;;; Editing
|
||||||
|
|
Loading…
Reference in a new issue