summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1997-09-07 01:12:07 +0000
committerRichard M. Stallman <rms@gnu.org>1997-09-07 01:12:07 +0000
commitaafa288dbac119bc72a6a15ba79af1e839419e74 (patch)
tree9065632afc82c81d7531a641c4e6087d7c114f9b
parent5dc398182cc007afe135fcc53cd6cf9e292bd81b (diff)
downloademacs-aafa288dbac119bc72a6a15ba79af1e839419e74.tar.gz
(move-past-close-and-reindent):
Don't move closeparen back onto the end of a comment.
-rw-r--r--lisp/emacs-lisp/lisp.el20
1 files changed, 19 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el
index 995e327ee9b..01e7cda43f7 100644
--- a/lisp/emacs-lisp/lisp.el
+++ b/lisp/emacs-lisp/lisp.el
@@ -256,7 +256,25 @@ before and after, depending on the surrounding characters."
(while (save-excursion ; this is my contribution
(let ((before-paren (point)))
(back-to-indentation)
- (= (point) before-paren)))
+ (and (= (point) before-paren)
+ (progn
+ ;; Move to end of previous line.
+ (beginning-of-line)
+ (forward-char -1)
+ ;; Verify it doesn't end within a string or comment.
+ (let ((end (point))
+ state)
+ (beginning-of-line)
+ ;; Get state at start of line.
+ (setq state (list 0 nil nil
+ (null (calculate-lisp-indent))
+ nil nil nil nil
+ nil))
+ ;; Parse state across the line to get state at end.
+ (setq state (parse-partial-sexp (point) end nil nil
+ state))
+ ;; Check not in string or comment.
+ (and (not (elt state 3)) (not (elt state 4))))))))
(delete-indentation))
(forward-char 1)
(newline-and-indent))