From 08c583dbd17a8cf8db889402a57f4aef8803ff17 Mon Sep 17 00:00:00 2001 From: Dan Nicolaescu Date: Sat, 24 Sep 2005 23:20:46 +0000 Subject: [PATCH] (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. --- lisp/ChangeLog | 6 ++++ lisp/term/rxvt.el | 85 ++++++++++++++++++++++++++++++++--------------- 2 files changed, 64 insertions(+), 27 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 96091669512..54b224c232d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2005-09-24 Dan Nicolaescu + + * 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 (tiny change) * term/rxvt.el (rxvt-register-default-colors): Add support for 88 diff --git a/lisp/term/rxvt.el b/lisp/term/rxvt.el index 05cd854f224..8337d8ddb4a 100644 --- a/lisp/term/rxvt.el +++ b/lisp/term/rxvt.el @@ -210,36 +210,67 @@ for the currently selected frame." (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))) -- 2.39.2