|
|
1.1 ! root 1: .\" Copyright (c) 1983 Regents of the University of California. ! 2: .\" All rights reserved. The Berkeley software License Agreement ! 3: .\" specifies the terms and conditions for redistribution. ! 4: .\" ! 5: .\" @(#)indent.1 6.4 (Berkeley) 9/10/85 ! 6: .\" ! 7: .TH INDENT 1 "September 10, 1985" ! 8: .UC 5 ! 9: .SH NAME ! 10: indent \- indent and format C program source ! 11: .SH SYNOPSIS ! 12: .in +\w'\fBindent \fR'u ! 13: .ti -\w'\fBindent \fR'u ! 14: \fBindent \fR [ \fIinput-file\fR [ \fIoutput-file\fR ] ] ! 15: [\ \fB\-bad\fR\ |\ \fB\-nbad\fR\ ] ! 16: [\ \fB\-bap\fR\ |\ \fB\-nbap\fR\ ] ! 17: [\ \fB\-bbb\fR\ |\ \fB\-nbbb\fR\ ] ! 18: [\ \fB\-bc\fR\ |\ \fB\-nbc\fR\ ] ! 19: [\ \fB\-bl\fR\ |\ \fB\-br\fR\ ] ! 20: [\ \fB\-c\fIn\fR\ ] ! 21: [\ \fB\-cd\fIn\fR\ ] ! 22: [\ \fB\-cdb\fR\ |\ \fB\-ncdb\fR\ ] ! 23: [\ \fB\-ce\fR\ |\ \fB\-nce\fR\ ] ! 24: [\ \fB\-ci\fIn\fR\ ] ! 25: [\ \fB\-cli\fIn\fR\ ] ! 26: [\ \fB\-d\fIn\fR\ ] ! 27: [\ \fB\-di\fIn\fR\ ] ! 28: [\ \fB\-dj\fR\ |\ \fB\-ndj\fR\ ] ! 29: [\ \fB\-ei\fR\ |\ \fB\-nei\fR\ ] ! 30: [\ \fB\-fc1\fR\ |\ \fB\-nfc1\fR\ ] ! 31: [\ \fB\-i\fIn\fR\ ] ! 32: [\ \fB\-ip\fR\ |\ \fB\-nip\fR\ ] ! 33: [\ \fB\-l\fIn\fR\ ] ! 34: [\ \fB\-lc\fIn\fR\ ] ! 35: [\ \fB\-lp\fR\ |\ \fB\-nlp\fR\ ] ! 36: [\ \fB\-npro\fR\ ] ! 37: [\ \fB\-pcs\fR\ |\ \fB\-npcs\fR\ ] ! 38: [\ \fB\-ps\fR\ |\ \fB\-nps\fR\ ] ! 39: [\ \fB\-psl\fR\ |\ \fB\-npsl\fR\ ] ! 40: [\ \fB\-sc\fR\ |\ \fB\-nsc\fR\ ] ! 41: [\ \fB\-sob\fR\ |\ \fB\-nsob\fR\ ] ! 42: [\ \fB\-st\fR\ ] ! 43: [\ \fB\-troff\fR\ ] ! 44: [\ \fB\-v\fR\ |\ \fB\-nv\fR\ ] ! 45: .SH DESCRIPTION ! 46: .IX indent "" "\fLindent\fP \(em format C source" ! 47: .IX "programming tools" "indent" "" "\fLindent\fP \(em format C source" ! 48: .IX "languages" "indent" "" "\fLindent\fP \(em format C source" ! 49: .IX "C programming language" "indent" "" "\fLindent\fP \(em format C source" ! 50: .IX "pretty printer" "indent" "" "\fLindent\fP \(em format C source" ! 51: .IX "format C programs" "" "format C programs \(em \fLindent\fP" ! 52: .IX "code formatter" "indent" "" "\fLindent\fP \(em format C source" ! 53: .IX "cb" "indent" "\fLcb\fP" "try \fLindent\fP \(em format C source" ! 54: .I Indent ! 55: is a \fBC\fR program formatter. It reformats the \fBC\fR program in the ! 56: \fIinput-file\fR according to the switches. The switches which can be ! 57: specified are described below. They may appear before or after the file ! 58: names. ! 59: .LP ! 60: \fBNOTE\fP: If you only specify an \fIinput-file\fR, the formatting is ! 61: done `in-place', that is, the formatted file is written back into ! 62: .I input-file ! 63: and a backup copy of ! 64: .I input-file ! 65: is written in the current directory. If ! 66: .I input-file ! 67: is named `/blah/blah/file', the backup file is named ! 68: .RI file .BAK. ! 69: .LP ! 70: If ! 71: .I output-file ! 72: is specified, ! 73: .I indent ! 74: checks to make sure it is different from ! 75: .IR input-file . ! 76: .SH OPTIONS ! 77: .LP ! 78: The options listed below control the formatting style imposed by ! 79: .IR indent . ! 80: .TP 15 ! 81: .BR \-bad , \-nbad ! 82: If ! 83: .B \-bad ! 84: is specified, a blank line is forced after every block of ! 85: declarations. Default: ! 86: .BR \-nbad . ! 87: .TP 15 ! 88: .BR \-bap , \-nbap ! 89: If ! 90: .B \-bap ! 91: is specified, a blank line is forced after every procedure body. Default: ! 92: .B \-nbap. ! 93: .TP 15 ! 94: .BR \-bbb , \-nbbb ! 95: If ! 96: .B \-bbb ! 97: is specified, a blank line is forced before every block comment. Default: ! 98: .B \-nbbb. ! 99: .TP 15 ! 100: .BR \-bc , \-nbc ! 101: If ! 102: .B \-bc ! 103: is specified, then a newline is forced after each comma in a declaration. ! 104: .B \-nbc ! 105: turns off this option. The default is ! 106: .BR \-nbc . ! 107: .TP 15 ! 108: .BR \-br , \-bl ! 109: Specifying ! 110: .B \-bl ! 111: lines up compound statements like this: ! 112: .ne 4 ! 113: .nf ! 114: .ft L ! 115: if (...) ! 116: { ! 117: code ! 118: } ! 119: .ft R ! 120: .fi ! 121: Specifying ! 122: .B \-br ! 123: (the default) makes them look like this: ! 124: .ne 3 ! 125: .nf ! 126: .ft L ! 127: if (...) { ! 128: code ! 129: } ! 130: .ft R ! 131: .fi ! 132: .LP ! 133: .TP 15 ! 134: .BI \-c n ! 135: The column in which comments on code start. The default is 33. ! 136: .TP 15 ! 137: .BI \-cd n ! 138: The column in which comments on declarations start. The default ! 139: is for these comments to start in the same column as those on code. ! 140: .TP 15 ! 141: .BI \-cdb , \-ncdb ! 142: Enables (disables) the placement of comment delimiters on blank lines. With ! 143: this option enabled, comments look like this: ! 144: .nf ! 145: .ft L ! 146: .ne 3 ! 147: /* ! 148: * this is a comment ! 149: */ ! 150: .ft R ! 151: .fi ! 152: Rather than like this: ! 153: .nf ! 154: .ft L ! 155: /* this is a comment */ ! 156: .ft R ! 157: .fi ! 158: This only affects block comments, not comments to the right of ! 159: code. The default is ! 160: .BR \-cdb . ! 161: .TP 15 ! 162: .BI \-ce , \-nce ! 163: Enables (disables) forcing `else's to cuddle up to the immediately preceding ! 164: `}'. The default is ! 165: .BR \-ce . ! 166: .TP 15 ! 167: .BI \-ci n ! 168: Sets the continuation indent to be \fIn\fR. Continuation ! 169: lines will be indented that far from the beginning of the first line of the ! 170: statement. Parenthesized expressions have extra indentation added to ! 171: indicate the nesting, unless \fB\-lp\fR is in effect. ! 172: \fB\-ci\fR defaults to the same value as \fB\-i\fR. ! 173: .TP 15 ! 174: .BI \-cli n ! 175: Causes case labels to be indented ! 176: .I n ! 177: tab stops to the right of the containing \fBswitch\fR statement. ! 178: \fB\-cli0.5\fR causes case labels to be indented half a tab stop. The ! 179: default is ! 180: .BR \-cli0 . ! 181: (This is the only option that takes a fractional argument.) ! 182: .TP 15 ! 183: .BI \-d n ! 184: Controls the placement of comments which are not to the ! 185: right of code. Specifying ! 186: .B \-d1 ! 187: means that such comments are placed one indentation level to the ! 188: left of code. The default ! 189: .B \-d0 ! 190: lines up these comments with the code. See the section on comment ! 191: indentation below. ! 192: .TP 15 ! 193: .BI \-di n ! 194: Specifies the indentation, in character positions, from a declaration keyword ! 195: to the following identifier. The default is ! 196: .BR \-di16 . ! 197: .TP 15 ! 198: .BR \-dj , \-ndj ! 199: .B \-dj ! 200: left justifies declarations. ! 201: .B \-ndj ! 202: indents declarations the same as code. The default is ! 203: .BR \-ndj . ! 204: .TP 15 ! 205: .BI \-ei , \-nei ! 206: Enables (disables) special ! 207: .B else-if ! 208: processing. If enabled, ! 209: .BR if "s" ! 210: following ! 211: .BR else "s" ! 212: will have the same indentation as the preceding ! 213: .B if ! 214: statement. The default is ! 215: .BR \-ei . ! 216: .TP 15 ! 217: .BI \-fc1 , \-nfc1 ! 218: Enables (disables) the formatting of comments that start in column 1. ! 219: Often, comments whose leading `/' is in column 1 have been carefully ! 220: hand formatted by the programmer. In such cases, \fB\-nfc1\fR should be ! 221: used. The default is \fB\-fc1\fR. ! 222: .TP 15 ! 223: .BI \-i n ! 224: The number of spaces for one indentation level. The default is 8. ! 225: .TP 15 ! 226: .BI \-ip , \-nip ! 227: Enables (disables) the indentation of parameter declarations from the left ! 228: margin. The default is ! 229: .BR \-ip . ! 230: .TP 15 ! 231: .BI \-l n ! 232: Maximum length of an output line. The default is 78. ! 233: .TP 15 ! 234: .BI \-lp , \-nlp ! 235: Lines up code surrounded by parenthesis in continuation lines. If a line ! 236: has a left paren which is not closed on that line, then continuation lines ! 237: will be lined up to start at the character position just after the left ! 238: paren. For example, here is how a piece of continued code looks with ! 239: \fB\-nlp\fR in effect: ! 240: .ne 2 ! 241: .nf ! 242: .ft L ! 243: p1 = first_procedure(second_procedure(p2, p3), ! 244: third_procedure(p4, p5)); ! 245: .ft R ! 246: .fi ! 247: .ne 5 ! 248: With \fB\-lp\fR in effect (the default) the code looks somewhat clearer: ! 249: .nf ! 250: .ft L ! 251: .ta \w' p1 = first_procedure('u ! 252: p1 = first_procedure(second_procedure(p2, p3), ! 253: third_procedure(p4, p5)); ! 254: .ft R ! 255: .fi ! 256: .ne 5 ! 257: Inserting two more newlines we get: ! 258: .nf ! 259: .ft L ! 260: .ta \w' p1 = first_procedure('u +\w'second_procedure('u ! 261: p1 = first_procedure(second_procedure(p2, ! 262: p3), ! 263: .ta \w' p1 = first_procedure('u +\w'third_procedure('u ! 264: third_procedure(p4, ! 265: p5)); ! 266: .ft R ! 267: .fi ! 268: .TP 15 ! 269: .B \-npro ! 270: Causes the profile files, `./.indent.pro' and `~/.indent.pro', to be ignored. ! 271: .TP 15 ! 272: .BR \-pcs , \-npcs ! 273: If true (\fB\-pcs\fR) all procedure calls will have a space inserted between ! 274: the name and the `('. The default is ! 275: .BR \-npcs . ! 276: .TP 15 ! 277: .BR \-ps , \-nps ! 278: If true (\fB\-ps\fR) the pointer following operator `\->' will be ! 279: surrounded by spaces on either side. The default is ! 280: .BR \-nps . ! 281: .TP 15 ! 282: .BR \-psl , \-npsl ! 283: If true (\fB\-psl\fR) the names of procedures being defined are placed in ! 284: column 1 \- their types, if any, will be left on the previous lines. The ! 285: default is ! 286: .BR \-psl . ! 287: .TP 15 ! 288: .BR \-sc , \-nsc ! 289: Enables (disables) the placement of asterisks (`*'s) at the left edge of all ! 290: comments. The default is ! 291: .BR \-sc . ! 292: .TP 15 ! 293: .BR \-sob , \-nsob ! 294: If ! 295: .B \-sob ! 296: is specified, indent will swallow optional blank lines. You can use this to ! 297: get rid of blank lines after declarations. Default: ! 298: .BR \-nsob . ! 299: .TP 15 ! 300: .B \-st ! 301: Causes ! 302: .B indent ! 303: to take its input from stdin, and put its output to stdout. ! 304: .TP 15 ! 305: .BI \-T typename ! 306: Adds ! 307: .I typename ! 308: to the list of type keywords. Names accumulate: ! 309: .B \-T ! 310: can be specified more than once. You need to specify all the typenames that ! 311: appear in your program that are defined by \fBtypedef\fRs \- nothing will be ! 312: harmed if you miss a few, but the program won't be formatted as nicely as ! 313: it should. This sounds like a painful thing to have to do, but it's really ! 314: a symptom of a problem in C: \fBtypedef\fR causes a syntactic change in the ! 315: language and \fIindent\fR can't find all \fBtypedef\fRs. ! 316: .TP 15 ! 317: .B \-troff ! 318: Causes ! 319: .B indent ! 320: to format the program for processing by troff. It will produce a fancy ! 321: listing in much the same spirit as ! 322: .BR vgrind . ! 323: If the output file is not specified, the default is standard output, ! 324: rather than formatting in place. ! 325: .TP 15 ! 326: .BR \-v , \-nv ! 327: .B \-v ! 328: turns on `verbose' mode; ! 329: .B \-nv ! 330: turns it off. When in verbose mode, ! 331: .I indent ! 332: reports when it splits one line of input into two or more lines of output, ! 333: and gives some size statistics at completion. The default is ! 334: .BR \-nv . ! 335: .SH "FURTHER DESCRIPTION" ! 336: .LP ! 337: You may set up your own `profile' of defaults to ! 338: .I indent ! 339: by creating a file called ! 340: .BI . indent . pro ! 341: in either your login directory and/or the current directory and including ! 342: whatever switches you like. Switches in `.indent.pro' in the current ! 343: directory override those in your login directory (with the exception of ! 344: .B -T ! 345: type definitions, which just accumulate). If ! 346: .I indent ! 347: is run and a profile file exists, then it is read to set up the program's ! 348: defaults. The switches should be separated by spaces, tabs or newlines. ! 349: Switches on the command line, however, override profile switches. ! 350: .LP ! 351: .B Comments ! 352: .LP ! 353: .IR "`Box' comments" . ! 354: .I Indent ! 355: assumes that any comment with a dash or star immediately after the start of ! 356: comment (that is, `/*\-' or `/**') is a comment surrounded by a box of stars. ! 357: Each line of such a comment is left unchanged, except that its indentation ! 358: may be adjusted to account for the change in indentation of the first line ! 359: of the comment. ! 360: .LP ! 361: .IR "Straight text" . ! 362: All other comments are treated as straight text. ! 363: .I Indent ! 364: fits as many words (separated by blanks, tabs, or newlines) on a ! 365: line as possible. Blank lines break paragraphs. ! 366: .LP ! 367: .B Comment indentation ! 368: .LP ! 369: If a comment is on a line with code it is started in the `comment column', ! 370: which is set by the ! 371: .BI \-c n ! 372: command line parameter. Otherwise, the comment is started at ! 373: .I n ! 374: indentation levels less than where code is currently being placed, where ! 375: .I n ! 376: is specified by the ! 377: .BI \-d n ! 378: command line parameter. If the code on a line extends past the comment ! 379: column, the comment starts further to the right, and the right margin may be ! 380: automatically extended in extreme cases. ! 381: .LP ! 382: .B Preprocessor lines ! 383: .LP ! 384: In general, \fIindent\fR leaves preprocessor lines alone. The only ! 385: reformatting that it will do is to straighten up trailing comments. It ! 386: leaves embedded comments alone. Conditional compilation ! 387: (\fB#ifdef...#endif\fR) is recognized and \fIindent\fR attempts to correctly ! 388: compensate for the syntactic peculiarities introduced. ! 389: .LP ! 390: .B C syntax ! 391: .LP ! 392: \fIIndent\fR understands a substantial amount about the syntax of C, but it ! 393: has a `forgiving' parser. It attempts to cope with the usual sorts of ! 394: incomplete and misformed syntax. In particular, the use of macros like: ! 395: .nf ! 396: .ft L ! 397: #define forever for(;;) ! 398: .ft R ! 399: .fi ! 400: is handled properly. ! 401: .SH FILES ! 402: .DT ! 403: .br ! 404: \&./.indent.pro profile file ! 405: .br ! 406: ~/.indent.pro profile file ! 407: .SH BUGS ! 408: .I Indent ! 409: has even more switches than \fIls\fR. ! 410: .sp ! 411: .ne 5 ! 412: A common mistake that often causes grief is typing: ! 413: .nf ! 414: .ft L ! 415: indent *.c ! 416: .ft R ! 417: .fi ! 418: to the shell in an attempt to indent all the \fBC\fR programs in a directory. ! 419: This is probably a bug, not a feature.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.