If you would like to contribute code to the Subversion project, please read this first. We're using ANSI C, and following the GNU coding standards. Emacs users can just load svn-dev.el (most source files here will load it automatically, if `enable-local-eval' is set appropriately) to get the right indentation behavior. Here is an example demonstrating some of the GNU formatting guidelines, but see http://www.gnu.org/prep/standards.html for the full story. char * /* func type on own line */ argblarg (char *arg1, int arg2) /* func name on own line */ { /* first brace on own line */ if ((some_very_long_condition && arg2) /* indent 2 cols */ || remaining_condition) /* new line before operator */ { /* brace on own line, indent 2 */ arg1 = some_func (arg1, arg2); /* space before opening paren */ } /* close brace on own line */ else { do /* format do-while like this */ { arg1 = another_func (arg1); } while (*arg1); } } In general, be generous with parentheses even when you're sure about the operator precedence, and be willing to add spaces and newlines to avoid "code crunch". Don't worry too much about vertical density; it's more important to make code readable than to fit that extra line on the screen. Other Conventions: ================== In addition to the GNU standards, Subversion uses these conventions: * Use only spaces for indenting code, never tabs. Tab display width is not standardized enough, and anyway it's easier to manually adjust indentation that uses spaces. * Stay within 80 columns, the width of a minimal standard display window. * Signify internal variables by two underscores after the prefix. That is, when a symbol must (for technical reasons) reside in the global namespace despite not being part of a published interface, then use two underscores following the module prefix. For example: svn_fs_get_ver_prop () /* Part of published API. */ svn_fs__parse_props () /* For internal use only. */ * Put this comment at the bottom of new source files to make Emacs automatically load svn-dev.el: /* * local variables: * eval: (load-file "svn-dev.el") * end: */ (This assumes the C file is located in subversion/subversion/, where svn-dev.el is.)