diff options
| -rw-r--r-- | paredit.el | 101 | 
1 files changed, 49 insertions, 52 deletions
| @@ -92,66 +92,63 @@  ;;;     and I can't fathom any reason why you might be using them.  So  ;;;     the answer to item (2) should be either `release' or `beta'. -;;; The paredit minor mode, Paredit Mode, binds a number of simple -;;; keys, notably `(', `)', `"', and `\', to commands that more -;;; carefully insert S-expression structures in the buffer.  The -;;; parenthesis delimiter keys (round or square) are defined to insert -;;; parenthesis pairs and move past the closing delimiter, -;;; respectively; the double-quote key is multiplexed to do both, and -;;; also to insert an escape if within a string; and backslashes prompt -;;; the user for the next character to input, because a lone backslash -;;; can break structure inadvertently.  These all have their ordinary -;;; behaviour when inside comments, and, outside comments, if truly -;;; necessary, you can insert them literally with `C-q'. +;;; The paredit minor mode, Paredit Mode, binds common character keys, +;;; such as `(', `)', `"', and `\', to commands that carefully insert +;;; S-expression structures in the buffer:  ;;; -;;; The key bindings are designed so that when typing new code in -;;; Paredit Mode, you can generally use exactly the same keystrokes as -;;; you would have used without Paredit Mode.  Earlier versions of -;;; paredit.el did not conform to this, because Paredit Mode bound `)' -;;; to a command that would insert a newline.  Now `)' is bound to a -;;; command that does not insert a newline, and `M-)' is bound to the -;;; command that inserts a newline.  To revert to the former behaviour, -;;; add the following forms to an `eval-after-load' form for paredit.el -;;; in your .emacs file: +;;;   ( inserts `()', leaving the point in the middle; +;;;   ) moves the point over the next closing delimiter; +;;;   " inserts `""' if outside a string, or inserts an escaped +;;;      double-quote if in the middle of a string, or moves over the +;;;      closing double-quote if at the end of a string; and +;;;   \ prompts for the character to escape, to avoid inserting lone +;;;      backslashes that may break structure.  ;;; -;;;   (define-key paredit-mode-map (kbd ")") -;;;     'paredit-close-round-and-newline) -;;;   (define-key paredit-mode-map (kbd "M-)") -;;;     'paredit-close-round) +;;; In comments, these keys insert themselves.  If necessary, you can +;;; insert these characters literally outside comments by pressing +;;; `C-q' before these keys, in case a mistake has broken the +;;; structure.  ;;; -;;; Paredit Mode also binds the usual keys for deleting and killing, so -;;; that they will not destroy any S-expression structure by killing or -;;; deleting only one side of a parenthesis or quote pair.  If the -;;; point is on a closing delimiter, `DEL' will move left over it; if -;;; it is on an opening delimiter, `C-d' will move right over it.  Only -;;; if the point is between a pair of delimiters will `C-d' or `DEL' -;;; delete them, and in that case it will delete both simultaneously. -;;; `M-d' and `M-DEL' kill words, but skip over any S-expression -;;; structure.  `C-k' kills from the start of the line, either to the -;;; line's end, if it contains only balanced expressions; to the first -;;; closing delimiter, if the point is within a form that ends on the -;;; line; or up to the end of the last expression that starts on the -;;; line after the point. +;;; These key bindings are designed so that when typing new code in +;;; Paredit Mode, you can generally type exactly the same sequence of +;;; keys you would have typed without Paredit Mode.[*]  ;;; -;;; The behaviour of the commands for deleting and killing can be -;;; overridden by passing a `C-u' prefix argument: `C-u DEL' will -;;; delete a character backward, `C-u C-d' will delete a character -;;; forward, and `C-u C-k' will kill text from the point to the end of -;;; the line, irrespective of the S-expression structure in the buffer. -;;; This can be used to fix mistakes in a buffer, but should generally -;;; be avoided. +;;; Paredit Mode also binds common editing keys, such as `DEL', `C-d', +;;; and `C-k', to commands that respect S-expression structures in the +;;; buffer:  ;;; -;;; Paredit performs automatic reindentation as locally as possible, to -;;; avoid interfering with custom indentation used elsewhere in some -;;; S-expression.  Only the advanced S-expression manipulation commands -;;; automatically reindent, and only the forms that were immediately -;;; operated upon (and their subforms). +;;;   DEL deletes the previous character, unless it is a delimiter: DEL +;;;        will move the point backward over a closing delimiter, and +;;;        will delete a delimiter pair together if between an open and +;;;        closing delimiter; +;;; +;;;   C-d deletes the next character in much the same manner; and +;;; +;;;   C-k kills all S-expressions that begin anywhere between the point +;;;        and the end of the line or the closing delimiter of the +;;;        enclosing list, whichever is first. +;;; +;;; If necessary, you can delete a character, kill a line, &c., +;;; irrespective of S-expression structure, by pressing `C-u' before +;;; these keys, in case a mistake has broken the structure. +;;; +;;; Finally, Paredit Mode binds some keys to complex S-expression +;;; editing operations.  For example, `C-<right>' makes the enclosing +;;; list slurp up an S-expression to its right (here `|' denotes the +;;; point): +;;; +;;;   (foo (bar | baz) quux)  C-<right>  (foo (bar | baz quux)) +;;; +;;; Some paredit commands automatically reindent code.  When they do, +;;; they try to indent as locally as possible, to avoid interfering +;;; with any indentation you might have manually written.  Only the +;;; advanced S-expression manipulation commands automatically reindent, +;;; and only the forms that they immediately operated upon (and their +;;; subforms).  ;;;  ;;; This code is written for clarity, not efficiency.  It frequently  ;;; walks over S-expressions redundantly.  If you have problems with -;;; the time it takes to execute some of the commands, let me know, but -;;; first be sure that what you're doing is reasonable: it is -;;; preferable to avoid immense S-expressions in code anyway. +;;; the time it takes to execute some of the commands, let me know.  ;;; This assumes Unix-style LF line endings. | 
