GNU bug report logs - #61188
30.0.50; color-lighten-name seems not to work

Previous Next

Package: emacs;

Reported by: "Mark Bestley" <gnu <at> bestley.co.uk>

Date: Mon, 30 Jan 2023 21:49:02 UTC

Severity: normal

Found in version 30.0.50

Full log


View this message in rfc822 format

From: Stephen Berman <stephen.berman <at> gmx.net>
To: "Mark Bestley" <gnu <at> bestley.co.uk>
Cc: 61188 <at> debbugs.gnu.org
Subject: bug#61188: 30.0.50; color-lighten-name seems not to work
Date: Mon, 30 Jan 2023 23:58:26 +0100
[Message part 1 (text/plain, inline)]
On Mon, 30 Jan 2023 21:48:20 +0000 "Mark Bestley" <gnu <at> bestley.co.uk> wrote:

> Look at the results of
>
> (require 'color)
> (message "reduce by 100 = %s" (color-lighten-name "Black" 100))
> (message "reduce by 0 = %s" (color-lighten-name "Black" 0))
>
> In emacs 28.2 they give "#ffffffffffff" and 0 as expected.
> In emacs 30.0.50 they give 0 and 0

This difference is due to this commit:

commit 656c2dd66e77a5fbeb99d358017e8327401fae05
Author:     Lars Ingebrigtsen <larsi <at> gnus.org>
Commit:     Lars Ingebrigtsen <larsi <at> gnus.org>
CommitDate: Tue Mar 22 15:28:02 2022 +0100

    Fix color-lighten-hsl logic

    * lisp/color.el (color-lighten-hsl): Lighten by percentage,
    instead of just adding the specified number to the luminance
    element (bug#54514).

The patch below restores the Emacs 28 result for the above examples
while keeping the desired result for the example in bug#54514, but I
have no idea if it yields undesirable results in other cases.

Steve Berman

[Message part 2 (text/x-patch, inline)]
diff --git a/lisp/color.el b/lisp/color.el
index f68cf5e6b17..a251b1a24a0 100644
--- a/lisp/color.el
+++ b/lisp/color.el
@@ -407,7 +407,7 @@ color-lighten-hsl
 Given a color defined in terms of hue, saturation, and luminance
 \(arguments H, S, and L), return a color that is PERCENT lighter.
 Returns a list (HUE SATURATION LUMINANCE)."
-  (list H S (color-clamp (+ L (* L (/ percent 100.0))))))
+  (list H S (color-clamp (+ L (* (if (> L 0) L 1) (/ percent 100.0))))))

 (defun color-lighten-name (name percent)
   "Make a color with a specified NAME lighter by PERCENT.

This bug report was last modified 2 years and 120 days ago.

Previous Next


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