From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.emacs.gnus.general/65694 Path: news.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel,gmane.emacs.gnus.general Subject: Re: [Unicode-2] `read' always returns multibyte symbol Date: Thu, 15 Nov 2007 21:51:16 -0500 Message-ID: References: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1195181498 30593 80.91.229.12 (16 Nov 2007 02:51:38 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 16 Nov 2007 02:51:38 +0000 (UTC) Cc: Kenichi Handa , ding@gnus.org, emacs-devel@gnu.org To: Katsumi Yamaoka Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Nov 16 03:51:42 2007 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1IsrIy-0006Ea-4I for ged-emacs-devel@m.gmane.org; Fri, 16 Nov 2007 03:51:40 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IsrIl-0007xg-Ai for ged-emacs-devel@m.gmane.org; Thu, 15 Nov 2007 21:51:27 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IsrIh-0007tp-3T for emacs-devel@gnu.org; Thu, 15 Nov 2007 21:51:23 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IsrId-0007iY-2G for emacs-devel@gnu.org; Thu, 15 Nov 2007 21:51:22 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IsrIc-0007iB-NJ for emacs-devel@gnu.org; Thu, 15 Nov 2007 21:51:18 -0500 Original-Received: from tomts10-srv.bellnexxia.net ([209.226.175.54]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IsrIc-0003vF-L6 for emacs-devel@gnu.org; Thu, 15 Nov 2007 21:51:18 -0500 Original-Received: from ceviche.home ([70.55.142.45]) by tomts10-srv.bellnexxia.net (InterMail vM.5.01.06.13 201-253-122-130-113-20050324) with ESMTP id <20071116025117.BAWB1733.tomts10-srv.bellnexxia.net@ceviche.home> for ; Thu, 15 Nov 2007 21:51:17 -0500 Original-Received: by ceviche.home (Postfix, from userid 20848) id CC908B4059; Thu, 15 Nov 2007 21:51:16 -0500 (EST) In-Reply-To: (Katsumi Yamaoka's message of "Fri, 16 Nov 2007 10:24:06 +0900") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.50 (gnu/linux) X-detected-kernel: by monty-python.gnu.org: Solaris 8 (1) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:83304 gmane.emacs.gnus.general:65694 Archived-At: > I see. In relation to this, I've been wanting to exterminate > the `mm-with-unibyte-current-buffer' macro that Gnus uses here > and there (if you have time, please look at how it is evil, in > mm-util.el). Yes, I spotted it a while ago already (I'm using a few local hacks to try and catch some multi/unibyte abuses so I tend to bump into bugs a bit earlier than in normal use). I think a mistake of Emacs's handling of encoding issues is that we use "unibyte" and "multibyte" rather than "byteS" and chars". Stefan PS: Here are some hunks from my local changes. @@ -1034,16 +1068,18 @@ (defmacro mm-with-unibyte-buffer (&rest forms) "Create a temporary buffer, and evaluate FORMS there like `progn'. Use unibyte mode for this." - `(let (default-enable-multibyte-characters) - (with-temp-buffer ,@forms))) + `(with-temp-buffer + (mm-disable-multibyte) + ,@forms)) (put 'mm-with-unibyte-buffer 'lisp-indent-function 0) (put 'mm-with-unibyte-buffer 'edebug-form-spec '(body)) (defmacro mm-with-multibyte-buffer (&rest forms) "Create a temporary buffer, and evaluate FORMS there like `progn'. Use multibyte mode for this." - `(let ((default-enable-multibyte-characters t)) - (with-temp-buffer ,@forms))) + `(with-temp-buffer + (mm-enable-multibyte) + ,@forms)) (put 'mm-with-multibyte-buffer 'lisp-indent-function 0) (put 'mm-with-multibyte-buffer 'edebug-form-spec '(body)) @@ -1058,24 +1094,29 @@ harmful since it is likely to modify existing data in the buffer. For instance, it converts \"\\300\\255\" into \"\\255\" in Emacs 23 (unicode)." - (let ((multibyte (make-symbol "multibyte")) - (buffer (make-symbol "buffer"))) - `(if mm-emacs-mule - (let ((,multibyte enable-multibyte-characters) - (,buffer (current-buffer))) - (unwind-protect - (let (default-enable-multibyte-characters) - (set-buffer-multibyte nil) - ,@forms) - (set-buffer ,buffer) - (set-buffer-multibyte ,multibyte))) - (let (default-enable-multibyte-characters) - ,@forms)))) + (message "Braindeadly defined macro: mm-with-unibyte-current-buffer") + ;; (let ((multibyte (make-symbol "multibyte")) + ;; (buffer (make-symbol "buffer"))) + ;; `(if mm-emacs-mule + ;; (let ((,multibyte enable-multibyte-characters) + ;; (,buffer (current-buffer))) + ;; (unwind-protect + ;; (let (default-enable-multibyte-characters) + ;; (set-buffer-multibyte nil) + ;; ,@forms) + ;; (set-buffer ,buffer) + ;; (set-buffer-multibyte ,multibyte))) + ;; (let (default-enable-multibyte-characters) + ;; ,@forms))) + `(progn (assert (not enable-multibyte-characters)) + ,@forms) + ) (put 'mm-with-unibyte-current-buffer 'lisp-indent-function 0) (put 'mm-with-unibyte-current-buffer 'edebug-form-spec '(body)) (defmacro mm-with-unibyte (&rest forms) "Eval the FORMS with the default value of `enable-multibyte-characters' nil." + (message "Braindead macro: mm-with-unibyte") `(let (default-enable-multibyte-characters) ,@forms)) (put 'mm-with-unibyte 'lisp-indent-function 0) @@ -1083,6 +1124,7 @@ (defmacro mm-with-multibyte (&rest forms) "Eval the FORMS with the default value of `enable-multibyte-characters' t." + (message "Braindead macro: mm-with-multibyte") `(let ((default-enable-multibyte-characters t)) ,@forms)) (put 'mm-with-multibyte 'lisp-indent-function 0)