The use of Coalton can be considered a contrived example, although important to some people, but symbols not being prefixed assumes that users are in packages that (:use :cl) and don't shadow anything important.
On Thu, Mar 6, 2025 at 13:58 Ihor Radchenko <yanta...@posteo.net> wrote: > 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> >