From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Schulte Subject: Re: [PATCH] ob-ruby.el fix for :session parameter Date: Mon, 21 Oct 2013 13:09:53 -0600 Message-ID: <87y55msany.fsf@gmail.com> References: <87hacatt9f.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:48952) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VYKrx-0007w1-8R for emacs-orgmode@gnu.org; Mon, 21 Oct 2013 15:10:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VYKrs-000620-Mv for emacs-orgmode@gnu.org; Mon, 21 Oct 2013 15:10:25 -0400 Received: from mail-pa0-x235.google.com ([2607:f8b0:400e:c03::235]:35615) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VYKrs-00061w-BC for emacs-orgmode@gnu.org; Mon, 21 Oct 2013 15:10:20 -0400 Received: by mail-pa0-f53.google.com with SMTP id kq14so8536769pab.12 for ; Mon, 21 Oct 2013 12:10:19 -0700 (PDT) In-Reply-To: (Oleh's message of "Mon, 21 Oct 2013 19:55:18 +0200") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Oleh Cc: org mode Applied, Thanks! Oleh writes: > Hi Eric, > > Here's the update. > > regards, > Oleh > > On Mon, Oct 21, 2013 at 7:42 PM, Eric Schulte wrote: >> Hi Oleh, >> >> Thanks for submitting this patch. Instead of the current progn/setq >> approach could you simply add your the "conf.echo=false\n" lines to the >> following list? >> >> (list body org-babel-ruby-eoe-indicator) >> >> With that change I'd be happy to apply this patch. >> >> Also, extra thanks for submitting tests along with your patch, much >> appreciated! >> >> Oleh writes: >> >>> Hi all, >>> >>> I attach a patch to change from this behavior: >>> >>> #+begin_src ruby :session :results output >>> s = "1" >>> s = "2" >>> s = "3" >>> puts s >>> #+end_src >>> >>> #+RESULTS: >>> : => "1" >>> : => "2" >>> : => "3" >>> : 3 >>> >>> To this behavior >>> >>> #+begin_src ruby :session :results output >>> s = "1" >>> s = "2" >>> s = "3" >>> puts s >>> #+end_src >>> >>> #+RESULTS: >>> : >>> : 3 >>> >>> I just wrap the code in "conf.echo=false\n" and "\nconf.echo=true\n". >>> I have to set it back to true, otherwise it hangs. >>> >>> regards, >>> Oleh >>> >>> From e27f248f58258b78280e69cd78140e935527245e Mon Sep 17 00:00:00 2001 >>> From: Oleh Krehel >>> Date: Mon, 21 Oct 2013 13:03:28 +0200 >>> Subject: [PATCH] ob-ruby.el: fix result of :results output :session >>> combination. >>> >>> * lisp/ob-ruby.el (org-babel-ruby-evaluate): >>> set conf.echo=false for the duration of evaluation. >>> >>> * testing/lisp/test-ob-ruby.el (test-ob-ruby/session-output): new test. >>> --- >>> lisp/ob-ruby.el | 32 +++++++++++++++-------------- >>> testing/lisp/test-ob-ruby.el | 49 ++++++++++++++++++++++++++++++++++++++++++++ >>> 2 files changed, 66 insertions(+), 15 deletions(-) >>> create mode 100644 testing/lisp/test-ob-ruby.el >>> >>> diff --git a/lisp/ob-ruby.el b/lisp/ob-ruby.el >>> index af52831..ddbd0f8 100644 >>> --- a/lisp/ob-ruby.el >>> +++ b/lisp/ob-ruby.el >>> @@ -213,21 +213,23 @@ return the value of the last statement in BODY, as elisp." >>> ;; comint session evaluation >>> (case result-type >>> (output >>> - (mapconcat >>> - #'identity >>> - (butlast >>> - (split-string >>> - (mapconcat >>> - #'org-babel-trim >>> - (butlast >>> - (org-babel-comint-with-output >>> - (buffer org-babel-ruby-eoe-indicator t body) >>> - (mapc >>> - (lambda (line) >>> - (insert (org-babel-chomp line)) (comint-send-input nil t)) >>> - (list body org-babel-ruby-eoe-indicator)) >>> - (comint-send-input nil t)) 2) >>> - "\n") "[\r\n]")) "\n")) >>> + (progn >>> + (setq body (concat "conf.echo=false\n" body "\nconf.echo=true\n")) >>> + (mapconcat >>> + #'identity >>> + (butlast >>> + (split-string >>> + (mapconcat >>> + #'org-babel-trim >>> + (butlast >>> + (org-babel-comint-with-output >>> + (buffer org-babel-ruby-eoe-indicator t body) >>> + (mapc >>> + (lambda (line) >>> + (insert (org-babel-chomp line)) (comint-send-input nil t)) >>> + (list body org-babel-ruby-eoe-indicator)) >>> + (comint-send-input nil t)) 2) >>> + "\n") "[\r\n]")) "\n"))) >>> (value >>> (let* ((tmp-file (org-babel-temp-file "ruby-")) >>> (ppp (or (member "code" result-params) >>> diff --git a/testing/lisp/test-ob-ruby.el b/testing/lisp/test-ob-ruby.el >>> new file mode 100644 >>> index 0000000..74cf163 >>> --- /dev/null >>> +++ b/testing/lisp/test-ob-ruby.el >>> @@ -0,0 +1,49 @@ >>> +;;; test-ob-ruby.el --- tests for ob-ruby.el >>> + >>> +;; Copyright (c) 2013 Oleh Krehel >>> +;; Authors: Oleh Krehel >>> + >>> +;; This program is free software; you can redistribute it and/or modify >>> +;; it under the terms of the GNU General Public License as published by >>> +;; the Free Software Foundation, either version 3 of the License, or >>> +;; (at your option) any later version. >>> + >>> +;; This program is distributed in the hope that it will be useful, >>> +;; but WITHOUT ANY WARRANTY; without even the implied warranty of >>> +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >>> +;; GNU General Public License for more details. >>> + >>> +;; You should have received a copy of the GNU General Public License >>> +;; along with this program. If not, see . >>> + >>> +;;; Code: >>> +(org-test-for-executable "ruby") >>> +(unless (featurep 'ob-ruby) >>> + (signal 'missing-test-dependency "Support for Ruby code blocks")) >>> + >>> +(ert-deftest test-ob-ruby/session-output () >>> + (should (equal (org-test-with-temp-text "#+begin_src ruby :session :results output >>> +s = \"1\" >>> +s = \"2\" >>> +s = \"3\" >>> +puts s >>> +#+end_src" >>> + (org-ctrl-c-ctrl-c) >>> + (substring-no-properties >>> + (buffer-string))) >>> + "#+begin_src ruby :session :results output >>> +s = \"1\" >>> +s = \"2\" >>> +s = \"3\" >>> +puts s >>> +#+end_src >>> + >>> +#+RESULTS: >>> +: >>> +: 3 >>> + >>> +"))) >>> + >>> +(provide 'test-ob-ruby) >>> + >>> +;;; test-ob-ruby.el ends here >> >> -- >> Eric Schulte >> https://cs.unm.edu/~eschulte >> PGP: 0x614CA05D > > From 089bbf66a7ba632a34dacb4f42479d7d55dd49bd Mon Sep 17 00:00:00 2001 > From: Oleh Krehel > Date: Mon, 21 Oct 2013 13:03:28 +0200 > Subject: [PATCH] ob-ruby.el: fix result of :results output :session > combination. > > * lisp/ob-ruby.el (org-babel-ruby-evaluate): > set conf.echo=false for the duration of evaluation. > > * testing/lisp/test-ob-ruby.el (test-ob-ruby/session-output): new test. > --- > lisp/ob-ruby.el | 2 +- > testing/lisp/test-ob-ruby.el | 49 ++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 50 insertions(+), 1 deletion(-) > create mode 100644 testing/lisp/test-ob-ruby.el > > diff --git a/lisp/ob-ruby.el b/lisp/ob-ruby.el > index af52831..eea517d 100644 > --- a/lisp/ob-ruby.el > +++ b/lisp/ob-ruby.el > @@ -225,7 +225,7 @@ return the value of the last statement in BODY, as elisp." > (mapc > (lambda (line) > (insert (org-babel-chomp line)) (comint-send-input nil t)) > - (list body org-babel-ruby-eoe-indicator)) > + (list "conf.echo=false" body "conf.echo=true" org-babel-ruby-eoe-indicator)) > (comint-send-input nil t)) 2) > "\n") "[\r\n]")) "\n")) > (value > diff --git a/testing/lisp/test-ob-ruby.el b/testing/lisp/test-ob-ruby.el > new file mode 100644 > index 0000000..74cf163 > --- /dev/null > +++ b/testing/lisp/test-ob-ruby.el > @@ -0,0 +1,49 @@ > +;;; test-ob-ruby.el --- tests for ob-ruby.el > + > +;; Copyright (c) 2013 Oleh Krehel > +;; Authors: Oleh Krehel > + > +;; This program is free software; you can redistribute it and/or modify > +;; it under the terms of the GNU General Public License as published by > +;; the Free Software Foundation, either version 3 of the License, or > +;; (at your option) any later version. > + > +;; This program is distributed in the hope that it will be useful, > +;; but WITHOUT ANY WARRANTY; without even the implied warranty of > +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +;; GNU General Public License for more details. > + > +;; You should have received a copy of the GNU General Public License > +;; along with this program. If not, see . > + > +;;; Code: > +(org-test-for-executable "ruby") > +(unless (featurep 'ob-ruby) > + (signal 'missing-test-dependency "Support for Ruby code blocks")) > + > +(ert-deftest test-ob-ruby/session-output () > + (should (equal (org-test-with-temp-text "#+begin_src ruby :session :results output > +s = \"1\" > +s = \"2\" > +s = \"3\" > +puts s > +#+end_src" > + (org-ctrl-c-ctrl-c) > + (substring-no-properties > + (buffer-string))) > + "#+begin_src ruby :session :results output > +s = \"1\" > +s = \"2\" > +s = \"3\" > +puts s > +#+end_src > + > +#+RESULTS: > +: > +: 3 > + > +"))) > + > +(provide 'test-ob-ruby) > + > +;;; test-ob-ruby.el ends here -- Eric Schulte https://cs.unm.edu/~eschulte PGP: 0x614CA05D