In the following snippet `format` is font-locked as the built-in
function, but it's actually a variable.
respond_to do |format|
format.json do
# ...
end
end
This problem obviously exists for all built-ins, but it's not a big
issue in general, since most of them don't have names that are likely to
be used as variable names. Not sure if we can have a simple solution for
this problem without a parser, though. I guess we can have a check if
the built-in methods have arguments (as most of them have).
A lot of them don't, though (or have no required arguments): __callee__,
__dir__, __method__, binding, caller, block_given?, exit, exit!, raise,
(s)rand, readline(s), sleep.
Guess we can separate these, and for all others, check if they're
followed by " *[]|,.)}]\\|$".