NEWS (32745B)
1 * Paredit Release Notes -*- outline -*- 2 3 paredit -- parenthetical editing in Emacs 4 5 https://paredit.org 6 7 Latest release: https://paredit.org/paredit.el 8 Current development version: https://paredit.org/paredit-beta.el 9 10 ** Version 26 -- 2022-11-26 11 12 Minor bug fix release, mainly to set a new branch scheme: 13 14 - `master' branch is where development and releases happen 15 => on release, one commit to remove beta and a second to bump version 16 - `release' branch points at latest release commit on master 17 - no `maint-N' branches 18 19 This replaces the old scheme where master was branched into maint-N and 20 then the beta tag was stripped off in the maint-N branch, which meant 21 no one branch would automatically track the current release as ELPA 22 prefers. 23 24 Other changes: 25 26 *** M-s (paredit-splice-sexp) now restores column in text fields like ielm. 27 *** Deletion now respects `delete-active-region'. 28 29 ** Version 25 -- 2022-11-25 30 31 *** paredit now lives at paredit.org. 32 *** M-r (paredit-raise-sexp) now respects active mark in Transient Mark Mode. 33 *** Paredit Mode and Electric Indent Mode are noted as incompatible. 34 *** M-q (paredit-reindent-defun) now respects `fill-paragraph-function'. 35 *** New variables `paredit-comment-prefix-...' for `paredit-comment-dwim'. 36 *** Reading character in Backslash escape now inherits input method. 37 *** M-r (paredit-raise-sexp) no longer reindents single-line sexps. 38 *** Various bug fixes and additions to test suite. 39 *** Worked around brokenness induced by Electric Indent Mode. 40 **** (Thanks to Sean Whitton for reporting the bug and discussing the fix.) 41 42 NOTE: The Electric Indent Mode workaround turns out to break ielm and 43 other interactive modes, because paredit now defines RET, overriding 44 the binding in interactive modes that submits an input. 45 46 Workaround to restore the old behaviour: 47 48 (define-key paredit-mode-map (kbd "RET") nil) 49 (define-key paredit-mode-map (kbd "C-j") 'paredit-newline) 50 51 Recommended to disable Electric Indent Mode at the same time. 52 53 ** Version 24 -- 2014-12-06 54 55 *** Slurp/barf now support prefix arguments with the obvious semantics. 56 *** HTML quick reference is a little prettier now, perhaps. 57 *** paredit.el no longer defines `backward-down-list'. 58 *** Slurp `(|) foo' now yields `(|foo)', not the frustrating `(| foo)'. 59 *** C-M-f/C-M-b (paredit-forward/paredit-backward) now move out of strings. 60 *** Changed M-" (paredit-meta-doublequote) to not break line, like M-). 61 *** New command: paredit-meta-doublequote-and-newline has old behaviour. 62 *** Several commands preserve indentation and point column better. 63 *** Motion commands support shift selection in GNU Emacs 24 and later. 64 *** `backward-delete-char' changes in GNU Emacs 24 no longer botch paredit. 65 *** Various bug fixes. 66 67 ** Version 23 -- 2013-04-07 68 69 Paredit no longer runs in GNU Emacs 20. It now requires 21 or later. 70 71 Paredit now has a small set of automatic tests. 72 73 *** New key: `M-?' is bound to `paredit-convolute-sexp' 74 *** New variable: paredit-override-check-parens-function 75 *** New command: paredit-delete-region 76 *** New command: paredit-kill-region 77 *** Renamed command: paredit-recentre-on-sexp -> paredit-recenter-on-sexp 78 *** Various bug fixes. 79 80 ** Version 22 -- 2010-10-09 81 82 The copying terms of paredit are now the GPLv3+, rather than the 83 3-clause BSD licence. 84 85 *** Style and Bugs 86 87 - paredit.el now has a header and footer conforming to the elisp 88 guidelines, so that it can be used with package.el. 89 90 - `paredit-mode' now has an autoload cookie. 91 92 - Miscellaneous bugs have been fixed, mostly to make paredit behave the 93 way it should when before it would simply signal an error, or to make 94 paredit signal an error when before it would do something bogus. 95 96 *** Altered Behaviour 97 98 - `paredit-raise-sexp' (M-r) now works when inside strings and 99 characters. 100 101 - `paredit-comment-dwim' (M-;) behaves slightly differently in the 102 following case: 103 104 (foo bar 105 |baz 106 quux) 107 108 Before: 109 (foo bar 110 baz ;| 111 quux) 112 113 After: 114 (foo bar 115 ;; | 116 baz 117 quux) 118 119 - `paredit-raise-sexp', `paredit-splice-sexps', and 120 `paredit-comment-dwim' reindent a little more selectively. 121 122 - `paredit-newline' tries to keep invalid structure inside comments. 123 124 - `paredit-kill' now works in any string-like object, not just those 125 with double-quotes. E.g., Common Lisp's |...| notation for symbols. 126 127 - After `...)', inserting a double-quote will insert a space too. See 128 also `paredit-space-for-delimiter-predicates', below. 129 130 *** New Commands 131 132 - `paredit-copy-as-kill' is to `paredit-kill' as `copy-region-as-kill' 133 is to `kill-region'. That is, `paredit-copy-as-kill' copies the 134 region that would be killed with `paredit-kill', but does not kill 135 the region. 136 137 - `paredit-semicolon' is back, with better behaviour. 138 139 - `paredit-{for,back}ward-{up,down}' move up and down the list 140 structure, like `{backward-,}{up,down}-list', but also enter and exit 141 strings when appropriate. C-M-u, C-M-d, C-M-p, and C-M-u are now 142 bound to these commands. 143 144 - `paredit-kill-ring-save' and `paredit-kill-region' are an experiment 145 for killing regions without destroying structure -- specifically. 146 Later, I hope to implement `paredit-yank', although it is much 147 trickier to implement. 148 149 *** New Variables 150 151 - `paredit-space-for-delimiter-predicates' is a list controlling when 152 inserting a delimiter causes insertion of a space too. See the 153 documentation string for details. Example use, to make paredit less 154 frustrating with Common Lisp's #P, #A, #-, and #+ notations: 155 156 (defvar common-lisp-octothorpe-quotation-characters '(?P)) 157 (defvar common-lisp-octothorpe-parameter-parenthesis-characters '(?A)) 158 (defvar common-lisp-octothorpe-parenthesis-characters '(?+ ?- ?C)) 159 160 (defun paredit-space-for-delimiter-predicate-common-lisp (endp delimiter) 161 (or endp 162 (let ((case-fold-search t) 163 (look 164 (lambda (prefix characters n) 165 (looking-back 166 (concat prefix (regexp-opt (mapcar 'string characters))) 167 (min n (point)))))) 168 (let ((oq common-lisp-octothorpe-quotation-characters) 169 (op common-lisp-octothorpe-parenthesis-characters) 170 (opp common-lisp-octothorpe-parameter-parenthesis-characters)) 171 (cond ((eq (char-syntax delimiter) ?\() 172 (and (not (funcall look "#" op 2)) 173 (not (funcall look "#[0-9]*" opp 20)))) 174 ((eq (char-syntax delimiter) ?\") 175 (not (funcall look "#" oq 2))) 176 (else t)))))) 177 178 (add-hook 'common-lisp-mode-hook 179 (defun common-lisp-mode-hook-paredit () 180 (make-local-variable 'paredit-space-for-delimiter-predicates) 181 (add-to-list 'paredit-space-for-delimiter-predicates 182 'paredit-space-for-delimiter-predicate-common-lisp))) 183 184 ** Version 21 -- 2008-07-24 185 186 Paredit 21 no longer has a message releasing it into the public domain. 187 Instead it is copyright (C) 2008, Taylor R. Campbell, and available 188 under the terms of the 3-clause BSD licence. See the paredit.el file 189 for details. 190 191 *** Style and Bugs 192 193 - Use of the terms `parenthesis', `bracket', and `delimiter' has been 194 clarified throughout the file: 195 196 . /Parentheses/ are nestable objects indicated by matching delimiter 197 pairs. For example, the text `(foo (bar baz) quux)' has two 198 parentheses, `(foo ... quux)' and `(bar baz)'; each is delimited 199 by matching round delimiters. 200 201 . /Delimiters/ are the actual atomic objects that delimit 202 parentheses. They may be shaped differently; for example, `[' is 203 an opening square delimiter, and `{' is an opening curly 204 delimiter. 205 206 . The terms `bracket', `brace', and `brocket' (the latter a 207 misspelling of `broket', for `broken bracket') are eschewed. 208 209 The names `paredit-open-parenthesis' &c. have been changed to 210 `paredit-open-round' &c., and likewise with `bracket' -> `square', 211 `brace' -> `curly', and `brocket' -> `angled'. The old names with 212 the morphemes `parenthesis' and `bracket' have been preserved so that 213 users need not update initialization files immediately, but will 214 instead be confused when a subsequent minor update breaks all their 215 initialization files for no good reason. 216 217 - Some commands now check their context more strictly, so that they 218 won't try to do anything in comments or strings. Whether this is the 219 right thing, I don't know. 220 221 - Several small elements of style were adjusted. This should make no 222 functional difference on the code. (If it does, then I have made a 223 mistake.) 224 225 - paredit.el no longer defines `kill-region-new'; the function is 226 instead called `paredit-hack-kill-region', to reflect its hackish 227 nature and to avoid name clashes. I believe that the only name 228 remaining defined by paredit.el without `paredit-' prefixed is 229 `backward-down-list', whose definition is so obvious that it would be 230 silly to define it any other way, so that any name conflict does not 231 worry me. (I suppose `kill-region-new' is obvious, too -- it is to 232 `kill-region' as `kill-new' is to `kill'. But the omission from a 233 pattern isn't as clear as with `backward-down-list'.) 234 235 - `paredit-comment-dwim' should work in GNU Emacs 21 now, whose 236 newcomment.el defines no `comment-or-uncomment-region'. More and 237 more ugly compatibility hacks are accruing in paredit.el as a 238 consequence, to my dismay. Oh well. 239 240 - The release notes are now formatted more legibly, paginated nicely, 241 and organized with Outline Mode. The gross discrepancy in writing 242 style over the years has not changed. 243 244 - The introductory comments in the file are more clearly written now. 245 246 - Fixed a bug in S-expression slurpage with mixed delimiters. 247 248 *** Altered Behaviour 249 250 - The bindings for `)' and `M-)' have been exchanged: `)' is bound to 251 `paredit-close-round' and `M-)' to `paredit-close-round-and-newline', 252 so that you can now without any glaring exceptions type new code 253 using the same keystrokes with and without Paredit Mode. You can 254 also now paste into Emacs through a terminal without leaving spurious 255 blank lines in the buffer. You are, of course, free to revert to the 256 old behaviour in your .emacs file. 257 258 - `paredit-semicolon' is no more. Now you may insert semicolons as 259 you please without the infuriating escape of the following text on 260 the line. 261 262 - `paredit-move-past-close-and-newline' will now leave comments on the 263 same line only if they are margin comments and no S-expressions are 264 intervening between the point and the comment; that is, only if it 265 looks like the margin comment really pertains to the expression being 266 closed will paredit leave it on the same line. 267 268 - `paredit-backward-delete', `paredit-forward-delete', and 269 `paredit-kill' formerly accepted prefix arguments to run the basic 270 `backward-delete-char', `delete-char', and `kill-line' commands 271 instead, without regard for the value of the prefix argument. Now 272 `C-u' will run the basic commands, but 273 274 . `paredit-kill' will pass a numeric argument on to `kill-line', and 275 276 . `paredit-backward-delete' and `paredit-forward-delete' will both 277 delete N characters if given a numeric prefix argument N. 278 279 (`paredit-kill' should probably do the same, but repeating the 280 command N times is probably not what you want -- what you probably 281 want is to kill at most N *lines*, but `paredit-kill' N times might 282 kill many more lines than that. I don't know what the right thing is 283 here, but I welcome feedback from users who want to do something like 284 this.) 285 286 - With a `C-u' prefix argument, `paredit-wrap-sexp' now wraps all 287 S-expressions following the point until the end of the buffer or a 288 closing delimiter. 289 290 - `paredit-splice-sexp' with a `C-u' prefix argument (also known as 291 `paredit-splice-sexp-killing-backward') will now kill from the point, 292 rather than from the beginning of the next S-expression (or, with 293 `C-u C-u', from the end of the previous S-expression). This means 294 that it is more likely to do what you mean with 295 296 (let ((a b) (c d)) 297 |;; I want to preserve this comment after `C-u M-s'. 298 (foo bar baz)) 299 300 - `paredit-splice-sexp' now splices strings, by removing backslash 301 escapes, or signals an error if doing so would destroy the structure 302 of the buffer. 303 304 - I have finally introduced the first bit of code to try to deal 305 sensibly with broken buffers. It will probably go only downhill from 306 here, and continue in an interminable series of kludges to handle 307 every possible way in which the buffer can go *wrong* (it's bad 308 enough how many ways it can be *right*). If you try type a closing 309 delimiter from within a partial S-expression that has an opening 310 delimiter but no closing delimiter, then it will honk at you and 311 insert the closing delimiter -- or if what you typed doesn't match 312 the opening delimiter, it will just honk and refuse to do anything. 313 Also, `DEL' and `C-d' will delete spurious (but not [yet] mismatched) 314 opening and closing delimiters, respectively. (Thanks to John 315 Wiegley for inspiring me to do these dreary deeds.) 316 317 *** New Commands 318 319 - New command `paredit-yank-pop' cooperates with `paredit-wrap-sexp' by 320 behaving either like `yank' or like `yank-pop' if the previous 321 command was `paredit-wrap-sexp' or `paredit-yank-pop', and with the 322 added bonus of reindenting the newly wrapped form. It is in need of 323 a key to be bound to it; since it is different from both `yank' and 324 `yank-pop', I decided not to override `C-y' or `M-y', and I 325 considered `C-c C-y', but I imagine that many major modes want to 326 take that. 327 328 - New command `paredit-focus-on-defun' moves display to the top of the 329 definition at the point. 330 331 - New command `paredit-reindent-defun', which `M-q' is bound to in 332 Paredit Mode, indents the definition the point is on, or, if the 333 point is in a string or comment, fills the paragraph instead. 334 (Thanks to John Wiegley for the idea.) 335 336 - New variations on slurpage, barfage, and joinage. I'm still looking 337 for keys to bind to these commands. Find them with the strings 338 `add-to-{previous,next}-list' and `join-with-{previous,next}-list' in 339 their names. (Again, thanks to John Wiegley for the idea.) 340 341 - New command `paredit-convolute-sexp' performs the combined function 342 of `paredit-splice-sexp-killing-backward', `paredit-wrap-sexp', and 343 `yank'. Example: 344 345 (let ((foo bar)) 346 (let ((baz quux)) 347 |(zot mumble) 348 (frotz)) 349 (gargle mumph)) 350 -> 351 (let ((baz quux)) 352 (let ((foo bar)) 353 (zot mumble) 354 (frotz) 355 (gargle mumph))) 356 357 This would otherwise have been done with the key sequence `C-u M-s 358 C-M-u M-( C-y C-M-u C-M-q'. `C-u M-s' could be `M-up', and `C-y 359 C-M-u C-M-q' could be `C-c C-y' if that key is chosen for 360 `paredit-yank-pop', making the sequence `M-up C-M-u M-( C-c C-y'. If 361 there is a good key for `paredit-convolute-sexp', it could be a nice 362 improvement over even that terser sequence. (Once again, this was 363 inspired by John Wiegley's idea (and name).) 364 365 [Observe, though, that the form (FROTZ) stuck with (ZOT MUMBLE) the 366 whole time, and was not carried along as the `end' of the (LET ((BAZ 367 QUUX)) ...) form. Hence this is *not* the idea mentioned below by 368 the name `paredit-interchange-sexps', but a simpler approximation of 369 the idea.] 370 371 - `define-paredit-pair' now defines commands `paredit-wrap-...' for 372 wrapping S-expressions with different delimiters, like 373 `paredit-wrap-sexp'. The function `paredit-wrap-sexp' now accepts 374 optional arguments for the delimiters to insert; the new commands are 375 defined in terms of the modified `paredit-wrap-sexp'. `M-[' is now 376 bound to `paredit-wrap-square'. 377 378 ** Version 20 -- 2007-04-04 379 380 *** Preliminary Support for XEmacs 381 382 This version introduces preliminary support for XEmacs. The changes 383 needed were: 384 385 - `check-parens' is called by the `paredit-mode' initialization only if 386 it is fbound. 387 388 - The forward and backward deletion keys are specified differently in 389 GNU Emacs and XEmacs. 390 391 - `paredit-forward' and `paredit-backward' use a "_" interactive 392 specification in XEmacs in order to preserve the mark. 393 394 - `paredit-region-active-p' is just `region-active-p' in XEmacs. 395 396 - Some hair was needed to handle S-expression parse error conditions 397 properly, and versions of XEmacs earlier than 21.5 may have obscure 398 problems as a result. 399 400 *** Style and Bugs 401 402 - rxvt-specific terminal escape sequences are no longer bound to the 403 commands that the keys those sequences denote are. Set your 404 environment variables correctly and keep your rxvt.el updated. 405 (Aren't terminals fun?) 406 407 - HTML output is now properly quoted. Some vestigial indirections in 408 the tables have been removed. 409 410 - Yet *ANOTHER* `paredit-kill' bug is fixed. I do not know what the 411 bug is or why it happened, but it seems to be gone now. 412 413 - Improved robustness of `paredit-join-sexps' and `paredit-splice-sexp' 414 with respect to their use in the middle of atoms, and made splicing 415 within a string illegal. 416 417 - Fixed several bugs in the paredit word killing commands. In the 418 process, however, I encountered what seems to be a bug in Emacs's 419 `parse-partial-sexp', which may mean bugs in other things... 420 421 - Eliminated dependency on `cl' feature. 422 423 - Fixed a bug in `paredit-backward-kill-word' that would cause deletion 424 of the first double-quote in `(foo "|")'. 425 426 - Fixed a bug with `paredit-backward-kill-word' at the end of buffer. 427 428 - Fixed a bug with `paredit-backward-kill-word' before any words in a 429 buffer. 430 431 *** Altered Behaviour and New Functionality 432 433 - `paredit-mode' now accepts a prefix argument to mean that it should 434 not check the parentheses in the buffer first. Supply the prefix 435 argument with care; though it is useful for editing small parts of a 436 buffer in Lisp when the rest is random, it might also screw the whole 437 buffer up in unpredictable ways, because most of paredit doesn't 438 even try to handle invalid structure. 439 440 - Parenthesis blinking is improved somewhat to better respect user 441 customization of `blink-matching-paren'. 442 443 - The paredit minor mode no longer exchanges C-j & RET; following the 444 GNU Emacs conventions, it now leaves RET alone and binds C-j to 445 `paredit-newline'. Those of you, such as me, who relied on the old 446 exchange will have to update your .emacs files. 447 448 - C-left and C-right are now bound to paredit-forward-barf-sexp and 449 paredit-forward-slurp-sexp, instead of M-left and M-right, whose word 450 motion bindings are no longer shadowed. 451 452 - The behaviour of (, ", M-(, and M-" with respect to active regions 453 and prefix arguments has been regularized: 454 455 . With neither an active region, i.e. an active mark and 456 transient-mark-mode, ( and " will insert a pair of delimiters at 457 the point, and M-( and M-" will wrap the following expression with 458 delimiters. 459 460 . With an active region and no prefix argument, if and only if the 461 region contains only balanced expressions, all four commands will 462 wrap the region with the respective delimiters. 463 464 . With a prefix argument N, all four commands will wrap the next N 465 expressions with the commands' respective delimiters. 466 467 " and M-", of course, escape any characters that need escaping first 468 if they are used to wrap regions. 469 470 - Implemented slurpage into strings. 471 472 - Made `M-- M-s' equivalent to `M-- M-1 M-s'. 473 474 - Changed `paredit-insert-pair' so that it will not skip whitespace 475 before inserting the pair. 476 477 - `paredit-splice-sexp' with a prefix argument and friends (i.e. `M-s', 478 `M-<up>', and `M-<down>') now always create a new entry on the kill 479 ring. 480 481 ** Version 19 -- 2006-03-28 482 483 This version introduces support for delimiters other than round 484 brackets. Previously, if the major mode's syntax table considered 485 square brackets (and curly braces, &c.) to be delimiters, since no 486 paredit commands would insert them balanced, deleting them would be 487 tricky: paredit's DEL & C-d bindings would refuse to delete them 488 because they would be imbalanced unless you manually type the closing 489 delimiter. 490 491 Now commands are defined for the opening and closing of parentheses 492 (round), brackets (square), braces (curly), and brockets (angled), 493 named `paredit-open-<type>', `paredit-close-<type>-and-newline', and 494 `paredit-close-<type>'; paredit-mode binds the opening and closing 495 square bracket keys to be `paredit-open-bracket' and `paredit-close- 496 bracket', respectively. The rest you can bind yourself; this minimal 497 pair of bindings will, I think, account for accidental insertion, 498 elisp vectors, and (bletch) the equation of square and round brackets 499 as parentheses in some non-standard Scheme extensions. 500 501 Also now supported in this version is insertion of delimiter pairs 502 around active regions in transient-mark-mode. If you mark a region 503 with transient-mark-mode enabled, you can use any of the delimiter 504 pair insertion keys (like opening round bracket, double-quote, &c.) 505 to insert a pair of delimiters around the region. There are now two 506 ways to parenthesize lists of expressions with visual feedback: using 507 M-( (paredit-wrap-sexp) followed by C-) (paredit-forward-slurp-sexp) 508 until satisfied, and now C-M-SPC (mark-sexp) until you have marked 509 the desired expressions and then any of the delimiter pair insertion 510 keys to insert the delimiters. 511 512 ** Version 18 -- 2006-02-11 513 514 *** Style and Bugs 515 516 - Corrected terminal arrow key sequences *again*. M-left and M-right 517 were backwards. 518 519 - Put the save-excursion back in paredit-recentre-on-sexp. I don't 520 remember why it was taken out in version 13. 521 522 - Fixed HTML output to stop producing spurious <tr> tags. 523 524 - Corrected a number of paredit command examples. 525 526 - Aesthetic changes to the code: 527 528 . Regularized some aspects of code style. 529 530 . Repaginated so that all pages are at most 80 lines long, and most 531 are at least 40 lines. 532 533 . Formatted headings for an outline regexp to match so that 534 outline-minor-mode works nicely on paredit.el. 535 536 *** Altered Behaviour and New Functionality 537 538 - Implemented paredit-forward-kill-word & paredit-backward-kill-word, 539 or M-d & M-DEL, which are like kill-word & backward-kill-word, but 540 they will not kill parenthesis, string, or comment delimiters; they 541 will preserve the structure of S-expressions, while the built-in 542 Emacs word killing commands would destroy it. 543 544 - M-" is now bound to paredit-meta-doublequote, which has the old 545 behaviour of paredit-close-string-and-newline if within a string, 546 but which wraps the following S-expression (or N S-expressions) in 547 double-quotes if without a string; paredit-doublequote does the 548 same, but the default argument is 0, not 1. 549 550 - M-S (paredit-split-sexp) no longer deletes horizontal space in 551 strings before splitting them into two. The rationale, as 552 suggested by Zbigniew Szadkowski, is that whitespace is usually 553 significant in strings, while not in lists, and you can type M-\ 554 M-S if you really do want the horizontal space deleted anyway. 555 556 - Reintroduced paredit-join-sexps as M-J. The implementation is now 557 more robust: it ensures that the two S-expressions to join match -- 558 i.e. they are both lists, or they are both strings, or they are 559 both symbols --, and it correctly handles the atom case now as 560 well. 561 562 - Extended paredit command examples to allow multiple steps in 563 succession of a single example. 564 565 ** Version 17 -- 2005-12-31 566 567 *** Style and Bugs 568 569 - Rewrote all documentation strings to be in the imperative mood, per 570 GNU Emacs's guidelines. Some documentation strings may have been 571 corrected, too, but I can't be bothered to grovel through the diff 572 to pick out all changes to all documentation strings. 573 574 - Forced parenthesis flashing even with show-paren-mode enabled. 575 576 - Fixed bug in forward deletion within strings so that the empty 577 string can be deleted. 578 579 - Simplified determination of whether the point is in a comment. 580 581 *** Altered Behaviour and New Functionality 582 583 - Eliminated paredit-terminal-mode. All key bindings it had are now 584 incorporated into paredit-mode's keymap. I may have changed some 585 keybindings, too, but I don't remember what they were if I did. I 586 think I fixed some of the keybindings in the terminal. 587 588 - Added examples to documentation of all paredit commands, as well as 589 code to generate an HTML file containing the examples in nicely 590 formatted tables (sorry, web purists). 591 592 - Made paredit-mode refuse to be enabled in a buffer with imbalanced 593 parentheses. 594 595 - Updated documentary heading. It now explains how to customize keys 596 while still autoloading and how to make paredit's RET work nicely 597 with SLIME's REPL. 598 599 - Improved semicolon insertion: (a) to accept a numeric prefix 600 argument dictating a number of semicolons to insert, instead of a 601 prefix argument that forces the insertion of a semicolon without a 602 trailing newline, which can be effected with C-q anyway; and (b) to 603 allow insertion of semicolons before existing comments without 604 inserting a superfluous leading newline. To comment out code, you 605 must still use M-; or M-x comment-region. 606 607 ** Version 16 -- 2005 608 609 - Introduced M-S (paredit-split-sexp) to split lists or strings from 610 the middle. 611 612 - Fixed the definition of M-; to use (kbd "M-;") to correctly 613 identify the key sequence meta-semicolon, not "M-;" for M hyphen 614 semicolon. 615 616 ** Version 15 -- 2005 617 618 - Rewrote comment insertion code. 619 620 - Implemented M-; (paredit-comment-dwim), which is like comment-dwim 621 but inserts comments more appropriately with respect to paredit. 622 623 ** Version 14 -- 2005 624 625 Version 14 introduced fancy comment handling: 626 627 - paredit-close-list-and-newline now refuses to move a margin comment 628 to another line; instead it will help to preserve the column of the 629 comment. 630 631 - The semicolon key is now bound to a command that will automatically 632 move any code following the point onto the next line, so that you 633 do not inadvertently comment out half expressions. You can still 634 use M-; (comment-dwim) to comment out specific regions that are not 635 meant to be code (e.g., old comments that were accidentally 636 uncommented) or whole S-expressions, usually in conjunction with 637 C-M-SPC (mark-sexp). 638 639 ** Version 13 -- 2005 640 641 - Removed M-\ (paredit-join-sexps), whose key binding conflicts with 642 delete-horizontal-space and whose implementation was inadequate and 643 led to general uselessness of the command. 644 645 - Improved RET (paredit-newline) so that it does not do anything 646 fancy within strings and first tests whether the point is in a 647 comment before checking whether it is in a character. 648 649 - Changed paredit-skip-whitespace from skip-syntax-{forward,backward} 650 to skip-chars-{forward,backward}, because in the Lisp syntax table 651 newlines are not considered whitespace -- rather, they are comment 652 ends --, but we want to skip them nevertheless. 653 654 - Corrected paredit-kill in a way I don't understand. 655 656 - Minor code improvements, including: 657 658 . Changed call to previous-line to use forward-line instead. 659 . Removed unnecessary save-excursion in paredit-recentre-on-sexp. 660 . IF indentation changes. 661 662 ** Version 12 -- 2005 663 664 - Implemented M-r (paredit-raise-sexp), which raises a single 665 S-expression up the tree, deleting all of its siblings and its 666 enclosing list. 667 668 - Rearranged some arrow key bindings again. 669 670 - Made paredit-forward-delete and paredit-backward-delete check for 671 buffer bounds and also matching of the delimiters of empty lists. 672 673 - Added a buffer bounds check to paredit-kill. 674 675 - Made backward barfing signal an error, not just a message. 676 677 ** Version 11 -- 2005 678 679 - Changed the key for paredit-splice-sexp from M-/, which is by 680 default the popular dabbrev-expand, to M-s, which I was surprised 681 to find no existing binding for. 682 683 - Added a prefix argument to paredit-splice-sexp; see the command's 684 documentation for details. M-up is now equivalent to C-u M-s; 685 M-down, to C-u C-u M-s. 686 687 - Fixed a lot of the terminal key sequences for the arrow key 688 bindings in paredit-terminal-mode. 689 690 - Modified the behaviour of paredit-forward and paredit-backward to 691 change only one level of nesting depth, not to repeat until there 692 is a sibling S-expression to move across. 693 694 - Changed a lot of code to use character syntax, instead of exact 695 character comparisons, for better generality. 696 697 - Rewrote much of paredit-kill, again. 698 699 ** Version 10 -- 2005 700 701 - Introduced paredit-forward and paredit-backward, which are like 702 forward-sexp and backward-sexp but which will also go up a nesting 703 level if at the end of a list. 704 705 - Introduced C-c C-M-l (paredit-recentre-on-sexp), whose name is 706 self-explanatory. 707 708 - Added support for numeric prefix arguments to paredit-open-list. 709 710 - Fixed paredit-kill so that it would correctly kill whitespace 711 between parentheses, as in ( ). 712 713 - Changed suggestion of what to put in your .emacs from require to 714 autoload. 715 716 ** Version 9 -- 2005 717 718 - Introduced enable-paredit-mode and disable-paredit-mode to better 719 choose which one to enable. 720 721 - Forced blinkage of matching parentheses in paredit-close-list and 722 paredit-close-list-and-newline, even if show-paren-mode is enabled. 723 724 ** Version 8 -- 2005 725 726 - Added paredit-terminal-mode, which is like paredit-mode but which 727 provides key bindings that work in terminals, while paredit-mode 728 contains many (such as controlled brackets) that do not work in 729 terminals. Thanks to Jorgen Schaefer for suggesting many of the 730 terminal key bindings. 731 732 - Exchanged RET and C-j: RET now inserts the fancy newline with auto- 733 indentation, while C-j inserts a literal line feed. While this 734 defies convention, and some people prefer not to do this, I have 735 found that it is more convenient for RET to have the behaviour of 736 the common case, where auto-indentation is desired, and for C-j to 737 insert the uncommon exact, literal line feed. You can always 738 customize the key bindings yourself, of course. 739 740 - Rearranged arrow key bindings. 741 742 - Implemented paredit-close-list-and-newline, which is like 743 paredit-close-list followed by RET (paredit-newline); and M-" 744 (paredit-close-string-and-newline), which is similar but for 745 strings. 746 The closing round bracket character now inserts the newline, while 747 the meta modifier inhibits this. 748 749 - Overhauled paredit-kill. 750 751 - Extended slurpage and barfage to permit their operation across 752 arbitrary depth changes. 753 754 - Fixed bizarre bug with backward barfage. I apologize for the 755 alliteration. 756 757 - Fixed a number of other small bugs. 758 759 - Prefixed `paredit-' to the remaining functions defined in the file 760 that did not already have the prefix. 761 762 - Defined backward-down-list, which for some reason is not provided 763 by lisp.el, although up-list, down-list, & backward-up-list all 764 are. (This is the sole exception to the above item. It deserves 765 no prefix because it ought to be defined in lisp.el with this name 766 anyway.) 767 768 ** Version 7 -- 2005-09 769 770 - Changed paredit-open-list and paredit-close-list so that they will 771 refuse to insert parentheses inside character literals. 772 773 - Substituted new code for GNU Emacs's move-past-close-and-reindent. 774 I do not remember why now, and I no longer understand either code 775 well enough to discern differences, other than that Emacs's 776 m-p-c-a-r is probably faster because it incrementally parses each 777 step of the way. All I can see is that paredit.el's code now 778 inserts indentation before the closing parenthesis while Emacs's 779 m-p-c-a-r does not. 780 781 - Fixed bugs in deletion within character literals and strings. 782 783 ** Versions 2 through 6 -- 2005-08-09 784 785 (I lost versions 2, 3, 4, & 5.) 786 787 - Flushed M-" (paredit-insert-doublequote), which was rather useless 788 and which " (paredit-doublequote) now subsumes the functionality of. 789 790 - Added instrumented forward deletion as well as backward deletion, 791 which now behave well inside strings. 792 793 - Flushed unnecessary individual round bracket insertion keys; use 794 C-q instead. 795 796 - Added C-left & C-right: backward-sexp & forward-sexp, respectively. 797 798 - Fixed the test of whether the point is in a character literal. 799 800 - Modified " (paredit-doublequote) to insert escaped double-quote if 801 in the middle of the string, rather than to jump past the string's 802 closing delimiter. 803 804 - Introduced bogus backslash escaping mechanism. 805 806 - Introduced new command for breaking the line and indenting, and 807 bound C-j, rather than RET, to it, according to convention. 808 809 - Improved C-k (paredit-kill), particularly in strings where it will 810 no longer kill the closing delimiter of the string. 811 812 - Changed the splicage, joinage, slurpage, and barfage commands so 813 that they will reindent only the modified list, not the whole 814 definition. 815 816 ** Version 1 -- 2005-08-01