annotate lisp/disp-table.el @ 39625:e441240482b2

(add-change-log-entry): Skip copyright notice and copying permission notice at start of file, if any. Make use of terms "entry" and "item" accord with Emacs manual. Simplify the logic for moving point while entering or creating an entry and then an item. (add-change-log-entry-other-window): Doc fix.
author Richard M. Stallman <rms@gnu.org>
date Sat, 06 Oct 2001 02:32:54 +0000
parents 253f761ad37b
children 31aa13c921e0
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
24116
cff6faa1cf82 (standard-display-european): Make all existing
Richard M. Stallman <rms@gnu.org>
parents: 22008
diff changeset
3 ;; Copyright (C) 1987, 1994, 1995, 1999 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
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
38 (or standard-display-table
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
39 (setq standard-display-table (make-display-table)))
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
40
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
41 ;;; 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
42
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
43 (put 'truncation 'display-table-slot 0)
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
44 (put 'wrap 'display-table-slot 1)
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
45 (put 'escape 'display-table-slot 2)
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
46 (put 'control 'display-table-slot 3)
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
47 (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
48 (put 'vertical-border 'display-table-slot 5)
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
49
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
50 ;;;###autoload
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
51 (defun display-table-slot (display-table slot)
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
52 "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
53 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
54 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
55 `selective-display', and `vertical-border'."
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
56 (let ((slot-number
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
57 (if (numberp slot) slot
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
58 (or (get slot 'display-table-slot)
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
59 (error "Invalid display-table slot name: %s" slot)))))
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
60 (char-table-extra-slot display-table slot-number)))
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
61
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
62 ;;;###autoload
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
63 (defun set-display-table-slot (display-table slot value)
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
64 "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
65 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
66 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
67 `selective-display', and `vertical-border'."
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
68 (let ((slot-number
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
69 (if (numberp slot) slot
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
70 (or (get slot 'display-table-slot)
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
71 (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
72 (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
73
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
74 ;;;###autoload
2072
4a3438b8b92d Add autoload comments.
Richard M. Stallman <rms@gnu.org>
parents: 845
diff changeset
75 (defun describe-display-table (dt)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
76 "Describe the display table DT in a help buffer."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
77 (with-output-to-temp-buffer "*Help*"
696
904853a03d9a *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 662
diff changeset
78 (princ "\nTruncation glyph: ")
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
79 (prin1 (display-table-slot dt 'truncation))
696
904853a03d9a *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 662
diff changeset
80 (princ "\nWrap glyph: ")
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
81 (prin1 (display-table-slot dt 'wrap))
696
904853a03d9a *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 662
diff changeset
82 (princ "\nEscape glyph: ")
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
83 (prin1 (display-table-slot dt 'escape))
696
904853a03d9a *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 662
diff changeset
84 (princ "\nCtrl glyph: ")
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
85 (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
86 (princ "\nSelective display glyph sequence: ")
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
87 (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
88 (princ "\nVertical window border glyph: ")
13199
9424e02a6e18 (display-table-slot, set-display-table-slot):
Richard M. Stallman <rms@gnu.org>
parents: 13164
diff changeset
89 (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
90 (princ "\nCharacter display glyph sequences:\n")
4936
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
91 (save-excursion
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
92 (set-buffer standard-output)
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
93 (let ((vector (make-vector 256 nil))
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
94 (i 0))
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
95 (while (< i 256)
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
96 (aset vector i (aref dt i))
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
97 (setq i (1+ i)))
9856
fdd2f06a7d11 (describe-display-table): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 8920
diff changeset
98 (describe-vector vector))
fdd2f06a7d11 (describe-display-table): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 8920
diff changeset
99 (help-mode))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
100 (print-help-return-message)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
101
2072
4a3438b8b92d Add autoload comments.
Richard M. Stallman <rms@gnu.org>
parents: 845
diff changeset
102 ;;;###autoload
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
103 (defun describe-current-display-table ()
4936
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
104 "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
105 (interactive)
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
106 (let ((disptab (or (window-display-table (selected-window))
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
107 buffer-display-table
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
108 standard-display-table)))
4936
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
109 (if disptab
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
110 (describe-display-table disptab)
35e9402cb6bf (describe-current-display-table):
Richard M. Stallman <rms@gnu.org>
parents: 3061
diff changeset
111 (message "No display table"))))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
112
2072
4a3438b8b92d Add autoload comments.
Richard M. Stallman <rms@gnu.org>
parents: 845
diff changeset
113 ;;;###autoload
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
114 (defun standard-display-8bit (l h)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
115 "Display characters in the range L to H literally."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
116 (while (<= l h)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
117 (if (and (>= l ?\ ) (< l 127))
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
118 (aset standard-display-table l nil)
2628
6b17fe69a82f * disp-table.el (describe-display-table): Don't use the term
Jim Blandy <jimb@redhat.com>
parents: 2523
diff changeset
119 (aset standard-display-table l (vector l)))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
120 (setq l (1+ l))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
121
2072
4a3438b8b92d Add autoload comments.
Richard M. Stallman <rms@gnu.org>
parents: 845
diff changeset
122 ;;;###autoload
3033
8bf84289be17 * disp-table.el (standard-display-default): New function.
Jim Blandy <jimb@redhat.com>
parents: 3012
diff changeset
123 (defun standard-display-default (l h)
8bf84289be17 * disp-table.el (standard-display-default): New function.
Jim Blandy <jimb@redhat.com>
parents: 3012
diff changeset
124 "Display characters in the range L to H using the default notation."
8bf84289be17 * disp-table.el (standard-display-default): New function.
Jim Blandy <jimb@redhat.com>
parents: 3012
diff changeset
125 (while (<= l h)
31157
cf90d4a5e3b2 (standard-display-default): Make the test of `l'
Dave Love <fx@gnu.org>
parents: 29510
diff changeset
126 (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
127 (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
128 (setq l (1+ l))))
8bf84289be17 * disp-table.el (standard-display-default): New function.
Jim Blandy <jimb@redhat.com>
parents: 3012
diff changeset
129
10435
0f07f211973a (standard-display-ascii): Doc fix. Allow use with X.
Karl Heuer <kwzh@gnu.org>
parents: 9856
diff changeset
130 ;; 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
131 ;; 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
132 ;; other functions below, or roll your own.
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
133 ;;;###autoload
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
134 (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
135 "Display character C using printable string S."
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
136 (aset standard-display-table c (vconcat s)))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
137
2072
4a3438b8b92d Add autoload comments.
Richard M. Stallman <rms@gnu.org>
parents: 845
diff changeset
138 ;;;###autoload
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
139 (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
140 "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
141 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
142 it is meaningless for an X frame."
29201
c8bfb0b55a91 (standard-display-g1, standard-display-graphic):
Eli Zaretskii <eliz@gnu.org>
parents: 26124
diff changeset
143 (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
144 (error "Cannot use string glyphs in a windowing system"))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
145 (aset standard-display-table c
2523
76685b00c607 Use `vector', not `make-rope'.
Richard M. Stallman <rms@gnu.org>
parents: 2072
diff changeset
146 (vector (create-glyph (concat "\016" (char-to-string sc) "\017")))))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
147
2072
4a3438b8b92d Add autoload comments.
Richard M. Stallman <rms@gnu.org>
parents: 845
diff changeset
148 ;;;###autoload
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
149 (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
150 "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
151 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
152 X frame."
29201
c8bfb0b55a91 (standard-display-g1, standard-display-graphic):
Eli Zaretskii <eliz@gnu.org>
parents: 26124
diff changeset
153 (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
154 (error "Cannot use string glyphs in a windowing system"))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
155 (aset standard-display-table c
2523
76685b00c607 Use `vector', not `make-rope'.
Richard M. Stallman <rms@gnu.org>
parents: 2072
diff changeset
156 (vector (create-glyph (concat "\e(0" (char-to-string gc) "\e(B")))))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
157
2072
4a3438b8b92d Add autoload comments.
Richard M. Stallman <rms@gnu.org>
parents: 845
diff changeset
158 ;;;###autoload
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
159 (defun standard-display-underline (c uc)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
160 "Display character C as character UC plus underlining."
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
161 (aset standard-display-table c
6418
43dea22be493 (standard-display-ascii): Error if using a windowing system.
Karl Heuer <kwzh@gnu.org>
parents: 6417
diff changeset
162 (vector
43dea22be493 (standard-display-ascii): Error if using a windowing system.
Karl Heuer <kwzh@gnu.org>
parents: 6417
diff changeset
163 (if window-system
29249
50050adc8385 (standard-display-underline): Don't use internal-find-face.
Dave Love <fx@gnu.org>
parents: 29201
diff changeset
164 (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
165 (create-glyph (concat "\e[4m" (char-to-string uc) "\e[m"))))))
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
696
904853a03d9a *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 662
diff changeset
168 (defun create-glyph (string)
29510
394a5cf826d6 (create-glyph): Doc fix.
Dave Love <fx@gnu.org>
parents: 29249
diff changeset
169 "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
170 (if (= (length glyph-table) 65536)
904853a03d9a *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 662
diff changeset
171 (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
172 ;; 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
173 (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
174 (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
175 (setq glyph-table (vconcat glyph-table (list string)))
904853a03d9a *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 662
diff changeset
176 (1- (length glyph-table)))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
177
3061
1e0f5fb4fcf1 * disp-table.el (standard-display-european): Doc fix. Make
Jim Blandy <jimb@redhat.com>
parents: 3033
diff changeset
178 ;;;###autoload
26124
ee67b2340a0f * disp-table.el (standard-display-european): Remove undocumented
Paul Eggert <eggert@twinsun.com>
parents: 24813
diff changeset
179 (defun standard-display-european (arg)
24813
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
180 "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
181
24813
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
182 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
183 unibyte characters, it is better to `set-language-environment' coupled
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
184 with either the `--unibyte' option or the EMACS_UNIBYTE environment
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
185 variable, or else customize `enable-multibyte-characters'.
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
186
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
187 With prefix argument, this command enables European character display
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
188 if arg is positive, disables it otherwise. Otherwise, it toggles
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
189 European character display.
22008
6182deb2d814 (standard-display-european): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 21992
diff changeset
190
24813
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
191 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
192 display not as octal escapes, but as accented characters. Codes 146
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
193 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
194 ASCII codes for apostrophe and space.
19850
6bd245888f10 (standard-display-european): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 19845
diff changeset
195
24813
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
196 Enabling European character display with this command noninteractively
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
197 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
198 selects unibyte mode for all Emacs buffers \(both existing buffers and
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
199 those created subsequently). This provides increased compatibility
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
200 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
201
7830
1f9ae5be19a2 (standard-display-european): Treat 0 arg like negative.
Richard M. Stallman <rms@gnu.org>
parents: 7300
diff changeset
202 (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
203 (and (null arg)
13164
79eba40cdf02 New implementation with char-tables.
Erik Naggum <erik@naggum.no>
parents: 10435
diff changeset
204 (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
205 ;; 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
206 (equal (aref standard-display-table 161) [161])))
19814
24d0221b94bc (standard-display-european): Arg AUTO
Richard M. Stallman <rms@gnu.org>
parents: 19679
diff changeset
207 (progn
24d0221b94bc (standard-display-european): Arg AUTO
Richard M. Stallman <rms@gnu.org>
parents: 19679
diff changeset
208 (standard-display-default 160 255)
24813
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
209 (unless (or (memq window-system '(x w32))
26124
ee67b2340a0f * disp-table.el (standard-display-european): Remove undocumented
Paul Eggert <eggert@twinsun.com>
parents: 24813
diff changeset
210 (interactive-p))
24813
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
211 (and (terminal-coding-system)
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
212 (set-terminal-coding-system nil))))
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
213 ;; If the user does this explicitly from Lisp (as in .emacs),
19066
f51eb6bca2dd (standard-display-european): New arg AUTO.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
214 ;; turn off multibyte chars for more compatibility.
26124
ee67b2340a0f * disp-table.el (standard-display-european): Remove undocumented
Paul Eggert <eggert@twinsun.com>
parents: 24813
diff changeset
215 (unless (interactive-p)
20906
64a8cdbdef42 (standard-display-european): If AUTO is nil,
Richard M. Stallman <rms@gnu.org>
parents: 20479
diff changeset
216 (setq-default enable-multibyte-characters nil)
24116
cff6faa1cf82 (standard-display-european): Make all existing
Richard M. Stallman <rms@gnu.org>
parents: 22008
diff changeset
217 (mapcar (lambda (buffer)
cff6faa1cf82 (standard-display-european): Make all existing
Richard M. Stallman <rms@gnu.org>
parents: 22008
diff changeset
218 (with-current-buffer buffer
cff6faa1cf82 (standard-display-european): Make all existing
Richard M. Stallman <rms@gnu.org>
parents: 22008
diff changeset
219 (if enable-multibyte-characters
cff6faa1cf82 (standard-display-european): Make all existing
Richard M. Stallman <rms@gnu.org>
parents: 22008
diff changeset
220 (set-buffer-multibyte nil))))
cff6faa1cf82 (standard-display-european): Make all existing
Richard M. Stallman <rms@gnu.org>
parents: 22008
diff changeset
221 (buffer-list)))
21855
be75888c203f (standard-display-european): Use set-language-environment
Richard M. Stallman <rms@gnu.org>
parents: 21262
diff changeset
222 ;; If the user does this explicitly,
be75888c203f (standard-display-european): Use set-language-environment
Richard M. Stallman <rms@gnu.org>
parents: 21262
diff changeset
223 ;; switch to Latin-1 language environment
be75888c203f (standard-display-european): Use set-language-environment
Richard M. Stallman <rms@gnu.org>
parents: 21262
diff changeset
224 ;; unless some other has been specified.
26124
ee67b2340a0f * disp-table.el (standard-display-european): Remove undocumented
Paul Eggert <eggert@twinsun.com>
parents: 24813
diff changeset
225 (unless (interactive-p)
21855
be75888c203f (standard-display-european): Use set-language-environment
Richard M. Stallman <rms@gnu.org>
parents: 21262
diff changeset
226 (if (equal current-language-environment "English")
be75888c203f (standard-display-european): Use set-language-environment
Richard M. Stallman <rms@gnu.org>
parents: 21262
diff changeset
227 (set-language-environment "latin-1")))
24813
f581efbf0caf (standard-display-european):
Karl Heuer <kwzh@gnu.org>
parents: 24116
diff changeset
228 (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
229 (interactive-p))
ee67b2340a0f * disp-table.el (standard-display-european): Remove undocumented
Paul Eggert <eggert@twinsun.com>
parents: 24813
diff changeset
230 ;; 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
231 ;; 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
232 ;; 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
233 (set-terminal-coding-system
26124
ee67b2340a0f * disp-table.el (standard-display-european): Remove undocumented
Paul Eggert <eggert@twinsun.com>
parents: 24813
diff changeset
234 (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
235 (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
236 (standard-display-european-internal)))
3033
8bf84289be17 * disp-table.el (standard-display-default): New function.
Jim Blandy <jimb@redhat.com>
parents: 3012
diff changeset
237
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
238 (provide 'disp-table)
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
239
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
240 ;;; disp-table.el ends here