2009-06-02 1 views
15

Sto usando uncrustify 0,52. Quando l'eseguo contro i file Objective-C, si vuole convertire chiamate di metodi come questo:Can Uncrustify allinea i due punti nelle chiamate al metodo Objective-C?

[NSApp beginSheet:startTimerDialog 
    modalForWindow:nil 
    modalDelegate:nil 
    didEndSelector:nil 
     contextInfo:nil]; 

a questo:

[NSApp beginSheet:startTimerDialog 
modalForWindow:nil 
modalDelegate:nil 
didEndSelector:nil 
contextInfo:nil]; 

io preferisco la prima versione, con i due punti allineati. Esiste un'opzione nel file di configurazione non crittografato in grado di supportare ciò che voglio, o non crustifica semplicemente non supporta i due punti allineati?

Se la sincronizzazione non è in grado di allineare i due punti, c'è un modo per impedirle di disallineare i due punti che ho allineato io stesso?

Aggiornamento:

mmc nota che questa funzione era disponibile nel repository svn Uncrustify come di costruzione 1581. E 'in Uncrustify 0.54. Impostare align_oc_msg_colon = true nel proprio file di configurazione per abilitarlo.

ulteriore aggiornamento

Per le persone che trovano questa risposta in futuro: Il nome della preferenza nel file .cfg è stato modificato. Ora è align_oc_msg_colon_span= 1 per ottenere il comportamento sopra descritto. C'è anche ora un align_oc_decl_colon = true che farà il nome per le dichiarazioni multilinea.

+0

C'è un errore nella versione corrente (0,59) in cui queste opzioni non funzionano come previsto. Vedere la mia risposta stackoverflow.com/a/11187820/253098 – SystematicFrank

risposta

10

Ho suonato in giro con questo per un po 'di tempo la scorsa notte, e (anche se non credo che questo merita la grazia) la risposta a entrambe le domande è "no, le versioni correnti (.53) di Uncrustify non lo fanno. "

Ho anche studiato una patch per fare esattamente questo (perché lo voglio davvero anche io) e dopo aver guardato la fonte Uncrustify, e ho concluso che ci sarebbe voluto molto più tempo di quello che avevo a disposizione per capire dove inserire il patch per realizzare "allineamento dei due punti dei parametri del messaggio multi-linea" piuttosto che "allineamento sinistro dei messaggi su più righe" Sembra che ci siano stati alcuni miglioramenti all'analisi di Objective-C nelle patch recenti.

Speravo tanto che qualcuno potesse rispondere a questa domanda. Volevo davvero saperlo anche io.

NOTA: Per le persone che trovano questa risposta in futuro: Il nome della preferenza nel file .cfg è stato modificato. Ora è align_oc_msg_colon_span = 1 per ottenere il comportamento sopra descritto. Ora c'è anche un align_oc_decl_colon che farà il nome per le dichiarazioni multi-linea.

+0

Spero di fare una patch me stesso nel mio tempo libero abbondante. Non so quando avrò qualcosa di simile. –

+1

Potresti non voler disturbare ... sembra che stia arrivando. Uncrustify .53 era la versione 1571 in svn. La corrente nel suo SourceForge svn è 1581. La build 1581 sembra essere in fase di (potrebbe non essere completa, non ho scaricato e compilato) aggiungendo una nuova opzione per l'Objective C chiamata "align_oc_msg_colon". Non so tu, ma penso che sia estremamente promettente.Ora sono fuori per provare e costruire 1581 per vedere se funziona davvero. – mmc

+2

Beh, sembra funzionare ... soprattutto. Non sembra voler consentire l'estensione di alcun messaggio a sinistra della parentesi aperta sulla riga precedente. Il 90% delle volte, va bene. L'altro 10% mette spazi tra il nome dell'oggetto e il primo (segmento? Nome parametro?) Del messaggio. Non mi piace. Ho la sensazione che possa essere disattivato, ma non ho ancora trovato l'opzione giusta. – mmc

0

Hai provato:

align_var_def_colon=true 
+0

Sì. Non ha aiutato –