static some_type
function (param_type param, param_type param)
{
- int i;
-
- for (i = 0; i < 10; i++) {
+ for (int i = 0; i < 10; i++) {
int j;
j = i + 10;
- likewise, there is a space following keywords such as if and while
- every binary operator should have space on either side.
-* No trailing whitespace. Please enable the standard pre-commit hook
- in git (or an equivalent hook).
+* No trailing whitespace. Please enable the standard pre-commit hook in git
+ (or an equivalent hook). The standard pre-commit hook is enabled by simply
+ renaming file '.git/hooks/pre-commit.sample' to '.git/hooks/pre-commit' .
* The name in a function prototype should start at the beginning of a line.
if/for/while test) and are preceded by a space. The opening brace of
functions is the exception, and starts on a new line.
-* Comments are always C-style /* */ block comments. They should start
- with a capital letter and generally be written in complete
- sentences. Public library functions are documented immediately
- before their prototype in lib/notmuch.h. Internal functions are
- typically documented immediately before their definition.
+* Opening parens also cuddle, even if the first argument does not fit
+ on the same line.
+
+* Ternary operators that span a line should be parenthesized like as
+ "a ? (\n b ) : c". This is mainly to keep the indentation tools
+ happy.
+
+* Comments are always C-style /* */ block comments, with a leading *
+ each line. They should start with a capital letter and generally be
+ written in complete sentences. Public library functions are
+ documented immediately before their prototype in lib/notmuch.h.
+ Internal functions are typically documented immediately before their
+ definition.
* Code lines should be less than 80 columns and comments should be
wrapped at 70 columns.
+* Variable declarations should be at the top of a block; C99 style
+ control variable declarations in for loops are also OK.
+
Naming
------
* Use lowercase_with_underscores for function, variable, and type
names.
+* Except for variables with extremely small scope, and perhaps loop
+ indices, when naming variables and functions, err on the side of
+ verbosity.
+
* All structs should be typedef'd to a name ending with _t. If the
struct has a tag, it should be the same as the typedef name, minus
the trailing _t.
* Code which needs to be accessed from both the CLI and from
libnotmuch should be factored out into libutil (under util/).
+
+* Deprecated functions should be marked with the NOTMUCH_DEPRECATED
+ macro which generates run time warnings with gcc and clang. In order
+ not to confuse doxygen this should go at the beginning of the
+ declaration like:
+
+ NOTMUCH_DEPRECATED(major,minor) notmuch_status_t notmuch_dwim(void *arg);
+
+ The @deprecated doxygen command can be used to generate markup in
+ the API docs.