[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Bug: org-link-descriptive needs to be buffer-local [9.4.4 (release_9
From: |
Kyle Meyer |
Subject: |
Re: Bug: org-link-descriptive needs to be buffer-local [9.4.4 (release_9.4.4 @ /usr/local/share/emacs/28.0.50/lisp/org/)] |
Date: |
Wed, 07 Apr 2021 00:56:28 -0400 |
Ingo Lohmar writes:
> On Mon, Apr 05 2021 22:36 (-0400), Kyle Meyer wrote:
>> Hmm, I think a problem with `:local t' (or, equivalently,
>> make-variable-buffer-local for backward compatibility reasons) is that
>> then you'd interfere with user customization that directly sets this
>> after ol.el is loaded. You could also still get into a mismatched state
>> like you described above if you load an Org buffer, set the value
>> through the customization interface, and then call
>> org-toggle-link-display in that buffer.
[...]
> I am not sure that I understand the problem you're describing.. Maybe
> it's because I don't use the customize interface myself, but I think any
> such customization would only set the default value, wouldn't it?
Yes. Here are expanded descriptions for the two problems I'm referring
to above. This is based on testing with the `:local t' diff below (on
top of bcfe6f985, before the commit I mentioned in my last message).
* Breaks customization of direct setq callers if ol.el is already
loaded.
If
(setq org-link-descriptive nil)
is executed after ol.el is loaded, links in a visited Org buffer
will be displayed according to the default org-link-descriptive
value of t.
* Setting org-link-descriptive via the customization interface can get
into a mismatched state.
- Visit an Org file with a link and description.
org-link-descriptive is at its global value of t.
- Set org-link-descriptive to nil via the customization interface,
changing the global value to nil. This value is in effect in the
Org buffer because org-link-descriptive isn't yet buffer-local.
The description is still hidden because buffer-invisibility-spec
hasn't been changed.
- Calling org-toggle-link-display sets org-link-descriptive to t,
making org-link-descriptive a buffer-local variable. The
appearance of the description doesn't change due to the mismatch
(like described in your original report). Calling it again aligns
the buffer-local value and buffer-invisibility-spec.
diff --git a/lisp/ol.el b/lisp/ol.el
index d1db1683b..0e225ce4e 100644
--- a/lisp/ol.el
+++ b/lisp/ol.el
@@ -193,6 +193,7 @@ (defcustom org-link-descriptive t
`org-toggle-link-display' or from the \"Org > Hyperlinks\" menu."
:group 'org-link
:type 'boolean
+ :local t
:safe #'booleanp)
(defcustom org-link-make-description-function nil