changeset 65687:16baf997c85c

(rxvt-register-default-colors): Add support for 255 color rxvt terminals by using the code xterm.el used to use before 2005-04-09 in order to match the colors used by rxvt.
author Dan Nicolaescu <dann@ics.uci.edu>
date Sat, 24 Sep 2005 23:20:46 +0000
parents 4a796295f477
children 41260182da5b
files lisp/ChangeLog lisp/term/rxvt.el
diffstat 2 files changed, 64 insertions(+), 27 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sat Sep 24 23:10:02 2005 +0000
+++ b/lisp/ChangeLog	Sat Sep 24 23:20:46 2005 +0000
@@ -1,3 +1,9 @@
+2005-09-24  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* term/rxvt.el (rxvt-register-default-colors): Add support for 255
+	color rxvt terminals by using the code xterm.el used to use before 
+	2005-04-09 in order to match the colors used by rxvt.
+
 2005-09-24  Emanuele Giaquinta <emanuele.giaquinta@gmail.com> (tiny change)
 
 	* term/rxvt.el (rxvt-register-default-colors): Add support for 88
--- a/lisp/term/rxvt.el	Sat Sep 24 23:10:02 2005 +0000
+++ b/lisp/term/rxvt.el	Sat Sep 24 23:20:46 2005 +0000
@@ -210,36 +210,67 @@
       (setq colors (cdr colors)
 	    color (car colors)
 	    ncolors (1- ncolors)))
-    (when (and (> ncolors 0) (= ncolors 72))  ; rxvt-unicode
-      ;; 64 non-gray colors
-      (let ((levels '(0 139 205 255))
-	    (r 0) (g 0) (b 0))
-	(while (> ncolors 8)
+    (when (> ncolors 0)
+      (cond
+       ((= ncolors 240)			; 256-color rxvt
+	;; 216 non-gray colors first
+	(let ((r 0) (g 0) (b 0))
+	  (while (> ncolors 24)
+	    ;; This and other formulae taken from 256colres.pl and
+	    ;; 88colres.pl in the xterm distribution.
+	    (tty-color-define (format "color-%d" (- 256 ncolors))
+			      (- 256 ncolors)
+			      (mapcar 'rxvt-rgb-convert-to-16bit
+				      (list (round (* r 42.5))
+					    (round (* g 42.5))
+					    (round (* b 42.5)))))
+	    (setq b (1+ b))
+	    (if (> b 5)
+		(setq g (1+ g)
+		      b 0))
+	    (if (> g 5)
+		(setq r (1+ r)
+		      g 0))
+	    (setq ncolors (1- ncolors))))
+	;; Now the 24 gray colors
+	(while (> ncolors 0)
+	  (setq color (rxvt-rgb-convert-to-16bit (+ 8 (* (- 24 ncolors) 10))))
+	  (tty-color-define (format "color-%d" (- 256 ncolors))
+			    (- 256 ncolors)
+			    (list color color color))
+	  (setq ncolors (1- ncolors))))
+       
+       ((and (> ncolors 0) (= ncolors 72)) ; rxvt-unicode
+	;; 64 non-gray colors
+	(let ((levels '(0 139 205 255))
+	      (r 0) (g 0) (b 0))
+	  (while (> ncolors 8)
+	    (tty-color-define (format "color-%d" (- 88 ncolors))
+			      (- 88 ncolors)
+			      (mapcar 'rxvt-rgb-convert-to-16bit
+				      (list (nth r levels)
+					    (nth g levels)
+					    (nth b levels))))
+	    (setq b (1+ b))
+	    (if (> b 3)
+		(setq g (1+ g)
+		      b 0))
+	    (if (> g 3)
+		(setq r (1+ r)
+		      g 0))
+	    (setq ncolors (1- ncolors))))
+	;; Now the 8 gray colors
+	(while (> ncolors 0)
+	  (setq color (rxvt-rgb-convert-to-16bit
+		       (floor
+			(if (= ncolors 8)
+			    46.36363636
+			  (+ (* (- 8 ncolors) 23.18181818) 69.54545454)))))
 	  (tty-color-define (format "color-%d" (- 88 ncolors))
 			    (- 88 ncolors)
-			    (mapcar 'rxvt-rgb-convert-to-16bit
-				    (list (nth r levels)
-					  (nth g levels)
-					  (nth b levels))))
-	  (setq b (1+ b))
-	  (if (> b 3)
-	      (setq g (1+ g)
-		    b 0))
-	  (if (> g 3)
-	      (setq r (1+ r)
-		    g 0))
+			    (list color color color))
 	  (setq ncolors (1- ncolors))))
-      ;; Now the 8 gray colors
-      (while (> ncolors 0)
-	(setq color (rxvt-rgb-convert-to-16bit
-		     (floor
-		      (if (= ncolors 8)
-			  46.36363636
-			(+ (* (- 8 ncolors) 23.18181818) 69.54545454)))))
-	(tty-color-define (format "color-%d" (- 88 ncolors))
-			  (- 88 ncolors)
-			  (list color color color))
-	(setq ncolors (1- ncolors))))
+       (t (error "Unsupported number of rxvt colors (%d)" (+ 16 ncolors)))))
     ;; Modifying color mappings means realized faces don't use the
     ;; right colors, so clear them.
     (clear-face-cache)))