From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: [ANN] Export block syntax change Date: Sun, 20 Dec 2015 22:06:44 +0100 Message-ID: <87vb7sakyj.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:59596) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aAl9x-0006kh-R6 for emacs-orgmode@gnu.org; Sun, 20 Dec 2015 16:04:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aAl9w-0003HE-Fg for emacs-orgmode@gnu.org; Sun, 20 Dec 2015 16:04:53 -0500 Received: from relay3-d.mail.gandi.net ([2001:4b98:c:538::195]:40197) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aAl9w-0003Gk-8K for emacs-orgmode@gnu.org; Sun, 20 Dec 2015 16:04:52 -0500 Received: from selenimh (unknown [IPv6:2a01:6600:8080:9601::2de]) (Authenticated sender: mail@nicolasgoaziou.fr) by relay3-d.mail.gandi.net (Postfix) with ESMTPSA id 0C147A80D0 for ; Sun, 20 Dec 2015 22:04:50 +0100 (CET) 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: Org Mode List Hello, I just finalized the syntax change for export blocks. As a reminder, the new syntax is: #+BEGIN_EXPORT backend ... #+END_EXPORT instead of #+BEGIN_backend ... #+END_backend So, basically, "export" is a reserved block type, much like "src". As a consequence, INCLUDE keywords syntax is modified, e.g., #+INCLUDE: "file.org" HTML becomes #+INCLUDE: "file.org" export html The following function, included in ORG-NEWS, updates any Org document to the new syntax. It is meant to be applied after applying the patch. (defun org-repair-export-blocks () "Repair export blocks and INCLUDE keywords in current buffer." (when (eq major-mode 'org-mode) (let ((case-fold-search t) (back-end-re (regexp-opt '("HTML" "ASCII" "LATEX" "ODT" "MARKDOWN" "MD" "ORG" "MAN" "BEAMER" "TEXINFO" "GROFF" "KOMA-LETTER") t))) (org-with-wide-buffer (goto-char (point-min)) (let ((block-re (concat "^[ \t]*#\\+BEGIN_" back-end-re))) (save-excursion (while (re-search-forward block-re nil t) (let ((element (save-match-data (org-element-at-point)))) (when (eq (org-element-type element) 'special-block) (save-excursion (goto-char (org-element-property :end element)) (save-match-data (search-backward "_")) (forward-char) (insert "EXPORT") (delete-region (point) (line-end-position))) (replace-match "EXPORT \\1" nil nil nil 1)))))) (let ((include-re (format "^[ \t]*#\\+INCLUDE: .*?%s[ \t]*$" back-end-re))) (while (re-search-forward include-re nil t) (let ((element (save-match-data (org-element-at-point)))) (when (and (eq (org-element-type element) 'keyword) (string= (org-element-property :key element) "INCLUDE")) (replace-match "EXPORT \\1" nil nil nil 1))))))))) Regards, -- Nicolas Goaziou 0x80A93738