bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#57639: [PATCH] Add new command 'toggle-theme'


From: Stefan Monnier
Subject: bug#57639: [PATCH] Add new command 'toggle-theme'
Date: Tue, 18 Oct 2022 22:43:14 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)

>> > I think you'd basically put something like the following into
>> > `loaddefs-generate--emacs-batch' --
>> >
>> > (let ((lisp-mode-autoload-regexp
>> >         "^;;;###\\(\\(noexist\\)-\\)?\\(theme-autoload\\)"))

Hmm... `lisp-mode-autoload-regexp` is defined as a `defconst`.  If we're
going to set it to some other value, we should change its definition to
a `defvar`, no?

Also, this code should come with a comment explaining why we're doing
this silly dance (it took me a while to go from that code to here).
[ I don't understand the "noexist" thingy, BTW.  Is that intended to be
  a regexp that will never match?  Should it use `regexp-unmatchable`
  then?  Or why not just "^;;;###\\(?3:theme-autoload\\)"?  ]

>> >   (loaddefs-generate
>> >     (expand-file-name "../etc/themes/" lisp-directory)
>> >     (expand-file-name "theme-loaddefs.el" lisp-directory)))

Note that if one of those ;;;###theme-autoload cookies is placed in
front of a function definition, it will still result in a broken:

    (autoload 'FUNCTIONNAME "etc/themes/FILENAME" ...)

which fails because "etc/themes/FILENAME" isn't found in `load-path`.

>> > Then you have to teach `loaddefs-generate--make-autoload' to generate
>> > the correct forms as a result of the `deftheme' -- which should be some
>> > `put's.
>> 
>> OK, it looks like this worked.  Just to recap, these are the proposed
>> changes:
>
> What, if anything, does this mean for themes that aren't bundled with
> Emacs?
>
> Also, this needs a NEWS entry.

I see this got the following entry:

    ** Themes have special autoload cookies.
    All build-in themes are scraped for ;;;###theme-autoload cookies that
    are loaded along with the regular auto-loaded code.

but I can't see any good reason why Emacs users should care about that.
It seems like a purely internal hack (and given the restrictions on
what can be autoloaded this way, we probably shouldn't advertise it too
loudly, unless accompanied with appropriate warnings).


        Stefan






reply via email to

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