From 764c486b8459cb4426fb2be77b4cd93879853911 Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 30 Mar 2011 13:54:26 +0000 Subject: * misc/ruby-mode.el (ruby-move-to-block): move to opening of block. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31217 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- misc/ruby-mode.el | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'misc/ruby-mode.el') diff --git a/misc/ruby-mode.el b/misc/ruby-mode.el index a65278eff7..3799541901 100644 --- a/misc/ruby-mode.el +++ b/misc/ruby-mode.el @@ -910,7 +910,7 @@ An end of a defun is found by moving forward from the beginning of one." (forward-line 1)) (defun ruby-move-to-block (n) - (let (start pos done down) + (let (start pos done down (orig (point))) (setq start (ruby-calculate-indent)) (setq down (looking-at (if (< n 0) ruby-block-end-re (concat "\\<\\(" ruby-block-beg-re "\\)\\>")))) @@ -936,8 +936,18 @@ An end of a defun is found by moving forward from the beginning of one." (save-excursion (back-to-indentation) (if (looking-at (concat "\\<\\(" ruby-block-mid-re "\\)\\>")) - (setq done nil)))))) - (back-to-indentation)) + (setq done nil))))) + (back-to-indentation) + (when (< n 0) + (let ((eol (point-at-eol)) state next) + (if (< orig eol) (setq eol orig)) + (setq orig (point)) + (while (and (setq next (apply 'ruby-parse-partial eol state)) + (< (point) eol)) + (setq state next)) + (when (cdaadr state) + (goto-char (cdaadr state))) + (backward-word))))) (defun-region-command ruby-beginning-of-block (&optional arg) "Move backward to next beginning-of-block" -- cgit v1.2.3