(lem-lisp-mode:start-lisp-repl t)
SLIME is a client-server protocol, CL library (called SWANK) and Emacs extension to communicate with CL process.
Lem is Emacs reimplemented in Common Lisp. You can play with REPL connected to the Lem itself, or connect to a separate CL process, running SLIME server.
There is also SLIME's fork called SLY (https://github.com/joaotavora/sly) which has cool features. I prefer SLY, but Lem is unable to connect to the CL process running SLYNK server (analog of SLIME's SWANK).
Well done for the new release, Lem developers!
I will party with you, even though I'll remark that there is no release notes in the Github release and that the Changelog was last changed 9 months ago ;)
(you added a shell mode? Nice. What does it do?)
A point on documentation I wanted to raise earlier: what about saying in the README that Lem supports other programming languages? I'd send a PR but I don't know enough their support status, and I'd send a big PR which may not be of the taste of Lem developers :p
While I'm at it. I'd love to see more self-documenting features in Lem, à la Emacs. If there are some, they are not documented, so it slows Lem adoption down. Would it help to sponsor this specific issue on OpenCollective?
Best regards
I'd like to support @vinderl here.
Yet, I think it might be useful to set up a separate quicklisp distribution for Lem plugins. I easily create such distribution at Ultralisp.org (recently I already did the same for LispWorks extensions (https://ultralisp.org/dists/lispworks).
This way people will have a place to share Lem plugins. And it will be easy to make a list-plugins
command.
(setf documentation)
to switch the docstring language when called?
sbcl --core mycore
, is it possible to tell Roswell to use a custom core image inside a script, somewhere in exec ros -Q -- $0 "$@"
? The idea would be that one can build a core image with several libraries already loaded, so the script starts faster. Now how would Roswell know how to build the image, so that the script is still portable? That's something else… (maybe it could be installed separately with ros install mycore
) I answered that ros build
is here to speed scripts up by building an executable (but consequently, we loose a little bit of ease of use a script offers).
lem 1.9.2-665c3f79
The value
"rls"
is not of type
CHARACTER
when setting an element of (ARRAY CHARACTER)
Backtrace for: #<SB-THREAD:THREAD "editor" RUNNING {1004655C63}>
0: ((SB-VM::OPTIMIZED-DATA-VECTOR-SET CHARACTER) #<unavailable argument> #<unavailable argument> #<unavailable argument>)
1: (REPLACE "^@" ("rls"))
2: (SB-IMPL::PREPARE-ARGS ("which" ("rls")))
3: (SB-EXT:RUN-PROGRAM "which" (("rls")) :ENV NIL :ENVIRONMENT NIL :WAIT NIL :SEARCH T :PTY NIL :INPUT NIL :IF-INPUT-DOES-NOT-EXIST :ERROR :OUTPUT NIL :IF-OUTPUT-EXISTS :
4: (UIOP/LAUNCH-PROGRAM:LAUNCH-PROGRAM ("which" ("rls")) :INPUT NIL :OUTPUT NIL :ERROR-OUTPUT NIL :IGNORE-ERROR-STATUS T)
5: ((LAMBDA (UIOP/RUN-PROGRAM::REDUCED-INPUT UIOP/RUN-PROGRAM::INPUT-ACTIVITY) :IN UIOP/RUN-PROGRAM::%USE-LAUNCH-PROGRAM) NIL NIL)
6: (UIOP/RUN-PROGRAM::%USE-LAUNCH-PROGRAM ("which" ("rls")) :IGNORE-ERROR-STATUS T)
7: (LEM-LSP-MODE/LSP-MODE::EXIST-PROGRAM-P ("rls"))
8: (LEM-LSP-MODE/LSP-MODE::CHECK-EXIST-PROGRAM ("rls") #<LEM-LSP-MODE/LSP-MODE::RUST-SPEC {10076DBD53}>)
9: ((:METHOD LEM-LSP-MODE/LSP-MODE::RUN-SERVER-USING-MODE ((EQL :STDIO) T)) #<unused argument> #<LEM-LSP-MODE/LSP-MODE::RUST-SPEC {10076DBD53}>) [fast-method]
10: (LEM-LSP-MODE/LSP-MODE::ENSURE-RUNNING-SERVER-PROCESS #<LEM-LSP-MODE/LSP-MODE::RUST-SPEC {10076DBD53}>)
11: (LEM-LSP-MODE/LSP-MODE::ESTABLISH-CONNECTION #<LEM-LSP-MODE/LSP-MODE::RUST-SPEC {10076DBD53}>)
12: (LEM-LSP-MODE/LSP-MODE::ENSURE-LSP-BUFFER #<BUFFER tmp.rust /home/gavinok/tmp.rust> #<FUNCTION (LAMBDA NIL :IN LEM-LSP-MODE/LSP-MODE::ENABLE-HOOK) {10075E75DB}>)
13: (LEM-LSP-MODE/LSP-MODE::ENABLE-HOOK)
14: (LEM-LSP-MODE/LSP-MODE:LSP-MODE NIL)
15: ((:METHOD LEM-BASE/HOOKS:RUN-HOOKS (LIST)) ((LEM-LSP-MODE/LSP-MODE:LSP-MODE . 0))) [fast-method]
16: ((SB-PCL::EMF LEM:EXECUTE) #<unused argument> #<unused argument> #<LEM-RUST-MODE:RUST-MODE {10075E4D03}> NIL)
17: (LEM:CALL-COMMAND LEM-RUST-MODE:RUST-MODE NIL)
18: ((SB-PCL::EMF LEM:EXECUTE) #<unused argument> #<unused argument> #<LEM:EXECUTE-COMMAND {1006CD0113}> NIL)
19: (LEM:CALL-COMMAND LEM:EXECUTE-COMMAND NIL)
20: (LEM::COMMAND-LOOP-BODY)
21: (LEM::COMMAND-LOOP)
22: (LEM::TOPLEVEL-COMMAND-LOOP #<FUNCTION (LAMBDA NIL :IN LEM::RUN-EDITOR-THREAD) {1004F73E6B}>)
23: ((LAMBDA NIL :IN LEM::RUN-EDITOR-THREAD))
24: ((LAMBDA NIL :IN BORDEAUX-THREADS::BINDING-DEFAULT-SPECIALS))
25: ((FLET SB-UNIX::BODY :IN SB-THREAD::RUN))
26: ((FLET "WITHOUT-INTERRUPTS-BODY-10" :IN SB-THREAD::RUN))
27: ((FLET SB-UNIX::BODY :IN SB-THREAD::RUN))
28: ((FLET "WITHOUT-INTERRUPTS-BODY-3" :IN SB-THREAD::RUN))
29: (SB-THREAD::RUN)
30: ("foreign function: call_into_lisp")
31: ("foreign function: funcall1")