llvm/llvm-project

Add equivalent of LambdaBodyIndentation for ObjC blocks

Open

#53.740 geöffnet am 11. Feb. 2022

Auf GitHub ansehen
 (6 Kommentare) (3 Reaktionen) (1 zugewiesene Person)C++ (10.782 Forks)batch import
clang-formatgood first issueobjective-c

Repository-Metriken

Stars
 (26.378 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 1T 2h) (1.000 gemergte PRs in 30 T)

Beschreibung

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.

Contributor Guide