mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-24 07:20:37 +00:00
1d1c86daf7
No implicit semi after "^", "and" or "or". (ruby-smie-grammar): New tokens: "and" and "or". (ruby-smie--args-separator-p): Fix the check for tokens at POS. Exclude "and" and "or". Remove "do" in order to work around token priorities. (ruby-smie-rules): Add all infix tokens. Handle the case of beginning-of-buffer.
260 lines
3.3 KiB
Ruby
260 lines
3.3 KiB
Ruby
if something_wrong? # ruby-move-to-block-skips-heredoc
|
|
ActiveSupport::Deprecation.warn(<<-eowarn)
|
|
boo hoo
|
|
end
|
|
eowarn
|
|
foo
|
|
end
|
|
|
|
# Percent literals.
|
|
b = %Q{This is a "string"}
|
|
c = %w!foo
|
|
bar
|
|
baz!
|
|
d = %(hello (nested) world)
|
|
|
|
# Don't propertize percent literals inside strings.
|
|
"(%s, %s)" % [123, 456]
|
|
|
|
# Or inside comments.
|
|
x = # "tot %q/to"; =
|
|
y = 2 / 3
|
|
|
|
# Regexp after whitelisted method.
|
|
"abc".sub /b/, 'd'
|
|
|
|
# Don't mis-match "sub" at the end of words.
|
|
a = asub / aslb + bsub / bslb;
|
|
|
|
# Highlight the regexp after "if".
|
|
x = toto / foo if /do bar/ =~ "dobar"
|
|
|
|
bar(class: XXX) do # ruby-indent-keyword-label
|
|
foo
|
|
end
|
|
bar
|
|
|
|
foo = [1, # ruby-deep-indent
|
|
2]
|
|
|
|
foo = { # ruby-deep-indent-disabled
|
|
a: b
|
|
}
|
|
|
|
foo = { a: b,
|
|
a1: b1
|
|
}
|
|
|
|
foo({
|
|
a: b,
|
|
c: d
|
|
})
|
|
|
|
foo = [ # ruby-deep-indent-disabled
|
|
1
|
|
]
|
|
|
|
foo( # ruby-deep-indent-disabled
|
|
a
|
|
)
|
|
|
|
# Multiline regexp.
|
|
/bars
|
|
tees # toots
|
|
nfoos/
|
|
|
|
def test1(arg)
|
|
puts "hello"
|
|
end
|
|
|
|
def test2 (arg)
|
|
a = "apple"
|
|
|
|
if a == 2
|
|
puts "hello"
|
|
else
|
|
puts "there"
|
|
end
|
|
|
|
if a == 2 then
|
|
puts "hello"
|
|
elsif a == 3
|
|
puts "hello3"
|
|
elsif a == 3 then
|
|
puts "hello3"
|
|
else
|
|
puts "there"
|
|
end
|
|
|
|
case a
|
|
when "a"
|
|
6
|
|
# Support for this syntax was removed in Ruby 1.9, so we
|
|
# probably don't need to handle it either.
|
|
# when "b" :
|
|
# 7
|
|
# when "c" : 2
|
|
when "d" then 4
|
|
else 5
|
|
end
|
|
end
|
|
|
|
# Some Cucumber code:
|
|
Given /toto/ do
|
|
print "hello"
|
|
end
|
|
|
|
# Bug#15208
|
|
if something == :==
|
|
do_something
|
|
end
|
|
|
|
# Example from http://www.ruby-doc.org/docs/ProgrammingRuby/html/language.html
|
|
d = 4 + 5 + # no '\' needed
|
|
6 + 7
|
|
|
|
# Example from http://www.ruby-doc.org/docs/ProgrammingRuby/html/language.html
|
|
e = 8 + 9 \
|
|
+ 10 # '\' needed
|
|
|
|
begin
|
|
foo
|
|
ensure
|
|
bar
|
|
end
|
|
|
|
# Bug#15369
|
|
MSG = 'Separate every 3 digits in the integer portion of a number' \
|
|
'with underscores(_).'
|
|
|
|
class C
|
|
def foo
|
|
self.end
|
|
D.new.class
|
|
end
|
|
end
|
|
|
|
a = foo(j, k) -
|
|
bar_tee
|
|
|
|
while a < b do # "do" is optional
|
|
foo
|
|
end
|
|
|
|
desc "foo foo" \
|
|
"bar bar"
|
|
|
|
foo.
|
|
bar
|
|
|
|
# https://github.com/rails/rails/blob/17f5d8e062909f1fcae25351834d8e89967b645e/activesupport/lib/active_support/time_with_zone.rb#L206
|
|
foo
|
|
.bar
|
|
|
|
z = {
|
|
foo: {
|
|
a: "aaa",
|
|
b: "bbb"
|
|
}
|
|
}
|
|
|
|
foo if
|
|
bar
|
|
|
|
if foo?
|
|
bar
|
|
end
|
|
|
|
method arg1, # bug#15594
|
|
method2 arg2,
|
|
arg3
|
|
|
|
method? arg1,
|
|
arg2
|
|
|
|
method! arg1,
|
|
arg2
|
|
|
|
method !arg1,
|
|
arg2
|
|
|
|
method [],
|
|
arg2
|
|
|
|
method :foo,
|
|
:bar
|
|
|
|
method (a + b),
|
|
c, :d => :e,
|
|
f: g
|
|
|
|
it "is a method call with block" do |asd|
|
|
foo
|
|
end
|
|
|
|
it("is too!") {
|
|
bar
|
|
}
|
|
|
|
and_this_one(has) { |block, parameters|
|
|
tee
|
|
}
|
|
|
|
if foo &&
|
|
bar
|
|
end
|
|
|
|
foo +
|
|
bar
|
|
|
|
foo and
|
|
bar
|
|
|
|
foo ^
|
|
bar
|
|
|
|
foo_bar_tee(1, 2, 3)
|
|
.qux
|
|
.bar
|
|
|
|
foo do
|
|
bar
|
|
.tee
|
|
end
|
|
|
|
def bar
|
|
foo
|
|
.baz
|
|
end
|
|
|
|
# http://stackoverflow.com/questions/17786563/emacs-ruby-mode-if-expressions-indentation
|
|
tee = if foo
|
|
bar
|
|
end
|
|
|
|
a = b {
|
|
c
|
|
}
|
|
|
|
aa = bb do
|
|
cc
|
|
end
|
|
|
|
foo :bar do
|
|
qux
|
|
end
|
|
|
|
foo = [1, 2, 3].map do |i|
|
|
i + 1
|
|
end
|
|
|
|
bar.foo do
|
|
bar
|
|
end
|
|
|
|
# Examples below still fail with `ruby-use-smie' on:
|
|
|
|
bar.foo(tee) do # "." is parent to "do"; it shouldn't be.
|
|
bar
|
|
end
|