Szerokość wcięcia
Ogólna szerokość wcięcia wynosi 4 znaki odstępu, ale w blokach zawierających wartości umieszczane w bloku nawiasów klamrowych (np. definicja “enum”, “struct”, przypisanie wartości do “struct” lub tablicy) albo na liście parametrów procedury wynosi 2 znaki odstępu.
Linie parametrów, warunków i wartości w blokach
Jeśli w bloku wartości znajdują się wyrażenia oddzielone operatorami tego samego rodzaju (np. przecinkami, średnikami), to umieszcza się je w osobnych liniach, na początku których znajduje się znak rozdzielający (a nie na końcu linii).
Procedury i wartości umieszczone w blokach
Parametry deklaracji procedury są umieszczane w osobnych liniach. Przy czym w pierwszej linii (linii z nazwą procedury) zwykle jest umieszczany parametr obiektu, do którego odwołuje się procedura. Jeśli nie ma takiego parametru, to lista parametrów rozpoczyna się od drugiej linii (poniżej nazwy procedury). Natomiast rozpoczynający nawias okrągły jest zawsze w linii z nazwą procedury. Na przykład:
_export
B
E_flow_Q_timer_I_wait( I id
, N *lost_count
){ struct E_flow_Q_task_Z *task = E_mem_Q_tab_R( E_base_S->E_flow_Q_task_S, E_base_S->E_flow_Q_task_S_current );
_export
P
E_mem_Q_blk_M_tab(
N u
, N n
){ return E_mem_Q_blk_M_align_tab( u, n, ~0 );
}
Wartości w blokach otoczonych nawiasami klamrowymi są umieszczane w osobnych liniach ze znakiem rozdzielającym umieszczonym na początku linii, jeśli jest to znak rozdzialący (np. przecinek w języku C albo średnik w CSS, ale nie średnik w C). Na przykład:
struct sigaction sa = { .sa_handler = SIG_DFL , .sa_flags = 0 };
N8 *bitmap = ( N8 [] )
{ 0, 0, 0
, 0, 0, 0
, 0, 0, 0
};
.info { position: fixed ; z-index: 1000 ; top: 0 }
struct E_mem_Q_blk_Z_allocated { Pc p; N n; N u; };
Instrukcje warunkowe i pętle
Kolejne warunki w instrukcjach warunkowych i pętlach są umieszczane w kolejnych liniach, na których początku warunku jest operator logiczny “&&” lub “||”.
Jeśli pojawiają się nawiasy, które grupują warunki, to linie tych warunków (razem ze znakami operatora logicznego) są wcięte o 2 znaki odstępu dla każdej zagnieżdżonej grupy narastająco.
Okrągłe nawiasy rozpoczynające grup warunków są w pierwszej linii grupy. Jeśli od razu rozpoczyna się więcej niż jedna grupa, to okrągłe nawiasy rozpoczynające są sklejane z nawiasem rozpoczynającym pierwszej grupy.
Okrągłe nawiasy zamykające grup warunków znajdują się w odpowiądających im wcięciach nawiasów rozpoczynających w osobnej linii. Jednak na końcu warunków w instrukcji warunkowej okrągłe nawiasy zamykające są sklejane w jednym wierszu z wcięciem odpowiadającym instrukcji warunkowej lub pętli rozpoczynającej listę warunków.
Na przykład:
if( x_button->time - xbutton_time > display->pointer_button_C_release_timeout
|| ( !U_R( display->mode, drag )
&& display->focus_S_window_id != window_id
))
U_L( display->state, pointer_S_click_valid );
if(((( x_key->state & XCB_MOD_MASK_SHIFT ) && (( x_key->state & XCB_MOD_MASK_LOCK ) == 0 )) || ((( x_key->state & XCB_MOD_MASK_SHIFT ) == 0 ) && ( x_key->state & XCB_MOD_MASK_LOCK )) ) && !keysym ) { xcb_keysym_t keysym_ = E_gui_xcb_Q_display_R_keysym( display, x_key->detail, modifier - 1 );
Nawiasy klamrowe
Nawias rozpoczynający umieszcza się w pierwszej linii bloku, przed względnym wcięciem pierwszej instrukcji. Na przykład:
if( !~report_id ) { report_id = E_mem_Q_tab_I_add( E_base_S->E_flow_Q_report_S ); if( (S)report_id < 0 ) return (S)report_id; report = E_mem_Q_tab_R( E_base_S->E_flow_Q_report_S, report_id ); report->uid = uid; report->reported_count = 0; }
Jeśli jest to pierwsza linia procedury, to nawias klamrowy łączy się z zamykającym listę parametrów nawiasem okrągłym. Na przykład:
_export
I
E_flow_Q_report_M( N uid
){ struct E_flow_Q_report_Z *report;
Odstępy wewnątrz nawiasów
Ogólnie pomiędzy otwierającym i zamykającym nawiasem okrągłym lub kwadratowym a parametrem umieszcza się jeden znak odstępu. Jednak jeśli parametr składa się tylko z małych liter albo tylko z dużych liter, albo tylko z cyfr (z ewentualnym prefiksem systemu liczbowego), to te odstępy się pomija. Na przykład:
E_flow_Q_task_I_switch( task->run_state_object );
if(r) return r;
C s[ 6 + l + 1 ]; *( &s[0] + 6 + l ) = '\0';
Jeśli odstęp wewnątrz nawiasu miałby być przed lub po tym samym znaku nawiasu, to taki odstęp się pomija czyli skleja nawiasy. Na przykład:
V0_( munmap( task->stack, subtract ));
if( !~(N)( shm = E_mem_Q_shared_Q_blk_M( shm_id ))) { E_mem_Q_shared_W( shm_id ); return ~0; }
