dotemacs

My Emacs configuration
git clone git://git.entf.net/dotemacs
Log | Files | Refs | LICENSE

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