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