(wordstar-mode): Add autoload.
[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")
a2535589
JA
41 (let ((vector (make-vector 256 nil))
42 (i 0))
43 (while (< i 256)
e31b61e6 44 (aset vector i (aref dt i))
a2535589
JA
45 (setq i (1+ i)))
46 (describe-vector vector))
47 (print-help-return-message)))
48
e31b61e6 49;;;###autoload
a2535589 50(defun describe-current-display-table ()
49116ac0 51 "Describe the display table in use in the selected window and buffer."
a2535589
JA
52 (interactive)
53 (describe-display-table
54 (or (window-display-table (selected-window))
55 buffer-display-table
56 standard-display-table)))
57
e31b61e6 58;;;###autoload
a2535589 59(defun make-display-table ()
e31b61e6 60 "Return a new, empty display table."
a2535589
JA
61 (make-vector 261 nil))
62
e31b61e6 63;;;###autoload
a2535589 64(defun standard-display-8bit (l h)
49116ac0 65 "Display characters in the range L to H literally."
a2535589
JA
66 (while (<= l h)
67 (if (and (>= l ?\ ) (< l 127))
68 (if standard-display-table (aset standard-display-table l nil))
69 (or standard-display-table
70 (setq standard-display-table (make-vector 261 nil)))
afb1e4b4 71 (aset standard-display-table l (vector l)))
a2535589
JA
72 (setq l (1+ l))))
73
798aa8d0
JB
74;;;###autoload
75(defun standard-display-default (l h)
76 "Display characters in the range L to H using the default notation."
77 (while (<= l h)
78 (if (and (>= l ?\ ) (< l 127))
79 (if standard-display-table (aset standard-display-table l nil))
80 (or standard-display-table
81 (setq standard-display-table (make-vector 261 nil)))
82 (aset standard-display-table l nil))
83 (setq l (1+ l))))
84
e31b61e6 85;;;###autoload
a2535589
JA
86(defun standard-display-ascii (c s)
87 "Display character C using string S."
88 (or standard-display-table
89 (setq standard-display-table (make-vector 261 nil)))
82093c70 90 (aset standard-display-table c (apply 'vector (append s nil))))
a2535589 91
e31b61e6 92;;;###autoload
a2535589
JA
93(defun standard-display-g1 (c sc)
94 "Display character C as character SC in the g1 character set."
95 (or standard-display-table
96 (setq standard-display-table (make-vector 261 nil)))
97 (aset standard-display-table c
82093c70 98 (vector (create-glyph (concat "\016" (char-to-string sc) "\017")))))
a2535589 99
e31b61e6 100;;;###autoload
a2535589
JA
101(defun standard-display-graphic (c gc)
102 "Display character C as character GC in graphics character set."
103 (or standard-display-table
104 (setq standard-display-table (make-vector 261 nil)))
105 (aset standard-display-table c
82093c70 106 (vector (create-glyph (concat "\e(0" (char-to-string gc) "\e(B")))))
a2535589 107
e31b61e6 108;;;###autoload
a2535589
JA
109(defun standard-display-underline (c uc)
110 "Display character C as character UC plus underlining."
111 (or standard-display-table
112 (setq standard-display-table (make-vector 261 nil)))
113 (aset standard-display-table c
82093c70 114 (vector (create-glyph (concat "\e[4m" (char-to-string uc) "\e[m")))))
03131799
RS
115
116;; Allocate a glyph code to display by sending STRING to the terminal.
e31b61e6 117;;;###autoload
03131799
RS
118(defun create-glyph (string)
119 (if (= (length glyph-table) 65536)
120 (error "No free glyph codes remain"))
121 (setq glyph-table (vconcat glyph-table (list string)))
122 (1- (length glyph-table)))
a2535589 123
2eae7226 124;;;###autoload
798aa8d0 125(defun standard-display-european (arg)
2eae7226
JB
126 "Toggle display of European characters encoded with ISO 8859.
127When enabled, characters in the range of 160 to 255 display not
128as octal escapes, but as accented characters.
129With prefix argument, enable European character display iff arg is positive."
798aa8d0 130 (interactive "P")
2eae7226
JB
131 (if (or (< (prefix-numeric-value arg) 0)
132 (and (null arg)
133 (vectorp standard-display-table)
134 (>= (length standard-display-table) 161)
135 (equal (aref standard-display-table 160) [160])))
136 (standard-display-default 160 255)
798aa8d0 137 (standard-display-8bit 160 255)))
798aa8d0 138
a2535589 139(provide 'disp-table)
c0274f38
ER
140
141;;; disp-table.el ends here