Preview any color in your buffer in real time.
🎨 colorful-mode
is a minor mode that allow you highlight/preview any color format such as color hex and color names, in your current buffer in real time and in a user friendly way based/inspired on 🌈rainbow-mode.el.
Support for custom color string indicator.
Change color support in real time.
Support for color changing at region.
Customizable User optionscolorful-allow-mouse-clicks (default: t)
If non-nil, allow using mouse buttons for change color.colorful-use-prefix (default: nil)
If non-nil, use prefix for preview color instead highlight them.Warning
css-derived modes colorize rgb and hex colors out the box, this may interfere with colorful prefix, you can disable this setting ‘css-fontify-colors’ to nil
colorful-prefix-string (default: "●")
String to be used in highlights. Only relevant if `colorful-use-prefix’ is non-nil.colorful-prefix-alignment (default: 'left)
The position to put prefix string. The value can be left or right. Only relevant if `colorful-use-prefix’ is non-nil.colorful-extra-color-keyword-functions
default: ‘(colorful-add-hex-colors (emacs-lisp-mode . colorful-add-color-names) ((html-mode css-mode) . (colorful-add-css-variables-colors colorful-add-rgb-colors colorful-add-hsl-colors colorful-add-oklab-oklch-colors colorful-add-color-names)) (latex-mode . colorful-add-latex-colors)) List of functions to add extra color keywords to colorful-color-keywords.
It can be a cons cell specifying the mode (or a list of modes) e.g:
(((css-mode css-ts-mode) . colorful-add-rgb-colors) (emacs-lisp-mode . (colorful-add-color-names colorful-add-rgb-colors)) ((text-mode html-mode) . (colorful-add-color-names colorful-add-rgb-colors)) …)
Or a simple list of functions for executing wherever colorful is active: (colorful-add-color-names colorful-add-rgb-colors)
Available functions are:
colorful-exclude-colors (default: '("#define"))
List of keywords not to highlight.colorful-short-hex-conversions (default: t)
If non-nil, colorful will converted long hex colors to "#RRGGBB" format. Setting this to non-nil can make converted hex inaccurate.colorful-only-strings (default: nil)
If non-nil, colorful will only highlight colors inside strings. If set to `only-prog’, the colors in `prog-mode’ will be highlighted only if they are inside a string, this doesn’t include `css-mode’ and derived.colorful-highlight-in-comments
If non-nil, colorful will highlight colors inside comments. NOTE: If this is set, this will highlight any keyword within the comments, including color names, which can be annoying.colorful-html-colors-alist
Alist of HTML colors. Each entry should have the form (COLOR-NAME . HEXADECIMAL-COLOR).global-colorful-modes (default: '(prog-mode help-mode html-mode css-mode latex-mode))
Which major modes global-colorful-mode is switched on in (globally).colorful-base
Face used as base for highlight color names. Changing background or foreground color will have no effect.colorful-change-or-copy-color
Change or copy color at point to another format.colorful-convert-and-change-color
Convert color at point or colors in region to another format.colorfu-convert-and-copy-color
Convert color at point to another format and copy it to the kill ring.colorful-mode
Buffer-local minor mode.global-colorful-mode
Global minor mode.These key bindings are defined by: colorful-mode-map
C-x c x
→ colorful-change-or-copy-color
.C-x c c
→ colorful-convert-and-copy-color
.C-x c r
→ colorful-convert-and-change-color
.If you want to use css rgb colors outside css-derived modes, you can add them to `colorful-extra-color-keyword-functions’ in your config.
(add-to-list 'colorful-extra-color-keyword-functions '(insert-your-major-mode . colorful-add-rgb-colors))
If you want also use hsl and rgb together you can use this
(add-to-list 'colorful-extra-color-keyword-functions '(insert-your-major-mode . (colorful-add-rgb-colors colorful-add-hsl-colors)))
colorful provides extra functions out-the-box that enable additional highlighting:
colorful-add-hex-colors
: Add Hexadecimal colors highlighting.colorful-add-color-names
: Add color names highlighting.colorful-add-css-variables-colors
: Add CSS user-defined color variables highlighting.colorful-add-rgb-colors
: Add CSS RGB colors highlighting.colorful-add-oklab-oklch-colors
: Add CSS OkLab and OkLch colors highlighting.colorful-add-hsl-colors
: Add CSS HSL colors highlighting.colorful-add-latex-colors
: Add LaTeX rgb/RGB/HTML/Grey colors highlighting.See: colorful-extra-color-keyword-functions
for more details.
It’s recommended that you must use emacs-28.x or higher.
For install colorful run:
M-x package-install colorful-mode
Once you have it installed you can activate colorful locally in your buffer with M-x colorful-mode
, if want enable it globally without using hooks then you can do M-x global-colorful-mode
Example (Personal) configuration for your init.el
:
(use-package colorful-mode ;; :diminish ;; :ensure t ; Optional :custom (colorful-use-prefix t) (colorful-only-strings 'only-prog) (css-fontify-colors nil) :config (global-colorful-mode t) (add-to-list 'global-colorful-modes 'helpful-mode))Disable colorful in regions
If you want to disable colorful at region this hack may be useful for you:
(add-hook 'post-command-hook (lambda () "delete colorful overlay on active mark" (when-let* (colorful-mode (beg (use-region-beginning)) (end (use-region-end))) ;; Remove full colorful overlay instead only the part where ;; the region is. (dolist (ov (overlays-in beg end)) (when (overlay-get ov 'colorful--overlay) (delete-overlay ov)))))) (add-hook 'deactivate-mark-hook (lambda () "refontify deleted mark" (when-let* (colorful-mode (beg (region-beginning)) (end (region-end))) (font-lock-flush beg end))))How does it compare to
rainbow-mode
or built-in css fontify colors
?
colorful-mode
improves rainbow-mode
and css fontify-colors
in adding more features:
[1] rainbow-mode (like colorful) uses regex for highlight some keywords, however it cannot exclude specifics colors (such as "#def" that overrides C "#define" keyword). [2] Only for some colors. [3] I didn't a benchmark however due colorful-mode uses overlays instead text properties it can be a bit slow.
The intention is to provide a featured alternative to rainbow-mode.el
and css-fontify-colors
with a user-friendly approach.
If you prefer only highlights without color conversion, prefix/suffix string indicator and/or anything else you can use rainbow-mode.el
.
or something built-in and just for css then use built-in css-fontify-colors which is activated by default
On the other hand, if you want convert colors, overlays, optional prefix strings and more features you can use colorful-mode.el
.
colorful-mode is part of GNU ELPA, if you want send patches you will need assign copyright to the Free Software Foundation. Please see the CONTRIBUTING.org file for getting more information.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4