llvm/llvm-project

Add equivalent of LambdaBodyIndentation for ObjC blocks

Open

#53,740 创建于 2022年2月11日

在 GitHub 查看
 (6 评论) (3 反应) (1 负责人)C++ (10,782 fork)batch import
clang-formatgood first issueobjective-c

仓库指标

Star
 (26,378 star)
PR 合并指标
 (平均合并 1天 2小时) (30 天内合并 1,000 个 PR)

描述

With the attached clang-format file, the following (mildly reduced) Objective-C snippet formats as displayed:

- (void)test
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        do {
            DatabaseStorageWrite(self.databaseStorage, ^(SDSAnyWriteTransaction *transaction) {
                [interactionFinder enumerateUnreadMessagesBeforeSortId:sortId
                                                           transaction:transaction.unwrapGrdbWrite
                                                                 block:^(id<OWSReadTracking> readItem, BOOL *stop) {
                                                                     [readItem markAsReadAtTimestamp:readTimestamp
                                                                                              thread:thread
                                                                                        circumstance:circumstance
                                                                                         transaction:transaction];
                                                                     --batchQuotaRemaining;
                                                                     if (batchQuotaRemaining == 0) {
                                                                         *stop = true;
                                                                     }
                                                                 }];
            });
        } while (batchQuotaRemaining == 0);
    });
}

when I would like it to format as

- (void)test
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        do {
            batchQuotaRemaining = maxBatchSize;
            DatabaseStorageWrite(self.databaseStorage, ^(SDSAnyWriteTransaction *transaction) {
                [interactionFinder enumerateUnreadMessagesBeforeSortId:sortId
                                                           transaction:transaction.unwrapGrdbWrite
                                                                 block:^(id<OWSReadTracking> readItem, BOOL *stop) {
                    [readItem markAsReadAtTimestamp:readTimestamp
                                             thread:thread
                                       circumstance:circumstance
                                        transaction:transaction];
                    --batchQuotaRemaining;
                    if (batchQuotaRemaining == 0) {
                        *stop = true;
                    }
                }];
            });
        } while (batchQuotaRemaining == 0);
    });

which is what Xcode does. This seems equivalent to LambdaBodyIndentation, but there's no equivalent setting for ObjC blocks.

贡献者指南