2016-01-31 31 views
5

Chcę otwierać klocki za pomocą nawiasów klamrowych rozpoczynających się od nowej linii.Wcięcie bloku kodu (NSMallocBlock) (nawiasy automatycznie rozpoczynające się od nowej linii)

Przejdźmy od filozoficznej dyskusji na temat tego, czy jest to dobra decyzja, czy nie - regardless of 'where' and 'when', 'how' remains absolute.

Więc problem jest opisany poniżej:

enter image description here

Czy istnieje sposób, aby osiągnąć ten cel ?


Rozglądałem się od dłuższego czasu, ale nie znalazłem żadnych rozwiązań.

już jestem świadomy takich rzeczy jak:

  1. Snippet Edit - ten mały program pozwoli edytować fragmenty kodu domyślnego Xcode jest. W ten sposób będziesz mógł otwierać aparaty z nowej linii w swoich if, for, while itp. Jednak nie pozwala to na zmianę wcięcia bloku.

  2. Uncrustify - To może rozwiązać mój problem, ale nie wygląda na to, że łatwo go skonfigurować. I tylko formatuje kod po jest już napisany, zamiast formatowania "w drodze". Co więcej, nawet jeśli ustawię prawidłowo uncrustify, nadal będzie to dość powolne - potrzeba około 4 kliknięć myszy, aby sformatować blok, co jest czasochłonne.

Czy ktoś wie o jakichkolwiek innych rozwiązaniach?

EDIT:

Aby być bardziej konkretny, chcę blok być wcięty jak najszybciej pędzę ENTER na tym etapie:

enter image description here

+0

Xcode wymusza jeden określony styl. Nie możesz tego zmienić bez wtyczek. – Sulthan

+0

@Sulthan, znasz jakieś wtyczki, które mogą pomóc w rozwiązaniu problemu? – OlDor

+0

Problem polega na tym, że nie można ustawić typowych formaterów stylów nawet do formatowania w tym stylu. Styl jest tak specyficzny, że nikt nie wprowadził opcji, które by go umożliwiały. A to obejmuje pisanie Obj-C w innych IDE. – Sulthan

Odpowiedz

0

Najprostszym rozwiązaniem, które ja znalazłem to:

Pobierz Karabiner i zmienić private.xml (można również przeglądać dokumentację here)

swojej private.xml może wyglądać następująco:

<?xml version="1.0"?> 
<root> 
    <item> 
     <name>Command+Enter to complete single block</name> 
     <identifier>private.swap_cmnd+Enter_to_complete__single_block</identifier> 
     <autogen> 
      __KeyToKey__ 
      KeyCode::RETURN, ModifierFlag::COMMAND_L | ModifierFlag::NONE, 
      KeyCode::RETURN, 

      KeyCode::CURSOR_DOWN, 
      KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L, 
      KeyCode::DELETE, ModifierFlag::COMMAND_L, 
      KeyCode::BRACKET_RIGHT, ModifierFlag::SHIFT_L, 
      KeyCode::BRACKET_RIGHT, 
      KeyCode::SEMICOLON, 
      KeyCode::CURSOR_UP, 
      KeyCode::CURSOR_UP, 
      KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L, 
      KeyCode::CURSOR_LEFT, 
      KeyCode::RETURN, 
      KeyCode::CURSOR_DOWN, 
      KeyCode::CURSOR_DOWN, 
      KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L, 

      KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L, 
      KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L, 
      KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L, 

      KeyCode::I, ModifierFlag::CONTROL_L, 
      KeyCode::CURSOR_RIGHT, 
      KeyCode::CURSOR_UP, 
      KeyCode::CURSOR_LEFT, ModifierFlag::SHIFT_L, 
      KeyCode::TAB, 
     </autogen> 
    </item> 

    <item> 
     <name>Option+Enter to complete double block</name> 
     <identifier>private.swap_Option+Enter_to_complete_double_block</identifier> 
     <autogen> 
      __KeyToKey__ 
      KeyCode::RETURN, ModifierFlag::OPTION_L | ModifierFlag::NONE, 
      KeyCode::CURSOR_RIGHT, 
      KeyCode::RETURN, 
      KeyCode::CURSOR_UP, 
      KeyCode::CURSOR_LEFT, ModifierFlag::COMMAND_L, 
      KeyCode::TAB, 

      KeyCode::RETURN, 

      KeyCode::CURSOR_DOWN, 
      KeyCode::CURSOR_DOWN, 
      KeyCode::CURSOR_LEFT, ModifierFlag::COMMAND_L, 
      KeyCode::TAB, 
      KeyCode::RETURN, 
      KeyCode::DELETE, 
      KeyCode::CURSOR_DOWN, 
      KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L, 
      KeyCode::DELETE, ModifierFlag::COMMAND_L, 
      KeyCode::BRACKET_RIGHT, ModifierFlag::SHIFT_L, 
      KeyCode::BRACKET_RIGHT, 
      KeyCode::SEMICOLON, 
      KeyCode::CURSOR_UP, 
      KeyCode::CURSOR_UP, 
      KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L, 
      KeyCode::CURSOR_LEFT, 
      KeyCode::RETURN, 
      KeyCode::CURSOR_UP, 
      KeyCode::CURSOR_UP, 
      KeyCode::CURSOR_UP, 
      KeyCode::CURSOR_UP, 
      KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L, 
      KeyCode::CURSOR_LEFT, 
      KeyCode::RETURN, 
      KeyCode::CURSOR_DOWN, 
      KeyCode::CURSOR_DOWN, 
      KeyCode::CURSOR_DOWN, 
      KeyCode::CURSOR_DOWN, 
      KeyCode::CURSOR_DOWN, 
      KeyCode::CURSOR_DOWN, 
      KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L, 

      KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L, 
      KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L, 
      KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L, 
      KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L, 
      KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L, 
      KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L, 
      KeyCode::CURSOR_UP, ModifierFlag::SHIFT_L, 

      KeyCode::I, ModifierFlag::CONTROL_L, 
      KeyCode::CURSOR_RIGHT, 
      KeyCode::CURSOR_UP, 
      KeyCode::CURSOR_UP, 
      KeyCode::CURSOR_UP, 
      KeyCode::CURSOR_UP, 
      KeyCode::CURSOR_UP, 
      KeyCode::CURSOR_LEFT, ModifierFlag::COMMAND_L, 
      KeyCode::TAB, 
     </autogen> 
    </item> 
</root> 

Po wykonaniu tej czynności można teraz otworzyć blok, naciskając: + ENTER (zamiast tego naciśnięcia ENTER, po otwarciu bloku, naciśnij + ENTER). Oto preview (spowolnione, aby zobaczyć szczegóły).

Powyższe działa tylko z pojedynczymi blokami. Jeśli chcesz otworzyć dwa bloki naraz, możesz nacisnąć ALT + ENTER. Oto preview (spowolnione, aby zobaczyć szczegóły).

Oto preview z prędkością rzeczywistą:

Demo CountPages alpha

-2

nie sądzę jest sposób, aby zrobić to automatycznie po naciśnięciu ENTER.

Co może nie jest hit ENTER niech wypełni fragment, a następnie przejść przed { i uderzył ENTER ponownie. Xcode formatuje to tak, jak lubisz później.

-1

Wystarczy ręcznie można umieścić począwszy klamra do nowej linii, wówczas wcięcie powinno być dobre.