README.md (7429B)
1 [](https://travis-ci.org/joaotavora/sly) 2 [](http://melpa.org/#/sly) 3 4 ```lisp 5 _____ __ __ __ 6 / ___/ / / \ \/ / |\ _,,,---,,_ 7 \__ \ / / \ / /,`.-'`' -. ;-;;,_ 8 ___/ / / /___ / / |,4- ) )-,_..;\ ( `'-' 9 /____/ /_____/ /_/ '---''(_/--' `-'\_) 10 11 ``` 12 13 SLY is Sylvester the Cat's Common Lisp IDE for Emacs: 14 15 * 🤔 Read [a short illustrated guide][tutorial] 16 * 📽️ Scroll down this README for some [pretty gifs](#animated_gifs) 17 * 📣 Read the [NEWS][6] file 18 * 📚 Read the [manual][documentation] 19 20 SLY's highlights are: 21 22 * A [full-featured REPL](#repl) based on Emacs's `comint.el`. Everything can be 23 copied to the REPL; 24 * [Stickers](#stickers), or live code annotations that record values as code 25 traverses them. 26 * [Flex-style completion](#company-flex-completion) out-of-the-box, using 27 Emacs's completion API. Company, Helm, and other [supported 28 natively](#completion), no plugin required; 29 * An interactive [Trace Dialog][trace-dialog]; 30 * Cleanly ASDF-loaded by default, including contribs, enabled out-of-the-box; 31 * Multiple inspectors and multiple REPLs; 32 * "Presentations" replaced by [interactive backreferences](#repl) which 33 highlight the object and remain stable throughout the REPL session; 34 * Support for [NAMED-READTABLES][11], [macrostep.el][12] and [quicklisp][13] 35 * A [portable, annotation-based stepper][16] in [early][17] but functional 36 prototype stage. 37 38 SLY is a fork of [SLIME][1]. We tracks its bugfixes, particularly to the 39 implementation backends. All SLIME's familar features (debugger, inspector, 40 xref, etc...) are still available, with improved overall UX. 41 42 Installation 43 ------------ 44 45 Ensure that [MELPA][10] is setup as usual and ask `M-x package-install` to 46 install the package `sly`. 47 48 *That's it*. `sly-mode` will automatically come up in every `.lisp` file. To 49 fire up SLY, connect to a Lisp and get a friendly REPL, use `M-x sly`. 50 51 Even if you already have SLIME installed, SLY will ask you and temporarily 52 disable it for the Emacs session. 53 54 <a name="animated_gifs"></a> 55 _Obligatory animated gif section_ 56 ----------------------------------- 57 58 <a name="company-flex-completion"></a> 59 [Flex completion](http://joaotavora.github.io/sly/#Completion) 60 61  62 63 <a name="repl"></a> 64 [Backreferences](http://joaotavora.github.io/sly/#REPL-backreferences) 65 66  67 68 [Reverse i-search](http://joaotavora.github.io/sly/#REPL-commands) 69 70  71 72 <a name="stickers"></a> 73 [Stickers](http://joaotavora.github.io/sly/#Stickers) 74 75  76 77 Install from git 78 ------------------- 79 80 Clone this repository, add this to your `~/.emacs` file and fill in the 81 appropriate file names: 82 83 ```el 84 (add-to-list 'load-path "~/dir/to/cloned/sly") 85 (require 'sly-autoloads) 86 (setq inferior-lisp-program "/opt/sbcl/bin/sbcl") 87 ``` 88 89 If you wish to byte-compile SLY yourself (not needed generally) you can do `make 90 compile compile-contrib` in the dir where you cloned SLY. 91 92 Running the server standalone 93 ----------------------------- 94 95 This also works 96 ``` 97 $ sbcl 98 ... 99 * (push #p"~/dir/to/sly" asdf:*central-registry*) 100 * (asdf:load-system :slynk) 101 * (slynk:create-server :port 4008) 102 ``` 103 104 Now in Emacs you can do `sly-connect` and give it the host and the 4008 port as 105 a destination. 106 107 Faster startup 108 -------------- 109 110 If the Lisp program doesn't start fast enough for you, look in [the 111 manual][instasly], for ways to make it faster. 112 113 Additional Contribs 114 ------------------- 115 116 * https://github.com/joaotavora/sly-quicklisp 117 * https://github.com/joaotavora/sly-named-readtables 118 * https://github.com/joaotavora/sly-macrostep 119 * https://github.com/joaotavora/sly-stepper 120 * https://github.com/mmgeorge/sly-asdf 121 * https://github.com/40ants/sly-package-inferred 122 123 <a name="completion"></a> 124 Completion UIs 125 -------------- 126 127 SLY works with most Emacs "completion UIs" out of the box, providing completion 128 in source files and inputting Common Lisp symbol names from the minibuffer. 129 [Company][14], Emacs 27's Fido-mode, and Helm are well-supported, as is 130 "vanilla" completion. For consistency, SLY defaults to its own UI, 131 `sly-symbol-completion-mode`, useful if you don't have or like any of those. 132 You can turn it off. Also, if you use Helm and wish to have even more 133 Helm-based fanciness, you can use [helm-sly][15]. 134 135 License 136 ------- 137 138 SLY is free software. All files, unless explicitly stated otherwise, are public 139 domain. ASCII artwork is copyright by Felix Lee, Joan G. Stark and Hayley Jane 140 Wakenshaw. 141 142 Fork 143 ---- 144 145 SLIME is the work of Eric Marsden, Luke Gorrie, Helmut Eller, Tobias 146 C. Rittweiler and [many others][8]. I forked SLIME because I used it daily, 147 for work, had a long list of hacks developed for myself, and wanted to share 148 them with others. 149 150 In 2013, SLIME development was stalling, patches and issues rotting. In early 151 2014, Luís Oliveira and myself moved SLIME to Github and set up its Travis CI 152 system. I brought in the old bug reports from the Launchpad tracker, fixed 153 long-standing problems and submitted many changes, particularly to the 154 under-curated but popular "contrib" section. 155 156 Now, the changes that SLY brings to the table are too deep at the Elisp and Lisp 157 level to be accepted to SLIME, given its current focus on stability (for the 158 record, I find this perfectly reasonable). The new features, such as stickers or 159 multiple inspectors, cannot be realized well using only the existing "contrib" 160 system. Finally, SLY frees itself from the shackles of Emacs 23 and supports 161 Emacs 24.3+ only, allowing for much cleaner code and liberal use of lexical 162 binding. 163 164 The list of technical reasons is bigger than this though, and you can read up on 165 them in the [CONTRIBUTING.md][9] file. 166 167 Contributing 168 ------------ 169 170 [Open an issue or a pull request][4], but at least have a quick look at the 171 first part [CONTRIBUTING.md][5] file for instructions on how to contribute. 172 173 [1]: http://www.common-lisp.net/project/slime/ 174 [2]: https://github.com/joaotavora/sly/blob/master/README.md#fork 175 [4]: https://github.com/joaotavora/sly/issues 176 [5]: https://github.com/joaotavora/sly/blob/master/CONTRIBUTING.md 177 [6]: https://github.com/joaotavora/sly/blob/master/NEWS.md 178 [7]: https://www.youtube.com/watch?v=xqWkVvubnSI 179 [8]: http://common-lisp.net/project/slime/doc/html/Credits.html#Credits 180 [9]: https://github.com/joaotavora/sly/blob/master/CONTRIBUTING.md#architecture 181 [10]: https://github.com/milkypostman/melpa 182 [11]: https://github.com/joaotavora/sly-named-readtables 183 [12]: https://github.com/joaotavora/sly-macrostep 184 [13]: https://github.com/joaotavora/sly-quicklisp 185 [14]: https://github.com/company-mode/company-mode 186 [15]: https://github.com/emacs-helm/helm-sly 187 [16]: https://zenodo.org/record/3742759 188 [17]: https://github.com/joaotavora/sly-stepper 189 [documentation]: http://joaotavora.github.io/sly 190 [instasly]: http://joaotavora.github.io/sly/#Loading-Slynk-faster 191 [trace-dialog]: http://joaotavora.github.io/sly/#Trace-Dialog 192 [tutorial]: http://joaotavora.github.io/sly/#A-SLY-tour-for-SLIME-users 193 194 <!-- Local Variables: --> 195 <!-- fill-column: 80 --> 196 <!-- End: -->