Mercurial > emacs
annotate lisp/ansi-color.el @ 51242:661e2fe7e775
(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf
Macro Index". Add "(autoconf)M4 Macro Index" and "(autoconf)Autotest Macro
Index". Remove duplicate copy of "(automake)Macro and Variable Index". Keep
automake after all autoconf possibilities, so as to prefer those.
author | Juanma Barranquero <lekktu@gmail.com> |
---|---|
date | Sun, 25 May 2003 21:03:57 +0000 |
parents | f4f7d408c37a |
children | 695cf19ef79e |
rev | line source |
---|---|
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
1 ;;; ansi-color.el --- translate ANSI escape sequences into faces |
25171 | 2 |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
3 ;; Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. |
25171 | 4 |
26092 | 5 ;; Author: Alex Schroeder <alex@gnu.org> |
6 ;; Maintainer: Alex Schroeder <alex@gnu.org> | |
35305
64ea5b1e9d94
(ansi-colors) <defgroup>: Fix :version by Dave
Gerd Moellmann <gerd@gnu.org>
parents:
35207
diff
changeset
|
7 ;; Version: 3.4.2 |
64ea5b1e9d94
(ansi-colors) <defgroup>: Fix :version by Dave
Gerd Moellmann <gerd@gnu.org>
parents:
35207
diff
changeset
|
8 ;; Keywords: comm processes terminals services |
25171 | 9 |
10 ;; This file is part of GNU Emacs. | |
11 | |
12 ;; GNU Emacs is free software; you can redistribute it and/or modify it | |
13 ;; under the terms of the GNU General Public License as published by the | |
14 ;; Free Software Foundation; either version 2, or (at your option) any | |
15 ;; later version. | |
16 ;; | |
17 ;; GNU Emacs is distributed in the hope that it will be useful, but | |
18 ;; WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
20 ;; General Public License for more details. | |
21 ;; | |
22 ;; You should have received a copy of the GNU General Public License | |
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
25 ;; Boston, MA 02111-1307, USA. | |
26 | |
27 ;;; Commentary: | |
28 | |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
29 ;; This file provides a function that takes a string or a region |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
30 ;; containing Select Graphic Rendition (SGR) control sequences (formerly |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
31 ;; known as ANSI escape sequences) and tries to translate these into |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
32 ;; faces. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
33 ;; |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
34 ;; This allows you to run ls --color=yes in shell-mode. In order to |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
35 ;; test this, proceed as follows: |
25171 | 36 ;; |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
37 ;; 1. start a shell: M-x shell |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
38 ;; 2. load this file: M-x load-library RET ansi-color RET |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
39 ;; 3. activate ansi-color: M-x ansi-color-for-comint-mode-on |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
40 ;; 4. test ls --color=yes in the *shell* buffer |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
41 ;; |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
42 ;; Note that starting your shell from within Emacs might set the TERM |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
43 ;; environment variable. The new setting might disable the output of |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
44 ;; SGR control sequences. Using ls --color=yes forces ls to produce |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
45 ;; these. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
46 ;; |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
47 ;; If you decide you like this, add the following to your .emacs file: |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
48 ;; |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
49 ;; (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on) |
25171 | 50 ;; |
31595 | 51 ;; SGR control sequences are defined in section 3.8.117 of the ECMA-48 |
52 ;; standard (identical to ISO/IEC 6429), which is freely available as a | |
53 ;; PDF file <URL:http://www.ecma.ch/ecma1/STAND/ECMA-048.HTM>. The | |
54 ;; "Graphic Rendition Combination Mode (GRCM)" implemented is | |
55 ;; "cumulative mode" as defined in section 7.2.8. Cumulative mode means | |
56 ;; that whenever possible, SGR control sequences are combined (ie. blue | |
57 ;; and bold). | |
25171 | 58 |
31595 | 59 ;; The basic functions are: |
25171 | 60 ;; |
31595 | 61 ;; `ansi-color-apply' to colorize a string containing SGR control |
62 ;; sequences. | |
63 ;; | |
64 ;; `ansi-color-filter-apply' to filter SGR control sequences from a | |
65 ;; string. | |
66 ;; | |
67 ;; `ansi-color-apply-on-region' to colorize a region containing SGR | |
68 ;; control sequences. | |
69 ;; | |
70 ;; `ansi-color-filter-region' to filter SGR control sequences from a | |
71 ;; region. | |
26092 | 72 |
31595 | 73 ;;; Thanks |
26092 | 74 |
31595 | 75 ;; Georges Brun-Cottan <gbruncot@emc.com> for improving ansi-color.el |
76 ;; substantially by adding the code needed to cope with arbitrary chunks | |
77 ;; of output and the filter functions. | |
78 ;; | |
79 ;; Markus Kuhn <Markus.Kuhn@cl.cam.ac.uk> for pointing me to ECMA-48. | |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
80 ;; |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
81 ;; Stefan Monnier <foo@acm.com> explaing obscure font-lock stuff and |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
82 ;; code suggestions. |
25171 | 83 |
84 | |
85 | |
86 ;;; Code: | |
87 | |
26092 | 88 ;; Customization |
89 | |
31595 | 90 (defgroup ansi-colors nil |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
91 "Translating SGR control sequences to faces. |
31595 | 92 This translation effectively colorizes strings and regions based upon |
93 SGR control sequences embedded in the text. SGR (Select Graphic | |
94 Rendition) control sequences are defined in section 3.8.117 of the | |
95 ECMA-48 standard \(identical to ISO/IEC 6429), which is freely available | |
96 as a PDF file <URL:http://www.ecma.ch/ecma1/STAND/ECMA-048.HTM>." | |
35207
16c26d4faf83
(ansi-colors) <defgroup>: Fix :version.
Gerd Moellmann <gerd@gnu.org>
parents:
35160
diff
changeset
|
97 :version "21.1" |
31595 | 98 :group 'processes) |
99 | |
100 (defcustom ansi-color-faces-vector | |
101 [default bold default italic underline bold bold-italic modeline] | |
102 "Faces used for SGR control sequences determining a face. | |
103 This vector holds the faces used for SGR control sequence parameters 0 | |
104 to 7. | |
25171 | 105 |
31595 | 106 Parameter Description Face used by default |
107 0 default default | |
108 1 bold bold | |
109 2 faint default | |
110 3 italic italic | |
111 4 underlined underline | |
112 5 slowly blinking bold | |
113 6 rapidly blinking bold-italic | |
114 7 negative image modeline | |
25171 | 115 |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
116 Note that the symbol `default' is special: It will not be combined |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
117 with the current face. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
118 |
31595 | 119 This vector is used by `ansi-color-make-color-map' to create a color |
120 map. This color map is stored in the variable `ansi-color-map'." | |
121 :type '(vector face face face face face face face face) | |
122 :set 'ansi-color-map-update | |
123 :initialize 'custom-initialize-default | |
124 :group 'ansi-colors) | |
125 | |
126 (defcustom ansi-color-names-vector | |
25171 | 127 ["black" "red" "green" "yellow" "blue" "magenta" "cyan" "white"] |
31595 | 128 "Colors used for SGR control sequences determining a color. |
129 This vector holds the colors used for SGR control sequences parameters | |
130 30 to 37 \(foreground colors) and 40 to 47 (background colors). | |
131 | |
132 Parameter Color | |
133 30 40 black | |
134 31 41 red | |
135 32 42 green | |
136 33 43 yellow | |
137 34 44 blue | |
138 35 45 magenta | |
139 36 46 cyan | |
140 37 47 white | |
25171 | 141 |
31595 | 142 This vector is used by `ansi-color-make-color-map' to create a color |
143 map. This color map is stored in the variable `ansi-color-map'." | |
144 :type '(vector string string string string string string string string) | |
145 :set 'ansi-color-map-update | |
146 :initialize 'custom-initialize-default | |
147 :group 'ansi-colors) | |
148 | |
149 (defconst ansi-color-regexp "\033\\[\\([0-9;]*\\)m" | |
150 "Regexp that matches SGR control sequences.") | |
151 | |
152 (defconst ansi-color-parameter-regexp "\\([0-9]*\\)[m;]" | |
153 "Regexp that matches SGR control sequence parameters.") | |
154 | |
155 | |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
156 ;; Convenience functions for comint modes (eg. shell-mode) |
25171 | 157 |
31595 | 158 |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
159 (defcustom ansi-color-for-comint-mode nil |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
160 "Determines what to do with comint output. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
161 If nil, do nothing. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
162 If the symbol `filter', then filter all SGR control sequences. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
163 If anything else (such as t), then translate SGR control sequences |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
164 into text-properties. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
165 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
166 In order for this to have any effect, `ansi-color-process-output' must |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
167 be in `comint-output-filter-functions'. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
168 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
169 This can be used to enable colorized ls --color=yes output |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
170 in shell buffers. You set this variable by calling one of: |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
171 \\[ansi-color-for-comint-mode-on] |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
172 \\[ansi-color-for-comint-mode-off] |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
173 \\[ansi-color-for-comint-mode-filter]" |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
174 :type '(choice (const :tag "Do nothing" nil) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
175 (const :tag "Filter" filter) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
176 (const :tag "Translate" t)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
177 :group 'ansi-colors) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
178 |
35686
1126fb97e2d7
(ansi-color-for-comint-mode): Add :version.
Gerd Moellmann <gerd@gnu.org>
parents:
35305
diff
changeset
|
179 ;;;###autoload |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
180 (defun ansi-color-for-comint-mode-on () |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
181 "Set `ansi-color-for-comint-mode' to t." |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
182 (interactive) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
183 (setq ansi-color-for-comint-mode t)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
184 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
185 (defun ansi-color-for-comint-mode-off () |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
186 "Set `ansi-color-for-comint-mode' to nil." |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
187 (interactive) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
188 (setq ansi-color-for-comint-mode nil)) |
31595 | 189 |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
190 (defun ansi-color-for-comint-mode-filter () |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
191 "Set `ansi-color-for-comint-mode' to symbol `filter'." |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
192 (interactive) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
193 (setq ansi-color-for-comint-mode 'filter)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
194 |
35686
1126fb97e2d7
(ansi-color-for-comint-mode): Add :version.
Gerd Moellmann <gerd@gnu.org>
parents:
35305
diff
changeset
|
195 ;;;###autoload |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
196 (defun ansi-color-process-output (string) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
197 "Maybe translate SGR control sequences of comint output into text-properties. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
198 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
199 Depending on variable `ansi-color-for-comint-mode' the comint output is |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
200 either not processed, SGR control sequences are filtered using |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
201 `ansi-color-filter-region', or SGR control sequences are translated into |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
202 text-properties using `ansi-color-apply-on-region'. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
203 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
204 The comint output is assumed to lie between the marker |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
205 `comint-last-output-start' and the process-mark. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
206 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
207 This is a good function to put in `comint-output-filter-functions'." |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
208 (let ((start-marker (or comint-last-output-start |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
209 (point-min-marker))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
210 (end-marker (process-mark (get-buffer-process (current-buffer))))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
211 (cond ((eq ansi-color-for-comint-mode nil)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
212 ((eq ansi-color-for-comint-mode 'filter) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
213 (ansi-color-filter-region start-marker end-marker)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
214 (t |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
215 (ansi-color-apply-on-region start-marker end-marker))))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
216 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
217 (add-hook 'comint-output-filter-functions |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
218 'ansi-color-process-output) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
219 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
220 |
35305
64ea5b1e9d94
(ansi-colors) <defgroup>: Fix :version by Dave
Gerd Moellmann <gerd@gnu.org>
parents:
35207
diff
changeset
|
221 ;; Alternative font-lock-unfontify-region-function for Emacs only |
31595 | 222 |
223 | |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
224 (eval-when-compile |
41608
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
35686
diff
changeset
|
225 ;; We use this to preserve or protect things when modifying text |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
35686
diff
changeset
|
226 ;; properties. Stolen from lazy-lock and font-lock. Ugly!!! |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
35686
diff
changeset
|
227 ;; Probably most of this is not needed? |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
35686
diff
changeset
|
228 (defmacro save-buffer-state (varlist &rest body) |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
35686
diff
changeset
|
229 "Bind variables according to VARLIST and eval BODY restoring buffer state." |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
35686
diff
changeset
|
230 `(let* (,@(append varlist |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
35686
diff
changeset
|
231 '((modified (buffer-modified-p)) (buffer-undo-list t) |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
35686
diff
changeset
|
232 (inhibit-read-only t) (inhibit-point-motion-hooks t) |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
35686
diff
changeset
|
233 before-change-functions after-change-functions |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
35686
diff
changeset
|
234 deactivate-mark buffer-file-name buffer-file-truename))) |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
35686
diff
changeset
|
235 ,@body |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
35686
diff
changeset
|
236 (when (and (not modified) (buffer-modified-p)) |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
35686
diff
changeset
|
237 (set-buffer-modified-p nil)))) |
45db352a0971
Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents:
35686
diff
changeset
|
238 (put 'save-buffer-state 'lisp-indent-function 1)) |
31595 | 239 |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
240 (defun ansi-color-unfontify-region (beg end &rest xemacs-stuff) |
35305
64ea5b1e9d94
(ansi-colors) <defgroup>: Fix :version by Dave
Gerd Moellmann <gerd@gnu.org>
parents:
35207
diff
changeset
|
241 "Replacement function for `font-lock-default-unfontify-region'. |
64ea5b1e9d94
(ansi-colors) <defgroup>: Fix :version by Dave
Gerd Moellmann <gerd@gnu.org>
parents:
35207
diff
changeset
|
242 |
64ea5b1e9d94
(ansi-colors) <defgroup>: Fix :version by Dave
Gerd Moellmann <gerd@gnu.org>
parents:
35207
diff
changeset
|
243 As text-properties are implemented using extents in XEmacs, this |
64ea5b1e9d94
(ansi-colors) <defgroup>: Fix :version by Dave
Gerd Moellmann <gerd@gnu.org>
parents:
35207
diff
changeset
|
244 function is probably not needed. In Emacs, however, things are a bit |
64ea5b1e9d94
(ansi-colors) <defgroup>: Fix :version by Dave
Gerd Moellmann <gerd@gnu.org>
parents:
35207
diff
changeset
|
245 different: When font-lock is active in a buffer, you cannot simply add |
64ea5b1e9d94
(ansi-colors) <defgroup>: Fix :version by Dave
Gerd Moellmann <gerd@gnu.org>
parents:
35207
diff
changeset
|
246 face text-properties to the buffer. Font-lock will remove the face |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
247 text-property using `font-lock-unfontify-region-function'. If you want |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
248 to insert the strings returned by `ansi-color-apply' into such buffers, |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
249 you must set `font-lock-unfontify-region-function' to |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
250 `ansi-color-unfontify-region'. This function will not remove all face |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
251 text-properties unconditionally. It will keep the face text-properties |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
252 if the property `ansi-color' is set. |
31595 | 253 |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
254 The region from BEG to END is unfontified. XEMACS-STUFF is ignored. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
255 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
256 A possible way to install this would be: |
25171 | 257 |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
258 \(add-hook 'font-lock-mode-hook |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
259 \(function (lambda () |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
260 \(setq font-lock-unfontify-region-function |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
261 'ansi-color-unfontify-region))))" |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
262 ;; save-buffer-state is a macro in font-lock.el! |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
263 (save-buffer-state nil |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
264 (when (boundp 'font-lock-syntactic-keywords) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
265 (remove-text-properties beg end '(syntax-table nil))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
266 ;; instead of just using (remove-text-properties beg end '(face |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
267 ;; nil)), we find regions with a non-nil face test-property, skip |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
268 ;; positions with the ansi-color property set, and remove the |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
269 ;; remaining face test-properties. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
270 (while (setq beg (text-property-not-all beg end 'face nil)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
271 (setq beg (or (text-property-not-all beg end 'ansi-color t) end)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
272 (when (get-text-property beg 'face) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
273 (let ((end-face (or (text-property-any beg end 'face nil) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
274 end))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
275 (remove-text-properties beg end-face '(face nil)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
276 (setq beg end-face)))))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
277 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
278 ;; Working with strings |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
279 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
280 (defvar ansi-color-context nil |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
281 "Context saved between two calls to `ansi-color-apply'. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
282 This is a list of the form (FACES FRAGMENT) or nil. FACES is a list of |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
283 faces the last call to `ansi-color-apply' ended with, and FRAGMENT is a |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
284 string starting with an escape sequence, possibly the start of a new |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
285 escape sequence.") |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
286 (make-variable-buffer-local 'ansi-color-context) |
31595 | 287 |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
288 (defun ansi-color-filter-apply (string) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
289 "Filter out all SGR control sequences from STRING. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
290 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
291 Every call to this function will set and use the buffer-local variable |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
292 `ansi-color-context' to save partial escape sequences. This information |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
293 will be used for the next call to `ansi-color-apply'. Set |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
294 `ansi-color-context' to nil if you don't want this. |
31595 | 295 |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
296 This function can be added to `comint-preoutput-filter-functions'." |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
297 (let ((start 0) end result) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
298 ;; if context was saved and is a string, prepend it |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
299 (if (cadr ansi-color-context) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
300 (setq string (concat (cadr ansi-color-context) string) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
301 ansi-color-context nil)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
302 ;; find the next escape sequence |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
303 (while (setq end (string-match ansi-color-regexp string start)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
304 (setq result (concat result (substring string start end)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
305 start (match-end 0))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
306 ;; save context, add the remainder of the string to the result |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
307 (let (fragment) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
308 (if (string-match "\033" string start) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
309 (let ((pos (match-beginning 0))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
310 (setq fragment (substring string pos) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
311 result (concat result (substring string start pos)))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
312 (setq result (concat result (substring string start)))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
313 (if fragment |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
314 (setq ansi-color-context (list nil fragment)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
315 (setq ansi-color-context nil))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
316 result)) |
25171 | 317 |
26092 | 318 (defun ansi-color-apply (string) |
31595 | 319 "Translates SGR control sequences into text-properties. |
26092 | 320 |
31595 | 321 Applies SGR control sequences setting foreground and background colors |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
322 to STRING using text-properties and returns the result. The colors used |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
323 are given in `ansi-color-faces-vector' and `ansi-color-names-vector'. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
324 See function `ansi-color-apply-sequence' for details. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
325 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
326 Every call to this function will set and use the buffer-local variable |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
327 `ansi-color-context' to save partial escape sequences and current face. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
328 This information will be used for the next call to `ansi-color-apply'. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
329 Set `ansi-color-context' to nil if you don't want this. |
25171 | 330 |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
331 This function can be added to `comint-preoutput-filter-functions'. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
332 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
333 You cannot insert the strings returned into buffers using font-lock. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
334 See `ansi-color-unfontify-region' for a way around this." |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
335 (let ((face (car ansi-color-context)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
336 (start 0) end escape-sequence result) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
337 ;; if context was saved and is a string, prepend it |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
338 (if (cadr ansi-color-context) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
339 (setq string (concat (cadr ansi-color-context) string) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
340 ansi-color-context nil)) |
26092 | 341 ;; find the next escape sequence |
31595 | 342 (while (setq end (string-match ansi-color-regexp string start)) |
26092 | 343 ;; store escape sequence |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
344 (setq escape-sequence (match-string 1 string)) |
26092 | 345 ;; colorize the old block from start to end using old face |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
346 (when face |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
347 (put-text-property start end 'ansi-color t string) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
348 (put-text-property start end 'face face string)) |
31595 | 349 (setq result (concat result (substring string start end)) |
350 start (match-end 0)) | |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
351 ;; create new face by applying all the parameters in the escape |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
352 ;; sequence |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
353 (setq face (ansi-color-apply-sequence escape-sequence face))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
354 ;; if the rest of the string should have a face, put it there |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
355 (when face |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
356 (put-text-property start (length string) 'ansi-color t string) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
357 (put-text-property start (length string) 'face face string)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
358 ;; save context, add the remainder of the string to the result |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
359 (let (fragment) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
360 (if (string-match "\033" string start) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
361 (let ((pos (match-beginning 0))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
362 (setq fragment (substring string pos) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
363 result (concat result (substring string start pos)))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
364 (setq result (concat result (substring string start)))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
365 (if (or face fragment) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
366 (setq ansi-color-context (list face fragment)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
367 (setq ansi-color-context nil))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
368 result)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
369 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
370 ;; Working with regions |
25171 | 371 |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
372 (defvar ansi-color-context-region nil |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
373 "Context saved between two calls to `ansi-color-apply-on-region'. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
374 This is a list of the form (FACES MARKER) or nil. FACES is a list of |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
375 faces the last call to `ansi-color-apply-on-region' ended with, and |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
376 MARKER is a buffer position within an escape sequence or the last |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
377 position processed.") |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
378 (make-variable-buffer-local 'ansi-color-context-region) |
31595 | 379 |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
380 (defun ansi-color-filter-region (begin end) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
381 "Filter out all SGR control sequences from region BEGIN to END. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
382 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
383 Every call to this function will set and use the buffer-local variable |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
384 `ansi-color-context-region' to save position. This information will be |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
385 used for the next call to `ansi-color-apply-on-region'. Specifically, |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
386 it will override BEGIN, the start of the region. Set |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
387 `ansi-color-context-region' to nil if you don't want this." |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
388 (let ((end-marker (copy-marker end)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
389 (start (or (cadr ansi-color-context-region) begin))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
390 (save-excursion |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
391 (goto-char start) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
392 ;; find the next escape sequence |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
393 (while (re-search-forward ansi-color-regexp end-marker t) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
394 ;; delete the escape sequence |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
395 (replace-match "")) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
396 ;; save context, add the remainder of the string to the result |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
397 (if (re-search-forward "\033" end-marker t) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
398 (setq ansi-color-context-region (list nil (match-beginning 0))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
399 (setq ansi-color-context-region nil))))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
400 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
401 (defun ansi-color-apply-on-region (begin end) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
402 "Translates SGR control sequences into overlays or extents. |
31595 | 403 |
404 Applies SGR control sequences setting foreground and background colors | |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
405 to text in region between BEGIN and END using extents or overlays. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
406 Emacs will use overlays, XEmacs will use extents. The colors used are |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
407 given in `ansi-color-faces-vector' and `ansi-color-names-vector'. See |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
408 function `ansi-color-apply-sequence' for details. |
31595 | 409 |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
410 Every call to this function will set and use the buffer-local variable |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
411 `ansi-color-context-region' to save position and current face. This |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
412 information will be used for the next call to |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
413 `ansi-color-apply-on-region'. Specifically, it will override BEGIN, the |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
414 start of the region and set the face with which to start. Set |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
415 `ansi-color-context-region' to nil if you don't want this." |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
416 (let ((face (car ansi-color-context-region)) |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
45250
diff
changeset
|
417 (start-marker (or (cadr ansi-color-context-region) |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
418 (copy-marker begin))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
419 (end-marker (copy-marker end)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
420 escape-sequence) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
421 (save-excursion |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
422 (goto-char start-marker) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
423 ;; find the next escape sequence |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
424 (while (re-search-forward ansi-color-regexp end-marker t) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
425 ;; colorize the old block from start to end using old face |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
426 (when face |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
427 (ansi-color-set-extent-face |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
428 (ansi-color-make-extent start-marker (match-beginning 0)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
429 face)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
430 ;; store escape sequence and new start position |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
431 (setq escape-sequence (match-string 1) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
432 start-marker (copy-marker (match-end 0))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
433 ;; delete the escape sequence |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
434 (replace-match "") |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
435 ;; create new face by applying all the parameters in the escape |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
436 ;; sequence |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
437 (setq face (ansi-color-apply-sequence escape-sequence face))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
438 ;; search for the possible start of a new escape sequence |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
439 (if (re-search-forward "\033" end-marker t) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
440 (progn |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
441 ;; if the rest of the region should have a face, put it there |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
442 (when face |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
443 (ansi-color-set-extent-face |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
444 (ansi-color-make-extent start-marker (point)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
445 face)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
446 ;; save face and point |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
447 (setq ansi-color-context-region |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
448 (list face (copy-marker (match-beginning 0))))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
449 ;; if the rest of the region should have a face, put it there |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
450 (if face |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
451 (progn |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
452 (ansi-color-set-extent-face |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
453 (ansi-color-make-extent start-marker end-marker) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
454 face) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
455 (setq ansi-color-context-region (list face))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
456 ;; reset context |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
457 (setq ansi-color-context-region nil)))))) |
31595 | 458 |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
459 ;; This function helps you look for overlapping overlays. This is |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
460 ;; usefull in comint-buffers. Overlapping overlays should not happen! |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
461 ;; A possible cause for bugs are the markers. If you create an overlay |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
462 ;; up to the end of the region, then that end might coincide with the |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
463 ;; process-mark. As text is added BEFORE the process-mark, the overlay |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
464 ;; will keep growing. Therefore, as more overlays are created later on, |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
465 ;; there will be TWO OR MORE overlays covering the buffer at that point. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
466 ;; This function helps you check your buffer for these situations. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
467 ; (defun ansi-color-debug-overlays () |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
468 ; (interactive) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
469 ; (let ((pos (point-min))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
470 ; (while (< pos (point-max)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
471 ; (if (<= 2 (length (overlays-at pos))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
472 ; (progn |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
473 ; (goto-char pos) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
474 ; (error "%d overlays at %d" (length (overlays-at pos)) pos)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
475 ; (let (message-log-max) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
476 ; (message "Reached %d." pos))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
477 ; (setq pos (next-overlay-change pos))))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
478 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
479 ;; Emacs/XEmacs compatibility layer |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
480 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
481 (defun ansi-color-make-face (property color) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
482 "Return a face with PROPERTY set to COLOR. |
49588
37645a051842
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
45250
diff
changeset
|
483 PROPERTY can be either symbol `foreground' or symbol `background'. |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
484 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
485 For Emacs, we just return the cons cell \(PROPERTY . COLOR). |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
486 For XEmacs, we create a temporary face and return it." |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
487 (if (featurep 'xemacs) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
488 (let ((face (make-face (intern (concat color "-" (symbol-name property))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
489 "Temporary face created by ansi-color." |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
490 t))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
491 (set-face-property face property color) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
492 face) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
493 (cond ((eq property 'foreground) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
494 (cons 'foreground-color color)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
495 ((eq property 'background) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
496 (cons 'background-color color)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
497 (t |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
498 (cons property color))))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
499 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
500 (defun ansi-color-make-extent (from to &optional object) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
501 "Make an extent for the range [FROM, TO) in OBJECT. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
502 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
503 OBJECT defaults to the current buffer. XEmacs uses `make-extent', Emacs |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
504 uses `make-overlay'. XEmacs can use a buffer or a string for OBJECT, |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
505 Emacs requires OBJECT to be a buffer." |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
506 (if (functionp 'make-extent) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
507 (make-extent from to object) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
508 ;; In Emacs, the overlay might end at the process-mark in comint |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
509 ;; buffers. In that case, new text will be inserted before the |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
510 ;; process-mark, ie. inside the overlay (using insert-before-marks). |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
511 ;; In order to avoid this, we use the `insert-behind-hooks' overlay |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
512 ;; property to make sure it works. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
513 (let ((overlay (make-overlay from to object))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
514 (overlay-put overlay 'modification-hooks '(ansi-color-freeze-overlay)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
515 overlay))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
516 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
517 (defun ansi-color-freeze-overlay (overlay is-after begin end &optional len) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
518 "Prevent OVERLAY from being extended. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
519 This function can be used for the `modification-hooks' overlay |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
520 property." |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
521 ;; if stuff was inserted at the end of the overlay |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
522 (when (and is-after |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
523 (= 0 len) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
524 (= end (overlay-end overlay))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
525 ;; reset the end of the overlay |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
526 (move-overlay overlay (overlay-start overlay) begin))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
527 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
528 (defun ansi-color-set-extent-face (extent face) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
529 "Set the `face' property of EXTENT to FACE. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
530 XEmacs uses `set-extent-face', Emacs uses `overlay-put'." |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
531 (if (functionp 'set-extent-face) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
532 (set-extent-face extent face) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
533 (overlay-put extent 'face face))) |
31595 | 534 |
26092 | 535 ;; Helper functions |
536 | |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
537 (defun ansi-color-apply-sequence (escape-sequence faces) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
538 "Apply ESCAPE-SEQ to FACES and return the new list of faces. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
539 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
540 ESCAPE-SEQ is an escape sequences parsed by `ansi-color-get-face'. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
541 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
542 If the new faces start with the symbol `default', then the new |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
543 faces are returned. If the faces start with something else, |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
544 they are appended to the front of the FACES list, and the new |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
545 list of faces is returned. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
546 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
547 If `ansi-color-get-face' returns nil, then we either got a |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
548 null-sequence, or we stumbled upon some garbage. In either |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
549 case we return nil." |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
550 (let ((new-faces (ansi-color-get-face escape-sequence))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
551 (cond ((null new-faces) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
552 nil) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
553 ((eq (car new-faces) 'default) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
554 (cdr new-faces)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
555 (t |
45250
21ed0daaa2c6
(ansi-color-get-face): Avoid add-to-list on local var.
Richard M. Stallman <rms@gnu.org>
parents:
41608
diff
changeset
|
556 ;; Like (append NEW-FACES FACES) |
21ed0daaa2c6
(ansi-color-get-face): Avoid add-to-list on local var.
Richard M. Stallman <rms@gnu.org>
parents:
41608
diff
changeset
|
557 ;; but delete duplicates in FACES. |
21ed0daaa2c6
(ansi-color-get-face): Avoid add-to-list on local var.
Richard M. Stallman <rms@gnu.org>
parents:
41608
diff
changeset
|
558 (let ((modified-faces (copy-sequence faces))) |
21ed0daaa2c6
(ansi-color-get-face): Avoid add-to-list on local var.
Richard M. Stallman <rms@gnu.org>
parents:
41608
diff
changeset
|
559 (dolist (face (nreverse new-faces)) |
21ed0daaa2c6
(ansi-color-get-face): Avoid add-to-list on local var.
Richard M. Stallman <rms@gnu.org>
parents:
41608
diff
changeset
|
560 (setq modified-faces (delete face modified-faces)) |
21ed0daaa2c6
(ansi-color-get-face): Avoid add-to-list on local var.
Richard M. Stallman <rms@gnu.org>
parents:
41608
diff
changeset
|
561 (push face modified-faces)) |
21ed0daaa2c6
(ansi-color-get-face): Avoid add-to-list on local var.
Richard M. Stallman <rms@gnu.org>
parents:
41608
diff
changeset
|
562 modified-faces))))) |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
563 |
31595 | 564 (defun ansi-color-make-color-map () |
565 "Creates a vector of face definitions and returns it. | |
566 | |
567 The index into the vector is an ANSI code. See the documentation of | |
568 `ansi-color-map' for an example. | |
569 | |
570 The face definitions are based upon the variables | |
571 `ansi-color-faces-vector' and `ansi-color-names-vector'." | |
572 (let ((ansi-color-map (make-vector 50 nil)) | |
573 (index 0)) | |
574 ;; miscellaneous attributes | |
575 (mapcar | |
576 (function (lambda (e) | |
577 (aset ansi-color-map index e) | |
578 (setq index (1+ index)) )) | |
579 ansi-color-faces-vector) | |
580 ;; foreground attributes | |
581 (setq index 30) | |
582 (mapcar | |
583 (function (lambda (e) | |
584 (aset ansi-color-map index | |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
585 (ansi-color-make-face 'foreground e)) |
31595 | 586 (setq index (1+ index)) )) |
587 ansi-color-names-vector) | |
588 ;; background attributes | |
589 (setq index 40) | |
590 (mapcar | |
591 (function (lambda (e) | |
592 (aset ansi-color-map index | |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
593 (ansi-color-make-face 'background e)) |
31595 | 594 (setq index (1+ index)) )) |
595 ansi-color-names-vector) | |
596 ansi-color-map)) | |
597 | |
598 (defvar ansi-color-map (ansi-color-make-color-map) | |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
599 "A brand new color map suitable for `ansi-color-get-face'. |
25225
38f98813a83d
(ansi-color-to-text-properties): Added New state 5
Karl Heuer <kwzh@gnu.org>
parents:
25171
diff
changeset
|
600 |
31595 | 601 The value of this variable is usually constructed by |
602 `ansi-color-make-color-map'. The values in the array are such that the | |
603 numbers included in an SGR control sequences point to the correct | |
604 foreground or background colors. | |
605 | |
606 Example: The sequence \033[34m specifies a blue foreground. Therefore: | |
607 (aref ansi-color-map 34) | |
608 => \(foreground-color . \"blue\")") | |
609 | |
610 (defun ansi-color-map-update (symbol value) | |
611 "Update `ansi-color-map'. | |
612 | |
613 Whenever the vectors used to construct `ansi-color-map' are changed, | |
614 this function is called. Therefore this function is listed as the :set | |
615 property of `ansi-color-faces-vector' and `ansi-color-names-vector'." | |
616 (set-default symbol value) | |
617 (setq ansi-color-map (ansi-color-make-color-map))) | |
618 | |
619 (defun ansi-color-get-face-1 (ansi-code) | |
620 "Get face definition from `ansi-color-map'. | |
621 ANSI-CODE is used as an index into the vector." | |
622 (condition-case nil | |
623 (aref ansi-color-map ansi-code) | |
624 ('args-out-of-range nil))) | |
625 | |
626 (defun ansi-color-get-face (escape-seq) | |
627 "Create a new face by applying all the parameters in ESCAPE-SEQ. | |
628 | |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
629 Should any of the parameters result in the default face (usually this is |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
630 the parameter 0), then the effect of all previous parameters is cancelled. |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
631 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
632 ESCAPE-SEQ is a SGR control sequences such as \\033[34m. The parameter |
31595 | 633 34 is used by `ansi-color-get-face-1' to return a face definition." |
634 (let ((ansi-color-r "[0-9][0-9]?") | |
635 (i 0) | |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
636 f val) |
31595 | 637 (while (string-match ansi-color-r escape-seq i) |
35160
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
638 (setq i (match-end 0) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
639 val (ansi-color-get-face-1 |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
640 (string-to-int (match-string 0 escape-seq) 10))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
641 (cond ((not val)) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
642 ((eq val 'default) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
643 (setq f (list val))) |
75a8ca0bdd1d
(ansi-color-process-output): Use markers instead
Gerd Moellmann <gerd@gnu.org>
parents:
31595
diff
changeset
|
644 (t |
45250
21ed0daaa2c6
(ansi-color-get-face): Avoid add-to-list on local var.
Richard M. Stallman <rms@gnu.org>
parents:
41608
diff
changeset
|
645 (unless (member val f) |
21ed0daaa2c6
(ansi-color-get-face): Avoid add-to-list on local var.
Richard M. Stallman <rms@gnu.org>
parents:
41608
diff
changeset
|
646 (push val f))))) |
31595 | 647 f)) |
25171 | 648 |
649 (provide 'ansi-color) | |
650 | |
26092 | 651 ;;; ansi-color.el ends here |