From: Neil Jerram <neil@ossau.homelinux.net>
To: emacs-orgmode@gnu.org
Subject: Re: Scheme output results
Date: Thu, 7 Sep 2017 21:27:55 +0100 [thread overview]
Message-ID: <8268c181-beb7-be7b-41cf-4742f1d64e43@ossau.homelinux.net> (raw)
In-Reply-To: <87y3pslssx.fsf@nicolasgoaziou.fr>
[-- Attachment #1: Type: text/plain, Size: 479 bytes --]
Hi Nicolas,
On 05/09/17 22:49, Nicolas Goaziou wrote:
> Hello,
>
> Neil Jerram <neil@ossau.homelinux.net> writes:
>
>> Hi Bastien & Nicolas,
>>
>> I've been told by "Theodore Teah via RT <copyright-clerk@fsf.org>"
>> 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
[-- Attachment #2: 0001-Improve-Scheme-code-evaluation.patch --]
[-- Type: text/x-patch, Size: 4630 bytes --]
From 35d3742774335decfcf8e4e5ab8e4101332a39a5 Mon Sep 17 00:00:00 2001
From: Neil Jerram <neil@tigera.io>
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 "#<void>")
- (string= result "#<unspecified>"))
- 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 "#<void>")
+ (string= result "#<unspecified>"))
+ nil
+ result)))))
result))
(defun org-babel-scheme--table-or-string (results)
--
2.7.4
next prev parent reply other threads:[~2017-09-07 20:28 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-18 14:06 Scheme output results Neil Jerram
2017-07-23 8:52 ` Nicolas Goaziou
2017-08-20 16:43 ` Neil Jerram
2017-08-20 20:31 ` Nicolas Goaziou
2017-08-27 12:15 ` Bastien Guerry
2017-08-31 12:21 ` Neil Jerram
2017-09-05 21:17 ` Neil Jerram
2017-09-05 21:49 ` Nicolas Goaziou
2017-09-07 20:27 ` Neil Jerram [this message]
2017-09-08 4:50 ` Nicolas Goaziou
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8268c181-beb7-be7b-41cf-4742f1d64e43@ossau.homelinux.net \
--to=neil@ossau.homelinux.net \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.