colorful-mode
- Description
- Preview any color in your buffer in real time
- Latest
- colorful-mode-1.0.4.0.20240924.193317.tar (.sig), 2024-Sep-25, 60.0 KiB
- Maintainer
- Jen-Chieh <jcs090218@gmail.com>
- Website
- https://github.com/DevelopmentCool2449/colorful-mode
- Browse ELPA's repository
- CGit or Gitweb
- Badge
To install this package from Emacs, use package-install
or list-packages
.
Full description
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.
1. Features ✨
- Real time color highlight.
- Supports hexadecimals colors, color names, rgb[a]/hsl[a] and LaTex colors (gray, rbg, RGB, HTML)
- Convert current color at point to other formats such as hexadecimal or color names (only available for some colors).
- Optionally use a prefix/suffix string instead highlight.
- Optionally highlight colors only inside in strings.
- Omitting color keywords from being highlighted.
2. Screenshots and animated GIFs 📷
With prefix instead highlight.
With a custom prefix (in this example a custom character).
3. User Options, Setups and Guides 📖
3.1. Customizable User options
colorful-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. NOTE: css derived modes by default colorize rgb and hex colors, this may interfere with colorful prefix, you can disable this setting css-fontify-colors to nilcolorful-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: '((emacs-lisp-mode . colorful-add-color-names) ((mhtml-mode html-ts-mode css-mode css-ts-mode) . (colorful-add-rgb-colors colorful-add-hsl-colors colorful-add-color-names)) (latex-mode . colorful-add-latex-colors) colorful-add-hex-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-add-hex-colors.
- colorful-add-color-names.
- colorful-add-rgb-colors.
- colorful-add-hsl-colors.
- colorful-add-latex-colors
colorful-exclude-colors (default: '("#def"))
List of keyword to don't highlight.colorful-short-hex-conversions (default: 2)
If set to 2, hex values converted by colorful should be as short as possible. Setting this to 2 will make hex values follow a 24-bit specification and can make them inaccurate.colorful-only-strings (default: nil)
If non-nil colorful will only highlight colors inside strings. If set to only-prog, only highlight colors in strings if current major mode is derived from prog-mode.global-colorful-modes (default: '(mhtml-mode html-ts-mode scss-mode css-mode css-ts-mode prog-mode))
Which major modes global-colorful-mode is switched on in (globally).
3.2. Faces
colorful-base
Face used as base for highlight color names. Only used for draw box and change font &c., changing box color and/or background/foreground color face doesn't have effect.
3.3. Interactive User Functions.
colorful-change-or-copy-color
Change or copy color to a converted format at current cursor position.colorful-convert-and-change-color
Convert color to a valid format and replace color at current cursor position.colorful-convert-and-copy-color
Convert color to a valid format and copy it at current cursor position.colorful-mode
Buffer-local minor mode.global-colorful-mode
Global minor mode.
3.4. Key bindings
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
.
3.5. Adding extra colors
Colorful by default provides extra functions that highlight additional colors:
colorful-add-hex-colors
Add Hexadecimal Colors.colorful-add-color-names
Add color names.colorful-add-rgb-colors
Add CSS RGB colors.colorful-add-hsl-colors
Add CSS HSL colors.colorful-add-latex-colors
Add LaTex rgb/RGB/HTML/Grey colors.
For use them add it to:
;; In this example add emacs color names only for yaml-mode and derived. (add-to-list 'colorful-extra-color-keyword-functions '(yaml-mode . colorful-add-color-names))
See: colorful-extra-color-keyword-functions
for more details.
4. Usage and Installation 📦
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 run 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
Or if you prefer using use-package
macro:
(use-package colorful-mode :ensure t ; Optional :hook (prog-mode text-mode) ...)
5. How does it compare to rainbow-mode
?
colorful-mode
improves rainbow-mode
in adding more features
and fixing some (and old) bugs:
Comparation | colorful-mode.el | rainbow-mode.el |
---|---|---|
Compatible with hl-line and other overlays? | ✓ | ❌ |
Convert color to other formats? | ✓ | ❌ |
Optionally use string prefix/suffix instead highlight | ✓ | ❌ |
Exclude keywords/colors? | ✓ | ❌1 |
Allow highlight specifics colors in specific modes | ✓ | ✓2 |
Optionally highlight only in strings | ✓ | ❌ |
No performance issues?3 | ❌ | ✓ |
[1] rainbow-mode (like colorful) uses regex for highlight some keywords, however it cannot exclude specifics colors keywords (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
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
.
On the other hand, if you want convert colors, overlays, optional
prefix strings and more features you can use colorful-mode.el
.
6. How to Contribute
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.
Old versions
colorful-mode-1.0.4.0.20240712.155246.tar.lz | 2024-Jul-13 | 9.93 KiB |
colorful-mode-1.0.4.0.20240711.181025.tar.lz | 2024-Jul-12 | 9.91 KiB |
colorful-mode-1.0.4.0.20240709.183202.tar.lz | 2024-Jul-10 | 9.28 KiB |
colorful-mode-1.0.4.0.20240626.184332.tar.lz | 2024-Jun-27 | 9.26 KiB |
colorful-mode-1.0.3.0.20240609.160019.tar.lz | 2024-Jun-10 | 9.23 KiB |
colorful-mode-1.0.0.0.20240427.103837.tar.lz | 2024-Apr-28 | 9.21 KiB |