aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/lispref/display.texi9
-rw-r--r--etc/NEWS25
-rw-r--r--etc/themes/adwaita-theme.el6
-rw-r--r--etc/themes/deeper-blue-theme.el14
-rw-r--r--etc/themes/dichromacy-theme.el4
-rw-r--r--etc/themes/leuven-theme.el24
-rw-r--r--etc/themes/light-blue-theme.el4
-rw-r--r--etc/themes/manoj-dark-theme.el20
-rw-r--r--etc/themes/misterioso-theme.el2
-rw-r--r--etc/themes/tango-dark-theme.el16
-rw-r--r--etc/themes/tango-theme.el8
-rw-r--r--etc/themes/tsdh-dark-theme.el10
-rw-r--r--etc/themes/tsdh-light-theme.el6
-rw-r--r--etc/themes/wheatgrass-theme.el4
-rw-r--r--etc/themes/wombat-theme.el4
-rw-r--r--lisp/faces.el19
-rw-r--r--test/data/themes/faces-test-dark-theme.el33
-rw-r--r--test/data/themes/faces-test-light-theme.el32
-rw-r--r--test/lisp/faces-tests.el29
19 files changed, 175 insertions, 94 deletions
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index ea3fa6f9b11..48a41f53677 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -2499,9 +2499,12 @@ space between end of line and edge of the window using this face, or
2499@code{nil} to not use this face for the space between the end of the 2499@code{nil} to not use this face for the space between the end of the
2500line and the edge of the window. When Emacs merges several faces for 2500line and the edge of the window. When Emacs merges several faces for
2501displaying the empty space beyond end of line, only those faces with 2501displaying the empty space beyond end of line, only those faces with
2502@code{:extend} non-@code{nil} will be merged. By default, only 2502@code{:extend} non-@code{nil} will be merged. By default, only a
2503@code{region} and @code{hl-line} faces have this attribute set to 2503small number of faces, notably, @code{region}, have this attribute
2504@code{t}. 2504set. This attribute is different from the others in that when a theme
2505doesn't specify an explicit value for a face, the value from the
2506original face definition by @code{defface} is inherited
2507(@pxref{Defining Faces}).
2505 2508
2506@end table 2509@end table
2507 2510
diff --git a/etc/NEWS b/etc/NEWS
index ade9fca7908..16b5176c24b 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -437,19 +437,20 @@ to 'completion-styles' or 'completion-category-overrides' to use it.
437** The 'completion-common-part' face is now visible by default. 437** The 'completion-common-part' face is now visible by default.
438 438
439+++ 439+++
440** New face attribute ':extend' to control face extension at EOL. 440** New face attribute ':extend' to control face extension at EOL. The
441The new face attribute ':extend' controls whether to use the face for 441new face attribute ':extend' controls whether to use the face for
442displaying the empty space beyond end of line (EOL) till the edge of 442displaying the empty space beyond end of line (EOL) till the edge of
443the window. By default, this attribute is non-nil only for 'region', 443the window. By default, this attribute is non-nil only for a small
444'secondary-selection', 'hl-line' and some faces of Diff and Ediff 444number of faces, notably, 'region'; any other face that crosses end of
445modes; any other face that crosses end of line will not affect the 445line will not affect the display of the empty space at EOL. This is
446display of the empty space at EOL. This is to make Emacs behave more 446to make Emacs behave more like other GUI applications with respect to
447like other GUI applications with respect to displaying faces that 447displaying faces that cross line boundaries.
448cross line boundaries. 448
449 449This attribute behaves specially when theme definitions are applied:
450Themes that redefine faces should add a non-nil ':extend' attribute to 450if the theme doesn't specify an explicit value for a face, the value
451the above-mentioned faces, to keep the behavior of the default face 451from the original face definition is inherited. Consequently, a theme
452definitions. 452generally shouldn't specify this attribute unless it has a good reason
453to do so.
453 454
454** Connection-local variables 455** Connection-local variables
455 456
diff --git a/etc/themes/adwaita-theme.el b/etc/themes/adwaita-theme.el
index 3f29b9f061f..73ef7b6e9ee 100644
--- a/etc/themes/adwaita-theme.el
+++ b/etc/themes/adwaita-theme.el
@@ -39,7 +39,7 @@ default look of the Gnome 3 desktop.")
39 `(header-line ((,class (:foreground "#CCCCCC" :background "black")))) 39 `(header-line ((,class (:foreground "#CCCCCC" :background "black"))))
40 40
41 `(minibuffer-prompt ((,class (:foreground "#0084C8" :bold t)))) 41 `(minibuffer-prompt ((,class (:foreground "#0084C8" :bold t))))
42 `(region ((,class (:foreground unspecified :background "#C2D5E9" :extend t)))) 42 `(region ((,class (:foreground unspecified :background "#C2D5E9"))))
43 `(dired-header ((,class (:bold t :foreground "#0084C8")))) 43 `(dired-header ((,class (:bold t :foreground "#0084C8"))))
44 `(widget-button ((,class (:bold t :foreground "#0084C8")))) 44 `(widget-button ((,class (:bold t :foreground "#0084C8"))))
45 45
@@ -96,7 +96,7 @@ default look of the Gnome 3 desktop.")
96 `(gnus-cite-1 ((,class (:foreground "#00578E")))) 96 `(gnus-cite-1 ((,class (:foreground "#00578E"))))
97 `(gnus-cite-2 ((,class (:foreground "#0084C8")))) 97 `(gnus-cite-2 ((,class (:foreground "#0084C8"))))
98 98
99 `(diff-added ((,class (:bold t :foreground "#4E9A06" :extend t)))) 99 `(diff-added ((,class (:bold t :foreground "#4E9A06"))))
100 `(diff-removed ((,class (:bold t :foreground "#F5666D" :extend t)))))) 100 `(diff-removed ((,class (:bold t :foreground "#F5666D"))))))
101 101
102;;; adwaita-theme.el ends here 102;;; adwaita-theme.el ends here
diff --git a/etc/themes/deeper-blue-theme.el b/etc/themes/deeper-blue-theme.el
index d50a641930a..d04a270ba5e 100644
--- a/etc/themes/deeper-blue-theme.el
+++ b/etc/themes/deeper-blue-theme.el
@@ -43,9 +43,9 @@
43 ;; `(diff-added ((,class (nil)))) 43 ;; `(diff-added ((,class (nil))))
44 ;; `(diff-changed ((,class (nil)))) 44 ;; `(diff-changed ((,class (nil))))
45 `(diff-context ((,class (:foreground "seashell4")))) 45 `(diff-context ((,class (:foreground "seashell4"))))
46 `(diff-file-header ((,class (:background "grey60" :extend t)))) 46 `(diff-file-header ((,class (:background "grey60"))))
47 `(diff-function ((,class (:inherit diff-header)))) 47 `(diff-function ((,class (:inherit diff-header))))
48 `(diff-header ((,class (:background "grey45" :extend t)))) 48 `(diff-header ((,class (:background "grey45"))))
49 `(diff-hunk-header ((,class (:inherit diff-header)))) 49 `(diff-hunk-header ((,class (:inherit diff-header))))
50 `(diff-index ((,class (:inherit diff-file-header)))) 50 `(diff-index ((,class (:inherit diff-file-header))))
51 `(diff-indicator-added ((,class (:foreground "white" :background "darkolivegreen")))) 51 `(diff-indicator-added ((,class (:foreground "white" :background "darkolivegreen"))))
@@ -54,12 +54,12 @@
54 `(diff-refine-change ((,class (:background "skyblue4")))) 54 `(diff-refine-change ((,class (:background "skyblue4"))))
55 ;; `(diff-removed ((,class (nil)))) 55 ;; `(diff-removed ((,class (nil))))
56 `(dired-marked ((,class (:background "dodgerblue3" :foreground "white")))) 56 `(dired-marked ((,class (:background "dodgerblue3" :foreground "white"))))
57 `(ediff-current-diff-A ((,class (:background "green4" :foreground "white" :extend t)))) 57 `(ediff-current-diff-A ((,class (:background "green4" :foreground "white"))))
58 `(ediff-current-diff-B ((,class (:background "darkorange3" :foreground "white" :extend t)))) 58 `(ediff-current-diff-B ((,class (:background "darkorange3" :foreground "white"))))
59 `(ediff-even-diff-B ((,class (:background "Grey50" :foreground "White" :extend t)))) 59 `(ediff-even-diff-B ((,class (:background "Grey50" :foreground "White"))))
60 `(ediff-fine-diff-A ((,class (:background "skyblue4" :foreground "white")))) 60 `(ediff-fine-diff-A ((,class (:background "skyblue4" :foreground "white"))))
61 `(ediff-fine-diff-B ((,class (:background "cyan4" :foreground "white")))) 61 `(ediff-fine-diff-B ((,class (:background "cyan4" :foreground "white"))))
62 `(ediff-odd-diff-A ((,class (:background "Grey50" :foreground "White" :extend t)))) 62 `(ediff-odd-diff-A ((,class (:background "Grey50" :foreground "White"))))
63 `(error ((,class (:foreground "red")))) 63 `(error ((,class (:foreground "red"))))
64 `(flymake-errline ((,class (:background nil :underline "red")))) 64 `(flymake-errline ((,class (:background nil :underline "red"))))
65 `(flymake-warnline ((,class (:background nil :underline "magenta3")))) 65 `(flymake-warnline ((,class (:background nil :underline "magenta3"))))
@@ -102,7 +102,7 @@
102 `(outline-4 ((,class (:foreground "turquoise2")))) 102 `(outline-4 ((,class (:foreground "turquoise2"))))
103 `(outline-5 ((,class (:foreground "aquamarine1")))) 103 `(outline-5 ((,class (:foreground "aquamarine1"))))
104 `(primary-selection ((,class (:background "blue3")))) 104 `(primary-selection ((,class (:background "blue3"))))
105 `(region ((,class (:background "#103050" :extend t)))) 105 `(region ((,class (:background "#103050"))))
106 `(show-paren-match-face ((,class (:background "dodgerblue1" :foreground "white")))) 106 `(show-paren-match-face ((,class (:background "dodgerblue1" :foreground "white"))))
107 `(show-paren-mismatch-face ((,class (:background "red1" :foreground "white")))) 107 `(show-paren-mismatch-face ((,class (:background "red1" :foreground "white"))))
108 `(success ((,class (:foreground "SeaGreen2")))) 108 `(success ((,class (:foreground "SeaGreen2"))))
diff --git a/etc/themes/dichromacy-theme.el b/etc/themes/dichromacy-theme.el
index d585752ea4c..b361fe5c509 100644
--- a/etc/themes/dichromacy-theme.el
+++ b/etc/themes/dichromacy-theme.el
@@ -46,8 +46,8 @@ Ansi-Color faces are included.")
46 ;; Highlighting faces 46 ;; Highlighting faces
47 `(fringe ((,class (:background "#f7f7f7")))) 47 `(fringe ((,class (:background "#f7f7f7"))))
48 `(highlight ((,class (:foreground ,blue :background "#e5e5e5")))) 48 `(highlight ((,class (:foreground ,blue :background "#e5e5e5"))))
49 `(region ((,class (:foreground unspecified :background ,yellow :extend t)))) 49 `(region ((,class (:foreground unspecified :background ,yellow))))
50 `(secondary-selection ((,class (:background "#e5e5e5" :extend t)))) 50 `(secondary-selection ((,class (:background "#e5e5e5"))))
51 `(isearch ((,class (:foreground "white" :background ,vermillion)))) 51 `(isearch ((,class (:foreground "white" :background ,vermillion))))
52 `(lazy-highlight ((,class (:foreground "white" :background ,redpurple)))) 52 `(lazy-highlight ((,class (:foreground "white" :background ,redpurple))))
53 `(trailing-whitespace ((,class (:background ,vermillion)))) 53 `(trailing-whitespace ((,class (:background ,vermillion))))
diff --git a/etc/themes/leuven-theme.el b/etc/themes/leuven-theme.el
index 677d91c5b74..d544f28da79 100644
--- a/etc/themes/leuven-theme.el
+++ b/etc/themes/leuven-theme.el
@@ -48,12 +48,12 @@ Semantic, and Ansi-Color faces are included -- and much more...")
48 (code-block '(:foreground "#000088" :background "#FFFFE0")) 48 (code-block '(:foreground "#000088" :background "#FFFFE0"))
49 (code-inline '(:foreground "#006400" :background "#FDFFF7")) 49 (code-inline '(:foreground "#006400" :background "#FDFFF7"))
50 (column '(:height 1.0 :weight normal :slant normal :underline nil :strike-through nil :foreground "#E6AD4F" :background "#FFF2DE")) 50 (column '(:height 1.0 :weight normal :slant normal :underline nil :strike-through nil :foreground "#E6AD4F" :background "#FFF2DE"))
51 (diff-added '(:foreground "#008000" :background "#DDFFDD" :extend t)) 51 (diff-added '(:foreground "#008000" :background "#DDFFDD"))
52 (diff-changed '(:foreground "#0000FF" :background "#DDDDFF")) 52 (diff-changed '(:foreground "#0000FF" :background "#DDDDFF"))
53 (diff-header '(:foreground "#800000" :background "#FFFFAF" :extend t)) 53 (diff-header '(:foreground "#800000" :background "#FFFFAF"))
54 (diff-hunk-header '(:foreground "#990099" :background "#FFEEFF")) 54 (diff-hunk-header '(:foreground "#990099" :background "#FFEEFF"))
55 (diff-none '(:foreground "gray33")) 55 (diff-none '(:foreground "gray33"))
56 (diff-removed '(:foreground "#A60000" :background "#FFDDDD" :extend t)) 56 (diff-removed '(:foreground "#A60000" :background "#FFDDDD"))
57 (directory '(:weight bold :foreground "blue" :background "#FFFFD2")) 57 (directory '(:weight bold :foreground "blue" :background "#FFFFD2"))
58 (highlight-line '(:background "#FFFFD7")) ; #F5F5F5 58 (highlight-line '(:background "#FFFFD7")) ; #F5F5F5
59 (highlight-line-gnus '(:background "#DAEAFC")) ; defined in `gnus-leuven.el' 59 (highlight-line-gnus '(:background "#DAEAFC")) ; defined in `gnus-leuven.el'
@@ -76,7 +76,7 @@ Semantic, and Ansi-Color faces are included -- and much more...")
76 (ol8 '(:height 1.0 :weight bold :slant italic :foreground "#FD8008")) 76 (ol8 '(:height 1.0 :weight bold :slant italic :foreground "#FD8008"))
77 (paren-matched '(:background "#99CCFF")) 77 (paren-matched '(:background "#99CCFF"))
78 (paren-unmatched '(:underline "red" :foreground nil :background "#FFDCDC")) 78 (paren-unmatched '(:underline "red" :foreground nil :background "#FFDCDC"))
79 (region '(:background "#ABDFFA" :extend t)) 79 (region '(:background "#ABDFFA"))
80 (shadow '(:foreground "#7F7F7F")) 80 (shadow '(:foreground "#7F7F7F"))
81 (string '(:foreground "#008000")) ; or #D0372D 81 (string '(:foreground "#008000")) ; or #D0372D
82 (subject '(:family "Sans Serif" :weight bold :foreground "black")) 82 (subject '(:family "Sans Serif" :weight bold :foreground "black"))
@@ -243,15 +243,15 @@ Semantic, and Ansi-Color faces are included -- and much more...")
243 `(smerge-refined-change ((,class (:background "#AAAAFF")))) 243 `(smerge-refined-change ((,class (:background "#AAAAFF"))))
244 244
245 ;; Ediff 245 ;; Ediff
246 `(ediff-current-diff-A ((,class (:foreground "gray33" :background "#FFDDDD" :extend t)))) 246 `(ediff-current-diff-A ((,class (:foreground "gray33" :background "#FFDDDD"))))
247 `(ediff-current-diff-B ((,class (:foreground "gray33" :background "#DDFFDD" :extend t)))) 247 `(ediff-current-diff-B ((,class (:foreground "gray33" :background "#DDFFDD"))))
248 `(ediff-current-diff-C ((,class (:foreground "black" :background "cyan" :extend t)))) 248 `(ediff-current-diff-C ((,class (:foreground "black" :background "cyan"))))
249 `(ediff-even-diff-A ((,class (:foreground "black" :background "light grey" :extend t)))) 249 `(ediff-even-diff-A ((,class (:foreground "black" :background "light grey"))))
250 `(ediff-even-diff-B ((,class (:foreground "black" :background "light grey" :extend t)))) 250 `(ediff-even-diff-B ((,class (:foreground "black" :background "light grey"))))
251 `(ediff-fine-diff-A ((,class (:foreground "#A60000" :background "#FFAAAA")))) 251 `(ediff-fine-diff-A ((,class (:foreground "#A60000" :background "#FFAAAA"))))
252 `(ediff-fine-diff-B ((,class (:foreground "#008000" :background "#55FF55")))) 252 `(ediff-fine-diff-B ((,class (:foreground "#008000" :background "#55FF55"))))
253 `(ediff-odd-diff-A ((,class (:foreground "black" :background "light grey" :extend t)))) 253 `(ediff-odd-diff-A ((,class (:foreground "black" :background "light grey"))))
254 `(ediff-odd-diff-B ((,class (:foreground "black" :background "light grey" :extend t)))) 254 `(ediff-odd-diff-B ((,class (:foreground "black" :background "light grey"))))
255 255
256 ;; Flyspell 256 ;; Flyspell
257;; (when (version< emacs-version "24.XXX") 257;; (when (version< emacs-version "24.XXX")
@@ -462,7 +462,7 @@ Semantic, and Ansi-Color faces are included -- and much more...")
462 `(info-xref-visited ((,class (:underline t :foreground "magenta4")))) ; previously visited cross-references 462 `(info-xref-visited ((,class (:underline t :foreground "magenta4")))) ; previously visited cross-references
463 `(light-symbol-face ((,class (:background "#FFFFA0")))) 463 `(light-symbol-face ((,class (:background "#FFFFA0"))))
464 `(linum ((,class (:inherit (default shadow) :foreground "#9A9A9A" :background "#EDEDED")))) 464 `(linum ((,class (:inherit (default shadow) :foreground "#9A9A9A" :background "#EDEDED"))))
465 `(log-view-file ((,class (:foreground "#0000CC" :background "#EAF2F5" :extend t)))) 465 `(log-view-file ((,class (:foreground "#0000CC" :background "#EAF2F5"))))
466 `(lui-button-face ((,class ,link))) 466 `(lui-button-face ((,class ,link)))
467 `(lui-highlight-face ((,class (:box '(:line-width 1 :color "#CC0000") :foreground "#CC0000" :background "#FFFF88")))) ; my nickname 467 `(lui-highlight-face ((,class (:box '(:line-width 1 :color "#CC0000") :foreground "#CC0000" :background "#FFFF88")))) ; my nickname
468 `(lui-time-stamp-face ((,class (:foreground "purple")))) 468 `(lui-time-stamp-face ((,class (:foreground "purple"))))
diff --git a/etc/themes/light-blue-theme.el b/etc/themes/light-blue-theme.el
index e6d4a3a4b57..3060dcf09c7 100644
--- a/etc/themes/light-blue-theme.el
+++ b/etc/themes/light-blue-theme.el
@@ -36,8 +36,8 @@
36 `(fringe ((,class (:background "gray85")))) 36 `(fringe ((,class (:background "gray85"))))
37 ;; Highlighting faces 37 ;; Highlighting faces
38 `(highlight ((,class (:background "cyan")))) 38 `(highlight ((,class (:background "cyan"))))
39 `(region ((,class (:background "MediumAquamarine" :extend t)))) 39 `(region ((,class (:background "MediumAquamarine"))))
40 `(secondary-selection ((,class (:background "white" :foreground "black" :extend t)))) 40 `(secondary-selection ((,class (:background "white" :foreground "black"))))
41 `(isearch ((,class (:background "green" :foreground "Black")))) 41 `(isearch ((,class (:background "green" :foreground "Black"))))
42 `(lazy-highlight ((,class (:background "dark turquoise")))) 42 `(lazy-highlight ((,class (:background "dark turquoise"))))
43 `(query-replace ((,class (:inherit isearch :background "white" :foreground "black")))) 43 `(query-replace ((,class (:inherit isearch :background "white" :foreground "black"))))
diff --git a/etc/themes/manoj-dark-theme.el b/etc/themes/manoj-dark-theme.el
index 1313caa3c6e..20e04cb7543 100644
--- a/etc/themes/manoj-dark-theme.el
+++ b/etc/themes/manoj-dark-theme.el
@@ -435,11 +435,11 @@ jarring angry fruit salad look to reduce eye fatigue.")
435 '(diary-button ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style released-button))))) 435 '(diary-button ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style released-button)))))
436 '(diary-face ((t (:foreground "IndianRed")))) 436 '(diary-face ((t (:foreground "IndianRed"))))
437 '(diary-time ((t (:foreground "LightGoldenrod")))) 437 '(diary-time ((t (:foreground "LightGoldenrod"))))
438 '(diff-added ((t (:foreground "Green" :extend t)))) 438 '(diff-added ((t (:foreground "Green"))))
439 '(diff-added-face ((t (:foreground "Green")))) 439 '(diff-added-face ((t (:foreground "Green"))))
440 '(diff-changed-face ((t (:foreground "Khaki")))) 440 '(diff-changed-face ((t (:foreground "Khaki"))))
441 '(diff-context-face ((t (:foreground "grey70")))) 441 '(diff-context-face ((t (:foreground "grey70"))))
442 '(diff-file-header ((t (:bold t :background "grey20" :foreground "ivory1" :weight bold :extend t)))) 442 '(diff-file-header ((t (:bold t :background "grey20" :foreground "ivory1" :weight bold))))
443 '(diff-file-header-face ((t (:bold t :background "grey20" :foreground "ivory1" :weight bold)))) 443 '(diff-file-header-face ((t (:bold t :background "grey20" :foreground "ivory1" :weight bold))))
444 '(diff-function-face ((t (:foreground "SpringGreen1")))) 444 '(diff-function-face ((t (:foreground "SpringGreen1"))))
445 '(diff-header-face ((t (:background "SlateBlue4")))) 445 '(diff-header-face ((t (:background "SlateBlue4"))))
@@ -448,7 +448,7 @@ jarring angry fruit salad look to reduce eye fatigue.")
448 '(diff-index-face ((t (:bold t :weight bold :background "SteelBlue4" :foreground "linen" )))) 448 '(diff-index-face ((t (:bold t :weight bold :background "SteelBlue4" :foreground "linen" ))))
449 '(diff-nonexistent ((t (:bold t :weight bold :background "Black" :foreground "Wheat1")))) 449 '(diff-nonexistent ((t (:bold t :weight bold :background "Black" :foreground "Wheat1"))))
450 '(diff-nonexistent-face ((t (:bold t :weight bold :background "Black" :foreground "Wheat1")))) 450 '(diff-nonexistent-face ((t (:bold t :weight bold :background "Black" :foreground "Wheat1"))))
451 '(diff-removed ((t (:foreground "salmon1" :extend t)))) 451 '(diff-removed ((t (:foreground "salmon1"))))
452 '(diff-removed-face ((t (:foreground "salmon1")))) 452 '(diff-removed-face ((t (:foreground "salmon1"))))
453 '(diff-refine-change-face ((t (:background "MidnightBlue")))) 453 '(diff-refine-change-face ((t (:background "MidnightBlue"))))
454 '(diff-refine-change ((t (:background "MidnightBlue")))) 454 '(diff-refine-change ((t (:background "MidnightBlue"))))
@@ -511,7 +511,7 @@ jarring angry fruit salad look to reduce eye fatigue.")
511 '(header-line ((t (:box (:line-width -1 :color "grey20" :style released-button) :background "grey20" :foreground "grey90" :height 0.9)))) 511 '(header-line ((t (:box (:line-width -1 :color "grey20" :style released-button) :background "grey20" :foreground "grey90" :height 0.9))))
512 '(help-argument-name ((t (:italic t :slant italic)))) 512 '(help-argument-name ((t (:italic t :slant italic))))
513 '(highlight ((t (:background "gray10" :foreground "Old Lace")))) 513 '(highlight ((t (:background "gray10" :foreground "Old Lace"))))
514 '(hl-line ((t (:background "grey10" :foreground "Old Lace" :extend t)))) 514 '(hl-line ((t (:background "grey10" :foreground "Old Lace"))))
515 '(gnus-mouse-face ((t (:background "darkseagreen2" :foreground "blue")))) 515 '(gnus-mouse-face ((t (:background "darkseagreen2" :foreground "blue"))))
516 '(erc-button-mouse-face ((t (:background "darkseagreen2" :foreground "blue")))) 516 '(erc-button-mouse-face ((t (:background "darkseagreen2" :foreground "blue"))))
517 '(align-highlight-change-face ((t (:background "darkseagreen2" :foreground "blue")))) 517 '(align-highlight-change-face ((t (:background "darkseagreen2" :foreground "blue"))))
@@ -601,7 +601,7 @@ jarring angry fruit salad look to reduce eye fatigue.")
601 '(paren-mismatch-face ((t (:bold t :background "white" :foreground "red")))) 601 '(paren-mismatch-face ((t (:bold t :background "white" :foreground "red"))))
602 '(paren-no-match-face ((t (:bold t :background "white" :foreground "red")))) 602 '(paren-no-match-face ((t (:bold t :background "white" :foreground "red"))))
603 '(query-replace ((t (:foreground "brown4" :background "palevioletred2")))) 603 '(query-replace ((t (:foreground "brown4" :background "palevioletred2"))))
604 '(region ((t (:background "blue3" :extend t)))) 604 '(region ((t (:background "blue3"))))
605 '(realgud-overlay-arrow1 ((t (:foreground "medium sea green")))) 605 '(realgud-overlay-arrow1 ((t (:foreground "medium sea green"))))
606 '(realgud-overlay-arrow2 ((t (:foreground "white")))) 606 '(realgud-overlay-arrow2 ((t (:foreground "white"))))
607 '(realgud-overlay-arrow3 ((t (:foreground "indian red")))) 607 '(realgud-overlay-arrow3 ((t (:foreground "indian red"))))
@@ -613,7 +613,7 @@ jarring angry fruit salad look to reduce eye fatigue.")
613 '(realgud-line-number ((t (:foreground "yellow")))) 613 '(realgud-line-number ((t (:foreground "yellow"))))
614 '(realgud-backtrace-number ((t (:foreground "yellow" :weight bold)))) 614 '(realgud-backtrace-number ((t (:foreground "yellow" :weight bold))))
615 '(scroll-bar ((t (:background "grey75" :foreground "WhiteSmoke")))) 615 '(scroll-bar ((t (:background "grey75" :foreground "WhiteSmoke"))))
616 '(secondary-selection ((t (:background "SkyBlue4" :extend t)))) 616 '(secondary-selection ((t (:background "SkyBlue4"))))
617 '(semantic-dirty-token-face ((t (:background "lightyellow")))) 617 '(semantic-dirty-token-face ((t (:background "lightyellow"))))
618 '(semantic-highlight-edits-face ((t (:background "gray20")))) 618 '(semantic-highlight-edits-face ((t (:background "gray20"))))
619 '(semantic-unmatched-syntax-face ((t (:underline "red")))) 619 '(semantic-unmatched-syntax-face ((t (:underline "red"))))
@@ -631,10 +631,10 @@ jarring angry fruit salad look to reduce eye fatigue.")
631 '(show-paren-match ((t (:background "steelblue3")))) 631 '(show-paren-match ((t (:background "steelblue3"))))
632 '(show-paren-match-face ((t (:background "steelblue3")))) 632 '(show-paren-match-face ((t (:background "steelblue3"))))
633 '(show-paren-mismatch ((t (:background "purple" :foreground "white")))) 633 '(show-paren-mismatch ((t (:background "purple" :foreground "white"))))
634 '(smerge-base ((t (:foreground "orange" :extend t)))) 634 '(smerge-base ((t (:foreground "orange"))))
635 '(smerge-markers ((t (:background "grey30" :extend t)))) 635 '(smerge-markers ((t (:background "grey30"))))
636 '(smerge-mine ((t (:foreground "cyan" :extend t)))) 636 '(smerge-mine ((t (:foreground "cyan"))))
637 '(smerge-other ((t (:foreground "lightgreen" :extend t)))) 637 '(smerge-other ((t (:foreground "lightgreen"))))
638 '(smerge-refined-change ((t (:background "blue4")))) 638 '(smerge-refined-change ((t (:background "blue4"))))
639 '(speedbar-button-face ((t (:foreground "green3")))) 639 '(speedbar-button-face ((t (:foreground "green3"))))
640 '(speedbar-directory-face ((t (:foreground "light blue")))) 640 '(speedbar-directory-face ((t (:foreground "light blue"))))
diff --git a/etc/themes/misterioso-theme.el b/etc/themes/misterioso-theme.el
index c7e1dc983fb..727270c27f5 100644
--- a/etc/themes/misterioso-theme.el
+++ b/etc/themes/misterioso-theme.el
@@ -37,7 +37,7 @@
37 ;; Highlighting faces 37 ;; Highlighting faces
38 `(fringe ((,class (:background "#2e3748")))) 38 `(fringe ((,class (:background "#2e3748"))))
39 `(highlight ((,class (:background "#338f86" :foreground "#e1e1e0")))) 39 `(highlight ((,class (:background "#338f86" :foreground "#e1e1e0"))))
40 `(region ((,class (:background "#2d4948" :foreground "#e1e1e0" :extend t)))) 40 `(region ((,class (:background "#2d4948" :foreground "#e1e1e0"))))
41 `(isearch ((,class (:background "#fcffad" :foreground "#000000")))) 41 `(isearch ((,class (:background "#fcffad" :foreground "#000000"))))
42 `(lazy-highlight ((,class (:background "#338f86")))) 42 `(lazy-highlight ((,class (:background "#338f86"))))
43 `(trailing-whitespace ((,class (:background "#ff4242")))) 43 `(trailing-whitespace ((,class (:background "#ff4242"))))
diff --git a/etc/themes/tango-dark-theme.el b/etc/themes/tango-dark-theme.el
index d2fdff8e091..91256208a3f 100644
--- a/etc/themes/tango-dark-theme.el
+++ b/etc/themes/tango-dark-theme.el
@@ -61,8 +61,8 @@ Semantic, and Ansi-Color faces are included.")
61 ;; Highlighting faces 61 ;; Highlighting faces
62 `(fringe ((,class (:background ,alum-7)))) 62 `(fringe ((,class (:background ,alum-7))))
63 `(highlight ((,class (:foreground ,alum-6 :background "#c0c000")))) 63 `(highlight ((,class (:foreground ,alum-6 :background "#c0c000"))))
64 `(region ((,class (:background ,alum-5 :extend t)))) 64 `(region ((,class (:background ,alum-5))))
65 `(secondary-selection ((,class (:background ,blue-3 :extend t)))) 65 `(secondary-selection ((,class (:background ,blue-3))))
66 `(isearch ((,class (:foreground ,alum-1 :background ,orange-3)))) 66 `(isearch ((,class (:foreground ,alum-1 :background ,orange-3))))
67 `(lazy-highlight ((,class (:background ,choc-3)))) 67 `(lazy-highlight ((,class (:background ,choc-3))))
68 `(trailing-whitespace ((,class (:background ,red-3)))) 68 `(trailing-whitespace ((,class (:background ,red-3))))
@@ -130,14 +130,14 @@ Semantic, and Ansi-Color faces are included.")
130 ;; SMerge faces 130 ;; SMerge faces
131 `(smerge-refined-change ((,class (:background ,blue-3)))) 131 `(smerge-refined-change ((,class (:background ,blue-3))))
132 ;; Ediff faces 132 ;; Ediff faces
133 `(ediff-current-diff-A ((,class (:background ,alum-5 :extend t)))) 133 `(ediff-current-diff-A ((,class (:background ,alum-5))))
134 `(ediff-fine-diff-A ((,class (:background ,blue-3)))) 134 `(ediff-fine-diff-A ((,class (:background ,blue-3))))
135 `(ediff-even-diff-A ((,class (:background ,alum-5.5 :extend t)))) 135 `(ediff-even-diff-A ((,class (:background ,alum-5.5))))
136 `(ediff-odd-diff-A ((,class (:background ,alum-5.5 :extend t)))) 136 `(ediff-odd-diff-A ((,class (:background ,alum-5.5))))
137 `(ediff-current-diff-B ((,class (:background ,alum-5 :extend t)))) 137 `(ediff-current-diff-B ((,class (:background ,alum-5))))
138 `(ediff-fine-diff-B ((,class (:background ,choc-3)))) 138 `(ediff-fine-diff-B ((,class (:background ,choc-3))))
139 `(ediff-even-diff-B ((,class (:background ,alum-5.5 :extend t)))) 139 `(ediff-even-diff-B ((,class (:background ,alum-5.5))))
140 `(ediff-odd-diff-B ((,class (:background ,alum-5.5 :extend t)))) 140 `(ediff-odd-diff-B ((,class (:background ,alum-5.5))))
141 ;; Flyspell faces 141 ;; Flyspell faces
142 `(flyspell-duplicate ((,class (:underline ,orange-1)))) 142 `(flyspell-duplicate ((,class (:underline ,orange-1))))
143 `(flyspell-incorrect ((,class (:underline ,red-1)))) 143 `(flyspell-incorrect ((,class (:underline ,red-1))))
diff --git a/etc/themes/tango-theme.el b/etc/themes/tango-theme.el
index c832192968a..12d4db3fe7c 100644
--- a/etc/themes/tango-theme.el
+++ b/etc/themes/tango-theme.el
@@ -53,8 +53,8 @@ Semantic, and Ansi-Color faces are included.")
53 ;; Highlighting faces 53 ;; Highlighting faces
54 `(fringe ((,class (:background ,alum-2)))) 54 `(fringe ((,class (:background ,alum-2))))
55 `(highlight ((,class (:background ,alum-3)))) 55 `(highlight ((,class (:background ,alum-3))))
56 `(region ((,class (:background ,alum-3 :extend t)))) 56 `(region ((,class (:background ,alum-3))))
57 `(secondary-selection ((,class (:background ,blue-0 :extend t)))) 57 `(secondary-selection ((,class (:background ,blue-0))))
58 `(isearch ((,class (:foreground "#ffffff" :background ,orange-3)))) 58 `(isearch ((,class (:foreground "#ffffff" :background ,orange-3))))
59 `(lazy-highlight ((,class (:background ,choc-1)))) 59 `(lazy-highlight ((,class (:background ,choc-1))))
60 `(trailing-whitespace ((,class (:background ,red-1)))) 60 `(trailing-whitespace ((,class (:background ,red-1))))
@@ -117,9 +117,9 @@ Semantic, and Ansi-Color faces are included.")
117 ;; SMerge 117 ;; SMerge
118 `(smerge-refined-change ((,class (:background ,plum-1)))) 118 `(smerge-refined-change ((,class (:background ,plum-1))))
119 ;; Ediff 119 ;; Ediff
120 `(ediff-current-diff-A ((,class (:background ,blue-1 :extend t)))) 120 `(ediff-current-diff-A ((,class (:background ,blue-1))))
121 `(ediff-fine-diff-A ((,class (:background ,plum-1)))) 121 `(ediff-fine-diff-A ((,class (:background ,plum-1))))
122 `(ediff-current-diff-B ((,class (:background ,butter-1 :extend t)))) 122 `(ediff-current-diff-B ((,class (:background ,butter-1))))
123 `(ediff-fine-diff-B ((,class (:background ,orange-1)))) 123 `(ediff-fine-diff-B ((,class (:background ,orange-1))))
124 ;; Flyspell 124 ;; Flyspell
125 `(flyspell-duplicate ((,class (:underline ,orange-1)))) 125 `(flyspell-duplicate ((,class (:underline ,orange-1))))
diff --git a/etc/themes/tsdh-dark-theme.el b/etc/themes/tsdh-dark-theme.el
index bd0564a21dc..5482ced6b29 100644
--- a/etc/themes/tsdh-dark-theme.el
+++ b/etc/themes/tsdh-dark-theme.el
@@ -26,12 +26,12 @@
26 'tsdh-dark 26 'tsdh-dark
27 '(aw-leading-char-face ((t (:background "gray30" :foreground "red" :weight bold)))) 27 '(aw-leading-char-face ((t (:background "gray30" :foreground "red" :weight bold))))
28 '(default ((t (:background "gray20" :foreground "white smoke")))) 28 '(default ((t (:background "gray20" :foreground "white smoke"))))
29 '(diff-added ((t (:inherit diff-changed :background "dark green" :extend t))) t) 29 '(diff-added ((t (:inherit diff-changed :background "dark green"))) t)
30 '(diff-changed ((t (:background "midnight blue"))) t) 30 '(diff-changed ((t (:background "midnight blue"))) t)
31 '(diff-indicator-added ((t (:inherit diff-indicator-changed))) t) 31 '(diff-indicator-added ((t (:inherit diff-indicator-changed))) t)
32 '(diff-indicator-changed ((t (:weight bold))) t) 32 '(diff-indicator-changed ((t (:weight bold))) t)
33 '(diff-indicator-removed ((t (:inherit diff-indicator-changed))) t) 33 '(diff-indicator-removed ((t (:inherit diff-indicator-changed))) t)
34 '(diff-removed ((t (:inherit diff-changed :background "dark red" :extend t))) t) 34 '(diff-removed ((t (:inherit diff-changed :background "dark red"))) t)
35 '(dired-directory ((t (:foreground "DodgerBlue" :weight bold)))) 35 '(dired-directory ((t (:foreground "DodgerBlue" :weight bold))))
36 '(error ((t (:foreground "deep pink" :weight bold)))) 36 '(error ((t (:foreground "deep pink" :weight bold))))
37 '(eshell-prompt ((t (:inherit font-lock-function-name-face :weight bold)))) 37 '(eshell-prompt ((t (:inherit font-lock-function-name-face :weight bold))))
@@ -69,7 +69,7 @@
69 '(header-line ((t (:inverse-video t :box (:line-width -1 :color "red" :style released-button))))) 69 '(header-line ((t (:inverse-video t :box (:line-width -1 :color "red" :style released-button)))))
70 '(helm-header ((t (:background "DeepSkyBlue4" :weight bold)))) 70 '(helm-header ((t (:background "DeepSkyBlue4" :weight bold))))
71 '(highlight ((t (:background "sea green")))) 71 '(highlight ((t (:background "sea green"))))
72 '(hl-line ((t (:background "grey25" :extend t)))) 72 '(hl-line ((t (:background "grey25"))))
73 '(hl-paren-face ((t (:weight bold))) t) 73 '(hl-paren-face ((t (:weight bold))) t)
74 '(icomplete-first-match ((t (:foreground "deep sky blue" :weight bold)))) 74 '(icomplete-first-match ((t (:foreground "deep sky blue" :weight bold))))
75 '(ido-first-match ((t (:foreground "turquoise" :weight bold)))) 75 '(ido-first-match ((t (:foreground "turquoise" :weight bold))))
@@ -132,9 +132,9 @@
132 '(rcirc-other-nick ((t (:foreground "dodger blue"))) t) 132 '(rcirc-other-nick ((t (:foreground "dodger blue"))) t)
133 '(rcirc-track-keyword ((t (:foreground "DodgerBlue" :weight bold))) t) 133 '(rcirc-track-keyword ((t (:foreground "DodgerBlue" :weight bold))) t)
134 '(rcirc-track-nick ((t (:background "yellow" :foreground "DodgerBlue" :weight bold))) t) 134 '(rcirc-track-nick ((t (:background "yellow" :foreground "DodgerBlue" :weight bold))) t)
135 '(region ((t (:background "SeaGreen4" :extend t)))) 135 '(region ((t (:background "SeaGreen4"))))
136 '(scroll-bar ((t (:background "gray20" :foreground "dark turquoise")))) 136 '(scroll-bar ((t (:background "gray20" :foreground "dark turquoise"))))
137 '(secondary-selection ((t (:background "#333366" :foreground "#f6f3e8" :extend t)))) 137 '(secondary-selection ((t (:background "#333366" :foreground "#f6f3e8"))))
138 '(show-paren-match ((t (:background "DeepSkyBlue4")))) 138 '(show-paren-match ((t (:background "DeepSkyBlue4"))))
139 '(show-paren-mismatch ((t (:background "dark magenta")))) 139 '(show-paren-mismatch ((t (:background "dark magenta"))))
140 '(swiper-match-face-1 ((t (:background "gray35")))) 140 '(swiper-match-face-1 ((t (:background "gray35"))))
diff --git a/etc/themes/tsdh-light-theme.el b/etc/themes/tsdh-light-theme.el
index efc49c1a216..8e6a79f8e36 100644
--- a/etc/themes/tsdh-light-theme.el
+++ b/etc/themes/tsdh-light-theme.el
@@ -29,12 +29,12 @@ Used and created by Tassilo Horn.")
29 '(Info-quoted ((t (:underline "gray40" :weight bold)))) 29 '(Info-quoted ((t (:underline "gray40" :weight bold))))
30 '(aw-leading-char-face ((t (:background "red" :foreground "white" :weight bold)))) 30 '(aw-leading-char-face ((t (:background "red" :foreground "white" :weight bold))))
31 '(default ((t (:background "white" :foreground "black")))) 31 '(default ((t (:background "white" :foreground "black"))))
32 '(diff-added ((t (:inherit diff-changed :background "light green" :extend t)))) 32 '(diff-added ((t (:inherit diff-changed :background "light green"))))
33 '(diff-changed ((t (:background "light steel blue")))) 33 '(diff-changed ((t (:background "light steel blue"))))
34 '(diff-indicator-added ((t (:inherit diff-indicator-changed)))) 34 '(diff-indicator-added ((t (:inherit diff-indicator-changed))))
35 '(diff-indicator-changed ((t (:weight bold)))) 35 '(diff-indicator-changed ((t (:weight bold))))
36 '(diff-indicator-removed ((t (:inherit diff-indicator-changed)))) 36 '(diff-indicator-removed ((t (:inherit diff-indicator-changed))))
37 '(diff-removed ((t (:inherit diff-changed :background "sandy brown" :extend t)))) 37 '(diff-removed ((t (:inherit diff-changed :background "sandy brown"))))
38 '(dired-directory ((t (:inherit font-lock-function-name-face :weight bold)))) 38 '(dired-directory ((t (:inherit font-lock-function-name-face :weight bold))))
39 '(font-lock-builtin-face ((t (:foreground "#e44649")))) 39 '(font-lock-builtin-face ((t (:foreground "#e44649"))))
40 '(font-lock-comment-delimiter-face ((t (:inherit font-lock-comment-face :weight bold)))) 40 '(font-lock-comment-delimiter-face ((t (:inherit font-lock-comment-face :weight bold))))
@@ -62,7 +62,7 @@ Used and created by Tassilo Horn.")
62 '(gnus-group-news-2-empty ((t (:foreground "tomato3")))) 62 '(gnus-group-news-2-empty ((t (:foreground "tomato3"))))
63 '(gnus-group-news-3 ((t (:inherit gnus-group-news-3-empty :weight bold)))) 63 '(gnus-group-news-3 ((t (:inherit gnus-group-news-3-empty :weight bold))))
64 '(gnus-group-news-3-empty ((t (:foreground "tomato2")))) '(header-line ((t (:inherit mode-line :inverse-video t)))) 64 '(gnus-group-news-3-empty ((t (:foreground "tomato2")))) '(header-line ((t (:inherit mode-line :inverse-video t))))
65 '(hl-line ((t (:background "#f0f0f1" :extend t)))) 65 '(hl-line ((t (:background "#f0f0f1"))))
66 '(hl-paren-face ((t (:weight bold))) t) 66 '(hl-paren-face ((t (:weight bold))) t)
67 '(minibuffer-prompt ((t (:foreground "#0184bc" :box (:line-width -1 :style released-button) :weight bold)))) 67 '(minibuffer-prompt ((t (:foreground "#0184bc" :box (:line-width -1 :style released-button) :weight bold))))
68 '(mode-line ((t (:background "#f0f0f1" :box (:line-width 1 :color "#383a42"))))) 68 '(mode-line ((t (:background "#f0f0f1" :box (:line-width 1 :color "#383a42")))))
diff --git a/etc/themes/wheatgrass-theme.el b/etc/themes/wheatgrass-theme.el
index 2628b68ff06..640343a33bc 100644
--- a/etc/themes/wheatgrass-theme.el
+++ b/etc/themes/wheatgrass-theme.el
@@ -40,8 +40,8 @@ of green, brown, and blue.")
40 `(compilation-info ((,class (:foreground "ForestGreen")))) 40 `(compilation-info ((,class (:foreground "ForestGreen"))))
41 ;; Highlighting faces 41 ;; Highlighting faces
42 `(highlight ((,class (:foreground "white" :background "dark green")))) 42 `(highlight ((,class (:foreground "white" :background "dark green"))))
43 `(region ((,class (:foreground "white" :background "dark green" :extend t)))) 43 `(region ((,class (:foreground "white" :background "dark green"))))
44 `(secondary-selection ((,class (:background "dark slate gray" :extend t)))) 44 `(secondary-selection ((,class (:background "dark slate gray"))))
45 `(isearch ((,class (:foreground "white" :background "dark goldenrod")))) 45 `(isearch ((,class (:foreground "white" :background "dark goldenrod"))))
46 `(lazy-highlight ((,class (:background "gray25")))) 46 `(lazy-highlight ((,class (:background "gray25"))))
47 ;; Font lock faces 47 ;; Font lock faces
diff --git a/etc/themes/wombat-theme.el b/etc/themes/wombat-theme.el
index 0a5e87ac585..c56700ffd9a 100644
--- a/etc/themes/wombat-theme.el
+++ b/etc/themes/wombat-theme.el
@@ -36,8 +36,8 @@ are included.")
36 `(fringe ((,class (:background "#303030")))) 36 `(fringe ((,class (:background "#303030"))))
37 `(highlight ((,class (:background "#454545" :foreground "#ffffff" 37 `(highlight ((,class (:background "#454545" :foreground "#ffffff"
38 :underline t)))) 38 :underline t))))
39 `(region ((,class (:background "#444444" :foreground "#f6f3e8" :extend t)))) 39 `(region ((,class (:background "#444444" :foreground "#f6f3e8"))))
40 `(secondary-selection ((,class (:background "#333366" :foreground "#f6f3e8" :extend t)))) 40 `(secondary-selection ((,class (:background "#333366" :foreground "#f6f3e8"))))
41 `(isearch ((,class (:background "#343434" :foreground "#857b6f")))) 41 `(isearch ((,class (:background "#343434" :foreground "#857b6f"))))
42 `(lazy-highlight ((,class (:background "#384048" :foreground "#a0a8b0")))) 42 `(lazy-highlight ((,class (:background "#384048" :foreground "#a0a8b0"))))
43 ;; Mode line faces 43 ;; Mode line faces
diff --git a/lisp/faces.el b/lisp/faces.el
index dc5bcca7609..0f31628f5f9 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -1669,7 +1669,7 @@ The following sources are applied in this order:
1669 ;; `theme-face' records. 1669 ;; `theme-face' records.
1670 (let ((theme-faces (get face 'theme-face)) 1670 (let ((theme-faces (get face 'theme-face))
1671 (no-match-found 0) 1671 (no-match-found 0)
1672 face-attrs theme-face-applied) 1672 default-attrs face-attrs theme-face-applied)
1673 (if theme-faces 1673 (if theme-faces
1674 (dolist (elt (reverse theme-faces)) 1674 (dolist (elt (reverse theme-faces))
1675 (setq face-attrs (face-spec-choose (cadr elt) frame no-match-found)) 1675 (setq face-attrs (face-spec-choose (cadr elt) frame no-match-found))
@@ -1677,13 +1677,20 @@ The following sources are applied in this order:
1677 (face-spec-set-2 face frame face-attrs) 1677 (face-spec-set-2 face frame face-attrs)
1678 (setq theme-face-applied t)))) 1678 (setq theme-face-applied t))))
1679 ;; If there was a spec applicable to FRAME, that overrides the 1679 ;; If there was a spec applicable to FRAME, that overrides the
1680 ;; defface spec entirely (rather than inheriting from it). If 1680 ;; defface spec entirely rather than inheriting from it, with the
1681 ;; there was no spec applicable to FRAME, apply the defface spec 1681 ;; exception of the :extend attribute (which is inherited).
1682 ;; as well as any applicable X resources. 1682 ;;
1683 ;; If there was no spec applicable to FRAME, apply the defface
1684 ;; spec as well as any applicable X resources.
1685 (setq default-attrs (face-spec-choose (face-default-spec face) frame))
1683 (unless theme-face-applied 1686 (unless theme-face-applied
1684 (setq face-attrs (face-spec-choose (face-default-spec face) frame)) 1687 (face-spec-set-2 face frame default-attrs)
1685 (face-spec-set-2 face frame face-attrs)
1686 (make-face-x-resource-internal face frame)) 1688 (make-face-x-resource-internal face frame))
1689 (when (and theme-face-applied
1690 (eq 'unspecified (face-attribute face :extend frame t)))
1691 (let ((tail (plist-member default-attrs :extend)))
1692 (and tail (face-spec-set-2 face frame
1693 (list :extend (cadr tail))))))
1687 (setq face-attrs (face-spec-choose (get face 'face-override-spec) frame)) 1694 (setq face-attrs (face-spec-choose (get face 'face-override-spec) frame))
1688 (face-spec-set-2 face frame face-attrs))) 1695 (face-spec-set-2 face frame face-attrs)))
1689 1696
diff --git a/test/data/themes/faces-test-dark-theme.el b/test/data/themes/faces-test-dark-theme.el
new file mode 100644
index 00000000000..2c114069f9c
--- /dev/null
+++ b/test/data/themes/faces-test-dark-theme.el
@@ -0,0 +1,33 @@
1;;; faces-test-dark-theme.el --- A dark theme from tests ;;; -*- lexical-binding: t; -*-
2
3;; Copyright (C) 2019 Free Software Foundation, Inc.
4
5;; This program is free software; you can redistribute it and/or modify
6;; it under the terms of the GNU General Public License as published by
7;; the Free Software Foundation, either version 3 of the License, or
8;; (at your option) any later version.
9
10;; This program is distributed in the hope that it will be useful,
11;; but WITHOUT ANY WARRANTY; without even the implied warranty of
12;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13;; GNU General Public License for more details.
14
15;; You should have received a copy of the GNU General Public License
16;; along with this program. If not, see <https://www.gnu.org/licenses/>.
17
18;;; Commentary:
19
20;;; Code:
21
22(deftheme faces-test-dark
23 "")
24
25(custom-theme-set-faces
26 'faces-test-dark
27 '(diff-added ((t (:foreground "Green" :extend t))))
28 '(diff-changed-face ((t (:foreground "Khaki"))))
29 '(diff-file-header-face ((t (:background "grey20" :foreground "ivory1")))))
30
31(provide-theme 'faces-test-dark)
32
33;;; faces-test-dark-theme.el ends here
diff --git a/test/data/themes/faces-test-light-theme.el b/test/data/themes/faces-test-light-theme.el
new file mode 100644
index 00000000000..fc22d47cf8d
--- /dev/null
+++ b/test/data/themes/faces-test-light-theme.el
@@ -0,0 +1,32 @@
1;;; faces-test-light-theme.el --- A dark theme from tests ;;; -*- lexical-binding: t; -*-
2
3;; Copyright (C) 2019 Free Software Foundation, Inc.
4
5;; This program is free software; you can redistribute it and/or modify
6;; it under the terms of the GNU General Public License as published by
7;; the Free Software Foundation, either version 3 of the License, or
8;; (at your option) any later version.
9
10;; This program is distributed in the hope that it will be useful,
11;; but WITHOUT ANY WARRANTY; without even the implied warranty of
12;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13;; GNU General Public License for more details.
14
15;; You should have received a copy of the GNU General Public License
16;; along with this program. If not, see <https://www.gnu.org/licenses/>.
17
18;;; Commentary:
19
20;;; Code:
21
22(deftheme faces-test-light
23 "")
24
25(custom-theme-set-faces
26 'faces-test-light
27 '(diff-added ((t (:inherit diff-changed :background "light green" :extend t))))
28 '(diff-changed ((t (:background "light steel blue")))))
29
30(provide-theme 'faces-test-light)
31
32;;; faces-test-light-theme.el ends here
diff --git a/test/lisp/faces-tests.el b/test/lisp/faces-tests.el
index 7cba4b26ebe..eb8c533b8e6 100644
--- a/test/lisp/faces-tests.el
+++ b/test/lisp/faces-tests.el
@@ -23,6 +23,11 @@
23(require 'ert) 23(require 'ert)
24(require 'faces) 24(require 'faces)
25 25
26(defvar faces--test-data-dir
27 (expand-file-name "../data/"
28 (file-name-directory (or load-file-name
29 buffer-file-name))))
30
26(defgroup faces--test nil "" 31(defgroup faces--test nil ""
27 :group 'faces--test) 32 :group 'faces--test)
28 33
@@ -117,8 +122,9 @@
117 (should (equal (face-attribute 'diff-changed-face :extend) t)) 122 (should (equal (face-attribute 'diff-changed-face :extend) t))
118 (should (equal (face-attribute 'diff-added :extend) 'unspecified)) 123 (should (equal (face-attribute 'diff-added :extend) 'unspecified))
119 (should (equal (face-attribute 'diff-file-header-face :extend) nil)) 124 (should (equal (face-attribute 'diff-file-header-face :extend) nil))
120 (load-theme 'manoj-dark t t) 125 (add-to-list 'custom-theme-load-path (concat faces--test-data-dir "themes"))
121 (load-theme 'tsdh-light t t) 126 (load-theme 'faces-test-dark t t)
127 (load-theme 'faces-test-light t t)
122 (should (equal (face-attribute 'faces--test-inherit-extend :extend) 128 (should (equal (face-attribute 'faces--test-inherit-extend :extend)
123 'unspecified)) 129 'unspecified))
124 (should (equal (face-attribute 'faces--test-inherit-extend :extend nil t) t)) 130 (should (equal (face-attribute 'faces--test-inherit-extend :extend nil t) t))
@@ -129,7 +135,7 @@
129 (should (equal (face-attribute 'diff-changed-face :extend) t)) 135 (should (equal (face-attribute 'diff-changed-face :extend) t))
130 (should (equal (face-attribute 'diff-added :extend) 'unspecified)) 136 (should (equal (face-attribute 'diff-added :extend) 'unspecified))
131 (should (equal (face-attribute 'diff-file-header-face :extend) nil)) 137 (should (equal (face-attribute 'diff-file-header-face :extend) nil))
132 (enable-theme 'manoj-dark) 138 (enable-theme 'faces-test-dark)
133 (should (equal (face-attribute 'faces--test-inherit-extend :extend) 139 (should (equal (face-attribute 'faces--test-inherit-extend :extend)
134 'unspecified)) 140 'unspecified))
135 (should (equal (face-attribute 'faces--test-inherit-extend :extend nil t) t)) 141 (should (equal (face-attribute 'faces--test-inherit-extend :extend nil t) t))
@@ -137,14 +143,14 @@
137 'unspecified)) 143 'unspecified))
138 (should (equal (face-attribute 'faces--test-inherit-no-extend :extend nil t) 144 (should (equal (face-attribute 'faces--test-inherit-no-extend :extend nil t)
139 nil)) 145 nil))
140 (should (equal (face-attribute 'diff-changed-face :extend) 'unspecified)) ; should be t 146 (should (equal (face-attribute 'diff-changed-face :extend) t))
141 (should (equal (face-attribute 'diff-added :extend) t)) 147 (should (equal (face-attribute 'diff-added :extend) t))
142 (should (equal (face-attribute 'diff-file-header-face :extend) 'unspecified)) ; should be nil 148 (should (equal (face-attribute 'diff-file-header-face :extend) nil))
143 (defface faces--test-face3 149 (defface faces--test-face3
144 '((t :inherit diff-added :weight bold)) 150 '((t :inherit diff-added :weight bold))
145 "") 151 "")
146 (should (equal (face-attribute 'faces--test-face3 :extend nil t) t)) 152 (should (equal (face-attribute 'faces--test-face3 :extend nil t) t))
147 (disable-theme 'manoj-dark) 153 (disable-theme 'faces-test-dark)
148 (should (equal (face-attribute 'faces--test-inherit-extend :extend) 154 (should (equal (face-attribute 'faces--test-inherit-extend :extend)
149 'unspecified)) 155 'unspecified))
150 (should (equal (face-attribute 'faces--test-inherit-extend :extend nil t) t)) 156 (should (equal (face-attribute 'faces--test-inherit-extend :extend nil t) t))
@@ -159,7 +165,7 @@
159 (defface diff-indicator-changed 165 (defface diff-indicator-changed
160 '((t (:weight bold :extend t))) 166 '((t (:weight bold :extend t)))
161 "") 167 "")
162 (enable-theme 'tsdh-light) 168 (enable-theme 'faces-test-light)
163 (should (equal (face-attribute 'faces--test-inherit-extend :extend) 169 (should (equal (face-attribute 'faces--test-inherit-extend :extend)
164 'unspecified)) 170 'unspecified))
165 (should (equal (face-attribute 'faces--test-inherit-extend :extend nil t) t)) 171 (should (equal (face-attribute 'faces--test-inherit-extend :extend nil t) t))
@@ -170,7 +176,7 @@
170 (should (equal (face-attribute 'diff-changed-face :extend) t)) 176 (should (equal (face-attribute 'diff-changed-face :extend) t))
171 (should (equal (face-attribute 'diff-added :extend) t)) 177 (should (equal (face-attribute 'diff-added :extend) t))
172 (should (equal (face-attribute 'diff-file-header-face :extend) nil)) 178 (should (equal (face-attribute 'diff-file-header-face :extend) nil))
173 (should (equal (face-attribute 'diff-indicator-changed :extend) 'unspecified)) ; should be t 179 (should (equal (face-attribute 'diff-indicator-changed :extend) t))
174 (should (equal (face-attribute 'faces--test-face3 :extend nil t) t)) 180 (should (equal (face-attribute 'faces--test-face3 :extend nil t) t))
175 (frame-set-background-mode (selected-frame) 'dark) 181 (frame-set-background-mode (selected-frame) 'dark)
176 (should (equal (face-attribute 'faces--test-inherit-extend :extend) 182 (should (equal (face-attribute 'faces--test-inherit-extend :extend)
@@ -183,7 +189,7 @@
183 (should (equal (face-attribute 'diff-changed-face :extend) t)) 189 (should (equal (face-attribute 'diff-changed-face :extend) t))
184 (should (equal (face-attribute 'diff-added :extend) t)) 190 (should (equal (face-attribute 'diff-added :extend) t))
185 (should (equal (face-attribute 'diff-file-header-face :extend) nil)) 191 (should (equal (face-attribute 'diff-file-header-face :extend) nil))
186 (should (equal (face-attribute 'diff-indicator-changed :extend) 'unspecified)) ; should be t 192 (should (equal (face-attribute 'diff-indicator-changed :extend) t))
187 (should (equal (face-attribute 'faces--test-face3 :extend nil t) t)) 193 (should (equal (face-attribute 'faces--test-face3 :extend nil t) t))
188 (or noninteractive 194 (or noninteractive
189 (let ((fr (make-frame))) 195 (let ((fr (make-frame)))
@@ -200,11 +206,10 @@
200 (should (equal (face-attribute 'diff-changed-face :extend fr) t)) 206 (should (equal (face-attribute 'diff-changed-face :extend fr) t))
201 (should (equal (face-attribute 'diff-added :extend fr) t)) 207 (should (equal (face-attribute 'diff-added :extend fr) t))
202 (should (equal (face-attribute 'diff-file-header-face :extend fr) nil)) 208 (should (equal (face-attribute 'diff-file-header-face :extend fr) nil))
203 (should (equal (face-attribute 'diff-indicator-changed :extend fr) 209 (should (equal (face-attribute 'diff-indicator-changed :extend fr) t))
204 'unspecified)) ; should be t
205 (should (equal (face-attribute 'faces--test-face3 :extend nil t) t)) 210 (should (equal (face-attribute 'faces--test-face3 :extend nil t) t))
206 )) 211 ))
207 (disable-theme 'tsdh-light) 212 (disable-theme 'faces-test-light)
208 (should (equal (face-attribute 'diff-indicator-changed :extend) t)) 213 (should (equal (face-attribute 'diff-indicator-changed :extend) t))
209 (should (equal (face-attribute 'faces--test-face3 :extend nil t) 'unspecified)) 214 (should (equal (face-attribute 'faces--test-face3 :extend nil t) 'unspecified))
210 (or noninteractive 215 (or noninteractive