There's been some discussion on IRC about using the indent program to reformat the sources into something consistent from file to file. I'd like to propose the following options as a starting point for discussion. I think some of these options will be agreed upon by all, and I'm sure others will be contentious. :-)
Indentation -nut No tabs. Indentation is done with spaces. -i4 Add four spaces for each indent level -ci4 Continuation lines are indented by four spaces -cli4 Case labels are indented by four spaces -ppi4 Nested pre-processor defines are indented by four spaces -nbc Do not force newlines after commas in declarations (default) -nbfda Don´t put each argument in a function declaration on a separate line (default) -lp Line up continued lines at parentheses (default) -psl Put the type of a procedure on the line before its name. -bbo Prefer to break long lines before boolean operators. Blank Lines -nsob Do not swallow optional blank lines (default) -bad Force a blank line after a declaration. -bbb Force a blank line before a block comment. -bap Force blank lines after procedure bodies. Comments -fca Reformat all comments except those starting in column 1 -fc1 Reformat comments starting in column 1 -sc Continuation lines in a comments start with a '*' Statements -npcs Do not put space after the function in function calls. -nprs Do not put a space after every ´(´ and before every ´)´. -ncs Do not put a space after cast operators. -saf Put a space after each for. -sai Put a space after each if. -saw Put a space after each while. -brs Put braces on struct declaration line. -br Put braces on line with if, etc. -ce Cuddle else and preceeding `}´. -cdw Cuddle while of do {} while; and preceeding `}´. Other -l80 Line width of 80. Attached is a small source file formatted with the above options. Let the discussion begin. :-) Of the above list of options, the ones I feel strongly about are lining up continued lines at parentheses (-lp), the space-after-keyword group (saf, -sai, -saw), and the cuddling-of-braces group (-br, -ce, -cdw). I feel most strongly about this last group. The parts of an if/then/else statement are clearly delineated by the indentation of the keywords vs. the indentation of the code blocks. I believe it a complete waste to additionally add vertical separation my making the "else" take up three lines. One for a closing parenthesis, one for the word "else", and one for an opening parenthesis. Maybe that's just me. What do the rest of the developers think? David
#ifdef A # ifdef B # define C # else # define D # endif #else # define E #endif /*** * * ***/ struct foo { int i, j; char *s; }; char *a; char *b; /* kssf */ char *g; /* * Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod * tempor incididunt ut labore et dolore magna aliqua. . */ static void example(int foo, char *bar, ExampleType * aligned_here) { Foo *bar = { 1, "foo" }; /* lorem ipsum */ for (int i = 0; i < 10; i++) { if (is_is_a_reasonable_value(i) && (i < 10 || i < 11)) { // ... } else { break; } } this_is_a_long_function_name(and_this, function, has_a_very, large, number_of, arguments); switch (foobar) { case 0: z = is_is_a_reasonable_value(i); break; default: z = !is_is_a_reasonable_value(i); break; } while (TRUE) { // ... } do { // ... } while (TRUE); } static void another_example(int and_this, char *function, ExampleType * has_a_very, char *large, double number_of, int arguments) { }
_______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel