GNU bug report logs -
#4033
23.1; list-colors-display is misleading
Previous Next
Full log
Message #70 received at 4033 <at> emacsbugs.donarmstrong.com (full text, mbox):
> > I have had at least one user state that he thought that, since the
> > form shown is #RRGGBB, his colors had only that granularity. IOW,
> > even if one's system allows colors of the form #RRRRGGGGBBBB (more
> > colors), the color names are translated to hex strings of the form
> > #RRGGBB (fewer colors).
>
> Could you show a formula that calculates the color granularity?
>
> We could use it to print colors in the short format #RRGGBB
> for the smaller color space and #RRRRGGGGBBBB otherwise.
What about something like this:
(defun rgb-color-format-for-display ()
(let ((ncolors (display-color-cells (selected-frame)))
(exp 0))
(while (> (lsh ncolors (- exp)) 1) (setq exp (1+ exp)))
(setq exp (/ exp 12))
(format "#%%0%dx%%0%dx%%0%dx" exp exp exp)))
For 16777216 colors, that gives #%02x%02x%02x, which seems right.
In `list-colors-print', we would then do this:
(insert (apply 'format (rgb-color-format-for-display)
(mapcar (lambda (c) (lsh c -8))
(color-values (car color)))))
IOW, replace the hard-coded "#%02x%02x%02x" with (rgb-color-format-for-display).
But I guess Jason and Eli are saying that that wouldn't work or wouldn't be
appropriate. It's still not clear to me.
This bug report was last modified 15 years and 352 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.