(rmail-summary-forward): Accept prefix arg
[bpt/emacs.git] / lisp / disp-table.el
CommitLineData
c0274f38
ER
1;;; disp-table.el --- functions for dealing with char tables.
2
9750e079
ER
3;; Copyright (C) 1987 Free Software Foundation, Inc.
4
e5167999
ER
5;; Author: Howard Gayle
6;; Maintainer: FSF
a1d15b3e 7;; Keywords: i18n
a2535589
JA
8
9;; This file is part of GNU Emacs.
10
11;; GNU Emacs is free software; you can redistribute it and/or modify
12;; it under the terms of the GNU General Public License as published by
e5167999 13;; the Free Software Foundation; either version 2, or (at your option)
a2535589
JA
14;; any later version.
15
16;; GNU Emacs is distributed in the hope that it will be useful,
17;; but WITHOUT ANY WARRANTY; without even the implied warranty of
18;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19;; GNU General Public License for more details.
20
21;; You should have received a copy of the GNU General Public License
22;; along with GNU Emacs; see the file COPYING. If not, write to
23;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
24
e5167999 25;;; Code:
a2535589 26
e31b61e6 27(defun describe-display-table (dt)
49116ac0 28 "Describe the display table DT in a help buffer."
a2535589 29 (with-output-to-temp-buffer "*Help*"
03131799 30 (princ "\nTruncation glyph: ")
a2535589 31 (prin1 (aref dt 256))
03131799 32 (princ "\nWrap glyph: ")
a2535589 33 (prin1 (aref dt 257))
03131799 34 (princ "\nEscape glyph: ")
a2535589 35 (prin1 (aref dt 258))
03131799 36 (princ "\nCtrl glyph: ")
a2535589 37 (prin1 (aref dt 259))
afb1e4b4 38 (princ "\nSelective display glyph sequence: ")
e31b61e6 39 (prin1 (aref dt 260))
afb1e4b4 40 (princ "\nCharacter display glyph sequences:\n")
bb6066c8
RS
41 (save-excursion
42 (set-buffer standard-output)
43 (let ((vector (make-vector 256 nil))
44 (i 0))
45 (while (< i 256)
46 (aset vector i (aref dt i))
47 (setq i (1+ i)))
48 (describe-vector vector)))
a2535589
JA
49 (print-help-return-message)))
50
e31b61e6 51;;;###autoload
a2535589 52(defun describe-current-display-table ()
bb6066c8
RS
53 "Describe the display table in use in the selected window and buffer."
54 (interactive)
55 (let ((disptab
56 (or (window-display-table (selected-window))
57 buffer-display-table
58 standard-display-table)))
59 (if disptab
60 (describe-display-table disptab)
61 (message "No display table"))))
a2535589 62
e31b61e6 63;;;###autoload
a2535589 64(defun make-display-table ()
e31b61e6 65 "Return a new, empty display table."
a2535589
JA
66 (make-vector 261 nil))
67
e31b61e6 68;;;###autoload
a2535589 69(defun standard-display-8bit (l h)
49116ac0 70 "Display characters in the range L to H literally."
a2535589
JA
71 (while (<= l h)
72 (if (and (>= l ?\ ) (< l 127))
73 (if standard-display-table (aset standard-display-table l nil))
74 (or standard-display-table
75 (setq standard-display-table (make-vector 261 nil)))
afb1e4b4 76 (aset standard-display-table l (vector l)))
a2535589
JA
77 (setq l (1+ l))))
78
798aa8d0
JB
79;;;###autoload
80(defun standard-display-default (l h)
81 "Display characters in the range L to H using the default notation."
82 (while (<= l h)
83 (if (and (>= l ?\ ) (< l 127))
84 (if standard-display-table (aset standard-display-table l nil))
85 (or standard-display-table
86 (setq standard-display-table (make-vector 261 nil)))
87 (aset standard-display-table l nil))
88 (setq l (1+ l))))
89
e31b61e6 90;;;###autoload
a2535589
JA
91(defun standard-display-ascii (c s)
92 "Display character C using string S."
93 (or standard-display-table
94 (setq standard-display-table (make-vector 261 nil)))
82093c70 95 (aset standard-display-table c (apply 'vector (append s nil))))
a2535589 96
e31b61e6 97;;;###autoload
a2535589
JA
98(defun standard-display-g1 (c sc)
99 "Display character C as character SC in the g1 character set."
100 (or standard-display-table
101 (setq standard-display-table (make-vector 261 nil)))
102 (aset standard-display-table c
82093c70 103 (vector (create-glyph (concat "\016" (char-to-string sc) "\017")))))
a2535589 104
e31b61e6 105;;;###autoload
a2535589
JA
106(defun standard-display-graphic (c gc)
107 "Display character C as character GC in graphics character set."
108 (or standard-display-table
109 (setq standard-display-table (make-vector 261 nil)))
110 (aset standard-display-table c
82093c70 111 (vector (create-glyph (concat "\e(0" (char-to-string gc) "\e(B")))))
a2535589 112
e31b61e6 113;;;###autoload
a2535589
JA
114(defun standard-display-underline (c uc)
115 "Display character C as character UC plus underlining."
116 (or standard-display-table
117 (setq standard-display-table (make-vector 261 nil)))
118 (aset standard-display-table c
82093c70 119 (vector (create-glyph (concat "\e[4m" (char-to-string uc) "\e[m")))))
03131799
RS
120
121;; Allocate a glyph code to display by sending STRING to the terminal.
e31b61e6 122;;;###autoload
03131799
RS
123(defun create-glyph (string)
124 (if (= (length glyph-table) 65536)
125 (error "No free glyph codes remain"))
126 (setq glyph-table (vconcat glyph-table (list string)))
127 (1- (length glyph-table)))
a2535589 128
2eae7226 129;;;###autoload
798aa8d0 130(defun standard-display-european (arg)
2eae7226
JB
131 "Toggle display of European characters encoded with ISO 8859.
132When enabled, characters in the range of 160 to 255 display not
133as octal escapes, but as accented characters.
134With prefix argument, enable European character display iff arg is positive."
798aa8d0 135 (interactive "P")
2eae7226
JB
136 (if (or (< (prefix-numeric-value arg) 0)
137 (and (null arg)
138 (vectorp standard-display-table)
139 (>= (length standard-display-table) 161)
140 (equal (aref standard-display-table 160) [160])))
141 (standard-display-default 160 255)
798aa8d0 142 (standard-display-8bit 160 255)))
798aa8d0 143
a2535589 144(provide 'disp-table)
c0274f38
ER
145
146;;; disp-table.el ends here