mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-22 07:09:54 +00:00
Improve documentation of coding-systems
* doc/lispref/nonascii.texi (Coding System Basics): Mention 'prefer-utf-8'. Index it and 'undecided'. (Encoding and I/O): Fix a typo. (User-Chosen Coding Systems): Improve the documentation of ACCEPT-DEFAULT-P argument to select-safe-coding-system. Document select-safe-coding-system-function. (Specifying Coding Systems): Document coding-system-require-warning.
This commit is contained in:
parent
c2fd04c8d5
commit
0e35405a92
@ -1002,10 +1002,14 @@ alternative encodings for the same characters; for example, there are
|
||||
three coding systems for the Cyrillic (Russian) alphabet: ISO,
|
||||
Alternativnyj, and KOI8.
|
||||
|
||||
@vindex undecided@r{ coding system}
|
||||
@vindex prefer-utf-8@r{ coding system}
|
||||
Every coding system specifies a particular set of character code
|
||||
conversions, but the coding system @code{undecided} is special: it
|
||||
leaves the choice unspecified, to be chosen heuristically for each
|
||||
file, based on the file's data.
|
||||
file, based on the file's data. The coding system @code{prefer-utf-8}
|
||||
is like @code{undecided}, but it prefers to choose @code{utf-8} when
|
||||
possible.
|
||||
|
||||
In general, a coding system doesn't guarantee roundtrip identity:
|
||||
decoding a byte sequence using coding system, then encoding the
|
||||
@ -1109,7 +1113,7 @@ encode the buffer contents.
|
||||
(@pxref{Specifying Coding Systems}), or implicitly using a default
|
||||
mechanism (@pxref{Default Coding Systems}). But these methods may not
|
||||
completely specify what to do. For example, they may choose a coding
|
||||
system such as @code{undefined} which leaves the character code
|
||||
system such as @code{undecided} which leaves the character code
|
||||
conversion to be determined from the data. In these cases, the I/O
|
||||
operation finishes the job of choosing a coding system. Very often
|
||||
you will want to find out afterwards which coding system was chosen.
|
||||
@ -1411,19 +1415,21 @@ Otherwise, it asks the user to choose from a list of coding systems
|
||||
which can encode all the text, and returns the user's choice.
|
||||
|
||||
@var{default-coding-system} can also be a list whose first element is
|
||||
t and whose other elements are coding systems. Then, if no coding
|
||||
@code{t} and whose other elements are coding systems. Then, if no coding
|
||||
system in the list can handle the text, @code{select-safe-coding-system}
|
||||
queries the user immediately, without trying any of the three
|
||||
alternatives described above.
|
||||
alternatives described above. This is handy for checking only the
|
||||
coding systems in the list.
|
||||
|
||||
The optional argument @var{accept-default-p}, if non-@code{nil},
|
||||
should be a function to determine whether a coding system selected
|
||||
without user interaction is acceptable. @code{select-safe-coding-system}
|
||||
calls this function with one argument, the base coding system of the
|
||||
selected coding system. If @var{accept-default-p} returns @code{nil},
|
||||
@code{select-safe-coding-system} rejects the silently selected coding
|
||||
system, and asks the user to select a coding system from a list of
|
||||
possible candidates.
|
||||
The optional argument @var{accept-default-p} determines whether a
|
||||
coding system selected without user interaction is acceptable. If
|
||||
it's omitted or @code{nil}, such a silent selection is always
|
||||
acceptable. If it is non-@code{nil}, it should be a function;
|
||||
@code{select-safe-coding-system} calls this function with one
|
||||
argument, the base coding system of the selected coding system. If
|
||||
the function returns @code{nil}, @code{select-safe-coding-system}
|
||||
rejects the silently selected coding system, and asks the user to
|
||||
select a coding system from a list of possible candidates.
|
||||
|
||||
@vindex select-safe-coding-system-accept-default-p
|
||||
If the variable @code{select-safe-coding-system-accept-default-p} is
|
||||
@ -1444,6 +1450,18 @@ similar functions). If it detects an apparent inconsistency,
|
||||
coding system.
|
||||
@end defun
|
||||
|
||||
@defvar select-safe-coding-system-function
|
||||
This variable names the function to be called to request the user to
|
||||
select a proper coding system for encoding text when the default
|
||||
coding system for an output operation cannot safely encode that text.
|
||||
The default value of this variable is @code{select-safe-coding-system}.
|
||||
Emacs primitives that write text to files, such as
|
||||
@code{write-region}, or send text to other processes, such as
|
||||
@code{process-send-region}, normally call the value of this variable,
|
||||
unless @code{coding-system-for-write} is bound to a non-@code{nil}
|
||||
value (@pxref{Specifying Coding Systems}).
|
||||
@end defvar
|
||||
|
||||
Here are two functions you can use to let the user specify a coding
|
||||
system, with completion. @xref{Completion}.
|
||||
|
||||
@ -1704,7 +1722,9 @@ including @code{file-coding-system-alist},
|
||||
@defvar coding-system-for-write
|
||||
This works much like @code{coding-system-for-read}, except that it
|
||||
applies to output rather than input. It affects writing to files,
|
||||
as well as sending output to subprocesses and net connections.
|
||||
as well as sending output to subprocesses and net connections. It
|
||||
also applies to encoding command-line arguments with which Emacs
|
||||
invokes subprocesses.
|
||||
|
||||
When a single operation does both input and output, as do
|
||||
@code{call-process-region} and @code{start-process}, both
|
||||
@ -1712,6 +1732,23 @@ When a single operation does both input and output, as do
|
||||
affect it.
|
||||
@end defvar
|
||||
|
||||
@defvar coding-system-require-warning
|
||||
Binding @code{coding-system-for-write} to a non-@code{nil} value
|
||||
prevents output primitives from calling the function specified by
|
||||
@code{select-safe-coding-system-function} (@pxref{User-Chosen Coding
|
||||
Systems}). This is because @kbd{C-x RET c}
|
||||
(@code{universal-coding-system-argument}) works by binding
|
||||
@code{coding-system-for-write}, and Emacs should obey user selection.
|
||||
If a Lisp program binds @code{coding-system-for-write} to a value that
|
||||
might not be safe for encoding the text to be written, it can also bind
|
||||
@code{coding-system-require-warning} to a non-@code{nil} value, which
|
||||
will force the output primitives to check the encoding by calling the
|
||||
value of @code{select-safe-coding-system-function} even though
|
||||
@code{coding-system-for-write} is non-@code{nil}. Alternatively, call
|
||||
@code{select-safe-coding-system} explicitly before using the specified
|
||||
encoding.
|
||||
@end defvar
|
||||
|
||||
@defopt inhibit-eol-conversion
|
||||
When this variable is non-@code{nil}, no end-of-line conversion is done,
|
||||
no matter which coding system is specified. This applies to all the
|
||||
|
Loading…
Reference in New Issue
Block a user