diff options
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/ChangeLog | 5 | ||||
| -rw-r--r-- | lisp/progmodes/ruby-mode.el | 12 |
2 files changed, 15 insertions, 2 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 9ff4ab8f04c..4c2c4cd5e07 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2013-11-04 Dmitry Gutov <dgutov@yandex.ru> + + * progmodes/ruby-mode.el (ruby-smie--forward-token) + (ruby-smie--backward-token): Tokenize heredocs as semicolons. + 2013-11-04 Michal Nazarewicz <mina86@mina86.com> * textmodes/fill.el (fill-single-char-nobreak-p): New function diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index 75c59ebe1fd..1c9663cc22c 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el @@ -393,7 +393,12 @@ explicitly declared in magic comment." (let ((pos (point))) (skip-chars-forward " \t") (cond - ((looking-at "\\s\"") "") ;A heredoc or a string. + ((looking-at "\\s\"") ;A heredoc or a string. + (if (not (looking-at "\n")) + "" + ;; Tokenize the whole heredoc as semicolon. + (goto-char (scan-sexps (point) 1)) + ";")) ((and (looking-at "[\n#]") (ruby-smie--implicit-semi-p)) ;Only add implicit ; when needed. (if (eolp) (forward-char 1) (forward-comment 1)) @@ -435,7 +440,10 @@ explicitly declared in magic comment." (cond ((and (> pos (line-end-position)) (ruby-smie--implicit-semi-p)) (skip-chars-forward " \t") ";") - ((and (bolp) (not (bobp))) "") ;Presumably a heredoc. + ((and (bolp) (not (bobp))) ;Presumably a heredoc. + ;; Tokenize the whole heredoc as semicolon. + (goto-char (scan-sexps (point) -1)) + ";") ((and (> pos (point)) (not (bolp)) (ruby-smie--args-separator-p pos)) ;; We have "ID SPC ID", which is a method call, but it binds less tightly |
