emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/marginalia 9d7f17f 199/241: Add marginalia-annotate-col


From: Stefan Monnier
Subject: [elpa] externals/marginalia 9d7f17f 199/241: Add marginalia-annotate-color (Fix #64)
Date: Fri, 28 May 2021 20:49:26 -0400 (EDT)

branch: externals/marginalia
commit 9d7f17f96f0c5cc8445dbd8c9b635456dafeeab2
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>

    Add marginalia-annotate-color (Fix #64)
---
 marginalia.el | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/marginalia.el b/marginalia.el
index 02e5f39..63dd2f5 100644
--- a/marginalia.el
+++ b/marginalia.el
@@ -87,6 +87,7 @@ only with the annotations that come with Emacs) without 
disabling
     (customize-group . marginalia-annotate-customize-group)
     (variable . marginalia-annotate-variable)
     (face . marginalia-annotate-face)
+    (color . marginalia-annotate-color)
     (unicode-name . marginalia-annotate-char)
     (minor-mode . marginalia-annotate-minor-mode)
     (symbol . marginalia-annotate-symbol)
@@ -139,6 +140,7 @@ determine it."
     ("\\<package\\>" . package)
     ("\\<bookmark\\>" . bookmark)
     ("\\<face\\>" . face)
+    ("\\<color\\>" . color)
     ("\\<environment variable\\>" . environment-variable)
     ("\\<variable\\>" . variable)
     ("\\<input method\\>" . input-method)
@@ -481,6 +483,26 @@ keybinding since CAND includes it."
      ((documentation-property sym 'face-documentation)
       :truncate marginalia-truncate-width :face 'marginalia-documentation))))
 
+(defun marginalia-annotate-color (cand)
+  "Annotate face CAND with its documentation string and face example."
+  (when-let (rgb (color-name-to-rgb cand))
+    (pcase-let ((`(,r ,g ,b) rgb)
+                (`(,h ,s ,l) (apply #'color-rgb-to-hsl rgb)))
+      (marginalia--fields
+       ("      " :face `(:background ,(apply #'color-rgb-to-hex rgb)))
+       ((format "%s%s%s %s"
+         (propertize " " 'face `(:background ,(color-rgb-to-hex r 0 0)))
+         (propertize " " 'face `(:background ,(color-rgb-to-hex 0 g 0)))
+         (propertize " " 'face `(:background ,(color-rgb-to-hex 0 0 b)))
+         (color-rgb-to-hex r g b 2)))
+       ((format "%s%s%s %3s° %3s%% %3s%%"
+         (propertize " " 'face `(:background ,(apply #'color-rgb-to-hex 
(color-hsl-to-rgb h 1 0.5))))
+         (propertize " " 'face `(:background ,(apply #'color-rgb-to-hex 
(color-hsl-to-rgb h s 0.5))))
+         (propertize " " 'face `(:background ,(apply #'color-rgb-to-hex 
(color-hsl-to-rgb h 1 l))))
+         (round (* 360 h))
+         (round (* 100 s))
+         (round (* 100 l))))))))
+
 (defun marginalia-annotate-char (cand)
   "Annotate character CAND with its general character category and character 
code."
   (when-let (char (char-from-name cand t))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]