Next: Disabling Formatting, Previous: Indentation, Up: Indent Program [Contents][Index]
With the option -ln, or --line-lengthn, it is possible to specify the maximum length of a line of C code, not including possible comments that follow it.
When lines become longer than the specified line length, GNU indent
tries to break the line at a logical place. This is new as of version 2.1
however and not very intelligent or flexible yet.
Currently there are three options that allow one to interfere with the algorithm that determines where to break a line.
The -bbo option causes GNU indent
to prefer to break
long lines before the boolean operators &&
and ||
. The
-nbbo option causes GNU indent
not have that
preference. For example, the default option -bbo (together
with --line-length60 and --ignore-newlines) makes code
look like this:
if (mask && ((mask[0] == '\0') || (mask[1] == '\0' && ((mask[0] == '0') || (mask[0] == '*')))))
Using the option -nbbo will make it look like this:
if (mask && ((mask[0] == '\0') || (mask[1] == '\0' && ((mask[0] == '0') || (mask[0] == '*')))))
The default -hnl, however, honours newlines in the input file by giving them the highest possible priority to break lines at. For example, when the input file looks like this:
if (mask && ((mask[0] == '\0') || (mask[1] == '\0' && ((mask[0] == '0') || (mask[0] == '*')))))
then using the option -hnl, or --honour-newlines, together with the previously mentioned -nbbo and --line-length60, will cause the output not to be what is given in the last example but instead will prefer to break at the positions where the code was broken in the input file:
if (mask && ((mask[0] == '\0') || (mask[1] == '\0' && ((mask[0] == '0') || (mask[0] == '*')))))
The idea behind this option is that lines which are too long, but are already
broken up, will not be touched by GNU indent
. Really messy code
should be run through indent
at least once using the
--ignore-newlines option though.
The -gts option affects how the gettext standard macros _()
and N_()
are treated. The default behavior (or the use of -ngts) causes indent to
treat them as it does other functions, so that a long string is broken like the following
example.
if (mask) { warning (_ ("This is a long string that stays together.")); }
With the -gts option, the underscore is treated as a part of the string, keeping
it tied to the string, and respecting the fact that gettext is unobtrusively providing
a localized string. This only works if _("
is together as a unit at the beginning
of the string and ")
is together as a unit at the end.
if (mask) { warning (_("This is a long string that stays together.")); }
Next: Disabling Formatting, Previous: Indentation, Up: Indent Program [Contents][Index]