diff options
author | Nicolas Goaziou <n.goaziou@gmail.com> | 2012-12-10 08:53:00 +0100 |
---|---|---|
committer | Nicolas Goaziou <n.goaziou@gmail.com> | 2012-12-10 08:54:52 +0100 |
commit | b1f36921d71de646bb95059156fc6232c044e01c (patch) | |
tree | c3eab63688c2731019ada9fd27f07c63bae8d501 | |
parent | 48703624d5a7f13e5408debd2f01dbf7ac6020f4 (diff) | |
download | org-mode-b1f36921d71de646bb95059156fc6232c044e01c.tar.gz |
org-export: Allow to retrieve all previous/next exportable objects
* contrib/lisp/org-export.el (org-export-get-previous-element,
org-export-get-next-element): Allow to retrieve all previous/next
exportable objects by specifying a non-nil, non positive integer
argument.
* testing/lisp/test-org-export.el: Add tests.
-rw-r--r-- | contrib/lisp/org-export.el | 12 | ||||
-rw-r--r-- | testing/lisp/test-org-export.el | 21 |
2 files changed, 26 insertions, 7 deletions
diff --git a/contrib/lisp/org-export.el b/contrib/lisp/org-export.el index 0a44e4d..db0acb0 100644 --- a/contrib/lisp/org-export.el +++ b/contrib/lisp/org-export.el @@ -4636,8 +4636,8 @@ object, a string, or nil. When optional argument N is a positive integer, return a list containing up to N siblings before BLOB, from closest to -farthest." - (when (and n (not (wholenump n))) (setq n nil)) +farthest. With any other non-nil value, return a list containing +all of them." (let ((siblings ;; An object can belong to the contents of its parent or ;; to a secondary string. We check the latter option @@ -4657,6 +4657,7 @@ farthest." (mapc (lambda (obj) (cond ((memq obj (plist-get info :ignore-list))) ((null n) (throw 'exit obj)) + ((not (wholenump n)) (push obj prev)) ((zerop n) (throw 'exit (nreverse prev))) (t (decf n) (push obj prev)))) (cdr (memq blob (reverse siblings)))) @@ -4670,9 +4671,9 @@ a communication channel. Return next exportable element or object, a string, or nil. When optional argument N is a positive integer, return a list -containing up to N siblings after BLOB, from closest to -farthest." - (when (and n (not (wholenump n))) (setq n nil)) +containing up to N siblings after BLOB, from closest to farthest. +With any other non-nil value, return a list containing all of +them." (let ((siblings ;; An object can belong to the contents of its parent or to ;; a secondary string. We check the latter option first. @@ -4691,6 +4692,7 @@ farthest." (mapc (lambda (obj) (cond ((memq obj (plist-get info :ignore-list))) ((null n) (throw 'exit obj)) + ((not (wholenump n)) (push obj next)) ((zerop n) (throw 'exit (nreverse next))) (t (decf n) (push obj next)))) siblings) diff --git a/testing/lisp/test-org-export.el b/testing/lisp/test-org-export.el index 3693978..0ff8440 100644 --- a/testing/lisp/test-org-export.el +++ b/testing/lisp/test-org-export.el @@ -2212,12 +2212,21 @@ Another text. (ref:text) (org-element-type (org-export-get-next-element (org-element-map tree 'plain-text 'identity info t nil t) info))))) - ;; With optional argument N, return a list containing up to + ;; With optional argument N, return a list containing all the + ;; following elements. + (should + (equal + '(bold code underline) + (org-test-with-parsed-data "_a_ /b/ *c* ~d~ _e_" + (mapcar 'car + (org-export-get-next-element + (org-element-map tree 'italic 'identity info t) info t))))) + ;; When N is a positive integer, return a list containing up to ;; N following elements. (should (equal '(bold code) - (org-test-with-parsed-data "_a_ /b/ *c* ~d~" + (org-test-with-parsed-data "_a_ /b/ *c* ~d~ _e_" (mapcar 'car (org-export-get-next-element (org-element-map tree 'italic 'identity info t) info 2)))))) @@ -2266,6 +2275,14 @@ Another text. (ref:text) ;; With optional argument N, return a list containing up to ;; N previous elements. (should + (equal '(bold italic underline) + (org-test-with-parsed-data "_a_ /b/ *c* ~d~" + (mapcar 'car + (org-export-get-previous-element + (org-element-map tree 'code 'identity info t) info t))))) + ;; When N is a positive integer, return a list containing up to + ;; N previous elements. + (should (equal '(bold italic) (org-test-with-parsed-data "_a_ /b/ *c* ~d~" (mapcar 'car |