From: Stefan Monnier Date: Mon, 7 Oct 2013 16:56:51 +0000 (-0400) Subject: * lisp/emacs-lisp/smie.el (smie-next-sexp): Refine last fix. X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~387^2~1349 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d2e0e79548df07e8e2f7a7cf2e5d9b353f547efd;p=emacs.git * lisp/emacs-lisp/smie.el (smie-next-sexp): Refine last fix. * lisp/progmodes/ruby-mode.el (ruby-smie-rules): Tweak handling of open braces. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 972eb2fe2d7..64fedd32191 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,10 @@ 2013-10-07 Stefan Monnier + * progmodes/ruby-mode.el (ruby-smie-rules): Tweak handling of + open braces. + + * emacs-lisp/smie.el (smie-next-sexp): Refine last fix. + * textmodes/css-mode.el (css-smie-rules): Fix indentation (bug#15467). (css-mode): Use electric-indent-chars. diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el index e35cb4a8fc2..32dcb2ed744 100644 --- a/lisp/emacs-lisp/smie.el +++ b/lisp/emacs-lisp/smie.el @@ -709,11 +709,13 @@ Possible return values: (condition-case err (progn (funcall next-sexp 1) nil) (scan-error - (let ((pos (nth 2 err))) + (let ((epos (nth 2 err))) + (goto-char pos) (throw 'return - (list t pos + (list t epos (buffer-substring-no-properties - pos (+ pos (if (< (point) pos) -1 1)))))))) + epos + (+ epos (if (< (point) epos) -1 1)))))))) (if (eq pos (point)) ;; We did not move, so let's abort the loop. (throw 'return (list t (point)))))) diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index b8c24e8a690..6497fb6b7d0 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el @@ -414,7 +414,8 @@ Also ignores spaces after parenthesis when 'space." (`(:before . ,(or `"(" `"[" `"{")) ;; Treat purely syntactic block-constructs as being part of their parent, ;; when the opening statement is hanging. - (if (smie-rule-hanging-p) (smie-rule-parent))) + (when (smie-rule-hanging-p) + (smie-backward-sexp 'halfsexp) (smie-indent-virtual))) (`(:after . "=") 2) (`(:before . "do") (when (or (smie-rule-hanging-p)