diff --git a/contrib/babel/lisp/org-babel-ref.el b/contrib/babel/lisp/org-babel-ref.el index b8fd1a1c0..8eb200f7c 100644 --- a/contrib/babel/lisp/org-babel-ref.el +++ b/contrib/babel/lisp/org-babel-ref.el @@ -169,19 +169,21 @@ which case the entire range is returned." (let ((length (length lis)) (portion (match-string 1 index)) (remainder (substring index (match-end 0)))) - (flet ((wrap (num) (if (< num 0) (+ length num) num))) - (mapcar - (lambda (sub-lis) (org-babel-ref-index-list remainder sub-lis)) - (if (string-match "\\(\\([-[:digit:]]+\\):\\([-[:digit:]]+\\)\\|\*\\)" - portion) - (mapcar (lambda (n) (nth n lis)) - (apply 'number-sequence - (if (match-string 2 portion) - (list - (wrap (string-to-number (match-string 2 portion))) - (wrap (string-to-number (match-string 3 portion)))) - (list (wrap 0) (wrap -1))))) - (list (nth (wrap (string-to-number portion)) lis)))))) + (flet ((wrap (num) (if (< num 0) (+ length num) num)) + (open (lis) (if (and (listp lis) (= (length lis) 1)) (car lis) lis))) + (open + (mapcar + (lambda (sub-lis) (org-babel-ref-index-list remainder sub-lis)) + (if (string-match "\\(\\([-[:digit:]]+\\):\\([-[:digit:]]+\\)\\|\*\\)" + portion) + (mapcar (lambda (n) (nth n lis)) + (apply 'number-sequence + (if (match-string 2 portion) + (list + (wrap (string-to-number (match-string 2 portion))) + (wrap (string-to-number (match-string 3 portion)))) + (list (wrap 0) (wrap -1))))) + (list (nth (wrap (string-to-number portion)) lis))))))) lis)) (defun org-babel-ref-split-args (arg-string)