Uncrustify параметры вызова разделенной функции

Я хочу отформатировать код следующим образом:

  • а) максимальная ширина линии 120

  • б) - параметры вызова функции по одному на строку с отступом, если длина вызываемой функции > 120, иначе вызов функции в одну строку

  • c) - если вызов функции находится внутри if, for, while и т. д., параметры должны быть отформатированы так, как написано в b)

У меня есть код (это просто выдумка):

void a_function()
{
    if(verify_if_the_conditions_are_meet(first_parameter, second_parameter, third_parameter, fourth_parameter, fifth_parameter, sixth_parameter ))
    {
        call_a_function_with_many_parameters(first_parameter, second_parameter, third_parameter, fourth_parameter, fifth_parameter, sixth_parameter);       
    }

    save(first_parameter, second_parameter, third_parameter, fourth_parameter, fifth_parameter, sixth_parameter);
}

И теперь я хочу получить результат:

void a_function()
{
    if(verify_if_the_conditions_are_meet(
        first_parameter, 
        second_parameter, 
        third_parameter, 
        fourth_parameter, 
        fifth_parameter, 
        sixth_parameter ))
    {
        call_a_function_with_many_parameters(
            first_parameter, 
            second_parameter, 
            third_parameter, 
            fourth_parameter, 
            fifth_parameter, 
            sixth_parameter);
    }

    save(first_parameter, second_parameter, third_parameter, fourth_parameter, fifth_parameter, sixth_parameter);
}

Я использовал следующие параметры в Uncrustify 0.63:

код_ширина = 120

ls_func_split_full = истина

ls_code_width = ложь

nl_func_leave_one_liners = истина

indent_func_call_param = истина

nl_func_def_start = добавить

nl_func_def_start_single = удалить

align_oc_msg_colon_first = ложь

С этими настройками я получаю примерно так:

void a_function()
{
    if(verify_if_the_conditions_are_meet(first_parameter, second_parameter, third_parameter, fourth_parameter, 
        fifth_parameter, sixth_parameter ))
    {
        call_a_function_with_many_parameters(
            first_parameter, 
            second_parameter, 
            third_parameter, 
            fourth_parameter, 
            fifth_parameter, 
            sixth_parameter);
    }

    save(first_parameter, second_parameter, third_parameter, fourth_parameter, fifth_parameter, sixth_parameter);
}

Есть ли у кого-нибудь ситуация, когда вызов функции находится внутри if/for/while и требует разделения параметров таким образом?


person mtb    schedule 20.07.2016    source источник


Ответы (1)


Используйте эти настройки:

nl_func_call_start_multi_line   = true
nl_func_call_args_multi_line    = true
code_width                      = 120
  • code_width: Попробуйте ограничить ширину кода до N столбцов.
  • nl_func_call_start_multi_line: добавлять ли новую строку после ( в вызове функции, если ( и ) находятся в разных строках.
  • nl_func_call_args_multi_line: добавлять ли новую строку после каждого , в вызове функции, если ( и ) находятся в разных строках.

Опционально с:

nl_func_call_end_multi_line     = true
  • nl_func_call_end_multi_line: добавлять ли новую строку перед ) в вызове функции, если ( и ) находятся в разных строках.
person CDanU    schedule 15.02.2017