Skip to content

Latest commit

 

History

161 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

* 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:
=#<PERSON {100587C0C3}>=, 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 ⭐ is free software. All files, unless explicitly stated
otherwise, are public domain.

About

SLIME configuration with some extensions pre-installed.

Topics

Resources

Stars

62 stars

Watchers

6 watching

Forks

Releases

Used by

Contributors

Languages