From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: [Bug] Export Coding System Date: Fri, 22 Feb 2013 23:09:02 +0100 Message-ID: <874nh4j91d.fsf@gmail.com> References: <87zjywjxjp.fsf@gmail.com> <87ppzsjp0t.fsf@gmail.com> <87ehg8nika.fsf@Rainer.invalid> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([208.118.235.92]:55991) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U90nw-0007qm-I9 for emacs-orgmode@gnu.org; Fri, 22 Feb 2013 17:09:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1U90nt-0008Co-Bk for emacs-orgmode@gnu.org; Fri, 22 Feb 2013 17:09:20 -0500 Received: from mail-wi0-f182.google.com ([209.85.212.182]:56341) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U90nt-0008CD-5x for emacs-orgmode@gnu.org; Fri, 22 Feb 2013 17:09:17 -0500 Received: by mail-wi0-f182.google.com with SMTP id hi18so1306450wib.9 for ; Fri, 22 Feb 2013 14:09:16 -0800 (PST) In-Reply-To: <87ehg8nika.fsf@Rainer.invalid> (Achim Gratz's message of "Fri, 22 Feb 2013 22:29:41 +0100") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Achim Gratz Cc: emacs-orgmode@gnu.org --=-=-= Content-Type: text/plain Achim Gratz writes: > Nicolas Goaziou writes: >>> Depends on what language environment is set to, but with the default setting of >>> my Emacs (German) it becomes iso-latin-1, independently of what the coding >>> system in the original Org buffer was. >> >> In this case, it should be `utf-8', shouldn't it? > > I want it to be utf-8, but it isn't. The course of events is apparently > that when a new buffer gets created it will have the default coding > system. You are then apparently asking that buffer for the coding > system (always the default) and set inputenc accordingly, but should > have asked the parent Org buffer. Or so I think, a few details are > probably still wrong. > >>> I think that the export buffer coding system should be explicitly set (via >>> buffer-file-coding-system, which is automatically buffer-local) to copy the >>> coding of the parent buffer (or the coding specified via export options if >>> anything like that exists) so that the default choice of the language >>> environment doesn't kick in. >> >> Still trying to understand: is the coding system wrong when you export >> to a file, to a (temporary) buffer, or both? > > Both. > >> Note that `org-export-to-file' use `coding-system-for-write', which >> overrides `buffer-file-coding-system'. So this variable is probably >> irrelevant here. > > No it is not irrelevant, it simply gets set too late in the game: it > asks for the new coding system when it is time to save the buffer, while > the content of the buffer has been cobbled together while assuming a > different coding system. The only way I know (from browsing the > documentation) to override the coding system for a buffer that does not > yet have a file association is to set that variable directly, > preferrably directly after the buffer is created. Does the following patch fix the problem? Regards, -- Nicolas Goaziou --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-ox-Fix-coding-system-error.patch Content-Description: Fix encoding problem >From ed16f38854c197e8b31607bd32622d00e47fe10c Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Fri, 22 Feb 2013 23:07:04 +0100 Subject: [PATCH] ox: Fix coding system error * lisp/ox.el (org-export--generate-copy-script): Clone `buffer-file-coding-system' when creating a buffer copy. This patches makes sure the output will share the same encoding as the original buffer. --- lisp/ox.el | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lisp/ox.el b/lisp/ox.el index efce29d..65e5acd 100644 --- a/lisp/ox.el +++ b/lisp/ox.el @@ -2729,10 +2729,13 @@ another buffer, effectively cloning the original buffer there." (val (cdr entry))) (and (not (eq var 'org-font-lock-keywords)) (or (memq var - '(major-mode default-directory - buffer-file-name outline-level - outline-regexp - buffer-invisibility-spec)) + '(major-mode + default-directory + buffer-file-name + buffer-file-coding-system + outline-level + outline-regexp + buffer-invisibility-spec)) (string-match "^\\(org-\\|orgtbl-\\)" (symbol-name var))) ;; Skip unreadable values, as they cannot be -- 1.8.1.4 --=-=-=--