|
|
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.