unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#46973: 26.3; (elisp) `Face Remapping'
@ 2021-03-06 18:16 Drew Adams
  2021-03-13 10:35 ` Eli Zaretskii
  2022-02-23 11:50 ` Lars Ingebrigtsen
  0 siblings, 2 replies; 11+ messages in thread
From: Drew Adams @ 2021-03-06 18:16 UTC (permalink / raw)
  To: 46973

I'm not sure this is a bug, but the doc seems unclear to me - it seems
to contradict what I see.

Everywhere in this node, SPECS seems to be the same thing, modulo the
special indication of SPECS containing a nil value for
`face-remap-set-base'.  And that meaning seems to be (everywhere) that
SPECS can be "either a list of face names, or a property list of
attribute/value pairs."

But if I do something like this, where SPECS (being a &rest arg) is the list `(variable-pitch)', which is a list of face names:

(add-hook 'some-mode-hook
          (lambda ()
            (face-remap-set-base 'default 'variable-pitch)))

I get an error saying that `variable-pitch' isn't a list.
(And trying '(variable-pitch) instead gives the same error.)

I'm probably missing something - what is it?  Or is it possible that
`face-remap-set-base' has a different meaning of SPECS?

Feel free to close, if this isn't a (doc) bug, but I'd appreciate an
explanation, so I understand better.  Thx.


In GNU Emacs 26.3 (build 1, x86_64-w64-mingw32)
 of 2019-08-29
Repository revision: 96dd0196c28bc36779584e47fffcca433c9309cd
Windowing system distributor `Microsoft Corp.', version 10.0.19041
Configured using:
 `configure --without-dbus --host=x86_64-w64-mingw32
 --without-compress-install 'CFLAGS=-O2 -static -g3''






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

* bug#46973: 26.3; (elisp) `Face Remapping'
  2021-03-06 18:16 bug#46973: 26.3; (elisp) `Face Remapping' Drew Adams
@ 2021-03-13 10:35 ` Eli Zaretskii
  2021-03-15 16:36   ` bug#46973: [External] : " Drew Adams
  2022-02-23 11:50 ` Lars Ingebrigtsen
  1 sibling, 1 reply; 11+ messages in thread
From: Eli Zaretskii @ 2021-03-13 10:35 UTC (permalink / raw)
  To: Drew Adams; +Cc: 46973

> From: Drew Adams <drew.adams@oracle.com>
> Date: Sat, 6 Mar 2021 18:16:07 +0000
> 
> But if I do something like this, where SPECS (being a &rest arg) is the list `(variable-pitch)', which is a list of face names:
> 
> (add-hook 'some-mode-hook
>           (lambda ()
>             (face-remap-set-base 'default 'variable-pitch)))
> 
> I get an error saying that `variable-pitch' isn't a list.
> (And trying '(variable-pitch) instead gives the same error.)
> 
> I'm probably missing something - what is it?  Or is it possible that
> `face-remap-set-base' has a different meaning of SPECS?

The doc string of face-remap-set-base says:

  The remaining arguments, SPECS, specify the base of the remapping.
  Each one of SPECS should be either a face name or a property list
  of face attribute/value pairs, like in a ‘face’ text property.





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

* bug#46973: [External] : Re: bug#46973: 26.3; (elisp) `Face Remapping'
  2021-03-13 10:35 ` Eli Zaretskii
@ 2021-03-15 16:36   ` Drew Adams
  0 siblings, 0 replies; 11+ messages in thread
From: Drew Adams @ 2021-03-15 16:36 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 46973@debbugs.gnu.org

> > But if I do something like this, where SPECS (being a &rest arg) is the
> list `(variable-pitch)', which is a list of face names:
> >
> > (add-hook 'some-mode-hook
> >           (lambda ()
> >             (face-remap-set-base 'default 'variable-pitch)))
> >
> > I get an error saying that `variable-pitch' isn't a list.
> > (And trying '(variable-pitch) instead gives the same error.)
> >
> > I'm probably missing something - what is it?  Or is it possible that
> > `face-remap-set-base' has a different meaning of SPECS?
> 
> The doc string of face-remap-set-base says:
> 
>   The remaining arguments, SPECS, specify the base of the remapping.
>   Each one of SPECS should be either a face name or a property list
>   of face attribute/value pairs, like in a ‘face’ text property.

You just cited the same doc I cited.

In `(face-remap-set-base 'default 'variable-pitch)' do
you not agree that SPECS is the list `(variable-pitch)',
which is a list of one face name?

Again, what am I missing?

 M-x debug-on-entry face-remap-set-base

Stepping through shows that SPECS is indeed the list
`(variable-pitch)'.  The first (and only) spec is the
face (name) `variable-pitch'.

To me, it looks like either a doc bug or a code bug.
The `while' loop sets SPECS to `variable-pitch'.  And
the subsequent `if' tries to take its car.

Contrast with `face-remap-add-relative', which also
has an &rest SPECS arg, and whose elements can also
each be "a face name or a property list of face
attribute/value pairs."

The code for `face-remap-add-relative' does this:

  (while (and (consp specs) (null (cdr specs)))
    (setq specs (car specs)))

which is different from what `face-remap-set-base' does:

  (while (and (consp specs)
              (not (null (car specs)))
              (null (cdr specs)))
    (setq specs (car specs)))

I'm not saying that the two should necessarily be
the same.  I am saying that the latter doesn't
seem to work for SPECS that's a list of face names.

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

* bug#46973: 26.3; (elisp) `Face Remapping'
  2021-03-06 18:16 bug#46973: 26.3; (elisp) `Face Remapping' Drew Adams
  2021-03-13 10:35 ` Eli Zaretskii
@ 2022-02-23 11:50 ` Lars Ingebrigtsen
  2022-02-23 15:56   ` bug#46973: [External] : " Drew Adams
  1 sibling, 1 reply; 11+ messages in thread
From: Lars Ingebrigtsen @ 2022-02-23 11:50 UTC (permalink / raw)
  To: Drew Adams; +Cc: 46973

Drew Adams <drew.adams@oracle.com> writes:

> (add-hook 'some-mode-hook
>           (lambda ()
>             (face-remap-set-base 'default 'variable-pitch)))
>
> I get an error saying that `variable-pitch' isn't a list.
> (And trying '(variable-pitch) instead gives the same error.)

Looks like this regression was introduced by cece37cf09de9, which just
wanted to simplify the specs list.  But then the test after that wasn't
adjusted.  I've now fixed this in Emacs 29.

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





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

* bug#46973: [External] : Re: bug#46973: 26.3; (elisp) `Face Remapping'
  2022-02-23 11:50 ` Lars Ingebrigtsen
@ 2022-02-23 15:56   ` Drew Adams
  2022-02-23 16:57     ` Eli Zaretskii
  2022-02-23 22:10     ` Mauro Aranda
  0 siblings, 2 replies; 11+ messages in thread
From: Drew Adams @ 2022-02-23 15:56 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 46973@debbugs.gnu.org

> > (add-hook 'some-mode-hook
> >           (lambda ()
> >             (face-remap-set-base 'default 'variable-pitch)))
> >
> > I get an error saying that `variable-pitch' isn't a list.
> > (And trying '(variable-pitch) instead gives the same error.)
> 
> Looks like this regression was introduced by cece37cf09de9, which just
> wanted to simplify the specs list.  But then the test after that wasn't
> adjusted.  I've now fixed this in Emacs 29.

Thanks for fixing this.  I downloaded face-remap.el
from MASTER, and I see that you applied the fix I
suggested: (if (or (null specs) (eq specs face)).

I see from the commit log that the regression was
introduced in 2008.  Which Emacs release was that?

[And how do I find that release @ from the web
interface to the repo, here?
https://repo.or.cz/emacs.git/commit/cece37cf09de9]







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

* bug#46973: [External] : Re: bug#46973: 26.3; (elisp) `Face Remapping'
  2022-02-23 15:56   ` bug#46973: [External] : " Drew Adams
@ 2022-02-23 16:57     ` Eli Zaretskii
  2022-02-23 17:23       ` Drew Adams
  2022-02-23 22:10     ` Mauro Aranda
  1 sibling, 1 reply; 11+ messages in thread
From: Eli Zaretskii @ 2022-02-23 16:57 UTC (permalink / raw)
  To: Drew Adams; +Cc: larsi, 46973

> From: Drew Adams <drew.adams@oracle.com>
> Date: Wed, 23 Feb 2022 15:56:21 +0000
> Cc: "46973@debbugs.gnu.org" <46973@debbugs.gnu.org>
> 
> I see from the commit log that the regression was
> introduced in 2008.  Which Emacs release was that?

Emacs 23.1.

> [And how do I find that release @ from the web
> interface to the repo, here?
> https://repo.or.cz/emacs.git/commit/cece37cf09de9]

I don't think you can.





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

* bug#46973: [External] : Re: bug#46973: 26.3; (elisp) `Face Remapping'
  2022-02-23 16:57     ` Eli Zaretskii
@ 2022-02-23 17:23       ` Drew Adams
  0 siblings, 0 replies; 11+ messages in thread
From: Drew Adams @ 2022-02-23 17:23 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: larsi@gnus.org, 46973@debbugs.gnu.org

> > I see from the commit log that the regression was
> > introduced in 2008.  Which Emacs release was that?
> 
> Emacs 23.1.
> 
> > [And how do I find that release @ from the web
> > interface to the repo, here?
> >
> https://urldefense.com/v3/__https://repo.or.cz/emacs.git/commit/cece37cf09de9
> __;!!ACWV5N9M2RV99hQ!efT4BhwnL86QkgYo3P5AiPsR9THcH0JRhkI6cAB1EyCKVZXlVsna4KmG
> -JIMiqYG$ ]
> 
> I don't think you can.

I see.  Thank you.





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

* bug#46973: 26.3; (elisp) `Face Remapping'
  2022-02-23 15:56   ` bug#46973: [External] : " Drew Adams
  2022-02-23 16:57     ` Eli Zaretskii
@ 2022-02-23 22:10     ` Mauro Aranda
  2022-02-23 22:55       ` bug#46973: [External] : " Drew Adams
  2022-02-24  6:49       ` Eli Zaretskii
  1 sibling, 2 replies; 11+ messages in thread
From: Mauro Aranda @ 2022-02-23 22:10 UTC (permalink / raw)
  To: Drew Adams; +Cc: 46973

Drew Adams <drew.adams@oracle.com> writes:

> [And how do I find that release @ from the web
> interface to the repo, here?
> https://repo.or.cz/emacs.git/commit/cece37cf09de9]

Not sure if this is reliable enough, but you can click in "tree" and
then look for the configure.ac (or configure.in) file.  The second
argument for AC_INIT is the Emacs version for that revision.





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

* bug#46973: [External] : Re: bug#46973: 26.3; (elisp) `Face Remapping'
  2022-02-23 22:10     ` Mauro Aranda
@ 2022-02-23 22:55       ` Drew Adams
  2022-02-24  6:49       ` Eli Zaretskii
  1 sibling, 0 replies; 11+ messages in thread
From: Drew Adams @ 2022-02-23 22:55 UTC (permalink / raw)
  To: Mauro Aranda; +Cc: 46973@debbugs.gnu.org

Thanks, Mauro!

> > [And how do I find that release # from the web
> > interface to the repo, here?
> > https://repo.or.cz/emacs.git/commit/cece37cf09de9]
> 
> Not sure if this is reliable enough, but you can click in "tree" and
> then look for the configure.ac (or configure.in) file.  The second
> argument for AC_INIT is the Emacs version for that revision.





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

* bug#46973: 26.3; (elisp) `Face Remapping'
  2022-02-23 22:10     ` Mauro Aranda
  2022-02-23 22:55       ` bug#46973: [External] : " Drew Adams
@ 2022-02-24  6:49       ` Eli Zaretskii
  2022-02-24 11:52         ` Mauro Aranda
  1 sibling, 1 reply; 11+ messages in thread
From: Eli Zaretskii @ 2022-02-24  6:49 UTC (permalink / raw)
  To: Mauro Aranda; +Cc: 46973

> Resent-From: Mauro Aranda <maurooaranda@gmail.com>
> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces@debbugs.gnu.org>
> Resent-CC: bug-gnu-emacs@gnu.org
> Resent-Sender: help-debbugs@gnu.org
> From: Mauro Aranda <maurooaranda@gmail.com>
> Date: Wed, 23 Feb 2022 19:10:32 -0300
> Cc: 46973@debbugs.gnu.org
> 
> Drew Adams <drew.adams@oracle.com> writes:
> 
> > [And how do I find that release @ from the web
> > interface to the repo, here?
> > https://repo.or.cz/emacs.git/commit/cece37cf09de9]
> 
> Not sure if this is reliable enough, but you can click in "tree" and
> then look for the configure.ac (or configure.in) file.  The second
> argument for AC_INIT is the Emacs version for that revision.

AFAIU, that is not reliable enough for finding out the Emacs release
where a particular change was first part of the tarball.  This just
tells you what is the _next_ release of Emacs _from_that_branch_.





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

* bug#46973: 26.3; (elisp) `Face Remapping'
  2022-02-24  6:49       ` Eli Zaretskii
@ 2022-02-24 11:52         ` Mauro Aranda
  0 siblings, 0 replies; 11+ messages in thread
From: Mauro Aranda @ 2022-02-24 11:52 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 46973

Eli Zaretskii <eliz@gnu.org> writes:

>> Drew Adams <drew.adams@oracle.com> writes:
>> 
>> > [And how do I find that release @ from the web
>> > interface to the repo, here?
>> > https://repo.or.cz/emacs.git/commit/cece37cf09de9]
>> 
>> Not sure if this is reliable enough, but you can click in "tree" and
>> then look for the configure.ac (or configure.in) file.  The second
>> argument for AC_INIT is the Emacs version for that revision.
>
> AFAIU, that is not reliable enough for finding out the Emacs release
> where a particular change was first part of the tarball.  This just
> tells you what is the _next_ release of Emacs _from_that_branch_.

Ah yes, you're right.





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

end of thread, other threads:[~2022-02-24 11:52 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-06 18:16 bug#46973: 26.3; (elisp) `Face Remapping' Drew Adams
2021-03-13 10:35 ` Eli Zaretskii
2021-03-15 16:36   ` bug#46973: [External] : " Drew Adams
2022-02-23 11:50 ` Lars Ingebrigtsen
2022-02-23 15:56   ` bug#46973: [External] : " Drew Adams
2022-02-23 16:57     ` Eli Zaretskii
2022-02-23 17:23       ` Drew Adams
2022-02-23 22:10     ` Mauro Aranda
2022-02-23 22:55       ` bug#46973: [External] : " Drew Adams
2022-02-24  6:49       ` Eli Zaretskii
2022-02-24 11:52         ` Mauro Aranda

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).