[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Making `eglot-server-programs' a custom variable?
From: |
Eli Zaretskii |
Subject: |
Re: Making `eglot-server-programs' a custom variable? |
Date: |
Sat, 12 Nov 2022 16:30:19 +0200 |
> From: Philip Kaludercic <philipk@posteo.net>
> Cc: jporterbugs@gmail.com, arash@gnu.org, emacs-devel@gnu.org,
> joaotavora@gmail.com
> Date: Sat, 12 Nov 2022 13:46:40 +0000
>
> >> (I'm not just talking about Eglot right now) If the default value is
> >> defined in an non-autoloaded variable, you have to load the library to
> >> access the value -- otherwise it simply wasn't loaded.
> >>
> >> The "issue" here is just that loading everything you want to modify
> >> during initialisation can get slow.
> >
> > Whether or not it is necessary to load the library depends on how the
> > :set function of the defcustom is implemented. I can see several ways
> > of implementing it that won't require loading the library right away,
> > and I'm sure you can see those ways as well.
>
> Actually no, I am not sure I do.
Any way that stored the changes of the variable's value in a data
structure whose execution is deferred to when the library is first
loaded. This includes ` backquoted forms, eval-after-load, mode
hooks, etc.
> > To me, this says that storing the value in a defcustom hits that
> > "issue" to which you were alluding, and for which I proposed a
> > solution of having the defcustom be an add-on to the baseline value.
>
> I see. The issue is that if I just set the user option directly, say
> even before loading the library I overwrite the default value.
Once again, I'm talking about the user option being used to _augment_
the default value of a variable. Such a user option should by default
have a nil value, so setting the value of the option doesn't overwrite
the baseline value of the variable which the option will augment.
I feel there's a misunderstanding here, because I don't see why these
obvious aspects need to be explained. So let me provide an example as
a possible clarification.
Under my proposal, the variable eglot-server-programs remains a
defvar, and contains the baseline list of the servers. To customize
the list, users change the value of a separate user option, say,
eglot-user-server-programs. This user option's value is nil by
default, and it allows users to specify both additions of servers to
the baseline value of eglot-server-programs and removal of servers
from that value. The :set function of eglot-user-server-programs then
takes care of doing whatever is needed to make sure that the value of
eglot-server-programs is modified according to
eglot-user-server-programs's value when Eglot is started.
> >> Maybe I have missed something, if a user option has a `repeat' or
> >> `alist' type, you can't just say "append this and that value to the end
> >> of some other value". All you get to modify is the entire list, and all
> >> you get to store is the entire list.
> >
> > That's a job for the :set function of the defcustom.
>
> I am not sure I know what you are thinking of, but wouldn't this mean
> all user options that have already been marked as having a `repeat' or
> `alist' type, that these would now require an additional :set function?
No, of course not. I didn't mean any changes to the infrastructure
that we use for Customize and user options in general. See above, I
hope I now explained what I had in mind.
- Re: Making `eglot-server-programs' a custom variable?, (continued)
- Re: Making `eglot-server-programs' a custom variable?, Philip Kaludercic, 2022/11/12
- Re: Making `eglot-server-programs' a custom variable?, Philip Kaludercic, 2022/11/12
- Re: Making `eglot-server-programs' a custom variable?, Eli Zaretskii, 2022/11/12
- Re: Making `eglot-server-programs' a custom variable?, Philip Kaludercic, 2022/11/12
- Re: Making `eglot-server-programs' a custom variable?, Eli Zaretskii, 2022/11/12
- Re: Making `eglot-server-programs' a custom variable?, Philip Kaludercic, 2022/11/12
- Re: Making `eglot-server-programs' a custom variable?, Eli Zaretskii, 2022/11/12
- Re: Making `eglot-server-programs' a custom variable?, Philip Kaludercic, 2022/11/12
- Re: Making `eglot-server-programs' a custom variable?, Eli Zaretskii, 2022/11/12
- Re: Making `eglot-server-programs' a custom variable?, Philip Kaludercic, 2022/11/12
- Re: Making `eglot-server-programs' a custom variable?,
Eli Zaretskii <=
- Re: Making `eglot-server-programs' a custom variable?, Philip Kaludercic, 2022/11/12
- Re: Making `eglot-server-programs' a custom variable?, Eli Zaretskii, 2022/11/13
- Re: Making `eglot-server-programs' a custom variable?, Philip Kaludercic, 2022/11/13
- Re: Making `eglot-server-programs' a custom variable?, Eli Zaretskii, 2022/11/13
- Re: Making `eglot-server-programs' a custom variable?, Philip Kaludercic, 2022/11/15
- Re: Making `eglot-server-programs' a custom variable?, Eli Zaretskii, 2022/11/15
- Re: Making `eglot-server-programs' a custom variable?, Philip Kaludercic, 2022/11/16
- Re: Making `eglot-server-programs' a custom variable?, Eli Zaretskii, 2022/11/16
- Re: Making `eglot-server-programs' a custom variable?, Philip Kaludercic, 2022/11/16
- Re: Making `eglot-server-programs' a custom variable?, Eli Zaretskii, 2022/11/16