diff options
| author | Taylor R Campbell <campbell@mumble.net> | 2011-03-20 18:37:04 +0000 | 
|---|---|---|
| committer | Taylor R Campbell <campbell@mumble.net> | 2011-03-20 18:37:04 +0000 | 
| commit | b7f234ab0e201b5e8366ad27ecd0fd70f5101b55 (patch) | |
| tree | a36d4d46b8cbeb8c4fa01b483bbd7b974bb3d3ea | |
| parent | 00110906360df491b3dc925ba11f156a98ee59d7 (diff) | |
Preserve column in `paredit-reindent-defun'.
Ignore-this: 9c3342808317128eefc0b83bf63cfb15
Also use `lisp-fill-paragraph' rather than `fill-paragraph'.
Thanks to Eitan Postavsky for the suggestion.
darcs-hash:20110320183704-00fcc-d64d8a2d2e06db8a206a0fadb3b9dbe0f8c10abf
| -rw-r--r-- | paredit.el | 26 | 
1 files changed, 21 insertions, 5 deletions
| @@ -984,11 +984,22 @@ If the point is in a string or a comment, fill the paragraph instead,    (interactive "P")    (if (or (paredit-in-string-p)            (paredit-in-comment-p)) -      (fill-paragraph argument) -    (save-excursion -      (end-of-defun) -      (beginning-of-defun) -      (indent-sexp)))) +      (lisp-fill-paragraph argument) +    (let ((column (current-column)) +          (indentation (paredit-current-indentation))) +      (save-excursion (end-of-defun) (beginning-of-defun) (indent-sexp)) +      ;; Preserve the point's position either in the indentation or in +      ;; the code: if on code, move with the code; if in indentation, +      ;; leave it in the indentation, either where it was (if that's +      ;; still indentation) or at the end of the indentation (if the +      ;; code moved far enough left). +      (let ((indentation* (paredit-current-indentation))) +        (goto-char +         (+ (point-at-bol) +            (cond ((not (< column indentation)) +                   (+ column (- indentation* indentation))) +                  ((<= indentation* column) indentation*) +                  (t column))))))))  ;;;; Comment Insertion @@ -2479,6 +2490,11 @@ If no parse state is supplied, compute one from the beginning of the                (forward-sexp))))          t)      nil)) + +(defun paredit-current-indentation () +  (save-excursion +    (back-to-indentation) +    (current-column)))  ;;;; Initialization | 
