Mercurial > emacs
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 |
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 | 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 | 9 |
10 ;; This file is part of GNU Emacs. | |
11 | |
12 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
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 | 15 ;; any later version. |
16 | |
17 ;; GNU Emacs is distributed in the hope that it will be useful, | |
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 ;; GNU General Public License for more details. | |
21 | |
22 ;; You should have received a copy of the GNU General Public License | |
14169 | 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. | |
36 | 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 | 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 | 75 (defun describe-display-table (dt) |
584 | 76 "Describe the display table DT in a help buffer." |
36 | 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 | 100 (print-help-return-message))) |
101 | |
2072 | 102 ;;;###autoload |
36 | 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 | 112 |
2072 | 113 ;;;###autoload |
36 | 114 (defun standard-display-8bit (l h) |
584 | 115 "Display characters in the range L to H literally." |
36 | 116 (while (<= l h) |
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 | 120 (setq l (1+ l)))) |
121 | |
2072 | 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 | 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 | 137 |
2072 | 138 ;;;###autoload |
36 | 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 | 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 | 147 |
2072 | 148 ;;;###autoload |
36 | 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 | 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 | 157 |
2072 | 158 ;;;###autoload |
36 | 159 (defun standard-display-underline (c uc) |
160 "Display character C as character UC plus underlining." | |
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 | 166 |
2072 | 167 ;;;###autoload |
696
904853a03d9a
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
662
diff
changeset
|
168 (defun create-glyph (string) |
29510 | 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 | 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 | 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 | 182 This function is semi-obsolete; if you want to do your editing with |
183 unibyte characters, it is better to `set-language-environment' coupled | |
184 with either the `--unibyte' option or the EMACS_UNIBYTE environment | |
185 variable, or else customize `enable-multibyte-characters'. | |
186 | |
187 With prefix argument, this command enables European character display | |
188 if arg is positive, disables it otherwise. Otherwise, it toggles | |
189 European character display. | |
22008
6182deb2d814
(standard-display-european): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
21992
diff
changeset
|
190 |
24813 | 191 When this mode is enabled, characters in the range of 160 to 255 |
192 display not as octal escapes, but as accented characters. Codes 146 | |
193 and 160 display as apostrophe and space, even though they are not the | |
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 | 196 Enabling European character display with this command noninteractively |
197 from Lisp code also selects Latin-1 as the language environment, and | |
198 selects unibyte mode for all Emacs buffers \(both existing buffers and | |
199 those created subsequently). This provides increased compatibility | |
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 | 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 | 211 (and (terminal-coding-system) |
212 (set-terminal-coding-system nil)))) | |
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 | 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 | 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 |