diff options
author | Eric Schulte <schulte.eric@gmail.com> | 2010-03-27 08:20:38 -0600 |
---|---|---|
committer | Eric Schulte <schulte.eric@gmail.com> | 2010-03-27 08:20:38 -0600 |
commit | 8ecc86d49e3724f882dda593c6cf307581195131 (patch) | |
tree | d138568152a8a88fbb3af2b9a8cd244adf5de607 | |
parent | fc28dd538b0d3c9ceeb99c28b5005f77b7ba7655 (diff) | |
download | org-mode-8ecc86d49e3724f882dda593c6cf307581195131.tar.gz |
babel: better variable initialization for org-babel-c
-rw-r--r-- | contrib/babel/lisp/langs/org-babel-C.el | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/contrib/babel/lisp/langs/org-babel-C.el b/contrib/babel/lisp/langs/org-babel-C.el index 9ed04a2..9a7627e 100644 --- a/contrib/babel/lisp/langs/org-babel-C.el +++ b/contrib/babel/lisp/langs/org-babel-C.el @@ -122,7 +122,8 @@ called by `org-babel-execute-src-block'." (progn (with-current-buffer error-buf (goto-char (point-max)) - (insert (concat "\n\n--body--\n" full-body))) + (insert (concat "\n\n--body--\n" full-body)) + (goto-char (point-min))) (display-buffer error-buf) nil)))) (defun org-babel-C-ensure-main-wrap (body) @@ -144,15 +145,25 @@ called by `org-babel-execute-src-block'." (defun org-babel-C-var-to-C (pair) "Convert an elisp val into a string of C code specifying a var of the same value. TODO list support." - (let* ((var (car pair)) - (val (cdr pair)) - (type (cond - ((integerp val) "int") - ((floatp val) "double") - ((characterp val) "char") - ((stringp val) (format "char[%d]" (length val))) - (t "u32")))) - (format "%s %S = %S;" type var val))) + (let ((var (car pair)) + (val (cdr pair))) + (when (symbolp val) + (setq val (symbol-name val)) + (when (= (length val) 1) + (setq val (string-to-char val)))) + (cond + ((integerp val) + (format "int %S = %S;" var val)) + ((floatp val) + (format "double %S = %S;" var val)) + ((or (characterp val)) + (format "char %S = '%S';" var val)) + ((stringp val) + (format "char %S[%d] = \"%s\";" + var (+ 1 (length val)) val)) + (t + (format "u32 %S = %S;" var val))))) + (provide 'org-babel-C) ;;; org-babel-C.el ends here |