From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: David Ponce Newsgroups: gmane.emacs.bugs Subject: bug#65632: 30.0.50; Proposal to improve `faces--attribute-at-point'. Date: Thu, 31 Aug 2023 00:30:43 +0200 Message-ID: References: <83jztcfkf4.fsf@gnu.org> <83h6ogfi7p.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------jc9jmD4ZSu4eEvrewgb9RJsw" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="36939"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.14.0 Cc: 65632@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu Aug 31 00:32:12 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qbTjP-0009Ok-Jl for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 31 Aug 2023 00:32:11 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qbTjA-0000eA-I9; Wed, 30 Aug 2023 18:31:56 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qbTj8-0000dw-G4 for bug-gnu-emacs@gnu.org; Wed, 30 Aug 2023 18:31:54 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qbTj8-0006s4-7i for bug-gnu-emacs@gnu.org; Wed, 30 Aug 2023 18:31:54 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qbTjF-0008BP-N8 for bug-gnu-emacs@gnu.org; Wed, 30 Aug 2023 18:32:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: David Ponce Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 30 Aug 2023 22:32:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 65632 X-GNU-PR-Package: emacs Original-Received: via spool by 65632-submit@debbugs.gnu.org id=B65632.169343466131372 (code B ref 65632); Wed, 30 Aug 2023 22:32:01 +0000 Original-Received: (at 65632) by debbugs.gnu.org; 30 Aug 2023 22:31:01 +0000 Original-Received: from localhost ([127.0.0.1]:54242 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qbTiG-00089o-Pu for submit@debbugs.gnu.org; Wed, 30 Aug 2023 18:31:01 -0400 Original-Received: from smtp-24.smtpout.orange.fr ([80.12.242.24]:63760 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qbTiB-00089b-Ca for 65632@debbugs.gnu.org; Wed, 30 Aug 2023 18:30:59 -0400 Original-Received: from [192.168.1.15] ([2.7.71.181]) by smtp.orange.fr with ESMTPA id bThzqmuAtuWDMbTi0qqRnC; Thu, 31 Aug 2023 00:30:45 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=orange.fr; s=t20230301; t=1693434645; bh=LxPe8KtfY3CzAtW2bk4T2Wd7Mxhf8bsaVrn+gPSRdrU=; h=Date:Subject:To:Cc:References:From:In-Reply-To; b=nrVYSZrYP9WZajtuj3Za8fWDkSzax7gGEh39kHj6WxGnW81A7F/d3BdxgYm7m10Ea NnAiGeMHWz9iv4DTbLzoUDSjGicVO+9VlKGit+LophtfLyNHvjgmllC4qTz8yOavtU Q8HT4uoX3hCzM+0MSAtQdd5XlSeORoTen+CERf+fnGJ8KObnU4lUGq78fuoAfBD19C KYTkeQEEwGjKBS0WSZux8XhO4Ox82HF8UJW7ZYtL4lG/nfqRLANBne2q7fenuf9FSS 9yRsV3VirYS4K4vid5X1Mg1O/rfDUdxp83Axie+Yuif+ZNNmd535D9q97Iktx8iJzc NsvD9meF4epQg== X-ME-Helo: [192.168.1.15] X-ME-Auth: ZGFfdmlkQHdhbmFkb28uZnI= X-ME-Date: Thu, 31 Aug 2023 00:30:45 +0200 X-ME-IP: 2.7.71.181 Content-Language: fr, en-US In-Reply-To: <83h6ogfi7p.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:268757 Archived-At: This is a multi-part message in MIME format. --------------jc9jmD4ZSu4eEvrewgb9RJsw Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 30/08/2023 21:22, Eli Zaretskii wrote: >> Cc: 65632@debbugs.gnu.org >> Date: Wed, 30 Aug 2023 21:35:11 +0300 >> From: Eli Zaretskii >> >>> ;; Display "TEST" in red, bold, italic on yellow background. >>> (insert >>> (propertize >>> "TEST" 'font-lock-face >>> '(bold ((:background "yellow") "italic" >>> ((foreground-color . "red") underline))))) >> >> This is not a valid face, AFAIU. That it works is sheer luck (because >> Emacs is very lenient with this stuff). The correct face definition >> for what you want is this (see 'set-face-attribute's doc string): >> >> (insert >> (propertize >> "TEST" 'font-lock-face >> '(:weight bold :background "yellow" :slant italic >> :foreground "red" :underline t))) >> >> If you use the above, foreground-color-at-point etc. will work as >> expected. >> >> I'm not sure we want to go out of our way to support the kind of face >> specifications that you used. > > However, if we do want that, we already have the technology: > > (face-attributes-as-vector (get-char-property (point) 'font-lock-face)) > > This will return a vector of face attribute values, where you can find > the value of any attribute you like. For example, to get the > foreground color, evaluate: > > (aref 9 > (face-attributes-as-vector (get-char-property (point) 'font-lock-face))) Hi Eli, Thank you very much for letting me know about `face-attributes-as-vector' (maybe its doc string could be improved?). It is exactly the function I need :-) In case you are interested, I attached an updated patch to faces.el that use this function to lookup face attribute, which improves and simplify the functions `faces--attribute-at-point', `foreground-color-at-point' and `background-color-at-point'. Regards --------------jc9jmD4ZSu4eEvrewgb9RJsw Content-Type: text/x-patch; charset=UTF-8; name="faces-attribute-lookup-V1.patch" Content-Disposition: attachment; filename="faces-attribute-lookup-V1.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3AvZmFjZXMuZWwgYi9saXNwL2ZhY2VzLmVsCmluZGV4IDhmOTNm OWIyYzBjLi5lNjRkMzNjZjFkNiAxMDA2NDQKLS0tIGEvbGlzcC9mYWNlcy5lbAorKysgYi9s aXNwL2ZhY2VzLmVsCkBAIC0yMTA5LDUwICsyMTA5LDc0IEBAIGZhY2UtYXQtcG9pbnQKICAg ICAgICAgKGRlbGV0ZS1kdXBzIChucmV2ZXJzZSBmYWNlcykpCiAgICAgICAoY2FyIChsYXN0 IGZhY2VzKSkpKSkKIAotKGRlZnVuIGZhY2VzLS1hdHRyaWJ1dGUtYXQtcG9pbnQgKGF0dHJp YnV0ZSAmb3B0aW9uYWwgYXR0cmlidXRlLXVubmFtZWQpCisoZGVmY29uc3QgZmFjZS0tYXR0 cmlidXRlLWluZGV4CisgIDs7IEZyb20gbGZhY2VfYXR0cmlidXRlX2luZGV4IGluIHNyYy9k aXNwZXh0ZXJuLmguCisgICcoKDpmYW1pbHkgICAgICAgICAgICAgLiAxKQorICAgICg6Zm91 bmRyeSAgICAgICAgICAgIC4gMikKKyAgICAoOndpZHRoICAgICAgICAgICAgICAuIDMpCisg ICAgKDpoZWlnaHQgICAgICAgICAgICAgLiA0KQorICAgICg6d2VpZ2h0ICAgICAgICAgICAg IC4gNSkKKyAgICAoOnNsYW50ICAgICAgICAgICAgICAuIDYpCisgICAgKDp1bmRlcmxpbmUg ICAgICAgICAgLiA3KQorICAgICg6aW52ZXJzZS12aWRlbyAgICAgIC4gOCkKKyAgICAoOnJl dmVyc2UtdmlkZW8gICAgICAuIDgpCisgICAgKDpmb3JlZ3JvdW5kICAgICAgICAgLiA5KQor ICAgICg6YmFja2dyb3VuZCAgICAgICAgIC4gMTApCisgICAgKDpzdGlwcGxlICAgICAgICAg ICAgLiAxMSkKKyAgICAoOm92ZXJsaW5lICAgICAgICAgICAuIDEyKQorICAgICg6c3RyaWtl LXRocm91Z2ggICAgIC4gMTMpCisgICAgKDpib3ggICAgICAgICAgICAgICAgLiAxNCkKKyAg ICAoOmZvbnQgICAgICAgICAgICAgICAuIDE1KQorICAgICg6aW5oZXJpdCAgICAgICAgICAg IC4gMTYpCisgICAgKDpmb250c2V0ICAgICAgICAgICAgLiAxNykKKyAgICAoOmRpc3RhbnQt Zm9yZWdyb3VuZCAuIDE4KQorICAgICg6ZXh0ZW5kICAgICAgICAgICAgIC4gMTkpCisgICAg KQorICAiSW5kaWNlcyBvZiBmYWNlIGF0dHJpYnV0ZXMgaW4gTGlzcCBmYWNlIHZlY3RvcnMu IikKKworKGRlZnN1YnN0IGZhY2UtLWF0dHJpYnV0ZS11bnNwZWNpZmllZC1wICh2YWx1ZSkK KyAgIlJldHVybiBub24tbmlsIGlmIGZhY2UgYXR0cmlidXRlIFZBTFVFIG1lYW5zIHVuc3Bl Y2lmaWVkLiIKKyAgKG1lbWJlciB2YWx1ZSAnKHVuc3BlY2lmaWVkICJ1bnNwZWNpZmllZC1m ZyIgInVuc3BlY2lmaWVkLWJnIikpKQorCisoZGVmdW4gZmFjZS1hdHRyaWJ1dGUtbG9va3Vw IChmYWNlIGF0dHJpYnV0ZSAmb3B0aW9uYWwgZGVmYXVsdCkKKyAgIlJldHVybiB0aGUgdmFs dWUgb2YgRkFDRSdzIEFUVFJJQlVURSBvciBuaWwgaWYgdW5zcGVjaWZpZWQuCitGQUNFIGlz IGEgdmFsaWQgZmFjZSBzcGVjaWZpY2F0aW9uLgorT3B0aW9uYWwgYXJndW1lbnQgREVGQVVM VCBpcyBhIGZhY2Ugc3BlY2lmaWNhdGlvbiBhcHBlbmRlZCB0byBGQUNFLgorSWYgREVGQVVM VCBpbmNsdWRlcyB0aGUgYGRlZmF1bHQnIGZhY2UsIHRoZSByZXR1cm4gdmFsdWUgaXMgYWx3 YXlzCitzcGVjaWZpZWQgYW5kIGFic29sdXRlLiIKKyAgKHdoZW4tbGV0ICgoaW5kZXggKGNk ciAoYXNzcSBhdHRyaWJ1dGUgZmFjZS0tYXR0cmlidXRlLWluZGV4KSkpCisgICAgICAgICAg ICAgKHZhbHVlIChhcmVmIChmYWNlLWF0dHJpYnV0ZXMtYXMtdmVjdG9yCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAoYXBwZW5kIChlbnN1cmUtbGlzdCBmYWNlKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5zdXJlLWxpc3QgZGVmYXVsdCkpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICBpbmRleCkpKQorICAgICh1bmxlc3MgKGZhY2UtLWF0 dHJpYnV0ZS11bnNwZWNpZmllZC1wIHZhbHVlKQorICAgICAgdmFsdWUpKSkKKworKGRlZnVu IGZhY2VzLS1hdHRyaWJ1dGUtYXQtcG9pbnQgKGF0dHJpYnV0ZSkKICAgIlJldHVybiB0aGUg ZmFjZSBBVFRSSUJVVEUgYXQgcG9pbnQuCi1BVFRSSUJVVEUgaXMgYSBrZXl3b3JkLgotSWYg QVRUUklCVVRFLVVOTkFNRUQgaXMgbm9uLW5pbCwgaXQgaXMgYSBzeW1ib2wgdG8gbG9vayBm b3IgaW4KLXVubmFtZWQgZmFjZXMgKGUuZywgYGZvcmVncm91bmQtY29sb3InKS4iCitBVFRS SUJVVEUgaXMgYSBrZXl3b3JkLiIKICAgOzsgYGZhY2UtYXQtcG9pbnQnIGFsb25lIGlzIG5v dCBzdWZmaWNpZW50LiAgSXQgb25seSBnZXRzIG5hbWVkIGZhY2VzLgogICA7OyBOZWVkIGFs c28gcGljayB1cCBhbnkgZmFjZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5vdCBhc3NvY2lhdGVk IHdpdGggbmFtZWQgZmFjZXMuCiAgIChsZXQgKChmYWNlcyAob3IgKGdldC1jaGFyLXByb3Bl cnR5IChwb2ludCkgJ3JlYWQtZmFjZS1uYW1lKQogICAgICAgICAgICAgICAgICAgIDs7IElm IGBmb250LWxvY2stbW9kZScgaXMgb24sIGBmb250LWxvY2stZmFjZScgdGFrZXMgcHJlY2Vk ZW5jZS4KICAgICAgICAgICAgICAgICAgICAoYW5kIGZvbnQtbG9jay1tb2RlCiAgICAgICAg ICAgICAgICAgICAgICAgICAoZ2V0LWNoYXItcHJvcGVydHkgKHBvaW50KSAnZm9udC1sb2Nr LWZhY2UpKQotICAgICAgICAgICAgICAgICAgIChnZXQtY2hhci1wcm9wZXJ0eSAocG9pbnQp ICdmYWNlKSkpCi0gICAgICAgIChmb3VuZCBuaWwpKQotICAgIChkb2xpc3QgKGZhY2UgKGlm IChmYWNlLWxpc3QtcCBmYWNlcykKLSAgICAgICAgICAgICAgICAgICAgICBmYWNlcwotICAg ICAgICAgICAgICAgICAgICAobGlzdCBmYWNlcykpKQotICAgICAgKGNvbmQgKGZvdW5kKQot ICAgICAgICAgICAgKChhbmQgZmFjZSAoc3ltYm9scCBmYWNlKSkKLSAgICAgICAgICAgICAo bGV0ICgodmFsdWUgKGZhY2UtYXR0cmlidXRlLXNwZWNpZmllZC1vcgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGZhY2UtYXR0cmlidXRlIGZhY2UgYXR0cmlidXRlIG5pbCB0KQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsKSkpCi0gICAgICAgICAgICAgICAodW5s ZXNzIChtZW1iZXIgdmFsdWUgJyhuaWwgInVuc3BlY2lmaWVkLWZnIiAidW5zcGVjaWZpZWQt YmciKSkKLSAgICAgICAgICAgICAgICAgKHNldHEgZm91bmQgdmFsdWUpKSkpCi0gICAgICAg ICAgICAoKGNvbnNwIGZhY2UpCi0gICAgICAgICAgICAgKHNldHEgZm91bmQgKGNvbmQgKChh bmQgYXR0cmlidXRlLXVubmFtZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobWVtcSBhdHRyaWJ1dGUtdW5uYW1lZCBmYWNlKSkKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGNkciAobWVtcSBhdHRyaWJ1dGUtdW5uYW1lZCBmYWNlKSkpCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtZW1xIGF0dHJpYnV0ZSBmYWNlKSAo Y2FkciAobWVtcSBhdHRyaWJ1dGUgZmFjZSkpKSkpKSkpCi0gICAgKG9yIGZvdW5kCi0gICAg ICAgIChmYWNlLWF0dHJpYnV0ZSAnZGVmYXVsdCBhdHRyaWJ1dGUpKSkpCisgICAgICAgICAg ICAgICAgICAgKGdldC1jaGFyLXByb3BlcnR5IChwb2ludCkgJ2ZhY2UpKSkpCisgICAgKGZh Y2UtYXR0cmlidXRlLWxvb2t1cCBmYWNlcyBhdHRyaWJ1dGUgJ2RlZmF1bHQpKSkKIAogKGRl ZnVuIGZvcmVncm91bmQtY29sb3ItYXQtcG9pbnQgKCkKICAgIlJldHVybiB0aGUgZm9yZWdy b3VuZCBjb2xvciBvZiB0aGUgY2hhcmFjdGVyIGFmdGVyIHBvaW50LgogT24gVFRZIGZyYW1l cywgdGhlIHJldHVybmVkIGNvbG9yIG5hbWUgY2FuIGJlIFwidW5zcGVjaWZpZWQtZmdcIiwK IHdoaWNoIHN0YW5kcyBmb3IgdGhlIHVua25vd24gZGVmYXVsdCBmb3JlZ3JvdW5kIGNvbG9y IG9mIHRoZQogZGlzcGxheSB3aGVyZSB0aGUgZnJhbWUgaXMgZGlzcGxheWVkLiIKLSAgKGZh Y2VzLS1hdHRyaWJ1dGUtYXQtcG9pbnQgOmZvcmVncm91bmQgJ2ZvcmVncm91bmQtY29sb3Ip KQorICAoZmFjZXMtLWF0dHJpYnV0ZS1hdC1wb2ludCA6Zm9yZWdyb3VuZCkpCiAKIChkZWZ1 biBiYWNrZ3JvdW5kLWNvbG9yLWF0LXBvaW50ICgpCiAgICJSZXR1cm4gdGhlIGJhY2tncm91 bmQgY29sb3Igb2YgdGhlIGNoYXJhY3RlciBhZnRlciBwb2ludC4KIE9uIFRUWSBmcmFtZXMs IHRoZSByZXR1cm5lZCBjb2xvciBuYW1lIGNhbiBiZSBcInVuc3BlY2lmaWVkLWJnXCIsCiB3 aGljaCBzdGFuZHMgZm9yIHRoZSB1bmtub3duIGRlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBv ZiB0aGUKIGRpc3BsYXkgd2hlcmUgdGhlIGZyYW1lIGlzIGRpc3BsYXllZC4iCi0gIChmYWNl cy0tYXR0cmlidXRlLWF0LXBvaW50IDpiYWNrZ3JvdW5kICdiYWNrZ3JvdW5kLWNvbG9yKSkK KyAgKGZhY2VzLS1hdHRyaWJ1dGUtYXQtcG9pbnQgOmJhY2tncm91bmQpKQogCiAMCiA7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7OzsK --------------jc9jmD4ZSu4eEvrewgb9RJsw--