From: Stefan Monnier Date: Sun, 20 Nov 2011 06:29:57 +0000 (-0500) Subject: * lisp/electric.el (electric-indent-mode): Fix last change (too optimistic). X-Git-Tag: emacs-pretest-24.0.92~117 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=24f3d7b94b364021df18c43c3e7fe4211974ccf9;p=emacs.git * lisp/electric.el (electric-indent-mode): Fix last change (too optimistic). --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index e79af3ae2e8..e6f1bc55bf2 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,7 @@ 2011-11-20 Stefan Monnier + * electric.el (electric-indent-mode): Fix last change (too optimistic). + * emacs-lisp/bytecomp.el: Silence obsolete warnings more reliably. (byte-compile-global-not-obsolete-vars): New var. (byte-compile-check-variable, byte-compile-make-obsolete-variable): diff --git a/lisp/electric.el b/lisp/electric.el index 69acb773648..657b577bb1e 100644 --- a/lisp/electric.el +++ b/lisp/electric.el @@ -260,15 +260,23 @@ reindentation is triggered whenever you insert a character listed in `electric-indent-chars'." :global t :group 'electricity - (if electric-indent-mode - (add-hook 'post-self-insert-hook - #'electric-indent-post-self-insert-function - ;; post-self-insert-hooks interact in non-trivial ways. - ;; It turns out that electric-indent-mode generally works - ;; better last. - 'append) - (remove-hook 'post-self-insert-hook - #'electric-indent-post-self-insert-function))) + (if (not electric-indent-mode) + (remove-hook 'post-self-insert-hook + #'electric-indent-post-self-insert-function) + ;; post-self-insert-hooks interact in non-trivial ways. + ;; It turns out that electric-indent-mode generally works better if run + ;; late, but still before blink-paren. + (add-hook 'post-self-insert-hook + #'electric-indent-post-self-insert-function + 'append) + ;; FIXME: Ugly! + (let ((bp (memq #'blink-paren-post-self-insert-function + (default-value 'post-self-insert-hook)))) + (when (memq #'electric-indent-post-self-insert-function bp) + (setcar bp #'electric-indent-post-self-insert-function) + (setcdr bp (cons #'blink-paren-post-self-insert-function + (delq #'electric-indent-post-self-insert-function + (cdr bp)))))))) ;; Electric pairing.