emacs-orgmode
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]