diff options
author | Dmitry Gutov <dgutov@yandex.ru> | 2016-03-16 04:32:59 +0200 |
---|---|---|
committer | Dmitry Gutov <dgutov@yandex.ru> | 2016-03-16 04:32:59 +0200 |
commit | 2036be4666becf02f4524d63595e3da55b14ff0d (patch) | |
tree | 327d28def64a3cd558d36efc55e14cb194a4be30 | |
parent | 1d686c2afb7c6c869c339f7c70daae969b429429 (diff) | |
download | emacs-2036be4666becf02f4524d63595e3da55b14ff0d.tar.gz |
Fix Ruby's operator precedence
* lisp/progmodes/ruby-mode.el (ruby-smie-grammar):
Rearrange the smie-precs->prec2 form.
-rw-r--r-- | lisp/progmodes/ruby-mode.el | 11 | ||||
-rw-r--r-- | test/indent/ruby.rb | 23 |
2 files changed, 28 insertions, 6 deletions
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index edd89b30c9f..60480d603c3 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el @@ -406,16 +406,17 @@ It is used when `ruby-encoding-magic-comment-style' is set to `custom'." '((right "=") (right "+=" "-=" "*=" "/=" "%=" "**=" "&=" "|=" "^=" "<<=" ">>=" "&&=" "||=") - (left ".." "...") - (left "+" "-") - (left "*" "/" "%" "**") + (nonassoc ".." "...") (left "&&" "||") - (left "^" "&" "|") (nonassoc "<=>") - (nonassoc ">" ">=" "<" "<=") (nonassoc "==" "===" "!=") (nonassoc "=~" "!~") + (nonassoc ">" ">=" "<" "<=") + (left "^" "&" "|") (left "<<" ">>") + (left "+" "-") + (left "*" "/" "%") + (left "**") (assoc ".")))))) (defun ruby-smie--bosp () diff --git a/test/indent/ruby.rb b/test/indent/ruby.rb index 85f2708bd98..b038512b114 100644 --- a/test/indent/ruby.rb +++ b/test/indent/ruby.rb @@ -295,10 +295,31 @@ foo > bar && tee < qux zux do - foo == bar and + foo == bar && tee == qux + + a = 3 and + b = 4 end +foo + bar == + tee + qux + +1 .. 2 && + 3 + +3 < 4 + + 5 + +10 << 4 ^ + 20 + +100 + 2 >> + 3 + +2 ** 10 / + 2 + foo ^ bar |