[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#15594: trunk r114639: * lisp/progmodes/ruby-mode.el (ruby-smie-gramm
bug#15594: trunk r114639: * lisp/progmodes/ruby-mode.el (ruby-smie-grammar): Add rule for paren-free
Mon, 14 Oct 2013 23:31:15 -0400
Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)
> No, space is significant(++),
I guess we're lucky.
> I'm not suggesting to revert the addition of
> the " @ " token. But we need a better predicate in
> ruby-smie--args-separator-p' to check that the thing after POS is probably
> an argument. "Starts with a word character" is too narrow.
> How would that look?
> (unless (member (save-excursion (ruby-smie--forward-token) '("]" "}" "end"
> "+" "-" "?" ":" ...)))
(looking-at "\\s)\\|\\s.") ?
> Or should the check be more like "is the next token in `ruby-smie-grammar',
> and if yes, is its left priority more than ' @ 's right priority"?
Calling ruby-smie--forward-token is a bit dangerous since that function
might itself be called from ruby-smie--forward-token. It might work,
but you'll have to think hard about why an inf-loop is not possible.
> You've probably already found this, but on the off chance you haven't,
> here's its syntax in (incomplete, somewhat outdated, etc) BNF form:
Please add this URL in a comment somewhere near ruby-smie-grammar (for
>> +# Shouldn't "bar" be aligned with "foo"? --Stef
>> if foo &&
> Maybe. Either option would be better than the current behavior. I've picked
> this one because the old engine indents it like so, and additional
> indentation of 2 (compared to the if body) would likely be more useful that
> 1, when reading the code.
Getting `foo' and `bar' aligned is just a matter of adding && to the set
of infix operators (i.e. completing the table of infix operators).
Getting `bar' to be indented one more than `foo' here but not in other
cases of "foo && \n bar" would require more work.