From: Neil Spring Date: 2003-11-09T10:29:37+09:00 Subject: ruby-mode indent frustration -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hello, I am used to c-mode indents and I find ruby-mode.el's indenting frustrating. Has anyone configured, modified, or rewritten ruby-mode.el to indent statements in a way more like c-mode does? I found Jim Weirich's code to properly reformat comments without reformatting code as c-mode does using M-q on rubygarden. The code below includes some examples of lines I would like indented differently, though the expressions are short. Because ruby's parser considers any statement that could be finished on a line finished, there are only a few ways to break up complex statements. Operators like "||", "+", and "%" all cause ruby-mode to indent the next line directly beneath where it would be anyway -- making it useless to try to split these expressions across lines. Placing a {} block as a parameter to a function somehow causes the indenting to counter-intuitively start over at the left. And the "?" conditional assignment operator gets no indenting for the next line at all. # the following statement should line up false beneath true, # as c-mode does. if ( true || false ) then # the following statement should line up "baz" either # under "foo" or ruby-indent from the left edge. puts "foo bar %s" % "baz" # same as above. puts "Foo" + "Bar" # the second line should be indented somehow. puts use_celsius ? 100 : 212; # the second line should be indented somehow, # preferably at least as far in as the "(" puts( [ "a", "b", "c" ].map { |c| c + c }.join() ) # are fine: puts "Foo", "Bar" puts "foo bar %s" % [ "baz" ] end I don't know how to configure or improve ruby-mode.el to handle these statements, and I realize c-mode has it easy since all it has to do is wait for semicolons, but I think improving the formatting will make code more readable. thoughts? - -neil -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.3 (Darwin) iD8DBQE/rZh9tvhXVvuQ3oQRAvRhAJ9wDdgb8EiJGjB3MUkGF9k6Gr6LtgCaAhlH 40nnYD3o/zZuNSQZCT1IeOA= =ttYY -----END PGP SIGNATURE-----