summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Gutov <dgutov@yandex.ru>2016-03-16 04:32:59 +0200
committerDmitry Gutov <dgutov@yandex.ru>2016-03-16 04:32:59 +0200
commit2036be4666becf02f4524d63595e3da55b14ff0d (patch)
tree327d28def64a3cd558d36efc55e14cb194a4be30
parent1d686c2afb7c6c869c339f7c70daae969b429429 (diff)
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.el11
-rw-r--r--test/indent/ruby.rb23
2 files changed, 28 insertions, 6 deletions
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el
index edd89b30c9..60480d603c 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 85f2708bd9..b038512b11 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