Skip to content

Commit

Permalink
colors: remove colors-enable-rainbow-identifiers and new layer variab…
Browse files Browse the repository at this point in the history
…le colors-colorize-identifiers

You have to replace in your dotfile the layer variable
colors-enable-rainbow-identifiers t
by
colors-colorize-identifiers 'all

color-colorize-identifiers can take 3 values:
- variables -> colorize only variables via color-identifiers mode
- all -> colorize all identifiers
- nil -> no colorisation

New key bindings:

SPC t C a -> colorize all
SPC t C C-a -> colorize all globally

SPC t C v -> colorize variables
SPC t C C-v -> colorize variables globally
  • Loading branch information
syl20bnr committed Jun 4, 2016
1 parent 49fc0d5 commit dde9eef
Show file tree
Hide file tree
Showing 4 changed files with 197 additions and 133 deletions.
50 changes: 27 additions & 23 deletions layers/+themes/colors/README.org
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,19 @@
* Table of Contents :TOC_4_gh:noexport:
- [[#description][Description]]
- [[#install][Install]]
- [[#enable-rainbow-identifiers][Enable rainbow-identifiers]]
- [[#configuration][Configuration]]
- [[#colorize-identifiers][Colorize identifiers]]
- [[#enable-nyan-cat][Enable Nyan cat]]
- [[#key-bindings][Key bindings]]
- [[#rainbow-identifiers][Rainbow Identifiers]]
- [[#colorize-identifiers-1][Colorize Identifiers]]
- [[#rainbow-mode][Rainbow Mode]]
- [[#nyan-mode][Nyan Mode]]

* Description
This layer colors your life with:
- [[https://github.com/Fanael/rainbow-identifiers][rainbow identifiers]] mode will colorize each variables and functions with an
almost unique color. The keywords and the declaration of function colors are
disabled in order to make the colorized variables and functions stand out.
- [[https://github.com/Fanael/rainbow-identifiers][rainbow identifiers]] mode will colorize all identifiers (christmas tree mode :-))
with an almost unique color.
- [[https://github.com/ankurdave/color-identifiers-mode][color-identifiers]] mode will colorize only identifiers recognized as variables.
- [[https://julien.danjou.info/projects/emacs-packages][rainbow mode]] displays strings representing colors with the color they
represent as background.
- [[https://github.com/syl20bnr/nyan-mode][nyan mode]] display a Nyan cat progress bar in the mode-line.
Expand All @@ -26,19 +27,24 @@ To use this configuration layer, add it to your =~/.spacemacs=. You will need to
add =colors= to the existing =dotspacemacs-configuration-layers= list in this
file.

** Enable rainbow-identifiers
To enable =rainbow-identifiers-mode= by default in programing language buffers,
set the variable =colors-enable-rainbow-identifiers-by-default= to =t=:
* Configuration
** Colorize identifiers
To colorize some identifiers by default in programming language buffers, set
the layer variables =colors-colorize-identifiers= to either =variables= or
=all=. =variables= will colorize only words recognized as variables, =all=
will colorize all the words.

#+BEGIN_SRC emacs-lisp
(setq-default dotspacemacs-configuration-layers '(
(colors :variables colors-enable-rainbow-identifiers-by-default t)))
(colors :variables colors-colorize-identifiers 'all)))
#+END_SRC

Saturation and lightness of identifiers can be set per theme by adding
an entry in the variable =colors-theme-identifiers-sat&light=. This
is an alist where the key is a theme symbol and the value is a pair
=(saturation lightness)=.
When using the value =all= the Saturation and lightness of can be set per theme
by adding an entry in the variable =colors-theme-identifiers-sat&light=. This is
an alist where the key is a theme symbol and the value is a pair =(saturation
lightness)=.

For now saturation and lightness are not supported with the =variables= value.

Example:

Expand All @@ -47,7 +53,6 @@ Example:
#+END_SRC

** Enable Nyan cat

To enable the package =nyan-mode= set the variable
=colors-enable-nyan-cat-progress-bar= to =t=:

Expand All @@ -68,18 +73,17 @@ a quasi-quoted list:
* Key bindings
The prefix associated with colors is ~C~.

** Rainbow Identifiers

[[file:img/theme-tweaks-python.png]]
** Colorize Identifiers

=rainbow-identifiers= mode can be toggled on and off with:

~SPC t C i~

Note that the toggle is local to the current buffer.
| Key Binding | Description |
|-------------+-----------------------------------------------------------------|
| ~SPC C a~ | colorize all idendifiers in current buffer |
| ~SPC C C-a~ | globally colorize all idendifiers and all subsequent buffers |
| ~SPC C v~ | colorize all variables only in current buffer |
| ~SPC C C-v~ | globally colorize all variables only and all subsequent buffers |

The =saturation= and =lightness= of identifier colors can be adjusted live
with the transient-state:
when colorizing all the identifiers with the transient-state:

| Key Binding | Description |
|-----------------+------------------------------------------|
Expand Down
5 changes: 3 additions & 2 deletions layers/+themes/colors/config.el
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@

;; Variables

(defvar colors-enable-rainbow-identifiers-by-default nil
"If non nil the `rainbow-identifers' package is enabled.")
(defvar colors-colorize-identifiers nil
"If `variables' colorize variables, if `all' colorize all identifiers in
programming language buffers.")

(defvar colors-enable-nyan-cat-progress-bar nil
"If non nil all nyan cat packges are enabled (for now only `nyan-mode').")
Expand Down
116 changes: 116 additions & 0 deletions layers/+themes/colors/funcs.el
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
;;; funcs.el --- Colors Layer functions File
;;
;; Copyright (c) 2012-2016 Sylvain Benner & Contributors
;;
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
;; URL: https://github.com/syl20bnr/spacemacs
;;
;; This file is not part of GNU Emacs.
;;
;;; License: GPLv3


;; rainbow-identifiers

(defun colors//rainbow-identifiers-mode-maybe ()
"Enable rainbow identifiers if the major mode is a prog mode."
(when (derived-mode-p 'prog-mode)
(rainbow-identifiers-mode)))

(defun colors//tweak-theme-colors (theme)
"Tweak color themes by adjusting rainbow-identifiers."
(interactive)
;; tweak the saturation and lightness of identifier colors
(let ((sat&light (assq theme colors-theme-identifiers-sat&light)))
(if sat&light
(setq rainbow-identifiers-cie-l*a*b*-saturation (cadr sat&light)
rainbow-identifiers-cie-l*a*b*-lightness (caddr sat&light))
(setq rainbow-identifiers-cie-l*a*b*-saturation 80
rainbow-identifiers-cie-l*a*b*-lightness 45))))

(defun colors//change-color-mini-mode-doc (component)
"Display a short documentation in the mini buffer."
(let ((var (intern (format
"rainbow-identifiers-cie-l*a*b*-%s" component))))
(spacemacs/echo "Change color %s mini-mode (value: %s)
+ to increase %s
- to decrease %s
= to reset
Press any other key to exit." component (eval var) component component)))

(defun colors/change-color-component-overlay-map (component)
"Set a temporary overlay map to easily change a color COMPONENT from
rainbow-identifier mode. The color COMPONENT can be 'saturation' or
'lightness'."
(set-temporary-overlay-map
(let ((map (make-sparse-keymap))
(up-func (intern (format "colors/change-color-%s-up" component)))
(down-func (intern (format "colors/change-color-%s-down" component)))
(reset-func (intern (format "colors/change-color-%s-reset" component))))
(define-key map (kbd "+") up-func)
(define-key map (kbd "-") down-func)
(define-key map (kbd "=") reset-func)
map) t)
(colors//change-color-mini-mode-doc component))

(defun colors/init-rainbow-mode ()
(use-package rainbow-mode
:commands rainbow-mode
:init (spacemacs/set-leader-keys "tCc" 'rainbow-mode)
:config (spacemacs|hide-lighter rainbow-mode)))

(defun colors/start-change-color-saturation ()
"Initiate the overlay map to change the saturation."
(interactive)
(colors/change-color-component-overlay-map "saturation"))

(defun colors/change-color-saturation-up ()
"Increase the saturation by 5 units."
(interactive)
(colors//change-color-component-func "saturation" 5))

(defun colors/change-color-saturation-down ()
"Decrease the saturation by 5 units."
(interactive)
(colors//change-color-component-func "saturation" -5))

(defun colors/change-color-saturation-reset ()
"Reset the saturation to 100."
(interactive)
(colors//change-color-component-func "saturation" 100 t))

(defun colors/start-change-color-lightness ()
"Initiate the overlay map to change the lightness."
(interactive)
(colors/change-color-component-overlay-map "lightness"))

(defun colors/change-color-lightness-up ()
"Increase the lightness by 5 units."
(interactive)
(colors//change-color-component-func "lightness" 5))

(defun colors/change-color-lightness-down ()
"Decrease the lightness by 5 units."
(interactive)
(colors//change-color-component-func "lightness" -5))

(defun colors/change-color-lightness-reset ()
"Reset the lightness to 40."
(interactive)
(colors//change-color-component-func "lightness" 40 t))

(defun colors//change-color-component-func
(component inc &optional reset)
"Change the color component by adding INC value to it. If RESET is not
nil the color component is set to INC."
(let* ((var (intern (format
"rainbow-identifiers-cie-l*a*b*-%s" component)))
(new-value (+ (eval var) inc)))
(if reset
(set var inc)
(progn
(if (< new-value 0)
(setq new-value 0))
(set var new-value)))
(font-lock-fontify-buffer)
(colors/change-color-component-overlay-map component)))
Loading

0 comments on commit dde9eef

Please sign in to comment.