Owen Radcliffe <garlic...@gmail.com> writes:

> Here are steps to reproduce the issue I am fixing:
>
> 1. Start sly and load Coalton:
>   - M-x sly
>   - (asdf:load-system :coalton)
>
> 2. Enter the :coalton-user package, it does not use :cl
>   - (in-package :coalton-user)
>
> 3. Evaluate the following org-babel src block:
> ```
> #+begin_src lisp
>   (coalton (1+ 1))
> #+end_src
> ```

These steps are certainly not enough for someone who does not have
coalton (whatever it is) installed and configured, but I can see how
this might be a problem in theory.

Since I am not familiar with CL, I am taking a liberty to ask Héctor
take a look at this to double-check whether the patch makes sense.

Best,
Ihor

> This signals the error below because it is using coalton:let instead of
> cl:let.
> ```
> The operator LET is only valid in a Coalton expression.
> ```
>
> With the patch attached, things behave properly.
>
> ```
> #+begin_src lisp
>   (coalton (1+ 1))
> #+end_src
>
> #+RESULTS:
> : 2
> ```
> From 4f8e68416fbead2a5726fd4b867e63ae427b7641 Mon Sep 17 00:00:00 2001
> From: Owen Radcliffe <garlic...@gmail.com>
> Date: Mon, 3 Mar 2025 22:10:17 -0500
> Subject: [PATCH 1/1] prefix cl symbols so that ob-lisp.el can be used without
>  being in a package that uses :cl
>
> ---
>  lisp/ob-lisp.el | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/lisp/ob-lisp.el b/lisp/ob-lisp.el
> index ed5a4bb00..6e085491a 100644
> --- a/lisp/ob-lisp.el
> +++ b/lisp/ob-lisp.el
> @@ -61,7 +61,7 @@ Valid values include `slime-eval' and `sly-eval'."
>    :type 'symbol)
>  
>  (defcustom org-babel-lisp-dir-fmt
> -  "(let ((*default-pathname-defaults* #P%S\n)) %%s\n)"
> +  "(cl:let ((*default-pathname-defaults* #P%S\n)) %%s\n)"
>    "Format string used to wrap code bodies to set the current directory.
>  For example a value of \"(progn ;; %s\\n   %%s)\" would ignore the
>  current directory string."
> @@ -77,10 +77,10 @@ current directory string."
>           (prologue (cdr (assq :prologue params)))
>           (epilogue (cdr (assq :epilogue params)))
>        (body (if (null vars) (org-trim body)
> -              (concat "(let ("
> +              (concat "(cl:let ("
>                        (mapconcat
>                         (lambda (var)
> -                         (format "(%S (quote %S))" (car var) (cdr var)))
> +                         (format "(%S (cl:quote %S))" (car var) (cdr var)))
>                         vars "\n      ")
>                        ")\n"
>                           (and prologue (concat prologue "\n"))
> @@ -89,7 +89,7 @@ current directory string."
>                           ")"))))
>      (if (or (member "code" result-params)
>           (member "pp" result-params))
> -     (format "(pprint %s)" body)
> +     (format "(cl:pprint %s)" body)
>        body)))
>  
>  (defun org-babel-execute:lisp (body params)
> @@ -115,7 +115,7 @@ a property list containing the parameters of the block."
>                                                  default-directory)))
>                                       (format
>                                        (if dir (format org-babel-lisp-dir-fmt 
> dir)
> -                                        "(progn %s\n)")
> +                                        "(cl:progn %s\n)")
>                                        (buffer-substring-no-properties
>                                         (point-min) (point-max)))))
>                                  (cdr (assq :package params)))))))
> -- 
> 2.48.1
>

-- 
Ihor Radchenko // yantar92,
Org mode maintainer,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>

Reply via email to