all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Konstantin Kharlamov <Hi-Angel@yandex.ru>
To: Eli Zaretskii <eliz@gnu.org>, help-gnu-emacs@gnu.org
Subject: Re: Getting `load-theme` to work in `-batch` mode?
Date: Wed, 14 Feb 2024 18:14:05 +0300	[thread overview]
Message-ID: <cd32a8206b4ac758c08d49f8497364eb160ae360.camel@yandex.ru> (raw)
In-Reply-To: <86le7nxfb4.fsf@gnu.org>

On Wed, 2024-02-14 at 16:59 +0200, Eli Zaretskii wrote:
> > From: Konstantin Kharlamov <Hi-Angel@yandex.ru>
> > Date: Tue, 13 Feb 2024 18:06:43 +0300
> > 
> > I'm writing tests for color-identifiers-mode, and as part of the
> > testing I need to check it reacts correctly to theme being changed.
> > 
> > There are already tests that work fine so far, but it turns out
> > `load-
> > theme` doesn't work as is. More specifically, even though `(load-
> > theme
> > 'adwait)` works fine, but background/foreground have no color:
> > 
> >    emacs -batch --eval "(progn (load-theme 'adwaita) (print (face-
> >    attribute 'default :foreground)) (print (face-attribute 'default
> >    :background)))"
> >    
> >    "unspecified-fg"
> >    
> >    "unspecified-bg"
> 
> Those are the default colors of a text-mode frame.
> 
> > I asked on Emacs stackexchange¹ and I was hinted that it's because
> > batch-mode doesn't initialize a windowing system.
> 
> That's right.
> 
> > But is there no function I can call to make `load-theme` assign
> > colors
> > as in non-batch mode?
> 
> What do you mean by that?  The GUI colors are not necessarily
> supported by text-mode frames.  So what do you expect from the above?
> 
> Btw, if you look at adwaita-theme.el, you will see that it doesn't
> bother supporting frames which support less than 89 colors, and the
> default frame used by batch sessions certainly doesn't support such a
> large number of colors.

Sorry, I just don't know details about frames and themes
implementation, so it's hard for me to judge for myself…

Anyway, my usecase is: `color-identifiers-mode` chooses colors by
taking into account the background and foreground colors (to make sure
colors have good visibility). And it have an "advice" for `change-
theme` that regenerates the colors if theme is changed.

I just wanted to add a test to CI that makes sure that after `change-
theme` is called (via `load-theme` in this case) the colors are
regenerated as expected. But such test wouldn't work if calling `load-
theme` doesn't influence fg/bg colors (i.e. because colors remain
"unspecified").

So what's the correct course of action do you think here?



  reply	other threads:[~2024-02-14 15:14 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-13 15:06 Getting `load-theme` to work in `-batch` mode? Konstantin Kharlamov
2024-02-14 14:59 ` Eli Zaretskii
2024-02-14 15:14   ` Konstantin Kharlamov [this message]
2024-02-14 15:34     ` Eli Zaretskii

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

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

  git send-email \
    --in-reply-to=cd32a8206b4ac758c08d49f8497364eb160ae360.camel@yandex.ru \
    --to=hi-angel@yandex.ru \
    --cc=eliz@gnu.org \
    --cc=help-gnu-emacs@gnu.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.
Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.