Dear Nick,

* Nick Gasson <[email protected]> [110102 22:32]:
> Hi all,
> 
> I've been working on a SLIME backend for Chicken Scheme. If you haven't
> used it before, SLIME is an Emacs-based development environment for
> Common Lisp - http://common-lisp.net/project/slime/. The Chicken port
> has gotten to the state where it's usable for development so it might
> be interesting too other people too.
> 
> It currently supports the following:
>  - Compile region (C-c C-c) and load file (C-c C-l)
>  - Various eval commands: interactive (C-c :), region (C-c C-r), defun
>    (C-M-x), pretty-print (C-c C-p)
>  - The SLIME REPL
>  - Simple tab completion and parameter hints (eldoc)
>  - Describe symbol (C-c C-d d) and apropos (C-c C-d a) using chicken-doc
>  - Very basic SLDB support - it displays the call chain on error
> 
> There's some more information in these posts:
>   http://www.doof.me.uk/2010/12/12/using-slime-with-chicken-scheme/
>   http://www.doof.me.uk/2011/01/01/update-to-chicken-swank-server/
> 
> If you're interested in trying it the git repository is here:
>   https://github.com/nickg/swank-chicken
> Setup instructions are in the README file.
> 
> Lots of SLIME features are unimplemented unfortunately, but hopefully
> I've covered most of the common ones. The debugger in particular is
> quite lacking. One SLIME feature I'd really like to have is M-. (jump
> to definition), but I can't see a way to extract the required file/line
> information from Chicken. Does anyone know if this is possible?

First of all thanks for this awesome contribution! I really like
it. I haven't used slime before so maybe my suggestions are no
brainers but here they are:

- Make the swank-chicken.scm file also part of the installation of
  the swank egg. Then people can just symlink to it or point their
  slimes to the system location

- Use irrgex is needed on my newer chicken to make the egg compile

- Move your fine work over to the egg repository. Then it is more
  accessible for chicken users. Mario will gladly give you a repo
  directory to store it in.

- Maybe make the location of csi a parameter? It may be a
  misconfiguration of my emacs but I needed to include the full path
  in chicken-swank.

- With newer chickens csi does have commands to show the local
  variables in call-chains, so maybe this can be added. From the swank
  introductory video I gathered that this is standard behaviour on
  lisps.

I have attached my suggestions as a patch against the git repo.

That's it for now, I will happily test any newer versions of it.
Welcome to the chicken world :)

Kind regards,

Christian
diff --git a/chicken-slime.el b/chicken-slime.el
index d9713d4..15ba642 100644
--- a/chicken-slime.el
+++ b/chicken-slime.el
@@ -1,5 +1,5 @@
 (setq slime-lisp-implementations
-      (cons '(chicken ("csi")
+      (cons '(chicken ("/usr/local/bin/csi")
                       :init chicken-slime-init)
             slime-lisp-implementations))
 
diff --git a/swank.scm b/swank.scm
index 6ced8f8..abf0ca2 100644
--- a/swank.scm
+++ b/swank.scm
@@ -30,5 +30,6 @@
        srfi-13
        symbol-utils
        apropos
+       irregex
        fmt)
   (include "swank-chicken.scm"))
diff --git a/swank.setup b/swank.setup
index f421187..4d8b67b 100644
--- a/swank.setup
+++ b/swank.setup
@@ -8,7 +8,8 @@
   ; Name of your extension:
   'swank
   ; Files to install for your extension:
-  '("swank.o" "swank.so" "swank.import.so" "chicken-slime.el")
+  '("swank.o" "swank.so" "swank.import.so"
+    "chicken-slime.el" "swank-chicken.scm")
   ; Assoc list with properties for your extension:
   '((version 0.2)
     (static "swank.o"))) ;; for static linking
_______________________________________________
Chicken-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to