From aafa288dbac119bc72a6a15ba79af1e839419e74 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sun, 7 Sep 1997 01:12:07 +0000 Subject: (move-past-close-and-reindent): Don't move closeparen back onto the end of a comment. --- lisp/emacs-lisp/lisp.el | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) 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)) -- cgit v1.2.1