
这是代码
(use-package color-picker
:vc (:url "https://github.com/zHaOdANiuu/color-picker.el" :rev :newest)
:commands color-picker
:custom (color-picker-scale 2.0))
(use-package colorful-mode
:hook (prog-mode . colorful-mode)
:custom
(colorful-use-prefix t)
(colorful-only-strings 'only-prog)
(css-fontify-colors nil)
:config
(add-to-list 'global-colorful-modes 'helpful-mode)
(when (display-graphic-p)
(require 'svg)
(defvar-keymap my-colorful--color-picker-map
"<mouse-1>"
(lambda (event)
(interactive "e")
(when-let* ((ov (colorful--find-overlay))
(beg (overlay-start ov))
(end (overlay-end ov))
(buf (window-buffer (posn-window (event-start event)))))
(let* ((pos (event-start event))
(xy (posn-x-y pos)))
(color-picker
:style 'simple :display 'frame
:x (car xy) :y (cdr xy)
:ok (lambda (picked)
(with-current-buffer buf
(delete-region beg end)
(insert picked))))))))
(defun my-colorful--svg-img (color)
(let* ((sz (frame-char-width))
(svg (svg-create sz sz)))
(svg-node svg 'rect
:x 1 :y 1 :width (- sz 2) :height (- sz 2)
:fill color :stroke "#ffffff" :stroke-width "1.5")
(svg-image svg :ascent 'center)))
(defun colorful--colorize-match (color beg end kind face map)
"Overlay match with a face from BEG to END.
The background uses COLOR color value. The foreground is obtained
from `readable-foreground-color'."
(let ((ov (make-overlay beg end)))
(overlay-put ov 'colorful--overlay t)
(overlay-put ov 'colorful--color-kind kind)
(overlay-put ov 'colorful--color color)
(overlay-put ov 'evaporate t)
(overlay-put ov
'before-string
(propertize
" "
'display (my-colorful--svg-img color)
'keymap my-colorful--color-picker-map
'pointer 'hand))
(overlay-put ov 'face nil)))))