GNU bug report logs - #22915
foreground-color-at-point doesn't return the foreground color at point (when overlays are present)

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Severity: minor; Reported by: Clément Pit--Claudel <clement.pitclaudel@HIDDEN>; dated Sat, 5 Mar 2016 06:11:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at 22915 <at> debbugs.gnu.org:


Received: (at 22915) by debbugs.gnu.org; 5 Mar 2016 08:16:10 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Mar 05 03:16:10 2016
Received: from localhost ([127.0.0.1]:34253 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ac7Ni-0001K5-0O
	for submit <at> debbugs.gnu.org; Sat, 05 Mar 2016 03:16:10 -0500
Received: from eggs.gnu.org ([208.118.235.92]:52151)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <eliz@HIDDEN>) id 1ac7Nf-0001Jk-VT
 for 22915 <at> debbugs.gnu.org; Sat, 05 Mar 2016 03:16:08 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <eliz@HIDDEN>) id 1ac7NX-0003Gt-GJ
 for 22915 <at> debbugs.gnu.org; Sat, 05 Mar 2016 03:16:02 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD
 autolearn=disabled version=3.3.2
Received: from fencepost.gnu.org ([2001:4830:134:3::e]:52073)
 by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from <eliz@HIDDEN>)
 id 1ac7NX-0003Go-CL; Sat, 05 Mar 2016 03:15:59 -0500
Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4633
 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128)
 (Exim 4.82) (envelope-from <eliz@HIDDEN>)
 id 1ac7NW-0004QI-K4; Sat, 05 Mar 2016 03:15:59 -0500
Date: Sat, 05 Mar 2016 10:15:58 +0200
Message-Id: <83lh5xxrup.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: =?utf-8?Q?Cl=C3=A9ment?= Pit--Claudel <clement.pitclaudel@HIDDEN>
In-reply-to: <56DA785D.8080202@HIDDEN> (message from =?utf-8?Q?Cl=C3=A9m?=
 =?utf-8?Q?ent?= Pit--Claudel on Sat, 5 Mar 2016 01:10:37 -0500)
Subject: Re: bug#22915: foreground-color-at-point doesn't return the foreground
 color at point (when overlays are present)
References: <56DA785D.8080202@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-Received-From: 2001:4830:134:3::e
X-Spam-Score: -5.0 (-----)
X-Debbugs-Envelope-To: 22915
Cc: 22915 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Reply-To: Eli Zaretskii <eliz@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -5.0 (-----)

> From: Clément Pit--Claudel <clement.pitclaudel@HIDDEN>
> Date: Sat, 5 Mar 2016 01:10:37 -0500
> 
> (with-current-buffer (get-buffer-create "*broken*")
>   (require 'cl-lib)
>   (erase-buffer)
>   (delete-all-overlays)
>   (fundamental-mode)
>   (insert "AAAAA")
>   (goto-char (point-min))
> 
>   ;; Add two faces
>   (set-text-properties (point-min) (point-max) '(face font-lock-type-face))
>   (let ((ov (make-overlay (point-min) (point-max))))
>     (overlay-put ov 'face 'font-lock-negation-char-face))
> 
>   ;; This passes, proving that font-lock-negation-char-face is not contributing to the
>   ;; foreground color
>   (cl-assert (eq (face-attribute 'font-lock-negation-char-face :foreground)
>                  'unspecified))
> 
>   ;; This fails: foreground-color-at-point reads the face of the overlay, sees that it's undefined, 
>   ;; and ignores the 'face text property
>   (cl-assert (eq (foreground-color-at-point)
>                  (face-attribute 'font-lock-type-face :foreground)))
> 
>   (pop-to-buffer (current-buffer)))

You are creating a situation where the actual color of the character
is the result of face merging as part of redisplay.  I don't think
there's currently any way of accessing the results of face merging
from Lisp.

By contrast, foreground-color-at-point simply returns the color
specified by the highest-priority overlay/text property at point; in
this case that color is unspecified, so it defaults to the default
face's foreground color.

If I'm right, you expect too much from foreground-color-at-point, or
from any Lisp implementation of this functionality in general.

AFAICT, if we want this kind of functionality supported from Lisp, we
will need first to implement a primitive that would accept a list of
faces and return the fully realized face spec produced by merging
those faces.  Then a Lisp implementation of foreground-color-at-point
could be changed to collect all the relevant text/overlay properties
at point and pass them to that primitive.

Alternatively, an entirely-C implementation, exposed to Lisp as a
primitive, could simulate display of the character at point and return
the resulting color.

If there are other ideas, I'm all ears.  If not, I think this is a
fine subject for a small project, patches are welcome.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#22915; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 5 Mar 2016 06:10:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Mar 05 01:10:53 2016
Received: from localhost ([127.0.0.1]:34241 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ac5QS-0006s6-TA
	for submit <at> debbugs.gnu.org; Sat, 05 Mar 2016 01:10:53 -0500
Received: from eggs.gnu.org ([208.118.235.92]:60959)
 by debbugs.gnu.org with esmtp (Exim 4.84)
 (envelope-from <clement.pitclaudel@HIDDEN>) id 1ac5QR-0006ru-8l
 for submit <at> debbugs.gnu.org; Sat, 05 Mar 2016 01:10:51 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <clement.pitclaudel@HIDDEN>) id 1ac5QL-0002up-Bm
 for submit <at> debbugs.gnu.org; Sat, 05 Mar 2016 01:10:46 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM
 autolearn=disabled version=3.3.2
Received: from lists.gnu.org ([2001:4830:134:3::11]:38540)
 by eggs.gnu.org with esmtp (Exim 4.71)
 (envelope-from <clement.pitclaudel@HIDDEN>) id 1ac5QL-0002uj-8N
 for submit <at> debbugs.gnu.org; Sat, 05 Mar 2016 01:10:45 -0500
Received: from eggs.gnu.org ([2001:4830:134:3::10]:51926)
 by lists.gnu.org with esmtp (Exim 4.71)
 (envelope-from <clement.pitclaudel@HIDDEN>) id 1ac5QK-0004DR-A7
 for bug-gnu-emacs@HIDDEN; Sat, 05 Mar 2016 01:10:45 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <clement.pitclaudel@HIDDEN>) id 1ac5QH-0002u7-50
 for bug-gnu-emacs@HIDDEN; Sat, 05 Mar 2016 01:10:44 -0500
Received: from mout.kundenserver.de ([212.227.126.135]:60370)
 by eggs.gnu.org with esmtp (Exim 4.71)
 (envelope-from <clement.pitclaudel@HIDDEN>) id 1ac5QG-0002u1-Mb
 for bug-gnu-emacs@HIDDEN; Sat, 05 Mar 2016 01:10:41 -0500
Received: from [18.189.68.195] ([18.189.68.195]) by mrelayeu.kundenserver.de
 (mreue005) with ESMTPSA (Nemesis) id 0MSmwb-1aUZ2228UH-00RtQH for
 <bug-gnu-emacs@HIDDEN>; Sat, 05 Mar 2016 07:10:39 +0100
To: bug-gnu-emacs@HIDDEN
From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= <clement.pitclaudel@HIDDEN>
Subject: foreground-color-at-point doesn't return the foreground color at
 point (when overlays are present)
Message-ID: <56DA785D.8080202@HIDDEN>
Date: Sat, 5 Mar 2016 01:10:37 -0500
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101
 Thunderbird/38.5.1
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha1;
 protocol="application/pgp-signature";
 boundary="lqnbr8eGJkxsxCaktRGx4snVu3wOX4oSv"
X-Provags-ID: V03:K0:tmOGQQYwRuTXtUXaWulOxWigRD/zv/Cz3eF2jSiftRO+htbC+dT
 jkSwNCKeggyCI96Tq/ADxHvXZXlHipCWGT2sEdMmyulT7nWbd/aT0ABm5XiLdTp+/yEalO4
 2DPCmGJn0XvQpHEGsuKmI7poUs41+ywq7kswHnZDJy/iMEnm3dv81s26Jx7xS8E86baxX5z
 H11YlmN7ZquhpciJYP37A==
X-UI-Out-Filterresults: notjunk:1;V01:K0:vfuG3g2bc+8=:sN+j+mT6D3LD74+t2wIsam
 OrCVLXi4XG8HyJDiDpuBD7HZJDZlxgaN0T7pMU4MYrw7B2Jkx9x+bh/t/6M0ZtrNqSSzzQN3x
 KAL+VdBP+ZyRaZfTzfcdk5i/ScsUjPG/+4Ser91uWNK7A372W7MYs22UGa5Wtq8Y0+el8DpVL
 9opIYzQ9LAzLErAE4JmPs5roGD2tdsiSbNJGjv3Avs+pzuE2C3xvoyuUSlUP4bF9dHf13TEla
 VNNGv7QdwDeubnF0UapunGcwVTS3yDEyjONRAOlhsKG0l/Ly6hduz7mIK6zhj5xgwAYO54RbS
 A5RdAWLpw+9xu+H86lEdoysQt8/UE6t3NBdCsNy+jtfCzhsuygvgNWuKf/kXxE5WS2zRG7FXi
 mNMqcQCG1/Thu8PIXXbrFoaW+wyBvFRUMmavZFFeqi7H121XIEvHlACHItrzFO54T1j2zr9+8
 eHCUv4YM2OVckf4r74pKNMIdAdF5Jzzf4EBRmvs+jYL2Jvgzdb+hpdu7CTl6rUp9DCvqiuZV1
 Q8F8AG/1GQdozWTqfMsGGgsVbMTxkk5MUyu7Br0vf1PfiIKdn2OaoBruLJPurz7EIvDc03bHZ
 WbJvvYro9iI64oV97bi2nJ4kC+PpReHXAd914BQUkAZsN/UnccNTsK6WzDOgg/NP/DKJuF8wt
 B4Thp1BG4rITO4ftDePj0k9k+ZQXtb84zqT5OCQic4sfga349O5Si1tbyT8/rLyv5O9s=
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x
X-Received-From: 2001:4830:134:3::11
X-Spam-Score: -4.0 (----)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -4.0 (----)

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--lqnbr8eGJkxsxCaktRGx4snVu3wOX4oSv
Content-Type: multipart/mixed; boundary="t8nPWdeU3cVAcHj7VSgFjeQjEh3m8qFHR"
From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= <clement.pitclaudel@HIDDEN>
To: bug-gnu-emacs@HIDDEN
Message-ID: <56DA785D.8080202@HIDDEN>
Subject: foreground-color-at-point doesn't return the foreground color at
 point (when overlays are present)

--t8nPWdeU3cVAcHj7VSgFjeQjEh3m8qFHR
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Reproduction with emacs -Q:

(with-current-buffer (get-buffer-create "*broken*")
  (require 'cl-lib)
  (erase-buffer)
  (delete-all-overlays)
  (fundamental-mode)
  (insert "AAAAA")
  (goto-char (point-min))

  ;; Add two faces
  (set-text-properties (point-min) (point-max) '(face font-lock-type-face=
))
  (let ((ov (make-overlay (point-min) (point-max))))
    (overlay-put ov 'face 'font-lock-negation-char-face))

  ;; This passes, proving that font-lock-negation-char-face is not contri=
buting to the
  ;; foreground color
  (cl-assert (eq (face-attribute 'font-lock-negation-char-face :foregroun=
d)
                 'unspecified))

  ;; This fails: foreground-color-at-point reads the face of the overlay,=
 sees that it's undefined,=20
  ;; and ignores the 'face text property=20
  (cl-assert (eq (foreground-color-at-point)
                 (face-attribute 'font-lock-type-face :foreground)))

  (pop-to-buffer (current-buffer)))

Let me know if I can provide more info.
Cl=C3=A9ment.


--t8nPWdeU3cVAcHj7VSgFjeQjEh3m8qFHR--

--lqnbr8eGJkxsxCaktRGx4snVu3wOX4oSv
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (GNU/Linux)

iQIcBAEBAgAGBQJW2nhdAAoJEPqg+cTm90wjeIwP/1YtkYiv+byjwmLI/pq9fLT1
rMm9wqZU06SCWR2OFJ3KJZT462AJAd1vKyyeu17nQV1C3v7fbPQxoDM/qYwEQRK6
uC+W3pcl4PXUwe7Ymjh9l9uA2K7s6G6Ezvouq0IcctUkHBJvZIIbBekcMDwUiHXS
VrTOZmhjmouTIH75wRpljjawQCtU+QlUEgNdwy/E5KGDLXTDEfiQ+KaVXDM/gqgc
Vw1HQGUtgG3vO5cpXd2ULZmcgcgljfKbdE9XEJVNfUHgS7luPj6Lvcdg8dhpUHLJ
/SYUGiYOalE5AGut17g7bCUuEv6cpvA5YtT3yIjj1w6ZWI2C95MO31Yx0pFAYiS9
sbWVZQP44IxXs13V8j6W1GACXf3xvvAQX0NPIKlNFA39e31UtaI5XBXMZohJ8XIR
jL9oi+hK3t4HqVjAOo4MDmjS0WGPXdjlzy+ZqeBnORk8yYipdOFKUTbLoWolh2uW
andsTmRdVw0kOBtnf7b/Y9l0mzueunJckKcbFzKWU1S6L9zREE1XeHFPdrsIIteM
BXSIhWTf+hoy7eMgEiF+r06iQVRGfVesO7furOxQCf2ylcnrXGTTCKie9E0rujor
dy7MLGM6Jr7HdSf4pk7xDURYQckHk0mbDE8TIfus7pQoDXyL59/RQE7d7J24G+WG
VxLT1VC6O3pN5b0d3+jm
=l0+e
-----END PGP SIGNATURE-----

--lqnbr8eGJkxsxCaktRGx4snVu3wOX4oSv--




Acknowledgement sent to Clément Pit--Claudel <clement.pitclaudel@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#22915; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Mon, 25 Nov 2019 12:00:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.