emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/modus-operandi-theme af3a327 089/112: Tweak `bg-paren-m


From: Stefan Monnier
Subject: [elpa] externals/modus-operandi-theme af3a327 089/112: Tweak `bg-paren-match' value and implementation
Date: Mon, 30 Mar 2020 15:59:45 -0400 (EDT)

branch: externals/modus-operandi-theme
commit af3a327b02b1b02b287f0d0e9bef2aff8df99a4b
Author: Protesilaos Stavrou <address@hidden>
Commit: Protesilaos Stavrou <address@hidden>

    Tweak `bg-paren-match' value and implementation
    
    This concerns the colour that is applied as a background to the matching
    delimiter with `show-paren-mode'.
    
    Scenaria
    --------
    
    There are four scenaria of text-editing that need to be considered:
    
    1. Paren match combined with the foreground of the delimiter.  The
    contrast ratio for this should always be >= 7:1.
    
    2. The foreground of the paren match needs to be 7:1 with the cursor
    (while the cursor is the same as the main foreground).  This is because
    Emacs will use the paren-match background as the character's foreground
    when the cursor is placed over a highlighted delimiter.  Ergo, the
    foreground value for scenario 1 needs to be the same as the main
    foreground (pure black/white).
    
    3. Paren match surrounded by the main background.  The minimum contrast
    between two adjacent backgrounds can be as low as 1.25:1 (based on my
    testing, which I am nevertheless willing to reconsider).  A slightly
    higher value is preferable, while too high a value becomes annoying by
    calling too much attention to itself.
    
    4. Paren match within an active region.  Again the 1.25:1 applies.  Here
    the ratio can approximate or meet the threshold because of the
    interactive nature of marking a region.
    
    Based on the above, we derive two constants to guide our process:
    
    - fg-paren-match == fg-main
    - bg-paren-match / bg-region == 1.25
    
    The value for scenario 3 is the one left once the others are satisfied.
    
    Contrast ratios
    ---------------
    
    The table below shows the colour contrast of the old value of
    `bg-paren-match' in the first row and the new values in the second one.
    The idea is to have a more balanced result in all contexts where the
    matching delimiter is highlighted.  Note that two themes do not have the
    same contrast ratios, with the dark themes being lower, because the
    human eye can spot more subtle differences on a dark background.
    
    Modus Operandi:
    |          |   #000000 |   #ffffff |  #bcbcbc |                       |
    | bg-paren | (fg-main) | (bg-main) | (region) | Comment               |
    |----------+-----------+-----------+----------+-----------------------|
    | #deb8af  |      11.5 |      1.81 |     1.04 | Bad for region        |
    | #efcabf  |      13.8 |      1.51 |     1.25 | Best for all contexts |
    
    Modus Vivendi:
    |          |   #ffffff |   #000000 |  #3c3c3c |                       |
    | bg-paren | (bg-main) | (fg-main) | (region) | Comment               |
    |----------+-----------+-----------+----------+-----------------------|
    | #754a5d  |      7.25 |      2.89 |     1.52 | Fairly good           |
    | #6e3a50  |      8.80 |      2.38 |     1.25 | Best for all contexts |
    
    Finally, the bg-paren values are slightly accented towards a direction
    that is not common for other foreground values that are applied to
    syntax highlighting.  This is to keep things clear, whereas e.g. an
    intense magenta could be conflated with the name of a keyword: not what
    you want from some transient feedback.
    
    This commit relates to the tweaks that followed the report in issue 29:
    https://gitlab.com/protesilaos/modus-themes/-/issues/29
---
 modus-operandi-theme.el | 12 ++++++------
 modus-vivendi-theme.el  | 12 ++++++------
 2 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/modus-operandi-theme.el b/modus-operandi-theme.el
index 8dae02f..c8b3d97 100644
--- a/modus-operandi-theme.el
+++ b/modus-operandi-theme.el
@@ -454,9 +454,9 @@ between foreground and background is >= 7:1)."
       ;; can be combined with any of the "active" values, plus the
       ;; "special" and base foreground colours
       ;;
-      ;; `bg-region' and `bg-tab-active' must be combined with
-      ;; `fg-main', while `bg-tab-inactive' should be combined with
-      ;; `fg-dim'
+      ;; `bg-paren-match', `bg-region' and `bg-tab-active' must be
+      ;; combined with `fg-main', while `bg-tab-inactive' should be
+      ;; combined with `fg-dim'
       ;;
       ;; `fg-tab-active' is meant to be combined with `bg-tab-active',
       ;; though only for styling special elements, such as underlining
@@ -466,6 +466,7 @@ between foreground and background is >= 7:1)."
       ;;
       ;; all other pairs are combinable with themselves
       (bg-hl-line "#f1f2f6")
+      (bg-paren-match "#efcabf")
       (bg-region "#bcbcbc")
       (bg-tab-active "#ababab")
       (bg-tab-inactive "#dadada")
@@ -474,7 +475,6 @@ between foreground and background is >= 7:1)."
       (fg-window-divider-outer "#585858")
       (fg-header "#2a2a2a") (bg-header "#e5e5e5")
       (fg-whitespace "#645060") (bg-whitespace "#fff8fc")
-      (fg-paren-match "#222222") (bg-paren-match "#deb8af")
       (fg-diff-heading "#043355") (bg-diff-heading "#b7c2dd")
       (fg-diff-added "#004500") (bg-diff-added "#d4fad4")
       (fg-diff-changed "#524200") (bg-diff-changed "#fcefcf")
@@ -2385,7 +2385,7 @@ between foreground and background is >= 7:1)."
    `(sh-heredoc ((,class (:foreground ,blue-alt))))
    `(sh-quoted-exec ((,class (:foreground ,magenta-alt :weight 
,modus-theme-bold))))
    ;;;; show-paren-mode
-   `(show-paren-match ((,class (:background ,bg-paren-match :foreground 
,fg-paren-match))))
+   `(show-paren-match ((,class (:background ,bg-paren-match :foreground 
,fg-main))))
    `(show-paren-match-expression ((,class (:inherit 
modus-theme-special-calm))))
    `(show-paren-mismatch ((,class (:inherit modus-theme-intense-red))))
    ;;;; side-notes
@@ -2421,7 +2421,7 @@ between foreground and background is >= 7:1)."
    ;;;; smartparens
    `(sp-pair-overlay-face ((,class (:inherit modus-theme-special-warm))))
    `(sp-show-pair-enclosing ((,class (:inherit modus-theme-special-mild))))
-   `(sp-show-pair-match-face ((,class (:background ,bg-paren-match :foreground 
,fg-paren-match))))
+   `(sp-show-pair-match-face ((,class (:background ,bg-paren-match :foreground 
,fg-main))))
    `(sp-show-pair-mismatch-face ((,class (:inherit modus-theme-intense-red))))
    `(sp-wrap-overlay-closing-pair ((,class (:inherit sp-pair-overlay-face))))
    `(sp-wrap-overlay-face ((,class (:inherit sp-pair-overlay-face))))
diff --git a/modus-vivendi-theme.el b/modus-vivendi-theme.el
index 2f663ef..8097dd4 100644
--- a/modus-vivendi-theme.el
+++ b/modus-vivendi-theme.el
@@ -454,9 +454,9 @@ between foreground and background is >= 7:1)."
       ;; can be combined with any of the "active" values, plus the
       ;; "special" and base foreground colours
       ;;
-      ;; `bg-region' and `bg-tab-active' must be combined with
-      ;; `fg-main', while `bg-tab-inactive' should be combined with
-      ;; `fg-dim'
+      ;; `bg-paren-match', `bg-region' and `bg-tab-active' must be
+      ;; combined with `fg-main', while `bg-tab-inactive' should be
+      ;; combined with `fg-dim'
       ;;
       ;; `fg-tab-active' is meant to be combined with `bg-tab-active',
       ;; though only for styling special elements, such as underlining
@@ -466,6 +466,7 @@ between foreground and background is >= 7:1)."
       ;;
       ;; all other pairs are combinable with themselves
       (bg-hl-line "#151823")
+      (bg-paren-match "#6e3a50")
       (bg-region "#3c3c3c")
       (bg-tab-active "#484848")
       (bg-tab-inactive "#2f2f2f")
@@ -474,7 +475,6 @@ between foreground and background is >= 7:1)."
       (fg-window-divider-outer "#969696")
       (fg-header "#dddddd") (bg-header "#2a2a2a")
       (fg-whitespace "#a4959f") (bg-whitespace "#170016")
-      (fg-paren-match "#fcfcfc") (bg-paren-match "#754a5d")
       (fg-diff-heading "#dadffe") (bg-diff-heading "#304466")
       (fg-diff-added "#94ba94") (bg-diff-added "#0a280a")
       (fg-diff-changed "#b0ba9f") (bg-diff-changed "#2a2000")
@@ -2385,7 +2385,7 @@ between foreground and background is >= 7:1)."
    `(sh-heredoc ((,class (:foreground ,blue-alt))))
    `(sh-quoted-exec ((,class (:foreground ,magenta-alt :weight 
,modus-theme-bold))))
    ;;;; show-paren-mode
-   `(show-paren-match ((,class (:background ,bg-paren-match :foreground 
,fg-paren-match))))
+   `(show-paren-match ((,class (:background ,bg-paren-match :foreground 
,fg-main))))
    `(show-paren-match-expression ((,class (:inherit 
modus-theme-special-calm))))
    `(show-paren-mismatch ((,class (:inherit modus-theme-intense-red))))
    ;;;; skewer-mode
@@ -2421,7 +2421,7 @@ between foreground and background is >= 7:1)."
    ;;;; smartparens
    `(sp-pair-overlay-face ((,class (:inherit modus-theme-special-warm))))
    `(sp-show-pair-enclosing ((,class (:inherit modus-theme-special-mild))))
-   `(sp-show-pair-match-face ((,class (:background ,bg-paren-match :foreground 
,fg-paren-match))))
+   `(sp-show-pair-match-face ((,class (:background ,bg-paren-match :foreground 
,fg-main))))
    `(sp-show-pair-mismatch-face ((,class (:inherit modus-theme-intense-red))))
    `(sp-wrap-overlay-closing-pair ((,class (:inherit sp-pair-overlay-face))))
    `(sp-wrap-overlay-face ((,class (:inherit sp-pair-overlay-face))))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]