diff options
-rw-r--r-- | NEWS | 750 |
1 files changed, 750 insertions, 0 deletions
@@ -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. |