aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKatsumi Yamaoka2010-05-10 07:25:27 +0000
committerKatsumi Yamaoka2010-05-10 07:25:27 +0000
commit72e841ce72dda0d21f16a04951bee8e1e1d71fae (patch)
treef17527069f690d28057fead85815be0cc19e8c2c
parentd8a7b2720048f6635a62873809169738728e629f (diff)
downloademacs-72e841ce72dda0d21f16a04951bee8e1e1d71fae.tar.gz
emacs-72e841ce72dda0d21f16a04951bee8e1e1d71fae.zip
Synch with Gnus trunk.
(mm-with-unibyte-current-buffer): Redefine it so as not to bind the default value of enable-multibyte-characters to nil.
-rw-r--r--lisp/gnus/ChangeLog5
-rw-r--r--lisp/gnus/mm-util.el40
2 files changed, 20 insertions, 25 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 65974c46124..b1a687f8aff 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,5 +1,10 @@
12010-05-10 Katsumi Yamaoka <yamaoka@jpl.org> 12010-05-10 Katsumi Yamaoka <yamaoka@jpl.org>
2 2
3 * mm-util.el (mm-with-unibyte-current-buffer): Redefine it so as not to
4 bind the default value of enable-multibyte-characters to nil.
5
62010-05-10 Katsumi Yamaoka <yamaoka@jpl.org>
7
3 * message.el (message-forward-make-body-plain) 8 * message.el (message-forward-make-body-plain)
4 (message-forward-make-body-mml): 9 (message-forward-make-body-mml):
5 Don't use mm-with-unibyte-current-buffer. 10 Don't use mm-with-unibyte-current-buffer.
diff --git a/lisp/gnus/mm-util.el b/lisp/gnus/mm-util.el
index a288b8b1b6d..fe7fd78afa2 100644
--- a/lisp/gnus/mm-util.el
+++ b/lisp/gnus/mm-util.el
@@ -1230,33 +1230,23 @@ Use multibyte mode for this."
1230 1230
1231(defmacro mm-with-unibyte-current-buffer (&rest forms) 1231(defmacro mm-with-unibyte-current-buffer (&rest forms)
1232 "Evaluate FORMS with current buffer temporarily made unibyte. 1232 "Evaluate FORMS with current buffer temporarily made unibyte.
1233Also bind the default-value of `enable-multibyte-characters' to nil. 1233Equivalent to `progn' in XEmacs.
1234Equivalent to `progn' in XEmacs 1234
1235 1235Note: We recommend not using this macro any more; there should be
1236NOTE: Use this macro with caution in multibyte buffers (it is not 1236better ways to do a similar thing. The previous version of this macro
1237worth using this macro in unibyte buffers of course). Use of 1237bound the default value of `enable-multibyte-characters' to nil while
1238`(set-buffer-multibyte t)', which is run finally, is generally 1238evaluating FORMS but it is no longer done. So, some programs assuming
1239harmful since it is likely to modify existing data in the buffer. 1239it if any may malfunction."
1240For instance, it converts \"\\300\\255\" into \"\\255\" in
1241Emacs 23 (unicode)."
1242 (if (featurep 'xemacs) 1240 (if (featurep 'xemacs)
1243 `(progn ,@forms) 1241 `(progn ,@forms)
1244 ;; FIXME: (default-value 'enable-multibyte-characters) is read-only 1242 (let ((multibyte (make-symbol "multibyte")))
1245 ;; so let-binding it is wrong. The right fix is to not use this 1243 `(let ((,multibyte enable-multibyte-characters))
1246 ;; macro at all any more, since it's been ill-defined from the start. 1244 (when ,multibyte
1247 (let ((multibyte (make-symbol "multibyte")) 1245 (set-buffer-multibyte nil))
1248 (buffer (make-symbol "buffer"))) 1246 (prog1
1249 `(if mm-emacs-mule 1247 (progn ,@forms)
1250 (let ((,multibyte enable-multibyte-characters) 1248 (when ,multibyte
1251 (,buffer (current-buffer))) 1249 (set-buffer-multibyte t)))))))
1252 (unwind-protect
1253 (letf (((default-value 'enable-multibyte-characters) nil))
1254 (set-buffer-multibyte nil)
1255 ,@forms)
1256 (set-buffer ,buffer)
1257 (set-buffer-multibyte ,multibyte)))
1258 (letf (((default-value 'enable-multibyte-characters) nil))
1259 ,@forms)))))
1260(put 'mm-with-unibyte-current-buffer 'lisp-indent-function 0) 1250(put 'mm-with-unibyte-current-buffer 'lisp-indent-function 0)
1261(put 'mm-with-unibyte-current-buffer 'edebug-form-spec '(body)) 1251(put 'mm-with-unibyte-current-buffer 'edebug-form-spec '(body))
1262 1252