Subject: Re: bug#73231: 30.0.91; image-dired cannot be operated until all thumbnails are created (MS-Windows)

From: Eli Zaretskii <[email-masked]>
Date: Sun, 15 Sep 2024 12:45:51 +0300

> From: AKIYAMA Kouhei <[email-masked]>
> Date: Sun, 15 Sep 2024 18:33:52 +0900
> Cc: [email-masked]
> 
> > Because the test is performed when the package is loaded, it might
> > make different decisions that the user expects, because the user
> > doesn't control when the package is loaded.  For example, if
> > ImageMagick is installed after this defcustom is evaluated, its
> > value will be incorrect from the user's POV.
> 
> Isn't that the same with GraphicsMagick? In your opinion, that means
> the (executable-find "gm") part is also incorrect from the user's POV?

Yes, IMO.  If GraphicsMagick is installed after the package is loaded
by Emacs, the result will be incorrect.

> > > If necessary, the user can change the settings of the
> > > program that creates thumbnails by themselves (after installing
> > > ImageMagick or GraphicsMagick).
> >
> > I'm talking about the default value.  Customizing this will make the
> > value fixed, not dynamically-decided.
> 
> Of course I'm talking about default values. Of course the value is
> fixed when the package is loaded. And I thought that was acceptable
> because I saw (executable-find "gm") written in defcustom. Is it
> wrong?

My point is that customizing the value is usually followed by saving
the customizations, which will cause all the future Emacs session to
use the same fixed value, bypassing the dynamic decision in the
original value.

> > > In other words, first create
> > > thumbnails with the built-in function (w32image-create-thumbnail), and
> > > if a user is dissatisfied with them, they can install either
> > > ImageMagick or GraphicsMagick and specify the program they installed
> > > via M-x customize-variable
> > > image-dired-cmd-create-thumbnail-program. Isn't this the same for most
> > > other parts of Emacs? For example, if a user is dissatisfied with grep
> > > and installs ripgrep, they will have to manually change grep-command
> > > themselves. Isn't it the same? Why does Emacs automatically determine
> > > the thumbnail creation method without the user's permission?
> >
> > Emacs does this in many other cases, so this is hardly an exception.
> 
> Even if you say "many other cases," it's still a minority when viewed
> in the context of Emacs as a whole, right?

It is used almost everywhere where some function can be provided
either by an external program or by an internal Emacs API.

> I was simply curious about
> why a different decision was made here compared to the method adopted
> by the majority, so I asked. I'm not saying you should do it that
> way. I just thought there might be a hint in the reasoning that could
> help me understand something.

Like I said, the main reason was technical: I wanted to make sure the
test detects when 'convert' or 'gm' is installed, even if they are
installed while the Emacs session is already running and it already
loaded the image-dired package.

> > I thought it should stay at its nil/t value until the user invokes
> > that hypothetical command to perform the check again and set the
> > variable to the value produced by the check.
> 
> That's fine, but wouldn't it be more natural to have them set a
> customization variable rather than calling the command?

Maybe.  We'll have to see when this becomes relevant.

> I didn't fully understand your thoughts on the existence test of the
> convert command, but I have some understanding. I hope this was
> helpful for people who have the same question as me. Of course, you
> are free to decide how to do it.

Thanks.