Browse Source

Merge branch 'master' of git+ssh://repo.or.cz/srv/git/org-mode

Carsten Dominik 15 years ago
parent
commit
6cc4d5dcdf

+ 11 - 11
contrib/babel/lisp/langs/org-babel-R.el

@@ -42,8 +42,7 @@ called by `org-babel-execute-src-block'."
   (save-excursion
     (let* ((processed-params (org-babel-process-params params))
            (result-type (fourth processed-params))
-	   (ess-ask-for-ess-directory (not (cdr (assoc :dir params))))
-           (session (org-babel-R-initiate-session (first processed-params)))
+           (session (org-babel-R-initiate-session (first processed-params) params))
            (vars (second processed-params))
 	   (column-names-p (and (cdr (assoc :colnames params))
 				(string= "yes" (cdr (assoc :colnames params)))))
@@ -59,7 +58,7 @@ called by `org-babel-execute-src-block'."
 
 (defun org-babel-prep-session:R (session params)
   "Prepare SESSION according to the header arguments specified in PARAMS."
-  (let* ((session (org-babel-R-initiate-session session))
+  (let* ((session (org-babel-R-initiate-session session params))
          (vars (org-babel-ref-variables params)))
     (mapc (lambda (pair) (org-babel-R-assign-elisp session (car pair) (cdr pair))) vars)
     session))
@@ -94,16 +93,17 @@ called by `org-babel-execute-src-block'."
                 name transition-file (if (eq (second value) 'hline) "TRUE" "FALSE")))
     (format "%s <- %s" name (org-babel-R-quote-tsv-field value))))
 
-(defun org-babel-R-initiate-session (session)
+(defun org-babel-R-initiate-session (session params)
   "If there is not a current R process then create one."
   (unless (string= session "none")
-    (setq session (or session "*R*"))
-    (if (org-babel-comint-buffer-livep session)
-        session
-      (save-window-excursion
-	(R)
-	(rename-buffer (if (bufferp session) (buffer-name session)
-			 (if (stringp session) session (buffer-name)))) (current-buffer)))))
+    (let ((session (or session "*R*"))
+	  (ess-ask-for-ess-directory (not (cdr (assoc :dir params)))))
+      (if (org-babel-comint-buffer-livep session)
+	  session
+	(save-window-excursion
+	  (R)
+	  (rename-buffer (if (bufferp session) (buffer-name session)
+			   (if (stringp session) session (buffer-name)))) (current-buffer))))))
 
 (defun org-babel-R-construct-graphics-device-call (out-file params)
   "Construct the call to the graphics device"

+ 1 - 1
contrib/babel/lisp/langs/org-babel-clojure.el

@@ -183,7 +183,7 @@ then create.  Return the initialized session."
         (setq clojure-buffer (org-babel-clojure-session-buffer session)))
       session)))
 
-(defun org-babel-clojure-initiate-session (&optional session)
+(defun org-babel-clojure-initiate-session (&optional session params)
   "Return the slime-clojure repl buffer bound to this session
 or nil if \"none\" is specified"
   (unless (and (stringp session) (string= session "none"))

+ 1 - 1
contrib/babel/lisp/langs/org-babel-gnuplot.el

@@ -168,7 +168,7 @@ called by `org-babel-execute-src-block'."
         (insert (org-babel-chomp body)))
       buffer)))
 
-(defun org-babel-gnuplot-initiate-session (&optional session)
+(defun org-babel-gnuplot-initiate-session (&optional session params)
   "If there is not a current inferior-process-buffer in SESSION
 then create.  Return the initialized session.  The current
 `gnuplot-mode' doesn't provide support for multiple sessions."

+ 1 - 1
contrib/babel/lisp/langs/org-babel-haskell.el

@@ -85,7 +85,7 @@
       (match-string 1 string)
     string))
 
-(defun org-babel-haskell-initiate-session (&optional session)
+(defun org-babel-haskell-initiate-session (&optional session params)
   "If there is not a current inferior-process-buffer in SESSION
 then create.  Return the initialized session."
   ;; TODO: make it possible to have multiple sessions

+ 1 - 1
contrib/babel/lisp/langs/org-babel-oz.el

@@ -279,7 +279,7 @@ called by `org-babel-execute-src-block' via multiple-value-bind."
 ;;
 ;; BUG: does not work yet. Error: ad-Orig-error: buffer none doesn't exist or has no process 
 ;; UNUSED DEF
-(defun org-babel-oz-initiate-session (&optional session)
+(defun org-babel-oz-initiate-session (&optional session params)
   "If there is not a current inferior-process-buffer in SESSION
 then create.  Return the initialized session."
   (unless (string= session "none")

+ 1 - 1
contrib/babel/lisp/langs/org-babel-perl.el

@@ -69,7 +69,7 @@ specifying a var of the same value."
 
 (defvar org-babel-perl-buffers '(:default . nil))
 
-(defun org-babel-perl-initiate-session (&optional session)
+(defun org-babel-perl-initiate-session (&optional session params)
   "Simply return nil, as sessions are not supported by perl"
 nil)
 

+ 1 - 1
contrib/babel/lisp/langs/org-babel-python.el

@@ -120,7 +120,7 @@ then create.  Return the initialized session."
 					   (assq-delete-all session org-babel-python-buffers)))
       session)))
 
-(defun org-babel-python-initiate-session (&optional session)
+(defun org-babel-python-initiate-session (&optional session params)
   (unless (string= session "none")
     (org-babel-python-session-buffer (org-babel-python-initiate-session-by-key session))))
 

+ 1 - 1
contrib/babel/lisp/langs/org-babel-ruby.el

@@ -115,7 +115,7 @@ Emacs-lisp table, otherwise return the results as a string."
                                          "'" "\"" results)))))
      results)))
 
-(defun org-babel-ruby-initiate-session (&optional session)
+(defun org-babel-ruby-initiate-session (&optional session params)
   "If there is not a current inferior-process-buffer in SESSION
 then create.  Return the initialized session."
   (unless (string= session "none")

+ 1 - 1
contrib/babel/lisp/langs/org-babel-sh.el

@@ -111,7 +111,7 @@ Emacs-lisp table, otherwise return the results as a string."
                                          "'" "\"" results)))))
      results)))
 
-(defun org-babel-sh-initiate-session (&optional session)
+(defun org-babel-sh-initiate-session (&optional session params)
   (unless (string= session "none")
     (save-window-excursion
       (or (org-babel-comint-buffer-livep session)

+ 8 - 2
contrib/babel/lisp/org-babel.el

@@ -124,6 +124,8 @@ can not be resolved.")
 (defvar org-babel-hash-show 4
   "Number of initial characters to show of a hidden results hash.")
 
+(defvar org-babel-after-execute-hook nil
+  "Hook for functions to be called after `org-babel-execute-src-block'")
 (defun org-babel-named-src-block-regexp-for-name (name)
   "Regexp used to match named src block."
   (concat org-babel-source-name-regexp (regexp-quote name) "[ \t\n]*"
@@ -240,6 +242,7 @@ block."
 			     (list (list result))
 			   result)))
 	(org-babel-insert-result result result-params info new-hash)
+	(run-hooks 'org-babel-after-execute-hook)
 	result))))
 
 (defun org-babel-load-in-session (&optional arg info)
@@ -268,7 +271,10 @@ of the source block to the kill ring."
          (lang (first info))
          (body (second info))
          (params (third info))
-         (session (cdr (assoc :session params))))
+         (session (cdr (assoc :session params)))
+	 (dir (cdr (assoc :dir params)))
+	 (default-directory
+	   (or (and dir (file-name-as-directory dir)) default-directory)))
     (unless (member lang org-babel-interpreters)
       (error "Language is not in `org-babel-interpreters': %s" lang))
     ;; copy body to the kill ring
@@ -276,7 +282,7 @@ of the source block to the kill ring."
     ;; if called with a prefix argument, then process header arguments
     (if arg (funcall (intern (concat "org-babel-prep-session:" lang)) session params))
     ;; just to the session using pop-to-buffer
-    (pop-to-buffer (funcall (intern (format "org-babel-%s-initiate-session" lang)) session))
+    (pop-to-buffer (funcall (intern (format "org-babel-%s-initiate-session" lang)) session params))
     (move-end-of-line 1)))
 
 (defun org-babel-open-src-block-result (&optional re-run)