update packages
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
;;; ob-lisp.el --- Babel Functions for Common Lisp -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
|
||||
;; Copyright (C) 2009-2025 Free Software Foundation, Inc.
|
||||
|
||||
;; Authors: Joel Boehland
|
||||
;; Eric Schulte
|
||||
@@ -74,13 +74,19 @@ current directory string."
|
||||
(let* ((vars (org-babel--get-vars params))
|
||||
(result-params (cdr (assq :result-params params)))
|
||||
(print-level nil) (print-length nil)
|
||||
(prologue (cdr (assq :prologue params)))
|
||||
(epilogue (cdr (assq :epilogue params)))
|
||||
(body (if (null vars) (org-trim body)
|
||||
(concat "(let ("
|
||||
(mapconcat
|
||||
(lambda (var)
|
||||
(format "(%S (quote %S))" (car var) (cdr var)))
|
||||
vars "\n ")
|
||||
")\n" body ")"))))
|
||||
")\n"
|
||||
(and prologue (concat prologue "\n"))
|
||||
body
|
||||
(and epilogue (concat "\n" epilogue "\n"))
|
||||
")"))))
|
||||
(if (or (member "code" result-params)
|
||||
(member "pp" result-params))
|
||||
(format "(pprint %s)" body)
|
||||
@@ -90,37 +96,41 @@ current directory string."
|
||||
"Execute a block of Common Lisp code with Babel.
|
||||
BODY is the contents of the block, as a string. PARAMS is
|
||||
a property list containing the parameters of the block."
|
||||
(require (pcase org-babel-lisp-eval-fn
|
||||
(`slime-eval 'slime)
|
||||
(`sly-eval 'sly)))
|
||||
(org-babel-reassemble-table
|
||||
(let ((result
|
||||
(funcall (if (member "output" (cdr (assq :result-params params)))
|
||||
#'car #'cadr)
|
||||
(with-temp-buffer
|
||||
(insert (org-babel-expand-body:lisp body params))
|
||||
(funcall org-babel-lisp-eval-fn
|
||||
`(swank:eval-and-grab-output
|
||||
,(let ((dir (if (assq :dir params)
|
||||
(cdr (assq :dir params))
|
||||
default-directory)))
|
||||
(format
|
||||
(if dir (format org-babel-lisp-dir-fmt dir)
|
||||
"(progn %s\n)")
|
||||
(buffer-substring-no-properties
|
||||
(point-min) (point-max)))))
|
||||
(cdr (assq :package params)))))))
|
||||
(org-babel-result-cond (cdr (assq :result-params params))
|
||||
(org-strip-quotes result)
|
||||
(condition-case nil
|
||||
(read (org-babel-lisp-vector-to-list result))
|
||||
(error result))))
|
||||
(org-babel-pick-name (cdr (assq :colname-names params))
|
||||
(cdr (assq :colnames params)))
|
||||
(org-babel-pick-name (cdr (assq :rowname-names params))
|
||||
(cdr (assq :rownames params)))))
|
||||
(let (eval-and-grab-output)
|
||||
(pcase org-babel-lisp-eval-fn
|
||||
(`slime-eval (org-require-package 'slime "SLIME")
|
||||
(setq eval-and-grab-output 'swank:eval-and-grab-output))
|
||||
(`sly-eval (org-require-package 'sly "SLY")
|
||||
(setq eval-and-grab-output 'slynk:eval-and-grab-output)))
|
||||
(org-babel-reassemble-table
|
||||
(let ((result
|
||||
(funcall (if (member "output" (cdr (assq :result-params params)))
|
||||
#'car #'cadr)
|
||||
(with-temp-buffer
|
||||
(insert (org-babel-expand-body:lisp body params))
|
||||
(funcall org-babel-lisp-eval-fn
|
||||
`(,eval-and-grab-output
|
||||
,(let ((dir (if (assq :dir params)
|
||||
(cdr (assq :dir params))
|
||||
default-directory)))
|
||||
(format
|
||||
(if dir (format org-babel-lisp-dir-fmt dir)
|
||||
"(progn %s\n)")
|
||||
(buffer-substring-no-properties
|
||||
(point-min) (point-max)))))
|
||||
(cdr (assq :package params)))))))
|
||||
(org-babel-result-cond (cdr (assq :result-params params))
|
||||
(org-strip-quotes result)
|
||||
(condition-case nil
|
||||
(read (org-babel-lisp-vector-to-list result))
|
||||
(error result))))
|
||||
(org-babel-pick-name (cdr (assq :colname-names params))
|
||||
(cdr (assq :colnames params)))
|
||||
(org-babel-pick-name (cdr (assq :rowname-names params))
|
||||
(cdr (assq :rownames params))))))
|
||||
|
||||
(defun org-babel-lisp-vector-to-list (results)
|
||||
"Convert #(...) values in RESULTS string into a (...) list."
|
||||
;; TODO: better would be to replace #(...) with [...]
|
||||
(replace-regexp-in-string "#(" "(" results))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user