From 539b89451c853d380b18ee17673c0594d2f18b7b Mon Sep 17 00:00:00 2001 From: Achim Gratz Date: Sun, 19 May 2013 06:55:38 +0200 Subject: [PATCH] ob-sh: add :hlines processing and :hline-string header arg * lisp/ob-sh.el (org-babel-variable-assignments:sh): Check for ":hlines yes" and use header arg :hlines-string if defined (default to "hline") and add this to the call of `org-babel-sh-var-to-sh'. (org-babel-sh-var-to-sh, org-babel-sh-var-to-string): Add additional optional string argument `hline' and use it for the :hline parameter in the call to `orgtbl-to-generic'. --- lisp/ob-shell.el | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lisp/ob-shell.el b/lisp/ob-shell.el index 0560f4817..3ede70144 100644 --- a/lisp/ob-shell.el +++ b/lisp/ob-shell.el @@ -108,26 +108,30 @@ This function is called by `org-babel-execute-src-block'." (defun org-babel-variable-assignments:sh (params) "Return list of shell statements assigning the block's variables." - (let ((sep (cdr (assoc :separator params)))) + (let ((sep (cdr (assoc :separator params))) + (hline (when (string= "yes" (cdr (assoc :hlines params))) + (or (cdr (assoc :hline-string params)) + "hline")))) (mapcar (lambda (pair) (format "%s=%s" (car pair) - (org-babel-sh-var-to-sh (cdr pair) sep))) + (org-babel-sh-var-to-sh (cdr pair) sep hline))) (mapcar #'cdr (org-babel-get-header params :var))))) -(defun org-babel-sh-var-to-sh (var &optional sep) +(defun org-babel-sh-var-to-sh (var &optional sep hline) "Convert an elisp value to a shell variable. Convert an elisp var into a string of shell commands specifying a var of the same value." - (format org-babel-sh-var-quote-fmt (org-babel-sh-var-to-string var sep))) + (format org-babel-sh-var-quote-fmt (org-babel-sh-var-to-string var sep hline))) -(defun org-babel-sh-var-to-string (var &optional sep) +(defun org-babel-sh-var-to-string (var &optional sep hline) "Convert an elisp value to a string." (let ((echo-var (lambda (v) (if (stringp v) v (format "%S" v))))) (cond ((and (listp var) (or (listp (car var)) (equal (car var) 'hline))) - (orgtbl-to-generic var (list :sep (or sep "\t") :fmt echo-var))) + (orgtbl-to-generic var (list :sep (or sep "\t") :fmt echo-var + :hline hline))) ((listp var) (mapconcat echo-var var "\n")) (t (funcall echo-var var)))))