瀏覽代碼

babel: `org-babel-ref-index-list' now converts trivial lists to scalars

  Thanks to Darlan Cavalcante Moreira for this suggestion.
Eric Schulte 15 年之前
父節點
當前提交
927ff1125b
共有 1 個文件被更改,包括 15 次插入13 次删除
  1. 15 13
      contrib/babel/lisp/org-babel-ref.el

+ 15 - 13
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)