commit a239773c7ff590c75cd4cbcf0e6c97462105d075
parent adaf0c387690476daf9568719c65309fd33e72bc
Author: Jimmy Yuen Ho Wong <wyuenho@users.noreply.github.com>
Date: Tue, 5 Nov 2019 15:55:24 +0000
unified and improved diff colors
* Fix #134 #192 #194. Unified diff colors
* Change diff-hl-insert to use non-highlighted green and reverted-hunk-highlight to ancestor
* give diff content fg more contrast on light background
Diffstat:
| M | solarized.el | | | 188 | ++++++++++++++++++++++++++++++++----------------------------------------------- |
1 file changed, 77 insertions(+), 111 deletions(-)
diff --git a/solarized.el b/solarized.el
@@ -330,7 +330,43 @@ VARIANT is 'dark or 'light."
(s-mode-line-inactive-bg (if solarized-high-contrast-mode-line
base02 base03))
(s-mode-line-inactive-bc (if solarized-high-contrast-mode-line
- base02 base02)))
+ base02 base02))
+
+ ;; diff colors
+ (s-diff-A-bg (if (eq variant 'light) "#ffdddd" "#553333"))
+ (s-diff-A-fg (if (eq variant 'light) "#aa2222" "#ffdddd"))
+ (s-diff-fine-A-bg (if (eq variant 'light)
+ (solarized-color-blend "#ffdddd" red 0.7)
+ (solarized-color-blend "#664444" red 0.7)))
+ (s-diff-fine-A-fg (if (eq variant 'light) "#aa2222" "#eecccc"))
+
+ (s-diff-B-bg (if (eq variant 'light) "#ddffdd" "#335533"))
+ (s-diff-B-fg (if (eq variant 'light) "#22aa22" "#ddffdd"))
+ (s-diff-fine-B-bg (if (eq variant 'light)
+ (solarized-color-blend "#ddffdd" green 0.7)
+ (solarized-color-blend "#446644" green 0.7)))
+ (s-diff-fine-B-fg (if (eq variant 'light) "#336633" "#cceecc"))
+
+ (s-diff-Ancestor-bg (if (eq variant 'light) "#ffffcc" "#555522"))
+ (s-diff-Ancestor-fg (if (eq variant 'light) "#aaaa11" "#ffffcc"))
+ (s-diff-fine-Ancestor-bg (if (eq variant 'light) "#eeeebb" "#666622"))
+ (s-diff-fine-Ancestor-fg (if (eq variant 'light) "#aaaa11" "#eeeebb"))
+
+ (s-diff-C-bg (if (eq variant 'light) "#d1e2f2" "#004d7b"))
+ (s-diff-C-fg (if (eq variant 'light) "#004d7b" "#d1e2f2"))
+ (s-diff-fine-C-bg (if (eq variant 'light)
+ (solarized-color-blend "#d6e5e5" blue 0.7)
+ (solarized-color-blend "#00547f" blue 0.7)))
+ (s-diff-fine-C-fg (if (eq variant 'light) "#00547f" "#d6e5e5"))
+
+ (s-diff-context-fg (if (eq variant 'light) base02 "grey70"))
+
+ (s-diff-heading-bg (solarized-color-blend yellow base03 0.1))
+
+ (s-diffstat-added-fg green)
+ (s-diffstat-changed-fg blue)
+ (s-diffstat-removed-fg red)
+ )
,@body))
(defun solarized-create-theme-file (variant theme-name core-palette &optional childtheme overwrite)
@@ -798,118 +834,48 @@ customize the resulting theme."
`(deadgrep-regexp-metachar-face ((,class (:inherit font-lock-constant-face))))
`(deadgrep-search-term-face ((,class (:inherit font-lock-variable-name-face))))
;;;;; diff
- `(diff-added ((,class (:foreground ,green))))
- `(diff-changed ((,class (:foreground ,blue))))
- `(diff-removed ((,class (:foreground ,red))))
- `(diff-refine-added
- ((,light-class
- (:background ,(solarized-color-blend "#ddffdd" green 0.7)))
- (,dark-class
- (:background ,(solarized-color-blend "#446644" green 0.7)))))
- `(diff-refine-changed
- ((,light-class
- (:background ,(solarized-color-blend "#ddddff" blue 0.7)))
- (,dark-class
- (:background ,(solarized-color-blend "#444466" blue 0.7)))))
- `(diff-refine-removed
- ((,light-class
- (:background ,(solarized-color-blend "#ffdddd" red 0.7)))
- (,dark-class
- (:background ,(solarized-color-blend "#664444" red 0.7)))))
- `(diff-header ((,class (:background ,base03))))
+ `(diff-added ((,class (:background ,s-diff-B-bg :foreground ,s-diff-B-fg))))
+ `(diff-changed ((t nil)))
+ `(diff-removed ((,class (:background ,s-diff-A-bg :foreground ,s-diff-A-fg))))
+ `(diff-refine-added ((,class (:background ,s-diff-fine-B-bg :foreground ,s-diff-fine-B-fg))))
+ `(diff-refine-changed ((,class (:background ,s-diff-fine-C-bg :foreground ,s-diff-fine-C-fg))))
+ `(diff-refine-removed ((,class (:background ,s-diff-fine-A-bg :foreground ,s-diff-fine-A-fg))))
+ `(diff-header ((t (:background ,s-diff-heading-bg))))
`(diff-file-header
((,class (:background ,base03 :foreground ,base0 :weight bold))))
+ `(diff-context ((,class :foreground ,s-diff-context-fg)))
+ `(diff-indicator-added ((t (:foreground ,s-diffstat-added-fg))))
+ `(diff-indicator-changed ((t (:foreground ,s-diffstat-changed-fg))))
+ `(diff-indicator-removed ((t (:foreground ,s-diffstat-removed-fg))))
;;;;; diff-hl
- `(diff-hl-change ((,class (:background ,blue-lc :foreground ,blue-hc))))
- `(diff-hl-delete ((,class (:background ,red-lc :foreground ,red-hc))))
- `(diff-hl-insert ((,class (:background ,green-lc :foreground ,green-hc))))
- `(diff-hl-unknown ((,class (:background ,cyan-lc :foreground ,cyan-hc))))
+ `(diff-hl-change ((,class (:background ,s-diff-C-bg :foreground ,s-diff-C-fg))))
+ `(diff-hl-delete ((,class (:background ,s-diff-A-bg :foreground ,s-diff-A-fg))))
+ `(diff-hl-insert ((,class (:background ,s-diff-B-bg :foreground ,s-diff-B-fg))))
+ `(diff-hl-reverted-hunk-highlight ((,class (:background ,s-diff-Ancestor-bg :foreground ,s-diff-Ancestor-fg))))
;;;;; ediff
- `(ediff-fine-diff-A ((,class (:background ,orange-lc))))
- `(ediff-fine-diff-B ((,class (:background ,green-lc))))
- `(ediff-fine-diff-C ((,class (:background ,yellow-lc))))
-
- `(ediff-current-diff-C ((,class (:background ,blue-lc))))
-
- `(ediff-even-diff-A ((,class (:background ,base01
- :foreground ,base3 ))))
- `(ediff-odd-diff-A ((,class (:background ,base01
- :foreground ,base03 ))))
- `(ediff-even-diff-B ((,class (:background ,base01
- :foreground ,base03 ))))
- `(ediff-odd-diff-B ((,class (:background ,base01
- :foreground ,base03 ))))
- `(ediff-even-diff-C ((,class (:background ,base01
- :foreground ,base0 ))))
- `(ediff-odd-diff-C ((,class (:background ,base01
- :foreground ,base03 ))))
-
-;;;;;; alternative ediff (not finished)
- ;; `(ediff-fine-diff-A ((,class (
- ;; :background ,(solarized-color-blend blue base03 0.25))
- ;; )))
- ;; `(ediff-fine-diff-B ((,class (
- ;; :background ,(solarized-color-blend violet base03 0.25))
- ;; )))
- ;; `(ediff-fine-diff-C ((,class (
- ;; :background ,(solarized-color-blend yellow base03 0.25))
- ;; )))
- ;; `(ediff-current-diff-A ((,class (
- ;; :background ,(solarized-color-blend blue base03 0.15)
- ;; ))))
- ;; `(ediff-current-diff-B ((,class (
- ;; :background ,(solarized-color-blend violet base03 0.15)
- ;; ))))
- ;; `(ediff-current-diff-C ((,class (
- ;; :background ,(solarized-color-blend yellow base03 0.15)
- ;; ))))
- ;; `(ediff-even-diff-A ((,class (
- ;; ;; :background ,(solarized-color-blend base0 base03 0.15)
- ;; :background ,base02
- ;; ;; :foreground ,base2
- ;; ;; :background ,(solarized-color-blend green base02 0.15)
- ;; ))))
- ;; `(ediff-even-diff-B ((,class (
- ;; ;; :background ,base01
- ;; :background ,base02
- ;; ;; :foreground ,base2
- ;; ))))
- ;; `(ediff-even-diff-C ((,class (
- ;; ;; :background ,base01
- ;; :background ,base02
- ;; ;; :foreground ,base2
- ;; ))))
- ;; `(ediff-odd-diff-A ((,class (
- ;; ;; :background ,base01
- ;; :background ,base02
- ;; ))))
- ;; `(ediff-odd-diff-B ((,class (
- ;; ;; :background ,base01
- ;; :background ,base02
- ;; ))))
- ;; `(ediff-odd-diff-C ((,class (
- ;; ;; :background ,base01
- ;; :background ,base03
- ;; ))))
- ;; `(ediff-current-diff-Ancestor ((,class (:background "VioletRed" :foreground "Black"))))
- ;; `(ediff-even-diff-Ancestor ((,class (:background "Grey" :foreground "White"))))
- ;; `(ediff-fine-diff-Ancestor ((,class (:background "Green" :foreground "Black"))))
- ;; `(ediff-odd-diff-Ancestor ((,class (:background "gray40" :foreground "cyan3"))))
- ;; `(ediff-even-diff-A ((,class (:underline ,base01))))
- ;; `(ediff-odd-diff-A ((,class (:underline ,base01
- ;; ))))
- ;; `(ediff-even-diff-B ((,class (:background ,base01
- ;; :foreground ,base03
- ;; ))))
- ;; `(ediff-odd-diff-B ((,class (:background ,base01
- ;; :foreground ,base03
- ;; ))))
- ;; `(ediff-even-diff-C ((,class (:background ,base01
- ;; :foreground ,base0
- ;; ))))
- ;; `(ediff-odd-diff-C ((,class (:background ,base01
- ;; :foreground ,base03
- ;; ))))
+ `(ediff-even-diff-A ((t (:background ,base02))))
+ `(ediff-even-diff-Ancestor ((,class (:foreground ,s-diff-context-fg))))
+ `(ediff-even-diff-B ((t (:background ,base02))))
+ `(ediff-even-diff-C ((t (:background ,base02))))
+ `(ediff-odd-diff-A ((t (:background ,base02))))
+ `(ediff-odd-diff-Ancestor ((,class (:foreground ,s-diff-context-fg))))
+ `(ediff-odd-diff-B ((t (:background ,base02))))
+ `(ediff-odd-diff-C ((t (:background ,base02))))
+ `(ediff-current-diff-A ((,class (:background ,s-diff-A-bg :foreground ,s-diff-A-fg))))
+ `(ediff-current-diff-Ancestor ((,class (:background ,s-diff-Ancestor-bg :foreground ,s-diff-Ancestor-fg))))
+ `(ediff-current-diff-B ((,class (:background ,s-diff-B-bg :foreground ,s-diff-B-fg))))
+ `(ediff-current-diff-C ((,class (:background ,s-diff-C-bg :foreground ,s-diff-C-fg))))
+ `(ediff-fine-diff-A ((,class (:background ,s-diff-fine-A-bg :foreground ,s-diff-fine-A-fg))))
+ `(ediff-fine-diff-Ancestor ((,class (:background ,s-diff-fine-Ancestor-bg :foreground ,s-diff-fine-Ancestor-fg))))
+ `(ediff-fine-diff-B ((,class (:background ,s-diff-fine-B-bg :foreground ,s-diff-fine-B-fg))))
+ `(ediff-fine-diff-C ((,class (:background ,s-diff-fine-C-bg :foreground ,s-diff-fine-C-fg))))
+;;;;; smerge
+ `(smerge-base ((,class (:background ,s-diff-Ancestor-bg :foreground ,s-diff-Ancestor-fg))))
+ `(smerge-lower ((,class (:background ,s-diff-B-bg :foreground ,s-diff-B-fg))))
+ `(smerge-markers ((t (:background ,s-diff-heading-bg))))
+ `(smerge-refined-added ((,class (:background ,s-diff-fine-B-bg :foreground ,s-diff-fine-B-fg))))
+ `(smerge-refined-removed ((,class (:background ,s-diff-fine-A-bg :foreground ,s-diff-fine-A-fg))))
+ `(smerge-upper ((,class (:background ,s-diff-A-bg :foreground ,s-diff-A-fg))))
;;;;; edts
`(edts-face-error-line
((,(append '((supports :underline (:style line))) light-class)
@@ -1548,8 +1514,8 @@ customize the resulting theme."
`(magit-diff-lines-heading ((t (:background ,orange
:foreground ,base3))))
`(magit-diff-context-highlight ((t (:background ,base02))))
- `(magit-diffstat-added ((t (:foreground ,green))))
- `(magit-diffstat-removed ((t (:foreground ,red))))
+ `(magit-diffstat-added ((t (:foreground ,s-diffstat-added-fg))))
+ `(magit-diffstat-removed ((t (:foreground ,s-diffstat-removed-fg))))
;;;;;; process
`(magit-process-ok ((t (:foreground ,green :weight bold))))
`(magit-process-ng ((t (:foreground ,red :weight bold))))