mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-09-29 20:37:51 +00:00
ob-clojure: Support new CIDER using sesman to manage sessions
* ob-clojure.el (org-babel-clojure-initiate-session): Improve ob-clojure initialize session way to support CIDER new API. * etc/ORG-NEWS: Add declare for new :session support feature.
This commit is contained in:
parent
4456dc8809
commit
2c5df17ed1
11
etc/ORG-NEWS
11
etc/ORG-NEWS
|
@ -225,6 +225,17 @@ This is consistent with the naming of =org-dblock-write:columnview=
|
||||||
options, where =:match= is also used as a headlines filter.
|
options, where =:match= is also used as a headlines filter.
|
||||||
|
|
||||||
** New features
|
** New features
|
||||||
|
*** Add ~:session~ support of ob-clojure for CIDER
|
||||||
|
You can initialize source block session with Babel default keybinding
|
||||||
|
=[C-c C-v C-z]= to use =sesman= session manager to link current
|
||||||
|
project, directory or buffer with specific Clojure session, or
|
||||||
|
=cider-jack-in= a new CIDER REPL if no CIDER REPLs available. In older
|
||||||
|
CIDER version which has not =sesman= integrated, only has
|
||||||
|
=cider-jack-in= without Clojure project is supported.
|
||||||
|
#+begin_src clojure :session
|
||||||
|
(dissoc Clojure 'JVM)
|
||||||
|
(conj clojurists "stardiviner")
|
||||||
|
#+end_src
|
||||||
*** Add ~:results link~ support for Babel
|
*** Add ~:results link~ support for Babel
|
||||||
|
|
||||||
With this output format, create a link to the file specified in
|
With this output format, create a link to the file specified in
|
||||||
|
|
|
@ -46,6 +46,7 @@
|
||||||
(declare-function cider-jack-in "ext:cider" (&optional prompt-project cljs-too))
|
(declare-function cider-jack-in "ext:cider" (&optional prompt-project cljs-too))
|
||||||
(declare-function cider-current-connection "ext:cider-client" (&optional type))
|
(declare-function cider-current-connection "ext:cider-client" (&optional type))
|
||||||
(declare-function cider-current-ns "ext:cider-client" ())
|
(declare-function cider-current-ns "ext:cider-client" ())
|
||||||
|
(declare-function cider-repls "ext:cider-connection" (&optional type ensure))
|
||||||
(declare-function nrepl--merge "ext:nrepl-client" (dict1 dict2))
|
(declare-function nrepl--merge "ext:nrepl-client" (dict1 dict2))
|
||||||
(declare-function nrepl-dict-get "ext:nrepl-client" (dict key))
|
(declare-function nrepl-dict-get "ext:nrepl-client" (dict key))
|
||||||
(declare-function nrepl-dict-put "ext:nrepl-client" (dict key value))
|
(declare-function nrepl-dict-put "ext:nrepl-client" (dict key value))
|
||||||
|
@ -55,6 +56,8 @@
|
||||||
|
|
||||||
(defvar nrepl-sync-request-timeout)
|
(defvar nrepl-sync-request-timeout)
|
||||||
(defvar cider-buffer-ns)
|
(defvar cider-buffer-ns)
|
||||||
|
(defvar sesman-system)
|
||||||
|
(defvar cider-version)
|
||||||
|
|
||||||
(defvar org-babel-tangle-lang-exts)
|
(defvar org-babel-tangle-lang-exts)
|
||||||
(add-to-list 'org-babel-tangle-lang-exts '("clojure" . "clj"))
|
(add-to-list 'org-babel-tangle-lang-exts '("clojure" . "clj"))
|
||||||
|
@ -221,11 +224,20 @@ using the :show-process parameter."
|
||||||
;; CIDER jack-in to the Clojure project directory.
|
;; CIDER jack-in to the Clojure project directory.
|
||||||
((eq org-babel-clojure-backend 'cider)
|
((eq org-babel-clojure-backend 'cider)
|
||||||
(require 'cider)
|
(require 'cider)
|
||||||
(let ((session-buffer (save-window-excursion
|
(let ((session-buffer
|
||||||
(cider-jack-in t)
|
(save-window-excursion
|
||||||
|
(if (version< cider-version "0.18.0")
|
||||||
|
;; Older CIDER (without sesman) still need to use
|
||||||
|
;; old way.
|
||||||
|
(cider-jack-in nil) ;jack-in without project
|
||||||
|
;; New CIDER (with sesman to manage sessions).
|
||||||
|
(unless (cider-repls)
|
||||||
|
(let ((sesman-system 'CIDER))
|
||||||
|
(call-interactively 'sesman-link-with-directory))))
|
||||||
(current-buffer))))
|
(current-buffer))))
|
||||||
(if (org-babel-comint-buffer-livep session-buffer)
|
(when (org-babel-comint-buffer-livep session-buffer)
|
||||||
(progn (sit-for .25) session-buffer))))
|
(sit-for .25)
|
||||||
|
session-buffer)))
|
||||||
((eq org-babel-clojure-backend 'slime)
|
((eq org-babel-clojure-backend 'slime)
|
||||||
(error "Session evaluation with SLIME is not supported"))
|
(error "Session evaluation with SLIME is not supported"))
|
||||||
(t
|
(t
|
||||||
|
|
Loading…
Reference in a new issue