summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Schulte <schulte.eric@gmail.com>2010-03-27 08:20:38 -0600
committerEric Schulte <schulte.eric@gmail.com>2010-03-27 08:20:38 -0600
commit8ecc86d49e3724f882dda593c6cf307581195131 (patch)
treed138568152a8a88fbb3af2b9a8cd244adf5de607
parentfc28dd538b0d3c9ceeb99c28b5005f77b7ba7655 (diff)
downloadorg-mode-8ecc86d49e3724f882dda593c6cf307581195131.tar.gz
babel: better variable initialization for org-babel-c
-rw-r--r--contrib/babel/lisp/langs/org-babel-C.el31
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