1

我使用 clang-format 来格式化我的代码。一切正常,除了块代码,你可以看到下面的代码,失败块有缩进 4 个空格......

_loginOperation = [CheckTIMPreparation tim_CheckPreparationSuccess:^{
    [weakSelf checkIsJoinGroup];
} failure:^(NSString *errorString) {
    [weakSelf showloginingViewWithFail];
}];

格式后:

_loginOperation = [CheckTIMPreparation tim_CheckPreparationSuccess:^{
  [weakSelf checkIsJoinGroup];
}
    failure:^(NSString *errorString) {
      [weakSelf showloginingViewWithFail];
    }];

如何自定义我的 clang 格式配置?

这是我的配置:

BasedOnStyle: LLVM  
IndentWidth: 4  
BreakBeforeBraces: Attach  
AllowShortIfStatementsOnASingleLine: true  
IndentCaseLabels: true    
ObjCBlockIndentWidth: 4   
ObjCSpaceAfterProperty: true
ColumnLimit: 0  
AlignTrailingComments: true  
SpaceAfterCStyleCast: true 
SpacesInParentheses: false  
SpacesInSquareBrackets: false
4

1 回答 1

0

现在已经四年了,但无论如何,可能有人希望看到这个问题的答案......


可以肯定的是,您的问题标题似乎询问如何防止clang-format修改代码块。如果这就是你想要的,你可以通过放置// clang-format off// clang-format on围绕该代码来做到这一点。有关更多详细信息,请参阅文档


你没有提到clang-format你使用的是什么版本,不幸的是你的代码被不同版本的clang-format. (我使用配置器探索了这些版本)。

  • 3.5.2 版给出:
    _loginOperation = [CheckTIMPreparation tim_CheckPreparationSuccess:^{
        [weakSelf checkIsJoinGroup];
    } failure:^(NSString *errorString) { [weakSelf showloginingViewWithFail]; }];
    
  • 3.6.0 版给出:
    _loginOperation = [CheckTIMPreparation tim_CheckPreparationSuccess:^{
      [weakSelf checkIsJoinGroup];
    } failure:^(NSString *errorString) {
      [weakSelf showloginingViewWithFail];
    }];
    
  • 3.7.0 到 6.0.1 版本提供:
    _loginOperation = [CheckTIMPreparation tim_CheckPreparationSuccess:^{
        [weakSelf checkIsJoinGroup];
    }
        failure:^(NSString *errorString) {
            [weakSelf showloginingViewWithFail];
        }];
    
  • 版本 7.0.1 到 10.0.0 提供:
    _loginOperation = [CheckTIMPreparation
        tim_CheckPreparationSuccess:^{
            [weakSelf checkIsJoinGroup];
        }
        failure:^(NSString *errorString) {
            [weakSelf showloginingViewWithFail];
        }];
    

因此,您可能正在使用类似版本 6.0.0 的东西,并且简单地升级到更新版本clang-format可能会给您提供您想要更好的格式。


此外,您可能还需要设置样式选项AllowShortBlocksOnASingleLine: true(有关详细信息,请参阅文档)。对于clang-format版本 10.0.0,您的代码将如下所示:

_loginOperation = [CheckTIMPreparation
    tim_CheckPreparationSuccess:^{ [weakSelf checkIsJoinGroup]; }
    failure:^(NSString *errorString) { [weakSelf showloginingViewWithFail]; }];
于 2020-09-02T16:55:08.830 回答