diff --git a/lisp/org-element.el b/lisp/org-element.el index 93ae6f047..a7c2c0406 100644 --- a/lisp/org-element.el +++ b/lisp/org-element.el @@ -45,11 +45,11 @@ ;; and `special-block'. ;; ;; Other element types are: `babel-call', `clock', `comment', -;; `comment-block', `diary-sexp', `example-block', `export-block', -;; `fixed-width', `horizontal-rule', `keyword', `latex-environment', -;; `node-property', `paragraph', `planning', `src-block', `table', -;; `table-row' and `verse-block'. Among them, `paragraph' and -;; `verse-block' types can contain Org objects and plain text. +;; `comment-block', `diary-sexp', `example-block', `fixed-width', +;; `horizontal-rule', `keyword', `latex-environment', `node-property', +;; `paragraph', `planning', `src-block', `table', `table-row' and +;; `verse-block'. Among them, `paragraph' and `verse-block' types can +;; contain Org objects and plain text. ;; ;; Objects are related to document's contents. Some of them are ;; recursive. Associated types are of the following: `bold', `code', @@ -173,11 +173,11 @@ is not sufficient to know if point is at a paragraph ending. See (defconst org-element-all-elements '(babel-call center-block clock comment comment-block diary-sexp drawer - dynamic-block example-block export-block fixed-width - footnote-definition headline horizontal-rule inlinetask item - keyword latex-environment node-property paragraph plain-list - planning property-drawer quote-block section - special-block src-block table table-row verse-block) + dynamic-block example-block fixed-width footnote-definition + headline horizontal-rule inlinetask item keyword + latex-environment node-property paragraph plain-list + planning property-drawer quote-block section special-block + src-block table table-row verse-block) "Complete list of element types.") (defconst org-element-greater-elements @@ -198,7 +198,7 @@ is not sufficient to know if point is at a paragraph ending. See superscript table-cell underline) "List of recursive object types.") -(defvar org-element-block-name-alist +(defconst org-element-block-name-alist '(("CENTER" . org-element-center-block-parser) ("COMMENT" . org-element-comment-block-parser) ("EXAMPLE" . org-element-example-block-parser) @@ -1899,60 +1899,6 @@ CONTENTS is nil." "#+END_EXAMPLE"))) -;;;; Export Block - -(defun org-element-export-block-parser (limit affiliated) - "Parse an export block. - -LIMIT bounds the search. AFFILIATED is a list of which CAR is -the buffer position at the beginning of the first affiliated -keyword and CDR is a plist of affiliated keywords along with -their value. - -Return a list whose CAR is `export-block' and CDR is a plist -containing `:begin', `:end', `:type', `:value', `:post-blank' and -`:post-affiliated' keywords. - -Assume point is at export-block beginning." - (let* ((case-fold-search t) - (type (progn (looking-at "[ \t]*#\\+BEGIN_\\(\\S-+\\)") - (upcase (org-match-string-no-properties 1))))) - (if (not (save-excursion - (re-search-forward - (format "^[ \t]*#\\+END_%s[ \t]*$" type) limit t))) - ;; Incomplete block: parse it as a paragraph. - (org-element-paragraph-parser limit affiliated) - (let ((contents-end (match-beginning 0))) - (save-excursion - (let* ((begin (car affiliated)) - (post-affiliated (point)) - (contents-begin (progn (forward-line) (point))) - (pos-before-blank (progn (goto-char contents-end) - (forward-line) - (point))) - (end (progn (skip-chars-forward " \r\t\n" limit) - (if (eobp) (point) (line-beginning-position)))) - (value (buffer-substring-no-properties contents-begin - contents-end))) - (list 'export-block - (nconc - (list :begin begin - :end end - :type type - :value value - :post-blank (count-lines pos-before-blank end) - :post-affiliated post-affiliated) - (cdr affiliated))))))))) - -(defun org-element-export-block-interpreter (export-block contents) - "Interpret EXPORT-BLOCK element as Org syntax. -CONTENTS is nil." - (let ((type (org-element-property :type export-block))) - (concat (format "#+BEGIN_%s\n" type) - (org-element-property :value export-block) - (format "#+END_%s" type)))) - - ;;;; Fixed-width (defun org-element-fixed-width-parser (limit affiliated) diff --git a/lisp/ox.el b/lisp/ox.el index 236ce8426..9b508dfd5 100644 --- a/lisp/ox.el +++ b/lisp/ox.el @@ -188,7 +188,6 @@ way they are handled must be hard-coded into (:filter-dynamic-block . org-export-filter-dynamic-block-functions) (:filter-entity . org-export-filter-entity-functions) (:filter-example-block . org-export-filter-example-block-functions) - (:filter-export-block . org-export-filter-export-block-functions) (:filter-export-snippet . org-export-filter-export-snippet-functions) (:filter-final-output . org-export-filter-final-output-functions) (:filter-fixed-width . org-export-filter-fixed-width-functions) @@ -935,10 +934,6 @@ BACKEND is a structure with `org-export-backend' type." (let ((parent (org-export-backend-parent backend))) (when (and parent (not (org-export-get-backend parent))) (error "Cannot use unknown \"%s\" back-end as a parent" parent))) - ;; Register dedicated export blocks in the parser. - (dolist (name (org-export-backend-blocks backend)) - (add-to-list 'org-element-block-name-alist - (cons name 'org-element-export-block-parser))) ;; If a back-end with the same name as BACKEND is already ;; registered, replace it with BACKEND. Otherwise, simply add ;; BACKEND to the list of registered back-ends. @@ -1070,7 +1065,7 @@ keywords are understood: String, or list of strings, representing block names that will not be parsed. This is used to specify blocks that will contain raw code specific to the back-end. These blocks - still have to be handled by the relative `export-block' type + still have to be handled by the `special-block' type translator. :filters-alist @@ -1174,7 +1169,7 @@ keywords are understood: String, or list of strings, representing block names that will not be parsed. This is used to specify blocks that will contain raw code specific to the back-end. These blocks - still have to be handled by the relative `export-block' type + still have to be handled by the `special-block' type translator. :filters-alist @@ -2593,12 +2588,6 @@ Each filter is called with three arguments: the transcoded data, as a string, the back-end, as a symbol, and the communication channel, as a plist. It must return a string or nil.") -(defvar org-export-filter-export-block-functions nil - "List of functions applied to a transcoded export-block. -Each filter is called with three arguments: the transcoded data, -as a string, the back-end, as a symbol, and the communication -channel, as a plist. It must return a string or nil.") - (defvar org-export-filter-fixed-width-functions nil "List of functions applied to a transcoded fixed-width. Each filter is called with three arguments: the transcoded data, diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el index 8dc8723a1..1705a4dff 100644 --- a/testing/lisp/test-org-element.el +++ b/testing/lisp/test-org-element.el @@ -777,39 +777,6 @@ Some other text (org-element-property :label-fmt (org-element-at-point))))))) -;;;; Export Block - -(ert-deftest test-org-element/export-block-parser () - "Test `export-block' parser." - ;; Standard test. - (should - (org-test-with-temp-text "#+BEGIN_LATEX\nText\n#+END_LATEX" - (org-element-map - (let ((org-element-block-name-alist - '(("LATEX" . org-element-export-block-parser)))) - (org-element-parse-buffer)) - 'export-block 'identity))) - ;; Ignore case. - (should - (let ((org-element-block-name-alist - '(("LATEX" . org-element-export-block-parser)))) - (org-test-with-temp-text "#+begin_latex\nText\n#+end_latex" - (org-element-map (org-element-parse-buffer) 'export-block 'identity)))) - ;; Ignore incomplete block. - (should-not - (let ((org-element-block-name-alist - '(("LATEX" . org-element-export-block-parser)))) - (org-test-with-temp-text "#+BEGIN_LATEX" - (org-element-map (org-element-parse-buffer) 'export-block - 'identity nil t)))) - ;; Handle non-empty blank line at the end of buffer. - (should - (let ((org-element-block-name-alist - '(("LATEX" . org-element-export-block-parser)))) - (org-test-with-temp-text "#+BEGIN_LATEX\nC\n#+END_LATEX\n " - (= (org-element-property :end (org-element-at-point)) (point-max)))))) - - ;;;; Export Snippet (ert-deftest test-org-element/export-snippet-parser () @@ -2432,12 +2399,6 @@ CLOCK: [2012-01-01 sun. 00:01]--[2012-01-01 sun. 00:02] => 0:01")))) "#+BEGIN_EXAMPLE\n,* Headline\n ,#+keyword\nText #+END_EXAMPLE") "#+BEGIN_EXAMPLE\n,* Headline\n ,#+keyword\nText #+END_EXAMPLE\n"))) -(ert-deftest test-org-element/export-block-interpreter () - "Test export block interpreter." - (should (equal (org-test-parse-and-interpret - "#+BEGIN_HTML\nTest\n#+END_HTML") - "#+BEGIN_HTML\nTest\n#+END_HTML\n"))) - (ert-deftest test-org-element/fixed-width-interpreter () "Test fixed width interpreter." ;; Standard test. diff --git a/testing/lisp/test-ox.el b/testing/lisp/test-ox.el index 060088476..062b40fc2 100644 --- a/testing/lisp/test-ox.el +++ b/testing/lisp/test-ox.el @@ -1118,15 +1118,7 @@ Footnotes[fn:1], [fn:test] and [fn:inline:anonymous footnote]. (org-export-define-backend 'test '((headline . my-headline-test)) :menu-entry '(?k "Test Export" test)) - (org-export-backend-menu (org-export-get-backend 'test))))) - ;; Export Blocks. - (should - (equal '(("TEST" . org-element-export-block-parser)) - (let (org-export--registered-backends org-element-block-name-alist) - (org-export-define-backend 'test - '((headline . my-headline-test)) - :export-block '("test")) - org-element-block-name-alist)))) + (org-export-backend-menu (org-export-get-backend 'test)))))) (ert-deftest test-org-export/define-derived-backend () "Test `org-export-define-derived-backend' specifications."