summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTaylor R Campbell <campbell@mumble.net>2013-04-07 05:35:03 +0000
committerTaylor R Campbell <campbell@mumble.net>2013-04-07 05:35:03 +0000
commitb02f509e53e366082aa2cba8c0fb69da00cffb39 (patch)
tree4589df9d8a36d2fde7ba49e2da16edd8db22a13c
parent2186c7e2ff252c78c540378d9718a1abe5674083 (diff)
New file NEWS from paredit.release.
-rw-r--r--NEWS750
1 files changed, 750 insertions, 0 deletions
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..f75a5ba
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,750 @@
+* Paredit Release Notes -*- outline -*-
+
+This file contains release notes for paredit, whose latest released
+version is available at
+
+ <http://mumble.net/~campbell/emacs/paredit.el>,
+
+and whose latest beta version is available at
+
+ <http://mumble.net/~campbell/emacs/paredit-beta.el>.
+
+The latest version of this file is available at
+
+ <http://mumble.net/~campbell/emacs/paredit.release>.
+
+** Version 22
+
+The copying terms of paredit are now the GPLv3+, rather than the
+3-clause BSD licence.
+
+*** Style and Bugs
+
+- paredit.el now has a header and footer conforming to the elisp
+ guidelines, so that it can be used with package.el.
+
+- `paredit-mode' now has an autoload cookie.
+
+- Miscellaneous bugs have been fixed, mostly to make paredit behave the
+ way it should when before it would simply signal an error, or to make
+ paredit signal an error when before it would do something bogus.
+
+*** Altered Behaviour
+
+- `paredit-raise-sexp' (M-r) now works when inside strings and
+ characters.
+
+- `paredit-comment-dwim' (M-;) behaves slightly differently in the
+ following case:
+
+ (foo bar
+ |baz
+ quux)
+
+ Before:
+ (foo bar
+ baz ;|
+ quux)
+
+ After:
+ (foo bar
+ ;; |
+ baz
+ quux)
+
+- `paredit-raise-sexp', `paredit-splice-sexps', and
+ `paredit-comment-dwim' reindent a little more selectively.
+
+- `paredit-newline' tries to keep invalid structure inside comments.
+
+- `paredit-kill' now works in any string-like object, not just those
+ with double-quotes. E.g., Common Lisp's |...| notation for symbols.
+
+- After `...)', inserting a double-quote will insert a space too. See
+ also `paredit-space-for-delimiter-predicates', below.
+
+*** New Commands
+
+- `paredit-copy-as-kill' is to `paredit-kill' as `copy-region-as-kill'
+ is to `kill-region'. That is, `paredit-copy-as-kill' copies the
+ region that would be killed with `paredit-kill', but does not kill
+ the region.
+
+- `paredit-semicolon' is back, with better behaviour.
+
+- `paredit-{for,back}ward-{up,down}' move up and down the list
+ structure, like `{backward-,}{up,down}-list', but also enter and exit
+ strings when appropriate. C-M-u, C-M-d, C-M-p, and C-M-u are now
+ bound to these commands.
+
+- `paredit-kill-ring-save' and `paredit-kill-region' are an experiment
+ for killing regions without destroying structure -- specifically.
+ Later, I hope to implement `paredit-yank', although it is much
+ trickier to implement.
+
+*** New Variables
+
+- `paredit-space-for-delimiter-predicates' is a list controlling when
+ inserting a delimiter causes insertion of a space too. See the
+ documentation string for details. Example use, to make paredit less
+ frustrating with Common Lisp's #P, #A, #-, and #+ notations:
+
+(defvar common-lisp-octothorpe-quotation-characters '(?P))
+(defvar common-lisp-octothorpe-parameter-parenthesis-characters '(?A))
+(defvar common-lisp-octothorpe-parenthesis-characters '(?+ ?- ?C))
+
+(defun paredit-space-for-delimiter-predicate-common-lisp (endp delimiter)
+ (or endp
+ (let ((case-fold-search t)
+ (look
+ (lambda (prefix characters n)
+ (looking-back
+ (concat prefix (regexp-opt (mapcar 'string characters)))
+ (min n (point))))))
+ (let ((oq common-lisp-octothorpe-quotation-characters)
+ (op common-lisp-octothorpe-parenthesis-characters)
+ (opp common-lisp-octothorpe-parameter-parenthesis-characters))
+ (cond ((eq (char-syntax delimiter) ?\()
+ (and (not (funcall look "#" op 2))
+ (not (funcall look "#[0-9]*" opp 20))))
+ ((eq (char-syntax delimiter) ?\")
+ (not (funcall look "#" oq 2)))
+ (else t))))))
+
+(add-hook 'common-lisp-mode-hook
+ (defun common-lisp-mode-hook-paredit ()
+ (make-local-variable 'paredit-space-for-delimiter-predicates)
+ (add-to-list 'paredit-space-for-delimiter-predicates
+ 'paredit-space-for-delimiter-predicate-common-lisp)))
+
+** Version 21
+
+Paredit 21 no longer has a message releasing it into the public domain.
+Instead it is copyright (C) 2008, Taylor R. Campbell, and available
+under the terms of the 3-clause BSD licence. See the paredit.el file
+for details.
+
+*** Style and Bugs
+
+- Use of the terms `parenthesis', `bracket', and `delimiter' has been
+ clarified throughout the file:
+
+ . /Parentheses/ are nestable objects indicated by matching delimiter
+ pairs. For example, the text `(foo (bar baz) quux)' has two
+ parentheses, `(foo ... quux)' and `(bar baz)'; each is delimited
+ by matching round delimiters.
+
+ . /Delimiters/ are the actual atomic objects that delimit
+ parentheses. They may be shaped differently; for example, `[' is
+ an opening square delimiter, and `{' is an opening curly
+ delimiter.
+
+ . The terms `bracket', `brace', and `brocket' (the latter a
+ misspelling of `broket', for `broken bracket') are eschewed.
+
+ The names `paredit-open-parenthesis' &c. have been changed to
+ `paredit-open-round' &c., and likewise with `bracket' -> `square',
+ `brace' -> `curly', and `brocket' -> `angled'. The old names with
+ the morphemes `parenthesis' and `bracket' have been preserved so that
+ users need not update initialization files immediately, but will
+ instead be confused when a subsequent minor update breaks all their
+ initialization files for no good reason.
+
+- Some commands now check their context more strictly, so that they
+ won't try to do anything in comments or strings. Whether this is the
+ right thing, I don't know.
+
+- Several small elements of style were adjusted. This should make no
+ functional difference on the code. (If it does, then I have made a
+ mistake.)
+
+- paredit.el no longer defines `kill-region-new'; the function is
+ instead called `paredit-hack-kill-region', to reflect its hackish
+ nature and to avoid name clashes. I believe that the only name
+ remaining defined by paredit.el without `paredit-' prefixed is
+ `backward-down-list', whose definition is so obvious that it would be
+ silly to define it any other way, so that any name conflict does not
+ worry me. (I suppose `kill-region-new' is obvious, too -- it is to
+ `kill-region' as `kill-new' is to `kill'. But the omission from a
+ pattern isn't as clear as with `backward-down-list'.)
+
+- `paredit-comment-dwim' should work in GNU Emacs 21 now, whose
+ newcomment.el defines no `comment-or-uncomment-region'. More and
+ more ugly compatibility hacks are accruing in paredit.el as a
+ consequence, to my dismay. Oh well.
+
+- The release notes are now formatted more legibly, paginated nicely,
+ and organized with Outline Mode. The gross discrepancy in writing
+ style over the years has not changed.
+
+- The introductory comments in the file are more clearly written now.
+
+- Fixed a bug in S-expression slurpage with mixed delimiters.
+
+*** Altered Behaviour
+
+- The bindings for `)' and `M-)' have been exchanged: `)' is bound to
+ `paredit-close-round' and `M-)' to `paredit-close-round-and-newline',
+ so that you can now without any glaring exceptions type new code
+ using the same keystrokes with and without Paredit Mode. You can
+ also now paste into Emacs through a terminal without leaving spurious
+ blank lines in the buffer. You are, of course, free to revert to the
+ old behaviour in your .emacs file.
+
+- `paredit-semicolon' is no more. Now you may insert semicolons as
+ you please without the infuriating escape of the following text on
+ the line.
+
+- `paredit-move-past-close-and-newline' will now leave comments on the
+ same line only if they are margin comments and no S-expressions are
+ intervening between the point and the comment; that is, only if it
+ looks like the margin comment really pertains to the expression being
+ closed will paredit leave it on the same line.
+
+- `paredit-backward-delete', `paredit-forward-delete', and
+ `paredit-kill' formerly accepted prefix arguments to run the basic
+ `backward-delete-char', `delete-char', and `kill-line' commands
+ instead, without regard for the value of the prefix argument. Now
+ `C-u' will run the basic commands, but
+
+ . `paredit-kill' will pass a numeric argument on to `kill-line', and
+
+ . `paredit-backward-delete' and `paredit-forward-delete' will both
+ delete N characters if given a numeric prefix argument N.
+
+ (`paredit-kill' should probably do the same, but repeating the
+ command N times is probably not what you want -- what you probably
+ want is to kill at most N *lines*, but `paredit-kill' N times might
+ kill many more lines than that. I don't know what the right thing is
+ here, but I welcome feedback from users who want to do something like
+ this.)
+
+- With a `C-u' prefix argument, `paredit-wrap-sexp' now wraps all
+ S-expressions following the point until the end of the buffer or a
+ closing delimiter.
+
+- `paredit-splice-sexp' with a `C-u' prefix argument (also known as
+ `paredit-splice-sexp-killing-backward') will now kill from the point,
+ rather than from the beginning of the next S-expression (or, with
+ `C-u C-u', from the end of the previous S-expression). This means
+ that it is more likely to do what you mean with
+
+ (let ((a b) (c d))
+ |;; I want to preserve this comment after `C-u M-s'.
+ (foo bar baz))
+
+- `paredit-splice-sexp' now splices strings, by removing backslash
+ escapes, or signals an error if doing so would destroy the structure
+ of the buffer.
+
+- I have finally introduced the first bit of code to try to deal
+ sensibly with broken buffers. It will probably go only downhill from
+ here, and continue in an interminable series of kludges to handle
+ every possible way in which the buffer can go *wrong* (it's bad
+ enough how many ways it can be *right*). If you try type a closing
+ delimiter from within a partial S-expression that has an opening
+ delimiter but no closing delimiter, then it will honk at you and
+ insert the closing delimiter -- or if what you typed doesn't match
+ the opening delimiter, it will just honk and refuse to do anything.
+ Also, `DEL' and `C-d' will delete spurious (but not [yet] mismatched)
+ opening and closing delimiters, respectively. (Thanks to John
+ Wiegley for inspiring me to do these dreary deeds.)
+
+*** New Commands
+
+- New command `paredit-yank-pop' cooperates with `paredit-wrap-sexp' by
+ behaving either like `yank' or like `yank-pop' if the previous
+ command was `paredit-wrap-sexp' or `paredit-yank-pop', and with the
+ added bonus of reindenting the newly wrapped form. It is in need of
+ a key to be bound to it; since it is different from both `yank' and
+ `yank-pop', I decided not to override `C-y' or `M-y', and I
+ considered `C-c C-y', but I imagine that many major modes want to
+ take that.
+
+- New command `paredit-focus-on-defun' moves display to the top of the
+ definition at the point.
+
+- New command `paredit-reindent-defun', which `M-q' is bound to in
+ Paredit Mode, indents the definition the point is on, or, if the
+ point is in a string or comment, fills the paragraph instead.
+ (Thanks to John Wiegley for the idea.)
+
+- New variations on slurpage, barfage, and joinage. I'm still looking
+ for keys to bind to these commands. Find them with the strings
+ `add-to-{previous,next}-list' and `join-with-{previous,next}-list' in
+ their names. (Again, thanks to John Wiegley for the idea.)
+
+- New command `paredit-convolute-sexp' performs the combined function
+ of `paredit-splice-sexp-killing-backward', `paredit-wrap-sexp', and
+ `yank'. Example:
+
+ (let ((foo bar))
+ (let ((baz quux))
+ |(zot mumble)
+ (frotz))
+ (gargle mumph))
+ ->
+ (let ((baz quux))
+ (let ((foo bar))
+ (zot mumble)
+ (frotz)
+ (gargle mumph)))
+
+ This would otherwise have been done with the key sequence `C-u M-s
+ C-M-u M-( C-y C-M-u C-M-q'. `C-u M-s' could be `M-up', and `C-y
+ C-M-u C-M-q' could be `C-c C-y' if that key is chosen for
+ `paredit-yank-pop', making the sequence `M-up C-M-u M-( C-c C-y'. If
+ there is a good key for `paredit-convolute-sexp', it could be a nice
+ improvement over even that terser sequence. (Once again, this was
+ inspired by John Wiegley's idea (and name).)
+
+ [Observe, though, that the form (FROTZ) stuck with (ZOT MUMBLE) the
+ whole time, and was not carried along as the `end' of the (LET ((BAZ
+ QUUX)) ...) form. Hence this is *not* the idea mentioned below by
+ the name `paredit-interchange-sexps', but a simpler approximation of
+ the idea.]
+
+- `define-paredit-pair' now defines commands `paredit-wrap-...' for
+ wrapping S-expressions with different delimiters, like
+ `paredit-wrap-sexp'. The function `paredit-wrap-sexp' now accepts
+ optional arguments for the delimiters to insert; the new commands are
+ defined in terms of the modified `paredit-wrap-sexp'. `M-[' is now
+ bound to `paredit-wrap-square'.
+
+** Version 20
+
+*** Preliminary Support for XEmacs
+
+This version introduces preliminary support for XEmacs. The changes
+needed were:
+
+- `check-parens' is called by the `paredit-mode' initialization only if
+ it is fbound.
+
+- The forward and backward deletion keys are specified differently in
+ GNU Emacs and XEmacs.
+
+- `paredit-forward' and `paredit-backward' use a "_" interactive
+ specification in XEmacs in order to preserve the mark.
+
+- `paredit-region-active-p' is just `region-active-p' in XEmacs.
+
+- Some hair was needed to handle S-expression parse error conditions
+ properly, and versions of XEmacs earlier than 21.5 may have obscure
+ problems as a result.
+
+*** Style and Bugs
+
+- rxvt-specific terminal escape sequences are no longer bound to the
+ commands that the keys those sequences denote are. Set your
+ environment variables correctly and keep your rxvt.el updated.
+ (Aren't terminals fun?)
+
+- HTML output is now properly quoted. Some vestigial indirections in
+ the tables have been removed.
+
+- Yet *ANOTHER* `paredit-kill' bug is fixed. I do not know what the
+ bug is or why it happened, but it seems to be gone now.
+
+- Improved robustness of `paredit-join-sexps' and `paredit-splice-sexp'
+ with respect to their use in the middle of atoms, and made splicing
+ within a string illegal.
+
+- Fixed several bugs in the paredit word killing commands. In the
+ process, however, I encountered what seems to be a bug in Emacs's
+ `parse-partial-sexp', which may mean bugs in other things...
+
+- Eliminated dependency on `cl' feature.
+
+- Fixed a bug in `paredit-backward-kill-word' that would cause deletion
+ of the first double-quote in `(foo "|")'.
+
+- Fixed a bug with `paredit-backward-kill-word' at the end of buffer.
+
+- Fixed a bug with `paredit-backward-kill-word' before any words in a
+ buffer.
+
+*** Altered Behaviour and New Functionality
+
+- `paredit-mode' now accepts a prefix argument to mean that it should
+ not check the parentheses in the buffer first. Supply the prefix
+ argument with care; though it is useful for editing small parts of a
+ buffer in Lisp when the rest is random, it might also screw the whole
+ buffer up in unpredictable ways, because most of paredit doesn't
+ even try to handle invalid structure.
+
+- Parenthesis blinking is improved somewhat to better respect user
+ customization of `blink-matching-paren'.
+
+- The paredit minor mode no longer exchanges C-j & RET; following the
+ GNU Emacs conventions, it now leaves RET alone and binds C-j to
+ `paredit-newline'. Those of you, such as me, who relied on the old
+ exchange will have to update your .emacs files.
+
+- C-left and C-right are now bound to paredit-forward-barf-sexp and
+ paredit-forward-slurp-sexp, instead of M-left and M-right, whose word
+ motion bindings are no longer shadowed.
+
+- The behaviour of (, ", M-(, and M-" with respect to active regions
+ and prefix arguments has been regularized:
+
+ . With neither an active region, i.e. an active mark and
+ transient-mark-mode, ( and " will insert a pair of delimiters at
+ the point, and M-( and M-" will wrap the following expression with
+ delimiters.
+
+ . With an active region and no prefix argument, if and only if the
+ region contains only balanced expressions, all four commands will
+ wrap the region with the respective delimiters.
+
+ . With a prefix argument N, all four commands will wrap the next N
+ expressions with the commands' respective delimiters.
+
+ " and M-", of course, escape any characters that need escaping first
+ if they are used to wrap regions.
+
+- Implemented slurpage into strings.
+
+- Made `M-- M-s' equivalent to `M-- M-1 M-s'.
+
+- Changed `paredit-insert-pair' so that it will not skip whitespace
+ before inserting the pair.
+
+- `paredit-splice-sexp' with a prefix argument and friends (i.e. `M-s',
+ `M-<up>', and `M-<down>') now always create a new entry on the kill
+ ring.
+
+** Version 19
+
+This version introduces support for delimiters other than round
+brackets. Previously, if the major mode's syntax table considered
+square brackets (and curly braces, &c.) to be delimiters, since no
+paredit commands would insert them balanced, deleting them would be
+tricky: paredit's DEL & C-d bindings would refuse to delete them
+because they would be imbalanced unless you manually type the closing
+delimiter.
+
+Now commands are defined for the opening and closing of parentheses
+(round), brackets (square), braces (curly), and brockets (angled),
+named `paredit-open-<type>', `paredit-close-<type>-and-newline', and
+`paredit-close-<type>'; paredit-mode binds the opening and closing
+square bracket keys to be `paredit-open-bracket' and `paredit-close-
+bracket', respectively. The rest you can bind yourself; this minimal
+pair of bindings will, I think, account for accidental insertion,
+elisp vectors, and (bletch) the equation of square and round brackets
+as parentheses in some non-standard Scheme extensions.
+
+Also now supported in this version is insertion of delimiter pairs
+around active regions in transient-mark-mode. If you mark a region
+with transient-mark-mode enabled, you can use any of the delimiter
+pair insertion keys (like opening round bracket, double-quote, &c.)
+to insert a pair of delimiters around the region. There are now two
+ways to parenthesize lists of expressions with visual feedback: using
+M-( (paredit-wrap-sexp) followed by C-) (paredit-forward-slurp-sexp)
+until satisfied, and now C-M-SPC (mark-sexp) until you have marked
+the desired expressions and then any of the delimiter pair insertion
+keys to insert the delimiters.
+
+** Version 18
+
+*** Style and Bugs
+
+- Corrected terminal arrow key sequences *again*. M-left and M-right
+ were backwards.
+
+- Put the save-excursion back in paredit-recentre-on-sexp. I don't
+ remember why it was taken out in version 13.
+
+- Fixed HTML output to stop producing spurious <tr> tags.
+
+- Corrected a number of paredit command examples.
+
+- Aesthetic changes to the code:
+
+ . Regularized some aspects of code style.
+
+ . Repaginated so that all pages are at most 80 lines long, and most
+ are at least 40 lines.
+
+ . Formatted headings for an outline regexp to match so that
+ outline-minor-mode works nicely on paredit.el.
+
+*** Altered Behaviour and New Functionality
+
+- Implemented paredit-forward-kill-word & paredit-backward-kill-word,
+ or M-d & M-DEL, which are like kill-word & backward-kill-word, but
+ they will not kill parenthesis, string, or comment delimiters; they
+ will preserve the structure of S-expressions, while the built-in
+ Emacs word killing commands would destroy it.
+
+- M-" is now bound to paredit-meta-doublequote, which has the old
+ behaviour of paredit-close-string-and-newline if within a string,
+ but which wraps the following S-expression (or N S-expressions) in
+ double-quotes if without a string; paredit-doublequote does the
+ same, but the default argument is 0, not 1.
+
+- M-S (paredit-split-sexp) no longer deletes horizontal space in
+ strings before splitting them into two. The rationale, as
+ suggested by Zbigniew Szadkowski, is that whitespace is usually
+ significant in strings, while not in lists, and you can type M-\
+ M-S if you really do want the horizontal space deleted anyway.
+
+- Reintroduced paredit-join-sexps as M-J. The implementation is now
+ more robust: it ensures that the two S-expressions to join match --
+ i.e. they are both lists, or they are both strings, or they are
+ both symbols --, and it correctly handles the atom case now as
+ well.
+
+- Extended paredit command examples to allow multiple steps in
+ succession of a single example.
+
+** Version 17
+
+*** Style and Bugs
+
+- Rewrote all documentation strings to be in the imperative mood, per
+ GNU Emacs's guidelines. Some documentation strings may have been
+ corrected, too, but I can't be bothered to grovel through the diff
+ to pick out all changes to all documentation strings.
+
+- Forced parenthesis flashing even with show-paren-mode enabled.
+
+- Fixed bug in forward deletion within strings so that the empty
+ string can be deleted.
+
+- Simplified determination of whether the point is in a comment.
+
+*** Altered Behaviour and New Functionality
+
+- Eliminated paredit-terminal-mode. All key bindings it had are now
+ incorporated into paredit-mode's keymap. I may have changed some
+ keybindings, too, but I don't remember what they were if I did. I
+ think I fixed some of the keybindings in the terminal.
+
+- Added examples to documentation of all paredit commands, as well as
+ code to generate an HTML file containing the examples in nicely
+ formatted tables (sorry, web purists).
+
+- Made paredit-mode refuse to be enabled in a buffer with imbalanced
+ parentheses.
+
+- Updated documentary heading. It now explains how to customize keys
+ while still autoloading and how to make paredit's RET work nicely
+ with SLIME's REPL.
+
+- Improved semicolon insertion: (a) to accept a numeric prefix
+ argument dictating a number of semicolons to insert, instead of a
+ prefix argument that forces the insertion of a semicolon without a
+ trailing newline, which can be effected with C-q anyway; and (b) to
+ allow insertion of semicolons before existing comments without
+ inserting a superfluous leading newline. To comment out code, you
+ must still use M-; or M-x comment-region.
+
+** Version 16
+
+- Introduced M-S (paredit-split-sexp) to split lists or strings from
+ the middle.
+
+- Fixed the definition of M-; to use (kbd "M-;") to correctly
+ identify the key sequence meta-semicolon, not "M-;" for M hyphen
+ semicolon.
+
+** Version 15
+
+- Rewrote comment insertion code.
+
+- Implemented M-; (paredit-comment-dwim), which is like comment-dwim
+ but inserts comments more appropriately with respect to paredit.
+
+** Version 14
+
+Version 14 introduced fancy comment handling:
+
+- paredit-close-list-and-newline now refuses to move a margin comment
+ to another line; instead it will help to preserve the column of the
+ comment.
+
+- The semicolon key is now bound to a command that will automatically
+ move any code following the point onto the next line, so that you
+ do not inadvertently comment out half expressions. You can still
+ use M-; (comment-dwim) to comment out specific regions that are not
+ meant to be code (e.g., old comments that were accidentally
+ uncommented) or whole S-expressions, usually in conjunction with
+ C-M-SPC (mark-sexp).
+
+** Version 13
+
+- Removed M-\ (paredit-join-sexps), whose key binding conflicts with
+ delete-horizontal-space and whose implementation was inadequate and
+ led to general uselessness of the command.
+
+- Improved RET (paredit-newline) so that it does not do anything
+ fancy within strings and first tests whether the point is in a
+ comment before checking whether it is in a character.
+
+- Changed paredit-skip-whitespace from skip-syntax-{forward,backward}
+ to skip-chars-{forward,backward}, because in the Lisp syntax table
+ newlines are not considered whitespace -- rather, they are comment
+ ends --, but we want to skip them nevertheless.
+
+- Corrected paredit-kill in a way I don't understand.
+
+- Minor code improvements, including:
+
+ . Changed call to previous-line to use forward-line instead.
+ . Removed unnecessary save-excursion in paredit-recentre-on-sexp.
+ . IF indentation changes.
+
+** Version 12
+
+- Implemented M-r (paredit-raise-sexp), which raises a single
+ S-expression up the tree, deleting all of its siblings and its
+ enclosing list.
+
+- Rearranged some arrow key bindings again.
+
+- Made paredit-forward-delete and paredit-backward-delete check for
+ buffer bounds and also matching of the delimiters of empty lists.
+
+- Added a buffer bounds check to paredit-kill.
+
+- Made backward barfing signal an error, not just a message.
+
+** Version 11
+
+- Changed the key for paredit-splice-sexp from M-/, which is by
+ default the popular dabbrev-expand, to M-s, which I was surprised
+ to find no existing binding for.
+
+- Added a prefix argument to paredit-splice-sexp; see the command's
+ documentation for details. M-up is now equivalent to C-u M-s;
+ M-down, to C-u C-u M-s.
+
+- Fixed a lot of the terminal key sequences for the arrow key
+ bindings in paredit-terminal-mode.
+
+- Modified the behaviour of paredit-forward and paredit-backward to
+ change only one level of nesting depth, not to repeat until there
+ is a sibling S-expression to move across.
+
+- Changed a lot of code to use character syntax, instead of exact
+ character comparisons, for better generality.
+
+- Rewrote much of paredit-kill, again.
+
+** Version 10
+
+- Introduced paredit-forward and paredit-backward, which are like
+ forward-sexp and backward-sexp but which will also go up a nesting
+ level if at the end of a list.
+
+- Introduced C-c C-M-l (paredit-recentre-on-sexp), whose name is
+ self-explanatory.
+
+- Added support for numeric prefix arguments to paredit-open-list.
+
+- Fixed paredit-kill so that it would correctly kill whitespace
+ between parentheses, as in ( ).
+
+- Changed suggestion of what to put in your .emacs from require to
+ autoload.
+
+** Version 9
+
+- Introduced enable-paredit-mode and disable-paredit-mode to better
+ choose which one to enable.
+
+- Forced blinkage of matching parentheses in paredit-close-list and
+ paredit-close-list-and-newline, even if show-paren-mode is enabled.
+
+** Version 8
+
+- Added paredit-terminal-mode, which is like paredit-mode but which
+ provides key bindings that work in terminals, while paredit-mode
+ contains many (such as controlled brackets) that do not work in
+ terminals. Thanks to Jorgen Schaefer for suggesting many of the
+ terminal key bindings.
+
+- Exchanged RET and C-j: RET now inserts the fancy newline with auto-
+ indentation, while C-j inserts a literal line feed. While this
+ defies convention, and some people prefer not to do this, I have
+ found that it is more convenient for RET to have the behaviour of
+ the common case, where auto-indentation is desired, and for C-j to
+ insert the uncommon exact, literal line feed. You can always
+ customize the key bindings yourself, of course.
+
+- Rearranged arrow key bindings.
+
+- Implemented paredit-close-list-and-newline, which is like
+ paredit-close-list followed by RET (paredit-newline); and M-"
+ (paredit-close-string-and-newline), which is similar but for
+ strings.
+ The closing round bracket character now inserts the newline, while
+ the meta modifier inhibits this.
+
+- Overhauled paredit-kill.
+
+- Extended slurpage and barfage to permit their operation across
+ arbitrary depth changes.
+
+- Fixed bizarre bug with backward barfage. I apologize for the
+ alliteration.
+
+- Fixed a number of other small bugs.
+
+- Prefixed `paredit-' to the remaining functions defined in the file
+ that did not already have the prefix.
+
+- Defined backward-down-list, which for some reason is not provided
+ by lisp.el, although up-list, down-list, & backward-up-list all
+ are. (This is the sole exception to the above item. It deserves
+ no prefix because it ought to be defined in lisp.el with this name
+ anyway.)
+
+** Version 7
+
+- Changed paredit-open-list and paredit-close-list so that they will
+ refuse to insert parentheses inside character literals.
+
+- Substituted new code for GNU Emacs's move-past-close-and-reindent.
+ I do not remember why now, and I no longer understand either code
+ well enough to discern differences, other than that Emacs's
+ m-p-c-a-r is probably faster because it incrementally parses each
+ step of the way. All I can see is that paredit.el's code now
+ inserts indentation before the closing parenthesis while Emacs's
+ m-p-c-a-r does not.
+
+- Fixed bugs in deletion within character literals and strings.
+
+** Versions 2--6
+
+(I lost versions 2, 3, 4, & 5.)
+
+- Flushed M-" (paredit-insert-doublequote), which was rather useless
+ and which " (paredit-doublequote) now subsumes the functionality of.
+
+- Added instrumented forward deletion as well as backward deletion,
+ which now behave well inside strings.
+
+- Flushed unnecessary individual round bracket insertion keys; use
+ C-q instead.
+
+- Added C-left & C-right: backward-sexp & forward-sexp, respectively.
+
+- Fixed the test of whether the point is in a character literal.
+
+- Modified " (paredit-doublequote) to insert escaped double-quote if
+ in the middle of the string, rather than to jump past the string's
+ closing delimiter.
+
+- Introduced bogus backslash escaping mechanism.
+
+- Introduced new command for breaking the line and indenting, and
+ bound C-j, rather than RET, to it, according to convention.
+
+- Improved C-k (paredit-kill), particularly in strings where it will
+ no longer kill the closing delimiter of the string.
+
+- Changed the splicage, joinage, slurpage, and barfage commands so
+ that they will reindent only the modified list, not the whole
+ definition.