annotate lisp/disp-table.el @ 5753:dbd8305e13cb

Warn about non-string non-integer ARG to #'gensym, bytecomp.el. lisp/ChangeLog addition: 2013-08-21 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el: * bytecomp.el (gensym): * bytecomp.el (byte-compile-gensym): New. Warn that gensym called in a for-effect context is unlikely to be useful. Warn about non-string non-integer ARGs, this is incorrect. Am not changing the function to error with same, most code that makes the mistake is has no problems, which is why it has survived so long. * window-xemacs.el (save-window-excursion/mapping): * window.el (save-window-excursion): Call #'gensym with a string, not a symbol.
author Aidan Kehoe <kehoea@parhasard.net>
date Wed, 21 Aug 2013 19:02:59 +0100
parents 308d34e9f07d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
1 ;;; disp-table.el --- functions for dealing with char tables.
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
2
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
3 ;; Copyright (C) 1987, 1994, 1997, 2007 Free Software Foundation, Inc.
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
4 ;; Copyright (C) 1995 Sun Microsystems.
5113
b2dcf6a6d8ab some changes to doc strings/comments in disp-table.el
Ben Wing <ben@xemacs.org>
parents: 4454
diff changeset
5 ;; Copyright (C) 2005 Ben Wing.
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
6
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
7 ;; Maintainer: XEmacs Development Team
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
8 ;; Keywords: i18n, internal
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
9
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
10 ;; This file is part of XEmacs.
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
11
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5132
diff changeset
12 ;; XEmacs is free software: you can redistribute it and/or modify it
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5132
diff changeset
13 ;; under the terms of the GNU General Public License as published by the
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5132
diff changeset
14 ;; Free Software Foundation, either version 3 of the License, or (at your
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5132
diff changeset
15 ;; option) any later version.
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
16
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5132
diff changeset
17 ;; XEmacs is distributed in the hope that it will be useful, but WITHOUT
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5132
diff changeset
18 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5132
diff changeset
19 ;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5132
diff changeset
20 ;; for more details.
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
21
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5132
diff changeset
23 ;; along with XEmacs. If not, see <http://www.gnu.org/licenses/>.
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
24
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
25 ;;; Synched up with: Not synched with FSF.
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
26
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
27 ;;; Commentary:
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
28
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
29 ;; Rewritten for XEmacs July 1995, Ben Wing.
5113
b2dcf6a6d8ab some changes to doc strings/comments in disp-table.el
Ben Wing <ben@xemacs.org>
parents: 4454
diff changeset
30 ;; November 1998?, display tables generalized to char/range tables, Hrvoje
b2dcf6a6d8ab some changes to doc strings/comments in disp-table.el
Ben Wing <ben@xemacs.org>
parents: 4454
diff changeset
31 ;; Niksic.
b2dcf6a6d8ab some changes to doc strings/comments in disp-table.el
Ben Wing <ben@xemacs.org>
parents: 4454
diff changeset
32 ;; July 2007, rewrite this file to handle generalized display tables,
b2dcf6a6d8ab some changes to doc strings/comments in disp-table.el
Ben Wing <ben@xemacs.org>
parents: 4454
diff changeset
33 ;; Aidan Kehoe.
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
34
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
35 ;;; Code:
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
36
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
37 ;;;###autoload
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
38 (defun make-display-table ()
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
39 "Return a new, empty display table.
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
40
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
41 This returns a generic character table; previously it returned a vector, but
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
42 that was not helpful when dealing with internationalized characters above
4454
1f0aa40cafe0 Small improvements in disp-table.el, mule/cyril-util.el.
Aidan Kehoe <kehoea@parhasard.net>
parents: 4452
diff changeset
43 ?\xFF. See `make-char-table' for details of character tables in general. To
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
44 write code that works with both vectors and character tables, add something
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
45 like the following to the beginning of your file, and use
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
46 `put-display-table' to set what a given character is displayed as, and
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
47 `get-display-table' to examine what that character is currently displayed
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
48 as:
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
49
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
50 \(defun-when-void put-display-table (range value display-table)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
51 \"Set the value for char RANGE to VALUE in DISPLAY-TABLE. \"
4452
82f8351e71c8 Improve portable sample implementations for #'{put,get}-display-table
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
52 (if (sequencep display-table)
82f8351e71c8 Improve portable sample implementations for #'{put,get}-display-table
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
53 (aset display-table range value)
82f8351e71c8 Improve portable sample implementations for #'{put,get}-display-table
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
54 (put-char-table range value display-table)))
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
55
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
56 \(defun-when-void get-display-table (character display-table)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
57 \"Find value for CHARACTER in DISPLAY-TABLE. \"
4452
82f8351e71c8 Improve portable sample implementations for #'{put,get}-display-table
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
58 (if (sequencep display-table)
82f8351e71c8 Improve portable sample implementations for #'{put,get}-display-table
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
59 (aref display-table character)
82f8351e71c8 Improve portable sample implementations for #'{put,get}-display-table
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
60 (get-char-table character display-table)))
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
61
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
62 In this implementation, `put-display-table' and `get-display-table' are
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
63 aliases of `put-char-table' and `get-char-table' respectively, and are
4452
82f8351e71c8 Improve portable sample implementations for #'{put,get}-display-table
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
64 always available."
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
65 (make-char-table 'generic))
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
66
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
67 ;;;###autoload
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
68 (defalias 'put-display-table #'put-char-table)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
69
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
70 ;;;###autoload
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
71 (defalias 'get-display-table #'get-char-table)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
72
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
73 (defun describe-display-table (dt)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
74 "Describe the display table DT in a help buffer."
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
75 (with-displaying-help-buffer
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
76 (lambda ()
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
77 (map-char-table
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
78 (lambda (range value)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
79 (cond
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
80 ((eq range t)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
81 (princ "\nAll characters: \n")
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
82 (princ (format " %S" value)))
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
83 ((eq 'charset (and (symbolp range) (type-of (find-charset range))))
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
84 (princ (format "\n\nCharset %S: \n" (charset-name range)))
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
85 (princ (format " %S" value)))
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
86 ((vectorp range)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
87 (princ (format "\n\nCharset %S, row %d \n"
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
88 (charset-name (aref value 0))
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
89 (aref value 1)))
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
90 (princ (format " %S\n\n" value)))
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
91 ((characterp range)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
92 (princ (format "\nCharacter U+%04X, %S: "
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
93 range (if (fboundp 'split-char)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
94 (split-char range)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
95 (list 'ascii (char-to-int range)))))
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
96 (princ (format " %S" value))))
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
97 nil) dt)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
98 (princ
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
99 "\n\nFor some of the various other glyphs that GNU Emacs uses the display
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
100 table for, see the XEmacs specifiers `truncation-glyph' ,
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
101 `continuation-glyph', `control-arrow-glyph', `octal-escape-glyph' and the
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
102 others described in the docstring of `make-glyph'. \n\n"))))
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
103
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
104
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
105 ;;;###autoload
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
106 (defun describe-current-display-table (&optional domain)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
107 "Describe the display table in use in the selected window and buffer."
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
108 (interactive)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
109 (or domain (setq domain (selected-window)))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
110 (let ((disptab (specifier-instance current-display-table domain)))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
111 (if disptab
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
112 (describe-display-table disptab)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
113 (message "No display table"))))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
114
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
115 ;; #### we need a generic frob-specifier function.
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
116 ;; #### this also needs to be redone like frob-face-property.
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
117
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
118 ;; Let me say one more time how much dynamic scoping sucks.
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
119
5113
b2dcf6a6d8ab some changes to doc strings/comments in disp-table.el
Ben Wing <ben@xemacs.org>
parents: 4454
diff changeset
120 ;; #### Need more thinking about basic primitives for modifying a specifier.
b2dcf6a6d8ab some changes to doc strings/comments in disp-table.el
Ben Wing <ben@xemacs.org>
parents: 4454
diff changeset
121 ;; cf `modify-specifier-instances'.
b2dcf6a6d8ab some changes to doc strings/comments in disp-table.el
Ben Wing <ben@xemacs.org>
parents: 4454
diff changeset
122
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
123 ;;;###autoload
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
124 (defun frob-display-table (fdt-function fdt-locale &optional tag-set)
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
125 (or fdt-locale (setq fdt-locale 'global))
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
126 (or (specifier-spec-list current-display-table fdt-locale tag-set)
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
127 (add-spec-to-specifier current-display-table (make-display-table)
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
128 fdt-locale tag-set))
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
129 (add-spec-list-to-specifier
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
130 current-display-table
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
131 (list (cons fdt-locale
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
132 (mapcar
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
133 (lambda (fdt-x)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
134 (funcall fdt-function (cdr fdt-x))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
135 fdt-x)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
136 (cdar (specifier-spec-list current-display-table
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
137 fdt-locale tag-set)))))))
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
138
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
139 (defun standard-display-8bit-1 (dt l h)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
140 (while (<= l h)
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
141 (remove-char-table (int-to-char l) dt)
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
142 (setq l (1+ l))))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
143
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
144 ;;;###autoload
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
145 (defun standard-display-8bit (l h &optional locale)
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
146 "Display characters in the range L to H literally [sic].
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
147
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
148 GNU Emacs includes this function. There, `literally' has no good meaning.
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
149 Under XEmacs, this function makes characters with numeric values in the
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
150 range L to H display as themselves; that is, as ASCII, latin-iso8859-1,
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
151 latin-iso8859-2 or whatever. See `standard-display-default' for the inverse
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
152 function. "
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
153 (frob-display-table
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
154 (lambda (x)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
155 (standard-display-8bit-1 x l h))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
156 locale))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
157
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
158 (defun standard-display-default-1 (dt l h)
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
159 "Misnamed function under XEmacs. See `standard-display-default'."
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
160 (while (<= l h)
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
161 (put-char-table (int-to-char l) (format "\\%o" l) dt)
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
162 (setq l (1+ l))))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
163
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
164 ;;;###autoload
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
165 (defun standard-display-default (l h &optional locale)
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
166 "Display characters in the range L to H using octal escape notation.
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
167
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
168 In the XEmacs context this function is misnamed. Under GNU Emacs,
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
169 characters in the range #xA0 to #xFF display as octal escapes unless
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
170 `standard-display-european' has been called; this function neutralizes the
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
171 effects of `standard-display-european'. Under XEmacs, those characters
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
172 normally do not display as octal escapes (this ignores hackery like
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
173 specifying the X11 font character set on non-Mule builds) and this function
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
174 sets them to display as octal escapes. "
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
175 (frob-display-table
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
176 (lambda (x)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
177 (standard-display-default-1 x l h))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
178 locale))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
179
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
180 ;;;###autoload
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
181 (defun standard-display-ascii (c s &optional locale)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
182 "Display character C using printable string S."
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
183 (frob-display-table
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
184 (lambda (x)
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
185 (put-char-table c s x))
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
186 locale))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
187
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
188 ;;;###autoload
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
189 (defun standard-display-g1 (c sc &optional locale)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
190 "Display character C as character SC in the g1 character set.
5113
b2dcf6a6d8ab some changes to doc strings/comments in disp-table.el
Ben Wing <ben@xemacs.org>
parents: 4454
diff changeset
191 This only has an effect on TTY devices and assumes that your terminal uses
b2dcf6a6d8ab some changes to doc strings/comments in disp-table.el
Ben Wing <ben@xemacs.org>
parents: 4454
diff changeset
192 the SO/SI characters."
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
193 (frob-display-table
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
194 (lambda (x)
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
195 (put-char-table c (concat "\016" (char-to-string sc) "\017") x))
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
196 locale '(tty)))
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
197
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
198 ;;;###autoload
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
199 (defun standard-display-graphic (c gc &optional locale)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
200 "Display character C as character GC in graphics character set.
5113
b2dcf6a6d8ab some changes to doc strings/comments in disp-table.el
Ben Wing <ben@xemacs.org>
parents: 4454
diff changeset
201 This only has an effect on TTY devices and assumes VT100-compatible escapes."
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
202 (frob-display-table
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
203 (lambda (x)
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
204 (put-char-table c (concat "\e(0" (char-to-string gc) "\e(B") x))
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
205 locale '(tty)))
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
206
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
207 ;;;###autoload
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
208 (defun standard-display-underline (c uc &optional locale)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
209 "Display character C as character UC plus underlining."
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
210 (frob-display-table
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
211 (lambda (x)
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
212 (let (glyph)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
213 (setq glyph (make-glyph (vector 'string :data (char-to-string uc))))
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
214 (set-glyph-face glyph 'underline)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
215 (put-char-table c glyph x)))
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
216 locale))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
217
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
218 ;;;###autoload
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
219 (defun standard-display-european (arg &optional locale)
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
220 "Toggle display of European characters encoded with ISO 8859-1.
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
221 When enabled (the default), characters in the range of 160 to 255 display
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
222 as accented characters. With negative prefix argument, display characters in
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
223 that range as octal escapes.
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
224
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
225 If you want to work in a Western European language under XEmacs, it
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
226 shouldn't be necessary to call this function--things should just work. But
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
227 it's in a sufficient number of init files that we're not in a hurry to
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
228 remove it. "
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
229 (interactive "P")
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
230 (if (<= (prefix-numeric-value arg) 0)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
231 (frob-display-table
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
232 (lambda (x)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
233 (standard-display-default-1 x 160 255))
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
234 locale)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
235 (frob-display-table
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
236 (lambda (x)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
237 (standard-display-8bit-1 x 160 255))
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
238 locale)))
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
239
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
240 (provide 'disp-table)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
241
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
242 ;;; disp-table.el ends here