Commit | Line | Data |
---|---|---|
2097e21d JR |
1 | ;;; w32console.el -- Setup w32 console keys and colors. |
2 | ||
73b0cd50 | 3 | ;; Copyright (C) 2007-2011 Free Software Foundation, Inc. |
2097e21d JR |
4 | |
5 | ;; Author: FSF | |
6 | ;; Keywords: terminals | |
7 | ||
8 | ;; This file is part of GNU Emacs. | |
9 | ||
1fecc8fe | 10 | ;; GNU Emacs is free software: you can redistribute it and/or modify |
2097e21d | 11 | ;; it under the terms of the GNU General Public License as published by |
1fecc8fe GM |
12 | ;; the Free Software Foundation, either version 3 of the License, or |
13 | ;; (at your option) any later version. | |
2097e21d JR |
14 | |
15 | ;; GNU Emacs is distributed in the hope that it will be useful, | |
16 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 | ;; GNU General Public License for more details. | |
19 | ||
20 | ;; You should have received a copy of the GNU General Public License | |
1fecc8fe | 21 | ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
2097e21d JR |
22 | |
23 | ;;; Commentary: | |
24 | ||
25 | ;;; Code: | |
26 | ||
27 | ;; W32 uses different color indexes than standard: | |
28 | ||
29 | (defvar w32-tty-standard-colors | |
30 | '(("black" 0 0 0 0) | |
31 | ("blue" 1 0 0 52480) ; MediumBlue | |
32 | ("green" 2 8704 35584 8704) ; ForestGreen | |
33 | ("cyan" 3 0 52736 53504) ; DarkTurquoise | |
34 | ("red" 4 45568 8704 8704) ; FireBrick | |
35 | ("magenta" 5 35584 0 35584) ; DarkMagenta | |
36 | ("brown" 6 40960 20992 11520) ; Sienna | |
37 | ("lightgray" 7 48640 48640 48640) ; Gray | |
38 | ("darkgray" 8 26112 26112 26112) ; Gray40 | |
39 | ("lightblue" 9 0 0 65535) ; Blue | |
40 | ("lightgreen" 10 0 65535 0) ; Green | |
41 | ("lightcyan" 11 0 65535 65535) ; Cyan | |
42 | ("lightred" 12 65535 0 0) ; Red | |
43 | ("lightmagenta" 13 65535 0 65535) ; Magenta | |
44 | ("yellow" 14 65535 65535 0) ; Yellow | |
45 | ("white" 15 65535 65535 65535)) | |
46 | "A list of VGA console colors, their indices and 16-bit RGB values.") | |
47 | ||
c8ccffb1 | 48 | (declare-function x-setup-function-keys "term/common-win" (frame)) |
aa360da1 | 49 | |
2097e21d JR |
50 | (defun terminal-init-w32console () |
51 | "Terminal initialization function for w32 console." | |
52 | ;; Share function key initialization with w32 gui frames | |
53 | (x-setup-function-keys (selected-frame)) | |
54 | (let* ((colors w32-tty-standard-colors) | |
55 | (color (car colors))) | |
56 | (tty-color-clear) | |
57 | (while colors | |
58 | (tty-color-define (car color) (cadr color) (cddr color)) | |
59 | (setq colors (cdr colors) | |
60 | color (car colors)))) | |
61 | (clear-face-cache) | |
b0512a1d EZ |
62 | ;; Figure out what are the colors of the console window, and set up |
63 | ;; the background-mode correspondingly. | |
64 | (let* ((screen-color (get-screen-color)) | |
65 | (bg (cadr screen-color)) | |
66 | (descr (tty-color-by-index bg)) | |
67 | r g b bg-mode) | |
68 | (setq r (nth 2 descr) | |
69 | g (nth 3 descr) | |
70 | b (nth 4 descr)) | |
71 | (if (< (+ r g b) (* .6 (+ 65535 65535 65535))) | |
72 | (setq bg-mode 'dark) | |
73 | (setq bg-mode 'light)) | |
74 | (set-terminal-parameter nil 'background-mode bg-mode)) | |
2097e21d JR |
75 | (tty-set-up-initial-frame-faces) |
76 | (run-hooks 'terminal-init-w32-hook)) | |
3d9bd2bc | 77 | |
c8ccffb1 | 78 | ;;; w32console.el ends here |