>From e3d04ef080ef21d5741176ca7b02c25e35b8d414 Mon Sep 17 00:00:00 2001 From: stardiviner Date: Sun, 18 Mar 2018 01:19:29 +0800 Subject: [PATCH 2/4] * ob-js.el: support :session for Indium Node REPL. --- etc/ORG-NEWS | 4 ++++ lisp/ob-js.el | 12 +++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 11ecaa5d3..0e0b6fa33 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -113,6 +113,10 @@ now sort according to the locale’s collation rules instead of by code-point. ** New features +*** Add ~:session~ support of ob-js for Indium +#+begin_src js :session "*JS REPL*" +console.log("stardiviner") +#+end_src *** Add ~:session~ support of ob-js for skewer-mode #+begin_src js :session "*skewer-repl*" console.log("stardiviner") diff --git a/lisp/ob-js.el b/lisp/ob-js.el index 920d104f8..06df20bf7 100644 --- a/lisp/ob-js.el +++ b/lisp/ob-js.el @@ -43,6 +43,8 @@ (declare-function run-mozilla "ext:moz" (arg)) (declare-function httpd-start "simple-httpd" ()) (declare-function run-skewer "skewer-mode" ()) +(declare-function indium-run-node "indium-nodejs" (command)) +(declare-function indium-eval "indium-interaction" (string &optional callback)) (defvar org-babel-default-header-args:js '() "Default header arguments for js code blocks.") @@ -56,7 +58,8 @@ :version "24.1" :type '(choice (const "node") (const "mozrepl") - (const "skewer-mode")) + (const "skewer-mode") + (const "indium")) :safe #'stringp) (defvar org-babel-js-function-wrapper @@ -84,6 +87,13 @@ This function is called by `org-babel-execute-src-block'" (org-babel-eval (format "%s %s" org-babel-js-cmd (org-babel-process-file-name script-file)) ""))) + ;; Indium Node REPL + ;; separate case because Indium REPL is not inherited from comint-mode + ((string= session "*JS REPL*") + (require 'indium-repl) + (unless (get-buffer session) + (indium-run-node)) + (indium-eval full-body)) ;; session evaluation (t (let ((session (org-babel-prep-session:js -- 2.16.2