summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <n.goaziou@gmail.com>2012-12-10 08:53:00 +0100
committerNicolas Goaziou <n.goaziou@gmail.com>2012-12-10 08:54:52 +0100
commitb1f36921d71de646bb95059156fc6232c044e01c (patch)
treec3eab63688c2731019ada9fd27f07c63bae8d501
parent48703624d5a7f13e5408debd2f01dbf7ac6020f4 (diff)
downloadorg-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.el12
-rw-r--r--testing/lisp/test-org-export.el21
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