[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r111776: * lisp/progmodes/ruby-mode.e
From: |
Dmitry Gutov |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r111776: * lisp/progmodes/ruby-mode.el (ruby-parse-partial): Don't increase |
Date: |
Thu, 14 Feb 2013 07:33:55 +0400 |
User-agent: |
Bazaar (2.5.0) |
------------------------------------------------------------
revno: 111776
committer: Dmitry Gutov <address@hidden>
branch nick: trunk
timestamp: Thu 2013-02-14 07:33:55 +0400
message:
* lisp/progmodes/ruby-mode.el (ruby-parse-partial): Don't increase
depth for unfinished percent literal. Not using it in the caller.
(ruby-move-to-block): Jump over multiline literals of all types,
ignoring code-looking contents inside them.
* test/automated/ruby-mode-tests.el
(ruby-move-to-block-skips-percent-literal): Add depth-affecting
bits inside the examples.
(ruby-move-to-block-skips-heredoc): New test.
modified:
lisp/ChangeLog
lisp/progmodes/ruby-mode.el
test/ChangeLog
test/automated/ruby-mode-tests.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2013-02-13 16:23:15 +0000
+++ b/lisp/ChangeLog 2013-02-14 03:33:55 +0000
@@ -1,3 +1,10 @@
+2013-02-14 Dmitry Gutov <address@hidden>
+
+ * progmodes/ruby-mode.el (ruby-parse-partial): Don't increase
+ depth for unfinished percent literal. Not using it in the caller.
+ (ruby-move-to-block): Jump over multiline literals of all types,
+ ignoring code-looking contents inside them.
+
2013-02-13 Michael Albinus <address@hidden>
Use ControlMaster where applicable. (Bug#13677)
=== modified file 'lisp/progmodes/ruby-mode.el'
--- a/lisp/progmodes/ruby-mode.el 2013-02-13 08:15:05 +0000
+++ b/lisp/progmodes/ruby-mode.el 2013-02-14 03:33:55 +0000
@@ -519,12 +519,6 @@
(concat "[^\\]\\(\\\\\\\\\\)*" w))
end t)))
(setq in-string (point))
- (when (eq (char-syntax (string-to-char w)) ?\()
- ;; The rest of the literal, when parsed separately, will
- ;; have the depth of -1. So in the rare case when this
- ;; number is used despite the in-string status, the
- ;; depths will balance.
- (setq depth (1+ depth)))
(goto-char end)))
(t
(goto-char pnt))))
@@ -913,10 +907,16 @@
(re-search-forward "^=end\\>"))
((and backward (looking-at "^=end\\>"))
(re-search-backward "^=begin\\>"))
+ ;; Jump over a multiline literal.
+ ((ruby-in-ppss-context-p 'string)
+ (goto-char (nth 8 (syntax-ppss)))
+ (unless backward
+ (forward-sexp)
+ (when (bolp) (forward-char -1)))) ; After a heredoc.
(t
- (incf depth (or (nth 2 (ruby-parse-region (point)
- (line-end-position)))
- 0))
+ (let ((state (ruby-parse-region (point) (line-end-position))))
+ (unless (car state) ; Line ends with unfinished string.
+ (setq depth (+ (nth 2 state) depth))))
(cond
;; Deeper indentation, we found a block.
;; FIXME: We can't recognize empty blocks this way.
=== modified file 'test/ChangeLog'
--- a/test/ChangeLog 2013-02-13 08:15:05 +0000
+++ b/test/ChangeLog 2013-02-14 03:33:55 +0000
@@ -1,3 +1,10 @@
+2013-02-14 Dmitry Gutov <address@hidden>
+
+ * automated/ruby-mode-tests.el
+ (ruby-move-to-block-skips-percent-literal): Add depth-affecting
+ bits inside the examples.
+ (ruby-move-to-block-skips-heredoc): New test.
+
2013-02-13 Dmitry Gutov <address@hidden>
* automated/ruby-mode-tests.el
=== modified file 'test/automated/ruby-mode-tests.el'
--- a/test/automated/ruby-mode-tests.el 2013-02-13 08:15:05 +0000
+++ b/test/automated/ruby-mode-tests.el 2013-02-14 03:33:55 +0000
@@ -449,20 +449,37 @@
(dolist (s (list (ruby-test-string
"foo do
| a = %%w(
+ | def yaa
| )
|end")
(ruby-test-string
"foo do
| a = %%w|
+ | end
| |
|end")))
(ruby-with-temp-buffer s
(goto-line 1)
(ruby-end-of-block)
- (should (= 4 (line-number-at-pos)))
+ (should (= 5 (line-number-at-pos)))
(ruby-beginning-of-block)
(should (= 1 (line-number-at-pos))))))
+(ert-deftest ruby-move-to-block-skips-heredoc ()
+ (ruby-with-temp-buffer
+ (ruby-test-string
+ "if something_wrong?
+ | ActiveSupport::Deprecation.warn(<<-eowarn)
+ | boo hoo
+ | end
+ | eowarn
+ |end")
+ (goto-line 1)
+ (ruby-end-of-block)
+ (should (= 6 (line-number-at-pos)))
+ (ruby-beginning-of-block)
+ (should (= 1 (line-number-at-pos)))))
+
(provide 'ruby-mode-tests)
;;; ruby-mode-tests.el ends here
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r111776: * lisp/progmodes/ruby-mode.el (ruby-parse-partial): Don't increase,
Dmitry Gutov <=