Freewind
Freewind

Reputation: 198398

How to config intellij-idea not format some part of the code?

In a html file, there is some code used custom template-language:

<script type="text/javascript">
    function ($scope, JsRoutes) {
        $scope.rows = [
            ${"#{list rows, as: 'row', separator: ','}"}
            {
            #{list fieldConfigs, as: 'f', separator: ','}
            ${f.name} : ${'$'}{row.${f.name}.toJson()}#{/list}
            }
            ${'#{/list}'}
        ]
    }
</script>

Is it possible to configure intellij-idea not to format it(but format the other part of the document)? Since idea will make it hard to read after formatting:

<script type="text/javascript">
    function ($scope, JsRoutes) {
        $scope.rows = [
            ${"#{list rows, as: 'row', separator: ','}"}
            {
    #{list fieldConfigs, as: 'f', separator: ','}
    ${f.name} :
        ${'$'}{
            row.${f.name}.toJson()
        }#{/list}
    }
    ${'#{/list}'}
    ]
    }
</script>

Upvotes: 46

Views: 20693

Answers (4)

CrazyCoder
CrazyCoder

Reputation: 402543

This feature has been implemented and you can now disable formatting for the regions of code using the special comments.

markers

After enabling this feature in the settings, add //@formatter:off at the start of your region, and //@formatter:on at the end of it.

These are the default markers, and they are configurable.

You can find more details and examples in the documentation:


Original answer from 2012:

It's not possible yet, please vote for this feature request:

  • IDEA-56995 Disable code formatting per region using comments

Upvotes: 47

Andy Piper
Andy Piper

Reputation: 583

It's worth noting that the formatter control does not appear to work in javadoc comments. It needs to be either in a regular C or C++-style comment. So // @formatter:off works /* @formatter:off */ also works, but /** @formatter:off */ does not.

Upvotes: 2

fawkes
fawkes

Reputation: 640

In my version EAP 13.1, you must enable the following option in settings,

Preferences -> Code Style -> General -> Formatter Control -> Enable formatter markers in comments

before you can use these comments,

// @formatter:off

// @formatter:on 

or these (depending on language):

<!--@formatter:off-->

<!--@formatter:on-->

Screenshot:

Screenshot highlighting the checkbox for Enable formatter markers in comments under Preferences

Upvotes: 52

Martin Seeler
Martin Seeler

Reputation: 6992

Since EAP 13 you can trigger the formatter with the following comments:

// @formatter:off
...
// @formatter:on 

To enable it in "surround with", you can define a Live Template in the section "surround" with:

// @formatter:off
$SELECTION$
// @formatter:off

You can find these settings in Settings -> Code Style -> General and set your own trigger words.

Upvotes: 9

Related Questions