在Uncrustify格式化程序中为newLine配置块参数

时间:2017-08-14 13:41:56

标签: objective-c format uncrustify

我想知道在Uncrustify中是否存在配置,以便可以实现以下格式化(或至少部分部分)(语言是objective-c)。

原始代码:

@interface BaseVideoViewController : BaseViewController    <UICollectionViewDelegate, UICollectionViewDataSource, CircleTransitionFromController, PassiveUserGifCellDelegate, PassiveUserCollectionViewDelegate>


@property (strong, nonatomic) NSMutableArray   <TokBoxParticipants *> *currentPassivePlayersArray;

@interface BaseVideoViewController   ()   {

    NSMutableArray  <NSString *> *passiveUserForCellList;

}

[UIView animateWithDuration:1.0 parama1:2.0 animations:^{
                     // oc_block should come down if in same line by formatter
                 }
                 completion:^(BOOL finished) {
                     // something
                 }];

    switch (something.state) {
        case 0: {}
        Break;

    }

if  (_voiceTextView == nil)   {

格式化后所需的代码:

@interface BaseVideoViewController: BaseViewController <UICollectionViewDelegate, UICollectionViewDataSource, CircleTransitionFromController, PassiveUserGifCellDelegate, PassiveUserCollectionViewDelegate>

@property (strong, nonatomic) NSMutableArray <TokBoxParticipants *> *currentPassivePlayersArray;

@interface BaseVideoViewController() {

    NSMutableArray<NSString *> *passiveUserForCellList;

}


[UIView animateWithDuration:1.0 parama1:2.0 
                   animations:^{
                     // oc_block should come down if in same line by formatter
                 }
                 completion:^(BOOL finished) {
                     // something
                 }];

 switch (something.state) {
        case 0: {
             Break;
        }   



    }

if (_voiceTextView == nil) {

格式化后需要观察的更改:

  1. 'if'和'('之间有空格,但我不希望'BaseVideoViewController'和'('。
  2. 之间有空格。
  3. 我不希望接口名称之间有空格,即'BaseVideoViewController'和':'。
  4. 我希望在接口或属性定义中数据类型和尖括号('&lt;')之间有空格,但在代码中的其他位置不需要空格。
  5. 注意break语句的变化。
  6. 当调用函数时,我希望参数进入新行,如果该参数的值从'^'开始(参数名为动画,上面代码中的完成)。

1 个答案:

答案 0 :(得分:1)

Uncrustify-0.65-106-95188777

  1. 目前似乎没有选项
  2. sp_before_class_colon = remove
  3. 参见1,然而(方式)更多通用选项,例如sp_before_anglesp_inside_angle
  4. mod_move_case_break = true应该这样做,但它似乎不适用于 OC 。它也不适用于 C ++ 的示例,除非Break更改为break且结束括号位于其自己的行上。
  5. 见1
  6. 提交功能并将请求提取到Uncrustify git repo