From mboxrd@z Thu Jan 1 00:00:00 1970 From: Neil Jerram Subject: Re: Scheme output results Date: Thu, 7 Sep 2017 21:27:55 +0100 Message-ID: <8268c181-beb7-be7b-41cf-4742f1d64e43@ossau.homelinux.net> References: <1498bbde-0912-a806-f665-47b6f8c5e6e4@ossau.homelinux.net> <877eyzo7q5.fsf@nicolasgoaziou.fr> <66634adc-b42a-58eb-02fc-f043e54452e4@ossau.homelinux.net> <87efs69e2a.fsf@nicolasgoaziou.fr> <87wp5p436h.fsf@bzg.fr> <20170831122138.5992523.3161.81713@ossau.homelinux.net> <401aa569-a73c-83c6-407f-31f83dc3abe0@ossau.homelinux.net> <87y3pslssx.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------7ACB7FA6F9C5EC70703613DD" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:46057) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dq3PE-0008SV-Bn for emacs-orgmode@gnu.org; Thu, 07 Sep 2017 16:28:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dq3P9-0003Ts-87 for emacs-orgmode@gnu.org; Thu, 07 Sep 2017 16:28:08 -0400 Received: from smtp-out-5.talktalk.net ([62.24.135.69]:40778) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dq3P8-0003Qx-Sp for emacs-orgmode@gnu.org; Thu, 07 Sep 2017 16:28:03 -0400 Received: from [192.168.11.3] (host-2-96-111-213.as13285.net [2.96.111.213]) by arudy.520b.com (Postfix) with ESMTPSA id 0BBB838051 for ; Thu, 7 Sep 2017 21:18:21 +0100 (BST) In-Reply-To: <87y3pslssx.fsf@nicolasgoaziou.fr> Content-Language: en-US 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" To: emacs-orgmode@gnu.org This is a multi-part message in MIME format. --------------7ACB7FA6F9C5EC70703613DD Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Hi Nicolas, On 05/09/17 22:49, Nicolas Goaziou wrote: > Hello, > > Neil Jerram writes: > >> Hi Bastien & Nicolas, >> >> I've been told by "Theodore Teah via RT " >> that my copyright assignment is in place now. > Great! > > I tried to build Org with your patch, but it generates compilation > warnings. Could you look into it? > > Thank you. > > Regards, > I believe the attached patch fixes those problems. Regards - Neil --------------7ACB7FA6F9C5EC70703613DD Content-Type: text/x-patch; name="0001-Improve-Scheme-code-evaluation.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0001-Improve-Scheme-code-evaluation.patch" >From 35d3742774335decfcf8e4e5ab8e4101332a39a5 Mon Sep 17 00:00:00 2001 From: Neil Jerram Date: Sun, 20 Aug 2017 17:25:58 +0100 Subject: [PATCH] Improve Scheme code evaluation * lisp/ob-scheme.el (org-babel-scheme-execute-with-geiser): Use Geiser's explicit 'retort' object, instead of catching and parsing an expected Emacs message (which for me is in any case overwritten by a following "Mark set" message); this also means we don't need the with-output-to-string approach for getting 'output' results. Also 'let' Geiser variables so as to avoid popping up the REPL and *Geiser dbg* buffers. --- lisp/ob-scheme.el | 62 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/lisp/ob-scheme.el b/lisp/ob-scheme.el index b8867d5..f822e15 100644 --- a/lisp/ob-scheme.el +++ b/lisp/ob-scheme.el @@ -44,12 +44,18 @@ (defvar geiser-impl--implementation) ; Defined in geiser-impl.el (defvar geiser-default-implementation) ; Defined in geiser-impl.el (defvar geiser-active-implementations) ; Defined in geiser-impl.el +(defvar geiser-debug-show-debug-p) ; Defined in geiser-debug.el +(defvar geiser-debug-jump-to-debug-p) ; Defined in geiser-debug.el +(defvar geiser-repl-use-other-window) ; Defined in geiser-repl.el +(defvar geiser-repl-window-allow-split) ; Defined in geiser-repl.el (declare-function run-geiser "ext:geiser-repl" (impl)) (declare-function geiser-mode "ext:geiser-mode" ()) (declare-function geiser-eval-region "ext:geiser-mode" (start end &optional and-go raw nomsg)) (declare-function geiser-repl-exit "ext:geiser-repl" (&optional arg)) +(declare-function geiser-eval--retort-output "ext:geiser-eval" (ret)) +(declare-function geiser-eval--retort-result-str "ext:geiser-eval" (ret prefix)) (defcustom org-babel-scheme-null-to 'hline "Replace `null' and empty lists in scheme tables with this before returning." @@ -150,35 +156,35 @@ is true; otherwise returns the last value." (with-temp-buffer (insert (format ";; -*- geiser-scheme-implementation: %s -*-" impl)) (newline) - (insert (if output - (format "(with-output-to-string (lambda () %s))" code) - code)) + (insert code) (geiser-mode) - (let ((repl-buffer (save-current-buffer - (org-babel-scheme-get-repl impl repl)))) - (when (not (eq impl (org-babel-scheme-get-buffer-impl - (current-buffer)))) - (message "Implementation mismatch: %s (%s) %s (%s)" impl (symbolp impl) - (org-babel-scheme-get-buffer-impl (current-buffer)) - (symbolp (org-babel-scheme-get-buffer-impl - (current-buffer))))) - (setq geiser-repl--repl repl-buffer) - (setq geiser-impl--implementation nil) - (setq result (org-babel-scheme-capture-current-message - (geiser-eval-region (point-min) (point-max)))) - (setq result - (if (and (stringp result) (equal (substring result 0 3) "=> ")) - (replace-regexp-in-string "^=> " "" result) - "\"An error occurred.\"")) - (when (not repl) - (save-current-buffer (set-buffer repl-buffer) - (geiser-repl-exit)) - (set-process-query-on-exit-flag (get-buffer-process repl-buffer) nil) - (kill-buffer repl-buffer)) - (setq result (if (or (string= result "#") - (string= result "#")) - nil - result)))) + (let ((geiser-repl-window-allow-split nil) + (geiser-repl-use-other-window nil)) + (let ((repl-buffer (save-current-buffer + (org-babel-scheme-get-repl impl repl)))) + (when (not (eq impl (org-babel-scheme-get-buffer-impl + (current-buffer)))) + (message "Implementation mismatch: %s (%s) %s (%s)" impl (symbolp impl) + (org-babel-scheme-get-buffer-impl (current-buffer)) + (symbolp (org-babel-scheme-get-buffer-impl + (current-buffer))))) + (setq geiser-repl--repl repl-buffer) + (setq geiser-impl--implementation nil) + (let ((geiser-debug-jump-to-debug-p nil) + (geiser-debug-show-debug-p nil)) + (let ((ret (geiser-eval-region (point-min) (point-max)))) + (setq result (if output + (geiser-eval--retort-output ret) + (geiser-eval--retort-result-str ret ""))))) + (when (not repl) + (save-current-buffer (set-buffer repl-buffer) + (geiser-repl-exit)) + (set-process-query-on-exit-flag (get-buffer-process repl-buffer) nil) + (kill-buffer repl-buffer)) + (setq result (if (or (string= result "#") + (string= result "#")) + nil + result))))) result)) (defun org-babel-scheme--table-or-string (results) -- 2.7.4 --------------7ACB7FA6F9C5EC70703613DD--