An open API service indexing awesome lists of open source software.

https://github.com/mmontone/slime-star

SLIME configuration with some extensions pre-installed.
https://github.com/mmontone/slime-star

common-lisp emacs ide lisp slime tools

Last synced: 11 days ago
JSON representation

SLIME configuration with some extensions pre-installed.

Awesome Lists containing this project

README

        

* SLIME ⭐
:PROPERTIES:
:CUSTOM_ID: slime
:END:

** Overview
:PROPERTIES:
:CUSTOM_ID: overview
:END:

This is a [[https://slime.common-lisp.dev/][SLIME]] configuration that
provides the following contribs:

- [[https://github.com/mmontone/lisp-system-browser][Lisp System Browser]]
- [[https://github.com/mmontone/slime-doc-contribs][SLIME Doc Contribs]]
- [[https://github.com/mmontone/quicklisp-systems][Quicklisp Systems]]
- [[https://github.com/tkych/quicksearch][Quicksearch utility]]
- [[https://github.com/mmontone/slime-breakpoints][SLIME Breakpoints]]
- [[https://github.com/mmontone/quicklisp-apropos][Quicklisp apropos]]
- [[https://github.com/mmontone/slime-critic][SLIME Critic]]
- Use [[#dedicated-emacs-buffers-for-output-streams][dedicated Emacs buffers]] for output streams.
- Interactive [[#interactive-trace-and-print-buffers][trace and print buffers]].
- Inspect objects from their printed representation in
[[#output-stream-inspector][output streams]].
- [[#improved-documentation-mode][Access to dpans3 based ANSICL spec]]
in Emacs Info format.

It also adds some custom utilities and menus.

** Install
:PROPERTIES:
:CUSTOM_ID: install
:END:

⚠️ *This is ALPHA software*

Clone this repository using --recursive option (this repo has git
submodules):

#+BEGIN_EXAMPLE
git clone --recursive https://github.com/mmontone/slime-star.git
#+END_EXAMPLE

Install some dependencies from Quicklisp:

#+BEGIN_SRC lisp
sbcl --load install.lisp --quit
#+END_SRC

In your =.emacs=:

#+BEGIN_EXAMPLE
;; Setup load-path, autoloads and your lisp system
(add-to-list 'load-path "~/dir/to/cloned/slime-star")

;; Add slime-star to slime-contribs:
(setq slime-contribs '(slime-fancy slime-star))
#+END_EXAMPLE

*** Try via Docker
:PROPERTIES:
:CUSTOM_ID: try-via-docker
:END:

From =docker= directory run:

- =make build=
- =make run=

** Configuration
:PROPERTIES:
:CUSTOM_ID: configuration
:END:

You'll need to =M-x customize-group slime-star= and
=M-x customize-group slime-breakpoints= to enable some of the features
(experimental and opinionated features are disabled by default). And
then restart Emacs (not all changes are immediatly applied).

** Screenshots
:PROPERTIES:
:CUSTOM_ID: screenshots
:END:

*** System browser
:PROPERTIES:
:CUSTOM_ID: system-browser
:END:

#+CAPTION: system-browser
[[https://github.com/mmontone/lisp-system-browser/raw/master/lisp-system-browser.png]]

- =M-x lisp-system-browser= to start.
- =M-x quit-system-browser= to quit.

*** Quickload with completion
:PROPERTIES:
:CUSTOM_ID: quickload-with-completion
:END:

#+CAPTION: quickload completion
[[https://github.com/mmontone/quicklisp-systems/raw/master/completion.gif]]

*** Breakpoints, stepping, toolbars, evaluation and locals navigation
:PROPERTIES:
:CUSTOM_ID: breakpoints-stepping-toolbars-evaluation-and-locals-navigation
:END:

[[file:screenshots/toolbars.png]]
[[https://github.com/mmontone/slime-breakpoints/raw/master/sldb-source-eval.png]]
[[https://github.com/mmontone/slime-breakpoints/blob/master/sldb-show-frame-local.gif]]

*** Improved documentation mode
:PROPERTIES:
:CUSTOM_ID: improved-documentation-mode
:END:

[[https://github.com/mmontone/slime-doc-contribs/raw/master/slime-help.png]]
[[file:screenshots/ansicl-info.png]]

*** Critic
:PROPERTIES:
:CUSTOM_ID: critic
:END:

#+CAPTION: slime-critic
[[https://github.com/mmontone/slime-critic/raw/master/screenshot.png]]

- =M-x slime-critic-critique-buffer=

*** Quicklisp system browsing
:PROPERTIES:
:CUSTOM_ID: quicklisp-system-browsing
:END:

#+CAPTION: quicklisp-systems
[[https://github.com/mmontone/quicklisp-systems/raw/master/screenshot.png]]

=M-x quicklisp-systems= command and family.

*** Dedicated Emacs buffers for output streams
:PROPERTIES:
:CUSTOM_ID: dedicated-emacs-buffers-for-output-streams
:END:

Use:

- =M-x slime-toggle-output-buffer= to send =*standard-output*= to an
Emacs buffer.
- =M-x slime-toggle-error-buffer= to send =*error-output*= to an Emacs
buffer.
- =M-x slime-toggle-trace-buffer= to send =*trace-output*= to an Emacs
buffer.

*** Interactive TRACE and PRINT buffers
:PROPERTIES:
:CUSTOM_ID: interactive-trace-and-print-buffers
:END:

**** Trace buffer
:PROPERTIES:
:CUSTOM_ID: trace-buffer
:END:

Toggle functions for tracing using =C-c M-t=. After traced functions are
called an interactive Emacs buffer appears, from where it is possible to
inspect the traces, interactively.

#+CAPTION: trace-and-print-buffers
[[file:screenshots/trace-and-print-buffers.png]]

**** Print buffer
:PROPERTIES:
:CUSTOM_ID: print-buffer
:END:

Use commands =M-x slime-debug-print-last-expression-in-buffer= and
=M-x slime-debug-print-next-expression-in-buffer= for printing expression to
an Emacs buffer. Or manually insert a call to =swank-print-buffer:prn= in what you
want to get printed for inspection. An Emacs buffer opens from where it
is possible to inspect the printed value.

** Extra commands

- =M-x slime-system-dependency-graph= Visualize a dependencies graph for ASDF SYSTEM. Requires asdf-dependency-graph library installed.
- =M-x sldb-show-all-frames-details= Show details of all frames in debugger.
- =M-x sldb-kill-all-buffers= Kill all SLDB (debugger) buffers.
- =M-x slime-scratch= Open the equivalent of an Emacs *scratch* buffer, for Common Lisp/SLIME.
- =M-x slime-room= Show Common Lisp ROOM information in an Emacs buffer.

** *EXPERIMENTAL*

*** Output stream inspector
:PROPERTIES:
:CUSTOM_ID: output-stream-inspector
:END:

SLIME does not provide a way of inspecting objects printed to output
streams; say an object is printed to some stream:
=#=, there's no way to access and inspect the
object printed.

SLIME ⭐ comes with an extension for inspecting objects that are printed
to output streams. To enable, evaluate in Lisp:
=(setf stream-inspector:*persistent-pointers* t)=. Then from emacs, move
the cursor to some printed object, and =M-x slime-inspect-printed=.

** License
:PROPERTIES:
:CUSTOM_ID: license
:END:

SLIME :star: is free software. All files, unless explicitly stated
otherwise, are public domain.