summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2016-12-16 10:49:31 +0200
committerEli Zaretskii <eliz@gnu.org>2016-12-16 10:49:31 +0200
commitb19fb4995efd7490527400c89becfcf2b6ed4b53 (patch)
treef1dc56e3307602d68cfe8b0c84f080cea4f1f822
parent467768f64ee109fe127619e75fee7f3b5de1fec1 (diff)
downloademacs-b19fb4995efd7490527400c89becfcf2b6ed4b53.tar.gz
Improve documentation of 'define-coding-system'
* lisp/international/mule.el (define-coding-system): Warn against possible infinite recursion in pre-write-conversion and post-read-conversion functions. (Bug#25203)
-rw-r--r--lisp/international/mule.el13
1 files changed, 11 insertions, 2 deletions
diff --git a/lisp/international/mule.el b/lisp/international/mule.el
index 21ab7e176d7..08d37b45a3d 100644
--- a/lisp/international/mule.el
+++ b/lisp/international/mule.el
@@ -713,7 +713,11 @@ decoded by the coding system itself and before any functions in
`after-insert-functions' are called. This function is passed one
argument: the number of characters in the text to convert, with
point at the start of the text. The function should leave point
-unchanged, and should return the new character count.
+unchanged, and should return the new character count. Note that
+this function should avoid reading from files or receiving text
+from subprocesses -- anything that could invoke decoding; if it
+must do so, it should bind `coding-system-for-read' to a value
+other than the current coding-system, to avoid infinite recursion.
`:pre-write-conversion'
@@ -722,7 +726,12 @@ VALUE must be a function to call after all functions in
called, and before the text is encoded by the coding system
itself. This function should convert the whole text in the
current buffer. For backward compatibility, this function is
-passed two arguments which can be ignored.
+passed two arguments which can be ignored. Note that this
+function should avoid writing to files or sending text to
+subprocesses -- anything that could invoke encoding; if it
+must do so, it should bind `coding-system-for-write' to a
+value other than the current coding-system, to avoid infinite
+recursion.
`:default-char'