1Upcoming version 2---------------- 3 4SLY 1.0.42 (December 2020) 5------------------------------ 6 7### Much improved company completion 8 9If you haven't yet, just `M-x package-install RET company-mode`, to 10enable `company`. It should start working in every SLY buffer. 11 12Moreover, a new "lazy" way to SLY collect completions from the Lisp 13backend means that user input is not blocked if this takes a long 14time. The result is a much more responsive on-the-fly completion 15experience. 16 17If you don't like company, you can still use the normal on-request TAB 18completion, which also features an improved UI. 19 20### Fixed Helm conflicts 21 22Helm users should now get access to the full capabilities of SLY's 23completion function without needing to install any extra packages. 24Just need to `M-x sly-symbol-completion-mode` to turn off SLY's 25default completion UI. (https://github.com/joaotavora/sly/issues/303) 26 27### Redesigned completion backend 28 29A redesigned completion backend replaces the legacy contribs 30`sly-fuzzy` and `sly-c-p-c`. The new "flex" backend considers package 31designators in the search string so you can complete other package's 32symbols even when outside a package. 33 34Here's an example: 35 36``` 37CL-USER> (quiloa) -> (ql:quickload) 38CL-USER> (scan) -> (ppcre:scan) 39CL-USER> (setf locadirs) -> (setf ql:*local-project-directories*) 40CL-USER> (mvbind) -> (multiple-value-bind) 41``` 42 43Flex completion is on by default, but that can be changed via 44`sly-complete-symbol-function`. The 45[documentation](http://joaotavora.github.io/sly/#Completion) has more 46information. 47 48Package-local nicknames are also considered (provided your 49implementation supports them). 50 51### Completely rewritten manual 52 53Manual has been reviewed from top to bottom. It should be much easier 54to navigate and nicer read in general, thouch it *still needs quite 55some proofreading* 56 57[A new chapter for existing SLIME users](http://joaotavora.github.io/sly/#A-SLY-tour-for-SLIME-users) 58figures prominently in the top-level. 59 60Presently no major omissions (*except maybe for multiple inspectors*). 61Reorganized nodes into a new structure not so focused on core vs 62contribs. Deleted stale sections. REPL section heavily rewritten to 63explain output types and backreferences. 64 65### New command M-x sly-import-symbol-at-point bound to C-c i by default 66 67This is a counterpart to the existing M-x sly-export-symbol-at-point, 68bound to C-c e. It strips the symbol under point of its package 69designator, and adds it under the :import-from subclause of the 70current package's defpackage form. An improvement suggested and 71implemented by Alexander Artemenko (github #147). 72 73### Improved SLY Stickers UI 74 75The UI for SLY Stickers, particularly for `M-x sly-stickers-replay` 76has been cleanup up. Upon entering the replay mode, SLY may ask user 77if she wants to delete the previous recordings, a commonly forgotten 78but useful pre-step (an idea by Javier Olaechea, github #91). Also, 79window management is less random. 80 81### Stale buffers are killed on connection close 82 83Inspector, debugger, and other buffers pertaining to a connection are 84automatically killed when the connection is closed. The types of 85buffers that are exempt from this is configurable in a new 86`sly-keep-buffers-on-connection-close` defcustom, which lists 87REPL buffers by default. 88 89### Autodoc function args available in minibuffer prompts 90 91In minibuffer prompts like the one of `M-x sly-inspect`, autodoc 92information is available and displayed temporarily in the mode-line. 93 94### `C-c C-o` and `C-c M-o` bound in the REPL 95 96These clear recent output and the whole REPL, respectively. 97 98### Easy to parse copied calls to REPL 99 100The "Copy call to REPL" funcionality in the Trace Dialog and SLY-DB 101buffers now understands that symbols and numbers can be printed 102directly in the reconstructed function call, which eases reading. 103 104### The .swankrc and .swank.lisp are not loaded by default 105 106A problem encountered by Zach Beane. 107 108### Window management with M-. has been fixed 109 110When finding the definition of a generic function with M-., an *xref* 111buffer pops up in a (possibly reused) window, showing code 112locations. When selecting one of those locations, make sure to honor 113the original intent of M-. of switching buffers in the original 114window. Quit the *xref* window should fully restore the previous 115window configuration. Thanks to Michael Fiano for insisting on what is 116indubitably the correct behavior (github #123). 117 118### More predictably choose REPL windows 119 120Calling `sly-mrepl` interactively, either via `M-x` or 121 `sly-selector-map` switches to buffer in the current 122 window. Accessing the REPL indirectly (by returning objects into it 123 form other modes) attempts to pop the buffer in another window. 124 125A problem encoutered by Zach Beane. 126 127### Travis CI infrastructure has been revamped 128 129The Travis CI infrastructure now uses `roswell` and `emacs-travis` 130instead of `cl-travis` and `apt`, respectively. Thus no longer needs 131Travis's `sudo` and uses directory caching, resulting in much faster 132builds. 133 134### New variables `*SLYNK:ECHO-NUMBER-ALIST*` and `*SLYNK:PRESENT-NUMBER-ALIST*` 135 136Customize the formats that integer numbers get presented back to SLY, 137additionally to the binary, octal and hex defaults. Good when working 138with Unix Epoch times, for example. See manual "Other configurables" 139for documentation and example. 140 141### New customization variable `sly-command-switch-to-existing-lisp` 142 143This makes a prefixless `M-x sly` switch to an active connection 144instead of starting a new one. Customize this to `never` to never 145prompted, or to `always` to always move to the first live connection. 146 147### Loading contribs is a more robust process 148 149If the Slynk-side of a contrib fails to load for whatever 150reason, a CONTINUE restart is provided. On the SLY side, the user 151can choose to disable that contrib temporarily. 152 153### A lot of cleanup to SLY sources 154 155Courtesy of Zach Shaftel <zshaftel@gmail.com>, sly-cl-indent.el no 156longer clobbers or conflicts with Emacs's own cl-indent.el. The cl.el 157library is no longer required, not even at compile-time or in tests. 158A lot of cleanup and performance improvements. 159 160### On par with SLIME 2.26 161 162Where applicable, SLY tracks bug-fixes and improvements contributed to 163SLIME: 164 165- More secure handling of ~/.sly-secret files 166 167- Compatibility with the latest SBCL and older SBCL. 168 169- ECL backend now supports threads 170 171- Function `create-server` now accepts optional `interface` argument. 172 173- In SBCL, slynk can be bound to IPv6 interface and can work on IPv6-only machines. 174 175- Clasp/ABCL improvements. 176 177SLY 1.0.0-beta-2 (March 2016) 178----------------------------- 179 180### Improved `sly-stickers` contrib: 181 182There is now updated documentation for this contrib. See 183http://joaotavora.github.io/sly/#SLY-Stickers 184 185Added a menu to help discover the functionality. 186 187Use `M-x sly-stickers-toggle-break-on-stickers` to turn on stepping 188for forms. The debugger pops up with useful restarts and interactive 189buttons. 190 191The "replay" interface, `M-x sly-stickers-replay` has been cleaned up. 192 193### Three new independent SLY contribs 194 195In https://github.com/joaotavora/sly-named-readtables there is an 196external contrib that adds support for Tobias C Rittweiler's 197`EDITOR.HINTS-NAMED.READTABLES`. Available on MELPA. 198 199In https://github.com/joaotavora/sly-macrostep there is a SLY 200contrib for expanding CL macros right inside the source 201file. Available on MELPA. 202 203In https://github.com/joaotavora/sly-quicklisp there is a SLY 204contrib for expanding CL macros right inside the source 205file. Available on MELPA. 206 207These contribs also showcase how third-party contribs with both Elisp 208and CL parts can be written independently of SLY. See 209https://github.com/joaotavora/sly-hello-world for how to write such 210contribs. 211 212### Apropos 213 214Argument list information is present in apropos output like 215this. A suggestion of Javier Olaechea (github #53) 216 217``` 218... 219SLYNK:TO-LINE 220 Function: Print OBJECT to a single line. Return the string. 221 Arglist: (OBJECT &OPTIONAL WIDTH) 222... 223``` 224 225`M-- sly-apropos` prompts for just the package. A suggestion of Javier 226Olaechea (github #53). 227 228`C-u sly-apropos` allows searching all packages (github #53) 229 230### Macroexpansion 231 232Discovery of the "sexp near point" has been much improved and won't 233error cryptically when there is no macroexpansion possible. 234 235### REPL enhancements 236 237`paredit-mode` works in the REPL, as does Emacs 24.4's 238`electric-pair-mode` or other parenthesis-matching tools, just like in 239any other Lisp buffer. 240 241New variable `sly-mrepl-output-filter-functions` for REPL 242output. These work like `comint-preoutput-filter-functions`. Functions 243like `ansi-color-apply` are good candidates (github #38). 244 245When using multiple REPL, frame variables from SLY-DB triggered in 246secondary REPLs, when returned with M-RET, appear in the correct REPL. 247 248mREPL notes are synched displayed correctly at the "process mark", not 249"output mark". This avoids some `; note` in wrong 250places (github #45). 251 252Popping up SLY-DB buffers from different threads no longer 253misteriously updates a REPL's environment for `*`, `**`, `***`, etc... 254 255Tearing down a reverse-isearch with `C-g` no longer errors (github 256\#39). 257 258### Manual 259 260The "Tips and tricks" section was rewritten. 261 262Keymap documentation was corrected and enhanced by Javier Olaechea 263(github #36). 264 265### Other 266 267The thread-list buffer can now be properly quit. Reported by Javier 268Olaechea (github #51). 269 270Let user ignore protocol mismatches per connection This issue popped 271up in SLIME, where it is still unsolved. See discussion in 272https://github.com/slime/slime/issues/250 273 274`view-mode` bindings no longer creep into SLY's popup 275buffers. By Paul M. Rodriguez. 276 277`sly-inspect-fetch-all` now actually does something (github #49). 278 279`sly-expand-1` and friends error less often and less cryptically when 280no nearby sexp's can be found. The region about to be macroexpanded is 281flashed for visual feedback. 282 283### On par with SLIME 2.14 and 2.15 284 285Where applicable, SLY tracks bugfixes and improvements contributed to 286SLIME: 287 288- Rationals are displayed in the echo area as floats too 289 290- The sly-c-p-c contrib now takes a better guess at symbol case 291 (issue https://github.com/slime/slime/issues/233) 292 293- SBCL backend now able to jump to ir1-translators, declaims and alien types 294 295- Various updates supporting SBCL 1.2.12 296 297- ABCL backend fixed inspection of frame-locals in the debugger 298 299- Following a suggestion by Attile Lendvai to SLIME, mouse-1 is now 300activates SLY's "part buttons". 301 302- SBCL's M-. can locate forms within PROGN/MACROLET/etc. Needs SBCL 1.2.15 303 304### On par with upcoming SLIME 2.16 305 306- SBCL and ABCL support completion of package-local nicknames 307 308- Robustify the indentation cache request handler 309 (issue https://github.com/slime/slime/issues/280) 310 311 312SLY 1.0.0-beta (March 2015) 313---------------------------------------- 314 315### mREPL enhancements 316 317In the REPL, a reader macro allows easy backreferences to previously 318returned values. `#v3` will access the first value of the fourth 319values-form ever returned and `#v3:2` will access the third of those 320values. Backreferences are automatically highlighted. 321 322New customization option `sly-mrepl-eli-like-history-navigation` makes 323history navigation via `C-r`, `M-p` and `M-n` keep the current input 324and add the history input at point. 325 326### New commands `sly-next-connection` and `sly-prev-connection` 327 328Replace deprecated `sly-cycle-connections` and provide more feedback. 329 330### On par with SLIME 2.13 331 332Where applicable, SLY tracks bugfixes and improvements contributed to 333SLIME: 334 335- Experimental CLASP support (see `slynk/backend/clasp.lisp`). 336 337- Fix a source-path-parsing bug. A problem raised and solved by Gabor 338 M�lis in http://permalink.gmane.org/gmane.lisp.slime.devel/11543. 339 340- Hot updating via MELPA on won't cause SLYNK/SLY version mismatch 341 342 SLIME issue [125](https://github.com/slime/slime/issues/125) 343 344- Allegro's "modern mode" is supported again. 345 346- Port conflicts can be resolved interactively 347 348 SLIME issue [204](https://github.com/slime/slime/issues/204) 349 350- New `SLYNK-FUZZY:*FUZZY-DUPLICATE-SYMBOL-FILTER*` option. 351 352 SLIME issue [215](https://github.com/slime/slime/issues/215) 353 354- `sly-recompile-xrefs` has been fixed. 355 356- More minor issues. 357 358SLY 1.0.0-alpha-3 (December 2014) 359--------------------------------- 360 361### sly-stickers: live source-code annotation tool 362 363`sly-stickers` is a live code annotation tool, a replacement for the 364"print" statements that are often included for debugging the value of 365a particular variable or expression. See a much more complete 366description in http://joaotavora.github.io/sly/#SLY-Stickers. 367 368Thanks to Artem Malyshev for early testing and ideas. 369 370### Documentation rewrite 371 372The documentation rewrite is underway (github issue #9), mentioning 373only a residual amount of SLIME-specific functionality. Browse to 374http://joaotavora.github.io/sly for the online version in HTML. 375 376### SLY is available in MELPA 377 378The README.md file has an updated install recipe, basically `M-x 379package-install RET sly RET`. Thanks to Kan-Ru Chen for the idea. 380 381### mREPL enhancements 382 383The "comma" shortcut for "sayoonara", "restart lisp", "in-package" 384commands has been restored and uses ido-style completion by 385default. Suggested by Javier Olaechea (github #18). 386 387`C-c C-z` switches to the nearest REPL, much like `sly-mrepl-sync`, 388but without changing the REPL's state. Suggested by Javier Olaechea 389(github #13). 390 391`sly-mrepl-sync` is now bound to `C-c ~` in any SLY buffer. A `C-u` 392prefix will also yank the last expression into the current REPL. 393 394New customization variable `sly-mrepl-prevent-duplicate-history` 395offers finer control over saved history. 396 397When a connection disconnects, a status line is inserted in the REPL 398stating the reason for disconnection (network failure, user abort, 399etc...) 400 401### Other enhancements 402 403SLY asks the user to confirm the Lisp to kill with `M-x sly-quit` or 404disconnect with `M-x sly-disconnect`. It also doesn't ask any 405irrelevant questions about switching to a default connection when it 406doesn't exist (github #5). 407 408### Notable bugfixes 409 410* Closed github #26: `sly-mrepl` history saved when killing 411 Emacs. Reported by Javier Olaechea. 412 413* Closed github #24: Common-lisp-style indentation now works in 414 `sly-mrepl`. Reported by Kan-Ru Chen. 415 416* Closed github #22: Compilation with `C-u` debug info now 417 working. Reported by Javier Olaechea. 418 419* Closed github #21: Enable incremental output with dedicated output 420 streams. Reported by Paul M. Rodriguez. 421 422* Closed github #5: `sly-quit` no longer asks irrelevant questions 423 424### Swank is now called Slynk 425 426Slynk is SLY's implementation of Swank, the supporting Lisp server 427where Emacs connects to. A project-wide rename was performed, 428including this NEWS.md file. 429 430A `sly-retro` contrib, enabled by default ensures that: 431 432* SLY can still talk to non-lisp Swank backends 433* SLY can serve requests for the Swank protocol 434* Most user customization in `~/.swankrc` is still valid in SLY. 435 436For details on the architecture of these changes, see the "Swank is 437now called Slynk" in the CONTRIBUTING.md. 438 439Thanks to Zach Beane for the great name. 440 441### On par with SLIME 2.10.1 442 443Where applicable, SLY tracks bugfixes and improvements contributed to 444SLIME: 445 446- `sly-autodoc` has been rewritten by Helmut Eller. Multiline is 447 enabled by default. 448- Experimental support for MKCL has been added 449 450 451SLY 1.0.0-alpha (September 2014) 452-------------------------------- 453 454Since this is the first pre-release of SLY since the fork, this entry 455focuses directly on the differences to SLIME. 456 457### Completely redesigned REPL 458 459The `sly-mrepl` contrib is a extensively redesigned 460Read-Eval-Print-Loop (REPL) for SLY. 461 462Multiple independent REPLs can be created with the `sly-mrepl-new` 463command. 464 465`sly-mrepl` is fully based on Emacs's `comint.el` and as such has a 466more familiar interface for history navigation. `C-r` and `C-M-r`, 467when used at the prompt, should provide a bash/zsh-like experience. 468 469The prompt gives a visual indication of long-running evaluations that 470haven't returned yet. 471 472The prompt gives a visual indication of the number of debugger levels 473currently caused by the last evaluation. 474 475Every return part can be inspected and re-returned as the last value. 476 477`C-c ~` on any Lisp file switches to the REPL and synchronized its 478`*PACKAGE*` and `*DEFAULT-PATHNAME-DEFAULTS*` with the file's. 479 480Output redirection is automatically setup. The first REPL created is 481the target for all threads' output onto the standard output 482streams. REPLs created afterward only see their own output. To turn 483this off configure the Slynk-side variable 484`SLYNK-MREPL:*GLOBALLY-REDIRECT-IO*`. 485 486A dedicated stream connection for output is automatically set 487up. Configure the `SLYNK-MREPL:*USE-DEDICATED-OUTPUT-STREAM*` if it 488doesn't suit you. 489 490There is saner scrolling behavior as provided by the `comint.el` 491substrate. The variables `comint-scroll-show-maximum-output`, 492`comint-scroll-to-bottom-on-input` and 493`comint-scroll-to-bottom-on-output` (which see) are set to `nil` by 494default, but the user might reconfigure them to her liking in the 495`sly-mrepl-hook`. 496 497There are Sylvesters. See `sly-mrepl-pop-sylvester`. 498 499### Regexp-capable M-x sly-apropos 500 501If SLY detects that [`cl-ppcre`](http://weitz.de/cl-ppcre/) is 502available in the Lisp side it will try to use it for "apropos" 503searches, otherwise the user is hinted at this possibility. As regexp 504searches are slower, this is only triggered if the pattern is a valid 505regular-expression. 506 507This is the default implementation of the new 508`SLYNK-BACKEND:MAKE-APROPOS-MATCHER` interface that particular 509implementations may wish to override. 510 511The search pattern, whether regexp-enabled or not, is now also applied 512to the package qualifier. 513 514### Contribs enabled by default 515 516By default, SLY enables the `sly-fancy` meta-contrib. This contains 517`sly-mrepl`, `sly-autodoc`, `sly-fancy-inspector`, `sly-fancy-trace`, 518`sly-fuzzy`, `sly-scratch`, `sly-package-fu`, `sly-fontifying-fu`, 519`sly-trace-dialog`, `sly-indentation` and `sly-tramp`. 520 521### SLY uses ASDF and loads contribs on demand. 522 523If the user sets `sly-contribs` to `sly-mrepl` she can be sure that no 524Lisp code related to other contribs appears in your run-time. Even if 525ASDF is unavailable, an improved version of the `slynk-loader.lisp` 526program will behave in a similar non-intrusive manner. 527 528This change also enables developers to write completely independent 529third-party extensions like 530[in this example](http://github.com/joaotavora/sly-hello-world). 531 532See the CONTRIBUTING.md file for more details on architecture changes. 533 534### More consistent interface 535 536The SLY-DB, Inspector, XREF and Apropos buffers have been 537redesigned to use a common class of push button with consistent 538interfaces. These context-aware commands are known as "part actions" 539 540For instance, the `i`,`p` and `M-RET` commands (`sly-button-inspect`, 541`sly-button-pretty-print` and `sly-mrepl-copy-to-repl`) are available 542for every interactive part, regardless of the SLY buffer in 543question. A command such as `v` (`sly-button-show-source`) is only 544available where it makes sense for the represented object. 545 546The same interfaces are also available in the "mREPL" and "Trace 547Dialog" buffers. 548 549`sly-mode` is now activated in every buffer related to SLY is now, 550meaning global keybindings like `C-c T` and `C-c I` work everywhere. 551 552### Multiple inspectors 553 554Interactive commands for inspecting Lisp objects can be prefixed with 555`C-u` to prompt the user for an inspector name. Separate inspector 556streams are kept. An idea by Olof-Joachim Frahm 557(http://macrolet.net/). 558 559### Copy function call to REPL 560 561An experimental feature: from the Trace Dialog or SLY-DB buffers, a 562new button action called "Copy call to REPL" is offered and bound to 563 564If SLY can calculate the arguments and the function symbol of the 565function call represented in the backtrace of trace entry, it will 566return them to the REPL, along with an uncommitted input line that 567refers back to them and calls the function. 568 569### Other miscellaneous enhancements over SLIME 570 571Faces have been revised and are based on Emacs's standard 572faces. Hopefully, SLY will remain readable even when the user 573switches themes. 574 575Popping up windows and buffers has been much improved. Windows are 576reused if the buffer names match or are similar, meaning that no 577longer will the SLY-DB "jump around" in multi-window configurations when 578selecting a restart that signals another error. 579 580Interactive expression evaluation will use a separate buffer when the 581results is too big to fit in the echo area. 582 583SLY's mode-line string is placed at the right side of the mode-line. 584 585SLY intrudes less than SLIME in the Emacs name-space, and uses more 586standard idioms. Macros like `with-struct` and `sly-define-keys` have 587been removed. 588 589Buffer names have been consolidated: every buffer name related to SLY 590obeys the same structure, stating the type, connection name and any 591pertinent additional info. 592 593Reading from the minibuffer has been improved. SLY uses `ido` 594completion by default, but it can customized via 595`sly-complete-symbol-function`. 596 597Messages and warnings prefix themselves accordingly with "[sly]". 598 599Fixed source locations when recompiling from an xref buffer. This is 600outstanding https://github.com/slime/slime/pull/175 pull-request in 601SLIME. Thanks Bart Botta. 602 603Fixed bugs in `contrib/sly-package-fu.el`. This is the outstanding 604https://github.com/slime/slime/pull/145 pull-request in SLIME. Thanks 605Leo Liu. 606 607### On par with SLIME 2.9 608 609Where applicable, SLY tracks bugfixes and improvements contributed to 610SLIME. 611 612### Anti-NEWS (Things removed from SLIME) 613 614SLY 1.0-Alpha supports Emacs 24.3 only. SLY 1.0 is expected to only 615support Emacs 24.4. 616 617There is very limited backward compatibility SLIME and only in the 618SLIME->SLY direction, meaning a contrib-less SLIME may connect to a 619Slynk server started by SLY, but any other combination will probably 620fail beyond very basic functionality. 621 622The portable profiling commands have been removed from the SLY menu 623`metering.lisp` and the profiling interfaces in `slynk-backend.lisp` 624have been kept. SLY 1.0.0 will hopefully have a better integrated 625portable profiler. 626 627The `slime-presentations` has been removed. The consistent button 628interface is better. 629 630The `slime-c-p-c` contrib has been removed, as it contained a lot of 631non-standard window-managing code. Its functionality has been merged 632into `sly-fuzzy` and setting `sly-complete-symbol-function` to 633`sly-c-p-c-complete-symbol` should give you the previous behavior. 634