annotate lisp/disp-table.el @ 58711:2c96a34c9b64

Add an autoloaded table, that doesn't require this library, with glyph face.
author Daniel Pfeiffer <occitan@esperanto.org>
date Wed, 01 Dec 2004 18:30:33 +0000
parents b925e3274547
children 9a3bb995aa8b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 31157
diff changeset
1 ;;; disp-table.el --- functions for dealing with char tables
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
2
54432
b925e3274547 (standard-display-8bit): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52948
diff changeset
3 ;; Copyright (C) 1987, 94, 95, 1999, 2004 Free Software Foundation, Inc.
845
213978acbc1e entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
4
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
5 ;; Author: Erik Naggum <erik@naggum.no>
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
6 ;; Based on a previous version by Howard Gayle
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 696
diff changeset
7 ;; Maintainer: FSF
3012
d4b85bbedee8 Change "i14n" keyword to "i18n".
Jim Blandy <jimb@redhat.com>
parents: 2628
diff changeset
8 ;; Keywords: i18n
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
9
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
11
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 696
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
15 ;; any later version.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
16
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
21
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13822
diff changeset
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13822
diff changeset
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13822
diff changeset
25 ;; Boston, MA 02111-1307, USA.
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
26
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 31157
diff changeset
27 ;;; Commentary:
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 31157
diff changeset
28
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 696
diff changeset
29 ;;; Code:
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
30
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
31 (put 'display-table 'char-table-extra-slots 6)
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
32
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
33 ;;;###autoload
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
34 (defun make-display-table ()
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
35 "Return a new, empty display table."
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
36 (make-char-table 'display-table nil))
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
37
58711
2c96a34c9b64 Add an autoloaded table, that doesn't require this library, with glyph face.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54432
diff changeset
38 ;;;###autoload (setq standard-display-table #^[t nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil #^^[nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil [11534428 32] nil nil nil nil nil nil nil nil nil nil nil nil [11534428 45] nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil] nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil display-table nil nil 11534428 11534430 [11534382 11534382 11534382] nil])
2c96a34c9b64 Add an autoloaded table, that doesn't require this library, with glyph face.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54432
diff changeset
39 ;; This code generates the preceding table:
2c96a34c9b64 Add an autoloaded table, that doesn't require this library, with glyph face.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54432
diff changeset
40 ;; (let* ((face (lsh (face-id 'glyph) 19))
2c96a34c9b64 Add an autoloaded table, that doesn't require this library, with glyph face.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54432
diff changeset
41 ;; (backslash (+ face ?\\))
2c96a34c9b64 Add an autoloaded table, that doesn't require this library, with glyph face.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54432
diff changeset
42 ;; (dot (+ face ?.))
2c96a34c9b64 Add an autoloaded table, that doesn't require this library, with glyph face.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54432
diff changeset
43 ;; (table (make-display-table))
2c96a34c9b64 Add an autoloaded table, that doesn't require this library, with glyph face.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54432
diff changeset
44 ;; print-length)
2c96a34c9b64 Add an autoloaded table, that doesn't require this library, with glyph face.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54432
diff changeset
45 ;; (set-char-table-extra-slot table 2 backslash)
2c96a34c9b64 Add an autoloaded table, that doesn't require this library, with glyph face.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54432
diff changeset
46 ;; (aset table 2208 (vector backslash ?\ ))
2c96a34c9b64 Add an autoloaded table, that doesn't require this library, with glyph face.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54432
diff changeset
47 ;; (aset table 2221 (vector backslash ?-))
2c96a34c9b64 Add an autoloaded table, that doesn't require this library, with glyph face.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54432
diff changeset
48 ;;
2c96a34c9b64 Add an autoloaded table, that doesn't require this library, with glyph face.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54432
diff changeset
49 ;; (set-char-table-extra-slot table 3 (+ face ?^))
2c96a34c9b64 Add an autoloaded table, that doesn't require this library, with glyph face.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54432
diff changeset
50 ;;
2c96a34c9b64 Add an autoloaded table, that doesn't require this library, with glyph face.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54432
diff changeset
51 ;; (set-char-table-extra-slot table 4 (vector dot dot dot))
2c96a34c9b64 Add an autoloaded table, that doesn't require this library, with glyph face.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54432
diff changeset
52 ;; (print table))
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
53
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
54 ;;; Display-table slot names. The property value says which slot.
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
55
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
56 (put 'truncation 'display-table-slot 0)
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
57 (put 'wrap 'display-table-slot 1)
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
58 (put 'escape 'display-table-slot 2)
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
59 (put 'control 'display-table-slot 3)
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
60 (put 'selective-display 'display-table-slot 4)
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
61 (put 'vertical-border 'display-table-slot 5)
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
62
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
63 ;;;###autoload
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
64 (defun display-table-slot (display-table slot)
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
65 "Return the value of the extra slot in DISPLAY-TABLE named SLOT.
13683
d628bf92f672 (display-table-slot,set-display-table-slot): Document the slot names.
Erik Naggum <erik@naggum.no>
parents: 13199
diff changeset
66 SLOT may be a number from 0 to 5 inclusive, or a slot name (symbol).
d628bf92f672 (display-table-slot,set-display-table-slot): Document the slot names.
Erik Naggum <erik@naggum.no>
parents: 13199
diff changeset
67 Valid symbols are `truncation', `wrap', `escape', `control',
d628bf92f672 (display-table-slot,set-display-table-slot): Document the slot names.
Erik Naggum <erik@naggum.no>
parents: 13199
diff changeset
68 `selective-display', and `vertical-border'."
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
69 (let ((slot-number
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
70 (if (numberp slot) slot
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
71 (or (get slot 'display-table-slot)
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
72 (error "Invalid display-table slot name: %s" slot)))))
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
73 (char-table-extra-slot display-table slot-number)))
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
74
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
75 ;;;###autoload
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
76 (defun set-display-table-slot (display-table slot value)
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
77 "Set the value of the extra slot in DISPLAY-TABLE named SLOT to VALUE.
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
78 SLOT may be a number from 0 to 5 inclusive, or a name (symbol).
13683
d628bf92f672 (display-table-slot,set-display-table-slot): Document the slot names.
Erik Naggum <erik@naggum.no>
parents: 13199
diff changeset
79 Valid symbols are `truncation', `wrap', `escape', `control',
d628bf92f672 (display-table-slot,set-display-table-slot): Document the slot names.
Erik Naggum <erik@naggum.no>
parents: 13199
diff changeset
80 `selective-display', and `vertical-border'."
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
81 (let ((slot-number
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
82 (if (numberp slot) slot
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
83 (or (get slot 'display-table-slot)
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
84 (error "Invalid display-table slot name: %s" slot)))))
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
85 (set-char-table-extra-slot display-table slot-number value)))
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
86
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
87 ;;;###autoload
2072
4a3438b8b92d Add autoload comments.
Richard M. Stallman <rms@gnu.org>
parents: 845
diff changeset
88 (defun describe-display-table (dt)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
89 "Describe the display table DT in a help buffer."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
90 (with-output-to-temp-buffer "*Help*"
696
904853a03d9a *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 662
diff changeset
91 (princ "\nTruncation glyph: ")
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
92 (prin1 (display-table-slot dt 'truncation))
696
904853a03d9a *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 662
diff changeset
93 (princ "\nWrap glyph: ")
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
94 (prin1 (display-table-slot dt 'wrap))
696
904853a03d9a *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 662
diff changeset
95 (princ "\nEscape glyph: ")
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
96 (prin1 (display-table-slot dt 'escape))
696
904853a03d9a *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 662
diff changeset
97 (princ "\nCtrl glyph: ")
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
98 (prin1 (display-table-slot dt 'control))
2628
6b17fe69a82f * disp-table.el (describe-display-table): Don't use the term
Jim Blandy <jimb@redhat.com>
parents: 2523
diff changeset
99 (princ "\nSelective display glyph sequence: ")
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
100 (prin1 (display-table-slot dt 'selective-display))
8920
45e6d5476e7f * disp-table.el: Add support for new window border display table
Jim Blandy <jimb@redhat.com>
parents: 7830
diff changeset
101 (princ "\nVertical window border glyph: ")
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
102 (prin1 (display-table-slot dt 'vertical-border))
2628
6b17fe69a82f * disp-table.el (describe-display-table): Don't use the term
Jim Blandy <jimb@redhat.com>
parents: 2523
diff changeset
103 (princ "\nCharacter display glyph sequences:\n")
4936
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
104 (save-excursion
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
105 (set-buffer standard-output)
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
106 (let ((vector (make-vector 256 nil))
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
107 (i 0))
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
108 (while (< i 256)
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
109 (aset vector i (aref dt i))
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
110 (setq i (1+ i)))
9856
fdd2f06a7d11 (describe-display-table): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 8920
diff changeset
111 (describe-vector vector))
fdd2f06a7d11 (describe-display-table): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 8920
diff changeset
112 (help-mode))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
113 (print-help-return-message)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
114
2072
4a3438b8b92d Add autoload comments.
Richard M. Stallman <rms@gnu.org>
parents: 845
diff changeset
115 ;;;###autoload
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
116 (defun describe-current-display-table ()
4936
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
117 "Describe the display table in use in the selected window and buffer."
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
118 (interactive)
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
119 (let ((disptab (or (window-display-table (selected-window))
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
120 buffer-display-table
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
121 standard-display-table)))
4936
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
122 (if disptab
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
123 (describe-display-table disptab)
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
124 (message "No display table"))))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
125
2072
4a3438b8b92d Add autoload comments.
Richard M. Stallman <rms@gnu.org>
parents: 845
diff changeset
126 ;;;###autoload
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
127 (defun standard-display-8bit (l h)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
128 "Display characters in the range L to H literally."
52948
5044018cd79c * disp-table.el (standard-display-8bit)
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
129 (or standard-display-table
5044018cd79c * disp-table.el (standard-display-8bit)
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
130 (setq standard-display-table (make-display-table)))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
131 (while (<= l h)
54432
b925e3274547 (standard-display-8bit): Simplify.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52948
diff changeset
132 (aset standard-display-table l (if (or (< l ?\ ) (>= l 127)) (vector l)))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
133 (setq l (1+ l))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
134
2072
4a3438b8b92d Add autoload comments.
Richard M. Stallman <rms@gnu.org>
parents: 845
diff changeset
135 ;;;###autoload
3033
8bf84289be17 * disp-table.el (standard-display-default): New function.
Jim Blandy <jimb@redhat.com>
parents: 3012
diff changeset
136 (defun standard-display-default (l h)
8bf84289be17 * disp-table.el (standard-display-default): New function.
Jim Blandy <jimb@redhat.com>
parents: 3012
diff changeset
137 "Display characters in the range L to H using the default notation."
52948
5044018cd79c * disp-table.el (standard-display-8bit)
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
138 (or standard-display-table
5044018cd79c * disp-table.el (standard-display-8bit)
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
139 (setq standard-display-table (make-display-table)))
3033
8bf84289be17 * disp-table.el (standard-display-default): New function.
Jim Blandy <jimb@redhat.com>
parents: 3012
diff changeset
140 (while (<= l h)
31157
cf90d4a5e3b2 (standard-display-default): Make the test of `l'
Dave Love <fx@gnu.org>
parents: 29510
diff changeset
141 (if (and (>= l ?\ ) (char-valid-p l))
cf90d4a5e3b2 (standard-display-default): Make the test of `l'
Dave Love <fx@gnu.org>
parents: 29510
diff changeset
142 (aset standard-display-table l nil))
3033
8bf84289be17 * disp-table.el (standard-display-default): New function.
Jim Blandy <jimb@redhat.com>
parents: 3012
diff changeset
143 (setq l (1+ l))))
8bf84289be17 * disp-table.el (standard-display-default): New function.
Jim Blandy <jimb@redhat.com>
parents: 3012
diff changeset
144
10435
0f07f211973a (standard-display-ascii): Doc fix. Allow use with X.
Karl Heuer <kwzh@gnu.org>
parents: 9856
diff changeset
145 ;; This function does NOT take terminal-dependent escape sequences.
0f07f211973a (standard-display-ascii): Doc fix. Allow use with X.
Karl Heuer <kwzh@gnu.org>
parents: 9856
diff changeset
146 ;; For that, you need to go through create-glyph. Use one of the
0f07f211973a (standard-display-ascii): Doc fix. Allow use with X.
Karl Heuer <kwzh@gnu.org>
parents: 9856
diff changeset
147 ;; other functions below, or roll your own.
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
148 ;;;###autoload
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
149 (defun standard-display-ascii (c s)
10435
0f07f211973a (standard-display-ascii): Doc fix. Allow use with X.
Karl Heuer <kwzh@gnu.org>
parents: 9856
diff changeset
150 "Display character C using printable string S."
52948
5044018cd79c * disp-table.el (standard-display-8bit)
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
151 (or standard-display-table
5044018cd79c * disp-table.el (standard-display-8bit)
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
152 (setq standard-display-table (make-display-table)))
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
153 (aset standard-display-table c (vconcat s)))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
154
2072
4a3438b8b92d Add autoload comments.
Richard M. Stallman <rms@gnu.org>
parents: 845
diff changeset
155 ;;;###autoload
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
156 (defun standard-display-g1 (c sc)
6418
43dea22be493 (standard-display-ascii): Error if using a windowing system.
Karl Heuer <kwzh@gnu.org>
parents: 6417
diff changeset
157 "Display character C as character SC in the g1 character set.
43dea22be493 (standard-display-ascii): Error if using a windowing system.
Karl Heuer <kwzh@gnu.org>
parents: 6417
diff changeset
158 This function assumes that your terminal uses the SO/SI characters;
43dea22be493 (standard-display-ascii): Error if using a windowing system.
Karl Heuer <kwzh@gnu.org>
parents: 6417
diff changeset
159 it is meaningless for an X frame."
29201
c8bfb0b55a91 (standard-display-g1, standard-display-graphic):
Eli Zaretskii <eliz@gnu.org>
parents: 26124
diff changeset
160 (if (memq window-system '(x w32))
6418
43dea22be493 (standard-display-ascii): Error if using a windowing system.
Karl Heuer <kwzh@gnu.org>
parents: 6417
diff changeset
161 (error "Cannot use string glyphs in a windowing system"))
52948
5044018cd79c * disp-table.el (standard-display-8bit)
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
162 (or standard-display-table
5044018cd79c * disp-table.el (standard-display-8bit)
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
163 (setq standard-display-table (make-display-table)))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
164 (aset standard-display-table c
2523
76685b00c607 Use `vector', not `make-rope'.
Richard M. Stallman <rms@gnu.org>
parents: 2072
diff changeset
165 (vector (create-glyph (concat "\016" (char-to-string sc) "\017")))))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
166
2072
4a3438b8b92d Add autoload comments.
Richard M. Stallman <rms@gnu.org>
parents: 845
diff changeset
167 ;;;###autoload
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
168 (defun standard-display-graphic (c gc)
6418
43dea22be493 (standard-display-ascii): Error if using a windowing system.
Karl Heuer <kwzh@gnu.org>
parents: 6417
diff changeset
169 "Display character C as character GC in graphics character set.
43dea22be493 (standard-display-ascii): Error if using a windowing system.
Karl Heuer <kwzh@gnu.org>
parents: 6417
diff changeset
170 This function assumes VT100-compatible escapes; it is meaningless for an
43dea22be493 (standard-display-ascii): Error if using a windowing system.
Karl Heuer <kwzh@gnu.org>
parents: 6417
diff changeset
171 X frame."
29201
c8bfb0b55a91 (standard-display-g1, standard-display-graphic):
Eli Zaretskii <eliz@gnu.org>
parents: 26124
diff changeset
172 (if (memq window-system '(x w32))
6418
43dea22be493 (standard-display-ascii): Error if using a windowing system.
Karl Heuer <kwzh@gnu.org>
parents: 6417
diff changeset
173 (error "Cannot use string glyphs in a windowing system"))
52948
5044018cd79c * disp-table.el (standard-display-8bit)
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
174 (or standard-display-table
5044018cd79c * disp-table.el (standard-display-8bit)
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
175 (setq standard-display-table (make-display-table)))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
176 (aset standard-display-table c
2523
76685b00c607 Use `vector', not `make-rope'.
Richard M. Stallman <rms@gnu.org>
parents: 2072
diff changeset
177 (vector (create-glyph (concat "\e(0" (char-to-string gc) "\e(B")))))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
178
2072
4a3438b8b92d Add autoload comments.
Richard M. Stallman <rms@gnu.org>
parents: 845
diff changeset
179 ;;;###autoload
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
180 (defun standard-display-underline (c uc)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
181 "Display character C as character UC plus underlining."
52948
5044018cd79c * disp-table.el (standard-display-8bit)
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
182 (or standard-display-table
5044018cd79c * disp-table.el (standard-display-8bit)
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
183 (setq standard-display-table (make-display-table)))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
184 (aset standard-display-table c
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 41781
diff changeset
185 (vector
6418
43dea22be493 (standard-display-ascii): Error if using a windowing system.
Karl Heuer <kwzh@gnu.org>
parents: 6417
diff changeset
186 (if window-system
29249
50050adc8385 (standard-display-underline): Don't use internal-find-face.
Dave Love <fx@gnu.org>
parents: 29201
diff changeset
187 (logior uc (lsh (face-id 'underline) 19))
6418
43dea22be493 (standard-display-ascii): Error if using a windowing system.
Karl Heuer <kwzh@gnu.org>
parents: 6417
diff changeset
188 (create-glyph (concat "\e[4m" (char-to-string uc) "\e[m"))))))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
189
2072
4a3438b8b92d Add autoload comments.
Richard M. Stallman <rms@gnu.org>
parents: 845
diff changeset
190 ;;;###autoload
696
904853a03d9a *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 662
diff changeset
191 (defun create-glyph (string)
29510
394a5cf826d6 (create-glyph): Doc fix.
Dave Love <fx@gnu.org>
parents: 29249
diff changeset
192 "Allocate a glyph code to display by sending STRING to the terminal."
696
904853a03d9a *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 662
diff changeset
193 (if (= (length glyph-table) 65536)
904853a03d9a *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 662
diff changeset
194 (error "No free glyph codes remain"))
6417
81e96cd91613 (create-glyph): Don't use slots that look like ASCII.
Karl Heuer <kwzh@gnu.org>
parents: 4936
diff changeset
195 ;; Don't use slots that correspond to ASCII characters.
81e96cd91613 (create-glyph): Don't use slots that look like ASCII.
Karl Heuer <kwzh@gnu.org>
parents: 4936
diff changeset
196 (if (= (length glyph-table) 32)
81e96cd91613 (create-glyph): Don't use slots that look like ASCII.
Karl Heuer <kwzh@gnu.org>
parents: 4936
diff changeset
197 (setq glyph-table (vconcat glyph-table (make-vector 224 nil))))
696
904853a03d9a *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 662
diff changeset
198 (setq glyph-table (vconcat glyph-table (list string)))
904853a03d9a *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 662
diff changeset
199 (1- (length glyph-table)))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
200
3061
1e0f5fb4fcf1 * disp-table.el (standard-display-european): Doc fix. Make
Jim Blandy <jimb@redhat.com>
parents: 3033
diff changeset
201 ;;;###autoload
26124
ee67b2340a0f * disp-table.el (standard-display-european): Remove undocumented
Paul Eggert <eggert@twinsun.com>
parents: 24813
diff changeset
202 (defun standard-display-european (arg)
24813
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
203 "Semi-obsolete way to toggle display of ISO 8859 European characters.
24116
cff6faa1cf82 (standard-display-european): Make all existing
Richard M. Stallman <rms@gnu.org>
parents: 22008
diff changeset
204
24813
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
205 This function is semi-obsolete; if you want to do your editing with
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
206 unibyte characters, it is better to `set-language-environment' coupled
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
207 with either the `--unibyte' option or the EMACS_UNIBYTE environment
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
208 variable, or else customize `enable-multibyte-characters'.
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
209
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
210 With prefix argument, this command enables European character display
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
211 if arg is positive, disables it otherwise. Otherwise, it toggles
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
212 European character display.
22008
6182deb2d814 (standard-display-european): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 21992
diff changeset
213
24813
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
214 When this mode is enabled, characters in the range of 160 to 255
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
215 display not as octal escapes, but as accented characters. Codes 146
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
216 and 160 display as apostrophe and space, even though they are not the
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
217 ASCII codes for apostrophe and space.
19850
6bd245888f10 (standard-display-european): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 19845
diff changeset
218
24813
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
219 Enabling European character display with this command noninteractively
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
220 from Lisp code also selects Latin-1 as the language environment, and
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
221 selects unibyte mode for all Emacs buffers \(both existing buffers and
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
222 those created subsequently). This provides increased compatibility
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
223 for users who call this function in `.emacs'."
19618
6ce60af61e81 (standard-display-european): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 19066
diff changeset
224
7830
1f9ae5be19a2 (standard-display-european): Treat 0 arg like negative.
Richard M. Stallman <rms@gnu.org>
parents: 7300
diff changeset
225 (if (or (<= (prefix-numeric-value arg) 0)
3061
1e0f5fb4fcf1 * disp-table.el (standard-display-european): Doc fix. Make
Jim Blandy <jimb@redhat.com>
parents: 3033
diff changeset
226 (and (null arg)
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
227 (char-table-p standard-display-table)
13822
cbc1f90ea367 (standard-display-european): Make 160 display as space.
Richard M. Stallman <rms@gnu.org>
parents: 13794
diff changeset
228 ;; Test 161, because 160 displays as a space.
13794
47cdd806fcfc (standard-display-european): Test code 161, not 160.
Karl Heuer <kwzh@gnu.org>
parents: 13683
diff changeset
229 (equal (aref standard-display-table 161) [161])))
19814
24d0221b94bc (standard-display-european): Arg AUTO
Richard M. Stallman <rms@gnu.org>
parents: 19679
diff changeset
230 (progn
24d0221b94bc (standard-display-european): Arg AUTO
Richard M. Stallman <rms@gnu.org>
parents: 19679
diff changeset
231 (standard-display-default 160 255)
41781
31aa13c921e0 (standard-display-european):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
232 (unless (or (memq window-system '(x w32)))
24813
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
233 (and (terminal-coding-system)
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
234 (set-terminal-coding-system nil))))
41781
31aa13c921e0 (standard-display-european):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
235 ;; Turn off multibyte chars for more compatibility.
31aa13c921e0 (standard-display-european):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
236 (setq-default enable-multibyte-characters nil)
31aa13c921e0 (standard-display-european):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
237
31aa13c921e0 (standard-display-european):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
238 ;; Switch to Latin-1 language environment
21855
be75888c203f (standard-display-european): Use set-language-environment
Richard M. Stallman <rms@gnu.org>
parents: 21262
diff changeset
239 ;; unless some other has been specified.
41781
31aa13c921e0 (standard-display-european):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
240 (if (equal current-language-environment "English")
31aa13c921e0 (standard-display-european):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
241 (set-language-environment "latin-1"))
31aa13c921e0 (standard-display-european):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
242 (unless (or noninteractive (memq window-system '(x w32)))
26124
ee67b2340a0f * disp-table.el (standard-display-european): Remove undocumented
Paul Eggert <eggert@twinsun.com>
parents: 24813
diff changeset
243 ;; Send those codes literally to a character-based terminal.
ee67b2340a0f * disp-table.el (standard-display-european): Remove undocumented
Paul Eggert <eggert@twinsun.com>
parents: 24813
diff changeset
244 ;; If we are using single-byte characters,
ee67b2340a0f * disp-table.el (standard-display-european): Remove undocumented
Paul Eggert <eggert@twinsun.com>
parents: 24813
diff changeset
245 ;; it doesn't matter which coding system we use.
19920
1d832fd69760 (standard-display-european): Do something useful where AUTO is t or a symbol.
Richard M. Stallman <rms@gnu.org>
parents: 19850
diff changeset
246 (set-terminal-coding-system
26124
ee67b2340a0f * disp-table.el (standard-display-european): Remove undocumented
Paul Eggert <eggert@twinsun.com>
parents: 24813
diff changeset
247 (let ((c (intern (downcase current-language-environment))))
ee67b2340a0f * disp-table.el (standard-display-european): Remove undocumented
Paul Eggert <eggert@twinsun.com>
parents: 24813
diff changeset
248 (if (coding-system-p c) c 'latin-1))))
21855
be75888c203f (standard-display-european): Use set-language-environment
Richard M. Stallman <rms@gnu.org>
parents: 21262
diff changeset
249 (standard-display-european-internal)))
3033
8bf84289be17 * disp-table.el (standard-display-default): New function.
Jim Blandy <jimb@redhat.com>
parents: 3012
diff changeset
250
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
251 (provide 'disp-table)
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
252
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49588
diff changeset
253 ;;; arch-tag: ffe4c28c-960c-47aa-b8a8-ae89d371ffc7
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
254 ;;; disp-table.el ends here