Default Coding Systems
----------------------
This section describes variables that specify the default coding
system for certain files or when running certain subprograms, and the
function that I/O operations use to access them.
The idea of these variables is that you set them once and for all to
the defaults you want, and then do not change them again. To specify a
particular coding system for a particular operation in a Lisp program,
don't change these variables; instead, override them using
`coding-system-for-read' and `coding-system-for-write' (Note:Specifying Coding Systems).
- Variable: auto-coding-regexp-alist
This variable is an alist of text patterns and corresponding coding
systems. Each element has the form `(REGEXP . CODING-SYSTEM)'; a
file whose first few kilobytes match REGEXP is decoded with
CODING-SYSTEM when its contents are read into a buffer. The
settings in this alist take priority over `coding:' tags in the
files and the contents of `file-coding-system-alist' (see below).
The default value is set so that Emacs automatically recognizes
mail files in Babyl format and reads them with no code conversions.
- Variable: file-coding-system-alist
This variable is an alist that specifies the coding systems to use
for reading and writing particular files. Each element has the
form `(PATTERN . CODING)', where PATTERN is a regular expression
that matches certain file names. The element applies to file
names that match PATTERN.
The CDR of the element, CODING, should be either a coding system,
a cons cell containing two coding systems, or a function name (a
symbol with a function definition). If CODING is a coding system,
that coding system is used for both reading the file and writing
it. If CODING is a cons cell containing two coding systems, its
CAR specifies the coding system for decoding, and its CDR
specifies the coding system for encoding.
If CODING is a function name, the function must return a coding
system or a cons cell containing two coding systems. This value
is used as described above.
- Variable: process-coding-system-alist
This variable is an alist specifying which coding systems to use
for a subprocess, depending on which program is running in the
subprocess. It works like `file-coding-system-alist', except that
PATTERN is matched against the program name used to start the
subprocess. The coding system or systems specified in this alist
are used to initialize the coding systems used for I/O to the
subprocess, but you can specify other coding systems later using
`set-process-coding-system'.
*Warning:* Coding systems such as `undecided', which determine the
coding system from the data, do not work entirely reliably with
asynchronous subprocess output. This is because Emacs handles
asynchronous subprocess output in batches, as it arrives. If the coding
system leaves the character code conversion unspecified, or leaves the
end-of-line conversion unspecified, Emacs must try to detect the proper
conversion from one batch at a time, and this does not always work.
Therefore, with an asynchronous subprocess, if at all possible, use a
coding system which determines both the character code conversion and
the end of line conversion--that is, one like `latin-1-unix', rather
than `undecided' or `latin-1'.
- Variable: network-coding-system-alist
This variable is an alist that specifies the coding system to use
for network streams. It works much like
`file-coding-system-alist', with the difference that the PATTERN
in an element may be either a port number or a regular expression.
If it is a regular expression, it is matched against the network
service name used to open the network stream.
- Variable: default-process-coding-system
This variable specifies the coding systems to use for subprocess
(and network stream) input and output, when nothing else specifies
what to do.
The value should be a cons cell of the form `(INPUT-CODING .
OUTPUT-CODING)'. Here INPUT-CODING applies to input from the
subprocess, and OUTPUT-CODING applies to output to it.
- Function: find-operation-coding-system operation &rest arguments
This function returns the coding system to use (by default) for
performing OPERATION with ARGUMENTS. The value has this form:
(DECODING-SYSTEM ENCODING-SYSTEM)
The first element, DECODING-SYSTEM, is the coding system to use
for decoding (in case OPERATION does decoding), and
ENCODING-SYSTEM is the coding system for encoding (in case
OPERATION does encoding).
The argument OPERATION should be a symbol, one of
`insert-file-contents', `write-region', `call-process',
`call-process-region', `start-process', or `open-network-stream'.
These are the names of the Emacs I/O primitives that can do coding
system conversion.
The remaining arguments should be the same arguments that might be
given to that I/O primitive. Depending on the primitive, one of
those arguments is selected as the "target". For example, if
OPERATION does file I/O, whichever argument specifies the file
name is the target. For subprocess primitives, the process name
is the target. For `open-network-stream', the target is the
service name or port number.
This function looks up the target in `file-coding-system-alist',
`process-coding-system-alist', or `network-coding-system-alist',
depending on OPERATION. Note:Default Coding Systems.