Я полагаю, что документ, на который вы ссылаетесь, является стандартом кодирования ядра Linux:
https://computing.llnl.gov/linux/slurm/coding_style.pdf
Лично я предпочитаю четыре пробела, прямо вверх. Я стараюсь сохранить его до 79 символов в строке, если только мне это не нравится или нет длинной строки. Когда в скобках указаны операторы или комментарии, я выравниваю начало до следующей позиции табуляции в первой строке (или, если нужно, за следующим уровнем отступа), а затем выравниваю после этого. Вот пример моего кода (взят из некоторой случайной кодовой базы, над которой я работаю). Обратите внимание, что я делаю с этим многострочным условным выражением.
void R_RecursiveWorldNode (mnode_t *node, int clipflags){
msurface_t *surf;
static vec3_t oldviewangle, oldorigin;
vec3_t deltaorigin, net_movement_angle;
float len_deltaorigin;
float movement_view_diff; //difference between the net movement
//angle and the view angle (0 when
//movement during frame was straight
//ahead.)
VectorSubtract (r_origin, oldorigin, deltaorigin);
len_deltaorigin = abs(len_deltaorigin);
VectorCopy (deltaorigin, net_movement_angle);
VectorNormalize(net_movement_angle);
VectorSubtract (net_movement_angle, vpn, net_movement_angle);
movement_view_diff = abs (movement_view_diff);
// if we have either a new PVS or a significant amount of
// movement/rotation, we should actually recurse the BSP again.
if ( (r_oldviewcluster != r_viewcluster && r_viewcluster != -1) ||
len_deltaorigin > 12.0 || vpn[YAW] != oldviewangle[YAW] ||
movement_view_diff > 1.0 ) {
VectorCopy (vpn, oldviewangle);
VectorCopy (r_origin, oldorigin);
r_ordinary_surfaces = NULL;
r_alpha_surfaces = NULL;
r_special_surfaces = NULL;
__R_RecursiveWorldNode (node, clipflags);
}
surf = r_ordinary_surfaces;
while (surf){
GL_RenderLightmappedPoly( surf );
surf = surf->ordinarychain;
}
}
Я думаю, это связано с тем, что я программист на Python. Это эквивалент C по умолчанию для схемы отступов в редакторе IDLE, которую я часто использовал.