Merge from emacs-23 branch.
[bpt/emacs.git] / doc / lispref / nonascii.texi
1 @c -*-texinfo-*-
2 @c This is part of the GNU Emacs Lisp Reference Manual.
3 @c Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004,
4 @c 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
5 @c See the file elisp.texi for copying conditions.
6 @setfilename ../../info/characters
7 @node Non-ASCII Characters, Searching and Matching, Text, Top
8 @chapter Non-@acronym{ASCII} Characters
9 @cindex multibyte characters
10 @cindex characters, multi-byte
11 @cindex non-@acronym{ASCII} characters
12
13 This chapter covers the special issues relating to characters and
14 how they are stored in strings and buffers.
15
16 @menu
17 * Text Representations:: How Emacs represents text.
18 * Converting Representations:: Converting unibyte to multibyte and vice versa.
19 * Selecting a Representation:: Treating a byte sequence as unibyte or multi.
20 * Character Codes:: How unibyte and multibyte relate to
21 codes of individual characters.
22 * Character Properties:: Character attributes that define their
23 behavior and handling.
24 * Character Sets:: The space of possible character codes
25 is divided into various character sets.
26 * Scanning Charsets:: Which character sets are used in a buffer?
27 * Translation of Characters:: Translation tables are used for conversion.
28 * Coding Systems:: Coding systems are conversions for saving files.
29 * Input Methods:: Input methods allow users to enter various
30 non-ASCII characters without special keyboards.
31 * Locales:: Interacting with the POSIX locale.
32 @end menu
33
34 @node Text Representations
35 @section Text Representations
36 @cindex text representation
37
38 Emacs buffers and strings support a large repertoire of characters
39 from many different scripts, allowing users to type and display text
40 in almost any known written language.
41
42 @cindex character codepoint
43 @cindex codespace
44 @cindex Unicode
45 To support this multitude of characters and scripts, Emacs closely
46 follows the @dfn{Unicode Standard}. The Unicode Standard assigns a
47 unique number, called a @dfn{codepoint}, to each and every character.
48 The range of codepoints defined by Unicode, or the Unicode
49 @dfn{codespace}, is @code{0..#x10FFFF} (in hexadecimal notation),
50 inclusive. Emacs extends this range with codepoints in the range
51 @code{#x110000..#x3FFFFF}, which it uses for representing characters
52 that are not unified with Unicode and @dfn{raw 8-bit bytes} that
53 cannot be interpreted as characters. Thus, a character codepoint in
54 Emacs is a 22-bit integer number.
55
56 @cindex internal representation of characters
57 @cindex characters, representation in buffers and strings
58 @cindex multibyte text
59 To conserve memory, Emacs does not hold fixed-length 22-bit numbers
60 that are codepoints of text characters within buffers and strings.
61 Rather, Emacs uses a variable-length internal representation of
62 characters, that stores each character as a sequence of 1 to 5 8-bit
63 bytes, depending on the magnitude of its codepoint@footnote{
64 This internal representation is based on one of the encodings defined
65 by the Unicode Standard, called @dfn{UTF-8}, for representing any
66 Unicode codepoint, but Emacs extends UTF-8 to represent the additional
67 codepoints it uses for raw 8-bit bytes and characters not unified with
68 Unicode.}. For example, any @acronym{ASCII} character takes up only 1
69 byte, a Latin-1 character takes up 2 bytes, etc. We call this
70 representation of text @dfn{multibyte}.
71
72 Outside Emacs, characters can be represented in many different
73 encodings, such as ISO-8859-1, GB-2312, Big-5, etc. Emacs converts
74 between these external encodings and its internal representation, as
75 appropriate, when it reads text into a buffer or a string, or when it
76 writes text to a disk file or passes it to some other process.
77
78 Occasionally, Emacs needs to hold and manipulate encoded text or
79 binary non-text data in its buffers or strings. For example, when
80 Emacs visits a file, it first reads the file's text verbatim into a
81 buffer, and only then converts it to the internal representation.
82 Before the conversion, the buffer holds encoded text.
83
84 @cindex unibyte text
85 Encoded text is not really text, as far as Emacs is concerned, but
86 rather a sequence of raw 8-bit bytes. We call buffers and strings
87 that hold encoded text @dfn{unibyte} buffers and strings, because
88 Emacs treats them as a sequence of individual bytes. Usually, Emacs
89 displays unibyte buffers and strings as octal codes such as
90 @code{\237}. We recommend that you never use unibyte buffers and
91 strings except for manipulating encoded text or binary non-text data.
92
93 In a buffer, the buffer-local value of the variable
94 @code{enable-multibyte-characters} specifies the representation used.
95 The representation for a string is determined and recorded in the string
96 when the string is constructed.
97
98 @defvar enable-multibyte-characters
99 This variable specifies the current buffer's text representation.
100 If it is non-@code{nil}, the buffer contains multibyte text; otherwise,
101 it contains unibyte encoded text or binary non-text data.
102
103 You cannot set this variable directly; instead, use the function
104 @code{set-buffer-multibyte} to change a buffer's representation.
105 @end defvar
106
107 @defun position-bytes position
108 Buffer positions are measured in character units. This function
109 returns the byte-position corresponding to buffer position
110 @var{position} in the current buffer. This is 1 at the start of the
111 buffer, and counts upward in bytes. If @var{position} is out of
112 range, the value is @code{nil}.
113 @end defun
114
115 @defun byte-to-position byte-position
116 Return the buffer position, in character units, corresponding to given
117 @var{byte-position} in the current buffer. If @var{byte-position} is
118 out of range, the value is @code{nil}. In a multibyte buffer, an
119 arbitrary value of @var{byte-position} can be not at character
120 boundary, but inside a multibyte sequence representing a single
121 character; in this case, this function returns the buffer position of
122 the character whose multibyte sequence includes @var{byte-position}.
123 In other words, the value does not change for all byte positions that
124 belong to the same character.
125 @end defun
126
127 @defun multibyte-string-p string
128 Return @code{t} if @var{string} is a multibyte string, @code{nil}
129 otherwise.
130 @end defun
131
132 @defun string-bytes string
133 @cindex string, number of bytes
134 This function returns the number of bytes in @var{string}.
135 If @var{string} is a multibyte string, this can be greater than
136 @code{(length @var{string})}.
137 @end defun
138
139 @defun unibyte-string &rest bytes
140 This function concatenates all its argument @var{bytes} and makes the
141 result a unibyte string.
142 @end defun
143
144 @node Converting Representations
145 @section Converting Text Representations
146
147 Emacs can convert unibyte text to multibyte; it can also convert
148 multibyte text to unibyte, provided that the multibyte text contains
149 only @acronym{ASCII} and 8-bit raw bytes. In general, these
150 conversions happen when inserting text into a buffer, or when putting
151 text from several strings together in one string. You can also
152 explicitly convert a string's contents to either representation.
153
154 Emacs chooses the representation for a string based on the text from
155 which it is constructed. The general rule is to convert unibyte text
156 to multibyte text when combining it with other multibyte text, because
157 the multibyte representation is more general and can hold whatever
158 characters the unibyte text has.
159
160 When inserting text into a buffer, Emacs converts the text to the
161 buffer's representation, as specified by
162 @code{enable-multibyte-characters} in that buffer. In particular, when
163 you insert multibyte text into a unibyte buffer, Emacs converts the text
164 to unibyte, even though this conversion cannot in general preserve all
165 the characters that might be in the multibyte text. The other natural
166 alternative, to convert the buffer contents to multibyte, is not
167 acceptable because the buffer's representation is a choice made by the
168 user that cannot be overridden automatically.
169
170 Converting unibyte text to multibyte text leaves @acronym{ASCII}
171 characters unchanged, and converts bytes with codes 128 through 159 to
172 the multibyte representation of raw eight-bit bytes.
173
174 Converting multibyte text to unibyte converts all @acronym{ASCII}
175 and eight-bit characters to their single-byte form, but loses
176 information for non-@acronym{ASCII} characters by discarding all but
177 the low 8 bits of each character's codepoint. Converting unibyte text
178 to multibyte and back to unibyte reproduces the original unibyte text.
179
180 The next two functions either return the argument @var{string}, or a
181 newly created string with no text properties.
182
183 @defun string-to-multibyte string
184 This function returns a multibyte string containing the same sequence
185 of characters as @var{string}. If @var{string} is a multibyte string,
186 it is returned unchanged. The function assumes that @var{string}
187 includes only @acronym{ASCII} characters and raw 8-bit bytes; the
188 latter are converted to their multibyte representation corresponding
189 to the codepoints @code{#x3FFF80} through @code{#x3FFFFF}, inclusive
190 (@pxref{Text Representations, codepoints}).
191 @end defun
192
193 @defun string-to-unibyte string
194 This function returns a unibyte string containing the same sequence of
195 characters as @var{string}. It signals an error if @var{string}
196 contains a non-@acronym{ASCII} character. If @var{string} is a
197 unibyte string, it is returned unchanged. Use this function for
198 @var{string} arguments that contain only @acronym{ASCII} and eight-bit
199 characters.
200 @end defun
201
202 @defun byte-to-string byte
203 @cindex byte to string
204 This function returns a unibyte string containing a single byte of
205 character data, @var{character}. It signals a error if
206 @var{character} is not an integer between 0 and 255.
207 @end defun
208
209 @defun multibyte-char-to-unibyte char
210 This converts the multibyte character @var{char} to a unibyte
211 character, and returns that character. If @var{char} is neither
212 @acronym{ASCII} nor eight-bit, the function returns -1.
213 @end defun
214
215 @defun unibyte-char-to-multibyte char
216 This convert the unibyte character @var{char} to a multibyte
217 character, assuming @var{char} is either @acronym{ASCII} or raw 8-bit
218 byte.
219 @end defun
220
221 @node Selecting a Representation
222 @section Selecting a Representation
223
224 Sometimes it is useful to examine an existing buffer or string as
225 multibyte when it was unibyte, or vice versa.
226
227 @defun set-buffer-multibyte multibyte
228 Set the representation type of the current buffer. If @var{multibyte}
229 is non-@code{nil}, the buffer becomes multibyte. If @var{multibyte}
230 is @code{nil}, the buffer becomes unibyte.
231
232 This function leaves the buffer contents unchanged when viewed as a
233 sequence of bytes. As a consequence, it can change the contents
234 viewed as characters; for instance, a sequence of three bytes which is
235 treated as one character in multibyte representation will count as
236 three characters in unibyte representation. Eight-bit characters
237 representing raw bytes are an exception. They are represented by one
238 byte in a unibyte buffer, but when the buffer is set to multibyte,
239 they are converted to two-byte sequences, and vice versa.
240
241 This function sets @code{enable-multibyte-characters} to record which
242 representation is in use. It also adjusts various data in the buffer
243 (including overlays, text properties and markers) so that they cover the
244 same text as they did before.
245
246 You cannot use @code{set-buffer-multibyte} on an indirect buffer,
247 because indirect buffers always inherit the representation of the
248 base buffer.
249 @end defun
250
251 @defun string-as-unibyte string
252 If @var{string} is already a unibyte string, this function returns
253 @var{string} itself. Otherwise, it returns a new string with the same
254 bytes as @var{string}, but treating each byte as a separate character
255 (so that the value may have more characters than @var{string}); as an
256 exception, each eight-bit character representing a raw byte is
257 converted into a single byte. The newly-created string contains no
258 text properties.
259 @end defun
260
261 @defun string-as-multibyte string
262 If @var{string} is a multibyte string, this function returns
263 @var{string} itself. Otherwise, it returns a new string with the same
264 bytes as @var{string}, but treating each multibyte sequence as one
265 character. This means that the value may have fewer characters than
266 @var{string} has. If a byte sequence in @var{string} is invalid as a
267 multibyte representation of a single character, each byte in the
268 sequence is treated as a raw 8-bit byte. The newly-created string
269 contains no text properties.
270 @end defun
271
272 @node Character Codes
273 @section Character Codes
274 @cindex character codes
275
276 The unibyte and multibyte text representations use different
277 character codes. The valid character codes for unibyte representation
278 range from 0 to @code{#xFF} (255)---the values that can fit in one
279 byte. The valid character codes for multibyte representation range
280 from 0 to @code{#x3FFFFF}. In this code space, values 0 through
281 @code{#x7F} (127) are for @acronym{ASCII} characters, and values
282 @code{#x80} (128) through @code{#x3FFF7F} (4194175) are for
283 non-@acronym{ASCII} characters.
284
285 Emacs character codes are a superset of the Unicode standard.
286 Values 0 through @code{#x10FFFF} (1114111) correspond to Unicode
287 characters of the same codepoint; values @code{#x110000} (1114112)
288 through @code{#x3FFF7F} (4194175) represent characters that are not
289 unified with Unicode; and values @code{#x3FFF80} (4194176) through
290 @code{#x3FFFFF} (4194303) represent eight-bit raw bytes.
291
292 @defun characterp charcode
293 This returns @code{t} if @var{charcode} is a valid character, and
294 @code{nil} otherwise.
295
296 @example
297 @group
298 (characterp 65)
299 @result{} t
300 @end group
301 @group
302 (characterp 4194303)
303 @result{} t
304 @end group
305 @group
306 (characterp 4194304)
307 @result{} nil
308 @end group
309 @end example
310 @end defun
311
312 @cindex maximum value of character codepoint
313 @cindex codepoint, largest value
314 @defun max-char
315 This function returns the largest value that a valid character
316 codepoint can have.
317
318 @example
319 @group
320 (characterp (max-char))
321 @result{} t
322 @end group
323 @group
324 (characterp (1+ (max-char)))
325 @result{} nil
326 @end group
327 @end example
328 @end defun
329
330 @defun get-byte &optional pos string
331 This function returns the byte at character position @var{pos} in the
332 current buffer. If the current buffer is unibyte, this is literally
333 the byte at that position. If the buffer is multibyte, byte values of
334 @acronym{ASCII} characters are the same as character codepoints,
335 whereas eight-bit raw bytes are converted to their 8-bit codes. The
336 function signals an error if the character at @var{pos} is
337 non-@acronym{ASCII}.
338
339 The optional argument @var{string} means to get a byte value from that
340 string instead of the current buffer.
341 @end defun
342
343 @node Character Properties
344 @section Character Properties
345 @cindex character properties
346 A @dfn{character property} is a named attribute of a character that
347 specifies how the character behaves and how it should be handled
348 during text processing and display. Thus, character properties are an
349 important part of specifying the character's semantics.
350
351 On the whole, Emacs follows the Unicode Standard in its implementation
352 of character properties. In particular, Emacs supports the
353 @uref{http://www.unicode.org/reports/tr23/, Unicode Character Property
354 Model}, and the Emacs character property database is derived from the
355 Unicode Character Database (@acronym{UCD}). See the
356 @uref{http://www.unicode.org/versions/Unicode5.0.0/ch04.pdf, Character
357 Properties chapter of the Unicode Standard}, for a detailed
358 description of Unicode character properties and their meaning. This
359 section assumes you are already familiar with that chapter of the
360 Unicode Standard, and want to apply that knowledge to Emacs Lisp
361 programs.
362
363 In Emacs, each property has a name, which is a symbol, and a set of
364 possible values, whose types depend on the property; if a character
365 does not have a certain property, the value is @code{nil}. As a
366 general rule, the names of character properties in Emacs are produced
367 from the corresponding Unicode properties by downcasing them and
368 replacing each @samp{_} character with a dash @samp{-}. For example,
369 @code{Canonical_Combining_Class} becomes
370 @code{canonical-combining-class}. However, sometimes we shorten the
371 names to make their use easier.
372
373 Here is the full list of value types for all the character
374 properties that Emacs knows about:
375
376 @table @code
377 @item name
378 This property corresponds to the Unicode @code{Name} property. The
379 value is a string consisting of upper-case Latin letters A to Z,
380 digits, spaces, and hyphen @samp{-} characters.
381
382 @cindex unicode general category
383 @item general-category
384 This property corresponds to the Unicode @code{General_Category}
385 property. The value is a symbol whose name is a 2-letter abbreviation
386 of the character's classification.
387
388 @item canonical-combining-class
389 Corresponds to the Unicode @code{Canonical_Combining_Class} property.
390 The value is an integer number.
391
392 @item bidi-class
393 Corresponds to the Unicode @code{Bidi_Class} property. The value is a
394 symbol whose name is the Unicode @dfn{directional type} of the
395 character.
396
397 @item decomposition
398 Corresponds to the Unicode @code{Decomposition_Type} and
399 @code{Decomposition_Value} properties. The value is a list, whose
400 first element may be a symbol representing a compatibility formatting
401 tag, such as @code{small}@footnote{
402 Note that the Unicode spec writes these tag names inside
403 @samp{<..>} brackets. The tag names in Emacs do not include the
404 brackets; e.g., Unicode specifies @samp{<small>} where Emacs uses
405 @samp{small}.
406 }; the other elements are characters that give the compatibility
407 decomposition sequence of this character.
408
409 @item decimal-digit-value
410 Corresponds to the Unicode @code{Numeric_Value} property for
411 characters whose @code{Numeric_Type} is @samp{Digit}. The value is an
412 integer number.
413
414 @item digit
415 Corresponds to the Unicode @code{Numeric_Value} property for
416 characters whose @code{Numeric_Type} is @samp{Decimal}. The value is
417 an integer number. Examples of such characters include compatibility
418 subscript and superscript digits, for which the value is the
419 corresponding number.
420
421 @item numeric-value
422 Corresponds to the Unicode @code{Numeric_Value} property for
423 characters whose @code{Numeric_Type} is @samp{Numeric}. The value of
424 this property is an integer or a floating-point number. Examples of
425 characters that have this property include fractions, subscripts,
426 superscripts, Roman numerals, currency numerators, and encircled
427 numbers. For example, the value of this property for the character
428 @code{U+2155} (@sc{vulgar fraction one fifth}) is @code{0.2}.
429
430 @item mirrored
431 Corresponds to the Unicode @code{Bidi_Mirrored} property. The value
432 of this property is a symbol, either @code{Y} or @code{N}.
433
434 @item old-name
435 Corresponds to the Unicode @code{Unicode_1_Name} property. The value
436 is a string.
437
438 @item iso-10646-comment
439 Corresponds to the Unicode @code{ISO_Comment} property. The value is
440 a string.
441
442 @item uppercase
443 Corresponds to the Unicode @code{Simple_Uppercase_Mapping} property.
444 The value of this property is a single character.
445
446 @item lowercase
447 Corresponds to the Unicode @code{Simple_Lowercase_Mapping} property.
448 The value of this property is a single character.
449
450 @item titlecase
451 Corresponds to the Unicode @code{Simple_Titlecase_Mapping} property.
452 @dfn{Title case} is a special form of a character used when the first
453 character of a word needs to be capitalized. The value of this
454 property is a single character.
455 @end table
456
457 @defun get-char-code-property char propname
458 This function returns the value of @var{char}'s @var{propname} property.
459
460 @example
461 @group
462 (get-char-code-property ? 'general-category)
463 @result{} Zs
464 @end group
465 @group
466 (get-char-code-property ?1 'general-category)
467 @result{} Nd
468 @end group
469 @group
470 (get-char-code-property ?\u2084 'digit-value) ; subscript 4
471 @result{} 4
472 @end group
473 @group
474 (get-char-code-property ?\u2155 'numeric-value) ; one fifth
475 @result{} 1/5
476 @end group
477 @group
478 (get-char-code-property ?\u2163 'numeric-value) ; Roman IV
479 @result{} \4
480 @end group
481 @end example
482 @end defun
483
484 @defun char-code-property-description prop value
485 This function returns the description string of property @var{prop}'s
486 @var{value}, or @code{nil} if @var{value} has no description.
487
488 @example
489 @group
490 (char-code-property-description 'general-category 'Zs)
491 @result{} "Separator, Space"
492 @end group
493 @group
494 (char-code-property-description 'general-category 'Nd)
495 @result{} "Number, Decimal Digit"
496 @end group
497 @group
498 (char-code-property-description 'numeric-value '1/5)
499 @result{} nil
500 @end group
501 @end example
502 @end defun
503
504 @defun put-char-code-property char propname value
505 This function stores @var{value} as the value of the property
506 @var{propname} for the character @var{char}.
507 @end defun
508
509 @defvar unicode-category-table
510 The value of this variable is a char-table (@pxref{Char-Tables}) that
511 specifies, for each character, its Unicode @code{General_Category}
512 property as a symbol.
513 @end defvar
514
515 @defvar char-script-table
516 The value of this variable is a char-table that specifies, for each
517 character, a symbol whose name is the script to which the character
518 belongs, according to the Unicode Standard classification of the
519 Unicode code space into script-specific blocks. This char-table has a
520 single extra slot whose value is the list of all script symbols.
521 @end defvar
522
523 @defvar char-width-table
524 The value of this variable is a char-table that specifies the width of
525 each character in columns that it will occupy on the screen.
526 @end defvar
527
528 @defvar printable-chars
529 The value of this variable is a char-table that specifies, for each
530 character, whether it is printable or not. That is, if evaluating
531 @code{(aref printable-chars char)} results in @code{t}, the character
532 is printable, and if it results in @code{nil}, it is not.
533 @end defvar
534
535 @node Character Sets
536 @section Character Sets
537 @cindex character sets
538
539 @cindex charset
540 @cindex coded character set
541 An Emacs @dfn{character set}, or @dfn{charset}, is a set of characters
542 in which each character is assigned a numeric code point. (The
543 Unicode Standard calls this a @dfn{coded character set}.) Each Emacs
544 charset has a name which is a symbol. A single character can belong
545 to any number of different character sets, but it will generally have
546 a different code point in each charset. Examples of character sets
547 include @code{ascii}, @code{iso-8859-1}, @code{greek-iso8859-7}, and
548 @code{windows-1255}. The code point assigned to a character in a
549 charset is usually different from its code point used in Emacs buffers
550 and strings.
551
552 @cindex @code{emacs}, a charset
553 @cindex @code{unicode}, a charset
554 @cindex @code{eight-bit}, a charset
555 Emacs defines several special character sets. The character set
556 @code{unicode} includes all the characters whose Emacs code points are
557 in the range @code{0..#x10FFFF}. The character set @code{emacs}
558 includes all @acronym{ASCII} and non-@acronym{ASCII} characters.
559 Finally, the @code{eight-bit} charset includes the 8-bit raw bytes;
560 Emacs uses it to represent raw bytes encountered in text.
561
562 @defun charsetp object
563 Returns @code{t} if @var{object} is a symbol that names a character set,
564 @code{nil} otherwise.
565 @end defun
566
567 @defvar charset-list
568 The value is a list of all defined character set names.
569 @end defvar
570
571 @defun charset-priority-list &optional highestp
572 This functions returns a list of all defined character sets ordered by
573 their priority. If @var{highestp} is non-@code{nil}, the function
574 returns a single character set of the highest priority.
575 @end defun
576
577 @defun set-charset-priority &rest charsets
578 This function makes @var{charsets} the highest priority character sets.
579 @end defun
580
581 @defun char-charset character &optional restriction
582 This function returns the name of the character set of highest
583 priority that @var{character} belongs to. @acronym{ASCII} characters
584 are an exception: for them, this function always returns @code{ascii}.
585
586 If @var{restriction} is non-@code{nil}, it should be a list of
587 charsets to search. Alternatively, it can be a coding system, in
588 which case the returned charset must be supported by that coding
589 system (@pxref{Coding Systems}).
590 @end defun
591
592 @defun charset-plist charset
593 This function returns the property list of the character set
594 @var{charset}. Although @var{charset} is a symbol, this is not the
595 same as the property list of that symbol. Charset properties include
596 important information about the charset, such as its documentation
597 string, short name, etc.
598 @end defun
599
600 @defun put-charset-property charset propname value
601 This function sets the @var{propname} property of @var{charset} to the
602 given @var{value}.
603 @end defun
604
605 @defun get-charset-property charset propname
606 This function returns the value of @var{charset}s property
607 @var{propname}.
608 @end defun
609
610 @deffn Command list-charset-chars charset
611 This command displays a list of characters in the character set
612 @var{charset}.
613 @end deffn
614
615 Emacs can convert between its internal representation of a character
616 and the character's codepoint in a specific charset. The following
617 two functions support these conversions.
618
619 @c FIXME: decode-char and encode-char accept and ignore an additional
620 @c argument @var{restriction}. When that argument actually makes a
621 @c difference, it should be documented here.
622 @defun decode-char charset code-point
623 This function decodes a character that is assigned a @var{code-point}
624 in @var{charset}, to the corresponding Emacs character, and returns
625 it. If @var{charset} doesn't contain a character of that code point,
626 the value is @code{nil}. If @var{code-point} doesn't fit in a Lisp
627 integer (@pxref{Integer Basics, most-positive-fixnum}), it can be
628 specified as a cons cell @code{(@var{high} . @var{low})}, where
629 @var{low} are the lower 16 bits of the value and @var{high} are the
630 high 16 bits.
631 @end defun
632
633 @defun encode-char char charset
634 This function returns the code point assigned to the character
635 @var{char} in @var{charset}. If the result does not fit in a Lisp
636 integer, it is returned as a cons cell @code{(@var{high} . @var{low})}
637 that fits the second argument of @code{decode-char} above. If
638 @var{charset} doesn't have a codepoint for @var{char}, the value is
639 @code{nil}.
640 @end defun
641
642 The following function comes in handy for applying a certain
643 function to all or part of the characters in a charset:
644
645 @defun map-charset-chars function charset &optional arg from-code to-code
646 Call @var{function} for characters in @var{charset}. @var{function}
647 is called with two arguments. The first one is a cons cell
648 @code{(@var{from} . @var{to})}, where @var{from} and @var{to}
649 indicate a range of characters contained in charset. The second
650 argument passed to @var{function} is @var{arg}.
651
652 By default, the range of codepoints passed to @var{function} includes
653 all the characters in @var{charset}, but optional arguments
654 @var{from-code} and @var{to-code} limit that to the range of
655 characters between these two codepoints of @var{charset}. If either
656 of them is @code{nil}, it defaults to the first or last codepoint of
657 @var{charset}, respectively.
658 @end defun
659
660 @node Scanning Charsets
661 @section Scanning for Character Sets
662
663 Sometimes it is useful to find out which character set a particular
664 character belongs to. One use for this is in determining which coding
665 systems (@pxref{Coding Systems}) are capable of representing all of
666 the text in question; another is to determine the font(s) for
667 displaying that text.
668
669 @defun charset-after &optional pos
670 This function returns the charset of highest priority containing the
671 character at position @var{pos} in the current buffer. If @var{pos}
672 is omitted or @code{nil}, it defaults to the current value of point.
673 If @var{pos} is out of range, the value is @code{nil}.
674 @end defun
675
676 @defun find-charset-region beg end &optional translation
677 This function returns a list of the character sets of highest priority
678 that contain characters in the current buffer between positions
679 @var{beg} and @var{end}.
680
681 The optional argument @var{translation} specifies a translation table
682 to use for scanning the text (@pxref{Translation of Characters}). If
683 it is non-@code{nil}, then each character in the region is translated
684 through this table, and the value returned describes the translated
685 characters instead of the characters actually in the buffer.
686 @end defun
687
688 @defun find-charset-string string &optional translation
689 This function returns a list of character sets of highest priority
690 that contain characters in @var{string}. It is just like
691 @code{find-charset-region}, except that it applies to the contents of
692 @var{string} instead of part of the current buffer.
693 @end defun
694
695 @node Translation of Characters
696 @section Translation of Characters
697 @cindex character translation tables
698 @cindex translation tables
699
700 A @dfn{translation table} is a char-table (@pxref{Char-Tables}) that
701 specifies a mapping of characters into characters. These tables are
702 used in encoding and decoding, and for other purposes. Some coding
703 systems specify their own particular translation tables; there are
704 also default translation tables which apply to all other coding
705 systems.
706
707 A translation table has two extra slots. The first is either
708 @code{nil} or a translation table that performs the reverse
709 translation; the second is the maximum number of characters to look up
710 for translating sequences of characters (see the description of
711 @code{make-translation-table-from-alist} below).
712
713 @defun make-translation-table &rest translations
714 This function returns a translation table based on the argument
715 @var{translations}. Each element of @var{translations} should be a
716 list of elements of the form @code{(@var{from} . @var{to})}; this says
717 to translate the character @var{from} into @var{to}.
718
719 The arguments and the forms in each argument are processed in order,
720 and if a previous form already translates @var{to} to some other
721 character, say @var{to-alt}, @var{from} is also translated to
722 @var{to-alt}.
723 @end defun
724
725 During decoding, the translation table's translations are applied to
726 the characters that result from ordinary decoding. If a coding system
727 has the property @code{:decode-translation-table}, that specifies the
728 translation table to use, or a list of translation tables to apply in
729 sequence. (This is a property of the coding system, as returned by
730 @code{coding-system-get}, not a property of the symbol that is the
731 coding system's name. @xref{Coding System Basics,, Basic Concepts of
732 Coding Systems}.) Finally, if
733 @code{standard-translation-table-for-decode} is non-@code{nil}, the
734 resulting characters are translated by that table.
735
736 During encoding, the translation table's translations are applied to
737 the characters in the buffer, and the result of translation is
738 actually encoded. If a coding system has property
739 @code{:encode-translation-table}, that specifies the translation table
740 to use, or a list of translation tables to apply in sequence. In
741 addition, if the variable @code{standard-translation-table-for-encode}
742 is non-@code{nil}, it specifies the translation table to use for
743 translating the result.
744
745 @defvar standard-translation-table-for-decode
746 This is the default translation table for decoding. If a coding
747 systems specifies its own translation tables, the table that is the
748 value of this variable, if non-@code{nil}, is applied after them.
749 @end defvar
750
751 @defvar standard-translation-table-for-encode
752 This is the default translation table for encoding. If a coding
753 systems specifies its own translation tables, the table that is the
754 value of this variable, if non-@code{nil}, is applied after them.
755 @end defvar
756
757 @defvar translation-table-for-input
758 Self-inserting characters are translated through this translation
759 table before they are inserted. Search commands also translate their
760 input through this table, so they can compare more reliably with
761 what's in the buffer.
762
763 This variable automatically becomes buffer-local when set.
764 @end defvar
765
766 @defun make-translation-table-from-vector vec
767 This function returns a translation table made from @var{vec} that is
768 an array of 256 elements to map bytes (values 0 through #xFF) to
769 characters. Elements may be @code{nil} for untranslated bytes. The
770 returned table has a translation table for reverse mapping in the
771 first extra slot, and the value @code{1} in the second extra slot.
772
773 This function provides an easy way to make a private coding system
774 that maps each byte to a specific character. You can specify the
775 returned table and the reverse translation table using the properties
776 @code{:decode-translation-table} and @code{:encode-translation-table}
777 respectively in the @var{props} argument to
778 @code{define-coding-system}.
779 @end defun
780
781 @defun make-translation-table-from-alist alist
782 This function is similar to @code{make-translation-table} but returns
783 a complex translation table rather than a simple one-to-one mapping.
784 Each element of @var{alist} is of the form @code{(@var{from}
785 . @var{to})}, where @var{from} and @var{to} are either characters or
786 vectors specifying a sequence of characters. If @var{from} is a
787 character, that character is translated to @var{to} (i.e.@: to a
788 character or a character sequence). If @var{from} is a vector of
789 characters, that sequence is translated to @var{to}. The returned
790 table has a translation table for reverse mapping in the first extra
791 slot, and the maximum length of all the @var{from} character sequences
792 in the second extra slot.
793 @end defun
794
795 @node Coding Systems
796 @section Coding Systems
797
798 @cindex coding system
799 When Emacs reads or writes a file, and when Emacs sends text to a
800 subprocess or receives text from a subprocess, it normally performs
801 character code conversion and end-of-line conversion as specified
802 by a particular @dfn{coding system}.
803
804 How to define a coding system is an arcane matter, and is not
805 documented here.
806
807 @menu
808 * Coding System Basics:: Basic concepts.
809 * Encoding and I/O:: How file I/O functions handle coding systems.
810 * Lisp and Coding Systems:: Functions to operate on coding system names.
811 * User-Chosen Coding Systems:: Asking the user to choose a coding system.
812 * Default Coding Systems:: Controlling the default choices.
813 * Specifying Coding Systems:: Requesting a particular coding system
814 for a single file operation.
815 * Explicit Encoding:: Encoding or decoding text without doing I/O.
816 * Terminal I/O Encoding:: Use of encoding for terminal I/O.
817 * MS-DOS File Types:: How DOS "text" and "binary" files
818 relate to coding systems.
819 @end menu
820
821 @node Coding System Basics
822 @subsection Basic Concepts of Coding Systems
823
824 @cindex character code conversion
825 @dfn{Character code conversion} involves conversion between the
826 internal representation of characters used inside Emacs and some other
827 encoding. Emacs supports many different encodings, in that it can
828 convert to and from them. For example, it can convert text to or from
829 encodings such as Latin 1, Latin 2, Latin 3, Latin 4, Latin 5, and
830 several variants of ISO 2022. In some cases, Emacs supports several
831 alternative encodings for the same characters; for example, there are
832 three coding systems for the Cyrillic (Russian) alphabet: ISO,
833 Alternativnyj, and KOI8.
834
835 Every coding system specifies a particular set of character code
836 conversions, but the coding system @code{undecided} is special: it
837 leaves the choice unspecified, to be chosen heuristically for each
838 file, based on the file's data.
839
840 In general, a coding system doesn't guarantee roundtrip identity:
841 decoding a byte sequence using coding system, then encoding the
842 resulting text in the same coding system, can produce a different byte
843 sequence. But some coding systems do guarantee that the byte sequence
844 will be the same as what you originally decoded. Here are a few
845 examples:
846
847 @quotation
848 iso-8859-1, utf-8, big5, shift_jis, euc-jp
849 @end quotation
850
851 Encoding buffer text and then decoding the result can also fail to
852 reproduce the original text. For instance, if you encode a character
853 with a coding system which does not support that character, the result
854 is unpredictable, and thus decoding it using the same coding system
855 may produce a different text. Currently, Emacs can't report errors
856 that result from encoding unsupported characters.
857
858 @cindex EOL conversion
859 @cindex end-of-line conversion
860 @cindex line end conversion
861 @dfn{End of line conversion} handles three different conventions
862 used on various systems for representing end of line in files. The
863 Unix convention, used on GNU and Unix systems, is to use the linefeed
864 character (also called newline). The DOS convention, used on
865 MS-Windows and MS-DOS systems, is to use a carriage-return and a
866 linefeed at the end of a line. The Mac convention is to use just
867 carriage-return.
868
869 @cindex base coding system
870 @cindex variant coding system
871 @dfn{Base coding systems} such as @code{latin-1} leave the end-of-line
872 conversion unspecified, to be chosen based on the data. @dfn{Variant
873 coding systems} such as @code{latin-1-unix}, @code{latin-1-dos} and
874 @code{latin-1-mac} specify the end-of-line conversion explicitly as
875 well. Most base coding systems have three corresponding variants whose
876 names are formed by adding @samp{-unix}, @samp{-dos} and @samp{-mac}.
877
878 @vindex raw-text@r{ coding system}
879 The coding system @code{raw-text} is special in that it prevents
880 character code conversion, and causes the buffer visited with this
881 coding system to be a unibyte buffer. For historical reasons, you can
882 save both unibyte and multibyte text with this coding system. When
883 you use @code{raw-text} to encode multibyte text, it does perform one
884 character code conversion: it converts eight-bit characters to their
885 single-byte external representation. @code{raw-text} does not specify
886 the end-of-line conversion, allowing that to be determined as usual by
887 the data, and has the usual three variants which specify the
888 end-of-line conversion.
889
890 @vindex no-conversion@r{ coding system}
891 @vindex binary@r{ coding system}
892 @code{no-conversion} (and its alias @code{binary}) is equivalent to
893 @code{raw-text-unix}: it specifies no conversion of either character
894 codes or end-of-line.
895
896 @vindex emacs-internal@r{ coding system}
897 @vindex utf-8-emacs@r{ coding system}
898 The coding system @code{utf-8-emacs} specifies that the data is
899 represented in the internal Emacs encoding (@pxref{Text
900 Representations}). This is like @code{raw-text} in that no code
901 conversion happens, but different in that the result is multibyte
902 data. The name @code{emacs-internal} is an alias for
903 @code{utf-8-emacs}.
904
905 @defun coding-system-get coding-system property
906 This function returns the specified property of the coding system
907 @var{coding-system}. Most coding system properties exist for internal
908 purposes, but one that you might find useful is @code{:mime-charset}.
909 That property's value is the name used in MIME for the character coding
910 which this coding system can read and write. Examples:
911
912 @example
913 (coding-system-get 'iso-latin-1 :mime-charset)
914 @result{} iso-8859-1
915 (coding-system-get 'iso-2022-cn :mime-charset)
916 @result{} iso-2022-cn
917 (coding-system-get 'cyrillic-koi8 :mime-charset)
918 @result{} koi8-r
919 @end example
920
921 The value of the @code{:mime-charset} property is also defined
922 as an alias for the coding system.
923 @end defun
924
925 @defun coding-system-aliases coding-system
926 This function returns the list of aliases of @var{coding-system}.
927 @end defun
928
929 @node Encoding and I/O
930 @subsection Encoding and I/O
931
932 The principal purpose of coding systems is for use in reading and
933 writing files. The function @code{insert-file-contents} uses a coding
934 system to decode the file data, and @code{write-region} uses one to
935 encode the buffer contents.
936
937 You can specify the coding system to use either explicitly
938 (@pxref{Specifying Coding Systems}), or implicitly using a default
939 mechanism (@pxref{Default Coding Systems}). But these methods may not
940 completely specify what to do. For example, they may choose a coding
941 system such as @code{undefined} which leaves the character code
942 conversion to be determined from the data. In these cases, the I/O
943 operation finishes the job of choosing a coding system. Very often
944 you will want to find out afterwards which coding system was chosen.
945
946 @defvar buffer-file-coding-system
947 This buffer-local variable records the coding system used for saving the
948 buffer and for writing part of the buffer with @code{write-region}. If
949 the text to be written cannot be safely encoded using the coding system
950 specified by this variable, these operations select an alternative
951 encoding by calling the function @code{select-safe-coding-system}
952 (@pxref{User-Chosen Coding Systems}). If selecting a different encoding
953 requires to ask the user to specify a coding system,
954 @code{buffer-file-coding-system} is updated to the newly selected coding
955 system.
956
957 @code{buffer-file-coding-system} does @emph{not} affect sending text
958 to a subprocess.
959 @end defvar
960
961 @defvar save-buffer-coding-system
962 This variable specifies the coding system for saving the buffer (by
963 overriding @code{buffer-file-coding-system}). Note that it is not used
964 for @code{write-region}.
965
966 When a command to save the buffer starts out to use
967 @code{buffer-file-coding-system} (or @code{save-buffer-coding-system}),
968 and that coding system cannot handle
969 the actual text in the buffer, the command asks the user to choose
970 another coding system (by calling @code{select-safe-coding-system}).
971 After that happens, the command also updates
972 @code{buffer-file-coding-system} to represent the coding system that
973 the user specified.
974 @end defvar
975
976 @defvar last-coding-system-used
977 I/O operations for files and subprocesses set this variable to the
978 coding system name that was used. The explicit encoding and decoding
979 functions (@pxref{Explicit Encoding}) set it too.
980
981 @strong{Warning:} Since receiving subprocess output sets this variable,
982 it can change whenever Emacs waits; therefore, you should copy the
983 value shortly after the function call that stores the value you are
984 interested in.
985 @end defvar
986
987 The variable @code{selection-coding-system} specifies how to encode
988 selections for the window system. @xref{Window System Selections}.
989
990 @defvar file-name-coding-system
991 The variable @code{file-name-coding-system} specifies the coding
992 system to use for encoding file names. Emacs encodes file names using
993 that coding system for all file operations. If
994 @code{file-name-coding-system} is @code{nil}, Emacs uses a default
995 coding system determined by the selected language environment. In the
996 default language environment, any non-@acronym{ASCII} characters in
997 file names are not encoded specially; they appear in the file system
998 using the internal Emacs representation.
999 @end defvar
1000
1001 @strong{Warning:} if you change @code{file-name-coding-system} (or
1002 the language environment) in the middle of an Emacs session, problems
1003 can result if you have already visited files whose names were encoded
1004 using the earlier coding system and are handled differently under the
1005 new coding system. If you try to save one of these buffers under the
1006 visited file name, saving may use the wrong file name, or it may get
1007 an error. If such a problem happens, use @kbd{C-x C-w} to specify a
1008 new file name for that buffer.
1009
1010 @node Lisp and Coding Systems
1011 @subsection Coding Systems in Lisp
1012
1013 Here are the Lisp facilities for working with coding systems:
1014
1015 @cindex list all coding systems
1016 @defun coding-system-list &optional base-only
1017 This function returns a list of all coding system names (symbols). If
1018 @var{base-only} is non-@code{nil}, the value includes only the
1019 base coding systems. Otherwise, it includes alias and variant coding
1020 systems as well.
1021 @end defun
1022
1023 @defun coding-system-p object
1024 This function returns @code{t} if @var{object} is a coding system
1025 name or @code{nil}.
1026 @end defun
1027
1028 @cindex validity of coding system
1029 @cindex coding system, validity check
1030 @defun check-coding-system coding-system
1031 This function checks the validity of @var{coding-system}. If that is
1032 valid, it returns @var{coding-system}. If @var{coding-system} is
1033 @code{nil}, the function return @code{nil}. For any other values, it
1034 signals an error whose @code{error-symbol} is @code{coding-system-error}
1035 (@pxref{Signaling Errors, signal}).
1036 @end defun
1037
1038 @cindex eol type of coding system
1039 @defun coding-system-eol-type coding-system
1040 This function returns the type of end-of-line (a.k.a.@: @dfn{eol})
1041 conversion used by @var{coding-system}. If @var{coding-system}
1042 specifies a certain eol conversion, the return value is an integer 0,
1043 1, or 2, standing for @code{unix}, @code{dos}, and @code{mac},
1044 respectively. If @var{coding-system} doesn't specify eol conversion
1045 explicitly, the return value is a vector of coding systems, each one
1046 with one of the possible eol conversion types, like this:
1047
1048 @lisp
1049 (coding-system-eol-type 'latin-1)
1050 @result{} [latin-1-unix latin-1-dos latin-1-mac]
1051 @end lisp
1052
1053 @noindent
1054 If this function returns a vector, Emacs will decide, as part of the
1055 text encoding or decoding process, what eol conversion to use. For
1056 decoding, the end-of-line format of the text is auto-detected, and the
1057 eol conversion is set to match it (e.g., DOS-style CRLF format will
1058 imply @code{dos} eol conversion). For encoding, the eol conversion is
1059 taken from the appropriate default coding system (e.g.,
1060 default value of @code{buffer-file-coding-system} for
1061 @code{buffer-file-coding-system}), or from the default eol conversion
1062 appropriate for the underlying platform.
1063 @end defun
1064
1065 @cindex eol conversion of coding system
1066 @defun coding-system-change-eol-conversion coding-system eol-type
1067 This function returns a coding system which is like @var{coding-system}
1068 except for its eol conversion, which is specified by @code{eol-type}.
1069 @var{eol-type} should be @code{unix}, @code{dos}, @code{mac}, or
1070 @code{nil}. If it is @code{nil}, the returned coding system determines
1071 the end-of-line conversion from the data.
1072
1073 @var{eol-type} may also be 0, 1 or 2, standing for @code{unix},
1074 @code{dos} and @code{mac}, respectively.
1075 @end defun
1076
1077 @cindex text conversion of coding system
1078 @defun coding-system-change-text-conversion eol-coding text-coding
1079 This function returns a coding system which uses the end-of-line
1080 conversion of @var{eol-coding}, and the text conversion of
1081 @var{text-coding}. If @var{text-coding} is @code{nil}, it returns
1082 @code{undecided}, or one of its variants according to @var{eol-coding}.
1083 @end defun
1084
1085 @cindex safely encode region
1086 @cindex coding systems for encoding region
1087 @defun find-coding-systems-region from to
1088 This function returns a list of coding systems that could be used to
1089 encode a text between @var{from} and @var{to}. All coding systems in
1090 the list can safely encode any multibyte characters in that portion of
1091 the text.
1092
1093 If the text contains no multibyte characters, the function returns the
1094 list @code{(undecided)}.
1095 @end defun
1096
1097 @cindex safely encode a string
1098 @cindex coding systems for encoding a string
1099 @defun find-coding-systems-string string
1100 This function returns a list of coding systems that could be used to
1101 encode the text of @var{string}. All coding systems in the list can
1102 safely encode any multibyte characters in @var{string}. If the text
1103 contains no multibyte characters, this returns the list
1104 @code{(undecided)}.
1105 @end defun
1106
1107 @cindex charset, coding systems to encode
1108 @cindex safely encode characters in a charset
1109 @defun find-coding-systems-for-charsets charsets
1110 This function returns a list of coding systems that could be used to
1111 encode all the character sets in the list @var{charsets}.
1112 @end defun
1113
1114 @defun check-coding-systems-region start end coding-system-list
1115 This function checks whether coding systems in the list
1116 @code{coding-system-list} can encode all the characters in the region
1117 between @var{start} and @var{end}. If all of the coding systems in
1118 the list can encode the specified text, the function returns
1119 @code{nil}. If some coding systems cannot encode some of the
1120 characters, the value is an alist, each element of which has the form
1121 @code{(@var{coding-system1} @var{pos1} @var{pos2} @dots{})}, meaning
1122 that @var{coding-system1} cannot encode characters at buffer positions
1123 @var{pos1}, @var{pos2}, @enddots{}.
1124
1125 @var{start} may be a string, in which case @var{end} is ignored and
1126 the returned value references string indices instead of buffer
1127 positions.
1128 @end defun
1129
1130 @defun detect-coding-region start end &optional highest
1131 This function chooses a plausible coding system for decoding the text
1132 from @var{start} to @var{end}. This text should be a byte sequence,
1133 i.e.@: unibyte text or multibyte text with only @acronym{ASCII} and
1134 eight-bit characters (@pxref{Explicit Encoding}).
1135
1136 Normally this function returns a list of coding systems that could
1137 handle decoding the text that was scanned. They are listed in order of
1138 decreasing priority. But if @var{highest} is non-@code{nil}, then the
1139 return value is just one coding system, the one that is highest in
1140 priority.
1141
1142 If the region contains only @acronym{ASCII} characters except for such
1143 ISO-2022 control characters ISO-2022 as @code{ESC}, the value is
1144 @code{undecided} or @code{(undecided)}, or a variant specifying
1145 end-of-line conversion, if that can be deduced from the text.
1146
1147 If the region contains null bytes, the value is @code{no-conversion},
1148 even if the region contains text encoded in some coding system.
1149 @end defun
1150
1151 @defun detect-coding-string string &optional highest
1152 This function is like @code{detect-coding-region} except that it
1153 operates on the contents of @var{string} instead of bytes in the buffer.
1154 @end defun
1155
1156 @cindex null bytes, and decoding text
1157 @defvar inhibit-null-byte-detection
1158 If this variable has a non-@code{nil} value, null bytes are ignored
1159 when detecting the encoding of a region or a string. This allows to
1160 correctly detect the encoding of text that contains null bytes, such
1161 as Info files with Index nodes.
1162 @end defvar
1163
1164 @defvar inhibit-iso-escape-detection
1165 If this variable has a non-@code{nil} value, ISO-2022 escape sequences
1166 are ignored when detecting the encoding of a region or a string. The
1167 result is that no text is ever detected as encoded in some ISO-2022
1168 encoding, and all escape sequences become visible in a buffer.
1169 @strong{Warning:} @emph{Use this variable with extreme caution,
1170 because many files in the Emacs distribution use ISO-2022 encoding.}
1171 @end defvar
1172
1173 @cindex charsets supported by a coding system
1174 @defun coding-system-charset-list coding-system
1175 This function returns the list of character sets (@pxref{Character
1176 Sets}) supported by @var{coding-system}. Some coding systems that
1177 support too many character sets to list them all yield special values:
1178 @itemize @bullet
1179 @item
1180 If @var{coding-system} supports all the ISO-2022 charsets, the value
1181 is @code{iso-2022}.
1182 @item
1183 If @var{coding-system} supports all Emacs characters, the value is
1184 @code{(emacs)}.
1185 @item
1186 If @var{coding-system} supports all emacs-mule characters, the value
1187 is @code{emacs-mule}.
1188 @item
1189 If @var{coding-system} supports all Unicode characters, the value is
1190 @code{(unicode)}.
1191 @end itemize
1192 @end defun
1193
1194 @xref{Coding systems for a subprocess,, Process Information}, in
1195 particular the description of the functions
1196 @code{process-coding-system} and @code{set-process-coding-system}, for
1197 how to examine or set the coding systems used for I/O to a subprocess.
1198
1199 @node User-Chosen Coding Systems
1200 @subsection User-Chosen Coding Systems
1201
1202 @cindex select safe coding system
1203 @defun select-safe-coding-system from to &optional default-coding-system accept-default-p file
1204 This function selects a coding system for encoding specified text,
1205 asking the user to choose if necessary. Normally the specified text
1206 is the text in the current buffer between @var{from} and @var{to}. If
1207 @var{from} is a string, the string specifies the text to encode, and
1208 @var{to} is ignored.
1209
1210 If the specified text includes raw bytes (@pxref{Text
1211 Representations}), @code{select-safe-coding-system} suggests
1212 @code{raw-text} for its encoding.
1213
1214 If @var{default-coding-system} is non-@code{nil}, that is the first
1215 coding system to try; if that can handle the text,
1216 @code{select-safe-coding-system} returns that coding system. It can
1217 also be a list of coding systems; then the function tries each of them
1218 one by one. After trying all of them, it next tries the current
1219 buffer's value of @code{buffer-file-coding-system} (if it is not
1220 @code{undecided}), then the default value of
1221 @code{buffer-file-coding-system} and finally the user's most
1222 preferred coding system, which the user can set using the command
1223 @code{prefer-coding-system} (@pxref{Recognize Coding,, Recognizing
1224 Coding Systems, emacs, The GNU Emacs Manual}).
1225
1226 If one of those coding systems can safely encode all the specified
1227 text, @code{select-safe-coding-system} chooses it and returns it.
1228 Otherwise, it asks the user to choose from a list of coding systems
1229 which can encode all the text, and returns the user's choice.
1230
1231 @var{default-coding-system} can also be a list whose first element is
1232 t and whose other elements are coding systems. Then, if no coding
1233 system in the list can handle the text, @code{select-safe-coding-system}
1234 queries the user immediately, without trying any of the three
1235 alternatives described above.
1236
1237 The optional argument @var{accept-default-p}, if non-@code{nil},
1238 should be a function to determine whether a coding system selected
1239 without user interaction is acceptable. @code{select-safe-coding-system}
1240 calls this function with one argument, the base coding system of the
1241 selected coding system. If @var{accept-default-p} returns @code{nil},
1242 @code{select-safe-coding-system} rejects the silently selected coding
1243 system, and asks the user to select a coding system from a list of
1244 possible candidates.
1245
1246 @vindex select-safe-coding-system-accept-default-p
1247 If the variable @code{select-safe-coding-system-accept-default-p} is
1248 non-@code{nil}, it should be a function taking a single argument.
1249 It is used in place of @var{accept-default-p}, overriding any
1250 value supplied for this argument.
1251
1252 As a final step, before returning the chosen coding system,
1253 @code{select-safe-coding-system} checks whether that coding system is
1254 consistent with what would be selected if the contents of the region
1255 were read from a file. (If not, this could lead to data corruption in
1256 a file subsequently re-visited and edited.) Normally,
1257 @code{select-safe-coding-system} uses @code{buffer-file-name} as the
1258 file for this purpose, but if @var{file} is non-@code{nil}, it uses
1259 that file instead (this can be relevant for @code{write-region} and
1260 similar functions). If it detects an apparent inconsistency,
1261 @code{select-safe-coding-system} queries the user before selecting the
1262 coding system.
1263 @end defun
1264
1265 Here are two functions you can use to let the user specify a coding
1266 system, with completion. @xref{Completion}.
1267
1268 @defun read-coding-system prompt &optional default
1269 This function reads a coding system using the minibuffer, prompting with
1270 string @var{prompt}, and returns the coding system name as a symbol. If
1271 the user enters null input, @var{default} specifies which coding system
1272 to return. It should be a symbol or a string.
1273 @end defun
1274
1275 @defun read-non-nil-coding-system prompt
1276 This function reads a coding system using the minibuffer, prompting with
1277 string @var{prompt}, and returns the coding system name as a symbol. If
1278 the user tries to enter null input, it asks the user to try again.
1279 @xref{Coding Systems}.
1280 @end defun
1281
1282 @node Default Coding Systems
1283 @subsection Default Coding Systems
1284 @cindex default coding system
1285 @cindex coding system, automatically determined
1286
1287 This section describes variables that specify the default coding
1288 system for certain files or when running certain subprograms, and the
1289 function that I/O operations use to access them.
1290
1291 The idea of these variables is that you set them once and for all to the
1292 defaults you want, and then do not change them again. To specify a
1293 particular coding system for a particular operation in a Lisp program,
1294 don't change these variables; instead, override them using
1295 @code{coding-system-for-read} and @code{coding-system-for-write}
1296 (@pxref{Specifying Coding Systems}).
1297
1298 @cindex file contents, and default coding system
1299 @defopt auto-coding-regexp-alist
1300 This variable is an alist of text patterns and corresponding coding
1301 systems. Each element has the form @code{(@var{regexp}
1302 . @var{coding-system})}; a file whose first few kilobytes match
1303 @var{regexp} is decoded with @var{coding-system} when its contents are
1304 read into a buffer. The settings in this alist take priority over
1305 @code{coding:} tags in the files and the contents of
1306 @code{file-coding-system-alist} (see below). The default value is set
1307 so that Emacs automatically recognizes mail files in Babyl format and
1308 reads them with no code conversions.
1309 @end defopt
1310
1311 @cindex file name, and default coding system
1312 @defopt file-coding-system-alist
1313 This variable is an alist that specifies the coding systems to use for
1314 reading and writing particular files. Each element has the form
1315 @code{(@var{pattern} . @var{coding})}, where @var{pattern} is a regular
1316 expression that matches certain file names. The element applies to file
1317 names that match @var{pattern}.
1318
1319 The @sc{cdr} of the element, @var{coding}, should be either a coding
1320 system, a cons cell containing two coding systems, or a function name (a
1321 symbol with a function definition). If @var{coding} is a coding system,
1322 that coding system is used for both reading the file and writing it. If
1323 @var{coding} is a cons cell containing two coding systems, its @sc{car}
1324 specifies the coding system for decoding, and its @sc{cdr} specifies the
1325 coding system for encoding.
1326
1327 If @var{coding} is a function name, the function should take one
1328 argument, a list of all arguments passed to
1329 @code{find-operation-coding-system}. It must return a coding system
1330 or a cons cell containing two coding systems. This value has the same
1331 meaning as described above.
1332
1333 If @var{coding} (or what returned by the above function) is
1334 @code{undecided}, the normal code-detection is performed.
1335 @end defopt
1336
1337 @defopt auto-coding-alist
1338 This variable is an alist that specifies the coding systems to use for
1339 reading and writing particular files. Its form is like that of
1340 @code{file-coding-system-alist}, but, unlike the latter, this variable
1341 takes priority over any @code{coding:} tags in the file.
1342 @end defopt
1343
1344 @cindex program name, and default coding system
1345 @defvar process-coding-system-alist
1346 This variable is an alist specifying which coding systems to use for a
1347 subprocess, depending on which program is running in the subprocess. It
1348 works like @code{file-coding-system-alist}, except that @var{pattern} is
1349 matched against the program name used to start the subprocess. The coding
1350 system or systems specified in this alist are used to initialize the
1351 coding systems used for I/O to the subprocess, but you can specify
1352 other coding systems later using @code{set-process-coding-system}.
1353 @end defvar
1354
1355 @strong{Warning:} Coding systems such as @code{undecided}, which
1356 determine the coding system from the data, do not work entirely reliably
1357 with asynchronous subprocess output. This is because Emacs handles
1358 asynchronous subprocess output in batches, as it arrives. If the coding
1359 system leaves the character code conversion unspecified, or leaves the
1360 end-of-line conversion unspecified, Emacs must try to detect the proper
1361 conversion from one batch at a time, and this does not always work.
1362
1363 Therefore, with an asynchronous subprocess, if at all possible, use a
1364 coding system which determines both the character code conversion and
1365 the end of line conversion---that is, one like @code{latin-1-unix},
1366 rather than @code{undecided} or @code{latin-1}.
1367
1368 @cindex port number, and default coding system
1369 @cindex network service name, and default coding system
1370 @defvar network-coding-system-alist
1371 This variable is an alist that specifies the coding system to use for
1372 network streams. It works much like @code{file-coding-system-alist},
1373 with the difference that the @var{pattern} in an element may be either a
1374 port number or a regular expression. If it is a regular expression, it
1375 is matched against the network service name used to open the network
1376 stream.
1377 @end defvar
1378
1379 @defvar default-process-coding-system
1380 This variable specifies the coding systems to use for subprocess (and
1381 network stream) input and output, when nothing else specifies what to
1382 do.
1383
1384 The value should be a cons cell of the form @code{(@var{input-coding}
1385 . @var{output-coding})}. Here @var{input-coding} applies to input from
1386 the subprocess, and @var{output-coding} applies to output to it.
1387 @end defvar
1388
1389 @cindex default coding system, functions to determine
1390 @defopt auto-coding-functions
1391 This variable holds a list of functions that try to determine a
1392 coding system for a file based on its undecoded contents.
1393
1394 Each function in this list should be written to look at text in the
1395 current buffer, but should not modify it in any way. The buffer will
1396 contain undecoded text of parts of the file. Each function should
1397 take one argument, @var{size}, which tells it how many characters to
1398 look at, starting from point. If the function succeeds in determining
1399 a coding system for the file, it should return that coding system.
1400 Otherwise, it should return @code{nil}.
1401
1402 If a file has a @samp{coding:} tag, that takes precedence, so these
1403 functions won't be called.
1404 @end defopt
1405
1406 @defun find-auto-coding filename size
1407 This function tries to determine a suitable coding system for
1408 @var{filename}. It examines the buffer visiting the named file, using
1409 the variables documented above in sequence, until it finds a match for
1410 one of the rules specified by these variables. It then returns a cons
1411 cell of the form @code{(@var{coding} . @var{source})}, where
1412 @var{coding} is the coding system to use and @var{source} is a symbol,
1413 one of @code{auto-coding-alist}, @code{auto-coding-regexp-alist},
1414 @code{:coding}, or @code{auto-coding-functions}, indicating which one
1415 supplied the matching rule. The value @code{:coding} means the coding
1416 system was specified by the @code{coding:} tag in the file
1417 (@pxref{Specify Coding,, coding tag, emacs, The GNU Emacs Manual}).
1418 The order of looking for a matching rule is @code{auto-coding-alist}
1419 first, then @code{auto-coding-regexp-alist}, then the @code{coding:}
1420 tag, and lastly @code{auto-coding-functions}. If no matching rule was
1421 found, the function returns @code{nil}.
1422
1423 The second argument @var{size} is the size of text, in characters,
1424 following point. The function examines text only within @var{size}
1425 characters after point. Normally, the buffer should be positioned at
1426 the beginning when this function is called, because one of the places
1427 for the @code{coding:} tag is the first one or two lines of the file;
1428 in that case, @var{size} should be the size of the buffer.
1429 @end defun
1430
1431 @defun set-auto-coding filename size
1432 This function returns a suitable coding system for file
1433 @var{filename}. It uses @code{find-auto-coding} to find the coding
1434 system. If no coding system could be determined, the function returns
1435 @code{nil}. The meaning of the argument @var{size} is like in
1436 @code{find-auto-coding}.
1437 @end defun
1438
1439 @defun find-operation-coding-system operation &rest arguments
1440 This function returns the coding system to use (by default) for
1441 performing @var{operation} with @var{arguments}. The value has this
1442 form:
1443
1444 @example
1445 (@var{decoding-system} . @var{encoding-system})
1446 @end example
1447
1448 The first element, @var{decoding-system}, is the coding system to use
1449 for decoding (in case @var{operation} does decoding), and
1450 @var{encoding-system} is the coding system for encoding (in case
1451 @var{operation} does encoding).
1452
1453 The argument @var{operation} is a symbol, one of @code{write-region},
1454 @code{start-process}, @code{call-process}, @code{call-process-region},
1455 @code{insert-file-contents}, or @code{open-network-stream}. These are
1456 the names of the Emacs I/O primitives that can do character code and
1457 eol conversion.
1458
1459 The remaining arguments should be the same arguments that might be given
1460 to the corresponding I/O primitive. Depending on the primitive, one
1461 of those arguments is selected as the @dfn{target}. For example, if
1462 @var{operation} does file I/O, whichever argument specifies the file
1463 name is the target. For subprocess primitives, the process name is the
1464 target. For @code{open-network-stream}, the target is the service name
1465 or port number.
1466
1467 Depending on @var{operation}, this function looks up the target in
1468 @code{file-coding-system-alist}, @code{process-coding-system-alist},
1469 or @code{network-coding-system-alist}. If the target is found in the
1470 alist, @code{find-operation-coding-system} returns its association in
1471 the alist; otherwise it returns @code{nil}.
1472
1473 If @var{operation} is @code{insert-file-contents}, the argument
1474 corresponding to the target may be a cons cell of the form
1475 @code{(@var{filename} . @var{buffer})}). In that case, @var{filename}
1476 is a file name to look up in @code{file-coding-system-alist}, and
1477 @var{buffer} is a buffer that contains the file's contents (not yet
1478 decoded). If @code{file-coding-system-alist} specifies a function to
1479 call for this file, and that function needs to examine the file's
1480 contents (as it usually does), it should examine the contents of
1481 @var{buffer} instead of reading the file.
1482 @end defun
1483
1484 @node Specifying Coding Systems
1485 @subsection Specifying a Coding System for One Operation
1486
1487 You can specify the coding system for a specific operation by binding
1488 the variables @code{coding-system-for-read} and/or
1489 @code{coding-system-for-write}.
1490
1491 @defvar coding-system-for-read
1492 If this variable is non-@code{nil}, it specifies the coding system to
1493 use for reading a file, or for input from a synchronous subprocess.
1494
1495 It also applies to any asynchronous subprocess or network stream, but in
1496 a different way: the value of @code{coding-system-for-read} when you
1497 start the subprocess or open the network stream specifies the input
1498 decoding method for that subprocess or network stream. It remains in
1499 use for that subprocess or network stream unless and until overridden.
1500
1501 The right way to use this variable is to bind it with @code{let} for a
1502 specific I/O operation. Its global value is normally @code{nil}, and
1503 you should not globally set it to any other value. Here is an example
1504 of the right way to use the variable:
1505
1506 @example
1507 ;; @r{Read the file with no character code conversion.}
1508 ;; @r{Assume @acronym{crlf} represents end-of-line.}
1509 (let ((coding-system-for-read 'emacs-mule-dos))
1510 (insert-file-contents filename))
1511 @end example
1512
1513 When its value is non-@code{nil}, this variable takes precedence over
1514 all other methods of specifying a coding system to use for input,
1515 including @code{file-coding-system-alist},
1516 @code{process-coding-system-alist} and
1517 @code{network-coding-system-alist}.
1518 @end defvar
1519
1520 @defvar coding-system-for-write
1521 This works much like @code{coding-system-for-read}, except that it
1522 applies to output rather than input. It affects writing to files,
1523 as well as sending output to subprocesses and net connections.
1524
1525 When a single operation does both input and output, as do
1526 @code{call-process-region} and @code{start-process}, both
1527 @code{coding-system-for-read} and @code{coding-system-for-write}
1528 affect it.
1529 @end defvar
1530
1531 @defopt inhibit-eol-conversion
1532 When this variable is non-@code{nil}, no end-of-line conversion is done,
1533 no matter which coding system is specified. This applies to all the
1534 Emacs I/O and subprocess primitives, and to the explicit encoding and
1535 decoding functions (@pxref{Explicit Encoding}).
1536 @end defopt
1537
1538 @cindex priority order of coding systems
1539 @cindex coding systems, priority
1540 Sometimes, you need to prefer several coding systems for some
1541 operation, rather than fix a single one. Emacs lets you specify a
1542 priority order for using coding systems. This ordering affects the
1543 sorting of lists of coding sysems returned by functions such as
1544 @code{find-coding-systems-region} (@pxref{Lisp and Coding Systems}).
1545
1546 @defun coding-system-priority-list &optional highestp
1547 This function returns the list of coding systems in the order of their
1548 current priorities. Optional argument @var{highestp}, if
1549 non-@code{nil}, means return only the highest priority coding system.
1550 @end defun
1551
1552 @defun set-coding-system-priority &rest coding-systems
1553 This function puts @var{coding-systems} at the beginning of the
1554 priority list for coding systems, thus making their priority higher
1555 than all the rest.
1556 @end defun
1557
1558 @defmac with-coding-priority coding-systems &rest body@dots{}
1559 This macro execute @var{body}, like @code{progn} does
1560 (@pxref{Sequencing, progn}), with @var{coding-systems} at the front of
1561 the priority list for coding systems. @var{coding-systems} should be
1562 a list of coding systems to prefer during execution of @var{body}.
1563 @end defmac
1564
1565 @node Explicit Encoding
1566 @subsection Explicit Encoding and Decoding
1567 @cindex encoding in coding systems
1568 @cindex decoding in coding systems
1569
1570 All the operations that transfer text in and out of Emacs have the
1571 ability to use a coding system to encode or decode the text.
1572 You can also explicitly encode and decode text using the functions
1573 in this section.
1574
1575 The result of encoding, and the input to decoding, are not ordinary
1576 text. They logically consist of a series of byte values; that is, a
1577 series of @acronym{ASCII} and eight-bit characters. In unibyte
1578 buffers and strings, these characters have codes in the range 0
1579 through #xFF (255). In a multibyte buffer or string, eight-bit
1580 characters have character codes higher than #xFF (@pxref{Text
1581 Representations}), but Emacs transparently converts them to their
1582 single-byte values when you encode or decode such text.
1583
1584 The usual way to read a file into a buffer as a sequence of bytes, so
1585 you can decode the contents explicitly, is with
1586 @code{insert-file-contents-literally} (@pxref{Reading from Files});
1587 alternatively, specify a non-@code{nil} @var{rawfile} argument when
1588 visiting a file with @code{find-file-noselect}. These methods result in
1589 a unibyte buffer.
1590
1591 The usual way to use the byte sequence that results from explicitly
1592 encoding text is to copy it to a file or process---for example, to write
1593 it with @code{write-region} (@pxref{Writing to Files}), and suppress
1594 encoding by binding @code{coding-system-for-write} to
1595 @code{no-conversion}.
1596
1597 Here are the functions to perform explicit encoding or decoding. The
1598 encoding functions produce sequences of bytes; the decoding functions
1599 are meant to operate on sequences of bytes. All of these functions
1600 discard text properties. They also set @code{last-coding-system-used}
1601 to the precise coding system they used.
1602
1603 @deffn Command encode-coding-region start end coding-system &optional destination
1604 This command encodes the text from @var{start} to @var{end} according
1605 to coding system @var{coding-system}. Normally, the encoded text
1606 replaces the original text in the buffer, but the optional argument
1607 @var{destination} can change that. If @var{destination} is a buffer,
1608 the encoded text is inserted in that buffer after point (point does
1609 not move); if it is @code{t}, the command returns the encoded text as
1610 a unibyte string without inserting it.
1611
1612 If encoded text is inserted in some buffer, this command returns the
1613 length of the encoded text.
1614
1615 The result of encoding is logically a sequence of bytes, but the
1616 buffer remains multibyte if it was multibyte before, and any 8-bit
1617 bytes are converted to their multibyte representation (@pxref{Text
1618 Representations}).
1619
1620 @cindex @code{undecided} coding-system, when encoding
1621 Do @emph{not} use @code{undecided} for @var{coding-system} when
1622 encoding text, since that may lead to unexpected results. Instead,
1623 use @code{select-safe-coding-system} (@pxref{User-Chosen Coding
1624 Systems, select-safe-coding-system}) to suggest a suitable encoding,
1625 if there's no obvious pertinent value for @var{coding-system}.
1626 @end deffn
1627
1628 @defun encode-coding-string string coding-system &optional nocopy buffer
1629 This function encodes the text in @var{string} according to coding
1630 system @var{coding-system}. It returns a new string containing the
1631 encoded text, except when @var{nocopy} is non-@code{nil}, in which
1632 case the function may return @var{string} itself if the encoding
1633 operation is trivial. The result of encoding is a unibyte string.
1634 @end defun
1635
1636 @deffn Command decode-coding-region start end coding-system &optional destination
1637 This command decodes the text from @var{start} to @var{end} according
1638 to coding system @var{coding-system}. To make explicit decoding
1639 useful, the text before decoding ought to be a sequence of byte
1640 values, but both multibyte and unibyte buffers are acceptable (in the
1641 multibyte case, the raw byte values should be represented as eight-bit
1642 characters). Normally, the decoded text replaces the original text in
1643 the buffer, but the optional argument @var{destination} can change
1644 that. If @var{destination} is a buffer, the decoded text is inserted
1645 in that buffer after point (point does not move); if it is @code{t},
1646 the command returns the decoded text as a multibyte string without
1647 inserting it.
1648
1649 If decoded text is inserted in some buffer, this command returns the
1650 length of the decoded text.
1651
1652 This command puts a @code{charset} text property on the decoded text.
1653 The value of the property states the character set used to decode the
1654 original text.
1655 @end deffn
1656
1657 @defun decode-coding-string string coding-system &optional nocopy buffer
1658 This function decodes the text in @var{string} according to
1659 @var{coding-system}. It returns a new string containing the decoded
1660 text, except when @var{nocopy} is non-@code{nil}, in which case the
1661 function may return @var{string} itself if the decoding operation is
1662 trivial. To make explicit decoding useful, the contents of
1663 @var{string} ought to be a unibyte string with a sequence of byte
1664 values, but a multibyte string is also acceptable (assuming it
1665 contains 8-bit bytes in their multibyte form).
1666
1667 If optional argument @var{buffer} specifies a buffer, the decoded text
1668 is inserted in that buffer after point (point does not move). In this
1669 case, the return value is the length of the decoded text.
1670
1671 @cindex @code{charset}, text property
1672 This function puts a @code{charset} text property on the decoded text.
1673 The value of the property states the character set used to decode the
1674 original text:
1675
1676 @example
1677 @group
1678 (decode-coding-string "Gr\374ss Gott" 'latin-1)
1679 @result{} #("Gr@"uss Gott" 0 9 (charset iso-8859-1))
1680 @end group
1681 @end example
1682 @end defun
1683
1684 @defun decode-coding-inserted-region from to filename &optional visit beg end replace
1685 This function decodes the text from @var{from} to @var{to} as if
1686 it were being read from file @var{filename} using @code{insert-file-contents}
1687 using the rest of the arguments provided.
1688
1689 The normal way to use this function is after reading text from a file
1690 without decoding, if you decide you would rather have decoded it.
1691 Instead of deleting the text and reading it again, this time with
1692 decoding, you can call this function.
1693 @end defun
1694
1695 @node Terminal I/O Encoding
1696 @subsection Terminal I/O Encoding
1697
1698 Emacs can decode keyboard input using a coding system, and encode
1699 terminal output. This is useful for terminals that transmit or
1700 display text using a particular encoding such as Latin-1. Emacs does
1701 not set @code{last-coding-system-used} for encoding or decoding of
1702 terminal I/O.
1703
1704 @defun keyboard-coding-system &optional terminal
1705 This function returns the coding system that is in use for decoding
1706 keyboard input from @var{terminal}---or @code{nil} if no coding system
1707 is to be used for that terminal. If @var{terminal} is omitted or
1708 @code{nil}, it means the selected frame's terminal. @xref{Multiple
1709 Terminals}.
1710 @end defun
1711
1712 @deffn Command set-keyboard-coding-system coding-system &optional terminal
1713 This command specifies @var{coding-system} as the coding system to use
1714 for decoding keyboard input from @var{terminal}. If
1715 @var{coding-system} is @code{nil}, that means do not decode keyboard
1716 input. If @var{terminal} is a frame, it means that frame's terminal;
1717 if it is @code{nil}, that means the currently selected frame's
1718 terminal. @xref{Multiple Terminals}.
1719 @end deffn
1720
1721 @defun terminal-coding-system &optional terminal
1722 This function returns the coding system that is in use for encoding
1723 terminal output from @var{terminal}---or @code{nil} if the output is
1724 not encoded. If @var{terminal} is a frame, it means that frame's
1725 terminal; if it is @code{nil}, that means the currently selected
1726 frame's terminal.
1727 @end defun
1728
1729 @deffn Command set-terminal-coding-system coding-system &optional terminal
1730 This command specifies @var{coding-system} as the coding system to use
1731 for encoding terminal output from @var{terminal}. If
1732 @var{coding-system} is @code{nil}, terminal output is not encoded. If
1733 @var{terminal} is a frame, it means that frame's terminal; if it is
1734 @code{nil}, that means the currently selected frame's terminal.
1735 @end deffn
1736
1737 @node MS-DOS File Types
1738 @subsection MS-DOS File Types
1739 @cindex DOS file types
1740 @cindex MS-DOS file types
1741 @cindex Windows file types
1742 @cindex file types on MS-DOS and Windows
1743 @cindex text files and binary files
1744 @cindex binary files and text files
1745
1746 On MS-DOS and Microsoft Windows, Emacs guesses the appropriate
1747 end-of-line conversion for a file by looking at the file's name. This
1748 feature classifies files as @dfn{text files} and @dfn{binary files}. By
1749 ``binary file'' we mean a file of literal byte values that are not
1750 necessarily meant to be characters; Emacs does no end-of-line conversion
1751 and no character code conversion for them. On the other hand, the bytes
1752 in a text file are intended to represent characters; when you create a
1753 new file whose name implies that it is a text file, Emacs uses DOS
1754 end-of-line conversion.
1755
1756 @defvar buffer-file-type
1757 This variable, automatically buffer-local in each buffer, records the
1758 file type of the buffer's visited file. When a buffer does not specify
1759 a coding system with @code{buffer-file-coding-system}, this variable is
1760 used to determine which coding system to use when writing the contents
1761 of the buffer. It should be @code{nil} for text, @code{t} for binary.
1762 If it is @code{t}, the coding system is @code{no-conversion}.
1763 Otherwise, @code{undecided-dos} is used.
1764
1765 Normally this variable is set by visiting a file; it is set to
1766 @code{nil} if the file was visited without any actual conversion.
1767
1768 Its default value is used to decide how to handle files for which
1769 @code{file-name-buffer-file-type-alist} says nothing about the type:
1770 If the default value is non-@code{nil}, then these files are treated as
1771 binary: the coding system @code{no-conversion} is used. Otherwise,
1772 nothing special is done for them---the coding system is deduced solely
1773 from the file contents, in the usual Emacs fashion.
1774 @end defvar
1775
1776 @defopt file-name-buffer-file-type-alist
1777 This variable holds an alist for recognizing text and binary files.
1778 Each element has the form (@var{regexp} . @var{type}), where
1779 @var{regexp} is matched against the file name, and @var{type} may be
1780 @code{nil} for text, @code{t} for binary, or a function to call to
1781 compute which. If it is a function, then it is called with a single
1782 argument (the file name) and should return @code{t} or @code{nil}.
1783
1784 When running on MS-DOS or MS-Windows, Emacs checks this alist to decide
1785 which coding system to use when reading a file. For a text file,
1786 @code{undecided-dos} is used. For a binary file, @code{no-conversion}
1787 is used.
1788
1789 If no element in this alist matches a given file name, then
1790 the default value of @code{buffer-file-type} says how to treat the file.
1791 @end defopt
1792
1793 @node Input Methods
1794 @section Input Methods
1795 @cindex input methods
1796
1797 @dfn{Input methods} provide convenient ways of entering non-@acronym{ASCII}
1798 characters from the keyboard. Unlike coding systems, which translate
1799 non-@acronym{ASCII} characters to and from encodings meant to be read by
1800 programs, input methods provide human-friendly commands. (@xref{Input
1801 Methods,,, emacs, The GNU Emacs Manual}, for information on how users
1802 use input methods to enter text.) How to define input methods is not
1803 yet documented in this manual, but here we describe how to use them.
1804
1805 Each input method has a name, which is currently a string;
1806 in the future, symbols may also be usable as input method names.
1807
1808 @defvar current-input-method
1809 This variable holds the name of the input method now active in the
1810 current buffer. (It automatically becomes local in each buffer when set
1811 in any fashion.) It is @code{nil} if no input method is active in the
1812 buffer now.
1813 @end defvar
1814
1815 @defopt default-input-method
1816 This variable holds the default input method for commands that choose an
1817 input method. Unlike @code{current-input-method}, this variable is
1818 normally global.
1819 @end defopt
1820
1821 @deffn Command set-input-method input-method
1822 This command activates input method @var{input-method} for the current
1823 buffer. It also sets @code{default-input-method} to @var{input-method}.
1824 If @var{input-method} is @code{nil}, this command deactivates any input
1825 method for the current buffer.
1826 @end deffn
1827
1828 @defun read-input-method-name prompt &optional default inhibit-null
1829 This function reads an input method name with the minibuffer, prompting
1830 with @var{prompt}. If @var{default} is non-@code{nil}, that is returned
1831 by default, if the user enters empty input. However, if
1832 @var{inhibit-null} is non-@code{nil}, empty input signals an error.
1833
1834 The returned value is a string.
1835 @end defun
1836
1837 @defvar input-method-alist
1838 This variable defines all the supported input methods.
1839 Each element defines one input method, and should have the form:
1840
1841 @example
1842 (@var{input-method} @var{language-env} @var{activate-func}
1843 @var{title} @var{description} @var{args}...)
1844 @end example
1845
1846 Here @var{input-method} is the input method name, a string;
1847 @var{language-env} is another string, the name of the language
1848 environment this input method is recommended for. (That serves only for
1849 documentation purposes.)
1850
1851 @var{activate-func} is a function to call to activate this method. The
1852 @var{args}, if any, are passed as arguments to @var{activate-func}. All
1853 told, the arguments to @var{activate-func} are @var{input-method} and
1854 the @var{args}.
1855
1856 @var{title} is a string to display in the mode line while this method is
1857 active. @var{description} is a string describing this method and what
1858 it is good for.
1859 @end defvar
1860
1861 The fundamental interface to input methods is through the
1862 variable @code{input-method-function}. @xref{Reading One Event},
1863 and @ref{Invoking the Input Method}.
1864
1865 @node Locales
1866 @section Locales
1867 @cindex locale
1868
1869 POSIX defines a concept of ``locales'' which control which language
1870 to use in language-related features. These Emacs variables control
1871 how Emacs interacts with these features.
1872
1873 @defvar locale-coding-system
1874 @cindex keyboard input decoding on X
1875 This variable specifies the coding system to use for decoding system
1876 error messages and---on X Window system only---keyboard input, for
1877 encoding the format argument to @code{format-time-string}, and for
1878 decoding the return value of @code{format-time-string}.
1879 @end defvar
1880
1881 @defvar system-messages-locale
1882 This variable specifies the locale to use for generating system error
1883 messages. Changing the locale can cause messages to come out in a
1884 different language or in a different orthography. If the variable is
1885 @code{nil}, the locale is specified by environment variables in the
1886 usual POSIX fashion.
1887 @end defvar
1888
1889 @defvar system-time-locale
1890 This variable specifies the locale to use for formatting time values.
1891 Changing the locale can cause messages to appear according to the
1892 conventions of a different language. If the variable is @code{nil}, the
1893 locale is specified by environment variables in the usual POSIX fashion.
1894 @end defvar
1895
1896 @defun locale-info item
1897 This function returns locale data @var{item} for the current POSIX
1898 locale, if available. @var{item} should be one of these symbols:
1899
1900 @table @code
1901 @item codeset
1902 Return the character set as a string (locale item @code{CODESET}).
1903
1904 @item days
1905 Return a 7-element vector of day names (locale items
1906 @code{DAY_1} through @code{DAY_7});
1907
1908 @item months
1909 Return a 12-element vector of month names (locale items @code{MON_1}
1910 through @code{MON_12}).
1911
1912 @item paper
1913 Return a list @code{(@var{width} @var{height})} for the default paper
1914 size measured in millimeters (locale items @code{PAPER_WIDTH} and
1915 @code{PAPER_HEIGHT}).
1916 @end table
1917
1918 If the system can't provide the requested information, or if
1919 @var{item} is not one of those symbols, the value is @code{nil}. All
1920 strings in the return value are decoded using
1921 @code{locale-coding-system}. @xref{Locales,,, libc, The GNU Libc Manual},
1922 for more information about locales and locale items.
1923 @end defun
1924
1925 @ignore
1926 arch-tag: be705bf8-941b-4c35-84fc-ad7d20ddb7cb
1927 @end ignore