* Errors get suppressed by org-babel-execute-src-block @ 2016-02-08 19:02 Gary Oberbrunner 2016-02-10 20:23 ` Aaron Ecay 0 siblings, 1 reply; 11+ messages in thread From: Gary Oberbrunner @ 2016-02-08 19:02 UTC (permalink / raw) To: Orgmode Mailing List [-- Attachment #1: Type: text/plain, Size: 632 bytes --] org-babel-execute-src-block has a big unwind-protect that basically eats all errors inside it. I don't think it used to do that. It makes it hard to debug my sql code since I can't figure out where the actual problem is. In my case, I'm probably returning no result from some query, and ob-sql is mis-parsing that; but due to the unwind-protect it doesn't give me a stack dump or anything useful, just a "Beginning of buffer" message in *Messages*. And it makes setting debug-on-error not work too. I'm considering replacing/augmenting that stanza with a condition-case. What do folks here think? Is there a better way? -- Gary [-- Attachment #2: Type: text/html, Size: 803 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Errors get suppressed by org-babel-execute-src-block 2016-02-08 19:02 Errors get suppressed by org-babel-execute-src-block Gary Oberbrunner @ 2016-02-10 20:23 ` Aaron Ecay 2016-02-10 22:57 ` Nicolas Goaziou 2016-02-11 17:08 ` Nick Dokos 0 siblings, 2 replies; 11+ messages in thread From: Aaron Ecay @ 2016-02-10 20:23 UTC (permalink / raw) To: Gary Oberbrunner, Orgmode Mailing List [-- Attachment #1: Type: text/plain, Size: 1008 bytes --] Hi Gary, 2016ko otsailak 8an, Gary Oberbrunner-ek idatzi zuen: > > org-babel-execute-src-block has a big unwind-protect that basically eats > all errors inside it. I don't think it used to do that. The unwind-protect exists since 2010, so you’re probably mistaken about that (depending on your frame of reference for “used to”...) That said, the code in question seems very questionable to me. First of all, the unwind-protect should not be needed at all, due to the use of (f)let (IOW, if the unwind-protect was ever needed, it was to paper over a bug in emacs which should no longer exist). Secondly, in 2012 commit 57104f9f changed an “org-flet” to a “let” in this function, which is incorrect (since elisp is a lisp-2). So the whole thing has been effectively a no-op since then. I’d like to install the attached patch to master, if there are no objections. That should resolve your concern as well as cleaning up the dead code. Aaron -- Aaron Ecay [-- Attachment #2: 0001-ob-core-remove-cruft.patch --] [-- Type: text/x-diff, Size: 7551 bytes --] From bdb68585d5b0ddf5a6c9876028b5f2be2f17e66a Mon Sep 17 00:00:00 2001 From: Aaron Ecay <aaronecay@gmail.com> Date: Wed, 10 Feb 2016 19:39:04 +0000 Subject: [PATCH] ob-core: remove cruft MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * lisp/ob-core.el (org-babel-execute-src-block): Simplify. (org-babel-tramp-handle-call-process-region): Remove. Commit 57104f9f changed an org-flet to a let, rendering the whole apparatus of modifying call-process-region inoperative. Supposedly this was put in place to work around a bug in tramp-handle-call-process-region, which was removed from tramp in 2012 (after being renamed tramp-sh-call-process-region). *shrug* This commit just removes the whole thing. It also no longer consults ‘org-src-lang-modes’, which is not helpful here. --- lisp/ob-core.el | 133 ++++++++++++++++++++------------------------------------ 1 file changed, 47 insertions(+), 86 deletions(-) diff --git a/lisp/ob-core.el b/lisp/ob-core.el index 025985d..77f464f 100644 --- a/lisp/ob-core.el +++ b/lisp/ob-core.el @@ -26,6 +26,7 @@ (eval-when-compile (require 'cl)) (require 'cl-lib) +(require 'subr-x) ; For `if-let' (require 'ob-eval) (require 'org-macs) (require 'org-compat) @@ -36,10 +37,8 @@ nil)) ;; dynamically scoped for tramp -(defvar org-babel-call-process-region-original nil) (defvar org-babel-library-of-babel) (defvar org-edit-src-content-indentation) -(defvar org-src-lang-modes) (declare-function outline-show-all "outline" ()) (declare-function org-get-indentation "org" (&optional line)) @@ -679,72 +678,53 @@ block." (default-directory (or (and dir (file-name-as-directory (expand-file-name dir))) default-directory)) - (org-babel-call-process-region-original ;; for tramp handler - (or (org-bound-and-true-p - org-babel-call-process-region-original) - (symbol-function 'call-process-region))) (indent (nth 5 info)) - result cmd) - (unwind-protect - (let ((call-process-region - (lambda (&rest args) - (apply 'org-babel-tramp-handle-call-process-region - args)))) - (let ((lang-check - (lambda (f) - (let ((f (intern (concat "org-babel-execute:" f)))) - (when (fboundp f) f))))) - (setq cmd - (or (funcall lang-check lang) - (funcall lang-check - (symbol-name - (cdr (assoc lang org-src-lang-modes)))) - (error "No org-babel-execute function for %s!" - lang)))) - (message "executing %s code block%s..." - (capitalize lang) - (if (nth 4 info) (format " (%s)" (nth 4 info)) "")) - (if (member "none" result-params) - (progn - (funcall cmd body params) - (message "result silenced") - (setq result nil)) - (setq result - (let ((result (funcall cmd body params))) - (if (and (eq (cdr (assoc :result-type params)) - 'value) - (or (member "vector" result-params) - (member "table" result-params)) - (not (listp result))) - (list (list result)) result))) - ;; If non-empty result and :file then write to :file. - (when (cdr (assoc :file params)) - (when result - (with-temp-file (cdr (assoc :file params)) - (insert - (org-babel-format-result - result (cdr (assoc :sep (nth 2 info))))))) - (setq result (cdr (assoc :file params)))) - ;; Possibly perform post process provided its appropriate. - (when (cdr (assoc :post params)) - (let ((*this* (if (cdr (assoc :file params)) - (org-babel-result-to-file - (cdr (assoc :file params)) - (when (assoc :file-desc params) - (or (cdr (assoc :file-desc params)) - result))) - result))) - (setq result (org-babel-ref-resolve - (cdr (assoc :post params)))) - (when (cdr (assoc :file params)) - (setq result-params - (remove "file" result-params))))) - (org-babel-insert-result - result result-params info new-hash indent lang)) - (run-hooks 'org-babel-after-execute-hook) - result) - (setq call-process-region - 'org-babel-call-process-region-original))))))))) + (cmd (intern (concat "org-babel-execute:" lang))) + result) + (unless (fboundp cmd) + (error "No org-babel-execute function for %s!" lang)) + (message "executing %s code block%s..." + (capitalize lang) + (if (nth 4 info) (format " (%s)" (nth 4 info)) "")) + (if (member "none" result-params) + (progn + (funcall cmd body params) + (message "result silenced") + (setq result nil)) + (setq result + (let ((result (funcall cmd body params))) + (if (and (eq (cdr (assoc :result-type params)) + 'value) + (or (member "vector" result-params) + (member "table" result-params)) + (not (listp result))) + (list (list result)) result))) + ;; If non-empty result and :file then write to :file. + (when (cdr (assoc :file params)) + (when result + (with-temp-file (cdr (assoc :file params)) + (insert + (org-babel-format-result + result (cdr (assoc :sep (nth 2 info))))))) + (setq result (cdr (assoc :file params)))) + ;; Possibly perform post process provided its appropriate. + (when (cdr (assoc :post params)) + (let ((*this* (if (cdr (assoc :file params)) + (org-babel-result-to-file + (cdr (assoc :file params)) + (when (assoc :file-desc params) + (or (cdr (assoc :file-desc params)) + result))) + result))) + (setq result (org-babel-ref-resolve + (cdr (assoc :post params)))) + (when (cdr (assoc :file params)) + (setq result-params + (remove "file" result-params))))) + (org-babel-insert-result + result result-params info new-hash indent lang)) + (run-hooks 'org-babel-after-execute-hook) + result))))))) (defun org-babel-expand-body:generic (body params &optional var-lines) "Expand BODY with PARAMS. @@ -2993,25 +2973,6 @@ character of the string." (org-reverse-string (org-babel-chomp (org-reverse-string string) regexp)) regexp)) -(defun org-babel-tramp-handle-call-process-region - (start end program &optional delete buffer display &rest args) - "Use Tramp to handle `call-process-region'. -Fixes a bug in `tramp-handle-call-process-region'." - (if (and (featurep 'tramp) (file-remote-p default-directory)) - (let ((tmpfile (tramp-compat-make-temp-file ""))) - (write-region start end tmpfile) - (when delete (delete-region start end)) - (unwind-protect - ;; (apply 'call-process program tmpfile buffer display args) - ;; bug in tramp - (apply 'process-file program tmpfile buffer display args) - (delete-file tmpfile))) - ;; org-babel-call-process-region-original is the original emacs - ;; definition. It is in scope from the let binding in - ;; org-babel-execute-src-block - (apply org-babel-call-process-region-original - start end program delete buffer display args))) - (defun org-babel-local-file-name (file) "Return the local name component of FILE." (or (file-remote-p file 'localname) file)) -- 2.7.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: Errors get suppressed by org-babel-execute-src-block 2016-02-10 20:23 ` Aaron Ecay @ 2016-02-10 22:57 ` Nicolas Goaziou 2016-02-12 17:22 ` Aaron Ecay 2016-02-11 17:08 ` Nick Dokos 1 sibling, 1 reply; 11+ messages in thread From: Nicolas Goaziou @ 2016-02-10 22:57 UTC (permalink / raw) To: Gary Oberbrunner; +Cc: Orgmode Mailing List Hello, Aaron Ecay <aaronecay@gmail.com> writes: > I’d like to install the attached patch to master, if there are no > objections. That should resolve your concern as well as cleaning up the > dead code. No objection, but... > +(require 'subr-x) ; For `if-let' ... you are not using `if-let' anywhere if this patch. Besides, we still cannot use subr-x, since it is a 24.4 library, and, AFAIR, we didn't drop support for 24.3 yet. Regards, -- Nicolas Goaziou ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Errors get suppressed by org-babel-execute-src-block 2016-02-10 22:57 ` Nicolas Goaziou @ 2016-02-12 17:22 ` Aaron Ecay 0 siblings, 0 replies; 11+ messages in thread From: Aaron Ecay @ 2016-02-12 17:22 UTC (permalink / raw) To: Nicolas Goaziou, Gary Oberbrunner; +Cc: Orgmode Mailing List Hi Nicolas, 2016ko otsailak 10an, Nicolas Goaziou-ek idatzi zuen: > > Hello, > > Aaron Ecay <aaronecay@gmail.com> writes: > >> I’d like to install the attached patch to master, if there are no >> objections. That should resolve your concern as well as cleaning up the >> dead code. > > No objection, but... > >> +(require 'subr-x) ; For `if-let' > > ... you are not using `if-let' anywhere if this patch. Good catch. I had used it in a previous version, then refactored it away but forgot to remove the require. I’ll push the patch once I have a chance to rebase it on top of your recent babel changes. > Besides, we still cannot use subr-x, since it is a 24.4 library, and, > AFAIR, we didn't drop support for 24.3 yet. I’ll keep that in mind. Thanks, -- Aaron Ecay ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Errors get suppressed by org-babel-execute-src-block 2016-02-10 20:23 ` Aaron Ecay 2016-02-10 22:57 ` Nicolas Goaziou @ 2016-02-11 17:08 ` Nick Dokos 2016-02-12 17:31 ` Aaron Ecay 1 sibling, 1 reply; 11+ messages in thread From: Nick Dokos @ 2016-02-11 17:08 UTC (permalink / raw) To: emacs-orgmode Aaron Ecay <aaronecay@gmail.com> writes: > Hi Gary, > > 2016ko otsailak 8an, Gary Oberbrunner-ek idatzi zuen: >> >> org-babel-execute-src-block has a big unwind-protect that basically eats >> all errors inside it. I don't think it used to do that. > > The unwind-protect exists since 2010, so you’re probably mistaken about > that (depending on your frame of reference for “used to”...) > > That said, the code in question seems very questionable to me. First > of all, the unwind-protect should not be needed at all, due to the use > of (f)let (IOW, if the unwind-protect was ever needed, it was to paper > over a bug in emacs which should no longer exist). Secondly, in 2012 > commit 57104f9f changed an “org-flet” to a “let” in this function, > which is incorrect (since elisp is a lisp-2). So the whole thing has > been effectively a no-op since then. > > I’d like to install the attached patch to master, if there are no > objections. That should resolve your concern as well as cleaning up the > dead code. > Not sure if there are tests for remote babel execution, but if not, please make sure to test that (with :dir set to some directory on a different machine). Michael Albinus had done some work to get that working a few years ago: he did not want to learn the ins and outs of org-mode, so he did the minimal amount possible to square babel with tramp: he did not touch the cruft and there is a lot of cruft in that code, but I worry that some of what he did might go away with your patch (to be clear: I have not looked at the patch in any detail, and I have not gone back to see whether it overlaps with what Michael did). In particular, Loris Bennett had some simple tests that were failing before Michael fixed things up, so you might want to look at the two threads: http://thread.gmane.org/gmane.emacs.orgmode/60102 and http://thread.gmane.org/gmane.emacs.orgmode/63586 {Warning: they are long and as I said, maybe not even relevant] BTW, I tried to test, but applying the patch to current master (8eff64cffee8627578edc33de485201ae579fafe) fails: ,---- | $ git apply --verbose ~/src/org/babel/0001-ob-core-remove-cruft.patch | Checking patch lisp/ob-core.el... | error: while searching for: | nil)) | | ;; dynamically scoped for tramp | (defvar org-babel-call-process-region-original nil) | (defvar org-babel-library-of-babel) | (defvar org-edit-src-content-indentation) | (defvar org-src-lang-modes) | | (declare-function outline-show-all "outline" ()) | (declare-function org-get-indentation "org" (&optional line)) | | error: patch failed: lisp/ob-core.el:36 | error: lisp/ob-core.el: patch does not apply `---- -- Nick ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Errors get suppressed by org-babel-execute-src-block 2016-02-11 17:08 ` Nick Dokos @ 2016-02-12 17:31 ` Aaron Ecay 2016-02-12 17:59 ` Nick Dokos 0 siblings, 1 reply; 11+ messages in thread From: Aaron Ecay @ 2016-02-12 17:31 UTC (permalink / raw) To: Nick Dokos, emacs-orgmode Hi Nick, 2016ko otsailak 11an, Nick Dokos-ek idatzi zuen: > > Not sure if there are tests for remote babel execution, AFAIK no. It would be useful to have these. All the machines I use run Linux and are configured very similarly. Many of the problems in remote execution come from differences in environments. So it would be good if someone could figure out how to test common configurations. Until that happens, we have to rely on ad hoc testing or user reports. > but if not, please make sure to test that (with :dir set to some > directory on a different machine). Michael Albinus had done some work > to get that working a few years ago: AFAICS my patch does not affect the work Michael did. I will test some simple remote execution scenarios before I push the patch, just in case. > BTW, I tried to test, but applying the patch to current master > (8eff64cffee8627578edc33de485201ae579fafe) fails: Nicolas pushed some big changes to babel just after I sent my patch. (Big in terms of the diff to the code, not necessarily in terms of changing user behavior). I haven’t looked in detail, but it’s almost guaranteed that the patch now needs to be rebased, which I’ll do as soon as I can. -- Aaron Ecay ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Errors get suppressed by org-babel-execute-src-block 2016-02-12 17:31 ` Aaron Ecay @ 2016-02-12 17:59 ` Nick Dokos 2016-02-14 16:07 ` Aaron Ecay 0 siblings, 1 reply; 11+ messages in thread From: Nick Dokos @ 2016-02-12 17:59 UTC (permalink / raw) To: emacs-orgmode Aaron Ecay <aaronecay@gmail.com> writes: > Hi Nick, > > 2016ko otsailak 11an, Nick Dokos-ek idatzi zuen: >> >> Not sure if there are tests for remote babel execution, > > AFAIK no. It would be useful to have these. All the machines I use run > Linux and are configured very similarly. Many of the problems in remote > execution come from differences in environments. So it would be good if > someone could figure out how to test common configurations. Until that > happens, we have to rely on ad hoc testing or user reports. > I think tramp is pretty good at handling environment differences (and if not, Michael is pretty responsive at modifying it to fix whatever breakage people uncover), so for org-mode even simple tests in homogeneous environments should be useful (e.g. using localhost as the "remote", or the name of the machine that runs the test: not sure how much optimization is done at various levels, but it might be enough to test the remote code paths.) >> but if not, please make sure to test that (with :dir set to some >> directory on a different machine). Michael Albinus had done some work >> to get that working a few years ago: > > AFAICS my patch does not affect the work Michael did. I will test some > simple remote execution scenarios before I push the patch, just in case. > OK - good! >> BTW, I tried to test, but applying the patch to current master >> (8eff64cffee8627578edc33de485201ae579fafe) fails: > > Nicolas pushed some big changes to babel just after I sent my patch. > (Big in terms of the diff to the code, not necessarily in terms of > changing user behavior). I haven’t looked in detail, but it’s almost > guaranteed that the patch now needs to be rebased, which I’ll do as > soon as I can. Thanks! If you post the patch, I'll try out some simple tests over the weekend too. -- Nick ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Errors get suppressed by org-babel-execute-src-block 2016-02-12 17:59 ` Nick Dokos @ 2016-02-14 16:07 ` Aaron Ecay 2016-02-20 13:01 ` Nicolas Goaziou 0 siblings, 1 reply; 11+ messages in thread From: Aaron Ecay @ 2016-02-14 16:07 UTC (permalink / raw) To: Nick Dokos, emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 999 bytes --] Hi Nick, 2016ko otsailak 12an, Nick Dokos-ek idatzi zuen: >> AFAICS my patch does not affect the work Michael did. I will test some >> simple remote execution scenarios before I push the patch, just in case. >> > > OK - good! I’ve tested, and remote execution seems to work (when tramp works for me, which it does not do consistently – a known problem) > >>> BTW, I tried to test, but applying the patch to current master >>> (8eff64cffee8627578edc33de485201ae579fafe) fails: >> >> Nicolas pushed some big changes to babel just after I sent my patch. >> (Big in terms of the diff to the code, not necessarily in terms of >> changing user behavior). I haven’t looked in detail, but it’s almost >> guaranteed that the patch now needs to be rebased, which I’ll do as >> soon as I can. > > Thanks! If you post the patch, I'll try out some simple tests over the > weekend too. It’s now split into two patches, attached to this message. -- Aaron Ecay [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: 0001-Add-org-babel-make-language-alias-function.patch --] [-- Type: text/x-diff, Size: 2260 bytes --] From 1e0f0e335bf594c6fe50581deb0775971a97f4f4 Mon Sep 17 00:00:00 2001 From: Aaron Ecay <aaronecay@gmail.com> Date: Sun, 14 Feb 2016 15:14:30 +0000 Subject: [PATCH 1/2] Add org-babel-make-language-alias function. * lisp/ob-core.el (org-babel-make-language-alias): New function. * lisp/ob-emacs-lisp.el: Use it. Previously this was accomplished via org-src-lang-modes, but that is a poor solution, as it conflates the remapping of language mode names with the creation of aliases. --- lisp/ob-core.el | 20 ++++++++++++++++++++ lisp/ob-emacs-lisp.el | 2 ++ 2 files changed, 22 insertions(+) diff --git a/lisp/ob-core.el b/lisp/ob-core.el index 96296e0..7bd1156 100644 --- a/lisp/ob-core.el +++ b/lisp/ob-core.el @@ -3152,6 +3152,26 @@ plus the parameter value." (and (member "graphics" (cdr (assq :result-params params))) (cdr (assq :file params)))) +(defun org-babel-make-language-alias (new old) + "Make source blocks of type NEW aliases for those of type OLD. + +NEW and OLD should be strings. This function should be called +after the babel API for OLD-type source blocks is fully defined. + +Callers of this function will probably want to add an entry to +`org-src-lang-modes' as well." + (dolist (fn '("execute" "expand-body" "prep-session" + "variable-assignments" "load-session")) + (let ((sym (intern-soft (concat "org-babel-" fn ":" old)))) + (when (and sym (fboundp sym)) + (defalias (intern (concat "org-babel-" fn ":" new)) sym)))) + ;; Technically we don't need a `dolist' for just one variable, but + ;; we keep it for symmetry/ease of future expansion. + (dolist (var '("default-header-args")) + (let ((sym (intern-soft (concat "org-babel-" var ":" old)))) + (when (and sym (boundp sym)) + (defvaralias (intern (concat "org-babel-" var ":" new)) sym))))) + (provide 'ob-core) ;; Local variables: diff --git a/lisp/ob-emacs-lisp.el b/lisp/ob-emacs-lisp.el index 18936a6..2eb2721 100644 --- a/lisp/ob-emacs-lisp.el +++ b/lisp/ob-emacs-lisp.el @@ -72,6 +72,8 @@ (org-babel-pick-name (cdr (assoc :rowname-names params)) (cdr (assoc :rownames params)))))))) +(org-babel-make-language-alias "elisp" "emacs-lisp") + (provide 'ob-emacs-lisp) -- 2.7.1 [-- Attachment #3: 0002-ob-core-remove-cruft.patch --] [-- Type: text/x-diff, Size: 7571 bytes --] From c5cf453d6f0c590dd99e9f607b2897965460f33f Mon Sep 17 00:00:00 2001 From: Aaron Ecay <aaronecay@gmail.com> Date: Sun, 14 Feb 2016 15:20:39 +0000 Subject: [PATCH 2/2] ob-core: remove cruft MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * lisp/ob-core.el (org-babel-execute-src-block): Simplify. (org-babel-tramp-handle-call-process-region): Remove. Commit 57104f9f changed an org-flet to a let, rendering the whole apparatus of modifying call-process-region inoperative. Supposedly this was put in place to work around a bug in tramp-handle-call-process-region, which was removed from tramp in 2012 (after being renamed to tramp-sh-call-process-region). *shrug* This commit just removes the whole thing. It also no longer consults ‘org-src-lang-modes’, following on from commit 6287416. --- lisp/ob-core.el | 132 ++++++++++++++++++++------------------------------------ 1 file changed, 46 insertions(+), 86 deletions(-) diff --git a/lisp/ob-core.el b/lisp/ob-core.el index 7bd1156..14226bf 100644 --- a/lisp/ob-core.el +++ b/lisp/ob-core.el @@ -35,7 +35,6 @@ ".exe" nil)) -(defvar org-babel-call-process-region-original nil) (defvar org-babel-library-of-babel) (defvar org-edit-src-content-indentation) (defvar org-src-lang-modes) @@ -547,7 +546,6 @@ match group 9. Other match groups are defined in (concat org-babel-name-regexp (regexp-quote name) "[ \t]*$")) ;;; functions -(defvar call-process-region) (defvar org-babel-current-src-block-location nil "Marker pointing to the src block currently being executed. This may also point to a call line or an inline code block. If @@ -678,71 +676,52 @@ block." (default-directory (or (and dir (file-name-as-directory (expand-file-name dir))) default-directory)) - (org-babel-call-process-region-original ;; for tramp handler - (or (org-bound-and-true-p - org-babel-call-process-region-original) - (symbol-function 'call-process-region))) - result cmd) - (unwind-protect - (let ((call-process-region - (lambda (&rest args) - (apply 'org-babel-tramp-handle-call-process-region - args)))) - (let ((lang-check - (lambda (f) - (let ((f (intern (concat "org-babel-execute:" f)))) - (when (fboundp f) f))))) - (setq cmd - (or (funcall lang-check lang) - (funcall lang-check - (symbol-name - (cdr (assoc lang org-src-lang-modes)))) - (error "No org-babel-execute function for %s!" - lang)))) - (message "executing %s code block%s..." - (capitalize lang) - (if (nth 4 info) (format " (%s)" (nth 4 info)) "")) - (if (member "none" result-params) - (progn - (funcall cmd body params) - (message "result silenced") - (setq result nil)) - (setq result - (let ((result (funcall cmd body params))) - (if (and (eq (cdr (assoc :result-type params)) - 'value) - (or (member "vector" result-params) - (member "table" result-params)) - (not (listp result))) - (list (list result)) result))) - ;; If non-empty result and :file then write to :file. - (when (cdr (assoc :file params)) - (when result - (with-temp-file (cdr (assoc :file params)) - (insert - (org-babel-format-result - result (cdr (assoc :sep (nth 2 info))))))) - (setq result (cdr (assoc :file params)))) - ;; Possibly perform post process provided its appropriate. - (when (cdr (assoc :post params)) - (let ((*this* (if (cdr (assoc :file params)) - (org-babel-result-to-file - (cdr (assoc :file params)) - (when (assoc :file-desc params) - (or (cdr (assoc :file-desc params)) - result))) - result))) - (setq result (org-babel-ref-resolve - (cdr (assoc :post params)))) - (when (cdr (assoc :file params)) - (setq result-params - (remove "file" result-params))))) - (org-babel-insert-result - result result-params info new-hash lang)) - (run-hooks 'org-babel-after-execute-hook) - result) - (setq call-process-region - 'org-babel-call-process-region-original))))))))) + (cmd (intern (concat "org-babel-execute:" lang))) + result) + (unless (fboundp cmd) + (error "No org-babel-execute function for %s!" lang)) + (message "executing %s code block%s..." + (capitalize lang) + (if (nth 4 info) (format " (%s)" (nth 4 info)) "")) + (if (member "none" result-params) + (progn + (funcall cmd body params) + (message "result silenced") + (setq result nil)) + (setq result + (let ((result (funcall cmd body params))) + (if (and (eq (cdr (assoc :result-type params)) + 'value) + (or (member "vector" result-params) + (member "table" result-params)) + (not (listp result))) + (list (list result)) result))) + ;; If non-empty result and :file then write to :file. + (when (cdr (assoc :file params)) + (when result + (with-temp-file (cdr (assoc :file params)) + (insert + (org-babel-format-result + result (cdr (assoc :sep (nth 2 info))))))) + (setq result (cdr (assoc :file params)))) + ;; Possibly perform post process provided its appropriate. + (when (cdr (assoc :post params)) + (let ((*this* (if (cdr (assoc :file params)) + (org-babel-result-to-file + (cdr (assoc :file params)) + (when (assoc :file-desc params) + (or (cdr (assoc :file-desc params)) + result))) + result))) + (setq result (org-babel-ref-resolve + (cdr (assoc :post params)))) + (when (cdr (assoc :file params)) + (setq result-params + (remove "file" result-params))))) + (org-babel-insert-result + result result-params info new-hash lang)) + (run-hooks 'org-babel-after-execute-hook) + result))))))) (defun org-babel-expand-body:generic (body params &optional var-lines) "Expand BODY with PARAMS. @@ -2974,25 +2953,6 @@ character of the string." (org-reverse-string (org-babel-chomp (org-reverse-string string) regexp)) regexp)) -(defun org-babel-tramp-handle-call-process-region - (start end program &optional delete buffer display &rest args) - "Use Tramp to handle `call-process-region'. -Fixes a bug in `tramp-handle-call-process-region'." - (if (and (featurep 'tramp) (file-remote-p default-directory)) - (let ((tmpfile (tramp-compat-make-temp-file ""))) - (write-region start end tmpfile) - (when delete (delete-region start end)) - (unwind-protect - ;; (apply 'call-process program tmpfile buffer display args) - ;; bug in tramp - (apply 'process-file program tmpfile buffer display args) - (delete-file tmpfile))) - ;; org-babel-call-process-region-original is the original emacs - ;; definition. It is in scope from the let binding in - ;; org-babel-execute-src-block - (apply org-babel-call-process-region-original - start end program delete buffer display args))) - (defun org-babel-local-file-name (file) "Return the local name component of FILE." (or (file-remote-p file 'localname) file)) -- 2.7.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: Errors get suppressed by org-babel-execute-src-block 2016-02-14 16:07 ` Aaron Ecay @ 2016-02-20 13:01 ` Nicolas Goaziou 2016-02-20 13:33 ` Nick Dokos 0 siblings, 1 reply; 11+ messages in thread From: Nicolas Goaziou @ 2016-02-20 13:01 UTC (permalink / raw) To: Nick Dokos; +Cc: emacs-orgmode Hello, Aaron Ecay <aaronecay@gmail.com> writes: > I’ve tested, and remote execution seems to work (when tramp works for > me, which it does not do consistently – a known problem) Thank you. IMO, it looks good. You might as well push it and wait for more feedback, if needed. Regards, -- Nicolas Goaziou ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Errors get suppressed by org-babel-execute-src-block 2016-02-20 13:01 ` Nicolas Goaziou @ 2016-02-20 13:33 ` Nick Dokos 2016-02-22 16:05 ` Aaron Ecay 0 siblings, 1 reply; 11+ messages in thread From: Nick Dokos @ 2016-02-20 13:33 UTC (permalink / raw) To: emacs-orgmode Nicolas Goaziou <mail@nicolasgoaziou.fr> writes: > Hello, > > Aaron Ecay <aaronecay@gmail.com> writes: > >> I’ve tested, and remote execution seems to work (when tramp works for >> me, which it does not do consistently – a known problem) > > Thank you. > > IMO, it looks good. You might as well push it and wait for more > feedback, if needed. > > Regards, I did some testing as well and it seems to work. -- Nick ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Errors get suppressed by org-babel-execute-src-block 2016-02-20 13:33 ` Nick Dokos @ 2016-02-22 16:05 ` Aaron Ecay 0 siblings, 0 replies; 11+ messages in thread From: Aaron Ecay @ 2016-02-22 16:05 UTC (permalink / raw) To: Nick Dokos, emacs-orgmode Hi Nick, hi Nicolas, 2016ko otsailak 20an, Nick Dokos-ek idatzi zuen: >> IMO, it looks good. You might as well push it and wait for more >> feedback, if needed. >> >> Regards, > > I did some testing as well and it seems to work. Thanks for the feedback. Pushed to master. -- Aaron Ecay ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2016-02-22 16:05 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-02-08 19:02 Errors get suppressed by org-babel-execute-src-block Gary Oberbrunner 2016-02-10 20:23 ` Aaron Ecay 2016-02-10 22:57 ` Nicolas Goaziou 2016-02-12 17:22 ` Aaron Ecay 2016-02-11 17:08 ` Nick Dokos 2016-02-12 17:31 ` Aaron Ecay 2016-02-12 17:59 ` Nick Dokos 2016-02-14 16:07 ` Aaron Ecay 2016-02-20 13:01 ` Nicolas Goaziou 2016-02-20 13:33 ` Nick Dokos 2016-02-22 16:05 ` Aaron Ecay
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).