annotate lisp/disp-table.el @ 5157:1fae11d56ad2

redo memory-usage mechanism, add way of dynamically initializing Lisp objects -------------------- ChangeLog entries follow: -------------------- lisp/ChangeLog addition: 2010-03-18 Ben Wing <ben@xemacs.org> * diagnose.el (show-memory-usage): Rewrite to take into account API changes in memory-usage functions. src/ChangeLog addition: 2010-03-18 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (disksave_object_finalization_1): * alloc.c (lisp_object_storage_size): * alloc.c (listu): * alloc.c (listn): * alloc.c (Fobject_memory_usage_stats): * alloc.c (compute_memusage_stats_length): * alloc.c (Fobject_memory_usage): * alloc.c (Ftotal_object_memory_usage): * alloc.c (malloced_storage_size): * alloc.c (common_init_alloc_early): * alloc.c (reinit_alloc_objects_early): * alloc.c (reinit_alloc_early): * alloc.c (init_alloc_once_early): * alloc.c (syms_of_alloc): * alloc.c (reinit_vars_of_alloc): * buffer.c: * buffer.c (struct buffer_stats): * buffer.c (compute_buffer_text_usage): * buffer.c (compute_buffer_usage): * buffer.c (buffer_memory_usage): * buffer.c (buffer_objects_create): * buffer.c (syms_of_buffer): * buffer.c (vars_of_buffer): * console-impl.h (struct console_methods): * dynarr.c (Dynarr_memory_usage): * emacs.c (main_1): * events.c (clear_event_resource): * extents.c: * extents.c (compute_buffer_extent_usage): * extents.c (extent_objects_create): * extents.h: * faces.c: * faces.c (compute_face_cachel_usage): * faces.c (face_objects_create): * faces.h: * general-slots.h: * glyphs.c: * glyphs.c (compute_glyph_cachel_usage): * glyphs.c (glyph_objects_create): * glyphs.h: * lisp.h: * lisp.h (struct usage_stats): * lrecord.h: * lrecord.h (enum lrecord_type): * lrecord.h (struct lrecord_implementation): * lrecord.h (MC_ALLOC_CALL_FINALIZER_FOR_DISKSAVE): * lrecord.h (DEFINE_DUMPABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_SIZABLE_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_FROB_BLOCK_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_INTERNAL_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_SIZABLE_INTERNAL_LISP_OBJECT): * lrecord.h (MAKE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_LISP_OBJECT): * lrecord.h (DEFINE_DUMPABLE_MODULE_SIZABLE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_LISP_OBJECT): * lrecord.h (DEFINE_NODUMP_MODULE_SIZABLE_LISP_OBJECT): * lrecord.h (MAKE_MODULE_LISP_OBJECT): * lrecord.h (INIT_LISP_OBJECT): * lrecord.h (INIT_MODULE_LISP_OBJECT): * lrecord.h (UNDEF_LISP_OBJECT): * lrecord.h (UNDEF_MODULE_LISP_OBJECT): * lrecord.h (DECLARE_LISP_OBJECT): * lrecord.h (DECLARE_MODULE_API_LISP_OBJECT): * lrecord.h (DECLARE_MODULE_LISP_OBJECT): * lstream.c: * lstream.c (syms_of_lstream): * lstream.c (vars_of_lstream): * marker.c: * marker.c (compute_buffer_marker_usage): * mc-alloc.c (mc_alloced_storage_size): * mc-alloc.h: * mule-charset.c: * mule-charset.c (struct charset_stats): * mule-charset.c (compute_charset_usage): * mule-charset.c (charset_memory_usage): * mule-charset.c (mule_charset_objects_create): * mule-charset.c (syms_of_mule_charset): * mule-charset.c (vars_of_mule_charset): * redisplay.c: * redisplay.c (compute_rune_dynarr_usage): * redisplay.c (compute_display_block_dynarr_usage): * redisplay.c (compute_glyph_block_dynarr_usage): * redisplay.c (compute_display_line_dynarr_usage): * redisplay.c (compute_line_start_cache_dynarr_usage): * redisplay.h: * scrollbar-gtk.c (gtk_compute_scrollbar_instance_usage): * scrollbar-msw.c (mswindows_compute_scrollbar_instance_usage): * scrollbar-x.c (x_compute_scrollbar_instance_usage): * scrollbar.c (compute_scrollbar_instance_usage): * scrollbar.h: * symbols.c: * symbols.c (reinit_symbol_objects_early): * symbols.c (init_symbols_once_early): * symbols.c (reinit_symbols_early): * symbols.c (defsymbol_massage_name_1): * symsinit.h: * ui-gtk.c: * ui-gtk.c (emacs_gtk_object_getprop): * ui-gtk.c (emacs_gtk_object_putprop): * ui-gtk.c (ui_gtk_objects_create): * unicode.c (compute_from_unicode_table_size_1): * unicode.c (compute_to_unicode_table_size_1): * unicode.c (compute_from_unicode_table_size): * unicode.c (compute_to_unicode_table_size): * window.c: * window.c (struct window_stats): * window.c (compute_window_mirror_usage): * window.c (compute_window_usage): * window.c (window_memory_usage): * window.c (window_objects_create): * window.c (syms_of_window): * window.c (vars_of_window): * window.h: Redo memory-usage mechanism, make it general; add way of dynamically initializing Lisp object types -- OBJECT_HAS_METHOD(), similar to CONSOLE_HAS_METHOD(). (1) Create OBJECT_HAS_METHOD(), OBJECT_HAS_PROPERTY() etc. for specifying that a Lisp object type has a particular method or property. Call such methods with OBJECT_METH, MAYBE_OBJECT_METH, OBJECT_METH_OR_GIVEN; retrieve properties with OBJECT_PROPERTY. Methods that formerly required a DEFINE_*GENERAL_LISP_OBJECT() to specify them (getprop, putprop, remprop, plist, disksave) now instead use the dynamic-method mechanism. The main benefit of this is that new methods or properties can be added without requiring that the declaration statements of all existing methods be modified. We have to make the `struct lrecord_implementation' non-const, but I don't think this should have any effect on speed -- the only possible method that's really speed-critical is the mark method, and we already extract those out into a separate (non-const) array for increased cache locality. Object methods need to be reinitialized after pdump, so we put them in separate functions such as face_objects_create(), extent_objects_create() and call them appropriately from emacs.c The only current object property (`memusage_stats_list') that objects can specify is a Lisp object and gets staticpro()ed so it only needs to be set during dump time, but because it references symbols that might not exist in a syms_of_() function, we initialize it in vars_of_(). There is also an object property (`num_extra_memusage_stats') that is automatically initialized based on `memusage_stats_list'; we do that in reinit_vars_of_alloc(), which is called after all vars_of_() functions are called. `disksaver' method was renamed `disksave' to correspond with the name normally given to the function (e.g. disksave_lstream()). (2) Generalize the memory-usage mechanism in `buffer-memory-usage', `window-memory-usage', `charset-memory-usage' into an object-type- specific mechanism called by a single function `object-memory-usage'. (Former function `object-memory-usage' renamed to `total-object-memory-usage'). Generalize the mechanism of different "slices" so that we can have different "classes" of memory described and different "slices" onto each class; `t' separates classes, `nil' separates slices. Currently we have three classes defined: the memory of an object itself, non-Lisp-object memory associated with the object (e.g. arrays or dynarrs stored as fields in the object), and Lisp-object memory associated with the object (other internal Lisp objects stored in the object). This isn't completely finished yet and we might need to further separate the "other internal Lisp objects" class into two classes. The memory-usage mechanism uses a `struct usage_stats' (renamed from `struct overhead_stats') to describe a malloc-view onto a set of allocated memory (listing how much was requested and various types of overhead) and a more general `struct generic_usage_stats' (with a `struct usage_stats' in it) to hold all statistics about object memory. `struct generic_usage_stats' contains an array of 32 Bytecounts, which are statistics of unspecified semantics. The intention is that individual types declare a corresponding struct (e.g. `struct window_stats') with the same structure but with specific fields in place of the array, corresponding to specific statistics. The number of such statistics is an object property computed from the list of tags (Lisp symbols describing the statistics) stored in `memusage_stats_list'. The idea here is to allow particular object types to customize the number and semantics of the statistics where completely avoiding consing. This doesn't matter so much yet, but the intention is to have the memory usage of all objects computed at the end of GC, at the same time as other statistics are currently computed. The values for all statistics for a single type would be added up to compute aggregate values for all objects of a specific type. To make this efficient, we can't allow any memory allocation at all. (3) Create some additional functions for creating lists that specify the elements directly as args rather than indirectly through an array: listn() (number of args given), listu() (list terminated by Qunbound). (4) Delete a bit of remaining unused C window_config stuff, also unused lrecord_type_popup_data.
author Ben Wing <ben@xemacs.org>
date Thu, 18 Mar 2010 10:50:06 -0500
parents e84ee15ca495
children 308d34e9f07d
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
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
12 ;; XEmacs is free software; you can redistribute it and/or modify it
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
13 ;; under the terms of the GNU General Public License as published by
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
15 ;; any later version.
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
16
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
17 ;; XEmacs is distributed in the hope that it will be useful, but
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
18 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
20 ;; General Public License for more details.
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
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
23 ;; along with XEmacs; see the file COPYING. If not, write to the
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
24 ;; Free Software Foundation, 59 Temple Place - Suite 330,
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
25 ;; Boston, MA 02111-1307, USA.
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
26
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
27 ;;; Synched up with: Not synched with FSF.
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
28
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
29 ;;; Commentary:
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
30
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
31 ;; 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
32 ;; 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
33 ;; Niksic.
b2dcf6a6d8ab some changes to doc strings/comments in disp-table.el
Ben Wing <ben@xemacs.org>
parents: 4454
diff changeset
34 ;; 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
35 ;; Aidan Kehoe.
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
36
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
37 ;;; Code:
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
38
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
39 ;;;###autoload
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
40 (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
41 "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
42
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
43 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
44 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
45 ?\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
46 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
47 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
48 `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
49 `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
50 as:
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
51
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
52 \(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
53 \"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
54 (if (sequencep display-table)
82f8351e71c8 Improve portable sample implementations for #'{put,get}-display-table
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
55 (aset display-table range value)
82f8351e71c8 Improve portable sample implementations for #'{put,get}-display-table
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
56 (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
57
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
58 \(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
59 \"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
60 (if (sequencep display-table)
82f8351e71c8 Improve portable sample implementations for #'{put,get}-display-table
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
61 (aref display-table character)
82f8351e71c8 Improve portable sample implementations for #'{put,get}-display-table
Aidan Kehoe <kehoea@parhasard.net>
parents: 4451
diff changeset
62 (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
63
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
64 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
65 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
66 always available."
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
67 (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
68
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
69 ;;;###autoload
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
70 (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
71
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
72 ;;;###autoload
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
73 (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
74
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
75 (defun describe-display-table (dt)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
76 "Describe the display table DT in a help buffer."
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
77 (with-displaying-help-buffer
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
78 (lambda ()
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
79 (map-char-table
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
80 (lambda (range value)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
81 (cond
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
82 ((eq range t)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
83 (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
84 (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
85 ((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
86 (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
87 (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
88 ((vectorp range)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
89 (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
90 (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
91 (aref value 1)))
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
92 (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
93 ((characterp range)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
94 (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
95 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
96 (split-char range)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
97 (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
98 (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
99 nil) dt)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
100 (princ
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
101 "\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
102 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
103 `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
104 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
105
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
106
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
107 ;;;###autoload
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
108 (defun describe-current-display-table (&optional domain)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
109 "Describe the display table in use in the selected window and buffer."
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
110 (interactive)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
111 (or domain (setq domain (selected-window)))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
112 (let ((disptab (specifier-instance current-display-table domain)))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
113 (if disptab
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
114 (describe-display-table disptab)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
115 (message "No display table"))))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
116
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
117 ;; #### we need a generic frob-specifier function.
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
118 ;; #### this also needs to be redone like frob-face-property.
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
119
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
120 ;; Let me say one more time how much dynamic scoping sucks.
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
121
5113
b2dcf6a6d8ab some changes to doc strings/comments in disp-table.el
Ben Wing <ben@xemacs.org>
parents: 4454
diff changeset
122 ;; #### 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
123 ;; cf `modify-specifier-instances'.
b2dcf6a6d8ab some changes to doc strings/comments in disp-table.el
Ben Wing <ben@xemacs.org>
parents: 4454
diff changeset
124
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
125 ;;;###autoload
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
126 (defun frob-display-table (fdt-function fdt-locale &optional tag-set)
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
127 (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
128 (or (specifier-spec-list current-display-table fdt-locale tag-set)
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
129 (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
130 fdt-locale tag-set))
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
131 (add-spec-list-to-specifier
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
132 current-display-table
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
133 (list (cons fdt-locale
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
134 (mapcar
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
135 (lambda (fdt-x)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
136 (funcall fdt-function (cdr fdt-x))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
137 fdt-x)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
138 (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
139 fdt-locale tag-set)))))))
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
140
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
141 (defun standard-display-8bit-1 (dt l h)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
142 (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
143 (remove-char-table (int-to-char l) dt)
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
144 (setq l (1+ l))))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
145
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
146 ;;;###autoload
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
147 (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
148 "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
149
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
150 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
151 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
152 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
153 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
154 function. "
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
155 (frob-display-table
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
156 (lambda (x)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
157 (standard-display-8bit-1 x l h))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
158 locale))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
159
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
160 (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
161 "Misnamed function under XEmacs. See `standard-display-default'."
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
162 (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
163 (put-char-table (int-to-char l) (format "\\%o" l) dt)
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
164 (setq l (1+ l))))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
165
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
166 ;;;###autoload
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
167 (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
168 "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
169
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
170 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
171 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
172 `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
173 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
174 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
175 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
176 sets them to display as octal escapes. "
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
177 (frob-display-table
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
178 (lambda (x)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
179 (standard-display-default-1 x l h))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
180 locale))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
181
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
182 ;;;###autoload
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
183 (defun standard-display-ascii (c s &optional locale)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
184 "Display character C using printable string S."
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
185 (frob-display-table
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
186 (lambda (x)
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
187 (put-char-table c s x))
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
188 locale))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
189
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
190 ;;;###autoload
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
191 (defun standard-display-g1 (c sc &optional locale)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
192 "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
193 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
194 the SO/SI characters."
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
195 (frob-display-table
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
196 (lambda (x)
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
197 (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
198 locale '(tty)))
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
199
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
200 ;;;###autoload
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
201 (defun standard-display-graphic (c gc &optional locale)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
202 "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
203 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
204 (frob-display-table
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
205 (lambda (x)
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
206 (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
207 locale '(tty)))
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
208
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
209 ;;;###autoload
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
210 (defun standard-display-underline (c uc &optional locale)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
211 "Display character C as character UC plus underlining."
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
212 (frob-display-table
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
213 (lambda (x)
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
214 (let (glyph)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
215 (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
216 (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
217 (put-char-table c glyph x)))
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
218 locale))
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
220 ;;;###autoload
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
221 (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
222 "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
223 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
224 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
225 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
226
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
227 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
228 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
229 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
230 remove it. "
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
231 (interactive "P")
4451
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
232 (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
233 (frob-display-table
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
234 (lambda (x)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
235 (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
236 locale)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
237 (frob-display-table
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
238 (lambda (x)
e214ff9f9507 Use char-tables, not vectors, to instantiate the display table specifiers.
Aidan Kehoe <kehoea@parhasard.net>
parents: 219
diff changeset
239 (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
240 locale)))
219
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
241
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
242 (provide 'disp-table)
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
243
262b8bb4a523 Import from CVS: tag r20-4b8
cvs
parents:
diff changeset
244 ;;; disp-table.el ends here