2009-06-02 7 views
15

Używam uncrustify 0.52. Gdy go przeciwko pliki Objective-C, chce przekonwertować wywołania metody tak:Czy można Uncomrustify wyrównać dwukropki w wywołaniach metody Object-C?

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

do tego:

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

wolę pierwszą wersję, z dwukropkiem wyrównane. Czy istnieje opcja w pliku konfiguracyjnym uncrustify, która może obsługiwać to, co chcę, lub czy w przypadku nieulepszania po prostu nie obsługuje wyrównanych dwukropków?

Jeśli nieuprawnienie nie może wyrównać dwukropków, czy istnieje sposób, aby zapobiec wyrównywaniu dwukropków, które sam wyrównałem?

Aktualizacja:

mmc zauważa, że ​​ta funkcja była dostępna w repozytorium svn jako Uncrustify budowy 1581 Jest w Uncrustify 0,54. Ustaw align_oc_msg_colon = true w pliku konfiguracyjnym, aby go włączyć.

Dalsze Aktualizacja

Dla ludzi, którzy znaleźli tę odpowiedź w przyszłość: nazwa preferencji w pliku .cfg została zmieniona. Teraz jest align_oc_msg_colon_span= 1, aby uzyskać opisane powyżej zachowanie. Istnieje również teraz align_oc_decl_colon = true, który zrobi rzeczową nazwę dla deklaracji wielowierszowych.

+0

Występuje błąd w bieżącej wersji (0.59), w której te opcje nie działają zgodnie z oczekiwaniami. Zobacz moją odpowiedź stackoverflow.com/a/11187820/253098 – SystematicFrank

Odpowiedz

10

Grałem około z tym przez jakiś czas w nocy, oraz (choć nie sądzę, że to zasługuje na nagrodę) odpowiedź na oba pytania brzmi „nie, obecne wersje (.53) Un -rustify nie robią tego. "

Sprawdziłem nawet, czy napisać łatkę, aby zrobić dokładnie to (bo ja też tego chcę) i po obejrzeniu źródła Uncrustify, i doszedłem do wniosku, że zajęłoby to znacznie więcej czasu, niż miałem do dyspozycji, aby dowiedzieć się, gdzie wstawić łatka do osiągnięcia "wieloliniowego wyrównania dwukropka w komunikacie" zamiast "wieloliniowego wyrównania wiadomości" Wydaje się, że nastąpiły pewne ulepszenia w analizie Objective-C w ostatnich łatkach.

Miałem taką nadzieję, że ktoś odpowie na to pytanie. Bardzo chciałem też wiedzieć.

UWAGA: Dla ludzi, którzy znaleźli tę odpowiedź w przyszłość: Nazwą preferencji w pliku .cfg została zmieniona. Teraz jest to align_oc_msg_colon_span = 1, aby uzyskać opisane powyżej zachowanie. Istnieje również teraz align_oc_decl_colon, który zrobi nazwę rzeczy dla deklaracji wielowierszowych.

+0

Mam nadzieję, że zrobię łatkę w swoim bogatym wolnym czasie. Nie wiem, kiedy to będę miał. –

+1

Możesz nie chcieć przeszkadzać ... Wygląda na to, że nadchodzi. Uncjrustacja .53 była wersja 1571 w svn. Obecne w jego SourceForge svn jest 1581. Build 1581 wydaje się być w trakcie (może nie być kompletny, nie pobrałem i skompilowałem) dodając nową opcję dla Celu C o nazwie "align_oc_msg_colon." Nie wiem o tobie, ale myślę, że to brzmi niezwykle obiecująco.Teraz jestem gotowy spróbować zbudować 1581, aby sprawdzić, czy rzeczywiście działa. – mmc

+2

Wydaje się, że działa ... głównie. Wydaje się, że nie chcemy, aby jakakolwiek część komunikatu rozciągała się na lewo od nawiasu otwierającego na poprzedniej linii. 90% czasu, to jest w porządku. Pozostałe 10% umieszcza spacje między nazwą obiektu a pierwszym (segmentu? Nazwa parametru?) Wiadomości. Nie podoba mi się to. Mam wrażenie, że można go wyłączyć, ale nie znalazłem jeszcze odpowiedniej opcji. – mmc

0

Próbowałaś:

align_var_def_colon=true 
+0

Tak. Nie pomogło. –

Powiązane problemy