Bastien <[email protected]> writes:
> Nicolas Goaziou <[email protected]> writes:
>
>> Bastien <[email protected]> writes:
>>
>>> Nicolas Goaziou <[email protected]> writes:
>>>
>>>> (cond (org-startup-indented (require 'org-indent) (org-indent-mode 1))
>>>> ((org-bound-and-true-p org-indent-mode) (org-indent-mode -1)))
>>>
>>> This will not work, because (org-bound-and-true-p org-indent-mode)
>>> returns nil at the time `org-mode' is called.
>>
>> If it returns nil, it means that `org-startup-indented' is nil and
>> either `org-indent' isn't loaded or `org-indent-mode' is off.
>>
>> I don't get why it wouldn't work.
>
> Try to edebug-defun `org-mode' with the recipe I posted and you'll
> see: yes, `org-startup-indented' and `org-indent-mode' are off,
> but the org-indent properties have not been removed from the before,
> as they are by manually turning off with M-x org-indent-mode RET
I see, thank you. But I still don't understand where, and when,
`org-indent-mode' is reset.
Anyway, we can also patch `org-mode-restart', from
(defun org-mode-restart ()
(interactive)
(funcall major-mode)
(hack-local-variables)
(message "%s restarted" major-mode))
to,
(defun org-mode-restart ()
(interactive)
(let ((indent-status (org-bound-and-true-p org-indent-mode)))
(funcall major-mode)
(hack-local-variables)
(when (and indent-status (not (org-bound-and-true-p org-indent-mode)))
(org-indent-mode -1)))
(message "%s restarted" major-mode))
Still not pretty, but a bit better, IMO.
Also, there's a dangling (defvar org-indent-mode nil) in org.el that
looks suspicious. I don't think we need it if we use
`org-bound-and-true-p' whenever we need to check for `org-indent-mode'
value.
Regards,
--
Nicolas Goaziou