From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jambunathan K Subject: Re: Support Freemind/Freeplane export Date: Sun, 03 Mar 2013 21:55:11 +0530 Message-ID: <87wqto5u3c.fsf@gmail.com> References: <87r4jxr834.fsf@gmail.com> <87ip59xz4i.fsf@gmail.com> <87lia51llv.fsf@bzg.ath.cx> <87ip58ucji.fsf@Rainer.invalid> <87sj4cnah2.fsf@bzg.ath.cx> <87mwukx3uo.fsf@gmail.com> <87r4jw34rc.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([208.118.235.92]:56496) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UCBj4-0000YL-EQ for emacs-orgmode@gnu.org; Sun, 03 Mar 2013 11:25:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UCBj2-0005M9-2c for emacs-orgmode@gnu.org; Sun, 03 Mar 2013 11:25:26 -0500 Received: from mail-pa0-f50.google.com ([209.85.220.50]:59375) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UCBj1-0005M2-P2 for emacs-orgmode@gnu.org; Sun, 03 Mar 2013 11:25:24 -0500 Received: by mail-pa0-f50.google.com with SMTP id fa11so2652329pad.23 for ; Sun, 03 Mar 2013 08:25:22 -0800 (PST) In-Reply-To: <87r4jw34rc.fsf@gmail.com> (Jambunathan K.'s message of "Sun, 03 Mar 2013 20:33:03 +0530") 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: Nicolas Goaziou Cc: Bastien , Achim Gratz , emacs-orgmode@gnu.org --=-=-= Content-Type: text/plain Jambunathan K writes: > Nicolas Goaziou writes: > >> Bastien writes: >> >>> Achim Gratz writes: >>> >>>> It also requires that the HTML is output in UTF-8. I would >>>> (reluctantly, I don't really know much about how this would work) >>>> suggest that the export should always be done with symbolic entities and >>>> a post-export filter should then replace them with whatever the >>>> particular backend prefers. Does that work? >>> >>> This seems a good idea to me. Nicolas, do you think so? >> >> Yes. We can add a defconst associating each HTML entity to its utf-8 >> counterpart, and add a filter to :filter-final-output in freemind >> back-end definition (not to `org-export-filter-final-output-functions', >> which is user-oriented). >> >> Any taker? Jambunathan? > > Please merge > > ,---- http://repo.or.cz/w/org-mode/org-kjn.git > | > | URL git://repo.or.cz/org-mode/org-kjn.git > | http://repo.or.cz/r/org-mode/org-kjn.git > | > `---- Sorry for the double post. Here comes the patch file(s). --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-ox-html.el-org-html-code-org-html-verbatim-Transcode.patch >From 75708cf644944d301e57bc343db8749b8fa3c242 Mon Sep 17 00:00:00 2001 From: Jambunathan K Date: Sun, 3 Mar 2013 13:51:32 +0530 Subject: [PATCH 1/3] ox-html.el (org-html-code, org-html-verbatim): Transcode value * lisp/ox-html.el (org-html-code, org-html-verbatim): Transcode value. --- lisp/ox-html.el | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/ox-html.el b/lisp/ox-html.el index a0f3f4f..3a4c0e7 100644 --- a/lisp/ox-html.el +++ b/lisp/ox-html.el @@ -1899,7 +1899,7 @@ channel." CONTENTS is nil. INFO is a plist holding contextual information." (format (or (cdr (assq 'code org-html-text-markup-alist)) "%s") - (org-element-property :value code))) + (org-html-plain-text (org-element-property :value code) info))) ;;;; Drawer @@ -3029,7 +3029,7 @@ holding contextual information." CONTENTS is nil. INFO is a plist holding contextual information." (format (or (cdr (assq 'verbatim org-html-text-markup-alist)) "%s") - (org-element-property :value verbatim))) + (org-html-plain-text (org-element-property :value verbatim) info))) ;;;; Verse Block -- 1.7.2.5 --=-=-= Content-Type: text/x-diff; charset=utf-8 Content-Disposition: attachment; filename=0002-Always-use-utf-8-encoding-for-HTML-export.patch Content-Transfer-Encoding: quoted-printable >From c5d46d21b5a3f902cfd7b9d709660b493f67bd94 Mon Sep 17 00:00:00 2001 From: Jambunathan K Date: Sun, 3 Mar 2013 20:15:10 +0530 Subject: [PATCH 2/3] Always use utf-8 encoding for HTML export * ox-html.el (org-html-coding-system): Removed. Always use utf-8 for HTML export. (org-html--build-meta-info, org-html-template) (org-html-entity, org-html-export-to-html): Propagate above change. (org-html-table--table.el-table): Replace   with it's utf-8 equivalent. (org-html-special-string-regexps, org-html--tags) (org-html-format-headline, org-html--format-toc-headline) (org-html-checkbox, org-html-table-cell, org-html-timestamp) (org-html-verse-block): Replace numeric entities with their utf-8 equivalent. Mark ox-html.el as utf-8 encoded. --- lisp/ox-html.el | 55 +++++++++++++++++++++------------------------------= ---- 1 files changed, 21 insertions(+), 34 deletions(-) diff --git a/lisp/ox-html.el b/lisp/ox-html.el index 3a4c0e7..efd9b2f 100644 --- a/lisp/ox-html.el +++ b/lisp/ox-html.el @@ -136,10 +136,10 @@ (defvar htmlize-buffer-places) ; from htmlize.el =20 (defconst org-html-special-string-regexps - '(("\\\\-" . "­") ; shy - ("---\\([^-]\\)" . "—\\1") ; mdash - ("--\\([^-]\\)" . "–\\1") ; ndash - ("\\.\\.\\." . "…")) ; hellip + '(("\\\\-" . "=C2=AD") ; shy + ("---\\([^-]\\)" . "=E2=80=94\\1") ; mdash + ("--\\([^-]\\)" . "=E2=80=93\\1") ; ndash + ("\\.\\.\\." . "=E2=80=A6")) ; hellip "Regular expressions for special string conversion.") =20 (defconst org-html-scripts @@ -821,12 +821,6 @@ and corresponding declarations." (cons (string :tag "Extension") (string :tag "Declaration"))))) =20 -(defcustom org-html-coding-system 'utf-8 - "Coding system for HTML export. -Use utf-8 as the default value." - :group 'org-export-html - :type 'coding-system) - (defcustom org-html-divs '("preamble" "content" "postamble") "The name of the main divs for HTML export. This is a list of three strings, the first one for the preamble @@ -1337,12 +1331,7 @@ INFO is a plist used as a communication channel." (keywords (plist-get info :keywords))) (concat (format "%s\n" title) - (format - "\n" - (or (and org-html-coding-system - (fboundp 'coding-system-get) - (coding-system-get org-html-coding-system 'mime-charset)) - "iso-8859-1")) + "\n" (format "\n" title) (format "\n") (and date (format "\n" d= ate)) @@ -1515,10 +1504,7 @@ holding export options." (cdr (assoc "html" org-html-xml-declaration)) =20 "") - (or (and org-html-coding-system - (fboundp 'coding-system-get) - (coding-system-get org-html-coding-system 'mime-charset)) - "iso-8859-1")) + "utf-8") "\n" "\n" @@ -1579,7 +1565,7 @@ INFO is a plist used as a communication channel." (concat org-html-tag-class-prefix (org-html-fix-class-name tag)) tag)) - tags " ")))) + tags "=C2=A0")))) =20 ;;;; Headline =20 @@ -1593,7 +1579,7 @@ INFO is a plist used as a communication channel." (todo (org-html--todo todo)) (tags (org-html--tags tags))) (concat section-number todo (and todo " ") text - (and tags "   ") tags))) + (and tags "=C2=A0=C2=A0=C2=A0") tags))) =20 ;;;; Src Code =20 @@ -1780,7 +1766,7 @@ INFO is a plist used as a communication channel." (target . ignore)) (org-export-backend-translate-table 'html)) info) - (and tags "   ") (org-html--tags tags))))) + (and tags "=C2=A0=C2=A0=C2=A0") (org-html--tags tags))))) =20 (defun org-html-list-of-listings (info) "Build a list of listings. @@ -1932,7 +1918,7 @@ holding contextual information. See `org-export-data= '." "Transcode an ENTITY object from Org to HTML. CONTENTS are the definition itself. INFO is a plist holding contextual information." - (org-element-property :html entity)) + (org-element-property :utf-8 entity)) =20 =20 ;;;; Example Block @@ -2184,7 +2170,7 @@ contextual information." =20 (defun org-html-checkbox (checkbox) (case checkbox (on "[X]") - (off "[ ]") + (off "[=C2=A0]") (trans "[-]") (t ""))) =20 @@ -2856,7 +2842,7 @@ channel." " align=3D\"%s\"" " class=3D\"%s\"") (org-export-table-cell-alignment table-cell info))))) (when (or (not contents) (string=3D "" (org-trim contents))) - (setq contents " ")) + (setq contents "=C2=A0")) (cond ((and (org-export-table-has-header-p table info) (=3D 1 (org-export-table-row-group table-row info))) @@ -2929,8 +2915,9 @@ communication channel." (re-search-forward "^[ \t]*|[^|]" nil t) (table-generate-source 'html outbuf)) (with-current-buffer outbuf - (prog1 (org-trim (buffer-string)) - (kill-buffer) ))))) + (prog1 (org-trim (replace-regexp-in-string + " " "=C2=A0" (buffer-string) nil t)) + (kill-buffer)))))) =20 (defun org-html-table (table contents info) "Transcode a TABLE element from Org to HTML. @@ -3009,7 +2996,7 @@ information." (let ((value (org-html-plain-text (org-timestamp-translate timestamp) info))) (format "%s" - (replace-regexp-in-string "--" "–" value)))) + (replace-regexp-in-string "--" "=E2=80=93" value)))) =20 =20 ;;;; Underline @@ -3049,7 +3036,7 @@ contextual information." (while (string-match "^[ \t]+" contents) (let* ((num-ws (length (match-string 0 contents))) (ws (let (out) (dotimes (i num-ws out) - (setq out (concat out " ")))))) + (setq out (concat out "=C2=A0")))))) (setq contents (replace-match ws nil t contents)))) (format "

\n%s

" contents)) =20 @@ -3150,16 +3137,15 @@ file-local settings. Return output file's name." (interactive) (let* ((extension (concat "." org-html-extension)) - (file (org-export-output-file-name extension subtreep)) - (org-export-coding-system org-html-coding-system)) + (file (org-export-output-file-name extension subtreep))) (if async (org-export-async-start (lambda (f) (org-export-add-to-stack f 'html)) - (let ((org-export-coding-system org-html-coding-system)) + (let ((org-export-coding-system 'utf-8)) `(expand-file-name (org-export-to-file 'html ,file ,subtreep ,visible-only ,body-only ',ext-plist)))) - (let ((org-export-coding-system org-html-coding-system)) + (let ((org-export-coding-system 'utf-8)) (org-export-to-file 'html file subtreep visible-only body-only ext-plist))))) =20 @@ -3199,6 +3185,7 @@ Return output file name." =20 ;; Local variables: ;; generated-autoload-file: "org-loaddefs.el" +;; coding: utf-8 ;; End: =20 ;;; ox-html.el ends here --=20 1.7.2.5 --=-=-= Content-Type: text/plain -- --=-=-=--