Search code examples
actionscript-3emacsindentationjavascriptpython-mode

How to control indentation after an open parenthesis in Emacs


When I use emacs python-mode, if the last character of a line is an open parenthesis it indents the next line just one step in from the indentation of the previous line.

call_some_function(
    some_very_long_argument_that_I_want_to_put_on_its_own_line)

I like that. Now in ecmascript-mode (which I am using for actionscript 3), it always indents to the level of the previous parenthesis.

call_some_function(
                   this_is_not_really_saving_me_any_horizontal_space);

How can I make ecmascript-mode indent like python-mode in this respect?


Solution

  • Since ecmascript-mode is based on cc-mode, you can use c-set-offset which allows you to customize any syntactic symbol's offset with the preferred value.

    In your case, go to the point which is indented in the wrong level, hit C-c C-o (or type M-x c-set-offset), accept the suggested symbol (arglist-intro), and set it a new value (e.g. +, the default offset).

    You can also do it programmatically in your dotemacs, for instance, with:

    (add-hook 'ecmascript-mode-hook
              (lambda ()
                (c-set-offset 'arglist-intro '+)
                (c-set-offset 'arglist-close 0)))