]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/progmodes/ruby-mode.el (ruby-accurate-end-of-block): When
authorDmitry Gutov <dgutov@yandex.ru>
Mon, 9 Dec 2013 03:27:21 +0000 (05:27 +0200)
committerDmitry Gutov <dgutov@yandex.ru>
Mon, 9 Dec 2013 03:27:21 +0000 (05:27 +0200)
`ruby-use-smie' is t, use `smie-forward-sexp' instead of
`ruby-parse-partial'.

Fixes: debbugs:16078
lisp/ChangeLog
lisp/progmodes/ruby-mode.el

index d09e3a4174da7e9685b46fc5e10953111afa2382..2e36fdbe4cd28fcf1730d80ba46b249cf7f60267 100644 (file)
@@ -1,3 +1,9 @@
+2013-12-09  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * progmodes/ruby-mode.el (ruby-accurate-end-of-block): When
+       `ruby-use-smie' is t, use `smie-forward-sexp' instead of
+       `ruby-parse-partial' (Bug#16078).
+
 2013-12-09  Leo Liu  <sdl.web@gmail.com>
 
        * subr.el (read-passwd): Disable show-paren-mode.  (Bug#16091)
index 3d30cb015d6ccf2ea96c176bceb955178a281e42..0f5a2a5b2a0bcccf1e920e3c07ad7226099804a1 100644 (file)
@@ -614,11 +614,16 @@ It is used when `ruby-encoding-magic-comment-style' is set to `custom'."
   (nreverse (ruby-imenu-create-index-in-block nil (point-min) nil)))
 
 (defun ruby-accurate-end-of-block (&optional end)
-  "TODO: document."
+  "Jump to the end of the current block or END, whichever is closer."
   (let (state
         (end (or end (point-max))))
-    (while (and (setq state (apply 'ruby-parse-partial end state))
-                (>= (nth 2 state) 0) (< (point) end)))))
+    (if ruby-use-smie
+        (save-restriction
+          (back-to-indentation)
+          (narrow-to-region (point) end)
+          (smie-forward-sexp))
+      (while (and (setq state (apply 'ruby-parse-partial end state))
+                    (>= (nth 2 state) 0) (< (point) end))))))
 
 (defun ruby-mode-variables ()
   "Set up initial buffer-local variables for Ruby mode."