unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Comments on setopt
@ 2022-02-14 23:01 Philip Kaludercic
  2022-02-15  3:40 ` Po Lu
  2022-02-15  9:32 ` Lars Ingebrigtsen
  0 siblings, 2 replies; 26+ messages in thread
From: Philip Kaludercic @ 2022-02-14 23:01 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel


Hi Lars,

I'm glad to see the recent addition of the setopt macro.  Having have
experimented with similar macros in the past, I wanted to raise these
points:

- Unless it makes more sense for `customize-set-variable' to take care
  of it, should there be some type checking with errors or warnings if
  the value doesn't match the type of a user option?

- As `customize-set-variable' is being used directly, the "user" theme
  is modified, and a customisation might be mirrored in
  `custom-set-variables'.  This can lead to the unfortunate situation
  where your setopt configuration is overriden by the
  `custom-set-variables', depending on when and how you load `custom-file'
  and when and how the `custom-set-variables' was generated.

- While I don't mind it really, I can imagine that others might object
  to the "long" name, when compared to setq.  Would a default alias like
  "seto" or "setc" be worth it or not?

-- 
	Philip Kaludercic



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-14 23:01 Comments on setopt Philip Kaludercic
@ 2022-02-15  3:40 ` Po Lu
  2022-02-16  4:12   ` Richard Stallman
  2022-02-15  9:32 ` Lars Ingebrigtsen
  1 sibling, 1 reply; 26+ messages in thread
From: Po Lu @ 2022-02-15  3:40 UTC (permalink / raw)
  To: Philip Kaludercic; +Cc: Lars Ingebrigtsen, emacs-devel

Philip Kaludercic <philipk@posteo.net> writes:

> Hi Lars,
>
> I'm glad to see the recent addition of the setopt macro.  

Indeed, it's a great addition.

> - While I don't mind it really, I can imagine that others might object
>   to the "long" name, when compared to setq.  Would a default alias like
>   "seto" or "setc" be worth it or not?

I think setopt is enough.  "seto" might be confused with oset, while I
don't immediately see what "setc" is supposed to represent.

What I find problematic is the large scale replacement of
`custom-set-variables' with setopt in the user manual.  I think there
was once a specific reason to use `custom-set-variables' there, but I
can't remember what.



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-14 23:01 Comments on setopt Philip Kaludercic
  2022-02-15  3:40 ` Po Lu
@ 2022-02-15  9:32 ` Lars Ingebrigtsen
  2022-02-15 13:15   ` Stefan Monnier
                     ` (2 more replies)
  1 sibling, 3 replies; 26+ messages in thread
From: Lars Ingebrigtsen @ 2022-02-15  9:32 UTC (permalink / raw)
  To: Philip Kaludercic; +Cc: emacs-devel

Philip Kaludercic <philipk@posteo.net> writes:

> - Unless it makes more sense for `customize-set-variable' to take care
>   of it, should there be some type checking with errors or warnings if
>   the value doesn't match the type of a user option?

`customize-set-variable' should indeed warn/error out if the value is
invalid.

> - As `customize-set-variable' is being used directly, the "user" theme
>   is modified, and a customisation might be mirrored in
>   `custom-set-variables'.  This can lead to the unfortunate situation
>   where your setopt configuration is overriden by the
>   `custom-set-variables', depending on when and how you load `custom-file'
>   and when and how the `custom-set-variables' was generated.

Isn't that the case no matter how these variables are set?  It depends
on the order.

> - While I don't mind it really, I can imagine that others might object
>   to the "long" name, when compared to setq.  Would a default alias like
>   "seto" or "setc" be worth it or not?

I think `seto' is confusing, and `setc' doesn't really tell you
anything.  The salient thing is that we're setting user option, not that
it's been defined by `defcustom'.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-15  9:32 ` Lars Ingebrigtsen
@ 2022-02-15 13:15   ` Stefan Monnier
  2022-02-15 17:20     ` Philip Kaludercic
  2022-02-17 11:27     ` Lars Ingebrigtsen
  2022-02-15 17:17   ` Philip Kaludercic
  2022-02-15 19:22   ` Juri Linkov
  2 siblings, 2 replies; 26+ messages in thread
From: Stefan Monnier @ 2022-02-15 13:15 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Philip Kaludercic, emacs-devel

>> - As `customize-set-variable' is being used directly, the "user" theme
>>   is modified, and a customisation might be mirrored in
>>   `custom-set-variables'.  This can lead to the unfortunate situation
>>   where your setopt configuration is overriden by the
>>   `custom-set-variables', depending on when and how you load `custom-file'
>>   and when and how the `custom-set-variables' was generated.
>
> Isn't that the case no matter how these variables are set?  It depends
> on the order.

No.  If you set the variable with `setq` Custom will notice that it was
set "outside of Custom" and thus refrain from saving the value into its
`customize-set-variables` block.

>> - While I don't mind it really, I can imagine that others might object
>>   to the "long" name, when compared to setq.  Would a default alias like
>>   "seto" or "setc" be worth it or not?
> I think `seto' is confusing, and `setc' doesn't really tell you
> anything.  The salient thing is that we're setting user option, not that
> it's been defined by `defcustom'.

FWIW, it took me a while to understand what "long name" Philip was
talking about because I assumed `setopt` wouldn't be considered as
long.  ;-)


        Stefan




^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-15  9:32 ` Lars Ingebrigtsen
  2022-02-15 13:15   ` Stefan Monnier
@ 2022-02-15 17:17   ` Philip Kaludercic
  2022-02-15 19:22   ` Juri Linkov
  2 siblings, 0 replies; 26+ messages in thread
From: Philip Kaludercic @ 2022-02-15 17:17 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Philip Kaludercic <philipk@posteo.net> writes:
>
>> - As `customize-set-variable' is being used directly, the "user" theme
>>   is modified, and a customisation might be mirrored in
>>   `custom-set-variables'.  This can lead to the unfortunate situation
>>   where your setopt configuration is overriden by the
>>   `custom-set-variables', depending on when and how you load `custom-file'
>>   and when and how the `custom-set-variables' was generated.
>
> Isn't that the case no matter how these variables are set?  It depends
> on the order.

Well yes, but the issue can still be confusing and isn't obvious to
solve at first.  Just recently I had a similar issue where
smtpmail-smtp-service was set to 25, despite my configuration setting
int to 587, even after restarting Emacs.  The reason was that in my
custom-file, it was reverted to 25 (for some reason), and of course,
just deleting the line isn't enough, as it might be re-genereted again.
I can deal with this, but I also recognise the potential for confusion.

-- 
	Philip Kaludercic



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-15 13:15   ` Stefan Monnier
@ 2022-02-15 17:20     ` Philip Kaludercic
  2022-02-17 11:27     ` Lars Ingebrigtsen
  1 sibling, 0 replies; 26+ messages in thread
From: Philip Kaludercic @ 2022-02-15 17:20 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Lars Ingebrigtsen, emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>>> - While I don't mind it really, I can imagine that others might object
>>>   to the "long" name, when compared to setq.  Would a default alias like
>>>   "seto" or "setc" be worth it or not?
>> I think `seto' is confusing, and `setc' doesn't really tell you
>> anything.  The salient thing is that we're setting user option, not that
>> it's been defined by `defcustom'.
>
> FWIW, it took me a while to understand what "long name" Philip was
> talking about because I assumed `setopt` wouldn't be considered as
> long.  ;-)


The only reason I bring this up is that if someone has a block like

  (setq save-interprogram-paste-before-kill t
        kill-do-not-save-duplicates t
        mouse-yank-at-point t)

they might hesitate to use setopt, purely because of the aesthetic
disadvantage of now being indented more:

  (setopt save-interprogram-paste-before-kill t
          kill-do-not-save-duplicates t
          mouse-yank-at-point t)

Again, nothing critical (one could also start listing option in the
second line), but something I could anticipate being brought up..

>
>         Stefan
>

-- 
	Philip Kaludercic



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-15  9:32 ` Lars Ingebrigtsen
  2022-02-15 13:15   ` Stefan Monnier
  2022-02-15 17:17   ` Philip Kaludercic
@ 2022-02-15 19:22   ` Juri Linkov
  2022-02-17 11:28     ` Lars Ingebrigtsen
  2 siblings, 1 reply; 26+ messages in thread
From: Juri Linkov @ 2022-02-15 19:22 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Philip Kaludercic, emacs-devel

>> - Unless it makes more sense for `customize-set-variable' to take care
>>   of it, should there be some type checking with errors or warnings if
>>   the value doesn't match the type of a user option?
>
> `customize-set-variable' should indeed warn/error out if the value is
> invalid.

Maybe like `set-variable' checks for custom-type.



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-15  3:40 ` Po Lu
@ 2022-02-16  4:12   ` Richard Stallman
  2022-02-16  7:04     ` Rudolf Adamkovič
  2022-02-16  7:13     ` Po Lu
  0 siblings, 2 replies; 26+ messages in thread
From: Richard Stallman @ 2022-02-16  4:12 UTC (permalink / raw)
  To: Po Lu; +Cc: philipk, larsi, emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > > - While I don't mind it really, I can imagine that others might object
  > >   to the "long" name, when compared to setq.  Would a default alias like
  > >   "seto" or "setc" be worth it or not?

  > I think setopt is enough.  "seto" might be confused with oset, while I
  > don't immediately see what "setc" is supposed to represent.

Setting a command line option is not especially common.
I don't think it calls for a name of only 6 characters -- if I were
choosing one afresh, I think I would choose `set-command-option'.

The only reason to use `setopt' is to for parallelism with `getopt'.


-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-16  4:12   ` Richard Stallman
@ 2022-02-16  7:04     ` Rudolf Adamkovič
  2022-02-16  9:52       ` Phil Sainty
  2022-02-16  7:13     ` Po Lu
  1 sibling, 1 reply; 26+ messages in thread
From: Rudolf Adamkovič @ 2022-02-16  7:04 UTC (permalink / raw)
  To: rms, Po Lu; +Cc: philipk, larsi, emacs-devel

Richard Stallman <rms@gnu.org> writes:

> Setting a command line option is not especially common.
>
> […]
>
> The only reason to use `setopt' is to for parallelism with `getopt'.

A command line option?

> I don't think it calls for a name of only 6 characters -- if I were
> choosing one afresh, I think I would choose `set-command-option'.

I agree on unnecessary brevity.

Why not call it `set-user-option', given its description?

"This is like ‘setq’, but is meant for user options […]"

Rudy
-- 
"It is no paradox to say that in our most theoretical moods we may be
nearest to our most practical applications."
-- Alfred North Whitehead, 1861-1947

Rudolf Adamkovič <salutis@me.com> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-16  4:12   ` Richard Stallman
  2022-02-16  7:04     ` Rudolf Adamkovič
@ 2022-02-16  7:13     ` Po Lu
  2022-02-19  4:54       ` Richard Stallman
  1 sibling, 1 reply; 26+ messages in thread
From: Po Lu @ 2022-02-16  7:13 UTC (permalink / raw)
  To: Richard Stallman; +Cc: philipk, larsi, emacs-devel

Richard Stallman <rms@gnu.org> writes:

> Setting a command line option is not especially common.
> I don't think it calls for a name of only 6 characters -- if I were
> choosing one afresh, I think I would choose `set-command-option'.
>
> The only reason to use `setopt' is to for parallelism with `getopt'.

This macro sets a customizable variable in Emacs, it's not related to
`getopt'.  Here is its definition:

  (defmacro setopt (&rest pairs)
    "Set VARIABLE/VALUE pairs, and return the final VALUE.
  This is like `setq', but is meant for user options instead of
  plain variables.  This means that `setopt' will execute any
  Customize form associated with VARIABLE.

  If VARIABLE has a `custom-set' property, that is used for setting
  VARIABLE, otherwise `set-default' is used.

  \(fn [VARIABLE VALUE]...)"
    (declare (debug setq))
    (unless (zerop (mod (length pairs) 2))
      (error "PAIRS must have an even number of variable/value members"))
    (let ((expr nil))
      (while pairs
        (unless (symbolp (car pairs))
          (error "Attempting to set a non-symbol: %s" (car pairs)))
        (push `(customize-set-variable ',(car pairs) ,(cadr pairs))
              expr)
        (setq pairs (cddr pairs)))
      (macroexp-progn (nreverse expr))))

Thanks.



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-16  7:04     ` Rudolf Adamkovič
@ 2022-02-16  9:52       ` Phil Sainty
  2022-02-16 13:23         ` Stefan Monnier
  0 siblings, 1 reply; 26+ messages in thread
From: Phil Sainty @ 2022-02-16  9:52 UTC (permalink / raw)
  To: Rudolf Adamkovič; +Cc: Po Lu, larsi, philipk, rms, emacs-devel

On 2022-02-16 20:04, Rudolf Adamkovič wrote:
> I agree on unnecessary brevity.
> Why not call it `set-user-option', given its description?

Even better, let's call it `customize-set-variable'? (/joke)

I managed to fail to CC the list address in an earlier response, but
for the record I've always thought that `setc' would be a good name
for such a thing, and IMO giving it a name that is at least nearly as
succinct as `setq' is not merely a good idea, but the primary benefit
over using `customize-set-variable' directly (indeed, I believe the
verbosity of the name `customize-set-variable' is a significant reason
why many people prefer to use `setq' for everything, even when they
know that user options can have setters).

To me, `setc' would be "like `setq' but for custom/user options",
and it's not going to be any more confusing than `setq' either.

If the name has to be longer then I think `setopt' is a good choice,
but I think that anything more verbose than this is missing the point
(either that, or I am).


-Phil




^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-16  9:52       ` Phil Sainty
@ 2022-02-16 13:23         ` Stefan Monnier
  2022-02-16 22:34           ` Phil Sainty
  2022-02-16 22:57           ` Philip Kaludercic
  0 siblings, 2 replies; 26+ messages in thread
From: Stefan Monnier @ 2022-02-16 13:23 UTC (permalink / raw)
  To: Phil Sainty
  Cc: Rudolf Adamkovič, Po Lu, larsi, philipk, rms, emacs-devel

> over using `customize-set-variable' directly (indeed, I believe the
> verbosity of the name `customize-set-variable' is a significant reason
> why many people prefer to use `setq' for everything, even when they
> know that user options can have setters).

Hmm... I'm not sure I understand the motivation behind the introduction
of `setopt`, to be honest.  As pointed out, `setopt` should probably not
be used at top-level in a `.emacs` because Custom will think this was
set via `customize-set-variables` and will save that setting back into
`custom-file` next time we ask to save the customized variables.

As a general rule, it should also be avoided by packages because
packages shouldn't change user options behind the user's back.

So the remaining places where it makes sense to use it are fairly
rare, AFAICT.

Am I missing something?


        Stefan




^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-16 13:23         ` Stefan Monnier
@ 2022-02-16 22:34           ` Phil Sainty
  2022-02-16 22:42             ` Stefan Monnier
  2022-02-16 22:57           ` Philip Kaludercic
  1 sibling, 1 reply; 26+ messages in thread
From: Phil Sainty @ 2022-02-16 22:34 UTC (permalink / raw)
  To: Stefan Monnier
  Cc: philipk, rms, emacs-devel, Po Lu, larsi, Rudolf Adamkovič

On 2022-02-17 02:23, Stefan Monnier wrote:
> As pointed out, `setopt` should probably not be used at top-level
> in a `.emacs` because Custom will think this was set via
> `customize-set-variables` and will save that setting back into
> `custom-file` next time we ask to save the customized variables.

 From the description I thought this would invoke any setter function
but otherwise act like setq in that it would *not* touch the user's
custom file.

That would be the desirable behaviour, no?


-Phil




^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-16 22:34           ` Phil Sainty
@ 2022-02-16 22:42             ` Stefan Monnier
  0 siblings, 0 replies; 26+ messages in thread
From: Stefan Monnier @ 2022-02-16 22:42 UTC (permalink / raw)
  To: Phil Sainty
  Cc: Rudolf Adamkovič, Po Lu, larsi, philipk, rms, emacs-devel

Phil Sainty [2022-02-17 11:34:00] wrote:
> On 2022-02-17 02:23, Stefan Monnier wrote:
>> As pointed out, `setopt` should probably not be used at top-level
>> in a `.emacs` because Custom will think this was set via
>> `customize-set-variables` and will save that setting back into
>> `custom-file` next time we ask to save the customized variables.
> From the description I thought this would invoke any setter function
> but otherwise act like setq in that it would *not* touch the user's
> custom file.
> That would be the desirable behaviour, no?

Agreed.  Then maybe I misunderstood?


        Stefan




^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-16 13:23         ` Stefan Monnier
  2022-02-16 22:34           ` Phil Sainty
@ 2022-02-16 22:57           ` Philip Kaludercic
  1 sibling, 0 replies; 26+ messages in thread
From: Philip Kaludercic @ 2022-02-16 22:57 UTC (permalink / raw)
  To: Stefan Monnier
  Cc: rms, Phil Sainty, emacs-devel, Po Lu, larsi,
	Rudolf Adamkovič

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> over using `customize-set-variable' directly (indeed, I believe the
>> verbosity of the name `customize-set-variable' is a significant reason
>> why many people prefer to use `setq' for everything, even when they
>> know that user options can have setters).
>
> Hmm... I'm not sure I understand the motivation behind the introduction
> of `setopt`, to be honest.  As pointed out, `setopt` should probably not
> be used at top-level in a `.emacs` because Custom will think this was
> set via `customize-set-variables` and will save that setting back into
> `custom-file` next time we ask to save the customized variables.

The issue lies in `customize-set-variable' modifying the user theme.
Without that (or if one can indicate that a customisation shouldn't be
added and stored again in the user theme).

> As a general rule, it should also be avoided by packages because
> packages shouldn't change user options behind the user's back.
>
> So the remaining places where it makes sense to use it are fairly
> rare, AFAICT.

I honestly don't see any at all, if the issue with
`customize-set-variables' is considered to be critical.

> Am I missing something?
>
>
>         Stefan
>

-- 
	Philip Kaludercic



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-15 13:15   ` Stefan Monnier
  2022-02-15 17:20     ` Philip Kaludercic
@ 2022-02-17 11:27     ` Lars Ingebrigtsen
  1 sibling, 0 replies; 26+ messages in thread
From: Lars Ingebrigtsen @ 2022-02-17 11:27 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Philip Kaludercic, emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> No.  If you set the variable with `setq` Custom will notice that it was
> set "outside of Custom" and thus refrain from saving the value into its
> `customize-set-variables` block.

Hm, right...  perhaps it should just do the custom-set stuff and skip
the rest...

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-15 19:22   ` Juri Linkov
@ 2022-02-17 11:28     ` Lars Ingebrigtsen
  0 siblings, 0 replies; 26+ messages in thread
From: Lars Ingebrigtsen @ 2022-02-17 11:28 UTC (permalink / raw)
  To: Juri Linkov; +Cc: Philip Kaludercic, emacs-devel

Juri Linkov <juri@linkov.net> writes:

>> `customize-set-variable' should indeed warn/error out if the value is
>> invalid.
>
> Maybe like `set-variable' checks for custom-type.

Right.  I've now added that for setopt.  And since it's not relying on
customize-set-variable any more, that means that we don't have to break
customize-set-variable compatibility.  😀

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-16  7:13     ` Po Lu
@ 2022-02-19  4:54       ` Richard Stallman
  2022-02-19  5:07         ` Po Lu
  2022-02-19 11:13         ` Lars Ingebrigtsen
  0 siblings, 2 replies; 26+ messages in thread
From: Richard Stallman @ 2022-02-19  4:54 UTC (permalink / raw)
  To: Po Lu; +Cc: philipk, larsi, emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > This macro sets a customizable variable in Emacs, it's not related to
  > `getopt'.  Here is its definition:

Since it isn't meant for the command line options that `getopt' examines,
the name `setopt' is misleading.  (It already misled me!)
This name should be changed to something longer and clearer.

-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-19  4:54       ` Richard Stallman
@ 2022-02-19  5:07         ` Po Lu
  2022-02-19  8:47           ` Eli Zaretskii
  2022-02-19 11:13         ` Lars Ingebrigtsen
  1 sibling, 1 reply; 26+ messages in thread
From: Po Lu @ 2022-02-19  5:07 UTC (permalink / raw)
  To: Richard Stallman; +Cc: philipk, larsi, emacs-devel

Richard Stallman <rms@gnu.org> writes:

>   > This macro sets a customizable variable in Emacs, it's not related to
>   > `getopt'.  Here is its definition:

> Since it isn't meant for the command line options that `getopt' examines,
> the name `setopt' is misleading.  (It already misled me!)
> This name should be changed to something longer and clearer.

How about `set-custom-variable'?



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-19  5:07         ` Po Lu
@ 2022-02-19  8:47           ` Eli Zaretskii
  0 siblings, 0 replies; 26+ messages in thread
From: Eli Zaretskii @ 2022-02-19  8:47 UTC (permalink / raw)
  To: Po Lu; +Cc: larsi, philipk, rms, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: philipk@posteo.net,  larsi@gnus.org,  emacs-devel@gnu.org
> Date: Sat, 19 Feb 2022 13:07:44 +0800
> 
> Richard Stallman <rms@gnu.org> writes:
> 
> >   > This macro sets a customizable variable in Emacs, it's not related to
> >   > `getopt'.  Here is its definition:
> 
> > Since it isn't meant for the command line options that `getopt' examines,
> > the name `setopt' is misleading.  (It already misled me!)
> > This name should be changed to something longer and clearer.
> 
> How about `set-custom-variable'?

set-user-option is better, IMO.



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-19  4:54       ` Richard Stallman
  2022-02-19  5:07         ` Po Lu
@ 2022-02-19 11:13         ` Lars Ingebrigtsen
  2022-02-19 11:52           ` Mathias Dahl
                             ` (3 more replies)
  1 sibling, 4 replies; 26+ messages in thread
From: Lars Ingebrigtsen @ 2022-02-19 11:13 UTC (permalink / raw)
  To: Richard Stallman; +Cc: Po Lu, philipk, emacs-devel

Richard Stallman <rms@gnu.org> writes:

> Since it isn't meant for the command line options that `getopt' examines,
> the name `setopt' is misleading.  (It already misled me!)
> This name should be changed to something longer and clearer.

You mean you thought this had something to do with getopt.h?  I don't
thing confusing `setopt' with that has potential to confuse many people
writing Lisp code -- most people haven't heard of getopt.h, there is no
`getopt' function in Emacs Lisp, and what would setting a command line
switch even mean?

The point is that we need a variant of `setq' for user options that
people can use when saying `M-:' and in init files, so it needs to be
short and snappy.  `seto' and `setc' were proposed, but I thought those
were too confusing.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-19 11:13         ` Lars Ingebrigtsen
@ 2022-02-19 11:52           ` Mathias Dahl
  2022-02-19 12:35             ` Dmitry Gutov
  2022-02-19 14:41           ` Name for `setopt` (was: Comments on setopt) Stefan Monnier
                             ` (2 subsequent siblings)
  3 siblings, 1 reply; 26+ messages in thread
From: Mathias Dahl @ 2022-02-19 11:52 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Po Lu, Philip Kaludercic, Richard Stallman, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1003 bytes --]

setuopt?

On Sat, Feb 19, 2022 at 12:17 PM Lars Ingebrigtsen <larsi@gnus.org> wrote:

> Richard Stallman <rms@gnu.org> writes:
>
> > Since it isn't meant for the command line options that `getopt' examines,
> > the name `setopt' is misleading.  (It already misled me!)
> > This name should be changed to something longer and clearer.
>
> You mean you thought this had something to do with getopt.h?  I don't
> thing confusing `setopt' with that has potential to confuse many people
> writing Lisp code -- most people haven't heard of getopt.h, there is no
> `getopt' function in Emacs Lisp, and what would setting a command line
> switch even mean?
>
> The point is that we need a variant of `setq' for user options that
> people can use when saying `M-:' and in init files, so it needs to be
> short and snappy.  `seto' and `setc' were proposed, but I thought those
> were too confusing.
>
> --
> (domestic pets only, the antidote for overdose, milk.)
>    bloggy blog: http://lars.ingebrigtsen.no
>
>

[-- Attachment #2: Type: text/html, Size: 1532 bytes --]

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-19 11:52           ` Mathias Dahl
@ 2022-02-19 12:35             ` Dmitry Gutov
  0 siblings, 0 replies; 26+ messages in thread
From: Dmitry Gutov @ 2022-02-19 12:35 UTC (permalink / raw)
  To: Mathias Dahl, Lars Ingebrigtsen
  Cc: Po Lu, Philip Kaludercic, Richard Stallman, emacs-devel

On 19.02.2022 13:52, Mathias Dahl wrote:
> setuopt?

setcustom?



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Name for `setopt` (was: Comments on setopt)
  2022-02-19 11:13         ` Lars Ingebrigtsen
  2022-02-19 11:52           ` Mathias Dahl
@ 2022-02-19 14:41           ` Stefan Monnier
  2022-02-19 18:31           ` Comments on setopt Philip Kaludercic
  2022-02-19 23:42           ` [External] : " Drew Adams
  3 siblings, 0 replies; 26+ messages in thread
From: Stefan Monnier @ 2022-02-19 14:41 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Richard Stallman, Po Lu, philipk, emacs-devel

We've clearly entered bikeshed territory, so I'll just +1 here to what
Lars said.


        Stefan


Lars Ingebrigtsen [2022-02-19 12:13:23] wrote:

> Richard Stallman <rms@gnu.org> writes:
>
>> Since it isn't meant for the command line options that `getopt' examines,
>> the name `setopt' is misleading.  (It already misled me!)
>> This name should be changed to something longer and clearer.
>
> You mean you thought this had something to do with getopt.h?  I don't
> thing confusing `setopt' with that has potential to confuse many people
> writing Lisp code -- most people haven't heard of getopt.h, there is no
> `getopt' function in Emacs Lisp, and what would setting a command line
> switch even mean?
>
> The point is that we need a variant of `setq' for user options that
> people can use when saying `M-:' and in init files, so it needs to be
> short and snappy.  `seto' and `setc' were proposed, but I thought those
> were too confusing.




^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: Comments on setopt
  2022-02-19 11:13         ` Lars Ingebrigtsen
  2022-02-19 11:52           ` Mathias Dahl
  2022-02-19 14:41           ` Name for `setopt` (was: Comments on setopt) Stefan Monnier
@ 2022-02-19 18:31           ` Philip Kaludercic
  2022-02-19 23:42           ` [External] : " Drew Adams
  3 siblings, 0 replies; 26+ messages in thread
From: Philip Kaludercic @ 2022-02-19 18:31 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Po Lu, Richard Stallman, emacs-devel

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Richard Stallman <rms@gnu.org> writes:
>
>> Since it isn't meant for the command line options that `getopt' examines,
>> the name `setopt' is misleading.  (It already misled me!)
>> This name should be changed to something longer and clearer.
>
> You mean you thought this had something to do with getopt.h?  I don't
> thing confusing `setopt' with that has potential to confuse many people
> writing Lisp code -- most people haven't heard of getopt.h, there is no
> `getopt' function in Emacs Lisp, and what would setting a command line
> switch even mean?
>
> The point is that we need a variant of `setq' for user options that
> people can use when saying `M-:' and in init files, so it needs to be
> short and snappy.  `seto' and `setc' were proposed, but I thought those
> were too confusing.

While I do see that there is potential for confusion between seto and
oset, I'd like to argue once more for setc.  It is no less confusing
from a non-lisp-hacker perspective than setq (that also only makes sense
when you understand set).

-- 
	Philip Kaludercic



^ permalink raw reply	[flat|nested] 26+ messages in thread

* RE: [External] : Re: Comments on setopt
  2022-02-19 11:13         ` Lars Ingebrigtsen
                             ` (2 preceding siblings ...)
  2022-02-19 18:31           ` Comments on setopt Philip Kaludercic
@ 2022-02-19 23:42           ` Drew Adams
  3 siblings, 0 replies; 26+ messages in thread
From: Drew Adams @ 2022-02-19 23:42 UTC (permalink / raw)
  To: Lars Ingebrigtsen, Richard Stallman
  Cc: Po Lu, philipk@posteo.net, emacs-devel@gnu.org

> The point is that we need a variant of `setq'
> for user options that people can use when
> saying `M-:' and in init files

We do?  Since when?  And why?

If we "need" that then why wasn't it proposed
and discussed somewhere?  (Was it?)

I've perused this thread but haven't seen any
proposal for `setopt' here either, or any
explanation for why it should be (was?) added.
I may have just not noticed it...(?).

I searched for "setopt" at the emacs-devel
archives, and that search found only this post
from 2007:

https://lists.gnu.org/archive/html/emacs-devel/2007-04/msg01534.html

Clearly I don't know how to use the Search box.
___

Is this just about an alias for
`customize-set-variable'?  Apparently not, and
the difference is apparently (?) that this
won't change the user theme.  That, and this
apparently won't be a command, so you can't
use `M-x' with it (?).

Whoever (Chong perhaps?) added changing the
user theme to `customize-set-variable' thought
that was appropriate.

I don't care about that, personally.  But if
you think we "need" a function that does what
`customize-set-variable' does but doesn't
affect the user theme, then...

> so it needs to be short and snappy.

It needs to be short & snappy for `M-:'?  Why?

`M-:' is for evaluating all kinds of Lisp
sexps.  Why does this, in particular, need a
short name?

If this is about being able to _only_ set an
option value interactively, then what's wrong
with a command? (`M-x customize-set-variable')

> `seto' and `setc' were proposed, but I thought
> those were too confusing.

It seems that `setopt' can also confuse.

And adding that function to `set-variable',
`customize-set-variable', `customize-set-value',
and `custom-set-variables' invites even more
confusion.

In the 2017 thread "custom-set-variables
considered harmful" there was talk of wanting
a shorter name for `custom-set-variables':

https://lists.gnu.org/archive/html/emacs-devel/2017-12/msg00048.html

And there was talk of a new function (with a
short name) that does, for options, what
`custom-set-variables' does, but does for
non-options what `setq' does.  For many use
cases users could just use that new function.

Is that what your `setopt' does?  Why not?
And why isn't it also a command?

Why wasn't there any proposal & discussion
for this (if I'm right that there was none)?

We have these commands: `customize-set-value',
`customize-set-variable', `set-variable', and
`customize-save-variable'.  And we have this
non-interactive function: `custom-set-variables'.

What more is really needed?  Just what is
`setopt' for, and exactly what does it do?
(No, I'm not going to download the code for
Emacs 29 to try to figure it out.)
___

There's also bug (enhancement request) #6578,
which asked to have `set-variable' respect a
defcustom :set.  You didn't want to do that.

That ER also asked to better document
`customize-set-variable'.  It isn't even
documented as such in the manuals (Emacs &
Elisp).  No wonder users don't use it as
much as they might.

Instead, the Emacs manual touts `set-variable',
even though it'll get you in trouble because
of :set.

 "The most convenient way to set a specific
  customizable variable is with 'M-x set-variable'."

ER #6578 also suggested:

 "harmonizing behavior/features ... among
  `set-variable', `customize-set-variable',
  and `customize-set-value'.

  Emacs should be enhanced to clear up the
  confusing differences and clear up the doc
  recommendations."

You closed #6578, with the only reason given
that `set-variable' does what it's doc says it
does.  (Uh, yeah, its doc would need to reflect
its enhancement of respecting :set.)
___

There have also been requests (e.g. bug #26910)
to have `customize-set-variable' optionally
type-check the supplied value.

That too went nowhere.  And yet, if it's to be
used as a replacement for the Customize UI, it
really needs to _be able_ to type-check, no?

In that bug thread there was also suggestion to
provide a function like `custom-set-variables',
but which would optionally type-check each
variable setting that has a `NOW' element.
That too went nowhere (not even a response).

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=26910#8
___

So now we have `setopt'.

Yesterday, we had daily cleaning.  And tomorrow
morning, we shall have what to do after firing.
But today, today we have `setopt'.



^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2022-02-19 23:42 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-14 23:01 Comments on setopt Philip Kaludercic
2022-02-15  3:40 ` Po Lu
2022-02-16  4:12   ` Richard Stallman
2022-02-16  7:04     ` Rudolf Adamkovič
2022-02-16  9:52       ` Phil Sainty
2022-02-16 13:23         ` Stefan Monnier
2022-02-16 22:34           ` Phil Sainty
2022-02-16 22:42             ` Stefan Monnier
2022-02-16 22:57           ` Philip Kaludercic
2022-02-16  7:13     ` Po Lu
2022-02-19  4:54       ` Richard Stallman
2022-02-19  5:07         ` Po Lu
2022-02-19  8:47           ` Eli Zaretskii
2022-02-19 11:13         ` Lars Ingebrigtsen
2022-02-19 11:52           ` Mathias Dahl
2022-02-19 12:35             ` Dmitry Gutov
2022-02-19 14:41           ` Name for `setopt` (was: Comments on setopt) Stefan Monnier
2022-02-19 18:31           ` Comments on setopt Philip Kaludercic
2022-02-19 23:42           ` [External] : " Drew Adams
2022-02-15  9:32 ` Lars Ingebrigtsen
2022-02-15 13:15   ` Stefan Monnier
2022-02-15 17:20     ` Philip Kaludercic
2022-02-17 11:27     ` Lars Ingebrigtsen
2022-02-15 17:17   ` Philip Kaludercic
2022-02-15 19:22   ` Juri Linkov
2022-02-17 11:28     ` Lars Ingebrigtsen

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).