@code{nil} to not use this face for the space between the end of the
line and the edge of the window. When Emacs merges several faces for
displaying the empty space beyond end of line, only those faces with
-@code{:extend} non-@code{nil} will be merged. By default, only
-@code{region} and @code{hl-line} faces have this attribute set to
-@code{t}.
+@code{:extend} non-@code{nil} will be merged. By default, only a
+small number of faces, notably, @code{region}, have this attribute
+set. This attribute is different from the others in that when a theme
+doesn't specify an explicit value for a face, the value from the
+original face definition by @code{defface} is inherited
+(@pxref{Defining Faces}).
@end table
** The 'completion-common-part' face is now visible by default.
+++
-** New face attribute ':extend' to control face extension at EOL.
-The new face attribute ':extend' controls whether to use the face for
+** New face attribute ':extend' to control face extension at EOL. The
+new face attribute ':extend' controls whether to use the face for
displaying the empty space beyond end of line (EOL) till the edge of
-the window. By default, this attribute is non-nil only for 'region',
-'secondary-selection', 'hl-line' and some faces of Diff and Ediff
-modes; any other face that crosses end of line will not affect the
-display of the empty space at EOL. This is to make Emacs behave more
-like other GUI applications with respect to displaying faces that
-cross line boundaries.
-
-Themes that redefine faces should add a non-nil ':extend' attribute to
-the above-mentioned faces, to keep the behavior of the default face
-definitions.
+the window. By default, this attribute is non-nil only for a small
+number of faces, notably, 'region'; any other face that crosses end of
+line will not affect the display of the empty space at EOL. This is
+to make Emacs behave more like other GUI applications with respect to
+displaying faces that cross line boundaries.
+
+This attribute behaves specially when theme definitions are applied:
+if the theme doesn't specify an explicit value for a face, the value
+from the original face definition is inherited. Consequently, a theme
+generally shouldn't specify this attribute unless it has a good reason
+to do so.
** Connection-local variables
`(header-line ((,class (:foreground "#CCCCCC" :background "black"))))
`(minibuffer-prompt ((,class (:foreground "#0084C8" :bold t))))
- `(region ((,class (:foreground unspecified :background "#C2D5E9" :extend t))))
+ `(region ((,class (:foreground unspecified :background "#C2D5E9"))))
`(dired-header ((,class (:bold t :foreground "#0084C8"))))
`(widget-button ((,class (:bold t :foreground "#0084C8"))))
`(gnus-cite-1 ((,class (:foreground "#00578E"))))
`(gnus-cite-2 ((,class (:foreground "#0084C8"))))
- `(diff-added ((,class (:bold t :foreground "#4E9A06" :extend t))))
- `(diff-removed ((,class (:bold t :foreground "#F5666D" :extend t))))))
+ `(diff-added ((,class (:bold t :foreground "#4E9A06"))))
+ `(diff-removed ((,class (:bold t :foreground "#F5666D"))))))
;;; adwaita-theme.el ends here
;; `(diff-added ((,class (nil))))
;; `(diff-changed ((,class (nil))))
`(diff-context ((,class (:foreground "seashell4"))))
- `(diff-file-header ((,class (:background "grey60" :extend t))))
+ `(diff-file-header ((,class (:background "grey60"))))
`(diff-function ((,class (:inherit diff-header))))
- `(diff-header ((,class (:background "grey45" :extend t))))
+ `(diff-header ((,class (:background "grey45"))))
`(diff-hunk-header ((,class (:inherit diff-header))))
`(diff-index ((,class (:inherit diff-file-header))))
`(diff-indicator-added ((,class (:foreground "white" :background "darkolivegreen"))))
`(diff-refine-change ((,class (:background "skyblue4"))))
;; `(diff-removed ((,class (nil))))
`(dired-marked ((,class (:background "dodgerblue3" :foreground "white"))))
- `(ediff-current-diff-A ((,class (:background "green4" :foreground "white" :extend t))))
- `(ediff-current-diff-B ((,class (:background "darkorange3" :foreground "white" :extend t))))
- `(ediff-even-diff-B ((,class (:background "Grey50" :foreground "White" :extend t))))
+ `(ediff-current-diff-A ((,class (:background "green4" :foreground "white"))))
+ `(ediff-current-diff-B ((,class (:background "darkorange3" :foreground "white"))))
+ `(ediff-even-diff-B ((,class (:background "Grey50" :foreground "White"))))
`(ediff-fine-diff-A ((,class (:background "skyblue4" :foreground "white"))))
`(ediff-fine-diff-B ((,class (:background "cyan4" :foreground "white"))))
- `(ediff-odd-diff-A ((,class (:background "Grey50" :foreground "White" :extend t))))
+ `(ediff-odd-diff-A ((,class (:background "Grey50" :foreground "White"))))
`(error ((,class (:foreground "red"))))
`(flymake-errline ((,class (:background nil :underline "red"))))
`(flymake-warnline ((,class (:background nil :underline "magenta3"))))
`(outline-4 ((,class (:foreground "turquoise2"))))
`(outline-5 ((,class (:foreground "aquamarine1"))))
`(primary-selection ((,class (:background "blue3"))))
- `(region ((,class (:background "#103050" :extend t))))
+ `(region ((,class (:background "#103050"))))
`(show-paren-match-face ((,class (:background "dodgerblue1" :foreground "white"))))
`(show-paren-mismatch-face ((,class (:background "red1" :foreground "white"))))
`(success ((,class (:foreground "SeaGreen2"))))
;; Highlighting faces
`(fringe ((,class (:background "#f7f7f7"))))
`(highlight ((,class (:foreground ,blue :background "#e5e5e5"))))
- `(region ((,class (:foreground unspecified :background ,yellow :extend t))))
- `(secondary-selection ((,class (:background "#e5e5e5" :extend t))))
+ `(region ((,class (:foreground unspecified :background ,yellow))))
+ `(secondary-selection ((,class (:background "#e5e5e5"))))
`(isearch ((,class (:foreground "white" :background ,vermillion))))
`(lazy-highlight ((,class (:foreground "white" :background ,redpurple))))
`(trailing-whitespace ((,class (:background ,vermillion))))
(code-block '(:foreground "#000088" :background "#FFFFE0"))
(code-inline '(:foreground "#006400" :background "#FDFFF7"))
(column '(:height 1.0 :weight normal :slant normal :underline nil :strike-through nil :foreground "#E6AD4F" :background "#FFF2DE"))
- (diff-added '(:foreground "#008000" :background "#DDFFDD" :extend t))
+ (diff-added '(:foreground "#008000" :background "#DDFFDD"))
(diff-changed '(:foreground "#0000FF" :background "#DDDDFF"))
- (diff-header '(:foreground "#800000" :background "#FFFFAF" :extend t))
+ (diff-header '(:foreground "#800000" :background "#FFFFAF"))
(diff-hunk-header '(:foreground "#990099" :background "#FFEEFF"))
(diff-none '(:foreground "gray33"))
- (diff-removed '(:foreground "#A60000" :background "#FFDDDD" :extend t))
+ (diff-removed '(:foreground "#A60000" :background "#FFDDDD"))
(directory '(:weight bold :foreground "blue" :background "#FFFFD2"))
(highlight-line '(:background "#FFFFD7")) ; #F5F5F5
(highlight-line-gnus '(:background "#DAEAFC")) ; defined in `gnus-leuven.el'
(ol8 '(:height 1.0 :weight bold :slant italic :foreground "#FD8008"))
(paren-matched '(:background "#99CCFF"))
(paren-unmatched '(:underline "red" :foreground nil :background "#FFDCDC"))
- (region '(:background "#ABDFFA" :extend t))
+ (region '(:background "#ABDFFA"))
(shadow '(:foreground "#7F7F7F"))
(string '(:foreground "#008000")) ; or #D0372D
(subject '(:family "Sans Serif" :weight bold :foreground "black"))
`(smerge-refined-change ((,class (:background "#AAAAFF"))))
;; Ediff
- `(ediff-current-diff-A ((,class (:foreground "gray33" :background "#FFDDDD" :extend t))))
- `(ediff-current-diff-B ((,class (:foreground "gray33" :background "#DDFFDD" :extend t))))
- `(ediff-current-diff-C ((,class (:foreground "black" :background "cyan" :extend t))))
- `(ediff-even-diff-A ((,class (:foreground "black" :background "light grey" :extend t))))
- `(ediff-even-diff-B ((,class (:foreground "black" :background "light grey" :extend t))))
+ `(ediff-current-diff-A ((,class (:foreground "gray33" :background "#FFDDDD"))))
+ `(ediff-current-diff-B ((,class (:foreground "gray33" :background "#DDFFDD"))))
+ `(ediff-current-diff-C ((,class (:foreground "black" :background "cyan"))))
+ `(ediff-even-diff-A ((,class (:foreground "black" :background "light grey"))))
+ `(ediff-even-diff-B ((,class (:foreground "black" :background "light grey"))))
`(ediff-fine-diff-A ((,class (:foreground "#A60000" :background "#FFAAAA"))))
`(ediff-fine-diff-B ((,class (:foreground "#008000" :background "#55FF55"))))
- `(ediff-odd-diff-A ((,class (:foreground "black" :background "light grey" :extend t))))
- `(ediff-odd-diff-B ((,class (:foreground "black" :background "light grey" :extend t))))
+ `(ediff-odd-diff-A ((,class (:foreground "black" :background "light grey"))))
+ `(ediff-odd-diff-B ((,class (:foreground "black" :background "light grey"))))
;; Flyspell
;; (when (version< emacs-version "24.XXX")
`(info-xref-visited ((,class (:underline t :foreground "magenta4")))) ; previously visited cross-references
`(light-symbol-face ((,class (:background "#FFFFA0"))))
`(linum ((,class (:inherit (default shadow) :foreground "#9A9A9A" :background "#EDEDED"))))
- `(log-view-file ((,class (:foreground "#0000CC" :background "#EAF2F5" :extend t))))
+ `(log-view-file ((,class (:foreground "#0000CC" :background "#EAF2F5"))))
`(lui-button-face ((,class ,link)))
`(lui-highlight-face ((,class (:box '(:line-width 1 :color "#CC0000") :foreground "#CC0000" :background "#FFFF88")))) ; my nickname
`(lui-time-stamp-face ((,class (:foreground "purple"))))
`(fringe ((,class (:background "gray85"))))
;; Highlighting faces
`(highlight ((,class (:background "cyan"))))
- `(region ((,class (:background "MediumAquamarine" :extend t))))
- `(secondary-selection ((,class (:background "white" :foreground "black" :extend t))))
+ `(region ((,class (:background "MediumAquamarine"))))
+ `(secondary-selection ((,class (:background "white" :foreground "black"))))
`(isearch ((,class (:background "green" :foreground "Black"))))
`(lazy-highlight ((,class (:background "dark turquoise"))))
`(query-replace ((,class (:inherit isearch :background "white" :foreground "black"))))
'(diary-button ((t (:background "lightgrey" :foreground "black" :box (:line-width 2 :style released-button)))))
'(diary-face ((t (:foreground "IndianRed"))))
'(diary-time ((t (:foreground "LightGoldenrod"))))
- '(diff-added ((t (:foreground "Green" :extend t))))
+ '(diff-added ((t (:foreground "Green"))))
'(diff-added-face ((t (:foreground "Green"))))
'(diff-changed-face ((t (:foreground "Khaki"))))
'(diff-context-face ((t (:foreground "grey70"))))
- '(diff-file-header ((t (:bold t :background "grey20" :foreground "ivory1" :weight bold :extend t))))
+ '(diff-file-header ((t (:bold t :background "grey20" :foreground "ivory1" :weight bold))))
'(diff-file-header-face ((t (:bold t :background "grey20" :foreground "ivory1" :weight bold))))
'(diff-function-face ((t (:foreground "SpringGreen1"))))
'(diff-header-face ((t (:background "SlateBlue4"))))
'(diff-index-face ((t (:bold t :weight bold :background "SteelBlue4" :foreground "linen" ))))
'(diff-nonexistent ((t (:bold t :weight bold :background "Black" :foreground "Wheat1"))))
'(diff-nonexistent-face ((t (:bold t :weight bold :background "Black" :foreground "Wheat1"))))
- '(diff-removed ((t (:foreground "salmon1" :extend t))))
+ '(diff-removed ((t (:foreground "salmon1"))))
'(diff-removed-face ((t (:foreground "salmon1"))))
'(diff-refine-change-face ((t (:background "MidnightBlue"))))
'(diff-refine-change ((t (:background "MidnightBlue"))))
'(header-line ((t (:box (:line-width -1 :color "grey20" :style released-button) :background "grey20" :foreground "grey90" :height 0.9))))
'(help-argument-name ((t (:italic t :slant italic))))
'(highlight ((t (:background "gray10" :foreground "Old Lace"))))
- '(hl-line ((t (:background "grey10" :foreground "Old Lace" :extend t))))
+ '(hl-line ((t (:background "grey10" :foreground "Old Lace"))))
'(gnus-mouse-face ((t (:background "darkseagreen2" :foreground "blue"))))
'(erc-button-mouse-face ((t (:background "darkseagreen2" :foreground "blue"))))
'(align-highlight-change-face ((t (:background "darkseagreen2" :foreground "blue"))))
'(paren-mismatch-face ((t (:bold t :background "white" :foreground "red"))))
'(paren-no-match-face ((t (:bold t :background "white" :foreground "red"))))
'(query-replace ((t (:foreground "brown4" :background "palevioletred2"))))
- '(region ((t (:background "blue3" :extend t))))
+ '(region ((t (:background "blue3"))))
'(realgud-overlay-arrow1 ((t (:foreground "medium sea green"))))
'(realgud-overlay-arrow2 ((t (:foreground "white"))))
'(realgud-overlay-arrow3 ((t (:foreground "indian red"))))
'(realgud-line-number ((t (:foreground "yellow"))))
'(realgud-backtrace-number ((t (:foreground "yellow" :weight bold))))
'(scroll-bar ((t (:background "grey75" :foreground "WhiteSmoke"))))
- '(secondary-selection ((t (:background "SkyBlue4" :extend t))))
+ '(secondary-selection ((t (:background "SkyBlue4"))))
'(semantic-dirty-token-face ((t (:background "lightyellow"))))
'(semantic-highlight-edits-face ((t (:background "gray20"))))
'(semantic-unmatched-syntax-face ((t (:underline "red"))))
'(show-paren-match ((t (:background "steelblue3"))))
'(show-paren-match-face ((t (:background "steelblue3"))))
'(show-paren-mismatch ((t (:background "purple" :foreground "white"))))
- '(smerge-base ((t (:foreground "orange" :extend t))))
- '(smerge-markers ((t (:background "grey30" :extend t))))
- '(smerge-mine ((t (:foreground "cyan" :extend t))))
- '(smerge-other ((t (:foreground "lightgreen" :extend t))))
+ '(smerge-base ((t (:foreground "orange"))))
+ '(smerge-markers ((t (:background "grey30"))))
+ '(smerge-mine ((t (:foreground "cyan"))))
+ '(smerge-other ((t (:foreground "lightgreen"))))
'(smerge-refined-change ((t (:background "blue4"))))
'(speedbar-button-face ((t (:foreground "green3"))))
'(speedbar-directory-face ((t (:foreground "light blue"))))
;; Highlighting faces
`(fringe ((,class (:background "#2e3748"))))
`(highlight ((,class (:background "#338f86" :foreground "#e1e1e0"))))
- `(region ((,class (:background "#2d4948" :foreground "#e1e1e0" :extend t))))
+ `(region ((,class (:background "#2d4948" :foreground "#e1e1e0"))))
`(isearch ((,class (:background "#fcffad" :foreground "#000000"))))
`(lazy-highlight ((,class (:background "#338f86"))))
`(trailing-whitespace ((,class (:background "#ff4242"))))
;; Highlighting faces
`(fringe ((,class (:background ,alum-7))))
`(highlight ((,class (:foreground ,alum-6 :background "#c0c000"))))
- `(region ((,class (:background ,alum-5 :extend t))))
- `(secondary-selection ((,class (:background ,blue-3 :extend t))))
+ `(region ((,class (:background ,alum-5))))
+ `(secondary-selection ((,class (:background ,blue-3))))
`(isearch ((,class (:foreground ,alum-1 :background ,orange-3))))
`(lazy-highlight ((,class (:background ,choc-3))))
`(trailing-whitespace ((,class (:background ,red-3))))
;; SMerge faces
`(smerge-refined-change ((,class (:background ,blue-3))))
;; Ediff faces
- `(ediff-current-diff-A ((,class (:background ,alum-5 :extend t))))
+ `(ediff-current-diff-A ((,class (:background ,alum-5))))
`(ediff-fine-diff-A ((,class (:background ,blue-3))))
- `(ediff-even-diff-A ((,class (:background ,alum-5.5 :extend t))))
- `(ediff-odd-diff-A ((,class (:background ,alum-5.5 :extend t))))
- `(ediff-current-diff-B ((,class (:background ,alum-5 :extend t))))
+ `(ediff-even-diff-A ((,class (:background ,alum-5.5))))
+ `(ediff-odd-diff-A ((,class (:background ,alum-5.5))))
+ `(ediff-current-diff-B ((,class (:background ,alum-5))))
`(ediff-fine-diff-B ((,class (:background ,choc-3))))
- `(ediff-even-diff-B ((,class (:background ,alum-5.5 :extend t))))
- `(ediff-odd-diff-B ((,class (:background ,alum-5.5 :extend t))))
+ `(ediff-even-diff-B ((,class (:background ,alum-5.5))))
+ `(ediff-odd-diff-B ((,class (:background ,alum-5.5))))
;; Flyspell faces
`(flyspell-duplicate ((,class (:underline ,orange-1))))
`(flyspell-incorrect ((,class (:underline ,red-1))))
;; Highlighting faces
`(fringe ((,class (:background ,alum-2))))
`(highlight ((,class (:background ,alum-3))))
- `(region ((,class (:background ,alum-3 :extend t))))
- `(secondary-selection ((,class (:background ,blue-0 :extend t))))
+ `(region ((,class (:background ,alum-3))))
+ `(secondary-selection ((,class (:background ,blue-0))))
`(isearch ((,class (:foreground "#ffffff" :background ,orange-3))))
`(lazy-highlight ((,class (:background ,choc-1))))
`(trailing-whitespace ((,class (:background ,red-1))))
;; SMerge
`(smerge-refined-change ((,class (:background ,plum-1))))
;; Ediff
- `(ediff-current-diff-A ((,class (:background ,blue-1 :extend t))))
+ `(ediff-current-diff-A ((,class (:background ,blue-1))))
`(ediff-fine-diff-A ((,class (:background ,plum-1))))
- `(ediff-current-diff-B ((,class (:background ,butter-1 :extend t))))
+ `(ediff-current-diff-B ((,class (:background ,butter-1))))
`(ediff-fine-diff-B ((,class (:background ,orange-1))))
;; Flyspell
`(flyspell-duplicate ((,class (:underline ,orange-1))))
'tsdh-dark
'(aw-leading-char-face ((t (:background "gray30" :foreground "red" :weight bold))))
'(default ((t (:background "gray20" :foreground "white smoke"))))
- '(diff-added ((t (:inherit diff-changed :background "dark green" :extend t))) t)
+ '(diff-added ((t (:inherit diff-changed :background "dark green"))) t)
'(diff-changed ((t (:background "midnight blue"))) t)
'(diff-indicator-added ((t (:inherit diff-indicator-changed))) t)
'(diff-indicator-changed ((t (:weight bold))) t)
'(diff-indicator-removed ((t (:inherit diff-indicator-changed))) t)
- '(diff-removed ((t (:inherit diff-changed :background "dark red" :extend t))) t)
+ '(diff-removed ((t (:inherit diff-changed :background "dark red"))) t)
'(dired-directory ((t (:foreground "DodgerBlue" :weight bold))))
'(error ((t (:foreground "deep pink" :weight bold))))
'(eshell-prompt ((t (:inherit font-lock-function-name-face :weight bold))))
'(header-line ((t (:inverse-video t :box (:line-width -1 :color "red" :style released-button)))))
'(helm-header ((t (:background "DeepSkyBlue4" :weight bold))))
'(highlight ((t (:background "sea green"))))
- '(hl-line ((t (:background "grey25" :extend t))))
+ '(hl-line ((t (:background "grey25"))))
'(hl-paren-face ((t (:weight bold))) t)
'(icomplete-first-match ((t (:foreground "deep sky blue" :weight bold))))
'(ido-first-match ((t (:foreground "turquoise" :weight bold))))
'(rcirc-other-nick ((t (:foreground "dodger blue"))) t)
'(rcirc-track-keyword ((t (:foreground "DodgerBlue" :weight bold))) t)
'(rcirc-track-nick ((t (:background "yellow" :foreground "DodgerBlue" :weight bold))) t)
- '(region ((t (:background "SeaGreen4" :extend t))))
+ '(region ((t (:background "SeaGreen4"))))
'(scroll-bar ((t (:background "gray20" :foreground "dark turquoise"))))
- '(secondary-selection ((t (:background "#333366" :foreground "#f6f3e8" :extend t))))
+ '(secondary-selection ((t (:background "#333366" :foreground "#f6f3e8"))))
'(show-paren-match ((t (:background "DeepSkyBlue4"))))
'(show-paren-mismatch ((t (:background "dark magenta"))))
'(swiper-match-face-1 ((t (:background "gray35"))))
'(Info-quoted ((t (:underline "gray40" :weight bold))))
'(aw-leading-char-face ((t (:background "red" :foreground "white" :weight bold))))
'(default ((t (:background "white" :foreground "black"))))
- '(diff-added ((t (:inherit diff-changed :background "light green" :extend t))))
+ '(diff-added ((t (:inherit diff-changed :background "light green"))))
'(diff-changed ((t (:background "light steel blue"))))
'(diff-indicator-added ((t (:inherit diff-indicator-changed))))
'(diff-indicator-changed ((t (:weight bold))))
'(diff-indicator-removed ((t (:inherit diff-indicator-changed))))
- '(diff-removed ((t (:inherit diff-changed :background "sandy brown" :extend t))))
+ '(diff-removed ((t (:inherit diff-changed :background "sandy brown"))))
'(dired-directory ((t (:inherit font-lock-function-name-face :weight bold))))
'(font-lock-builtin-face ((t (:foreground "#e44649"))))
'(font-lock-comment-delimiter-face ((t (:inherit font-lock-comment-face :weight bold))))
'(gnus-group-news-2-empty ((t (:foreground "tomato3"))))
'(gnus-group-news-3 ((t (:inherit gnus-group-news-3-empty :weight bold))))
'(gnus-group-news-3-empty ((t (:foreground "tomato2")))) '(header-line ((t (:inherit mode-line :inverse-video t))))
- '(hl-line ((t (:background "#f0f0f1" :extend t))))
+ '(hl-line ((t (:background "#f0f0f1"))))
'(hl-paren-face ((t (:weight bold))) t)
'(minibuffer-prompt ((t (:foreground "#0184bc" :box (:line-width -1 :style released-button) :weight bold))))
'(mode-line ((t (:background "#f0f0f1" :box (:line-width 1 :color "#383a42")))))
`(compilation-info ((,class (:foreground "ForestGreen"))))
;; Highlighting faces
`(highlight ((,class (:foreground "white" :background "dark green"))))
- `(region ((,class (:foreground "white" :background "dark green" :extend t))))
- `(secondary-selection ((,class (:background "dark slate gray" :extend t))))
+ `(region ((,class (:foreground "white" :background "dark green"))))
+ `(secondary-selection ((,class (:background "dark slate gray"))))
`(isearch ((,class (:foreground "white" :background "dark goldenrod"))))
`(lazy-highlight ((,class (:background "gray25"))))
;; Font lock faces
`(fringe ((,class (:background "#303030"))))
`(highlight ((,class (:background "#454545" :foreground "#ffffff"
:underline t))))
- `(region ((,class (:background "#444444" :foreground "#f6f3e8" :extend t))))
- `(secondary-selection ((,class (:background "#333366" :foreground "#f6f3e8" :extend t))))
+ `(region ((,class (:background "#444444" :foreground "#f6f3e8"))))
+ `(secondary-selection ((,class (:background "#333366" :foreground "#f6f3e8"))))
`(isearch ((,class (:background "#343434" :foreground "#857b6f"))))
`(lazy-highlight ((,class (:background "#384048" :foreground "#a0a8b0"))))
;; Mode line faces
;; `theme-face' records.
(let ((theme-faces (get face 'theme-face))
(no-match-found 0)
- face-attrs theme-face-applied)
+ default-attrs face-attrs theme-face-applied)
(if theme-faces
(dolist (elt (reverse theme-faces))
(setq face-attrs (face-spec-choose (cadr elt) frame no-match-found))
(face-spec-set-2 face frame face-attrs)
(setq theme-face-applied t))))
;; If there was a spec applicable to FRAME, that overrides the
- ;; defface spec entirely (rather than inheriting from it). If
- ;; there was no spec applicable to FRAME, apply the defface spec
- ;; as well as any applicable X resources.
+ ;; defface spec entirely rather than inheriting from it, with the
+ ;; exception of the :extend attribute (which is inherited).
+ ;;
+ ;; If there was no spec applicable to FRAME, apply the defface
+ ;; spec as well as any applicable X resources.
+ (setq default-attrs (face-spec-choose (face-default-spec face) frame))
(unless theme-face-applied
- (setq face-attrs (face-spec-choose (face-default-spec face) frame))
- (face-spec-set-2 face frame face-attrs)
+ (face-spec-set-2 face frame default-attrs)
(make-face-x-resource-internal face frame))
+ (when (and theme-face-applied
+ (eq 'unspecified (face-attribute face :extend frame t)))
+ (let ((tail (plist-member default-attrs :extend)))
+ (and tail (face-spec-set-2 face frame
+ (list :extend (cadr tail))))))
(setq face-attrs (face-spec-choose (get face 'face-override-spec) frame))
(face-spec-set-2 face frame face-attrs)))
--- /dev/null
+;;; faces-test-dark-theme.el --- A dark theme from tests ;;; -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2019 Free Software Foundation, Inc.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(deftheme faces-test-dark
+ "")
+
+(custom-theme-set-faces
+ 'faces-test-dark
+ '(diff-added ((t (:foreground "Green" :extend t))))
+ '(diff-changed-face ((t (:foreground "Khaki"))))
+ '(diff-file-header-face ((t (:background "grey20" :foreground "ivory1")))))
+
+(provide-theme 'faces-test-dark)
+
+;;; faces-test-dark-theme.el ends here
--- /dev/null
+;;; faces-test-light-theme.el --- A dark theme from tests ;;; -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2019 Free Software Foundation, Inc.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(deftheme faces-test-light
+ "")
+
+(custom-theme-set-faces
+ 'faces-test-light
+ '(diff-added ((t (:inherit diff-changed :background "light green" :extend t))))
+ '(diff-changed ((t (:background "light steel blue")))))
+
+(provide-theme 'faces-test-light)
+
+;;; faces-test-light-theme.el ends here
(require 'ert)
(require 'faces)
+(defvar faces--test-data-dir
+ (expand-file-name "../data/"
+ (file-name-directory (or load-file-name
+ buffer-file-name))))
+
(defgroup faces--test nil ""
:group 'faces--test)
(should (equal (face-attribute 'diff-changed-face :extend) t))
(should (equal (face-attribute 'diff-added :extend) 'unspecified))
(should (equal (face-attribute 'diff-file-header-face :extend) nil))
- (load-theme 'manoj-dark t t)
- (load-theme 'tsdh-light t t)
+ (add-to-list 'custom-theme-load-path (concat faces--test-data-dir "themes"))
+ (load-theme 'faces-test-dark t t)
+ (load-theme 'faces-test-light t t)
(should (equal (face-attribute 'faces--test-inherit-extend :extend)
'unspecified))
(should (equal (face-attribute 'faces--test-inherit-extend :extend nil t) t))
(should (equal (face-attribute 'diff-changed-face :extend) t))
(should (equal (face-attribute 'diff-added :extend) 'unspecified))
(should (equal (face-attribute 'diff-file-header-face :extend) nil))
- (enable-theme 'manoj-dark)
+ (enable-theme 'faces-test-dark)
(should (equal (face-attribute 'faces--test-inherit-extend :extend)
'unspecified))
(should (equal (face-attribute 'faces--test-inherit-extend :extend nil t) t))
'unspecified))
(should (equal (face-attribute 'faces--test-inherit-no-extend :extend nil t)
nil))
- (should (equal (face-attribute 'diff-changed-face :extend) 'unspecified)) ; should be t
+ (should (equal (face-attribute 'diff-changed-face :extend) t))
(should (equal (face-attribute 'diff-added :extend) t))
- (should (equal (face-attribute 'diff-file-header-face :extend) 'unspecified)) ; should be nil
+ (should (equal (face-attribute 'diff-file-header-face :extend) nil))
(defface faces--test-face3
'((t :inherit diff-added :weight bold))
"")
(should (equal (face-attribute 'faces--test-face3 :extend nil t) t))
- (disable-theme 'manoj-dark)
+ (disable-theme 'faces-test-dark)
(should (equal (face-attribute 'faces--test-inherit-extend :extend)
'unspecified))
(should (equal (face-attribute 'faces--test-inherit-extend :extend nil t) t))
(defface diff-indicator-changed
'((t (:weight bold :extend t)))
"")
- (enable-theme 'tsdh-light)
+ (enable-theme 'faces-test-light)
(should (equal (face-attribute 'faces--test-inherit-extend :extend)
'unspecified))
(should (equal (face-attribute 'faces--test-inherit-extend :extend nil t) t))
(should (equal (face-attribute 'diff-changed-face :extend) t))
(should (equal (face-attribute 'diff-added :extend) t))
(should (equal (face-attribute 'diff-file-header-face :extend) nil))
- (should (equal (face-attribute 'diff-indicator-changed :extend) 'unspecified)) ; should be t
+ (should (equal (face-attribute 'diff-indicator-changed :extend) t))
(should (equal (face-attribute 'faces--test-face3 :extend nil t) t))
(frame-set-background-mode (selected-frame) 'dark)
(should (equal (face-attribute 'faces--test-inherit-extend :extend)
(should (equal (face-attribute 'diff-changed-face :extend) t))
(should (equal (face-attribute 'diff-added :extend) t))
(should (equal (face-attribute 'diff-file-header-face :extend) nil))
- (should (equal (face-attribute 'diff-indicator-changed :extend) 'unspecified)) ; should be t
+ (should (equal (face-attribute 'diff-indicator-changed :extend) t))
(should (equal (face-attribute 'faces--test-face3 :extend nil t) t))
(or noninteractive
(let ((fr (make-frame)))
(should (equal (face-attribute 'diff-changed-face :extend fr) t))
(should (equal (face-attribute 'diff-added :extend fr) t))
(should (equal (face-attribute 'diff-file-header-face :extend fr) nil))
- (should (equal (face-attribute 'diff-indicator-changed :extend fr)
- 'unspecified)) ; should be t
+ (should (equal (face-attribute 'diff-indicator-changed :extend fr) t))
(should (equal (face-attribute 'faces--test-face3 :extend nil t) t))
))
- (disable-theme 'tsdh-light)
+ (disable-theme 'faces-test-light)
(should (equal (face-attribute 'diff-indicator-changed :extend) t))
(should (equal (face-attribute 'faces--test-face3 :extend nil t) 'unspecified))
(or noninteractive