all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Juri Linkov <juri@jurta.org>
To: 17808@debbugs.gnu.org
Subject: bug#17808: 24.4.50; vc-annotate colors
Date: Wed, 02 Jul 2014 02:18:27 +0300	[thread overview]
Message-ID: <87vbrg8vvo.fsf@mail.jurta.org> (raw)
In-Reply-To: <87bntpl77v.fsf@mail.jurta.org> (Juri Linkov's message of "Thu, 19 Jun 2014 09:54:44 +0300")

> Currently vc-annotate uses dark background even when the default background
> is light.  Would be nicer to have another option similar to the existing
> `vc-annotate-background' that will define the default foreground
> (instead of the default background) and put colors from color-map
> on the background instead of the foreground:

Actually much cleaner would be to add a dedicated user option
that will define whether to apply the color map to the background
or to the foreground.  When applied to the background with the
default light background, colors need to be less saturated,
so the saturation is decreased from 75% to 20% for light backgrounds.
Also `vc-annotate-background' doesn't need the default value "black"
because the background will be dark on dark environments anyway.

=== modified file 'lisp/vc/vc-annotate.el'
--- lisp/vc/vc-annotate.el	2014-02-10 01:34:22 +0000
+++ lisp/vc/vc-annotate.el	2014-07-01 23:17:33 +0000
@@ -40,6 +40,22 @@ (defcustom vc-annotate-display-mode 'ful
 			 :value "20.5"))
   :group 'vc)
 
+(defcustom vc-annotate-background-mode
+  (not (or (eq (or frame-background-mode
+		   (frame-parameter nil 'background-mode)) 'dark)
+	   (and (tty-display-color-p) (<= (display-color-cells) 8))))
+  "Non-nil means `vc-annotate-color-map' is applied to the background.
+
+When non-nil, the color range from `vc-annotate-color-map' is applied
+to the background, while the foreground remains default.
+
+When nil, the color range from `vc-annotate-color-map' is applied
+to the foreground, and the color from the option `vc-annotate-background'
+is applied to the background."
+  :type 'boolean
+  :version "24.5"
+  :group 'vc)
+
 (defcustom vc-annotate-color-map
   (if (and (tty-display-color-p) (<= (display-color-cells) 8))
       ;; A custom sorted TTY colormap
@@ -71,25 +87,49 @@ (defcustom vc-annotate-color-map
 		  (prog1
 		      (cons date x)
 		    (setq date (+ date delta)))) colors))
-    ;; Normal colormap: hue stepped from 0-240deg, value=1., saturation=0.75
-    '(( 20. . "#FF3F3F")
-      ( 40. . "#FF6C3F")
-      ( 60. . "#FF993F")
-      ( 80. . "#FFC63F")
-      (100. . "#FFF33F")
-      (120. . "#DDFF3F")
-      (140. . "#B0FF3F")
-      (160. . "#83FF3F")
-      (180. . "#56FF3F")
-      (200. . "#3FFF56")
-      (220. . "#3FFF83")
-      (240. . "#3FFFB0")
-      (260. . "#3FFFDD")
-      (280. . "#3FF3FF")
-      (300. . "#3FC6FF")
-      (320. . "#3F99FF")
-      (340. . "#3F6CFF")
-      (360. . "#3F3FFF")))
+    (cond
+     ;; Normal colormap for background colors with dark foreground:
+     ;; hue stepped from 0-240deg, value=1., saturation=0.20
+     (vc-annotate-background-mode
+      '(( 20. . "#FFCCCC")
+	( 40. . "#FFD8CC")
+	( 60. . "#FFE4CC")
+	( 80. . "#FFF0CC")
+	(100. . "#FFFCCC")
+	(120. . "#F6FFCC")
+	(140. . "#EAFFCC")
+	(160. . "#DEFFCC")
+	(180. . "#D2FFCC")
+	(200. . "#CCFFD2")
+	(220. . "#CCFFDE")
+	(240. . "#CCFFEA")
+	(260. . "#CCFFF6")
+	(280. . "#CCFCFF")
+	(300. . "#CCF0FF")
+	(320. . "#CCE4FF")
+	(340. . "#CCD8FF")
+	(360. . "#CCCCFF")))
+     ;; Normal colormap for foreground colors on dark background:
+     ;; hue stepped from 0-240deg, value=1., saturation=0.75
+     (t
+      '(( 20. . "#FF3F3F")
+	( 40. . "#FF6C3F")
+	( 60. . "#FF993F")
+	( 80. . "#FFC63F")
+	(100. . "#FFF33F")
+	(120. . "#DDFF3F")
+	(140. . "#B0FF3F")
+	(160. . "#83FF3F")
+	(180. . "#56FF3F")
+	(200. . "#3FFF56")
+	(220. . "#3FFF83")
+	(240. . "#3FFFB0")
+	(260. . "#3FFFDD")
+	(280. . "#3FF3FF")
+	(300. . "#3FC6FF")
+	(320. . "#3F99FF")
+	(340. . "#3F6CFF")
+	(360. . "#3F3FFF")))))
   "Association list of age versus color, for \\[vc-annotate].
 Ages are given in units of fractional days.  Default is eighteen
 steps using a twenty day increment, from red to blue.  For TTY
@@ -98,12 +138,12 @@ (defcustom vc-annotate-color-map
   :type 'alist
   :group 'vc)
 
-(defcustom vc-annotate-very-old-color "#3F3FFF"
+(defcustom vc-annotate-very-old-color (if vc-annotate-background-mode "#CCCCFF" "#3F3FFF")
   "Color for lines older than the current color range in \\[vc-annotate]."
   :type 'string
   :group 'vc)
 
-(defcustom vc-annotate-background "black"
+(defcustom vc-annotate-background nil
   "Background color for \\[vc-annotate].
 Default color is used if nil."
   :type '(choice (const :tag "Default background" nil) (color))
@@ -347,7 +387,9 @@ (defun vc-annotate (file rev &optional d
 `vc-annotate-menu-elements' customizes the menu elements of the
 mode-specific menu.  `vc-annotate-color-map' and
 `vc-annotate-very-old-color' define the mapping of time to colors.
-`vc-annotate-background' specifies the background color."
+`vc-annotate-background' specifies the background color.
+`vc-annotate-background-mode' specifies whether the color map
+should be applied to the background or foreground."
   (interactive
    (save-current-buffer
      (vc-ensure-vc-buffer)
@@ -666,10 +708,13 @@ (defun vc-annotate-lines (limit)
                ;; Make the face if not done.
                (face (or (intern-soft face-name)
                          (let ((tmp-face (make-face (intern face-name))))
-                           (set-face-foreground tmp-face (cdr color))
-                           (when vc-annotate-background
-			     (set-face-background tmp-face
-						  vc-annotate-background))
+                           (cond
+                            (vc-annotate-background-mode
+                             (set-face-background tmp-face (cdr color)))
+                            (t
+                             (set-face-foreground tmp-face (cdr color))
+                             (when vc-annotate-background
+			       (set-face-background tmp-face vc-annotate-background))))
                            tmp-face))))	; Return the face
           (put-text-property start end 'face face)))))
   ;; Pretend to font-lock there were no matches.






  reply	other threads:[~2014-07-01 23:18 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-19  6:54 bug#17808: 24.4.50; vc-annotate colors Juri Linkov
2014-07-01 23:18 ` Juri Linkov [this message]
2014-07-02  2:47   ` Eli Zaretskii
2014-07-02 23:31     ` Juri Linkov
2014-07-04 23:48       ` Juri Linkov
2014-07-08  8:51         ` Juri Linkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87vbrg8vvo.fsf@mail.jurta.org \
    --to=juri@jurta.org \
    --cc=17808@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.