Compare commits

...

50 Commits
1.1.0 ... main

Author SHA1 Message Date
a8d76c2beb Update repo icon 2023-12-09 06:32:48 -05:00
807cd44418 Update preview image 2023-12-09 05:43:56 -05:00
fb6c42d2b2 Update README.md 2023-12-09 05:40:41 -05:00
04fed0ef79 Mention custom eldoc-frame configuration 2023-12-09 05:33:32 -05:00
5c4439abd0 Update README.md 2023-12-09 05:31:25 -05:00
dedbbe637b Move repo assets to .repo-assets 2023-12-09 05:24:26 -05:00
3e474cfbbc Bump minor version number 2023-12-09 05:22:15 -05:00
b0d36728e2 Add eldoc-frame support 2023-12-09 05:21:40 -05:00
635cf47aab Add font-lock-delimiter-face 2023-12-09 05:21:26 -05:00
75e1504e49 Update bg-osd color 2023-12-09 05:21:17 -05:00
766e2c03d4 Properly encapsulate byte-compiler declarations 2023-12-09 05:20:35 -05:00
0907961986 Remove unnecessary face attributes 2023-11-29 03:57:44 -05:00
a7c9b66e27 Add configuration options to enable visual padding 2023-11-28 11:35:21 -05:00
60d631c9c8 Update docstring 2023-11-28 11:24:09 -05:00
9fb2b85d8c Merge branch 'main' into 'main'
Make outline faces colorful by default and add option for gray-scale

See merge request jessieh/adwaita-dark-theme!1
2023-11-28 16:20:07 +00:00
3d984e1183 Point README at new issue tracker 2023-11-28 11:17:06 -05:00
26551fcda4 Bump version number 2023-11-15 21:58:10 -05:00
4576c6c89c Add support for eldoc-box 2023-11-15 21:57:52 -05:00
61facfb767 Improve legibility of tempel template fields 2023-11-15 21:57:30 -05:00
32b00f23ee Add foreground color for OSD/tooltip 2023-11-15 21:56:31 -05:00
a97d5d5f56 Add faces for tempel 2023-11-07 12:26:10 -05:00
3f2b42f2a4 Add faces for orderless 2023-11-07 12:26:05 -05:00
4677160515 Add missing parens 2023-11-07 12:25:59 -05:00
Fabrizio Contigiani
b974201e00 Make outline faces colorful by default 2023-10-24 12:10:09 -03:00
057c393133 Bump patch version number 2023-10-16 13:47:09 -04:00
de32d1da1d Fix incorrect flymake warning underline color 2023-10-16 13:44:53 -04:00
1874c379a0 Fix foreground of region face 2023-09-21 15:27:00 -04:00
4792fed63a Make BG color more accurate to Adwaita colors 2023-02-15 15:27:21 -05:00
7c6e0c205b Remove bolding from line number faces 2023-02-12 17:04:32 -05:00
97f50abd20 Add face definitions for CIDER 2023-02-12 17:00:33 -05:00
1f011432f7 Make tooltip styling consistent with Adwaita 2023-02-12 16:58:01 -05:00
1e73e5b437 Stylize line-number faces after gnome-builder 2023-02-12 16:57:06 -05:00
8ca0663556 Remove definition for nonexistent font-lock face 2023-02-04 22:19:56 -05:00
35d35f5172 Add face definitions for SLY 2023-02-02 20:43:07 -05:00
d137551c5a Add definition for mood-line-unimportant 2023-01-26 05:50:58 -05:00
99951619c5 Improve accuracy of font-lock faces 2022-12-30 14:20:29 -05:00
a1faa94ddc Appease byte compiler 2022-12-30 00:57:49 -05:00
81c2ab75bc Fix neotree root directory button definition 2022-12-30 00:50:57 -05:00
a60e943f36 Overhaul neotree configuration 2022-12-29 23:20:26 -05:00
7a37e14bbf Add definition for solaire-fringe-face 2022-12-29 23:19:40 -05:00
1c2fe39161 Tweak completions-first-difference face 2022-12-29 23:19:18 -05:00
590bc25b95 Make bold property of vertico-current optional 2022-12-29 20:16:41 -05:00
a947ea3e70 Add vertico-multiline face definition 2022-12-29 20:16:31 -05:00
acfa476de4 Add configurable completions-first-difference face 2022-12-29 20:11:57 -05:00
8f3af47355 Make deftheme docstring consistent with defgroup 2022-12-29 20:11:15 -05:00
c80055970c Improve color consistency for solaire-hl-line-face 2022-12-29 19:24:24 -05:00
13d46feebd Refine popup faces 2022-12-29 19:24:16 -05:00
63aaaddd83 Improve neotree configuration 2022-12-29 19:24:04 -05:00
f16282cd60 Adjust comments 2022-12-29 19:23:50 -05:00
d63e666556 Add mood-line-buffer-status-narrowed face 2022-12-29 01:32:25 -05:00
5 changed files with 317 additions and 154 deletions

BIN
.repo-assets/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

BIN
.repo-assets/icon.xcf Normal file

Binary file not shown.

BIN
.repo-assets/preview.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

View File

@ -1,50 +1,67 @@
# adwaita-dark-theme
# <img src=".repo-assets/icon.png" width=50> adwaita-dark-theme
A dark color scheme that aims to replicate the appearance and colors of GTK4 "libadwaita" applications.
[![MELPA](https://melpa.org/packages/adwaita-dark-theme-badge.svg)](https://melpa.org/#/adwaita-dark-theme)
[![MELPA Stable](https://stable.melpa.org/packages/adwaita-dark-theme-badge.svg)](https://stable.melpa.org/#/adwaita-dark-theme)
## About
`adwaita-dark-theme` is a dark color scheme that aims to replicate the appearance and colors of GTK4 "libadwaita" applications.
## Features
* Beautiful dark color scheme inspired by Adwaita
* Automatic 256-color mode support
* Custom fringe bitmaps for diff-hl, flycheck, and flymake
* Configurable theme features
* Lightweight with no dependencies
* Custom configurations for
[neotree](https://github.com/jaypei/emacs-neotree)
and [eldoc-frame](https://git.tty.dog/jessieh/eldoc-frame)
* Custom fringe bitmaps for
[diff-hl](https://github.com/dgutov/diff-hl),
[flycheck](https://www.flycheck.org),
and [flymake](https://www.emacswiki.org/emacs/FlyMake)
* Lightweight, no dependencies
## Preview
![Preview Image](https://gitlab.com/jessieh/adwaita-dark-theme/raw/assets/preview.png "Preview Image")
![Preview Image](.repo-assets/preview.webp "Preview Image")
## Configuration
### Custom Neotree Configuration
To see all of the theme features that can be configured:
`M-x customize-group adwaita-dark-theme`
### Neotree Configuration
`(eval-after-load 'neotree #'adwaita-dark-theme-neotree-configuration-enable)`
### Custom Fringe Bitmaps
### eldoc-frame Configuration
`(eval-after-load 'eldoc-frame #'adwaita-dark-theme-eldoc-frame-configuration-enable)`
### Fringe Bitmaps
To replace default line continuation/line wrap fringe bitmaps:\
`(adwaita-dark-theme-arrow-fringe-bmp-enable)`
To enable custom fringe bitmaps for [diff-hl](https://github.com/dgutov/diff-hl):\
For specific packages:
* diff-hl:\
`(eval-after-load 'diff-hl #'adwaita-dark-theme-diff-hl-fringe-bmp-enable)`
To enable custom fringe bitmaps for [flycheck](https://www.flycheck.org/en/latest/):\
* flycheck:\
`(eval-after-load 'flycheck #'adwaita-dark-theme-flycheck-fringe-bmp-enable)`
To enable custom fringe bitmaps for [flymake](https://www.emacswiki.org/emacs/FlyMake):\
* flymake:\
`(eval-after-load 'flymake #'adwaita-dark-theme-flymake-fringe-bmp-enable)`
## Feedback
If you experience any issues with this package, please
[open an issue](https://gitlab.com/jessieh/adwaita-dark-theme/issues/new)
[open an issue](https://git.tty.dog/jessieh/adwaita-dark-theme/issues/new)
on the issue tracker.
Suggestions for improvements and feature requests are always appreciated, as well!

View File

@ -1,11 +1,11 @@
;;; adwaita-dark-theme.el --- A dark color scheme inspired by Adwaita -*- lexical-binding: t; -*-
;;
;; Author: Jessie Hildebrandt <jessieh.net>
;; Homepage: https://gitlab.com/jessieh/adwaita-dark-theme
;; Keywords: mode-line faces
;; Version: 1.1.0
;; Version: 1.3.0
;; Package-Requires: ((emacs "27.1"))
;;
;; This file is not part of GNU Emacs.
;;; Commentary:
@ -16,8 +16,8 @@
;; Features offered:
;; * Beautiful dark color scheme inspired by Adwaita
;; * Automatic 256-color mode support
;; * Custom configurations for neotree and eldoc-frame
;; * Custom fringe bitmaps for line continuations, visual-line-mode, diff-hl, flycheck, and flymake
;; * Custom configuration for neotree
;; * Lightweight with no dependencies
;;
;; To replace default line continuation/line wrap fringe bitmaps:
@ -26,6 +26,9 @@
;; To enable custom configuration for `neotree':
;; (eval-after-load 'neotree #'adwaita-dark-theme-neotree-configuration-enable)
;;
;; To enable custom configuration for `eldoc-frame':
;; (eval-after-load 'eldoc-frame #'adwaita-dark-theme-eldoc-frame-configuration-enable)
;;
;; To enable custom fringe bitmaps for `diff-hl':
;; (eval-after-load 'diff-hl #'adwaita-dark-theme-diff-hl-fringe-bmp-enable)
;;
@ -64,29 +67,33 @@
;; External variable defs
;; ---------------------------------- ;;
(defvar diff-hl-fringe-bmp-function)
(defvar flymake-error-bitmap)
(defvar flymake-warning-bitmap)
(defvar flymake-note-bitmap)
(defvar neotree-dir-button-keymap)
(defvar neotree-file-button-keymap)
(defvar neo-global--window)
(eval-when-compile
(defvar diff-hl-fringe-bmp-function)
(defvar eldoc-frame-parameters)
(defvar flymake-error-bitmap)
(defvar flymake-warning-bitmap)
(defvar flymake-note-bitmap)
(defvar neo-global--window))
;; ---------------------------------- ;;
;; External function decls
;; ---------------------------------- ;;
(declare-function flycheck-redefine-standard-error-levels "flycheck" (&optional margin-str fringe-bitmap))
(declare-function neo-path--file-short-name "neotree" (file))
(declare-function neo-buffer--node-list-set "neotree" (line-num path))
(declare-function neo-buffer--newline-and-begin "neotree" ())
(declare-function neo-global--select-window "neotree" ())
(declare-function neo-buffer--insert-root-entry "neotree" (node))
(declare-function neo-buffer--insert-dir-entry "neotree" (node depth expanded))
(declare-function neo-buffer--insert-file-entry "neotree" (node depth))
(eval-when-compile
(declare-function flycheck-redefine-standard-error-levels "flycheck" (&optional margin-str fringe-bitmap))
(declare-function neo-open-dir "neotree" (full-path &optional arg))
(declare-function neo-open-file "neotree" (full-path &optional arg))
(declare-function neo-filepath-hidden-p "neotree" (node))
(declare-function neo-path--file-short-name "neotree" (file))
(declare-function neo-global--create-window "neotree" ())
(declare-function neo-buffer--newline-and-begin "neotree" ())
(declare-function neo-buffer--node-list-set "neotree" (line-num path))
(declare-function neo-buffer--insert-root-entry "neotree" (node))
(declare-function neo-buffer--insert-dir-entry "neotree" (node depth expanded))
(declare-function neo-buffer--insert-file-entry "neotree" (node depth))
(declare-function neotree-hidden-file-toggle "neotree" ())
(declare-function neotree-select-up-node "neotree" ())
(declare-function neotree-change-root "neotree" ()))
;; -------------------------------------------------------------------------- ;;
;;
@ -99,7 +106,7 @@
;; ---------------------------------- ;;
(deftheme adwaita-dark
"A dark color scheme inspired by the libadwaita colors.")
"A dark color scheme inspired by Adwaita.")
;; ---------------------------------- ;;
;; Group definition
@ -113,11 +120,41 @@
;; Variable definitions
;; ---------------------------------- ;;
(defcustom adwaita-dark-theme-pad-mode-line nil
"When non-nil, mode line faces will be padded similarly to GTK header bars."
:group 'adwaita-dark-theme
:type 'boolean)
(defcustom adwaita-dark-theme-pad-tab-line nil
"When non-nil, `tab-line-mode' faces will be padded similarly to GTK header bars."
:group 'adwaita-dark-theme
:type 'boolean)
(defcustom adwaita-dark-theme-pad-tab-bar nil
"When non-nil, `tab-bar-mode' faces will be padded similarly to GTK header bars."
:group 'adwaita-dark-theme
:type 'boolean)
(defcustom adwaita-dark-theme-no-completions-first-difference nil
"When non-nil, `completions-first-difference' will be set to an empty face."
:group 'adwaita-dark-theme
:type 'boolean)
(defcustom adwaita-dark-theme-bold-vertico-current nil
"When non-nil, `vertico-current' will be bolded to increase contrast."
:group 'adwaita-dark-theme
:type 'boolean)
(defcustom adwaita-dark-theme-gray-rainbow-delimiters nil
"When non-nil, `rainbow-delimiters-mode' faces will be the same shade of gray."
:group 'adwaita-dark-theme
:type 'boolean)
(defcustom adwaita-dark-theme-gray-outlines nil
"When non-nil, `outline-mode' faces will be alternating shades of gray."
:group 'adwaita-dark-theme
:type 'boolean)
;; -------------------------------------------------------------------------- ;;
;;
;; Theme code
@ -137,34 +174,37 @@
;; Background colors
;; [True color | 256-compatible]
(bg (if true-color-available-p "#1e1e1e" "gray12")) ; #1f1f1f
(bg-alt (if true-color-available-p "#242424" "gray14")) ; #242424
(base-0 (if true-color-available-p "#202020" "gray13")) ; #212121
(base-1 (if true-color-available-p "#262626" "gray15")) ; #262626
(base-2 (if true-color-available-p "#292929" "gray16")) ; #292929
(base-3 (if true-color-available-p "#303030" "gray19")) ; #303030
(base-4 (if true-color-available-p "#454545" "gray27")) ; #454545
(base-5 (if true-color-available-p "#656565" "gray40")) ; #666666
(base-6 (if true-color-available-p "#7b7b7b" "gray48")) ; #7a7a7a
(base-7 (if true-color-available-p "#a5a5a5" "gray65")) ; #a6a6a6
(base-8 (if true-color-available-p "#dfdfdf" "gray87")) ; #dedede
(bg (if true-color-available-p "#1c1c1c" "gray11")) ; #1c1c1c
(bg-alt (if true-color-available-p "#242424" "gray14")) ; #242424
(bg-osd (if true-color-available-p "#060606" "gray3")) ; #080808
(base-0 (if true-color-available-p "#202020" "gray13")) ; #212121
(base-1 (if true-color-available-p "#262626" "gray15")) ; #262626
(base-2 (if true-color-available-p "#292929" "gray16")) ; #292929
(base-3 (if true-color-available-p "#303030" "gray19")) ; #303030
(base-4 (if true-color-available-p "#454545" "gray27")) ; #454545
(base-5 (if true-color-available-p "#656565" "gray40")) ; #666666
(base-6 (if true-color-available-p "#7b7b7b" "gray48")) ; #7a7a7a
(base-7 (if true-color-available-p "#a5a5a5" "gray65")) ; #a6a6a6
(base-8 (if true-color-available-p "#dfdfdf" "gray87")) ; #dedede
;; Foreground colors
;; [True color | 256-compatible]
(fg (if true-color-available-p "#deddda" "gray86")) ; #dbdbdb
(fg-alt (if true-color-available-p "#77767b" "gray47")) ; #787878
(gray (if true-color-available-p "#3d3846" "gray23")) ; #3b3b3b
(red (if true-color-available-p "#ff6c6b" "indianred2")) ; #ee6363
(orange (if true-color-available-p "#ffa348" "orange2")) ; #ee9a00
(green (if true-color-available-p "#54d18c" "seagreen3")) ; #43cd80
(teal (if true-color-available-p "#5bc8af" "mediumaquamarine")) ; #66cdaa
(yellow (if true-color-available-p "#f8e45c" "gold2")) ; #eec900
(blue (if true-color-available-p "#64a6f4" "steelblue2")) ; #5cacee
(dark-blue (if true-color-available-p "#1a5fb4" "dodgerblue4")) ; #104e8b
(magenta (if true-color-available-p "#dd80de" "orchid3")) ; #cd69c9
(pink (if true-color-available-p "#edb8ee" "plum")) ; #dda0dd
(violet (if true-color-available-p "#7d8ac7" "mediumpurple3")) ; #8968cd
(cyan (if true-color-available-p "#7ee5ff" "mediumturquoise"))) ; #48d1cc
(fg (if true-color-available-p "#deddda" "gray86")) ; #dbdbdb
(fg-alt (if true-color-available-p "#77767b" "gray47")) ; #787878
(fg-osd (if true-color-available-p "#f0f0f0" "gray94")) ; #f0f0f0
(gray (if true-color-available-p "#3d3846" "gray23")) ; #3b3b3b
(red (if true-color-available-p "#ff6c6b" "indianred2")) ; #ee6363
(orange (if true-color-available-p "#ffa348" "orange2")) ; #ee9a00
(dark-orange (if true-color-available-p "#db6b1a" "darkorange3")) ; #cd6600
(green (if true-color-available-p "#54d18c" "seagreen3")) ; #43cd80
(teal (if true-color-available-p "#5bc8af" "mediumaquamarine")) ; #66cdaa
(yellow (if true-color-available-p "#f8e45c" "gold2")) ; #eec900
(blue (if true-color-available-p "#64a6f4" "steelblue2")) ; #5cacee
(dark-blue (if true-color-available-p "#1a5fb4" "dodgerblue4")) ; #104e8b
(magenta (if true-color-available-p "#dd80de" "orchid3")) ; #cd69c9
(pink (if true-color-available-p "#edb8ee" "plum")) ; #dda0dd
(violet (if true-color-available-p "#7d8ac7" "mediumpurple3")) ; #8968cd
(cyan (if true-color-available-p "#7ee5ff" "mediumturquoise"))) ; #48d1cc
(custom-theme-set-faces
'adwaita-dark
@ -181,13 +221,13 @@
`(warning ((,class (:foreground ,yellow))))
`(success ((,class (:foreground ,green))))
`(fringe ((,class (:inherit default :foreground ,base-4))))
`(region ((,class (:background ,base-4 :foreground nil :distant-foreground ,fg))))
`(region ((,class (:background ,base-4 :distant-foreground ,fg))))
`(highlight ((,class (:background ,blue :foreground ,base-0 :distant-foreground ,base-8))))
`(lazy-highlight ((,class (:inherit highlight))))
`(cursor ((,class (:background ,fg))))
`(shadow ((,class (:foreground ,base-5))))
`(minibuffer-prompt ((,class (:foreground ,base-7))))
`(tooltip ((,class (:background ,base-3 :foreground ,fg))))
`(tooltip ((,class (:background ,bg-osd :foreground ,fg-osd))))
`(secondary-selection ((,class (:background ,gray))))
`(fill-column-indicator ((,class (:foreground ,base-3))))
`(match ((,class (:foreground ,green :weight bold))))
@ -199,30 +239,30 @@
`(link-visited ((,class (:foreground ,magenta :underline t :weight bold))))
`(escape-glyph ((,class (:foreground ,pink))))
`(homoglyph ((,class (:inherit escape-glyph))))
`(widget-single-line-field ((,class :background ,base-5)))
`(widget-single-line-field ((,class (:background ,base-5))))
`(widget-field ((,class (:inherit widget-single-line-field :extend t))))
;; font-lock
`(font-lock-builtin-face ((,class (:foreground ,violet))))
`(font-lock-doc-face ((,class (:foreground ,base-6))))
`(font-lock-comment-face ((,class (:foreground ,base-5))))
`(font-lock-comment-delimiter-face ((,class (:inherit font-lock-comment-face))))
`(font-lock-doc-face ((,class (:inherit font-lock-comment-face :foreground ,base-6))))
`(font-lock-delimiter-face ((,class (:foreground ,base-7))))
`(font-lock-constant-face ((,class (:foreground ,violet))))
`(font-lock-function-name-face ((,class (:foreground ,blue))))
`(font-lock-keyword-face ((,class (:inherit bold :foreground ,orange))))
`(font-lock-variable-name-face ((,class ())))
`(font-lock-function-name-face ((,class ())))
`(font-lock-keyword-face ((,class (:foreground ,orange :weight bold))))
`(font-lock-type-face ((,class (:foreground ,teal :weight bold))))
`(font-lock-string-face ((,class (:foreground ,teal))))
`(font-lock-type-face ((,class (:foreground ,teal))))
`(font-lock-variable-name-face ((,class (:foreground ,fg))))
`(font-lock-warning-face ((,class (:inherit warning))))
`(font-lock-negation-char-face ((,class (:inherit bold :foreground ,blue))))
`(font-lock-preprocessor-face ((,class (:inherit bold :foreground ,violet))))
`(font-lock-preprocessor-char-face ((,class (:inherit bold :foreground ,violet))))
`(font-lock-regexp-grouping-backslash ((,class (:inherit bold :foreground ,teal))))
`(font-lock-regexp-grouping-construct ((,class (:inherit bold :foreground ,teal))))
`(font-lock-preprocessor-face ((,class (:foreground ,dark-orange))))
`(font-lock-negation-char-face ((,class (::weight bold))))
`(font-lock-regexp-grouping-backslash ((,class (:foreground ,teal :weight bold))))
`(font-lock-regexp-grouping-construct ((,class (:foreground ,teal :weight bold))))
;; mode-line/header-line
`(mode-line ((,class (:background ,base-3 :foreground ,fg :box (:line-width ,mode-line-padding :color ,base-3)))))
`(mode-line-inactive ((,class (:background ,bg-alt :foreground ,base-5 :box (:line-width ,mode-line-padding :color ,bg-alt)))))
`(mode-line ((,class (:background ,base-3 :foreground ,fg :box ,(when adwaita-dark-theme-pad-mode-line `(:line-width ,mode-line-padding :color ,base-3))))))
`(mode-line-inactive ((,class (:background ,bg-alt :foreground ,base-5 :box ,(when adwaita-dark-theme-pad-mode-line `(:line-width ,mode-line-padding :color ,bg-alt))))))
`(mode-line-emphasis ((,class (:foreground ,blue))))
`(mode-line-highlight ((,class (:foreground ,fg))))
`(mode-line-buffer-id ((,class (:foreground ,base-8 :weight bold))))
@ -270,6 +310,7 @@
;; completions
`(completions-annotations ((,class (:inherit shadow))))
`(completions-common-part ((,class (:foreground ,blue))))
`(completions-first-difference ((,class ,(unless adwaita-dark-theme-no-completions-first-difference '(:weight bold)))))
;; custom
`(custom-button ((,class (:background ,base-3 :foreground ,fg :box (:line-width 3 :color ,base-3)))))
@ -364,10 +405,10 @@
;; flymake
`(flymake-error ((,class (:underline (:color ,red)))))
`(flymake-note ((,class (:underline (:color ,green)))))
`(flymake-warning ((,class (:underline (:color ,orange)))))
`(flymake-warning ((,class (:underline (:color ,yellow)))))
;; flyspell
`(flyspell-incorrect ((,class (:inherit unspecified :underline (:color ,red)))))
`(flyspell-incorrect ((,class (:underline (:color ,red)))))
;; gdb
`(breakpoint-enabled ((,class (:foreground ,red))))
@ -399,12 +440,8 @@
`(isearch-fail ((,class (:foreground ,base-7 :strike-through t))))
;; line-number
`(line-number ((,class (:inherit default
:foreground ,base-5 :distant-foreground nil
:weight normal :italic nil :underline nil :strike-through nil))))
`(line-number-current-line ((,class (:inherit hl-line default
:foreground ,fg :distant-foreground nil
:weight normal :italic nil :underline nil :strike-through nil))))
`(line-number ((,class (:inherit default :foreground ,base-5))))
`(line-number-current-line ((,class (:inherit (hl-line default) :foreground ,base-7))))
;; linum
`(linum ((,class (:inherit line-number))))
@ -425,14 +462,14 @@
`(message-cited-text ((,class (:foreground ,magenta))))
;; outline
`(outline-1 ((,class (:foreground ,base-6 :weight bold))))
`(outline-2 ((,class (:foreground ,base-7 :weight bold))))
`(outline-3 ((,class (:foreground ,base-6 :weight bold))))
`(outline-4 ((,class (:foreground ,base-5 :weight bold))))
`(outline-5 ((,class (:foreground ,base-6 :weight bold))))
`(outline-6 ((,class (:foreground ,base-7 :weight bold))))
`(outline-7 ((,class (:foreground ,base-6 :weight bold))))
`(outline-8 ((,class (:foreground ,base-5 :weight bold))))
`(outline-1 ((,class (:foreground ,(if adwaita-dark-theme-gray-outlines base-6 blue) :weight bold))))
`(outline-2 ((,class (:foreground ,(if adwaita-dark-theme-gray-outlines base-7 magenta) :weight bold))))
`(outline-3 ((,class (:foreground ,(if adwaita-dark-theme-gray-outlines base-6 green) :weight bold))))
`(outline-4 ((,class (:foreground ,(if adwaita-dark-theme-gray-outlines base-5 violet) :weight bold))))
`(outline-5 ((,class (:foreground ,(if adwaita-dark-theme-gray-outlines base-6 teal) :weight bold))))
`(outline-6 ((,class (:foreground ,(if adwaita-dark-theme-gray-outlines base-7 blue) :weight bold))))
`(outline-7 ((,class (:foreground ,(if adwaita-dark-theme-gray-outlines base-6 magenta) :weight bold))))
`(outline-8 ((,class (:foreground ,(if adwaita-dark-theme-gray-outlines base-5 green) :weight bold))))
;; pulse
`(pulse-highlight-start-face ((,class (:background ,base-5 :extend t))))
@ -449,15 +486,15 @@
;; tab-line
`(tab-line ((,class (:background ,bg-alt))))
`(tab-line-tab ((,class (:background ,bg :foreground ,fg :box (:line-width ,mode-line-padding :color ,bg)))))
`(tab-line-tab-inactive ((,class (:background ,bg-alt :foreground ,fg-alt :box (:line-width ,mode-line-padding :color ,bg-alt)))))
`(tab-line-tab ((,class (:background ,bg :foreground ,fg :box ,(when adwaita-dark-theme-pad-tab-line `(:line-width ,mode-line-padding :color ,bg))))))
`(tab-line-tab-inactive ((,class (:background ,bg-alt :foreground ,fg-alt :box ,(when adwaita-dark-theme-pad-tab-line `(:line-width ,mode-line-padding :color ,bg-alt))))))
`(tab-line-tab-current ((,class (:inherit tab-line-tab))))
`(tab-line-highlight ((,class (:inherit tab-line-tab))))
;; tab-bar
`(tab-bar ((,class (:background ,bg-alt))))
`(tab-bar-tab ((,class (:background ,bg :foreground ,fg :box (:line-width ,mode-line-padding :color ,bg)))))
`(tab-bar-tab-inactive ((,class (:background ,bg-alt :foreground ,fg-alt :box (:line-width ,mode-line-padding :color ,bg-alt)))))
`(tab-bar-tab ((,class (:background ,bg :foreground ,fg :box ,(when adwaita-dark-theme-pad-tab-bar `(:line-width ,mode-line-padding :color ,bg))))))
`(tab-bar-tab-inactive ((,class (:background ,bg-alt :foreground ,fg-alt :box ,(when adwaita-dark-theme-pad-tab-bar `(:line-width ,mode-line-padding :color ,bg-alt))))))
;; which-func
`(which-func ((,class (:inherit font-lock-function-name-face))))
@ -500,16 +537,34 @@
`(bufler-path ((,class (:inherit font-lock-string-face))))
`(bufler-buffer-special ((,class (:inherit font-lock-builtin-face))))
;; cider
`(cider-fringe-good-face ((,class (:foreground ,green))))
`(cider-result-overlay-face ((,class (:foreground ,base-4))))
`(cider-error-overlay-face ((,class (:foreground ,red))))
`(cider-error-highlight-face ((,class (:underline (:color ,red)))))
`(cider-warning-highlight-face ((,class (:underline (:color ,yellow)))))
`(cider-deprecated-face ((,class (:inherit shadow :strike-through t))))
`(cider-repl-stdout-face ((,class (:inherit font-lock-doc-face))))
`(cider-repl-stderr-face ((,class (:inherit error))))
`(cider-test-error-face ((,class (:foreground ,dark-orange))))
`(cider-test-failure-face ((,class (:foreground ,red))))
`(cider-test-success-face ((,class (:foreground ,green))))
`(cider-stacktrace-fn-face ((,class (:foreground ,fg :weight bold))))
`(cider-stacktrace-error-class-face ((,class (:foreground ,red :weight bold))))
`(cider-stacktrace-error-message-face ((,class (:foreground ,fg))))
`(cider-stacktrace-filter-active-face ((,class (:inherit link))))
`(cider-stacktrace-filter-inactive-face ((,class (:inherit (shadow link)))))
;; company
`(company-tooltip ((,class (:inherit tooltip))))
`(company-tooltip ((,class (:background ,base-3 :foreground ,base-8))))
`(company-tooltip-common ((,class (:foreground ,blue :distant-foreground ,base-0 :weight bold))))
`(company-tooltip-search ((,class (:background ,blue :foreground ,bg :distant-foreground ,fg :weight bold))))
`(company-tooltip-search-selection ((,class (:background ,cyan :weight bold))))
`(company-tooltip-selection ((,class (:background ,dark-blue :weight bold))))
`(company-tooltip-mouse ((,class (:background ,magenta :foreground ,bg :distant-foreground ,fg))))
`(company-tooltip-annotation ((,class (:foreground ,violet :distant-foreground ,bg))))
`(company-scrollbar-bg ((,class (:inherit tooltip))))
`(company-scrollbar-fg ((,class (:background ,blue))))
`(company-scrollbar-bg ((,class (:background ,base-3))))
`(company-scrollbar-fg ((,class (:background ,base-5))))
`(company-preview ((,class (:foreground ,base-5))))
`(company-preview-common ((,class (:background ,base-3 :foreground ,blue))))
`(company-preview-search ((,class (:inherit company-tooltip-search))))
@ -531,6 +586,14 @@
`(diff-hl-delete ((,class (:foreground ,red))))
`(diff-hl-insert ((,class (:foreground ,green))))
;; eldoc-box
`(eldoc-box-body ((,class (:inherit (tooltip variable-pitch-text)))))
`(eldoc-box-border ((,class (:background ,base-3))))
;; eldoc-frame
`(eldoc-frame-default ((,class (:inherit (tooltip variable-pitch-text)))))
`(eldoc-frame-border ((,class (:background ,base-3))))
;; fic-mode
`(fic-face ((,class (:foreground ,yellow :weight bold))))
@ -558,9 +621,9 @@
`(git-gutter:deleted ((,class (:foreground ,red))))
;; git-gutter+
`(git-gutter+-modified ((,class (:background nil :foreground ,orange))))
`(git-gutter+-added ((,class (:background nil :foreground ,green))))
`(git-gutter+-deleted ((,class (:background nil :foreground ,red))))
`(git-gutter+-modified ((,class (:foreground ,orange))))
`(git-gutter+-added ((,class (:foreground ,green))))
`(git-gutter+-deleted ((,class (:foreground ,red))))
;; git-gutter-fringe
`(git-gutter-fr:modified ((,class (:inherit git-gutter:modified))))
@ -607,8 +670,8 @@
`(ido-vertical-match-face ((,class (:foreground ,blue :underline nil))))
;; ivy
`(ivy-current-match ((,class (:background ,base-4 :distant-foreground nil))))
`(ivy-minibuffer-match-face-1 ((,class (:background nil :foreground ,gray :weight light))))
`(ivy-current-match ((,class (:background ,base-4))))
`(ivy-minibuffer-match-face-1 ((,class (:foreground ,gray :weight light))))
`(ivy-minibuffer-match-face-2 ((,class (:inherit ivy-minibuffer-match-face-1 :background ,base-1 :foreground ,magenta :weight semi-bold))))
`(ivy-minibuffer-match-face-3 ((,class (:inherit ivy-minibuffer-match-face-2 :foreground ,green :weight semi-bold))))
`(ivy-minibuffer-match-face-4 ((,class (:inherit ivy-minibuffer-match-face-2 :foreground ,yellow :weight semi-bold))))
@ -730,7 +793,9 @@
`(paren-face-no-match ((,class (:inherit show-paren-mismatch))))
;; mood-line
`(mood-line-buffer-status-narrowed ((,class (:foreground ,base-7))))
`(mood-line-status-info ((,class (:foreground ,teal))))
`(mood-line-unimportant ((,class (:foreground ,base-5))))
;; multiple-cursors
`(mc/cursor-face ((,class (:inherit cursor :background ,fg-alt))))
@ -740,23 +805,29 @@
;; neotree
`(neo-root-dir-face ((,class (:foreground ,base-8 :weight bold))))
`(neo-dir-link-face ((,class (:foreground ,base-7))))
`(neo-file-link-face ((,class (:foreground ,fg))))
`(neo-dir-link-face ((,class (:foreground ,fg :foreground ,base-7))))
`(neo-expand-btn-face ((,class (:foreground ,blue))))
`(neo-vc-edited-face ((,class (:foreground ,yellow))))
`(neo-expand-btn-face ((,class (:foreground ,base-4))))
`(neo-vc-edited-face ((,class (:foreground ,orange))))
`(neo-vc-added-face ((,class (:foreground ,green))))
`(neo-vc-removed-face ((,class (:foreground ,red :strike-through t))))
`(neo-vc-ignored-face ((,class (:foreground ,base-5))))
`(neo-vc-ignored-face ((,class (:foreground ,base-6))))
;; nlinum
`(nlinum-current-line ((,class (:inherit line-number-current-line))))
`(nlinum-hl-face ((,class (:inherit line-number-current-line))))
`(nlinum-relative-current-face ((,class (:inherit line-number-current-line))))
;; orderless
`(orderless-match-face-0 ((,class (:inherit completions-common-part))))
`(orderless-match-face-1 ((,class (:inherit orderless-match-face-0))))
`(orderless-match-face-2 ((,class (:inherit orderless-match-face-0))))
`(orderless-match-face-3 ((,class (:inherit orderless-match-face-0))))
;; popup
`(popup-face ((,class (:inherit tooltip))))
`(popup-tip-face ((,class (:inherit popup-face :background ,base-0 :foreground ,violet))))
`(popup-selection-face ((,class (:background ,base-5))))
`(popup-face ((,class (:background ,base-3 :foreground ,base-8))))
`(popup-tip-face ((,class (:inherit tooltip))))
`(popup-selection-face ((,class (:background ,base-4))))
;; rainbow-delimiters
`(rainbow-delimiters-depth-1-face ((,class (:foreground ,(if adwaita-dark-theme-gray-rainbow-delimiters base-7 blue)))))
@ -771,6 +842,13 @@
`(rainbow-delimiters-unmatched-face ((,class (:foreground ,red :weight ultra-bold))))
`(rainbow-delimiters-mismatched-face ((,class (:inherit rainbow-delimiters-unmatched-face))))
;; sly
`(sly-action-face ((,class (:inherit link))))
`(sly-mrepl-prompt-face ((,class (:inherit font-lock-type-face))))
`(sly-mrepl-output-face ((,class (:inherit font-lock-doc-face))))
`(sly-mrepl-note-face ((,class (:inherit font-lock-comment-face))))
`(sly-db-section-face ((,class (:foreground ,base-8 :weight bold :box ,(when flat-button-available-p '(:line-width 4 :style flat-button))))))
;; smartparens
`(sp-pair-overlay-face ((,class (:background ,base-4))))
`(sp-show-pair-match-face ((,class (:inherit show-paren-match))))
@ -778,7 +856,8 @@
;; solaire-mode
`(solaire-default-face ((,class (:inherit default :background ,bg-alt))))
`(solaire-hl-line-face ((,class (:inherit hl-line :background ,bg))))
`(solaire-hl-line-face ((,class (:inherit hl-line :background ,base-3))))
`(solaire-fringe-face ((,class (:inherit solaire-default-face))))
;; swiper
`(swiper-line-face ((,class (:background ,blue :foreground ,base-0))))
@ -787,6 +866,11 @@
`(swiper-match-face-3 ((,class (:background ,magenta :foreground ,base-0 :weight bold))))
`(swiper-match-face-4 ((,class (:background ,green :foreground ,base-0 :weight bold))))
;; tempel
`(tempel-form ((,class ())))
`(tempel-field ((,class (:underline (:color ,base-5)))))
`(tempel-default ((,class (:underline t))))
;; transient
`(transient-heading ((,class (:foreground ,base-8 :weight bold))))
`(transient-key ((,class (:inherit help-key-binding))))
@ -815,7 +899,8 @@
`(undo-tree-visualizer-register-face ((,class (:foreground ,yellow))))
;; vertico
`(vertico-current ((,class (:background ,base-3 :weight bold))))
`(vertico-current ((,class (:background ,base-3 :bold ,(when adwaita-dark-theme-bold-vertico-current 'bold)))))
`(vertico-multiline ((,class (:foreground ,base-6))))
;; vundo
`(vundo-default ((,class (:background ,bg-alt))))
@ -842,57 +927,88 @@
;; Internal functions
;; ---------------------------------- ;;
(defun adwaita-dark-theme--neotree-hidden-dir-p (dirname)
"Return non-nil if DIRNAME should be considered hidden."
(string-prefix-p "." dirname))
(defun adwaita-dark-theme--neotree-hidden-file-p (filename)
"Return non-nil if FILENAME should be considered hidden."
(or (string-prefix-p "." filename)
(and (string-prefix-p "#" filename)
(string-suffix-p "#" filename))))
(defun adwaita-dark-theme--neotree-insert-root (node)
"Insert root directory NODE at point."
(insert " "
(propertize
"🖿"
'face '(:inherit (neo-root-dir-face) :height 1.5))
(propertize
(concat " " (or (neo-path--file-short-name node) "-") " \n")
'face '(:inherit (neo-root-dir-face) :height 1.0))))
(insert " ")
(insert-button (concat ""
(propertize "🖿"
'face '(:inherit (neo-root-dir-face) :height 1.5))
" "
(propertize (or (neo-path--file-short-name node) "-")
'face 'neo-root-dir-face)
(propertize " "
'display `((space :align-to (- right 0 1)))))
'face '(nil)
'follow-link t
'neo-full-path (directory-file-name node)
'keymap (let ((button-keymap (make-sparse-keymap)))
(define-key button-keymap [mouse-2] (lambda ()
(interactive)
(neotree-hidden-file-toggle)))
(define-key button-keymap [mouse-3] (lambda ()
(interactive)
(mouse-set-point last-input-event)
(neotree-select-up-node)))
button-keymap)
'help-echo "mouse-1: Toggle hidden files\nmouse-3: Move root up one directory")
(neo-buffer--newline-and-begin))
(defun adwaita-dark-theme--neotree-insert-dir (node depth expanded)
"Insert directory NODE with indentation level DEPTH and state EXPANDED at point."
(let ((short-name (neo-path--file-short-name node))
(face '(:inherit (neo-dir-link-face))))
(when (adwaita-dark-theme--neotree-hidden-dir-p short-name)
(setq face '(:inherit (shadow neo-dir-link-face))))
(insert-char ?\s (* (- depth 1) 2))
(insert (propertize
(if expanded "" "")
'face face))
(insert-button (concat "🖿 " short-name)
(is-hidden (neo-filepath-hidden-p node)))
(insert " ")
(insert-button (concat (make-string (- (* depth 2) 1) ?\s)
(propertize (concat "🖿 "
short-name)
'face (if is-hidden
'(:inherit shadow neo-dir-link-face)
'neo-dir-link-face))
(propertize " "
'display `((space :align-to (- right 0 3))))
(propertize (if expanded "" " ")
'face '(:inherit neo-expand-btn-face :height 1.2))
(propertize " "
'display `((space :align-to (- right 0 1)))))
'face '(nil)
'follow-link t
'face face
'neo-full-path node
'keymap neotree-dir-button-keymap)
'keymap (let ((button-keymap (make-sparse-keymap)))
(define-key button-keymap [mouse-2] (lambda ()
(interactive)
(let ((neo-click-changes-root nil))
(ignore neo-click-changes-root)
(neo-open-dir node))))
(define-key button-keymap [mouse-3] (lambda ()
(interactive)
(mouse-set-point last-input-event)
(neotree-change-root)))
button-keymap)
'help-echo "mouse-1: Fold/unfold directory\nmouse-3: Change root to directory")
(neo-buffer--node-list-set nil node)
(neo-buffer--newline-and-begin)))
(defun adwaita-dark-theme--neotree-insert-file (node depth)
"Insert file NODE with indentation level DEPTH at point."
(let ((short-name (neo-path--file-short-name node))
(face '(:inherit (neo-file-link-face))))
(when (adwaita-dark-theme--neotree-hidden-file-p short-name)
(setq face '(:inherit shadow neo-file-link-face)))
(insert-char ?\s (* (- depth 1) 2))
(insert (propertize " " 'face face))
(insert-button short-name
(let* ((short-name (neo-path--file-short-name node))
(is-hidden (neo-filepath-hidden-p node)))
(insert " ")
(insert-button (concat (make-string (- (* depth 2) 1) ?\s)
short-name
(propertize " "
'display `((space :align-to (- right 0 1)))))
'follow-link t
'face face
'face (if is-hidden
'(:inherit shadow neo-file-link-face)
'neo-file-link-face)
'neo-full-path node
'keymap neotree-file-button-keymap)
'keymap (let ((button-keymap (make-sparse-keymap)))
(define-key button-keymap [mouse-2] (lambda ()
(interactive)
(neo-open-file node)))
button-keymap)
'help-echo "mouse-1: Open file")
(neo-buffer--node-list-set nil node)
(neo-buffer--newline-and-begin)))
@ -903,18 +1019,48 @@
;;;###autoload
(defun adwaita-dark-theme-neotree-configuration-enable ()
"Enable custom adwaita-dark configuration for use with neotree."
(advice-add #'neo-global--select-window :after (lambda ()
(setq-local line-spacing 3
(advice-add #'neo-global--create-window :after (lambda ()
(setq-local cursor-type nil
line-spacing 0.25
mode-line-format nil
auto-hscroll-mode nil
buffer-display-table (make-display-table))
(visual-line-mode -1)
(set-display-table-slot buffer-display-table
'truncation
(make-glyph-code 8230 'fringe))
(set-window-fringes neo-global--window 0 0)
(set-display-table-slot buffer-display-table 'truncation 8230)))
(visual-line-mode -1)))
(advice-add #'neo-buffer--insert-root-entry :override #'adwaita-dark-theme--neotree-insert-root)
(advice-add #'neo-buffer--insert-dir-entry :override #'adwaita-dark-theme--neotree-insert-dir)
(advice-add #'neo-buffer--insert-file-entry :override #'adwaita-dark-theme--neotree-insert-file))
;; -------------------------------------------------------------------------- ;;
;;
;; eldoc-frame configuration
;;
;; -------------------------------------------------------------------------- ;;
;; ---------------------------------- ;;
;; Setup function
;; ---------------------------------- ;;
;;;###autoload
(defun adwaita-dark-theme-eldoc-frame-configuration-enable ()
"Enable custom adwaita-dark configuration for use with eldoc-frame."
(set-face-background 'eldoc-frame-default "#000000")
(dolist (parameter '((left-fringe . 12)
(right-fringe . 12)
(alpha-background . 80)))
(add-to-list 'eldoc-frame-parameters parameter))
(add-hook 'eldoc-frame-buffer-hook
(lambda ()
(setq-local line-spacing 0.25)
(goto-char (point-min))
(insert (propertize "\s\n" 'face '(:height 0.2)))
(goto-char (point-max))
(insert (propertize "\s\n" 'face '(:height 0.2))))
100))
;; -------------------------------------------------------------------------- ;;
;;
;; Arrow fringe bitmaps configuration