annotate src/coding-system-slots.h @ 5750:66d2f63df75f

Correct some spelling and formatting in behavior.el. Mentioned in tracker issue 826, the third thing mentioned there (the file name at the bottom of the file) had already been fixed. lisp/ChangeLog addition: 2013-08-05 Aidan Kehoe <kehoea@parhasard.net> * behavior.el: (override-behavior): Correct some spelling and formatting here, thank you Steven Mitchell in tracker issue 826.
author Aidan Kehoe <kehoea@parhasard.net>
date Mon, 05 Aug 2013 10:05:32 +0100
parents 308d34e9f07d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
1 /* Definitions of marked slots in coding systems
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
2 Copyright (C) 1991, 1995 Free Software Foundation, Inc.
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
3 Copyright (C) 1995 Sun Microsystems, Inc.
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
4 Copyright (C) 2000, 2001, 2002 Ben Wing.
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
5
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
6 This file is part of XEmacs.
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
7
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4568
diff changeset
8 XEmacs is free software: you can redistribute it and/or modify it
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
9 under the terms of the GNU General Public License as published by the
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4568
diff changeset
10 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: 4568
diff changeset
11 option) any later version.
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
12
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
13 XEmacs is distributed in the hope that it will be useful, but WITHOUT
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
16 for more details.
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
17
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
18 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: 4568
diff changeset
19 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
20
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
21 /* Synched up with: ????. Split out of file-coding.h. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
22
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
23 /* We define the Lisp_Objects in the coding system structure in a separate
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
24 file because there are numerous places we want to iterate over them,
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
25 such as when defining them in the structure, initializing them, or
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
26 marking them.
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
27
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
28 To use, define MARKED_SLOT before including this file. In the structure
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
29 definition, you also need to define CODING_SYSTEM_SLOT_DECLARATION. No
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
30 need to undefine either value; that happens automatically. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
31
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
32 #ifndef MARKED_SLOT_ARRAY
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
33 #ifdef CODING_SYSTEM_SLOT_DECLARATION
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
34 #define MARKED_SLOT_ARRAY(slot, size) MARKED_SLOT(slot[size])
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
35 #else
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
36 #define MARKED_SLOT_ARRAY(slot, size) do { \
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
37 int mslotidx; \
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
38 for (mslotidx = 0; mslotidx < size; mslotidx++) \
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
39 { \
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
40 MARKED_SLOT (slot[mslotidx]) \
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
41 } \
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
42 } while (0);
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
43 #endif
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
44 #endif /* not MARKED_SLOT_ARRAY */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
45
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
46 /* Name and description of this coding system. The description
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
47 should be suitable for a menu entry. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
48 MARKED_SLOT (name)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
49 MARKED_SLOT (description)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
50
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
51 /* Mnemonic string displayed in the modeline when this coding
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
52 system is active for a particular buffer. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
53 MARKED_SLOT (mnemonic)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
54
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
55 /* Long documentation on the coding system. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
56 MARKED_SLOT (documentation)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
57 /* Functions to handle additional conversion after reading or before
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
58 writing. #### This mechanism should be replaced by the ability to
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
59 simply create new coding system types. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
60 MARKED_SLOT (post_read_conversion)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
61 MARKED_SLOT (pre_write_conversion)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
62
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
63 /* If this coding system is not of the correct type for text file
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
64 conversion (i.e. decodes byte->char), we wrap it with appropriate
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
65 char<->byte converters. This is created dynamically, when it's
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
66 needed, and cached here. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
67 MARKED_SLOT (text_file_wrapper)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
68
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
69 /* ------------------------ junk to handle EOL -------------------------
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
70 I had hoped that we could handle this without lots of special-case
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
71 code, but it appears not to be the case if we want to maintain
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
72 compatibility with the existing way. However, at least with the way
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
73 we do things now, we avoid EOL junk in most of the coding system
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
74 methods themselves, or in the decode/encode functions. The EOL
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
75 special-case code is limited to coding-system creation and to the
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
76 convert-eol and undecided coding system types. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
77
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
78 /* If this coding system wants autodetection of the EOL type, then at the
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
79 appropriate time we wrap this coding system with
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
80 convert-eol-autodetect. (We do NOT do this at creation time because
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
81 then we end up with multiple convert-eols wrapped into the final
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
82 result -- esp. with autodetection using `undecided' -- leading to a
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
83 big mess.) We cache the wrapped coding system here. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
84 MARKED_SLOT (auto_eol_wrapper)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
85
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
86 /* Subsidiary coding systems that specify a particular type of EOL
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
87 marking, rather than autodetecting it. These will only be non-nil
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
88 if (eol_type == EOL_AUTODETECT). These are chains. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
89 MARKED_SLOT_ARRAY (eol, 3)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
90 /* If this coding system is a subsidiary, this element points back to its
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
91 parent. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
92 MARKED_SLOT (subsidiary_parent)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
93
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
94 /* At decoding or encoding time, we use the following coding system, if
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
95 it exists, in place of the coding system object. This is how we
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
96 handle coding systems with EOL types of CRLF or CR. Formerly, we did
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
97 the canonicalization at creation time, returning a chain in place of
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
98 the original coding system; but that interferes with
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
99 `coding-system-property' and causes other complications. CANONICAL is
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
100 used when determining the end types of a coding system.
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
101 canonicalize-after-coding also consults CANONICAL (it has to, because
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
102 the data in the lstream is based on CANONICAL, not on the original
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
103 coding system). */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
104 MARKED_SLOT (canonical)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
105
4568
1d74a1d115ee Add #'query-coding-region tests; do the work necessary to get them running.
Aidan Kehoe <kehoea@parhasard.net>
parents: 1204
diff changeset
106 MARKED_SLOT (safe_charsets)
1d74a1d115ee Add #'query-coding-region tests; do the work necessary to get them running.
Aidan Kehoe <kehoea@parhasard.net>
parents: 1204
diff changeset
107
1d74a1d115ee Add #'query-coding-region tests; do the work necessary to get them running.
Aidan Kehoe <kehoea@parhasard.net>
parents: 1204
diff changeset
108 MARKED_SLOT (safe_chars)
1d74a1d115ee Add #'query-coding-region tests; do the work necessary to get them running.
Aidan Kehoe <kehoea@parhasard.net>
parents: 1204
diff changeset
109
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
110 #undef MARKED_SLOT
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
111 #undef MARKED_SLOT_ARRAY
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
112 #undef CODING_SYSTEM_SLOT_DECLARATION