SplitTooLongLine#

Split too long lines.

Transformer configuration

SplitTooLongLine is included in the default transformers, but it can be also run separately with:

robotidy --transform SplitTooLongLine src

You can also disable SplitTooLongLine:

robotidy --configure SplitTooLongLine:enabled=False src

If line exceeds given length limit (120 by default) it will be split:

*** Variables ***
@{LIST}    value    value2    value3  # let's assume that value2 is at 120 char

*** Keywords ***
Keyword
    Keyword With Longer Name    ${arg1}    ${arg2}    ${arg3}  # let's assume that arg2 is at 120 char
*** Variables ***
# let's assume that value2 is at 120 char
@{LIST}
...    value
...    value2
...    value3

*** Keywords ***
Keyword
    # let's assume that arg2 is at 120 char
    Keyword With Longer Name
    ...    ${arg1}
    ...    ${arg2}
    ...    ${arg3}

Missing functionality#

SplitTooLongLine does not support splitting all Robot Framework types. Currently it will only work on too long keyword calls, variables and selected settings (tags and arguments). Missing types will be covered in the future updates.

Allowed line length#

Allowed line length is configurable using global parameter --line-length:

robotidy --line-length 140 src.robot

Or using dedicated for this transformer parameter line_length:

robotidy --configure SplitTooLongLine:line_length=140 src.robot

Split argument on every line#

Using split_on_every_arg flag (True by default), you can force the formatter to fill keyword arguments in one line until character limit:

robotidy --configure SplitTooLongLine:split_on_every_arg=False src
*** Keywords ***
Keyword
    Keyword With Longer Name    ${arg1}    ${arg2}    ${arg3}  # let's assume that arg2 is at 120 char
*** Keywords ***
Keyword
    # let's assume that arg2 is at 120 char
    Keyword With Longer Name    ${arg1}
    ...    ${arg2}    ${arg3}

Split values on every line#

Using split_on_every_value flag (True by default), you can force the formatter to fill values in one line until character limit:

robotidy --configure SplitTooLongLine:split_on_every_value=False src
*** Variables ***
# let's assume character limit is at age=12
&{USER_PROFILE}    name=John Doe    age=12     hobby=coding
*** Variables ***
# let's assume character limit is at age=12
&{USER_PROFILE}    name=John Doe    age=12
...    hobby=coding

Split settings arguments on every line#

Using split_on_every_setting_arg flag (True by default), you can force the formatter to fill settings arguments in one line until character limit:

robotidy --configure SplitTooLongLine:split_on_every_setting_arg=False src
*** Keywords ***
Arguments
    [Arguments]    ${short}    ${veryLongAndJavaLikeArgumentThatWillGoOverAllowedLength}    ${veryLongAndJavaLikeArgumentThatWillGoOverAllowedLength}
    Step
*** Keywords ***
Arguments
    [Arguments]
    ...    ${short}
    ...    ${veryLongAndJavaLikeArgumentThatWillGoOverAllowedLength}
    ...    ${veryLongAndJavaLikeArgumentThatWillGoOverAllowedLength}
    Step
*** Keywords ***
Arguments
    [Arguments]    ${short}    ${veryLongAndJavaLikeArgumentThatWillGoOverAllowedLength}
    ...    ${veryLongAndJavaLikeArgumentThatWillGoOverAllowedLength}
    Step

Assignments#

Assignments will be split to multi lines if they don’t fit together with Keyword in one line:

*** Keywords ***
Keyword
    ${first_assignment}    ${second_assignment}    Some Lengthy Keyword So That This Line Is Too Long    ${arg1}    ${arg2}

    ${first_assignment}    ${second_assignment}    ${third_assignment}    Some Lengthy Keyword So That This Line Is Too Long And Bit Over    ${arg1}    ${arg2}
*** Keywords ***
Keyword
    ${first_assignment}    ${second_assignment}    Some Lengthy Keyword So That This Line Is Too Long
    ...    ${arg1}
    ...    ${arg2}

    ${first_assignment}
    ...    ${second_assignment}
    ...    ${third_assignment}
    ...    Some Lengthy Keyword So That This Line Is Too Long And Bit Over
    ...    ${arg1}
    ...    ${arg2}

Single values#

By default single values (${variable}    value) are not split. You can configure SplitTooLine transformer to split on single too long values using split_single_value option:

robotidy --configure SplitTooLongLine:split_single_value=True
*** Variables ***
&{USER_PROFILE}                   name=John Doe                            age=12                            hobby=coding
${SHORT_VALUE}    value
${SINGLE_HEADER}    veeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeery
*** Variables ***
&{USER_PROFILE}
...    name=John Doe
...    age=12
...    hobby=coding
${SHORT_VALUE}    value
${SINGLE_HEADER}    veeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeery
*** Variables ***
&{USER_PROFILE}
...    name=John Doe
...    age=12
...    hobby=coding
${SHORT_VALUE}    value
${SINGLE_HEADER}
...    veeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeery

Align new line#

It is possible to align new line to previous line when splitting too long line. This mode works only when we are filling the line until line the length limit (with one of the split_on_every_arg, split_on_every_value and split_on_every_setting_arg flags). To enable it configure it using align_new_line:

> robotidy -c SplitTooLongLine:align_new_line=True
*** Keywords ***
Keyword
    [Tags]    longertagname1    longertagname2    longertagname3
    Keyword With Longer Name    ${arg1}    ${arg2}    ${arg3}    # let's assume ${arg3} does not fit under limit
*** Keywords ***
Keyword
    [Tags]    longertagname1    longertagname2
    ...    longertagname3
    Keyword With Longer Name    ${arg1}    ${arg2}
    ...    ${arg3}
*** Keywords ***
Keyword
    [Tags]    longertagname1    longertagname2
    ...       longertagname3
    Keyword With Longer Name    ${arg1}    ${arg2}
    ...                         ${arg3}

Ignore comments#

To not count length of the comment to line length use Skip comments and block comments option:

robotidy --configure SplitTooLongLine:skip_comments=True <src>

This allows to accept and do not format lines that are longer than allowed length because of the added comment.

Skip formatting#

It is possible to use the following arguments to skip formatting of the code:

It is also possible to use disablers (Disablers) but skip option makes it easier to skip all instances of given type of the code.