Auto indent method chaining in Sublime Text 3

2.2k views Asked by At

As I type the following javascript code (exact keystrokes):

myObject
.doSomething()
.doSomethingElse();

I'd expect it to automatically become the following...

myObject
    .doSomething()
    .doSomethingElse();

... as would any other programmer, right?

How do I enable this, and why isn't it enabled by default?

2

There are 2 answers

2
Rizky Ariestiyansyah On BEST ANSWER

You can use Sublime Code formatter with support JavaScript/JSON Beautifier, this link will show you how to usage this plugin.

Or another way is to insert your code inside Key Bindings - User file:

{"keys": ["alt+shift+f"], "command": "reindent", "args": {"single_line": false}}
0
user2418306 On

This happens because sublime's smart_indent is not smart enough.

You can fix indentation post factum using code formatter plugin like JsFomat.

Or preventively indent first chained method call. Following lines will have same level of indentation. This solution can be slightly improved by creating new key binding:

    {
        "keys": ["alt+enter"],
        "command": "insert",
        "args": {"characters": "\n\t"}
    }

Press alt+enter instead of enter, tab for newline to have extra indentation.