unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: Drew Adams <drew.adams@oracle.com>
To: "William G. Gardella" <wgg2@member.fsf.org>, help-gnu-emacs@gnu.org
Subject: RE: RFC: Flavors - naming significant sets of customizations
Date: Tue, 26 Nov 2013 06:35:26 -0800 (PST)	[thread overview]
Message-ID: <a98cf13d-d26d-45a3-af07-4be5b78cdc49@default> (raw)
In-Reply-To: <87zjorap3a.fsf@motoko.kusanagi>

> > The bug is not the fact that you can accumulate the effects of multiple
> > custom themes.  The bug is the fact that you cannot restore the state of
> > Emacs before any theme was applied.  There is no way to take a snapshot
> > of Emacs before theming and then restore to that.
> 
> Actually, there is: (disable-theme 'foo-theme), or globally,
> (mapcar 'disable-theme 'custom-enabled-themes).  This functionality is
> also already exposed by the M-x customize-themes GUI, which defaults to
> disabling enabled themes for enabling a new one.
> 
> The "bug", if there is one, is simply that the UI doesn't expose this
> nicely (in fact, doesn't expose it nicely for experienced users such as
> yourself to notice it).

What makes you think I didn't notice it?  Why don't you please read the
bug report?

The point is that "disabling" a custom theme only disables it relative
to other themes.  It does not *undo* the application of the theme.  It
does not restore Emacs to the state before applying the theme, even
approximately.

If you start with a customized Emacs (faces, variables, frame
parameters, whatever) and then apply a custom theme, you have no prayer
of returning to what things were like before applying the theme.

That's the point.  With color themes there is no such problem.  There
is a pseudo-theme ([Reset]) for restoring the state before theming.
It does not guarantee to restore absolutely everything, but it does a
pretty good job of things.

This important feature of color themes is missing from custom themes
(AFAICT).  You cannot take a snapshot of the Emacs state before
applying a custom theme, and then restore that snapshot state after
applying the theme.  With color themes this is trivial to do (and
fast) - the snapshot is treated more or less as a theme (call it a
pseudo-theme).

---

The other problem with custom themes (compared to color themes) is
that they are extremely slow if you have multiple frames open.

And this is the case even if you inhibit the accumulation of
themes, so that instead of each theme applied building on top of
the previous ones it just replaces the last one (so only one theme
is used at a time).

If you allow accumulation (the default behavior) then Emacs just
grinds to a halt.  Switching among color themes is super fast, no
matter how many frames there are.

Don't get me wrong - I'm glad we have custom themes.  The point
is only that, so far, they are not a sufficient *replacement* for
color themes.  Each has its advantages, so far.  Unfortunately.

Currently, if you are mainly interested in colors (e.g., faces &
frame parameters) then color-theme.el is still the way to go,
AFAICS.  If you are mainly interested in variables, then probably
custom themes are more useful.



  parent reply	other threads:[~2013-11-26 14:35 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-25 19:31 RFC: Flavors - naming significant sets of customizations ian.tegebo
2013-11-25 19:44 ` Jambunathan K
2013-11-25 19:54   ` Drew Adams
2013-11-25 20:04     ` Jambunathan K
2013-11-25 21:14       ` Drew Adams
2013-11-25 19:54 ` Stefan Monnier
2013-11-25 20:19   ` Dirk-Jan C. Binnema
2013-11-25 20:27     ` Jambunathan K
2013-11-25 20:50     ` Stefan Monnier
2013-11-25 21:11       ` Drew Adams
2013-11-26  2:12         ` William G. Gardella
2013-11-26  2:15           ` William G. Gardella
2013-11-26  2:25             ` William G. Gardella
     [not found]             ` <mailman.7131.1385432744.10748.help-gnu-emacs@gnu.org>
2013-11-26  3:12               ` Emanuel Berg
2013-11-26 14:35           ` Drew Adams [this message]
     [not found]       ` <mailman.7112.1385413891.10748.help-gnu-emacs@gnu.org>
2013-11-26  0:13         ` Stefan Monnier
2013-11-26  1:41           ` Drew Adams
2013-11-25 21:10     ` Drew Adams
2013-11-25 21:05 ` Peter Dyballa
2013-11-25 21:25 ` Jambunathan K
2013-11-26  1:03 ` Emanuel Berg
2013-11-26  9:42 ` Thien-Thi Nguyen
     [not found] ` <mailman.7101.1385409281.10748.help-gnu-emacs@gnu.org>
2013-11-25 20:04   ` ian.tegebo
2013-11-26 20:15   ` Ted Zlatanov
2013-11-26 20:33     ` Emanuel Berg
2013-11-26 21:00 ` Peter Dyballa
2013-11-27  1:22   ` Stefan Monnier
     [not found] ` <mailman.7149.1385458742.10748.help-gnu-emacs@gnu.org>
2013-11-27  4:03   ` Emanuel Berg
2013-11-29  1:40 ` Rustom Mody
2013-11-29  4:24   ` Emanuel Berg
2013-11-29  5:56     ` Rustom Mody
2013-11-30  1:05       ` Emanuel Berg
2013-11-30  5:52         ` Jambunathan K
2013-11-30  6:06           ` Jambunathan K
2013-11-30  6:56           ` Jambunathan K
     [not found]           ` <mailman.7606.1385794704.10748.help-gnu-emacs@gnu.org>
2013-11-30  7:49             ` Emanuel Berg
     [not found]         ` <mailman.7603.1385790839.10748.help-gnu-emacs@gnu.org>
2013-11-30  7:57           ` Emanuel Berg
2013-11-30 14:22         ` Emanuel Berg
2013-12-01  6:18           ` Jambunathan K
2013-12-01  6:30           ` Jambunathan K
     [not found]           ` <mailman.7689.1385878732.10748.help-gnu-emacs@gnu.org>
2013-12-01 16:27             ` Emanuel Berg
2013-12-02  5:21               ` Jambunathan K
2013-12-02 16:29                 ` Emanuel Berg
2013-12-02 17:07                   ` Emanuel Berg
2013-12-03 12:29                   ` Jambunathan K
     [not found]                   ` <mailman.7971.1386070312.10748.help-gnu-emacs@gnu.org>
2013-12-03 21:27                     ` Emanuel Berg
2013-12-04  7:25                       ` Jambunathan K
     [not found]                       ` <mailman.8057.1386141963.10748.help-gnu-emacs@gnu.org>
2013-12-04 17:50                         ` Emanuel Berg
     [not found]           ` <mailman.7691.1385879486.10748.help-gnu-emacs@gnu.org>
2013-12-01 16:29             ` Emanuel Berg
2013-11-29  8:31     ` Yuri Khan
2013-11-29 18:00     ` Jambunathan K
     [not found]     ` <mailman.7486.1385748092.10748.help-gnu-emacs@gnu.org>
2013-11-29 19:13       ` Emanuel Berg
2013-12-01  7:09         ` Jambunathan K
2013-12-01 20:57           ` Emanuel Berg
2013-12-02  5:25             ` Jambunathan K
2013-12-02  5:57               ` Jambunathan K
2013-12-02 16:47                 ` Emanuel Berg
2013-12-02 16:34               ` Emanuel Berg
     [not found]               ` <mailman.7875.1386002111.10748.help-gnu-emacs@gnu.org>
2013-12-02 22:23                 ` Emanuel Berg
2013-12-02  0:51           ` Emanuel Berg
     [not found]         ` <mailman.7693.1385881824.10748.help-gnu-emacs@gnu.org>
2013-12-01 16:35           ` Emanuel Berg
2013-12-01 20:40             ` Emanuel Berg
2013-11-29 19:55       ` Emanuel Berg
2013-11-30  2:52         ` Rustom Mody
2013-11-30  3:28           ` Emanuel Berg
     [not found]     ` <mailman.7436.1385713911.10748.help-gnu-emacs@gnu.org>
2013-12-04 17:52       ` Ted Zlatanov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a98cf13d-d26d-45a3-af07-4be5b78cdc49@default \
    --to=drew.adams@oracle.com \
    --cc=help-gnu-emacs@gnu.org \
    --cc=wgg2@member.fsf.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).