Ernesto Durante <stobos...@gmail.com> writes: > Eric Schulte <schulte.e...@gmail.com> writes: > > Hi Eric, > > You will find in attachment three patches >
Hi Ernesto, Thank you for sending these along, they look great. > > + First patch, modify org-babel-eval to load compilation-mode in case >of errors > Applied. > > + Second patch, modify org-babel-eval to deal with Microsoft visual > C++ errors by concatenating the standard output with the standard error > Not applied. I believe that concatenating STDOUT to STDERR for *every* language simply because Microsoft Visual Studio does not correctly use STDERR is not the correct approach here. Perhaps a more tailored solution may be possible for this problem which will not have global effects. > > + Third patch, add to ob-C the missing function >org-babel-expand-body:cpp > Applied. Thanks! Eric > > Best > Ernesto > > From 3e4f163a2b357c58a52b7811539ff4032d432aaf Mon Sep 17 00:00:00 2001 > From: Ernesto Durante <edurante@localhost.localdomain> > Date: Mon, 25 Aug 2014 17:27:24 +0200 > Subject: [PATCH 1/3] org-babel-eval: compilation-mode to deal with errors in > (C/C++/D) > > --- > lisp/ob-eval.el | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/lisp/ob-eval.el b/lisp/ob-eval.el > index 057590f..9fbbb42 100644 > --- a/lisp/ob-eval.el > +++ b/lisp/ob-eval.el > @@ -57,6 +57,12 @@ STDERR with `org-babel-eval-error-notify'." > (progn > (with-current-buffer err-buff > (org-babel-eval-error-notify exit-code (buffer-string))) > + (save-excursion > + (when (get-buffer org-babel-error-buffer-name) > + (with-current-buffer org-babel-error-buffer-name > + (compilation-mode) > + ;;compilation-mode enforces read-only > + (read-only-mode 0)))) > nil) > (buffer-string))))) > > -- > 1.8.3.1 > > From 9e306dbb39325998a5149840b229ffa802ec40e9 Mon Sep 17 00:00:00 2001 > From: Ernesto Durante <edurante@localhost.localdomain> > Date: Mon, 25 Aug 2014 17:54:51 +0200 > Subject: [PATCH 2/3] org-babel-eval: showing Microsoft Visual C++ errors > > --- > lisp/ob-eval.el | 27 +++++++++++++++------------ > 1 file changed, 15 insertions(+), 12 deletions(-) > > diff --git a/lisp/ob-eval.el b/lisp/ob-eval.el > index 9fbbb42..0e69583 100644 > --- a/lisp/ob-eval.el > +++ b/lisp/ob-eval.el > @@ -53,18 +53,21 @@ STDERR with `org-babel-eval-error-notify'." > (setq exit-code > (org-babel--shell-command-on-region > (point-min) (point-max) cmd err-buff)) > - (if (or (not (numberp exit-code)) (> exit-code 0)) > - (progn > - (with-current-buffer err-buff > - (org-babel-eval-error-notify exit-code (buffer-string))) > - (save-excursion > - (when (get-buffer org-babel-error-buffer-name) > - (with-current-buffer org-babel-error-buffer-name > - (compilation-mode) > - ;;compilation-mode enforces read-only > - (read-only-mode 0)))) > - nil) > - (buffer-string))))) > + (let ((outb-str (buffer-string))) > + ;;outb-str holds standard output + body > + (if (or (not (numberp exit-code)) (> exit-code 0)) > + (progn > + (with-current-buffer err-buff > + (org-babel-eval-error-notify exit-code > + (concat outb-str (buffer-string)))) > + (save-excursion > + (when (get-buffer org-babel-error-buffer-name) > + (with-current-buffer org-babel-error-buffer-name > + (compilation-mode) > + ;;compilation-mode enforces read-only > + (read-only-mode 0)))) > + nil) > + outb-str))))) > > (defun org-babel-eval-read-file (file) > "Return the contents of FILE as a string." > -- > 1.8.3.1 > > From c93e02a52d57a5eeb7b9b8aba04c6764f8122d5c Mon Sep 17 00:00:00 2001 > From: Ernesto Durante <edurante@localhost.localdomain> > Date: Mon, 25 Aug 2014 18:16:01 +0200 > Subject: [PATCH 3/3] ob-C: fix missing function org-babel-expand-body:cpp > > --- > lisp/ob-C.el | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/lisp/ob-C.el b/lisp/ob-C.el > index 2e146d4..076276e 100644 > --- a/lisp/ob-C.el > +++ b/lisp/ob-C.el > @@ -82,6 +82,11 @@ is currently being evaluated.") > This function calls `org-babel-execute:C++'." > (org-babel-execute:C++ body params)) > > +(defun org-babel-expand-body:cpp (body params) > + "Expand a block of C++ code with org-babel according to it's > +header arguments." > + (org-babel-expand-body:C++ body params)) > + > (defun org-babel-execute:C++ (body params) > "Execute a block of C++ code with org-babel. > This function is called by `org-babel-execute-src-block'." -- Eric Schulte https://cs.unm.edu/~eschulte PGP: 0x614CA05D (see https://u.fsf.org/yw)