X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=devel%2FSTYLE;h=b18a9573c19abb6042bbe2bf29c367453759d0e5;hp=0792ba129e240eb1818b1cc2d98f1b16746964f0;hb=7ad7cfbff232431377562271901ee00202bf0bd0;hpb=ae459a3f4ca0e24cb2012bc4af7af3aea4731fec diff --git a/devel/STYLE b/devel/STYLE index 0792ba12..b18a9573 100644 --- a/devel/STYLE +++ b/devel/STYLE @@ -25,9 +25,7 @@ The following nonsense code demonstrates many aspects of the style: 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; @@ -45,8 +43,9 @@ function (param_type param, param_type param) - 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. @@ -54,21 +53,36 @@ function (param_type param, param_type param) 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. @@ -92,3 +106,13 @@ libnotmuch conventions * 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.