# Style guidelines for `configure.ac` Version `2019.08.09.21.54` ## Purpose Define a small set of rules for style used in Expat's `configure.ac` so that we have a commen ground and something documented to refer to in pull requests, when style is off. ## 1. Quoting Quote "everything": ``` AC_DEFINE([HAVE_FOO], [1], [Define to 1 if you have the `foo' function.]) ``` ## 2. Parameter indentation Parameters to functions either go - (a) on the the same line or - (b) align vertically or - (c) go to the next line, with the first character indented 2 spaces more than the first *non-`[`*(!) parent level character, i.e. 2 or [3 columns further right](https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Autoconf-Language.html): ``` CALL([parameter], [parameter], [parameter]) CALL([parameter], [parameter], [parameter]) CALL([parameter], [parameter], [CALL( [CALL()])]) ^ ^ | 2 + 3(!) spaces 2 spaces ``` ## 3. Consecutive call / multi-line indentation Consecutive calls to macros (= on the the same nesting level) are aligned vertically: ``` CALL([parameter], [CALL([]) CALL([]) CALL([])]) ``` ## 4. Closing bracket placement Closing braces accumulate on the same line in general... ``` CALL( [CALL([CALL([])], [CALL([])]) CALL([])]) ``` ...but can go a new line (e.g. with `AC_LANG_SOURCE`) to match parameter indentation rule (2), i.e. either ``` CALL([CALL([ one two ])], [CALL()]) ``` .. or .. ``` CALL([CALL([ one two ])], [CALL()]) ``` EOF