delete colnames/rownames for replaced variables
Thanks to Rick Frankel for help debugging this problem. * lisp/ob-core.el (org-babel-merge-params): When merging parameters, if a variable is replaced with a new value, then delete colnames/rownames for the original value of that variable.
This commit is contained in:
parent
08cffc1c24
commit
3142297d69
|
@ -2269,7 +2269,8 @@ parameters when merging lists."
|
|||
new-params))
|
||||
result-params)
|
||||
output)))
|
||||
params results exports tangle noweb cache vars shebang comments padline)
|
||||
params results exports tangle noweb cache vars shebang comments padline
|
||||
clearnames)
|
||||
|
||||
(mapc
|
||||
(lambda (plist)
|
||||
|
@ -2286,21 +2287,25 @@ parameters when merging lists."
|
|||
(setq vars
|
||||
(append
|
||||
(if (member name (mapcar #'car vars))
|
||||
(delq nil
|
||||
(mapcar
|
||||
(lambda (p)
|
||||
(unless (equal (car p) name) p))
|
||||
vars))
|
||||
(progn
|
||||
(push name clearnames)
|
||||
(delq nil
|
||||
(mapcar
|
||||
(lambda (p)
|
||||
(unless (equal (car p) name) p))
|
||||
vars)))
|
||||
vars)
|
||||
(list (cons name pair))))
|
||||
;; if no name is given and we already have named variables
|
||||
;; then assign to named variables in order
|
||||
(if (and vars (nth variable-index vars))
|
||||
(prog1 (setf (cddr (nth variable-index vars))
|
||||
(concat (symbol-name
|
||||
(car (nth variable-index vars)))
|
||||
"=" (cdr pair)))
|
||||
(incf variable-index))
|
||||
(let ((name (car (nth variable-index vars))))
|
||||
(push name clearnames) ; clear out colnames
|
||||
; and rownames
|
||||
; for replace vars
|
||||
(prog1 (setf (cddr (nth variable-index vars))
|
||||
(concat (symbol-name name) "=" (cdr pair)))
|
||||
(incf variable-index)))
|
||||
(error "Variable \"%s\" must be assigned a default value"
|
||||
(cdr pair))))))
|
||||
(:results
|
||||
|
@ -2347,6 +2352,19 @@ parameters when merging lists."
|
|||
plists)
|
||||
(setq vars (reverse vars))
|
||||
(while vars (setq params (cons (cons :var (cddr (pop vars))) params)))
|
||||
;; clear out col-names and row-names for replaced variables
|
||||
(mapc
|
||||
(lambda (name)
|
||||
(mapc
|
||||
(lambda (param)
|
||||
(setf (cdr (assoc param params))
|
||||
(remove-if (lambda (pair) (equal (car pair) name))
|
||||
(cdr (assoc param params))))
|
||||
(setf params (remove-if (lambda (pair) (and (equal (car pair) param)
|
||||
(null (cdr pair))))
|
||||
params)))
|
||||
(list :colname-names :rowname-names)))
|
||||
clearnames)
|
||||
(mapc
|
||||
(lambda (hd)
|
||||
(let ((key (intern (concat ":" (symbol-name hd))))
|
||||
|
|
Loading…
Reference in New Issue