Mercurial > emacs
annotate man/mule.texi @ 63576:7c3d537469b0
(grep-regexp-alist): Use backreference at the
end of first regexp to limit the match to the position between
line number and source line with same separator character as used
between file name and line number. In the second regexp limit
mouse-face area to file name and line number by adding new group
for them and referring it in HYPERLINK arg.
(grep-regexp-alist, grep-mode-font-lock-keywords): Use shy group.
(grep-mode): Set font-lock-lines-before to 0 to not refontify the
previous line where grep markers may be already removed.
author | Juri Linkov <juri@jurta.org> |
---|---|
date | Sat, 18 Jun 2005 12:56:14 +0000 |
parents | e36c39f0af51 |
children | 834cdf15f68b f042e7c0fe20 |
rev | line source |
---|---|
25829 | 1 @c This is part of the Emacs manual. |
62476 | 2 @c Copyright (C) 1997, 1999, 2000, 2001, 2005 Free Software Foundation, Inc. |
25829 | 3 @c See file emacs.texi for copying conditions. |
4 @node International, Major Modes, Frames, Top | |
5 @chapter International Character Set Support | |
6 @cindex MULE | |
7 @cindex international scripts | |
8 @cindex multibyte characters | |
9 @cindex encoding of characters | |
10 | |
31067
3f11714b9e14
Update the list of supported language environments.
Eli Zaretskii <eliz@gnu.org>
parents:
31023
diff
changeset
|
11 @cindex Celtic |
25829 | 12 @cindex Chinese |
26140
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
13 @cindex Cyrillic |
31067
3f11714b9e14
Update the list of supported language environments.
Eli Zaretskii <eliz@gnu.org>
parents:
31023
diff
changeset
|
14 @cindex Czech |
25829 | 15 @cindex Devanagari |
16 @cindex Hindi | |
17 @cindex Marathi | |
26140
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
18 @cindex Ethiopic |
31067
3f11714b9e14
Update the list of supported language environments.
Eli Zaretskii <eliz@gnu.org>
parents:
31023
diff
changeset
|
19 @cindex German |
25829 | 20 @cindex Greek |
26140
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
21 @cindex Hebrew |
25829 | 22 @cindex IPA |
23 @cindex Japanese | |
24 @cindex Korean | |
25 @cindex Lao | |
31067
3f11714b9e14
Update the list of supported language environments.
Eli Zaretskii <eliz@gnu.org>
parents:
31023
diff
changeset
|
26 @cindex Latin |
3f11714b9e14
Update the list of supported language environments.
Eli Zaretskii <eliz@gnu.org>
parents:
31023
diff
changeset
|
27 @cindex Polish |
3f11714b9e14
Update the list of supported language environments.
Eli Zaretskii <eliz@gnu.org>
parents:
31023
diff
changeset
|
28 @cindex Romanian |
3f11714b9e14
Update the list of supported language environments.
Eli Zaretskii <eliz@gnu.org>
parents:
31023
diff
changeset
|
29 @cindex Slovak |
3f11714b9e14
Update the list of supported language environments.
Eli Zaretskii <eliz@gnu.org>
parents:
31023
diff
changeset
|
30 @cindex Slovenian |
25829 | 31 @cindex Thai |
32 @cindex Tibetan | |
31067
3f11714b9e14
Update the list of supported language environments.
Eli Zaretskii <eliz@gnu.org>
parents:
31023
diff
changeset
|
33 @cindex Turkish |
25829 | 34 @cindex Vietnamese |
35163 | 35 @cindex Dutch |
36 @cindex Spanish | |
25829 | 37 Emacs supports a wide variety of international character sets, |
38 including European variants of the Latin alphabet, as well as Chinese, | |
26140
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
39 Cyrillic, Devanagari (Hindi and Marathi), Ethiopic, Greek, Hebrew, IPA, |
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
40 Japanese, Korean, Lao, Thai, Tibetan, and Vietnamese scripts. These features |
25829 | 41 have been merged from the modified version of Emacs known as MULE (for |
42 ``MULti-lingual Enhancement to GNU Emacs'') | |
43 | |
32386
d65f9772ee72
Mention the cpNNNN coding systems, with an xref to msdog.texi.
Eli Zaretskii <eliz@gnu.org>
parents:
32275
diff
changeset
|
44 Emacs also supports various encodings of these characters used by |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
45 other internationalized software, such as word processors and mailers. |
32386
d65f9772ee72
Mention the cpNNNN coding systems, with an xref to msdog.texi.
Eli Zaretskii <eliz@gnu.org>
parents:
32275
diff
changeset
|
46 |
37584
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
47 Emacs allows editing text with international characters by supporting |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
48 all the related activities: |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
49 |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
50 @itemize @bullet |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
51 @item |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
52 You can visit files with non-@acronym{ASCII} characters, save non-@acronym{ASCII} text, and |
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
53 pass non-@acronym{ASCII} text between Emacs and programs it invokes (such as |
37584
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
54 compilers, spell-checkers, and mailers). Setting your language |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
55 environment (@pxref{Language Environments}) takes care of setting up the |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
56 coding systems and other options for a specific language or culture. |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
57 Alternatively, you can specify how Emacs should encode or decode text |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
58 for each command; see @ref{Specify Coding}. |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
59 |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
60 @item |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
61 You can display non-@acronym{ASCII} characters encoded by the various scripts. |
37584
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
62 This works by using appropriate fonts on X and similar graphics |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
63 displays (@pxref{Defining Fontsets}), and by sending special codes to |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
64 text-only displays (@pxref{Specify Coding}). If some characters are |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
65 displayed incorrectly, refer to @ref{Undisplayable Characters}, which |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
66 describes possible problems and explains how to solve them. |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
67 |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
68 @item |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
69 You can insert non-@acronym{ASCII} characters or search for them. To do that, |
37584
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
70 you can specify an input method (@pxref{Select Input Method}) suitable |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
71 for your language, or use the default input method set up when you set |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
72 your language environment. (Emacs input methods are part of the Leim |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
73 package, which must be installed for you to be able to use them.) If |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
74 your keyboard can produce non-@acronym{ASCII} characters, you can select an |
37584
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
75 appropriate keyboard coding system (@pxref{Specify Coding}), and Emacs |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
76 will accept those characters. Latin-1 characters can also be input by |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
77 using the @kbd{C-x 8} prefix, see @ref{Single-Byte Character Support, |
43633
2c255d245320
(International, Language Environments, Specify Coding): Make it clear
Eli Zaretskii <eliz@gnu.org>
parents:
43439
diff
changeset
|
78 C-x 8}. On X Window systems, your locale should be set to an |
43656
c825cf5da356
(International): Fix wording of the last change.
Eli Zaretskii <eliz@gnu.org>
parents:
43635
diff
changeset
|
79 appropriate value to make sure Emacs interprets keyboard input |
43909
d885f1afc652
Syntax fix around @ref.
Richard M. Stallman <rms@gnu.org>
parents:
43656
diff
changeset
|
80 correctly; see @ref{Language Environments, locales}. |
37584
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
81 @end itemize |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
82 |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
83 The rest of this chapter describes these issues in detail. |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
84 |
25829 | 85 @menu |
37865
dcd99cd5b789
Change "International Intro" -> "International Chars".
Eli Zaretskii <eliz@gnu.org>
parents:
37766
diff
changeset
|
86 * International Chars:: Basic concepts of multibyte characters. |
25829 | 87 * Enabling Multibyte:: Controlling whether to use multibyte characters. |
88 * Language Environments:: Setting things up for the language you use. | |
89 * Input Methods:: Entering text characters not on your keyboard. | |
90 * Select Input Method:: Specifying your choice of input methods. | |
91 * Multibyte Conversion:: How single-byte characters convert to multibyte. | |
92 * Coding Systems:: Character set conversion when you read and | |
93 write files, and so on. | |
94 * Recognize Coding:: How Emacs figures out which conversion to use. | |
95 * Specify Coding:: Various ways to choose which conversion to use. | |
96 * Fontsets:: Fontsets are collections of fonts | |
97 that cover the whole spectrum of characters. | |
98 * Defining Fontsets:: Defining a new fontset. | |
33745
78ec4a7ba765
(Undisplayable Characters): New node.
Dave Love <fx@gnu.org>
parents:
32386
diff
changeset
|
99 * Undisplayable Characters:: When characters don't display. |
62476 | 100 * Single-Byte Character Support:: You can pick one European character set |
101 to use without multibyte characters. | |
43439 | 102 * Charsets:: How Emacs groups its internal character codes. |
25829 | 103 @end menu |
104 | |
37865
dcd99cd5b789
Change "International Intro" -> "International Chars".
Eli Zaretskii <eliz@gnu.org>
parents:
37766
diff
changeset
|
105 @node International Chars |
25829 | 106 @section Introduction to International Character Sets |
107 | |
31023
b72f53ea6c54
Document list-charset-chars.
Eli Zaretskii <eliz@gnu.org>
parents:
31021
diff
changeset
|
108 The users of international character sets and scripts have established |
b72f53ea6c54
Document list-charset-chars.
Eli Zaretskii <eliz@gnu.org>
parents:
31021
diff
changeset
|
109 many more-or-less standard coding systems for storing files. Emacs |
b72f53ea6c54
Document list-charset-chars.
Eli Zaretskii <eliz@gnu.org>
parents:
31021
diff
changeset
|
110 internally uses a single multibyte character encoding, so that it can |
b72f53ea6c54
Document list-charset-chars.
Eli Zaretskii <eliz@gnu.org>
parents:
31021
diff
changeset
|
111 intermix characters from all these scripts in a single buffer or string. |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
112 This encoding represents each non-@acronym{ASCII} character as a sequence of bytes |
31023
b72f53ea6c54
Document list-charset-chars.
Eli Zaretskii <eliz@gnu.org>
parents:
31021
diff
changeset
|
113 in the range 0200 through 0377. Emacs translates between the multibyte |
b72f53ea6c54
Document list-charset-chars.
Eli Zaretskii <eliz@gnu.org>
parents:
31021
diff
changeset
|
114 character encoding and various other coding systems when reading and |
b72f53ea6c54
Document list-charset-chars.
Eli Zaretskii <eliz@gnu.org>
parents:
31021
diff
changeset
|
115 writing files, when exchanging data with subprocesses, and (in some |
b72f53ea6c54
Document list-charset-chars.
Eli Zaretskii <eliz@gnu.org>
parents:
31021
diff
changeset
|
116 cases) in the @kbd{C-q} command (@pxref{Multibyte Conversion}). |
25829 | 117 |
118 @kindex C-h h | |
119 @findex view-hello-file | |
35206 | 120 @cindex undisplayable characters |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
121 @cindex @samp{?} in display |
25829 | 122 The command @kbd{C-h h} (@code{view-hello-file}) displays the file |
123 @file{etc/HELLO}, which shows how to say ``hello'' in many languages. | |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
124 This illustrates various scripts. If some characters can't be |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
125 displayed on your terminal, they appear as @samp{?} or as hollow boxes |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
126 (@pxref{Undisplayable Characters}). |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
127 |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
128 Keyboards, even in the countries where these character sets are used, |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
129 generally don't have keys for all the characters in them. So Emacs |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
130 supports various @dfn{input methods}, typically one for each script or |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
131 language, to make it convenient to type them. |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
132 |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
133 @kindex C-x RET |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
134 The prefix key @kbd{C-x @key{RET}} is used for commands that pertain |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
135 to multibyte characters, coding systems, and input methods. |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
136 |
25829 | 137 @node Enabling Multibyte |
138 @section Enabling Multibyte Characters | |
139 | |
37584
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
140 @cindex turn multibyte support on or off |
25829 | 141 You can enable or disable multibyte character support, either for |
142 Emacs as a whole, or for a single buffer. When multibyte characters are | |
143 disabled in a buffer, then each byte in that buffer represents a | |
144 character, even codes 0200 through 0377. The old features for | |
145 supporting the European character sets, ISO Latin-1 and ISO Latin-2, | |
146 work as they did in Emacs 19 and also work for the other ISO 8859 | |
147 character sets. | |
148 | |
149 However, there is no need to turn off multibyte character support to | |
150 use ISO Latin; the Emacs multibyte character set includes all the | |
151 characters in these character sets, and Emacs can translate | |
152 automatically to and from the ISO codes. | |
153 | |
37584
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
154 By default, Emacs starts in multibyte mode, because that allows you to |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
155 use all the supported languages and scripts without limitations. |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
156 |
25829 | 157 To edit a particular file in unibyte representation, visit it using |
158 @code{find-file-literally}. @xref{Visiting}. To convert a buffer in | |
159 multibyte representation into a single-byte representation of the same | |
160 characters, the easiest way is to save the contents in a file, kill the | |
161 buffer, and find the file again with @code{find-file-literally}. You | |
162 can also use @kbd{C-x @key{RET} c} | |
163 (@code{universal-coding-system-argument}) and specify @samp{raw-text} as | |
164 the coding system with which to find or save a file. @xref{Specify | |
165 Coding}. Finding a file as @samp{raw-text} doesn't disable format | |
166 conversion, uncompression and auto mode selection as | |
167 @code{find-file-literally} does. | |
168 | |
169 @vindex enable-multibyte-characters | |
170 @vindex default-enable-multibyte-characters | |
171 To turn off multibyte character support by default, start Emacs with | |
172 the @samp{--unibyte} option (@pxref{Initial Options}), or set the | |
29107 | 173 environment variable @env{EMACS_UNIBYTE}. You can also customize |
25829 | 174 @code{enable-multibyte-characters} or, equivalently, directly set the |
37584
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
175 variable @code{default-enable-multibyte-characters} to @code{nil} in |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
176 your init file to have basically the same effect as @samp{--unibyte}. |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
177 |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
178 @findex toggle-enable-multibyte-characters |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
179 To convert a unibyte session to a multibyte session, set |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
180 @code{default-enable-multibyte-characters} to @code{t}. Buffers which |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
181 were created in the unibyte session before you turn on multibyte support |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
182 will stay unibyte. You can turn on multibyte support in a specific |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
183 buffer by invoking the command @code{toggle-enable-multibyte-characters} |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
184 in that buffer. |
25829 | 185 |
31141
a7c55d999688
Expand the explanation about Lisp files being loaded as multibyte.
Eli Zaretskii <eliz@gnu.org>
parents:
31077
diff
changeset
|
186 @cindex Lisp files, and multibyte operation |
a7c55d999688
Expand the explanation about Lisp files being loaded as multibyte.
Eli Zaretskii <eliz@gnu.org>
parents:
31077
diff
changeset
|
187 @cindex multibyte operation, and Lisp files |
a7c55d999688
Expand the explanation about Lisp files being loaded as multibyte.
Eli Zaretskii <eliz@gnu.org>
parents:
31077
diff
changeset
|
188 @cindex unibyte operation, and Lisp files |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
189 @cindex init file, and non-@acronym{ASCII} characters |
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
190 @cindex environment variables, and non-@acronym{ASCII} characters |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
191 With @samp{--unibyte}, multibyte strings are not created during |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
192 initialization from the values of environment variables, |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
193 @file{/etc/passwd} entries etc.@: that contain non-@acronym{ASCII} 8-bit |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
194 characters. |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
195 |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
196 Emacs normally loads Lisp files as multibyte, regardless of whether |
58624
a322009ca3d0
* custom.texi (File Variables): Add `unibyte' and make it more
Reiner Steib <Reiner.Steib@gmx.de>
parents:
54271
diff
changeset
|
197 you used @samp{--unibyte}. This includes the Emacs initialization file, |
a322009ca3d0
* custom.texi (File Variables): Add `unibyte' and make it more
Reiner Steib <Reiner.Steib@gmx.de>
parents:
54271
diff
changeset
|
198 @file{.emacs}, and the initialization files of Emacs packages such as |
a322009ca3d0
* custom.texi (File Variables): Add `unibyte' and make it more
Reiner Steib <Reiner.Steib@gmx.de>
parents:
54271
diff
changeset
|
199 Gnus. However, you can specify unibyte loading for a particular Lisp |
a322009ca3d0
* custom.texi (File Variables): Add `unibyte' and make it more
Reiner Steib <Reiner.Steib@gmx.de>
parents:
54271
diff
changeset
|
200 file, by putting @w{@samp{-*-unibyte: t;-*-}} in a comment on the first |
a322009ca3d0
* custom.texi (File Variables): Add `unibyte' and make it more
Reiner Steib <Reiner.Steib@gmx.de>
parents:
54271
diff
changeset
|
201 line (@pxref{File Variables}). Then that file is always loaded as |
a322009ca3d0
* custom.texi (File Variables): Add `unibyte' and make it more
Reiner Steib <Reiner.Steib@gmx.de>
parents:
54271
diff
changeset
|
202 unibyte text, even if you did not start Emacs with @samp{--unibyte}. |
a322009ca3d0
* custom.texi (File Variables): Add `unibyte' and make it more
Reiner Steib <Reiner.Steib@gmx.de>
parents:
54271
diff
changeset
|
203 The motivation for these conventions is that it is more reliable to |
a322009ca3d0
* custom.texi (File Variables): Add `unibyte' and make it more
Reiner Steib <Reiner.Steib@gmx.de>
parents:
54271
diff
changeset
|
204 always load any particular Lisp file in the same way. However, you can |
a322009ca3d0
* custom.texi (File Variables): Add `unibyte' and make it more
Reiner Steib <Reiner.Steib@gmx.de>
parents:
54271
diff
changeset
|
205 load a Lisp file as unibyte, on any one occasion, by typing @kbd{C-x |
38460
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
206 @key{RET} c raw-text @key{RET}} immediately before loading it. |
25829 | 207 |
208 The mode line indicates whether multibyte character support is enabled | |
209 in the current buffer. If it is, there are two or more characters (most | |
210 often two dashes) before the colon near the beginning of the mode line. | |
211 When multibyte characters are not enabled, just one dash precedes the | |
212 colon. | |
213 | |
214 @node Language Environments | |
215 @section Language Environments | |
216 @cindex language environments | |
217 | |
218 All supported character sets are supported in Emacs buffers whenever | |
219 multibyte characters are enabled; there is no need to select a | |
220 particular language in order to display its characters in an Emacs | |
221 buffer. However, it is important to select a @dfn{language environment} | |
222 in order to set various defaults. The language environment really | |
223 represents a choice of preferred script (more or less) rather than a | |
224 choice of language. | |
225 | |
226 The language environment controls which coding systems to recognize | |
227 when reading text (@pxref{Recognize Coding}). This applies to files, | |
228 incoming mail, netnews, and any other text you read into Emacs. It may | |
229 also specify the default coding system to use when you create a file. | |
230 Each language environment also specifies a default input method. | |
231 | |
232 @findex set-language-environment | |
26140
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
233 @vindex current-language-environment |
44325 | 234 To select a language environment, you can customize the variable |
26140
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
235 @code{current-language-environment} or use the command @kbd{M-x |
25829 | 236 set-language-environment}. It makes no difference which buffer is |
237 current when you use this command, because the effects apply globally to | |
238 the Emacs session. The supported language environments include: | |
239 | |
33745
78ec4a7ba765
(Undisplayable Characters): New node.
Dave Love <fx@gnu.org>
parents:
32386
diff
changeset
|
240 @cindex Euro sign |
42598
44bde4d34db7
(Language Environments): Mention the UTF-8 environment; add an index entry.
Eli Zaretskii <eliz@gnu.org>
parents:
41051
diff
changeset
|
241 @cindex UTF-8 |
25829 | 242 @quotation |
26140
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
243 Chinese-BIG5, Chinese-CNS, Chinese-GB, Cyrillic-ALT, Cyrillic-ISO, |
37870 | 244 Cyrillic-KOI8, Czech, Devanagari, Dutch, English, Ethiopic, German, |
245 Greek, Hebrew, IPA, Japanese, Korean, Lao, Latin-1, Latin-2, Latin-3, | |
246 Latin-4, Latin-5, Latin-8 (Celtic), Latin-9 (updated Latin-1, with the | |
42598
44bde4d34db7
(Language Environments): Mention the UTF-8 environment; add an index entry.
Eli Zaretskii <eliz@gnu.org>
parents:
41051
diff
changeset
|
247 Euro sign), Polish, Romanian, Slovak, Slovenian, Spanish, Thai, Tibetan, |
44bde4d34db7
(Language Environments): Mention the UTF-8 environment; add an index entry.
Eli Zaretskii <eliz@gnu.org>
parents:
41051
diff
changeset
|
248 Turkish, UTF-8 (for a setup which prefers Unicode characters and files |
44bde4d34db7
(Language Environments): Mention the UTF-8 environment; add an index entry.
Eli Zaretskii <eliz@gnu.org>
parents:
41051
diff
changeset
|
249 encoded in UTF-8), and Vietnamese. |
25829 | 250 @end quotation |
251 | |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
252 @cindex fonts for various scripts |
37019
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
253 @cindex Intlfonts package, installation |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
254 To display the script(s) used by your language environment on a |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
255 graphical display, you need to have a suitable font. If some of the |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
256 characters appear as empty boxes, you should install the GNU Intlfonts |
37019
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
257 package, which includes fonts for all supported scripts.@footnote{If |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
258 you run Emacs on X, you need to inform the X server about the location |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
259 of the newly installed fonts with the following commands: |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
260 |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
261 @example |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
262 xset fp+ /usr/local/share/emacs/fonts |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
263 xset fp rehash |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
264 @end example |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
265 } |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
266 @xref{Fontsets}, for more details about setting up your fonts. |
32275
30abf11e1b8e
(Language Environments): Mention the requirement to have a suitable font
Eli Zaretskii <eliz@gnu.org>
parents:
31280
diff
changeset
|
267 |
26140
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
268 @findex set-locale-environment |
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
269 @vindex locale-language-names |
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
270 @vindex locale-charset-language-names |
33745
78ec4a7ba765
(Undisplayable Characters): New node.
Dave Love <fx@gnu.org>
parents:
32386
diff
changeset
|
271 @cindex locales |
37086
07200bf360ab
(Language Environments): Fix the description of locale settings during
Eli Zaretskii <eliz@gnu.org>
parents:
37081
diff
changeset
|
272 Some operating systems let you specify the character-set locale you |
07200bf360ab
(Language Environments): Fix the description of locale settings during
Eli Zaretskii <eliz@gnu.org>
parents:
37081
diff
changeset
|
273 are using by setting the locale environment variables @env{LC_ALL}, |
07200bf360ab
(Language Environments): Fix the description of locale settings during
Eli Zaretskii <eliz@gnu.org>
parents:
37081
diff
changeset
|
274 @env{LC_CTYPE}, or @env{LANG}.@footnote{If more than one of these is |
07200bf360ab
(Language Environments): Fix the description of locale settings during
Eli Zaretskii <eliz@gnu.org>
parents:
37081
diff
changeset
|
275 set, the first one that is nonempty specifies your locale for this |
07200bf360ab
(Language Environments): Fix the description of locale settings during
Eli Zaretskii <eliz@gnu.org>
parents:
37081
diff
changeset
|
276 purpose.} During startup, Emacs looks up your character-set locale's |
07200bf360ab
(Language Environments): Fix the description of locale settings during
Eli Zaretskii <eliz@gnu.org>
parents:
37081
diff
changeset
|
277 name in the system locale alias table, matches its canonical name |
07200bf360ab
(Language Environments): Fix the description of locale settings during
Eli Zaretskii <eliz@gnu.org>
parents:
37081
diff
changeset
|
278 against entries in the value of the variables |
07200bf360ab
(Language Environments): Fix the description of locale settings during
Eli Zaretskii <eliz@gnu.org>
parents:
37081
diff
changeset
|
279 @code{locale-charset-language-names} and @code{locale-language-names}, |
07200bf360ab
(Language Environments): Fix the description of locale settings during
Eli Zaretskii <eliz@gnu.org>
parents:
37081
diff
changeset
|
280 and selects the corresponding language environment if a match is found. |
07200bf360ab
(Language Environments): Fix the description of locale settings during
Eli Zaretskii <eliz@gnu.org>
parents:
37081
diff
changeset
|
281 (The former variable overrides the latter.) It also adjusts the display |
43633
2c255d245320
(International, Language Environments, Specify Coding): Make it clear
Eli Zaretskii <eliz@gnu.org>
parents:
43439
diff
changeset
|
282 table and terminal coding system, the locale coding system, the |
2c255d245320
(International, Language Environments, Specify Coding): Make it clear
Eli Zaretskii <eliz@gnu.org>
parents:
43439
diff
changeset
|
283 preferred coding system as needed for the locale, and---last but not |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
284 least---the way Emacs decodes non-@acronym{ASCII} characters sent by your keyboard. |
26140
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
285 |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
286 If you modify the @env{LC_ALL}, @env{LC_CTYPE}, or @env{LANG} |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
287 environment variables while running Emacs, you may want to invoke the |
38786 | 288 @code{set-locale-environment} function afterwards to readjust the |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
289 language environment from the new locale. |
26513
949ca235ee9e
Describe the relationship between set-locale-environment and
Paul Eggert <eggert@twinsun.com>
parents:
26140
diff
changeset
|
290 |
26140
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
291 @vindex locale-preferred-coding-systems |
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
292 The @code{set-locale-environment} function normally uses the preferred |
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
293 coding system established by the language environment to decode system |
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
294 messages. But if your locale matches an entry in the variable |
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
295 @code{locale-preferred-coding-systems}, Emacs uses the corresponding |
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
296 coding system instead. For example, if the locale @samp{ja_JP.PCK} |
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
297 matches @code{japanese-shift-jis} in |
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
298 @code{locale-preferred-coding-systems}, Emacs uses that encoding even |
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
299 though it might normally use @code{japanese-iso-8bit}. |
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
300 |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
301 You can override the language environment chosen at startup with |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
302 explicit use of the command @code{set-language-environment}, or with |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
303 customization of @code{current-language-environment} in your init |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
304 file. |
25829 | 305 |
306 @kindex C-h L | |
307 @findex describe-language-environment | |
308 To display information about the effects of a certain language | |
309 environment @var{lang-env}, use the command @kbd{C-h L @var{lang-env} | |
310 @key{RET}} (@code{describe-language-environment}). This tells you which | |
311 languages this language environment is useful for, and lists the | |
312 character sets, coding systems, and input methods that go with it. It | |
313 also shows some sample text to illustrate scripts used in this language | |
314 environment. By default, this command describes the chosen language | |
315 environment. | |
316 | |
317 @vindex set-language-environment-hook | |
318 You can customize any language environment with the normal hook | |
319 @code{set-language-environment-hook}. The command | |
320 @code{set-language-environment} runs that hook after setting up the new | |
321 language environment. The hook functions can test for a specific | |
322 language environment by checking the variable | |
37019
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
323 @code{current-language-environment}. This hook is where you should |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
324 put non-default settings for specific language environment, such as |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
325 coding systems for keyboard input and terminal output, the default |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
326 input method, etc. |
25829 | 327 |
328 @vindex exit-language-environment-hook | |
329 Before it starts to set up the new language environment, | |
330 @code{set-language-environment} first runs the hook | |
331 @code{exit-language-environment-hook}. This hook is useful for undoing | |
332 customizations that were made with @code{set-language-environment-hook}. | |
333 For instance, if you set up a special key binding in a specific language | |
334 environment using @code{set-language-environment-hook}, you should set | |
335 up @code{exit-language-environment-hook} to restore the normal binding | |
336 for that key. | |
337 | |
338 @node Input Methods | |
339 @section Input Methods | |
340 | |
341 @cindex input methods | |
342 An @dfn{input method} is a kind of character conversion designed | |
343 specifically for interactive input. In Emacs, typically each language | |
344 has its own input method; sometimes several languages which use the same | |
345 characters can share one input method. A few languages support several | |
346 input methods. | |
347 | |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
348 The simplest kind of input method works by mapping @acronym{ASCII} letters |
38786 | 349 into another alphabet; this allows you to use one other alphabet |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
350 instead of @acronym{ASCII}. The Greek and Russian input methods |
38786 | 351 work this way. |
25829 | 352 |
353 A more powerful technique is composition: converting sequences of | |
354 characters into one letter. Many European input methods use composition | |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
355 to produce a single non-@acronym{ASCII} letter from a sequence that consists of a |
25829 | 356 letter followed by accent characters (or vice versa). For example, some |
357 methods convert the sequence @kbd{a'} into a single accented letter. | |
358 These input methods have no special commands of their own; all they do | |
359 is compose sequences of printing characters. | |
360 | |
361 The input methods for syllabic scripts typically use mapping followed | |
362 by composition. The input methods for Thai and Korean work this way. | |
363 First, letters are mapped into symbols for particular sounds or tone | |
364 marks; then, sequences of these which make up a whole syllable are | |
365 mapped into one syllable sign. | |
366 | |
367 Chinese and Japanese require more complex methods. In Chinese input | |
368 methods, first you enter the phonetic spelling of a Chinese word (in | |
38685
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
369 input method @code{chinese-py}, among others), or a sequence of |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
370 portions of the character (input methods @code{chinese-4corner} and |
38786 | 371 @code{chinese-sw}, and others). One input sequence typically |
372 corresponds to many possible Chinese characters. You select the one | |
38685
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
373 you mean using keys such as @kbd{C-f}, @kbd{C-b}, @kbd{C-n}, |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
374 @kbd{C-p}, and digits, which have special meanings in this situation. |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
375 |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
376 The possible characters are conceptually arranged in several rows, |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
377 with each row holding up to 10 alternatives. Normally, Emacs displays |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
378 just one row at a time, in the echo area; @code{(@var{i}/@var{j})} |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
379 appears at the beginning, to indicate that this is the @var{i}th row |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
380 out of a total of @var{j} rows. Type @kbd{C-n} or @kbd{C-p} to |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
381 display the next row or the previous row. |
25829 | 382 |
38685
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
383 Type @kbd{C-f} and @kbd{C-b} to move forward and backward among |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
384 the alternatives in the current row. As you do this, Emacs highlights |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
385 the current alternative with a special color; type @code{C-@key{SPC}} |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
386 to select the current alternative and use it as input. The |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
387 alternatives in the row are also numbered; the number appears before |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
388 the alternative. Typing a digit @var{n} selects the @var{n}th |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
389 alternative of the current row and uses it as input. |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
390 |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
391 @key{TAB} in these Chinese input methods displays a buffer showing |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
392 all the possible characters at once; then clicking @kbd{Mouse-2} on |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
393 one of them selects that alternative. The keys @kbd{C-f}, @kbd{C-b}, |
38786 | 394 @kbd{C-n}, @kbd{C-p}, and digits continue to work as usual, but they |
395 do the highlighting in the buffer showing the possible characters, | |
396 rather than in the echo area. | |
38685
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
397 |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
398 In Japanese input methods, first you input a whole word using |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
399 phonetic spelling; then, after the word is in the buffer, Emacs |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
400 converts it into one or more characters using a large dictionary. One |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
401 phonetic spelling corresponds to a number of different Japanese words; |
3d0bec9036ac
Rewrite the description of the operation of Chinese input methods.
Eli Zaretskii <eliz@gnu.org>
parents:
38515
diff
changeset
|
402 to select one of them, use @kbd{C-n} and @kbd{C-p} to cycle through |
25829 | 403 the alternatives. |
404 | |
405 Sometimes it is useful to cut off input method processing so that the | |
406 characters you have just entered will not combine with subsequent | |
407 characters. For example, in input method @code{latin-1-postfix}, the | |
408 sequence @kbd{e '} combines to form an @samp{e} with an accent. What if | |
409 you want to enter them as separate characters? | |
410 | |
38460
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
411 One way is to type the accent twice; this is a special feature for |
25829 | 412 entering the separate letter and accent. For example, @kbd{e ' '} gives |
413 you the two characters @samp{e'}. Another way is to type another letter | |
414 after the @kbd{e}---something that won't combine with that---and | |
415 immediately delete it. For example, you could type @kbd{e e @key{DEL} | |
416 '} to get separate @samp{e} and @samp{'}. | |
417 | |
418 Another method, more general but not quite as easy to type, is to use | |
419 @kbd{C-\ C-\} between two characters to stop them from combining. This | |
420 is the command @kbd{C-\} (@code{toggle-input-method}) used twice. | |
421 @ifinfo | |
422 @xref{Select Input Method}. | |
423 @end ifinfo | |
424 | |
37019
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
425 @cindex incremental search, input method interference |
25829 | 426 @kbd{C-\ C-\} is especially useful inside an incremental search, |
427 because it stops waiting for more characters to combine, and starts | |
428 searching for what you have already entered. | |
429 | |
61097
63e2357bbe98
(Input Methods): Minor cleanup.
Richard M. Stallman <rms@gnu.org>
parents:
61067
diff
changeset
|
430 To find out how to input the character after point using the current |
63e2357bbe98
(Input Methods): Minor cleanup.
Richard M. Stallman <rms@gnu.org>
parents:
61067
diff
changeset
|
431 input method, type @kbd{C-u C-x =}. @xref{Position Info}. |
61067
25e118545445
(Input Methods): Refer to the command C-u C-x =.
Kenichi Handa <handa@m17n.org>
parents:
61052
diff
changeset
|
432 |
25829 | 433 @vindex input-method-verbose-flag |
434 @vindex input-method-highlight-flag | |
435 The variables @code{input-method-highlight-flag} and | |
37870 | 436 @code{input-method-verbose-flag} control how input methods explain |
437 what is happening. If @code{input-method-highlight-flag} is | |
438 non-@code{nil}, the partial sequence is highlighted in the buffer (for | |
439 most input methods---some disable this feature). If | |
440 @code{input-method-verbose-flag} is non-@code{nil}, the list of | |
441 possible characters to type next is displayed in the echo area (but | |
442 not when you are in the minibuffer). | |
25829 | 443 |
444 @node Select Input Method | |
445 @section Selecting an Input Method | |
446 | |
447 @table @kbd | |
448 @item C-\ | |
449 Enable or disable use of the selected input method. | |
450 | |
451 @item C-x @key{RET} C-\ @var{method} @key{RET} | |
452 Select a new input method for the current buffer. | |
453 | |
454 @item C-h I @var{method} @key{RET} | |
455 @itemx C-h C-\ @var{method} @key{RET} | |
456 @findex describe-input-method | |
457 @kindex C-h I | |
458 @kindex C-h C-\ | |
459 Describe the input method @var{method} (@code{describe-input-method}). | |
31204 | 460 By default, it describes the current input method (if any). This |
461 description should give you the full details of how to use any | |
31270 | 462 particular input method. |
25829 | 463 |
464 @item M-x list-input-methods | |
465 Display a list of all the supported input methods. | |
466 @end table | |
467 | |
468 @findex set-input-method | |
469 @vindex current-input-method | |
470 @kindex C-x RET C-\ | |
471 To choose an input method for the current buffer, use @kbd{C-x | |
472 @key{RET} C-\} (@code{set-input-method}). This command reads the | |
38460
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
473 input method name from the minibuffer; the name normally starts with the |
25829 | 474 language environment that it is meant to be used with. The variable |
475 @code{current-input-method} records which input method is selected. | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
46912
diff
changeset
|
476 |
25829 | 477 @findex toggle-input-method |
478 @kindex C-\ | |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
479 Input methods use various sequences of @acronym{ASCII} characters to stand for |
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
480 non-@acronym{ASCII} characters. Sometimes it is useful to turn off the input |
25829 | 481 method temporarily. To do this, type @kbd{C-\} |
482 (@code{toggle-input-method}). To reenable the input method, type | |
483 @kbd{C-\} again. | |
484 | |
485 If you type @kbd{C-\} and you have not yet selected an input method, | |
486 it prompts for you to specify one. This has the same effect as using | |
487 @kbd{C-x @key{RET} C-\} to specify an input method. | |
488 | |
36850
e1167ad75cde
(Select Input Method): Document the behavior of toggle-input-method
Eli Zaretskii <eliz@gnu.org>
parents:
36334
diff
changeset
|
489 When invoked with a numeric argument, as in @kbd{C-u C-\}, |
e1167ad75cde
(Select Input Method): Document the behavior of toggle-input-method
Eli Zaretskii <eliz@gnu.org>
parents:
36334
diff
changeset
|
490 @code{toggle-input-method} always prompts you for an input method, |
e1167ad75cde
(Select Input Method): Document the behavior of toggle-input-method
Eli Zaretskii <eliz@gnu.org>
parents:
36334
diff
changeset
|
491 suggesting the most recently selected one as the default. |
e1167ad75cde
(Select Input Method): Document the behavior of toggle-input-method
Eli Zaretskii <eliz@gnu.org>
parents:
36334
diff
changeset
|
492 |
25829 | 493 @vindex default-input-method |
494 Selecting a language environment specifies a default input method for | |
495 use in various buffers. When you have a default input method, you can | |
496 select it in the current buffer by typing @kbd{C-\}. The variable | |
497 @code{default-input-method} specifies the default input method | |
498 (@code{nil} means there is none). | |
499 | |
37019
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
500 In some language environments, which support several different input |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
501 methods, you might want to use an input method different from the |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
502 default chosen by @code{set-language-environment}. You can instruct |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
503 Emacs to select a different default input method for a certain |
37870 | 504 language environment, if you wish, by using |
37019
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
505 @code{set-language-environment-hook} (@pxref{Language Environments, |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
506 set-language-environment-hook}). For example: |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
507 |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
508 @lisp |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
509 (defun my-chinese-setup () |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
510 "Set up my private Chinese environment." |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
511 (if (equal current-language-environment "Chinese-GB") |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
512 (setq default-input-method "chinese-tonepy"))) |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
513 (add-hook 'set-language-environment-hook 'my-chinese-setup) |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
514 @end lisp |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
515 |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
516 @noindent |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
517 This sets the default input method to be @code{chinese-tonepy} |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
518 whenever you choose a Chinese-GB language environment. |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
519 |
25829 | 520 @findex quail-set-keyboard-layout |
521 Some input methods for alphabetic scripts work by (in effect) | |
522 remapping the keyboard to emulate various keyboard layouts commonly used | |
523 for those scripts. How to do this remapping properly depends on your | |
524 actual keyboard layout. To specify which layout your keyboard has, use | |
525 the command @kbd{M-x quail-set-keyboard-layout}. | |
526 | |
60800
06251e15fd5e
(Input Methods): Leim is now built-in.
Richard M. Stallman <rms@gnu.org>
parents:
59796
diff
changeset
|
527 @findex quail-show-key |
06251e15fd5e
(Input Methods): Leim is now built-in.
Richard M. Stallman <rms@gnu.org>
parents:
59796
diff
changeset
|
528 You can use the command @kbd{M-x quail-show-key} to show what key |
06251e15fd5e
(Input Methods): Leim is now built-in.
Richard M. Stallman <rms@gnu.org>
parents:
59796
diff
changeset
|
529 (or key sequence) to type in order to input the character following |
06251e15fd5e
(Input Methods): Leim is now built-in.
Richard M. Stallman <rms@gnu.org>
parents:
59796
diff
changeset
|
530 point, using the selected keyboard layout. |
06251e15fd5e
(Input Methods): Leim is now built-in.
Richard M. Stallman <rms@gnu.org>
parents:
59796
diff
changeset
|
531 |
25829 | 532 @findex list-input-methods |
533 To display a list of all the supported input methods, type @kbd{M-x | |
534 list-input-methods}. The list gives information about each input | |
535 method, including the string that stands for it in the mode line. | |
536 | |
537 @node Multibyte Conversion | |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
538 @section Unibyte and Multibyte Non-@acronym{ASCII} characters |
25829 | 539 |
540 When multibyte characters are enabled, character codes 0240 (octal) | |
541 through 0377 (octal) are not really legitimate in the buffer. The valid | |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
542 non-@acronym{ASCII} printing characters have codes that start from 0400. |
25829 | 543 |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
544 If you type a self-inserting character in the range 0240 through |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
545 0377, or if you use @kbd{C-q} to insert one, Emacs assumes you |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
546 intended to use one of the ISO Latin-@var{n} character sets, and |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
547 converts it to the Emacs code representing that Latin-@var{n} |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
548 character. You select @emph{which} ISO Latin character set to use |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
549 through your choice of language environment |
25829 | 550 @iftex |
551 (see above). | |
552 @end iftex | |
553 @ifinfo | |
554 (@pxref{Language Environments}). | |
555 @end ifinfo | |
556 If you do not specify a choice, the default is Latin-1. | |
557 | |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
558 If you insert a character in the range 0200 through 0237, which |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
559 forms the @code{eight-bit-control} character set, it is inserted |
33745
78ec4a7ba765
(Undisplayable Characters): New node.
Dave Love <fx@gnu.org>
parents:
32386
diff
changeset
|
560 literally. You should normally avoid doing this since buffers |
78ec4a7ba765
(Undisplayable Characters): New node.
Dave Love <fx@gnu.org>
parents:
32386
diff
changeset
|
561 containing such characters have to be written out in either the |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
562 @code{emacs-mule} or @code{raw-text} coding system, which is usually |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
563 not what you want. |
25829 | 564 |
565 @node Coding Systems | |
566 @section Coding Systems | |
567 @cindex coding systems | |
568 | |
569 Users of various languages have established many more-or-less standard | |
570 coding systems for representing them. Emacs does not use these coding | |
571 systems internally; instead, it converts from various coding systems to | |
572 its own system when reading data, and converts the internal coding | |
573 system to other coding systems when writing data. Conversion is | |
574 possible in reading or writing files, in sending or receiving from the | |
575 terminal, and in exchanging data with subprocesses. | |
576 | |
577 Emacs assigns a name to each coding system. Most coding systems are | |
578 used for one language, and the name of the coding system starts with the | |
579 language name. Some coding systems are used for several languages; | |
580 their names usually start with @samp{iso}. There are also special | |
581 coding systems @code{no-conversion}, @code{raw-text} and | |
582 @code{emacs-mule} which do not convert printing characters at all. | |
583 | |
37584
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
584 @cindex international files from DOS/Windows systems |
32386
d65f9772ee72
Mention the cpNNNN coding systems, with an xref to msdog.texi.
Eli Zaretskii <eliz@gnu.org>
parents:
32275
diff
changeset
|
585 A special class of coding systems, collectively known as |
d65f9772ee72
Mention the cpNNNN coding systems, with an xref to msdog.texi.
Eli Zaretskii <eliz@gnu.org>
parents:
32275
diff
changeset
|
586 @dfn{codepages}, is designed to support text encoded by MS-Windows and |
d65f9772ee72
Mention the cpNNNN coding systems, with an xref to msdog.texi.
Eli Zaretskii <eliz@gnu.org>
parents:
32275
diff
changeset
|
587 MS-DOS software. To use any of these systems, you need to create it |
37584
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
588 with @kbd{M-x codepage-setup}. @xref{MS-DOS and MULE}. After |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
589 creating the coding system for the codepage, you can use it as any |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
590 other coding system. For example, to visit a file encoded in codepage |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
591 850, type @kbd{C-x @key{RET} c cp850 @key{RET} C-x C-f @var{filename} |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
592 @key{RET}}. |
32386
d65f9772ee72
Mention the cpNNNN coding systems, with an xref to msdog.texi.
Eli Zaretskii <eliz@gnu.org>
parents:
32275
diff
changeset
|
593 |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
594 In addition to converting various representations of non-@acronym{ASCII} |
25829 | 595 characters, a coding system can perform end-of-line conversion. Emacs |
596 handles three different conventions for how to separate lines in a file: | |
597 newline, carriage-return linefeed, and just carriage-return. | |
598 | |
599 @table @kbd | |
600 @item C-h C @var{coding} @key{RET} | |
601 Describe coding system @var{coding}. | |
602 | |
603 @item C-h C @key{RET} | |
604 Describe the coding systems currently in use. | |
605 | |
606 @item M-x list-coding-systems | |
607 Display a list of all the supported coding systems. | |
608 @end table | |
609 | |
610 @kindex C-h C | |
611 @findex describe-coding-system | |
612 The command @kbd{C-h C} (@code{describe-coding-system}) displays | |
613 information about particular coding systems. You can specify a coding | |
38460
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
614 system name as the argument; alternatively, with an empty argument, it |
25829 | 615 describes the coding systems currently selected for various purposes, |
616 both in the current buffer and as the defaults, and the priority list | |
617 for recognizing coding systems (@pxref{Recognize Coding}). | |
618 | |
619 @findex list-coding-systems | |
620 To display a list of all the supported coding systems, type @kbd{M-x | |
621 list-coding-systems}. The list gives information about each coding | |
622 system, including the letter that stands for it in the mode line | |
623 (@pxref{Mode Line}). | |
624 | |
625 @cindex end-of-line conversion | |
626 @cindex MS-DOS end-of-line conversion | |
627 @cindex Macintosh end-of-line conversion | |
628 Each of the coding systems that appear in this list---except for | |
629 @code{no-conversion}, which means no conversion of any kind---specifies | |
630 how and whether to convert printing characters, but leaves the choice of | |
631 end-of-line conversion to be decided based on the contents of each file. | |
632 For example, if the file appears to use the sequence carriage-return | |
633 linefeed to separate lines, DOS end-of-line conversion will be used. | |
634 | |
635 Each of the listed coding systems has three variants which specify | |
636 exactly what to do for end-of-line conversion: | |
637 | |
638 @table @code | |
639 @item @dots{}-unix | |
640 Don't do any end-of-line conversion; assume the file uses | |
641 newline to separate lines. (This is the convention normally used | |
642 on Unix and GNU systems.) | |
643 | |
644 @item @dots{}-dos | |
645 Assume the file uses carriage-return linefeed to separate lines, and do | |
646 the appropriate conversion. (This is the convention normally used on | |
36185 | 647 Microsoft systems.@footnote{It is also specified for MIME @samp{text/*} |
25829 | 648 bodies and in other network transport contexts. It is different |
649 from the SGML reference syntax record-start/record-end format which | |
650 Emacs doesn't support directly.}) | |
651 | |
652 @item @dots{}-mac | |
653 Assume the file uses carriage-return to separate lines, and do the | |
654 appropriate conversion. (This is the convention normally used on the | |
655 Macintosh system.) | |
656 @end table | |
657 | |
658 These variant coding systems are omitted from the | |
659 @code{list-coding-systems} display for brevity, since they are entirely | |
660 predictable. For example, the coding system @code{iso-latin-1} has | |
661 variants @code{iso-latin-1-unix}, @code{iso-latin-1-dos} and | |
662 @code{iso-latin-1-mac}. | |
663 | |
664 The coding system @code{raw-text} is good for a file which is mainly | |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
665 @acronym{ASCII} text, but may contain byte values above 127 which are not meant to |
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
666 encode non-@acronym{ASCII} characters. With @code{raw-text}, Emacs copies those |
25829 | 667 byte values unchanged, and sets @code{enable-multibyte-characters} to |
668 @code{nil} in the current buffer so that they will be interpreted | |
669 properly. @code{raw-text} handles end-of-line conversion in the usual | |
670 way, based on the data encountered, and has the usual three variants to | |
671 specify the kind of end-of-line conversion to use. | |
672 | |
673 In contrast, the coding system @code{no-conversion} specifies no | |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
674 character code conversion at all---none for non-@acronym{ASCII} byte values and |
25829 | 675 none for end of line. This is useful for reading or writing binary |
676 files, tar files, and other files that must be examined verbatim. It, | |
677 too, sets @code{enable-multibyte-characters} to @code{nil}. | |
678 | |
679 The easiest way to edit a file with no conversion of any kind is with | |
680 the @kbd{M-x find-file-literally} command. This uses | |
681 @code{no-conversion}, and also suppresses other Emacs features that | |
682 might convert the file contents before you see them. @xref{Visiting}. | |
683 | |
684 The coding system @code{emacs-mule} means that the file contains | |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
685 non-@acronym{ASCII} characters stored with the internal Emacs encoding. It |
25829 | 686 handles end-of-line conversion based on the data encountered, and has |
687 the usual three variants to specify the kind of end-of-line conversion. | |
688 | |
689 @node Recognize Coding | |
690 @section Recognizing Coding Systems | |
691 | |
37584
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
692 Emacs tries to recognize which coding system to use for a given text |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
693 as an integral part of reading that text. (This applies to files |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
694 being read, output from subprocesses, text from X selections, etc.) |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
695 Emacs can select the right coding system automatically most of the |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
696 time---once you have specified your preferences. |
25829 | 697 |
698 Some coding systems can be recognized or distinguished by which byte | |
699 sequences appear in the data. However, there are coding systems that | |
700 cannot be distinguished, not even potentially. For example, there is no | |
701 way to distinguish between Latin-1 and Latin-2; they use the same byte | |
702 values with different meanings. | |
703 | |
704 Emacs handles this situation by means of a priority list of coding | |
705 systems. Whenever Emacs reads a file, if you do not specify the coding | |
706 system to use, Emacs checks the data against each coding system, | |
707 starting with the first in priority and working down the list, until it | |
708 finds a coding system that fits the data. Then it converts the file | |
709 contents assuming that they are represented in this coding system. | |
710 | |
711 The priority list of coding systems depends on the selected language | |
712 environment (@pxref{Language Environments}). For example, if you use | |
713 French, you probably want Emacs to prefer Latin-1 to Latin-2; if you use | |
714 Czech, you probably want Latin-2 to be preferred. This is one of the | |
715 reasons to specify a language environment. | |
716 | |
717 @findex prefer-coding-system | |
44325 | 718 However, you can alter the coding system priority list in detail |
719 with the command @kbd{M-x prefer-coding-system}. This command reads | |
720 the name of a coding system from the minibuffer, and adds it to the | |
721 front of the priority list, so that it is preferred to all others. If | |
722 you use this command several times, each use adds one element to the | |
723 front of the priority list. | |
25829 | 724 |
725 If you use a coding system that specifies the end-of-line conversion | |
38460
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
726 type, such as @code{iso-8859-1-dos}, what this means is that Emacs |
25829 | 727 should attempt to recognize @code{iso-8859-1} with priority, and should |
38786 | 728 use DOS end-of-line conversion when it does recognize @code{iso-8859-1}. |
25829 | 729 |
730 @vindex file-coding-system-alist | |
731 Sometimes a file name indicates which coding system to use for the | |
732 file. The variable @code{file-coding-system-alist} specifies this | |
733 correspondence. There is a special function | |
734 @code{modify-coding-system-alist} for adding elements to this list. For | |
735 example, to read and write all @samp{.txt} files using the coding system | |
736 @code{china-iso-8bit}, you can execute this Lisp expression: | |
737 | |
738 @smallexample | |
739 (modify-coding-system-alist 'file "\\.txt\\'" 'china-iso-8bit) | |
740 @end smallexample | |
741 | |
742 @noindent | |
743 The first argument should be @code{file}, the second argument should be | |
744 a regular expression that determines which files this applies to, and | |
745 the third argument says which coding system to use for these files. | |
746 | |
747 @vindex inhibit-eol-conversion | |
30375
5c4951d58989
(Recognize Coding): Document the variable inhibit-iso-escape-detection.
Eli Zaretskii <eliz@gnu.org>
parents:
29826
diff
changeset
|
748 @cindex DOS-style end-of-line display |
25829 | 749 Emacs recognizes which kind of end-of-line conversion to use based on |
750 the contents of the file: if it sees only carriage-returns, or only | |
751 carriage-return linefeed sequences, then it chooses the end-of-line | |
752 conversion accordingly. You can inhibit the automatic use of | |
753 end-of-line conversion by setting the variable @code{inhibit-eol-conversion} | |
37019
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
754 to non-@code{nil}. If you do that, DOS-style files will be displayed |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
755 with the @samp{^M} characters visible in the buffer; some people |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
756 prefer this to the more subtle @samp{(DOS)} end-of-line type |
1deafff9fd1f
(Language Environments): Explain how to update the X
Eli Zaretskii <eliz@gnu.org>
parents:
36875
diff
changeset
|
757 indication near the left edge of the mode line (@pxref{Mode Line, |
37081 | 758 eol-mnemonic}). |
25829 | 759 |
30375
5c4951d58989
(Recognize Coding): Document the variable inhibit-iso-escape-detection.
Eli Zaretskii <eliz@gnu.org>
parents:
29826
diff
changeset
|
760 @vindex inhibit-iso-escape-detection |
5c4951d58989
(Recognize Coding): Document the variable inhibit-iso-escape-detection.
Eli Zaretskii <eliz@gnu.org>
parents:
29826
diff
changeset
|
761 @cindex escape sequences in files |
5c4951d58989
(Recognize Coding): Document the variable inhibit-iso-escape-detection.
Eli Zaretskii <eliz@gnu.org>
parents:
29826
diff
changeset
|
762 By default, the automatic detection of coding system is sensitive to |
5c4951d58989
(Recognize Coding): Document the variable inhibit-iso-escape-detection.
Eli Zaretskii <eliz@gnu.org>
parents:
29826
diff
changeset
|
763 escape sequences. If Emacs sees a sequence of characters that begin |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
764 with an escape character, and the sequence is valid as an ISO-2022 |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
765 code, that tells Emacs to use one of the ISO-2022 encodings to decode |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
766 the file. |
30375
5c4951d58989
(Recognize Coding): Document the variable inhibit-iso-escape-detection.
Eli Zaretskii <eliz@gnu.org>
parents:
29826
diff
changeset
|
767 |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
768 However, there may be cases that you want to read escape sequences |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
769 in a file as is. In such a case, you can set the variable |
30375
5c4951d58989
(Recognize Coding): Document the variable inhibit-iso-escape-detection.
Eli Zaretskii <eliz@gnu.org>
parents:
29826
diff
changeset
|
770 @code{inhibit-iso-escape-detection} to non-@code{nil}. Then the code |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
771 detection ignores any escape sequences, and never uses an ISO-2022 |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
772 encoding. The result is that all escape sequences become visible in |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
773 the buffer. |
30375
5c4951d58989
(Recognize Coding): Document the variable inhibit-iso-escape-detection.
Eli Zaretskii <eliz@gnu.org>
parents:
29826
diff
changeset
|
774 |
5c4951d58989
(Recognize Coding): Document the variable inhibit-iso-escape-detection.
Eli Zaretskii <eliz@gnu.org>
parents:
29826
diff
changeset
|
775 The default value of @code{inhibit-iso-escape-detection} is |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
776 @code{nil}. We recommend that you not change it permanently, only for |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
777 one specific operation. That's because many Emacs Lisp source files |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
778 in the Emacs distribution contain non-@acronym{ASCII} characters encoded in the |
38460
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
779 coding system @code{iso-2022-7bit}, and they won't be |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
780 decoded correctly when you visit those files if you suppress the |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
781 escape sequence detection. |
30375
5c4951d58989
(Recognize Coding): Document the variable inhibit-iso-escape-detection.
Eli Zaretskii <eliz@gnu.org>
parents:
29826
diff
changeset
|
782 |
25829 | 783 @vindex coding |
784 You can specify the coding system for a particular file using the | |
38460
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
785 @w{@samp{-*-@dots{}-*-}} construct at the beginning of a file, or a |
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
786 local variables list at the end (@pxref{File Variables}). You do this |
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
787 by defining a value for the ``variable'' named @code{coding}. Emacs |
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
788 does not really have a variable @code{coding}; instead of setting a |
38786 | 789 variable, this uses the specified coding system for the file. For |
38460
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
790 example, @samp{-*-mode: C; coding: latin-1;-*-} specifies use of the |
38786 | 791 Latin-1 coding system, as well as C mode. When you specify the coding |
38460
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
792 explicitly in the file, that overrides |
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
793 @code{file-coding-system-alist}. |
25829 | 794 |
795 @vindex auto-coding-alist | |
37766
9be4cab94990
Add something for auto-coding-regexp-alist.
Gerd Moellmann <gerd@gnu.org>
parents:
37630
diff
changeset
|
796 @vindex auto-coding-regexp-alist |
45451
99b053f1b7f6
(Recognize Coding): Note addition of `auto-coding-functions'.
Colin Walters <walters@gnu.org>
parents:
44325
diff
changeset
|
797 @vindex auto-coding-functions |
99b053f1b7f6
(Recognize Coding): Note addition of `auto-coding-functions'.
Colin Walters <walters@gnu.org>
parents:
44325
diff
changeset
|
798 The variables @code{auto-coding-alist}, |
99b053f1b7f6
(Recognize Coding): Note addition of `auto-coding-functions'.
Colin Walters <walters@gnu.org>
parents:
44325
diff
changeset
|
799 @code{auto-coding-regexp-alist} and @code{auto-coding-functions} are |
99b053f1b7f6
(Recognize Coding): Note addition of `auto-coding-functions'.
Colin Walters <walters@gnu.org>
parents:
44325
diff
changeset
|
800 the strongest way to specify the coding system for certain patterns of |
99b053f1b7f6
(Recognize Coding): Note addition of `auto-coding-functions'.
Colin Walters <walters@gnu.org>
parents:
44325
diff
changeset
|
801 file names, or for files containing certain patterns; these variables |
99b053f1b7f6
(Recognize Coding): Note addition of `auto-coding-functions'.
Colin Walters <walters@gnu.org>
parents:
44325
diff
changeset
|
802 even override @samp{-*-coding:-*-} tags in the file itself. Emacs |
99b053f1b7f6
(Recognize Coding): Note addition of `auto-coding-functions'.
Colin Walters <walters@gnu.org>
parents:
44325
diff
changeset
|
803 uses @code{auto-coding-alist} for tar and archive files, to prevent it |
37766
9be4cab94990
Add something for auto-coding-regexp-alist.
Gerd Moellmann <gerd@gnu.org>
parents:
37630
diff
changeset
|
804 from being confused by a @samp{-*-coding:-*-} tag in a member of the |
9be4cab94990
Add something for auto-coding-regexp-alist.
Gerd Moellmann <gerd@gnu.org>
parents:
37630
diff
changeset
|
805 archive and thinking it applies to the archive file as a whole. |
9be4cab94990
Add something for auto-coding-regexp-alist.
Gerd Moellmann <gerd@gnu.org>
parents:
37630
diff
changeset
|
806 Likewise, Emacs uses @code{auto-coding-regexp-alist} to ensure that |
45451
99b053f1b7f6
(Recognize Coding): Note addition of `auto-coding-functions'.
Colin Walters <walters@gnu.org>
parents:
44325
diff
changeset
|
807 RMAIL files, whose names in general don't match any particular |
99b053f1b7f6
(Recognize Coding): Note addition of `auto-coding-functions'.
Colin Walters <walters@gnu.org>
parents:
44325
diff
changeset
|
808 pattern, are decoded correctly. One of the builtin |
99b053f1b7f6
(Recognize Coding): Note addition of `auto-coding-functions'.
Colin Walters <walters@gnu.org>
parents:
44325
diff
changeset
|
809 @code{auto-coding-functions} detects the encoding for XML files. |
25829 | 810 |
37584
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
811 If Emacs recognizes the encoding of a file incorrectly, you can |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
812 reread the file using the correct coding system by typing @kbd{C-x |
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
813 @key{RET} c @var{coding-system} @key{RET} M-x revert-buffer |
38133 | 814 @key{RET}}. To see what coding system Emacs actually used to decode |
815 the file, look at the coding system mnemonic letter near the left edge | |
816 of the mode line (@pxref{Mode Line}), or type @kbd{C-h C @key{RET}}. | |
37584
9a7fd51a92b3
(International): Add an overview of Mule features, with pointers to
Eli Zaretskii <eliz@gnu.org>
parents:
37086
diff
changeset
|
817 |
46204
dfc0a989ae61
Document unify-8859-on-decoding-mode.
Richard M. Stallman <rms@gnu.org>
parents:
45451
diff
changeset
|
818 @findex unify-8859-on-decoding-mode |
dfc0a989ae61
Document unify-8859-on-decoding-mode.
Richard M. Stallman <rms@gnu.org>
parents:
45451
diff
changeset
|
819 The command @code{unify-8859-on-decoding-mode} enables a mode that |
dfc0a989ae61
Document unify-8859-on-decoding-mode.
Richard M. Stallman <rms@gnu.org>
parents:
45451
diff
changeset
|
820 ``unifies'' the Latin alphabets when decoding text. This works by |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
821 converting all non-@acronym{ASCII} Latin-@var{n} characters to either Latin-1 or |
46204
dfc0a989ae61
Document unify-8859-on-decoding-mode.
Richard M. Stallman <rms@gnu.org>
parents:
45451
diff
changeset
|
822 Unicode characters. This way it is easier to use various |
dfc0a989ae61
Document unify-8859-on-decoding-mode.
Richard M. Stallman <rms@gnu.org>
parents:
45451
diff
changeset
|
823 Latin-@var{n} alphabets together. In a future Emacs version we hope |
dfc0a989ae61
Document unify-8859-on-decoding-mode.
Richard M. Stallman <rms@gnu.org>
parents:
45451
diff
changeset
|
824 to move towards full Unicode support and complete unification of |
dfc0a989ae61
Document unify-8859-on-decoding-mode.
Richard M. Stallman <rms@gnu.org>
parents:
45451
diff
changeset
|
825 character sets. |
dfc0a989ae61
Document unify-8859-on-decoding-mode.
Richard M. Stallman <rms@gnu.org>
parents:
45451
diff
changeset
|
826 |
25829 | 827 @vindex buffer-file-coding-system |
828 Once Emacs has chosen a coding system for a buffer, it stores that | |
829 coding system in @code{buffer-file-coding-system} and uses that coding | |
830 system, by default, for operations that write from this buffer into a | |
831 file. This includes the commands @code{save-buffer} and | |
832 @code{write-region}. If you want to write files from this buffer using | |
833 a different coding system, you can specify a different coding system for | |
834 the buffer using @code{set-buffer-file-coding-system} (@pxref{Specify | |
835 Coding}). | |
836 | |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
837 You can insert any possible character into any Emacs buffer, but |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
838 most coding systems can only handle some of the possible characters. |
38460
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
839 This means that it is possible for you to insert characters that |
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
840 cannot be encoded with the coding system that will be used to save the |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
841 buffer. For example, you could start with an @acronym{ASCII} file and insert a |
38460
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
842 few Latin-1 characters into it, or you could edit a text file in |
38786 | 843 Polish encoded in @code{iso-8859-2} and add some Russian words to it. |
844 When you save the buffer, Emacs cannot use the current value of | |
845 @code{buffer-file-coding-system}, because the characters you added | |
846 cannot be encoded by that coding system. | |
31021
5380bd6b450e
Document the way Emacs prompts for a safe coding system when the
Eli Zaretskii <eliz@gnu.org>
parents:
30375
diff
changeset
|
847 |
5380bd6b450e
Document the way Emacs prompts for a safe coding system when the
Eli Zaretskii <eliz@gnu.org>
parents:
30375
diff
changeset
|
848 When that happens, Emacs tries the most-preferred coding system (set |
5380bd6b450e
Document the way Emacs prompts for a safe coding system when the
Eli Zaretskii <eliz@gnu.org>
parents:
30375
diff
changeset
|
849 by @kbd{M-x prefer-coding-system} or @kbd{M-x |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
850 set-language-environment}), and if that coding system can safely |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
851 encode all of the characters in the buffer, Emacs uses it, and stores |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
852 its value in @code{buffer-file-coding-system}. Otherwise, Emacs |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
853 displays a list of coding systems suitable for encoding the buffer's |
38050
89031b4b9a28
Proofreading fixes from Tim Sanders <tim@timsanders.freeserve.co.uk>.
Eli Zaretskii <eliz@gnu.org>
parents:
37870
diff
changeset
|
854 contents, and asks you to choose one of those coding systems. |
31021
5380bd6b450e
Document the way Emacs prompts for a safe coding system when the
Eli Zaretskii <eliz@gnu.org>
parents:
30375
diff
changeset
|
855 |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
856 If you insert the unsuitable characters in a mail message, Emacs |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
857 behaves a bit differently. It additionally checks whether the |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
858 most-preferred coding system is recommended for use in MIME messages; |
38863 | 859 if not, Emacs tells you that the most-preferred coding system is |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
860 not recommended and prompts you for another coding system. This is so |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
861 you won't inadvertently send a message encoded in a way that your |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
862 recipient's mail software will have difficulty decoding. (If you do |
38050
89031b4b9a28
Proofreading fixes from Tim Sanders <tim@timsanders.freeserve.co.uk>.
Eli Zaretskii <eliz@gnu.org>
parents:
37870
diff
changeset
|
863 want to use the most-preferred coding system, you can still type its |
38133 | 864 name in response to the question.) |
31021
5380bd6b450e
Document the way Emacs prompts for a safe coding system when the
Eli Zaretskii <eliz@gnu.org>
parents:
30375
diff
changeset
|
865 |
25829 | 866 @vindex sendmail-coding-system |
867 When you send a message with Mail mode (@pxref{Sending Mail}), Emacs has | |
868 four different ways to determine the coding system to use for encoding | |
869 the message text. It tries the buffer's own value of | |
870 @code{buffer-file-coding-system}, if that is non-@code{nil}. Otherwise, | |
871 it uses the value of @code{sendmail-coding-system}, if that is | |
872 non-@code{nil}. The third way is to use the default coding system for | |
873 new files, which is controlled by your choice of language environment, | |
874 if that is non-@code{nil}. If all of these three values are @code{nil}, | |
875 Emacs encodes outgoing mail using the Latin-1 coding system. | |
876 | |
877 @vindex rmail-decode-mime-charset | |
878 When you get new mail in Rmail, each message is translated | |
38460
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
879 automatically from the coding system it is written in, as if it were a |
25829 | 880 separate file. This uses the priority list of coding systems that you |
881 have specified. If a MIME message specifies a character set, Rmail | |
882 obeys that specification, unless @code{rmail-decode-mime-charset} is | |
883 @code{nil}. | |
884 | |
885 @vindex rmail-file-coding-system | |
886 For reading and saving Rmail files themselves, Emacs uses the coding | |
887 system specified by the variable @code{rmail-file-coding-system}. The | |
888 default value is @code{nil}, which means that Rmail files are not | |
889 translated (they are read and written in the Emacs internal character | |
890 code). | |
891 | |
892 @node Specify Coding | |
893 @section Specifying a Coding System | |
894 | |
895 In cases where Emacs does not automatically choose the right coding | |
896 system, you can use these commands to specify one: | |
897 | |
898 @table @kbd | |
899 @item C-x @key{RET} f @var{coding} @key{RET} | |
46912
487968d71def
Explain how C-x RET f and C-x RET c affect saving.
Richard M. Stallman <rms@gnu.org>
parents:
46236
diff
changeset
|
900 Use coding system @var{coding} for saving or revisiting the visited |
487968d71def
Explain how C-x RET f and C-x RET c affect saving.
Richard M. Stallman <rms@gnu.org>
parents:
46236
diff
changeset
|
901 file in the current buffer. |
25829 | 902 |
903 @item C-x @key{RET} c @var{coding} @key{RET} | |
904 Specify coding system @var{coding} for the immediately following | |
905 command. | |
906 | |
60800
06251e15fd5e
(Input Methods): Leim is now built-in.
Richard M. Stallman <rms@gnu.org>
parents:
59796
diff
changeset
|
907 @item C-x @key{RET} r @var{coding} @key{RET} |
06251e15fd5e
(Input Methods): Leim is now built-in.
Richard M. Stallman <rms@gnu.org>
parents:
59796
diff
changeset
|
908 Revisit the current file using the coding system @var{coding}. |
06251e15fd5e
(Input Methods): Leim is now built-in.
Richard M. Stallman <rms@gnu.org>
parents:
59796
diff
changeset
|
909 |
25829 | 910 @item C-x @key{RET} k @var{coding} @key{RET} |
911 Use coding system @var{coding} for keyboard input. | |
912 | |
913 @item C-x @key{RET} t @var{coding} @key{RET} | |
914 Use coding system @var{coding} for terminal output. | |
915 | |
916 @item C-x @key{RET} p @var{input-coding} @key{RET} @var{output-coding} @key{RET} | |
917 Use coding systems @var{input-coding} and @var{output-coding} for | |
918 subprocess input and output in the current buffer. | |
919 | |
920 @item C-x @key{RET} x @var{coding} @key{RET} | |
921 Use coding system @var{coding} for transferring selections to and from | |
922 other programs through the window system. | |
923 | |
54271
7232ffdd33dd
(Specify Coding): Doc C-x RET F.
Richard M. Stallman <rms@gnu.org>
parents:
52979
diff
changeset
|
924 @item C-x @key{RET} F @var{coding} @key{RET} |
7232ffdd33dd
(Specify Coding): Doc C-x RET F.
Richard M. Stallman <rms@gnu.org>
parents:
52979
diff
changeset
|
925 Use coding system @var{coding} for encoding and decoding file |
7232ffdd33dd
(Specify Coding): Doc C-x RET F.
Richard M. Stallman <rms@gnu.org>
parents:
52979
diff
changeset
|
926 @emph{names}. This affects the use of non-ASCII characters in file |
7232ffdd33dd
(Specify Coding): Doc C-x RET F.
Richard M. Stallman <rms@gnu.org>
parents:
52979
diff
changeset
|
927 names. It has no effect on reading and writing the @emph{contents} of |
7232ffdd33dd
(Specify Coding): Doc C-x RET F.
Richard M. Stallman <rms@gnu.org>
parents:
52979
diff
changeset
|
928 files. |
7232ffdd33dd
(Specify Coding): Doc C-x RET F.
Richard M. Stallman <rms@gnu.org>
parents:
52979
diff
changeset
|
929 |
25829 | 930 @item C-x @key{RET} X @var{coding} @key{RET} |
931 Use coding system @var{coding} for transferring @emph{one} | |
932 selection---the next one---to or from the window system. | |
61052
f49b6692433d
(Specify Coding): Document recode-region and recode-file-name.
Richard M. Stallman <rms@gnu.org>
parents:
60884
diff
changeset
|
933 |
f49b6692433d
(Specify Coding): Document recode-region and recode-file-name.
Richard M. Stallman <rms@gnu.org>
parents:
60884
diff
changeset
|
934 @item M-x recode-region |
f49b6692433d
(Specify Coding): Document recode-region and recode-file-name.
Richard M. Stallman <rms@gnu.org>
parents:
60884
diff
changeset
|
935 Convert the region from a previous coding system to a new one. |
25829 | 936 @end table |
937 | |
938 @kindex C-x RET f | |
939 @findex set-buffer-file-coding-system | |
46912
487968d71def
Explain how C-x RET f and C-x RET c affect saving.
Richard M. Stallman <rms@gnu.org>
parents:
46236
diff
changeset
|
940 The command @kbd{C-x @key{RET} f} |
487968d71def
Explain how C-x RET f and C-x RET c affect saving.
Richard M. Stallman <rms@gnu.org>
parents:
46236
diff
changeset
|
941 (@code{set-buffer-file-coding-system}) sets the file coding system for |
487968d71def
Explain how C-x RET f and C-x RET c affect saving.
Richard M. Stallman <rms@gnu.org>
parents:
46236
diff
changeset
|
942 the current buffer---in other words, it says which coding system to |
487968d71def
Explain how C-x RET f and C-x RET c affect saving.
Richard M. Stallman <rms@gnu.org>
parents:
46236
diff
changeset
|
943 use when saving or reverting the visited file. You specify which |
487968d71def
Explain how C-x RET f and C-x RET c affect saving.
Richard M. Stallman <rms@gnu.org>
parents:
46236
diff
changeset
|
944 coding system using the minibuffer. If you specify a coding system |
487968d71def
Explain how C-x RET f and C-x RET c affect saving.
Richard M. Stallman <rms@gnu.org>
parents:
46236
diff
changeset
|
945 that cannot handle all of the characters in the buffer, Emacs warns |
487968d71def
Explain how C-x RET f and C-x RET c affect saving.
Richard M. Stallman <rms@gnu.org>
parents:
46236
diff
changeset
|
946 you about the troublesome characters when you actually save the |
487968d71def
Explain how C-x RET f and C-x RET c affect saving.
Richard M. Stallman <rms@gnu.org>
parents:
46236
diff
changeset
|
947 buffer. |
25829 | 948 |
949 @kindex C-x RET c | |
950 @findex universal-coding-system-argument | |
951 Another way to specify the coding system for a file is when you visit | |
952 the file. First use the command @kbd{C-x @key{RET} c} | |
953 (@code{universal-coding-system-argument}); this command uses the | |
954 minibuffer to read a coding system name. After you exit the minibuffer, | |
955 the specified coding system is used for @emph{the immediately following | |
956 command}. | |
957 | |
958 So if the immediately following command is @kbd{C-x C-f}, for example, | |
959 it reads the file using that coding system (and records the coding | |
46912
487968d71def
Explain how C-x RET f and C-x RET c affect saving.
Richard M. Stallman <rms@gnu.org>
parents:
46236
diff
changeset
|
960 system for when you later save the file). Or if the immediately following |
25829 | 961 command is @kbd{C-x C-w}, it writes the file using that coding system. |
46912
487968d71def
Explain how C-x RET f and C-x RET c affect saving.
Richard M. Stallman <rms@gnu.org>
parents:
46236
diff
changeset
|
962 When you specify the coding system for saving in this way, instead |
487968d71def
Explain how C-x RET f and C-x RET c affect saving.
Richard M. Stallman <rms@gnu.org>
parents:
46236
diff
changeset
|
963 of with @kbd{C-x @key{RET} f}, there is no warning if the buffer |
487968d71def
Explain how C-x RET f and C-x RET c affect saving.
Richard M. Stallman <rms@gnu.org>
parents:
46236
diff
changeset
|
964 contains characters that the coding system cannot handle. |
25829 | 965 |
46912
487968d71def
Explain how C-x RET f and C-x RET c affect saving.
Richard M. Stallman <rms@gnu.org>
parents:
46236
diff
changeset
|
966 Other file commands affected by a specified coding system include |
487968d71def
Explain how C-x RET f and C-x RET c affect saving.
Richard M. Stallman <rms@gnu.org>
parents:
46236
diff
changeset
|
967 @kbd{C-x C-i} and @kbd{C-x C-v}, as well as the other-window variants |
487968d71def
Explain how C-x RET f and C-x RET c affect saving.
Richard M. Stallman <rms@gnu.org>
parents:
46236
diff
changeset
|
968 of @kbd{C-x C-f}. @kbd{C-x @key{RET} c} also affects commands that |
487968d71def
Explain how C-x RET f and C-x RET c affect saving.
Richard M. Stallman <rms@gnu.org>
parents:
46236
diff
changeset
|
969 start subprocesses, including @kbd{M-x shell} (@pxref{Shell}). |
25829 | 970 |
46912
487968d71def
Explain how C-x RET f and C-x RET c affect saving.
Richard M. Stallman <rms@gnu.org>
parents:
46236
diff
changeset
|
971 If the immediately following command does not use the coding system, |
487968d71def
Explain how C-x RET f and C-x RET c affect saving.
Richard M. Stallman <rms@gnu.org>
parents:
46236
diff
changeset
|
972 then @kbd{C-x @key{RET} c} ultimately has no effect. |
25829 | 973 |
974 An easy way to visit a file with no conversion is with the @kbd{M-x | |
975 find-file-literally} command. @xref{Visiting}. | |
976 | |
977 @vindex default-buffer-file-coding-system | |
978 The variable @code{default-buffer-file-coding-system} specifies the | |
979 choice of coding system to use when you create a new file. It applies | |
980 when you find a new file, and when you create a buffer and then save it | |
981 in a file. Selecting a language environment typically sets this | |
982 variable to a good choice of default coding system for that language | |
983 environment. | |
984 | |
60800
06251e15fd5e
(Input Methods): Leim is now built-in.
Richard M. Stallman <rms@gnu.org>
parents:
59796
diff
changeset
|
985 @kindex C-x RET r |
06251e15fd5e
(Input Methods): Leim is now built-in.
Richard M. Stallman <rms@gnu.org>
parents:
59796
diff
changeset
|
986 @findex revert-buffer-with-coding-system |
06251e15fd5e
(Input Methods): Leim is now built-in.
Richard M. Stallman <rms@gnu.org>
parents:
59796
diff
changeset
|
987 If you visit a file with a wrong coding system, you can correct this |
06251e15fd5e
(Input Methods): Leim is now built-in.
Richard M. Stallman <rms@gnu.org>
parents:
59796
diff
changeset
|
988 with @kbd{C-x @key{RET} r} (@code{revert-buffer-with-coding-system}). |
06251e15fd5e
(Input Methods): Leim is now built-in.
Richard M. Stallman <rms@gnu.org>
parents:
59796
diff
changeset
|
989 This visits the current file again, using a coding system you specify. |
06251e15fd5e
(Input Methods): Leim is now built-in.
Richard M. Stallman <rms@gnu.org>
parents:
59796
diff
changeset
|
990 |
25829 | 991 @kindex C-x RET t |
992 @findex set-terminal-coding-system | |
993 The command @kbd{C-x @key{RET} t} (@code{set-terminal-coding-system}) | |
994 specifies the coding system for terminal output. If you specify a | |
995 character code for terminal output, all characters output to the | |
996 terminal are translated into that coding system. | |
997 | |
998 This feature is useful for certain character-only terminals built to | |
999 support specific languages or character sets---for example, European | |
1000 terminals that support one of the ISO Latin character sets. You need to | |
1001 specify the terminal coding system when using multibyte text, so that | |
1002 Emacs knows which characters the terminal can actually handle. | |
1003 | |
1004 By default, output to the terminal is not translated at all, unless | |
33745
78ec4a7ba765
(Undisplayable Characters): New node.
Dave Love <fx@gnu.org>
parents:
32386
diff
changeset
|
1005 Emacs can deduce the proper coding system from your terminal type or |
78ec4a7ba765
(Undisplayable Characters): New node.
Dave Love <fx@gnu.org>
parents:
32386
diff
changeset
|
1006 your locale specification (@pxref{Language Environments}). |
25829 | 1007 |
1008 @kindex C-x RET k | |
1009 @findex set-keyboard-coding-system | |
34691 | 1010 @vindex keyboard-coding-system |
25829 | 1011 The command @kbd{C-x @key{RET} k} (@code{set-keyboard-coding-system}) |
59796
48aa868cde0b
Don't say just "option" when talking about variables.
Richard M. Stallman <rms@gnu.org>
parents:
58624
diff
changeset
|
1012 or the variable @code{keyboard-coding-system} specifies the coding |
48aa868cde0b
Don't say just "option" when talking about variables.
Richard M. Stallman <rms@gnu.org>
parents:
58624
diff
changeset
|
1013 system for keyboard input. Character-code translation of keyboard |
48aa868cde0b
Don't say just "option" when talking about variables.
Richard M. Stallman <rms@gnu.org>
parents:
58624
diff
changeset
|
1014 input is useful for terminals with keys that send non-@acronym{ASCII} |
48aa868cde0b
Don't say just "option" when talking about variables.
Richard M. Stallman <rms@gnu.org>
parents:
58624
diff
changeset
|
1015 graphic characters---for example, some terminals designed for ISO |
48aa868cde0b
Don't say just "option" when talking about variables.
Richard M. Stallman <rms@gnu.org>
parents:
58624
diff
changeset
|
1016 Latin-1 or subsets of it. |
25829 | 1017 |
46236
b3a9c5fdc73a
keyboard-coding-system is initialized from the locale.
Richard M. Stallman <rms@gnu.org>
parents:
46204
diff
changeset
|
1018 By default, keyboard input is translated based on your system locale |
b3a9c5fdc73a
keyboard-coding-system is initialized from the locale.
Richard M. Stallman <rms@gnu.org>
parents:
46204
diff
changeset
|
1019 setting. If your terminal does not really support the encoding |
b3a9c5fdc73a
keyboard-coding-system is initialized from the locale.
Richard M. Stallman <rms@gnu.org>
parents:
46204
diff
changeset
|
1020 implied by your locale (for example, if you find it inserts a |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1021 non-@acronym{ASCII} character if you type @kbd{M-i}), you will need to set |
46236
b3a9c5fdc73a
keyboard-coding-system is initialized from the locale.
Richard M. Stallman <rms@gnu.org>
parents:
46204
diff
changeset
|
1022 @code{keyboard-coding-system} to @code{nil} to turn off encoding. |
b3a9c5fdc73a
keyboard-coding-system is initialized from the locale.
Richard M. Stallman <rms@gnu.org>
parents:
46204
diff
changeset
|
1023 You can do this by putting |
b3a9c5fdc73a
keyboard-coding-system is initialized from the locale.
Richard M. Stallman <rms@gnu.org>
parents:
46204
diff
changeset
|
1024 |
b3a9c5fdc73a
keyboard-coding-system is initialized from the locale.
Richard M. Stallman <rms@gnu.org>
parents:
46204
diff
changeset
|
1025 @lisp |
b3a9c5fdc73a
keyboard-coding-system is initialized from the locale.
Richard M. Stallman <rms@gnu.org>
parents:
46204
diff
changeset
|
1026 (set-keyboard-coding-system nil) |
b3a9c5fdc73a
keyboard-coding-system is initialized from the locale.
Richard M. Stallman <rms@gnu.org>
parents:
46204
diff
changeset
|
1027 @end lisp |
b3a9c5fdc73a
keyboard-coding-system is initialized from the locale.
Richard M. Stallman <rms@gnu.org>
parents:
46204
diff
changeset
|
1028 |
b3a9c5fdc73a
keyboard-coding-system is initialized from the locale.
Richard M. Stallman <rms@gnu.org>
parents:
46204
diff
changeset
|
1029 @noindent |
b3a9c5fdc73a
keyboard-coding-system is initialized from the locale.
Richard M. Stallman <rms@gnu.org>
parents:
46204
diff
changeset
|
1030 in your @file{~/.emacs} file. |
25829 | 1031 |
1032 There is a similarity between using a coding system translation for | |
1033 keyboard input, and using an input method: both define sequences of | |
1034 keyboard input that translate into single characters. However, input | |
1035 methods are designed to be convenient for interactive use by humans, and | |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1036 the sequences that are translated are typically sequences of @acronym{ASCII} |
25829 | 1037 printing characters. Coding systems typically translate sequences of |
1038 non-graphic characters. | |
1039 | |
1040 @kindex C-x RET x | |
1041 @kindex C-x RET X | |
1042 @findex set-selection-coding-system | |
1043 @findex set-next-selection-coding-system | |
1044 The command @kbd{C-x @key{RET} x} (@code{set-selection-coding-system}) | |
1045 specifies the coding system for sending selected text to the window | |
1046 system, and for receiving the text of selections made in other | |
1047 applications. This command applies to all subsequent selections, until | |
1048 you override it by using the command again. The command @kbd{C-x | |
1049 @key{RET} X} (@code{set-next-selection-coding-system}) specifies the | |
1050 coding system for the next selection made in Emacs or read by Emacs. | |
1051 | |
1052 @kindex C-x RET p | |
1053 @findex set-buffer-process-coding-system | |
1054 The command @kbd{C-x @key{RET} p} (@code{set-buffer-process-coding-system}) | |
1055 specifies the coding system for input and output to a subprocess. This | |
1056 command applies to the current buffer; normally, each subprocess has its | |
1057 own buffer, and thus you can use this command to specify translation to | |
1058 and from a particular subprocess by giving the command in the | |
1059 corresponding buffer. | |
1060 | |
29826
05c0499d035a
(set-buffer-process-coding-system): Documentation fixed.
Kenichi Handa <handa@m17n.org>
parents:
29107
diff
changeset
|
1061 The default for translation of process input and output depends on the |
05c0499d035a
(set-buffer-process-coding-system): Documentation fixed.
Kenichi Handa <handa@m17n.org>
parents:
29107
diff
changeset
|
1062 current language environment. |
25829 | 1063 |
61052
f49b6692433d
(Specify Coding): Document recode-region and recode-file-name.
Richard M. Stallman <rms@gnu.org>
parents:
60884
diff
changeset
|
1064 @findex recode-region |
f49b6692433d
(Specify Coding): Document recode-region and recode-file-name.
Richard M. Stallman <rms@gnu.org>
parents:
60884
diff
changeset
|
1065 If a piece of text has already been inserted into a buffer using the |
f49b6692433d
(Specify Coding): Document recode-region and recode-file-name.
Richard M. Stallman <rms@gnu.org>
parents:
60884
diff
changeset
|
1066 wrong coding system, you can decode it again using @kbd{M-x |
f49b6692433d
(Specify Coding): Document recode-region and recode-file-name.
Richard M. Stallman <rms@gnu.org>
parents:
60884
diff
changeset
|
1067 recode-region}. This prompts you for the old coding system and the |
f49b6692433d
(Specify Coding): Document recode-region and recode-file-name.
Richard M. Stallman <rms@gnu.org>
parents:
60884
diff
changeset
|
1068 desired coding system, and acts on the text in the region. |
f49b6692433d
(Specify Coding): Document recode-region and recode-file-name.
Richard M. Stallman <rms@gnu.org>
parents:
60884
diff
changeset
|
1069 |
25829 | 1070 @vindex file-name-coding-system |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1071 @cindex file names with non-@acronym{ASCII} characters |
54271
7232ffdd33dd
(Specify Coding): Doc C-x RET F.
Richard M. Stallman <rms@gnu.org>
parents:
52979
diff
changeset
|
1072 @findex set-file-name-coding-system |
7232ffdd33dd
(Specify Coding): Doc C-x RET F.
Richard M. Stallman <rms@gnu.org>
parents:
52979
diff
changeset
|
1073 @kindex C-x @key{RET} F |
7232ffdd33dd
(Specify Coding): Doc C-x RET F.
Richard M. Stallman <rms@gnu.org>
parents:
52979
diff
changeset
|
1074 The variable @code{file-name-coding-system} specifies a coding |
7232ffdd33dd
(Specify Coding): Doc C-x RET F.
Richard M. Stallman <rms@gnu.org>
parents:
52979
diff
changeset
|
1075 system to use for encoding file names. If you set the variable to a |
7232ffdd33dd
(Specify Coding): Doc C-x RET F.
Richard M. Stallman <rms@gnu.org>
parents:
52979
diff
changeset
|
1076 coding system name (as a Lisp symbol or a string), Emacs encodes file |
7232ffdd33dd
(Specify Coding): Doc C-x RET F.
Richard M. Stallman <rms@gnu.org>
parents:
52979
diff
changeset
|
1077 names using that coding system for all file operations. This makes it |
7232ffdd33dd
(Specify Coding): Doc C-x RET F.
Richard M. Stallman <rms@gnu.org>
parents:
52979
diff
changeset
|
1078 possible to use non-@acronym{ASCII} characters in file names---or, at |
7232ffdd33dd
(Specify Coding): Doc C-x RET F.
Richard M. Stallman <rms@gnu.org>
parents:
52979
diff
changeset
|
1079 least, those non-@acronym{ASCII} characters which the specified coding |
7232ffdd33dd
(Specify Coding): Doc C-x RET F.
Richard M. Stallman <rms@gnu.org>
parents:
52979
diff
changeset
|
1080 system can encode. Use @kbd{C-x @key{RET} F} |
7232ffdd33dd
(Specify Coding): Doc C-x RET F.
Richard M. Stallman <rms@gnu.org>
parents:
52979
diff
changeset
|
1081 (@code{set-file-name-coding-system}) to specify this interactively. |
25829 | 1082 |
1083 If @code{file-name-coding-system} is @code{nil}, Emacs uses a default | |
1084 coding system determined by the selected language environment. In the | |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1085 default language environment, any non-@acronym{ASCII} characters in file names are |
25829 | 1086 not encoded specially; they appear in the file system using the internal |
1087 Emacs representation. | |
1088 | |
1089 @strong{Warning:} if you change @code{file-name-coding-system} (or the | |
1090 language environment) in the middle of an Emacs session, problems can | |
1091 result if you have already visited files whose names were encoded using | |
1092 the earlier coding system and cannot be encoded (or are encoded | |
1093 differently) under the new coding system. If you try to save one of | |
1094 these buffers under the visited file name, saving may use the wrong file | |
1095 name, or it may get an error. If such a problem happens, use @kbd{C-x | |
1096 C-w} to specify a new file name for that buffer. | |
1097 | |
61052
f49b6692433d
(Specify Coding): Document recode-region and recode-file-name.
Richard M. Stallman <rms@gnu.org>
parents:
60884
diff
changeset
|
1098 @findex recode-file-name |
f49b6692433d
(Specify Coding): Document recode-region and recode-file-name.
Richard M. Stallman <rms@gnu.org>
parents:
60884
diff
changeset
|
1099 If a mistake occurs when encoding a file name, use the command |
f49b6692433d
(Specify Coding): Document recode-region and recode-file-name.
Richard M. Stallman <rms@gnu.org>
parents:
60884
diff
changeset
|
1100 command @kbd{M-x recode-file-name} to change the file name's coding |
f49b6692433d
(Specify Coding): Document recode-region and recode-file-name.
Richard M. Stallman <rms@gnu.org>
parents:
60884
diff
changeset
|
1101 system. This prompts for an existing file name, its old coding |
f49b6692433d
(Specify Coding): Document recode-region and recode-file-name.
Richard M. Stallman <rms@gnu.org>
parents:
60884
diff
changeset
|
1102 system, and the coding system to which you wish to convert. |
f49b6692433d
(Specify Coding): Document recode-region and recode-file-name.
Richard M. Stallman <rms@gnu.org>
parents:
60884
diff
changeset
|
1103 |
26140
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
1104 @vindex locale-coding-system |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1105 @cindex decoding non-@acronym{ASCII} keyboard input on X |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
1106 The variable @code{locale-coding-system} specifies a coding system |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
1107 to use when encoding and decoding system strings such as system error |
43633
2c255d245320
(International, Language Environments, Specify Coding): Make it clear
Eli Zaretskii <eliz@gnu.org>
parents:
43439
diff
changeset
|
1108 messages and @code{format-time-string} formats and time stamps. That |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1109 coding system is also used for decoding non-@acronym{ASCII} keyboard input on X |
43633
2c255d245320
(International, Language Environments, Specify Coding): Make it clear
Eli Zaretskii <eliz@gnu.org>
parents:
43439
diff
changeset
|
1110 Window systems. You should choose a coding system that is compatible |
2c255d245320
(International, Language Environments, Specify Coding): Make it clear
Eli Zaretskii <eliz@gnu.org>
parents:
43439
diff
changeset
|
1111 with the underlying system's text representation, which is normally |
2c255d245320
(International, Language Environments, Specify Coding): Make it clear
Eli Zaretskii <eliz@gnu.org>
parents:
43439
diff
changeset
|
1112 specified by one of the environment variables @env{LC_ALL}, |
2c255d245320
(International, Language Environments, Specify Coding): Make it clear
Eli Zaretskii <eliz@gnu.org>
parents:
43439
diff
changeset
|
1113 @env{LC_CTYPE}, and @env{LANG}. (The first one, in the order |
2c255d245320
(International, Language Environments, Specify Coding): Make it clear
Eli Zaretskii <eliz@gnu.org>
parents:
43439
diff
changeset
|
1114 specified above, whose value is nonempty is the one that determines |
2c255d245320
(International, Language Environments, Specify Coding): Make it clear
Eli Zaretskii <eliz@gnu.org>
parents:
43439
diff
changeset
|
1115 the text representation.) |
26140
068f7ad41d40
Describe new functions and variables for locales.
Paul Eggert <eggert@twinsun.com>
parents:
25829
diff
changeset
|
1116 |
25829 | 1117 @node Fontsets |
1118 @section Fontsets | |
1119 @cindex fontsets | |
1120 | |
38460
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
1121 A font for X typically defines shapes for a single alphabet or script. |
35188
94d46968a93f
Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents:
35163
diff
changeset
|
1122 Therefore, displaying the entire range of scripts that Emacs supports |
94d46968a93f
Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents:
35163
diff
changeset
|
1123 requires a collection of many fonts. In Emacs, such a collection is |
94d46968a93f
Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents:
35163
diff
changeset
|
1124 called a @dfn{fontset}. A fontset is defined by a list of fonts, each |
94d46968a93f
Don't say "X Windows". From Colin Walters <walters@cis.ohio-state.edu>.
Eli Zaretskii <eliz@gnu.org>
parents:
35163
diff
changeset
|
1125 assigned to handle a range of character codes. |
25829 | 1126 |
1127 Each fontset has a name, like a font. The available X fonts are | |
1128 defined by the X server; fontsets, however, are defined within Emacs | |
1129 itself. Once you have defined a fontset, you can use it within Emacs by | |
1130 specifying its name, anywhere that you could use a single font. Of | |
1131 course, Emacs fontsets can use only the fonts that the X server | |
1132 supports; if certain characters appear on the screen as hollow boxes, | |
1133 this means that the fontset in use for them has no font for those | |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
1134 characters.@footnote{The Emacs installation instructions have information on |
33745
78ec4a7ba765
(Undisplayable Characters): New node.
Dave Love <fx@gnu.org>
parents:
32386
diff
changeset
|
1135 additional font support.} |
25829 | 1136 |
1137 Emacs creates two fontsets automatically: the @dfn{standard fontset} | |
1138 and the @dfn{startup fontset}. The standard fontset is most likely to | |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1139 have fonts for a wide variety of non-@acronym{ASCII} characters; however, this is |
25829 | 1140 not the default for Emacs to use. (By default, Emacs tries to find a |
38460
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
1141 font that has bold and italic variants.) You can specify use of the |
25829 | 1142 standard fontset with the @samp{-fn} option, or with the @samp{Font} X |
1143 resource (@pxref{Font X}). For example, | |
1144 | |
1145 @example | |
1146 emacs -fn fontset-standard | |
1147 @end example | |
1148 | |
1149 A fontset does not necessarily specify a font for every character | |
1150 code. If a fontset specifies no font for a certain character, or if it | |
1151 specifies a font that does not exist on your system, then it cannot | |
1152 display that character properly. It will display that character as an | |
1153 empty box instead. | |
1154 | |
1155 @node Defining Fontsets | |
1156 @section Defining fontsets | |
1157 | |
1158 @vindex standard-fontset-spec | |
1159 @cindex standard fontset | |
1160 Emacs creates a standard fontset automatically according to the value | |
1161 of @code{standard-fontset-spec}. This fontset's name is | |
1162 | |
1163 @example | |
1164 -*-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-standard | |
1165 @end example | |
1166 | |
1167 @noindent | |
1168 or just @samp{fontset-standard} for short. | |
1169 | |
1170 Bold, italic, and bold-italic variants of the standard fontset are | |
1171 created automatically. Their names have @samp{bold} instead of | |
1172 @samp{medium}, or @samp{i} instead of @samp{r}, or both. | |
1173 | |
1174 @cindex startup fontset | |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1175 If you specify a default @acronym{ASCII} font with the @samp{Font} resource or |
25829 | 1176 the @samp{-fn} argument, Emacs generates a fontset from it |
1177 automatically. This is the @dfn{startup fontset} and its name is | |
1178 @code{fontset-startup}. It does this by replacing the @var{foundry}, | |
1179 @var{family}, @var{add_style}, and @var{average_width} fields of the | |
1180 font name with @samp{*}, replacing @var{charset_registry} field with | |
1181 @samp{fontset}, and replacing @var{charset_encoding} field with | |
1182 @samp{startup}, then using the resulting string to specify a fontset. | |
1183 | |
1184 For instance, if you start Emacs this way, | |
1185 | |
1186 @example | |
1187 emacs -fn "*courier-medium-r-normal--14-140-*-iso8859-1" | |
1188 @end example | |
1189 | |
1190 @noindent | |
1191 Emacs generates the following fontset and uses it for the initial X | |
1192 window frame: | |
1193 | |
1194 @example | |
1195 -*-*-medium-r-normal-*-14-140-*-*-*-*-fontset-startup | |
1196 @end example | |
1197 | |
1198 With the X resource @samp{Emacs.Font}, you can specify a fontset name | |
1199 just like an actual font name. But be careful not to specify a fontset | |
1200 name in a wildcard resource like @samp{Emacs*Font}---that wildcard | |
38495 | 1201 specification matches various other resources, such as for menus, and |
25829 | 1202 menus cannot handle fontsets. |
1203 | |
1204 You can specify additional fontsets using X resources named | |
1205 @samp{Fontset-@var{n}}, where @var{n} is an integer starting from 0. | |
1206 The resource value should have this form: | |
1207 | |
1208 @smallexample | |
1209 @var{fontpattern}, @r{[}@var{charsetname}:@var{fontname}@r{]@dots{}} | |
1210 @end smallexample | |
1211 | |
1212 @noindent | |
1213 @var{fontpattern} should have the form of a standard X font name, except | |
1214 for the last two fields. They should have the form | |
1215 @samp{fontset-@var{alias}}. | |
1216 | |
1217 The fontset has two names, one long and one short. The long name is | |
1218 @var{fontpattern}. The short name is @samp{fontset-@var{alias}}. You | |
1219 can refer to the fontset by either name. | |
1220 | |
1221 The construct @samp{@var{charset}:@var{font}} specifies which font to | |
1222 use (in this fontset) for one particular character set. Here, | |
1223 @var{charset} is the name of a character set, and @var{font} is the | |
1224 font to use for that character set. You can use this construct any | |
1225 number of times in defining one fontset. | |
1226 | |
1227 For the other character sets, Emacs chooses a font based on | |
1228 @var{fontpattern}. It replaces @samp{fontset-@var{alias}} with values | |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1229 that describe the character set. For the @acronym{ASCII} character font, |
25829 | 1230 @samp{fontset-@var{alias}} is replaced with @samp{ISO8859-1}. |
1231 | |
1232 In addition, when several consecutive fields are wildcards, Emacs | |
1233 collapses them into a single wildcard. This is to prevent use of | |
1234 auto-scaled fonts. Fonts made by scaling larger fonts are not usable | |
1235 for editing, and scaling a smaller font is not useful because it is | |
38460
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
1236 better to use the smaller font in its own size, which is what Emacs |
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
1237 does. |
25829 | 1238 |
1239 Thus if @var{fontpattern} is this, | |
1240 | |
1241 @example | |
1242 -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24 | |
1243 @end example | |
1244 | |
1245 @noindent | |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1246 the font specification for @acronym{ASCII} characters would be this: |
25829 | 1247 |
1248 @example | |
1249 -*-fixed-medium-r-normal-*-24-*-ISO8859-1 | |
1250 @end example | |
1251 | |
1252 @noindent | |
1253 and the font specification for Chinese GB2312 characters would be this: | |
1254 | |
1255 @example | |
1256 -*-fixed-medium-r-normal-*-24-*-gb2312*-* | |
1257 @end example | |
1258 | |
1259 You may not have any Chinese font matching the above font | |
1260 specification. Most X distributions include only Chinese fonts that | |
1261 have @samp{song ti} or @samp{fangsong ti} in @var{family} field. In | |
1262 such a case, @samp{Fontset-@var{n}} can be specified as below: | |
1263 | |
1264 @smallexample | |
1265 Emacs.Fontset-0: -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24,\ | |
1266 chinese-gb2312:-*-*-medium-r-normal-*-24-*-gb2312*-* | |
1267 @end smallexample | |
1268 | |
1269 @noindent | |
1270 Then, the font specifications for all but Chinese GB2312 characters have | |
1271 @samp{fixed} in the @var{family} field, and the font specification for | |
1272 Chinese GB2312 characters has a wild card @samp{*} in the @var{family} | |
1273 field. | |
1274 | |
1275 @findex create-fontset-from-fontset-spec | |
1276 The function that processes the fontset resource value to create the | |
1277 fontset is called @code{create-fontset-from-fontset-spec}. You can also | |
1278 call this function explicitly to create a fontset. | |
1279 | |
1280 @xref{Font X}, for more information about font naming in X. | |
1281 | |
33745
78ec4a7ba765
(Undisplayable Characters): New node.
Dave Love <fx@gnu.org>
parents:
32386
diff
changeset
|
1282 @node Undisplayable Characters |
78ec4a7ba765
(Undisplayable Characters): New node.
Dave Love <fx@gnu.org>
parents:
32386
diff
changeset
|
1283 @section Undisplayable Characters |
78ec4a7ba765
(Undisplayable Characters): New node.
Dave Love <fx@gnu.org>
parents:
32386
diff
changeset
|
1284 |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1285 There may be a some non-@acronym{ASCII} characters that your terminal cannot |
44325 | 1286 display. Most non-windowing terminals support just a single character |
1287 set (use the variable @code{default-terminal-coding-system} | |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
1288 (@pxref{Specify Coding}) to tell Emacs which one); characters which |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
1289 can't be encoded in that coding system are displayed as @samp{?} by |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
1290 default. |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
1291 |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
1292 Windowing terminals can display a broader range of characters, but |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
1293 you may not have fonts installed for all of them; characters that have |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
1294 no font appear as a hollow box. |
33745
78ec4a7ba765
(Undisplayable Characters): New node.
Dave Love <fx@gnu.org>
parents:
32386
diff
changeset
|
1295 |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
1296 If you use Latin-1 characters but your terminal can't display |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1297 Latin-1, you can arrange to display mnemonic @acronym{ASCII} sequences |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
1298 instead, e.g.@: @samp{"o} for o-umlaut. Load the library |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
1299 @file{iso-ascii} to do this. |
33745
78ec4a7ba765
(Undisplayable Characters): New node.
Dave Love <fx@gnu.org>
parents:
32386
diff
changeset
|
1300 |
36875 | 1301 @vindex latin1-display |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
1302 If your terminal can display Latin-1, you can display characters |
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
1303 from other European character sets using a mixture of equivalent |
59796
48aa868cde0b
Don't say just "option" when talking about variables.
Richard M. Stallman <rms@gnu.org>
parents:
58624
diff
changeset
|
1304 Latin-1 characters and @acronym{ASCII} mnemonics. Customize the variable |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1305 @code{latin1-display} to enable this. The mnemonic @acronym{ASCII} |
36170
0fd801cdb9fd
Clarify undisplayable characters, --unibyte, locales.
Richard M. Stallman <rms@gnu.org>
parents:
35206
diff
changeset
|
1306 sequences mostly correspond to those of the prefix input methods. |
33745
78ec4a7ba765
(Undisplayable Characters): New node.
Dave Love <fx@gnu.org>
parents:
32386
diff
changeset
|
1307 |
27211
0699f691fac1
Don't conflate single-byte with European.
Dave Love <fx@gnu.org>
parents:
27156
diff
changeset
|
1308 @node Single-Byte Character Support |
0699f691fac1
Don't conflate single-byte with European.
Dave Love <fx@gnu.org>
parents:
27156
diff
changeset
|
1309 @section Single-byte Character Set Support |
25829 | 1310 |
1311 @cindex European character sets | |
1312 @cindex accented characters | |
1313 @cindex ISO Latin character sets | |
1314 @cindex Unibyte operation | |
1315 The ISO 8859 Latin-@var{n} character sets define character codes in | |
38460
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
1316 the range 0240 to 0377 octal (160 to 255 decimal) to handle the |
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
1317 accented letters and punctuation needed by various European languages |
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
1318 (and some non-European ones). If you disable multibyte characters, |
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
1319 Emacs can still handle @emph{one} of these character codes at a time. |
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
1320 To specify @emph{which} of these codes to use, invoke @kbd{M-x |
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
1321 set-language-environment} and specify a suitable language environment |
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
1322 such as @samp{Latin-@var{n}}. |
25829 | 1323 |
1324 For more information about unibyte operation, see @ref{Enabling | |
1325 Multibyte}. Note particularly that you probably want to ensure that | |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1326 your initialization files are read as unibyte if they contain non-@acronym{ASCII} |
25829 | 1327 characters. |
1328 | |
1329 @vindex unibyte-display-via-language-environment | |
1330 Emacs can also display those characters, provided the terminal or font | |
1331 in use supports them. This works automatically. Alternatively, if you | |
1332 are using a window system, Emacs can also display single-byte characters | |
1333 through fontsets, in effect by displaying the equivalent multibyte | |
1334 characters according to the current language environment. To request | |
1335 this, set the variable @code{unibyte-display-via-language-environment} | |
1336 to a non-@code{nil} value. | |
1337 | |
1338 @cindex @code{iso-ascii} library | |
1339 If your terminal does not support display of the Latin-1 character | |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1340 set, Emacs can display these characters as @acronym{ASCII} sequences which at |
25829 | 1341 least give you a clear idea of what the characters are. To do this, |
1342 load the library @code{iso-ascii}. Similar libraries for other | |
1343 Latin-@var{n} character sets could be implemented, but we don't have | |
1344 them yet. | |
1345 | |
1346 @findex standard-display-8bit | |
1347 @cindex 8-bit display | |
38460
6bee7ffac2cd
Proofreading fixes from Chris Green <chris_e_green@yahoo.com>
Eli Zaretskii <eliz@gnu.org>
parents:
38133
diff
changeset
|
1348 Normally non-ISO-8859 characters (decimal codes between 128 and 159 |
25829 | 1349 inclusive) are displayed as octal escapes. You can change this for |
36185 | 1350 non-standard ``extended'' versions of ISO-8859 character sets by using the |
25829 | 1351 function @code{standard-display-8bit} in the @code{disp-table} library. |
1352 | |
60884
3d8f9fc6a5e8
(Single-Byte Character Support): Delete mention
Richard M. Stallman <rms@gnu.org>
parents:
60800
diff
changeset
|
1353 There are two ways to input single-byte non-@acronym{ASCII} |
25829 | 1354 characters: |
1355 | |
1356 @itemize @bullet | |
27211
0699f691fac1
Don't conflate single-byte with European.
Dave Love <fx@gnu.org>
parents:
27156
diff
changeset
|
1357 @cindex 8-bit input |
25829 | 1358 @item |
1359 You can use an input method for the selected language environment. | |
1360 @xref{Input Methods}. When you use an input method in a unibyte buffer, | |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1361 the non-@acronym{ASCII} character you specify with it is converted to unibyte. |
25829 | 1362 |
1363 @item | |
60884
3d8f9fc6a5e8
(Single-Byte Character Support): Delete mention
Richard M. Stallman <rms@gnu.org>
parents:
60800
diff
changeset
|
1364 If your keyboard can generate character codes 128 (decimal) and up, |
3d8f9fc6a5e8
(Single-Byte Character Support): Delete mention
Richard M. Stallman <rms@gnu.org>
parents:
60800
diff
changeset
|
1365 representing non-@acronym{ASCII} characters, you can type those character codes |
3d8f9fc6a5e8
(Single-Byte Character Support): Delete mention
Richard M. Stallman <rms@gnu.org>
parents:
60800
diff
changeset
|
1366 directly. |
25829 | 1367 |
60884
3d8f9fc6a5e8
(Single-Byte Character Support): Delete mention
Richard M. Stallman <rms@gnu.org>
parents:
60800
diff
changeset
|
1368 On a window system, you should not need to do anything special to use |
3d8f9fc6a5e8
(Single-Byte Character Support): Delete mention
Richard M. Stallman <rms@gnu.org>
parents:
60800
diff
changeset
|
1369 these keys; they should simply work. On a text-only terminal, you |
3d8f9fc6a5e8
(Single-Byte Character Support): Delete mention
Richard M. Stallman <rms@gnu.org>
parents:
60800
diff
changeset
|
1370 should use the command @code{M-x set-keyboard-coding-system} or the |
3d8f9fc6a5e8
(Single-Byte Character Support): Delete mention
Richard M. Stallman <rms@gnu.org>
parents:
60800
diff
changeset
|
1371 variable @code{keyboard-coding-system} to specify which coding system |
3d8f9fc6a5e8
(Single-Byte Character Support): Delete mention
Richard M. Stallman <rms@gnu.org>
parents:
60800
diff
changeset
|
1372 your keyboard uses (@pxref{Specify Coding}). Enabling this feature |
3d8f9fc6a5e8
(Single-Byte Character Support): Delete mention
Richard M. Stallman <rms@gnu.org>
parents:
60800
diff
changeset
|
1373 will probably require you to use @kbd{ESC} to type Meta characters; |
3d8f9fc6a5e8
(Single-Byte Character Support): Delete mention
Richard M. Stallman <rms@gnu.org>
parents:
60800
diff
changeset
|
1374 however, on a console terminal or in @code{xterm}, you can arrange for |
3d8f9fc6a5e8
(Single-Byte Character Support): Delete mention
Richard M. Stallman <rms@gnu.org>
parents:
60800
diff
changeset
|
1375 Meta to be converted to @kbd{ESC} and still be able type 8-bit |
3d8f9fc6a5e8
(Single-Byte Character Support): Delete mention
Richard M. Stallman <rms@gnu.org>
parents:
60800
diff
changeset
|
1376 characters present directly on the keyboard or using @kbd{Compose} or |
3d8f9fc6a5e8
(Single-Byte Character Support): Delete mention
Richard M. Stallman <rms@gnu.org>
parents:
60800
diff
changeset
|
1377 @kbd{AltGr} keys. @xref{User Input}. |
61122
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1378 |
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1379 @kindex C-x 8 |
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1380 @cindex @code{iso-transl} library |
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1381 @cindex compose character |
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1382 @cindex dead character |
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1383 @item |
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1384 For Latin-1 only, you can use the key @kbd{C-x 8} as a ``compose |
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1385 character'' prefix for entry of non-@acronym{ASCII} Latin-1 printing |
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1386 characters. @kbd{C-x 8} is good for insertion (in the minibuffer as |
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1387 well as other buffers), for searching, and in any other context where |
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1388 a key sequence is allowed. |
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1389 |
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1390 @kbd{C-x 8} works by loading the @code{iso-transl} library. Once that |
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1391 library is loaded, the @key{ALT} modifier key, if the keyboard has |
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1392 one, serves the same purpose as @kbd{C-x 8}: use @key{ALT} together |
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1393 with an accent character to modify the following letter. In addition, |
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1394 if the keyboard has keys for the Latin-1 ``dead accent characters,'' |
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1395 they too are defined to compose with the following character, once |
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1396 @code{iso-transl} is loaded. |
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1397 |
30ce20575d8b
(Single-Byte Character Support): Reinstall the C-x 8 info.
Richard M. Stallman <rms@gnu.org>
parents:
61097
diff
changeset
|
1398 Use @kbd{C-x 8 C-h} to list all the available @kbd{C-x 8} translations. |
25829 | 1399 @end itemize |
43439 | 1400 |
1401 @node Charsets | |
1402 @section Charsets | |
1403 @cindex charsets | |
1404 | |
1405 Emacs groups all supported characters into disjoint @dfn{charsets}. | |
1406 Each character code belongs to one and only one charset. For | |
1407 historical reasons, Emacs typically divides an 8-bit character code | |
52979
3649390c0f91
Replace @sc{ascii} and ASCII with @acronym{ASCII}.
Eli Zaretskii <eliz@gnu.org>
parents:
52401
diff
changeset
|
1408 for an extended version of @acronym{ASCII} into two charsets: @acronym{ASCII}, which |
43439 | 1409 covers the codes 0 through 127, plus another charset which covers the |
1410 ``right-hand part'' (the codes 128 and up). For instance, the | |
1411 characters of Latin-1 include the Emacs charset @code{ascii} plus the | |
1412 Emacs charset @code{latin-iso8859-1}. | |
1413 | |
1414 Emacs characters belonging to different charsets may look the same, | |
1415 but they are still different characters. For example, the letter | |
1416 @samp{o} with acute accent in charset @code{latin-iso8859-1}, used for | |
1417 Latin-1, is different from the letter @samp{o} with acute accent in | |
1418 charset @code{latin-iso8859-2}, used for Latin-2. | |
1419 | |
1420 @findex list-charset-chars | |
1421 @cindex characters in a certain charset | |
1422 @findex describe-character-set | |
1423 There are two commands for obtaining information about Emacs | |
1424 charsets. The command @kbd{M-x list-charset-chars} prompts for a name | |
1425 of a character set, and displays all the characters in that character | |
1426 set. The command @kbd{M-x describe-character-set} prompts for a | |
1427 charset name and displays information about that charset, including | |
1428 its internal representation within Emacs. | |
1429 | |
1430 To find out which charset a character in the buffer belongs to, | |
1431 put point before it and type @kbd{C-u C-x =}. | |
52401 | 1432 |
1433 @ignore | |
1434 arch-tag: 310ba60d-31ef-4ce7-91f1-f282dd57b6b3 | |
1435 @end ignore |