]> git.notmuchmail.org Git - notmuch/blobdiff - devel/STYLE
emacs: Add new option notmuch-search-hide-excluded
[notmuch] / devel / STYLE
index 094f71d1908f75b48f3d1ae77a4fbae9d260acb2..b18a9573c19abb6042bbe2bf29c367453759d0e5 100644 (file)
@@ -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,25 +53,46 @@ 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.
 
+CLI conventions
+---------------
+
+* Any changes to the JSON output format of search or show need an
+  accompanying change to devel/schemata.
+
 libnotmuch conventions
 ----------------------------------
 
@@ -86,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.