File: indent.1

package info (click to toggle)
manpages-ja 0.5.0.0.20221215%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 29,304 kB
  • sloc: perl: 161; makefile: 61
file content (1570 lines) | stat: -rw-r--r-- 62,164 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.\"
.\" Japanese Version
.\" Updated & Modified Mon May  3 07:00:19 JST 2004
.\"         by Yuichi SATO <ysato444@yahoo.co.jp>
.\" 
.TH INDENT 1
.SH 名前
indent \- 空白の挿入や削除を行い、C 言語プログラムの見栄えを変える。
.SH 書式
\fBindent \fP [options] [input\-files]
.sp
\fBindent \fP [options] [single\-input\-file] [\-o output\-file]
.sp
\fBindent \fP \-\-version
.SH 説明
この man ページはファイル \fIindent.texinfo\fP から生成した。 これは indent バージョン 2.2.9 用の「The
\fBindent\fP Manual」の 2.2.9 版 (2002 年 11 月 10 日版) である。

\fBindent\fP プログラムを使うとコードを読みやすくすることができる。 また、C 言語のコード記述を、
あるスタイルから別のスタイルに変換することもできる。

\fBindent\fP はたくさんある C 言語の文法を理解するが、 文法が不完全な部分や誤っている部分もできるだけ処理しようとする。

バージョン 1.2 以降では、GNU スタイルのインデントがデフォルトである。
.SH オプション

.TP  4
\fB\-bad\fP, \fB\-\-blank\-lines\-after\-declarations\fP
宣言の後に必ず空行を置く。
.br
「\fB空行\fP」セクションを参照すること。
.TP 
\fB\-bap\fP, \fB\-\-blank\-lines\-after\-procedures\fP
手続き本体の後に必ず空行を置く。
.br
「\fB空行\fP」セクションを参照すること。
.TP 
\fB\-bbb\fP, \fB\-\-blank\-lines\-before\-block\-comments\fP
ブロックコメントの前に必ず空行を置く。
.br
「\fB空行\fP」セクションを参照すること。
.TP 
\fB\-bbo\fP, \fB\-\-break\-before\-boolean\-operator\fP
長い行をブーリアン演算子の前で折り返す。
.br
「\fB長い行の折り返し\fP」セクションを参照すること。
.TP 
\fB\-bc\fP, \fB\-\-blank\-lines\-after\-commas\fP
宣言中のコンマの後に必ず改行を置く。
.br
「\fB宣言\fP」セクションを参照すること。
.TP 
\fB\-bl\fP, \fB\-\-braces\-after\-if\-line\fP
ブレースは \fBif\fP 等の次の行に置く。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-bli\fP\fIn\fP, \fB\-\-brace\-indent\fP\fIn\fP
ブレースを \fIn\fP 個のスペースでインデント付けする。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-bls\fP, \fB\-\-braces\-after\-struct\-decl\-line\fP
ブレースは \fBstruct\fP 宣言行の次の行に置く。
.br
「\fB宣言\fP」セクションを参照すること。
.TP 
\fB\-br\fP, \fB\-\-braces\-on\-if\-line\fP
ブレースは \fBif\fP 等がある行に置く。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-brs\fP, \fB\-\-braces\-on\-struct\-decl\-line\fP
ブレースは \fBstruct\fP 宣言行がある行に置く。
.br
「\fB宣言\fP」セクションを参照すること。
.TP 
\fB\-bs\fP, \fB\-\-Bill\-Shannon\fP, \fB\-\-blank\-before\-sizeof\fP
\fBsizeof\fP とその引き数の間に空白を置く。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-c\fP\fIn\fP, \fB\-\-comment\-indentation\fP\fIn\fP
コメントをコードの右のカラム \fIn\fP に置く。
.br
「\fBコメント\fP」セクションを参照すること。
.TP 
\fB\-cbi\fP\fIn\fP, \fB\-\-case\-brace\-indentation\fP\fIn\fP
case ラベルの後に、ブレースを \fIn\fP 個の空白でインデント付けする。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-cd\fP\fIn\fP, \fB\-\-declaration\-comment\-column\fP\fIn\fP
コメントを宣言の右のカラム \fIn\fP に置く。
.br
「\fBコメント\fP」セクションを参照すること。
.TP 
\fB\-cdb\fP, \fB\-\-comment\-delimiters\-on\-blank\-lines\fP
空行にコメント区切り文字を置く。
.br
「\fBコメント\fP」セクションを参照すること。
.TP 
\fB\-cdw\fP, \fB\-\-cuddle\-do\-while\fP
\fBdo {} while;\fP の while とその前の \`}\' を並べる。
.br
「\fBコメント\fP」セクションを参照すること。
.TP 
\fB\-ce\fP, \fB\-\-cuddle\-else\fP
else とその前の \`}\' を並べる。
.br
「\fBコメント\fP」セクションを参照すること。
.TP 
\fB\-ci\fP\fIn\fP, \fB\-\-continuation\-indentation\fP\fIn\fP
前の行から継続している場合には、\fIn\fP 個の空白でインデントする。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-cli\fP\fIn\fP, \fB\-\-case\-indentation\fP\fIn\fP
case ラベルを N 個の空白でインデントする。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-cp\fP\fIn\fP, \fB\-\-else\-endif\-column\fP\fIn\fP
\fB#else\fP 文と \fB#endif\fP 文の右のカラム \fIn\fP にコメントを置く。
.br
「\fBコメント\fP」セクションを参照すること。
.TP 
\fB\-cs\fP, \fB\-\-space\-after\-cast\fP
キャスト演算子の後に空白を置く。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-d\fP\fIn\fP, \fB\-\-line\-comments\-indentation\fP\fIn\fP
コードの右でないコメントは空白 \fIn\fP 個でインデントするように設定する。
.br
「\fBコメント\fP」セクションを参照すること。
.TP 
\fB\-bfda\fP, \fB\-\-break\-function\-decl\-args\fP
(関数) 宣言の全ての引き数の後で折り返す。
.br
「\fB宣言\fP」セクションを参照すること。
.TP 
\fB\-bfde\fP, \fB\-\-break\-function\-decl\-args\fP
(関数) 宣言の全ての引き数の前で折り返す。
.br
「\fB宣言\fP」セクションを参照すること。
.TP 
\fB\-di\fP\fIn\fP, \fB\-\-declaration\-indentation\fP\fIn\fP
変数をカラム \fIn\fP に置く。
.br
「\fB宣言\fP」セクションを参照すること。
.TP 
\fB\-fc1\fP, \fB\-\-format\-first\-column\-comments\fP
最初のカラムから始まるコメントを整形する。
.br
「\fBコメント\fP」セクションを参照すること。
.TP 
\fB\-fca\fP, \fB\-\-format\-all\-comments\fP
コメントの整形を全てを無効にしない。
.br
「\fBコメント\fP」セクションを参照すること。
.TP 
\fB\-gnu\fP, \fB\-\-gnu\-style\fP
GNU コーディングスタイルを使用する。これはデフォルトの動作である。
.br
「\fB一般的なスタイル\fP」セクションを参照すること。
.TP 
\fB\-hnl\fP, \fB\-\-honour\-newlines\fP
入力ファイルで改行が入っている位置で 長い行を折り返すようにする。
.br
「\fB長い行の折り返し\fP」セクションを参照すること。
.TP 
\fB\-i\fP\fIn\fP, \fB\-\-indent\-level\fP\fIn\fP
インデントのレベルを空白 \fIn\fP 個に設定する。
.br
「\fBインデント付け\fP」セクションを参照すること。
.TP 
\fB\-ip\fP\fIn\fP, \fB\-\-parameter\-indentation\fP\fIn\fP
古い形式の関数定義のパラメータ型を空白 \fIn\fP 個でインデントする。
.br
「\fBインデント付け\fP」セクションを参照すること。
.TP 
\fB\-kr\fP, \fB\-\-k\-and\-r\-style\fP
Kernighan & Ritchie コーディングスタイルを使用する。
.br
「\fB一般的なスタイル\fP」セクションを参照すること。
.TP 
\fB\-l\fP\fIn\fP, \fB\-\-line\-length\fP\fIn\fP
コメントでない行の最大の長さを \fIn\fP に設定する。
.br
「\fB長い行の折り返し\fP」セクションを参照すること。
.TP 
\fB\-lc\fP\fIn\fP, \fB\-\-comment\-line\-length\fP\fIn\fP
コメントを整形する最大の長さを \fIn\fP に設定する。
.br
「\fBコメント\fP」セクションを参照すること。
.TP 
\fB\-lp\fP, \fB\-\-continue\-at\-parentheses\fP
前の行に続く行を括弧の位置に揃える。
.br
「\fBインデント付け\fP」セクションを参照すること。
.TP 
\fB\-lps\fP, \fB\-\-leave\-preprocessor\-space\fP
\`#\' とプリプロセッサディレクティブの間の空白を残す。
.br
「\fBインデント付け\fP」セクションを参照すること。
.TP 
\fB\-nbad\fP, \fB\-\-no\-blank\-lines\-after\-declarations\fP
宣言の後に空行を置かない。
.br
「\fB空行\fP」セクションを参照すること。
.TP 
\fB\-nbap\fP, \fB\-\-no\-blank\-lines\-after\-procedures\fP
手続き本体の後に空行を置かない。
.br
「\fB空行\fP」セクションを参照すること。
.TP 
\fB\-nbbo\fP, \fB\-\-break\-after\-boolean\-operator\fP
ブーリアン演算子の前で長い行を折り返さない。
.br
「\fB長い行の折り返し\fP」セクションを参照すること。
.TP 
\fB\-nbc\fP, \fB\-\-no\-blank\-lines\-after\-commas\fP
宣言中のコンマの後に改行を置かない。
.br
「\fB宣言\fP」セクションを参照すること。
.TP 
\fB\-nbfda\fP, \fB\-\-dont\-break\-function\-decl\-args\fP
関数宣言の各引き数を別々の行に置かない。
.br
「\fB宣言\fP」セクションを参照すること。
.TP 
\fB\-ncdb\fP, \fB\-\-no\-comment\-delimiters\-on\-blank\-lines\fP
空行にコメント区切り文字を置かない。
.br
「\fBコメント\fP」セクションを参照すること。
.TP 
\fB\-ncdw\fP, \fB\-\-dont\-cuddle\-do\-while\fP
\fBdo {} while;\fP の \fB}\fP と \fBwhile\fP を同じ行に並べない。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-nce\fP, \fB\-\-dont\-cuddle\-else\fP
\fB}\fP と \fBelse\fP を同じ行に並べない。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-ncs\fP, \fB\-\-no\-space\-after\-casts\fP
キャスト演算子の後に空白を置かない。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-nfc1\fP, \fB\-\-dont\-format\-first\-column\-comments\fP
最初のカラムから始まるコメントを通常のように整形しない。
.br
「\fBコメント\fP」セクションを参照すること。
.TP 
\fB\-nfca\fP, \fB\-\-dont\-format\-comments\fP
どのようなコメントも整形しない。
.br
「\fBコメント\fP」セクションを参照すること。
.TP 
\fB\-nhnl\fP, \fB\-\-ignore\-newlines\fP
入力ファイルで改行が入っている位置で 長い行を折り返さないようにする。
.br
「\fB長い行の折り返し\fP」セクションを参照すること。
.TP 
\fB\-nip\fP, \fB\-\-no\-parameter\-indentation\fP
パラメータのインデント幅を 0 にする。
.br
「\fBインデント付け\fP」セクションを参照すること。
.TP 
\fB\-nlp\fP, \fB\-\-dont\-line\-up\-parentheses\fP
括弧の位置を揃えない。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-npcs\fP, \fB\-\-no\-space\-after\-function\-call\-names\fP
関数呼び出し内部の関数の後に空白を置かない。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-nprs\fP, \fB\-\-no\-space\-after\-parentheses\fP
\'(\' の後と \')\' の前に空白を置かない。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-npsl\fP, \fB\-\-dont\-break\-procedure\-type\fP
手続きの型を名前と同じ行に置く。
.br
「\fB宣言\fP」セクションを参照すること。
.TP 
\fB\-nsaf\fP, \fB\-\-no\-space\-after\-for\fP
\fBfor\fP の後に空白を置かない。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-nsai\fP, \fB\-\-no\-space\-after\-if\fP
\fBif\fP の後に空白を置かない。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-nsaw\fP, \fB\-\-no\-space\-after\-while\fP
\fBwhile\fP の後に空白を置かない。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-nsc\fP, \fB\-\-dont\-star\-comments\fP
\`*\' 文字をコメントの左に置かない。
.br
「\fBコメント\fP」セクションを参照すること。
.TP 
\fB\-nsob\fP, \fB\-\-leave\-optional\-blank\-lines\fP
余計な空行を削除しない。
.br
「\fB空行\fP」セクションを参照すること。
.TP 
\fB\-nss\fP, \fB\-\-dont\-space\-special\-semicolon\fP
特定の文の後のセミコロンの前に空白を置かない。 \`\-ss\' を無効にする。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-nut\fP, \fB\-\-no\-tabs\fP
タブではなく空白を使う。
.br
「\fBインデント付け\fP」セクションを参照すること。
.TP 
\fB\-nv\fP, \fB\-\-no\-verbosity\fP
詳細表示モードを無効にする。
.br
「\fBその他のオプション\fP」セクションを参照すること。
.TP 
\fB\-orig\fP, \fB\-\-original\fP
オリジナルの Berkeley コーディングスタイルを使用する。
.br
「\fB一般的なスタイル\fP」セクションを参照すること。
.TP 
\fB\-npro\fP, \fB\-\-ignore\-profile\fP
\`.indent.pro\' ファイルを読み込まない。
.br
「\fBindent\ の起動\fP」セクションを参照すること。
.TP 
\fB\-pcs\fP, \fB\-\-space\-after\-procedure\-calls\fP
呼び出される手続きの名前と `(' の間に空白を挿入する。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-pi\fP\fIn\fP, \fB\-\-paren\-indentation\fP\fIn\fP
文が不完全な場合に使われる 開括弧 \'(\' ごとの追加のインデントを指定する。 「\fB文\fP」セクションを参照すること。
.TP 
\fB\-pmt\fP, \fB\-\-preserve\-mtime\fP
出力ファイルのアクセス時刻と修正時刻を保存する。 「\fBその他のオプション\fP」セクションを参照すること。
.TP 
\fB\-prs\fP, \fB\-\-space\-after\-parentheses\fP
\'(\' の後と \')\' の前に空白を置く。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-psl\fP, \fB\-\-procnames\-start\-lines\fP
手続きの型を名前と同じ行に置く。
.br
「\fB宣言\fP」セクションを参照すること。
.TP 
\fB\-saf\fP, \fB\-\-space\-after\-for\fP
\fBfor\fP の後にスペースを置く。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-sai\fP, \fB\-\-space\-after\-if\fP
\fBif\fP の後にスペースを置く。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-saw\fP, \fB\-\-space\-after\-while\fP
\fBwhile\fP の後にスペースを置く。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-sbi\fP\fIn\fP, \fB\-\-struct\-brace\-indentation\fP\fIn\fP
stract, union, enum のブレースを \fIn\fP\fB 個の空白でインデントする。\fP
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-sc\fP, \fB\-\-start\-left\-side\-of\-comments\fP
\`*\' 文字をコメントの左に置く。
.br
「\fBコメント\fP」セクションを参照すること。
.TP 
\fB\-sob\fP, \fB\-\-swallow\-optional\-blank\-lines\fP
余計な空行を取り除く。
.br
「\fB空行\fP」セクションを参照すること。
.TP 
\fB\-ss\fP, \fB\-\-space\-special\-semicolon\fP
1 行で記述した \fBfor\fP 文と \fBwhile\fP 文において、 セミコロンの前に空白を置く。
.br
「\fB文\fP」セクションを参照すること。
.TP 
\fB\-st\fP, \fB\-\-standard\-output\fP
標準出力に書き出す。
.br
「\fBindent\ の起動\fP」セクションを参照すること。
.TP 
\fB\-T\fP
型名の名前を \fBindent\fP に指定する。
.br
「\fB宣言\fP」セクションを参照すること。
.TP 
\fB\-ts\fP\fIn\fP, \fB\-\-tab\-size\fP\fIn\fP
タブの幅を空白 \fIn\fP 個に設定する。
.br
「\fBインデント付け\fP」セクションを参照すること。
.TP 
\fB\-ut\fP, \fB\-\-use\-tabs\fP
タブを使う。これがデフォルトである。
.br
「\fBインデント付け\fP」セクションを参照すること。
.TP 
\fB\-v\fP, \fB\-\-verbose\fP
詳細表示モードを有効にする。
.br
「\fBその他のオプション\fP」セクションを参照すること。
.TP 
\fB\-version\fP
\fBindent\fP のバージョン番号を表示する。
.br
「\fBその他のオプション\fP」セクションを参照すること。

.SH "indent の起動"

バージョン 1.3 からは、\fBindent\fP コマンドの書式は 以下のようになっている:

.in +5
.nf
.na

indent [\fIoptions\fP] [\fIinput\-files\fP]

indent [\fIoptions\fP] [\fIsingle\-input\-file\fP] [\-o \fIoutput\-file\fP]

.in -5
.ad
.fi

この書式は古いバージョンや他バージョンの \fBindent\fP と異なる。

最初の書式では 1 つ以上の入力ファイルを指定する。 \fBindent\fP は、各ファイルのバックアップコピーを作成してから、
オリジナルのファイルをインデント付けしたものに置き換える。 バックアップの作り方については、 「\fBバックアップファイル\fP」セクションを参照すること。

2 番目の書式では入力ファイルを 1 つだけ指定する。 この場合、または標準入力を使う場合には、 \`\-o\'
オプションの後に出力ファイルを指定することができる。

\fBindent\fP に標準出力へ出力させるには \`\-st\' オプションを使う。 これが許されるのは、入力ファイルが 1 つだけの場合か、
標準入力を使う場合だけである。

入力ファイルを指定しなければ入力は標準入力から読み込まれる。 また、\`\-\' というファイル名が指定された場合にも標準入力が読み込まれる。

使用例としては、以下のコマンドは いずれもプログラム \`slithy_toves.c\' を読み込み、 インデント付けしたテキストを
\`slithy_toves.out\' に書き込む:

.in +5
.nf
.na

indent slithy_toves.c \-o slithy_toves.out

indent \-st slithy_toves.c > slithy_toves.out

cat slithy_toves.c | indent \-o slithy_toves.out

.in -5
.ad
.fi

\fBindent\fP の他のオプションのほとんどは、 プログラムをどのように整形する
かを制御するためのものである。バージョン 1.2 からは、\fBindent\fP は各オプ
ション名として長い名前も認識する。 長いオプションの前には \`\-\-\' か
\`+\' が置かれる。 [POSIX 標準と一貫性を持たせるため、現在は \`+\' を
\`\-\-\' に置き換えようとしているところである。]
本ドキュメントの大部分では、簡潔に表現するために伝統的な短い名前を
使っている。長いオプション名と短いオプション名のリストは、
「\fBオプションの概要\fP」を参照すること。

別の使用例を挙げる:

.in +5
.nf
.na
indent \-br test/metabolism.c \-l85
.in -5
.ad
.fi

これにより、プログラム \`test/metabolism.c\' が \`\-br\' オプションと \`\-l85\'
オプションを用いてインデント付けされ、 その出力が \`test/metabolism.c\' に重ね書きされ、 元の
\`test/metabolism.c\' の内容は \`test\' ディレクトリにバックアップファイルとして書き込まれる。

この例と同じ指定を長いオプション名を用いて行うと以下のようになる:

.in +5
.nf
.na

indent \-\-braces\-on\-if\-line \-\-line\-length185 test/metabolism.c

indent +braces\-on\-if\-line +line\-length185 test/metabolism.c

.in -5
.ad
.fi

\fBindent\fP を頻繁に同じオプションで使うならば、これらを \`.indent.pro\'
というファイルに書いておくとよい。 \fBindent\fP は 3 つの場所でプロファイ
ルファイルを探す。 最初に環境変数 \fBINDENT_PROFILE\fP があるかをチェック
する。この環境変数がある場合、その値を使用するファイルの名前として解釈
する。この環境変数がない場合、\fBindent\fP はカレントディレクトリの
\`.indent.pro\' を探し、もし存在すればこれを使う。 \fBindent\fP は最後に
ホームディレクトリの \`.indent.pro\' を探し、 もし存在すればこれを使う。
この動作は従来のバージョンや別バージョンの \fBindent\fP と異なる。 これら
は、両方のディレクトリに \`.indent.pro\' ファイルがあれば、 両方とも使
用する。

\`.indent.pro\' の書式は、コマンドラインに指定するのと同じく、 空白 (タブ、スペース、改行)
で区切られた単なるオプションのリストである。 \`.indent.pro\' のオプションは、 C または C++ のコメントで囲むことができる。
コメントで囲んだオプションは無視される。

コマンドラインオプションが処理されるのは、 \`.indent.pro\' を処理した\fI後\fPである。
後から指定したオプションは、前に指定した引き数を上書きする。 これには例外が 1 つある: 明示的に指定したオプションは
暗黙のオプションを必ず上書きする(「\fB一般的なスタイル\fP」を参照)。 \`\-npro\' オプションを指定することにより、 \fBindent\fP が
\`.indent.pro\' ファイルを読み込まないようにすることができる。

.SH バックアップファイル

バージョン 1.3 からは、GNU \fBindent\fP は GNU 形式、 すなわち GNU Emacs と同様の方法でバックアップファイルを作成する。
つまり、\fI単純な\fPバックアップファイルと \fI番号付きの\fPバックアップファイルをどちらも作成できる。

単純なバックアップファイルの名前は、 元のファイル名にサフィックスを追加して生成される。 このサフィックスのデフォルト値は、 1 文字からなる文字列
\`~\' (チルダ)である。 したがって、\`python.c\' のバックアップファイルは \`python.c~\' となる。

環境変数 \fBSIMPLE_BACKUP_SUFFIX\fP に好きな文字列を設定することにより、
デフォルト値以外の任意の文字列をサフィックスとして使用できる。

ファイル \`momeraths.c\' の番号付きバックアップは、 \`momeraths.c.~23~\' のようになる。 ここで、23
はこのファイルのバックアップのバージョンである。 ファイル \`src/momeraths.c\' のバックアップを作成するとき、
バックアップファイルの名前は \`src/momeraths.c.~\fIV\fP~\' のようになる。 ここで、\fIV\fP はディレクトリ \`src\'
に現在ある 最も大きいバージョンより 1 大きい数字である。 環境変数 \fBVERSION_WIDTH\fP は、 必要に応じて左側に 0
を追加することにより、数字の桁数を制御する。 例えばこの変数を "2" に設定すると、 バックアップファイルの名前は
\`momeraths.c.~04~\' のようになる。

どちらの方法でバックアップファイルを作るかは、 環境変数 \fBVERSION_CONTROL\fP で制御する。 この文字列が \`simple\'
ならば、単純なバックアップだけが作成される。 この値が \`numbered\' ならば、番号付きバックアップが作成される。 この値が
\`numbered\-existing\' ならば、 インデント付けするファイルの番号付きのバックアップが\fI既にある\fP場合に、
番号付きバックアップが作成される。 それ以外の場合には、単純なバックアップが作成される。 \fBVERSION_CONTROL\fP が設定されていなければ、
\fBindent\fP は \`numbered\-existing\' が指定されているものとして動作する。

別バージョンの \fBindent\fP は、 サフィックス \`.BAK\' を使ってバックアップファイルの名前を生成する。
この動作は、\fBSIMPLE_BACKUP_SUFFIX\fP に \`.BAK\' を 設定することによりエミュレートすることができる。

別バージョンの \fBindent\fP は、現在の GNU \fBindent\fP が行うように
ソースファイルがあるディレクトリにバックアップを作成するのではなく、 カレントディレクトリにバックアップを作成する点にも注意すること。

.SH 一般的なスタイル

C 言語には一般的なスタイルがいくつかある。 例えば、GNU スタイル、Kernighan & Ritchie スタイル、 オリジナルの
Berkeley スタイル等である。 スタイルは\fIバックグラウンド\fPオプション 1 つを使って選択することができる。
このオプションは、他のオプション全ての値を指定する。 ただし、明示的に指定したオプションは、 暗黙的に指定されたオプションよりも必ず優先される。

バージョン 1.2 からは、GNU \fBindent\fP のデフォルトのスタイルは GNU スタイルである。 したがって、このフォーマットで出力するために
\`\-gnu\' オプションを指定する必要はなくなった。 ただし、このオプションを指定してもエラーにはならない。 GNU
スタイルに対応するオプション設定は以下である:

.in +5
.nf
.na
\-nbad \-bap \-nbc \-bbo \-bl \-bli2 \-bls \-ncdb \-nce \-cp1 \-cs \-di2
\-ndj \-nfc1 \-nfca \-hnl \-i2 \-ip5 \-lp \-pcs \-nprs \-psl \-saf \-sai
\-saw \-nsc \-nsob
.in -5
.ad
.fi

GNU コーディングスタイルは GNU プロジェクトで推奨されている。 これは GNU Emacs の C モードが適用しようとするスタイルであり、
GNU Emacs の C で記述された部分で使われているスタイルである。 (GNU プロジェクトのためにプログラムを書くことに興味がある方は、
「GNU コーディング規約 (The GNU Coding Standards)」を入手されたい。 この文書では、メモリの使い方や整数のサイズ等、
セマンティックや移植性についても説明されている。)

Kernighan & Ritchie スタイルは有名な書籍 「プログラミング言語 C (The C Programming
Language)」で使われている。 これは \`\-kr\' オプションで有効となる。 Kernighan & Ritchie
スタイルは、以下のオプションの組合せと同等である:

.in +5
.nf
.na
\-nbad \-bap \-bbo \-nbc \-br \-brs \-c33 \-cd33 \-ncdb \-ce \-ci4 \-cli0
\-cp33 \-cs \-d0 \-di1 \-nfc1 \-nfca \-hnl \-i4 \-ip0 \-l75 \-lp \-npcs
\-nprs \-npsl \-saf \-sai \-saw \-nsc \-nsob \-nss
.in -5
.ad
.fi

Kernighan & Ritchie スタイルでは、コードがある行の右の部分にコメントが 入れられることはない (コードの右に空白を 1
つだけ入れることもない)。 したがって、このスタイルのカラム数 33 というのは \fBindent\fP が勝手に決めたものである:

オリジナルの Berkeley 版 \fBindent\fP のスタイルは、 \`\-orig\' (または長いオプション名
\`\-\-original\')を指定すれば得られる。 このスタイルは、以下の設定と同じ意味である:

.in +5
.nf
.na
\-nbad \-nbap \-bbo \-bc \-br \-brs \-c33 \-cd33 \-cdb \-ce \-ci4 \-cli0
\-cp33 \-di16 \-fc1 \-fca \-hnl \-i4 \-ip4 \-l75 \-lp \-npcs \-nprs \-psl
\-saf \-sai \-saw \-sc \-nsob \-nss \-ts8
.in -5
.ad
.fi

.SH 空行

各種プログラミングスタイルごとに、空白は異なる場所に置かれる。 \fBindent\fPには、特定の場所に空白行を挿入・削除するための
オプションがたくさんある。

\`\-bad\' オプションを指定すると、 \fBindent\fP は宣言ブロック全ての後に必ず空行を置く。 \`\-nbad\'
オプションを指定すると、このような空白行は置かれない。

\`\-bap\' オプションを指定すると、手続き本体全ての後に必ず空行が置かれる。 \`\-nbap\'
オプションを指定すると、このような空行は置かれない。

\`\-bbb\' オプションを指定すると、 箱形コメント全ての前に必ず空行が置かれる
(箱形コメントについては「\fBコメント\fP」セクションを参照すること)。 \`\-nbbb\' オプションを指定すると、このような空行は置かれない。

\`\-sob\' を指定すると、\fBindent\fP は省略できる空行を飲み込んでしまう
(つまり、入力行に含まれる省略できる空行が出力から全て削除される)。 \`\-nsob\' を指定すると、
入力行に含まれる空行は出力ファイルにも全てコピーされる。


.SH \-\-blank\-lines\-after\-declarations

\`\-bad\' オプションを指定すると、宣言ブロックの後に必ず空行が置かれる。 \`\-nbad\'
オプションを指定すると、このような空行は追加されない。

例えば、以下の入力を与えると
.in +5
.nf
.na
char *foo;
char *bar;
/* このコメントは宣言のブロックを分けている */
int baz;
.in -5
.ad
.fi

\fBindent \-bad\fP の出力は以下のようになる。

.in +5
.nf
.na
char *foo;
char *bar;

/* このコメントは宣言のブロックを分けている */
int baz;
.in -5
.ad
.fi

また、\fBindent \-nbad\fP の出力は以下のようになる。

.in +5
.nf
.na
char *foo;
char *bar;
/* このコメントは宣言のブロックを分けている */
int baz;
.in -5
.ad
.fi

.SH \-\-blank\-lines\-after\-procedures

\`\-bap\' オプションを指定すると、それぞれの宣言本体の後に必ず空行が置かれる。

例えば、以下の入力を与えると

.in +5
.nf
.na
int
foo ()
{
  puts("Hi");
}
/* この手続き bar には意味はない  */
char *
bar ()
{
  puts("Hello");
}
.in -5
.ad
.fi

\fBindent \-bap\fP の出力は以下となる。

.in +5
.nf
.na
int
foo ()
{
  puts ("Hi");
}

/* この手続き bar には意味はない  */
char *
bar ()
{
  puts ("Hello");
}
.in -5
.ad
.fi

また、\fBindent \-nbap\fP の出力は以下となる。

.in +5
.nf
.na
int
foo ()
{
  puts ("Hi");
}
/* この手続き bar には意味はない  */
char *
bar ()
{
  puts ("Hello");
}
.in -5
.ad
.fi

手続き \fBfoo\fP の後には空行は追加されない。

.SH コメント

\fBindent\fP は C と C++ のコメントを整形する。 C のコメントは \`/*\' で始まって \`*/\' で終り、
改行文字を含んでもよい。 C++ のコメントは区切り文字 \`//\' で始まり改行で終る。

\fBindent\fP はコメントの文脈によって別々の扱い方をする。 \fBindent\fP は文・宣言・ プリプロセッサディレクティブが後に続くコメントと
どのコードの前にも置かれていないコメントを区別する。 どのコードの前にも置かれていないコメントとは、 行が開始されるコメントのことである (カラム 1
から始まっている必要はない)。

さらに \fBindent\fP は手続きや集合体の外側にあるコメントと 内側にあるコメントを区別する。 特に手続きの内側で行の最初にあるコメントは、
コードが現在インデントされているカラムにインデントされる。 最も左側のカラムから始まるコメントは例外であり、 コメントはそのカラムから出力される。

\fBindent\fP は\fI箱形\fPコメントを変更しない。 \`*\' や \`\-\' で四角形や「箱形」に囲んだコメントは、
他から視覚的に区別したいという一般的な意図があるためである。 もっと正確に言うと、箱形コメントは次のように定義される。 最初の \`/*\'
の直後に文字 \`*\', \`=\', \`_\', \`\-\' が続いているか、 コメント開始区切り文字 (\`/*\') だけの行があり、
以降の行はコメント開始区切り文字の \`*\' と同じカラムから \`*\' で行が開始される。

箱形コメントの例を示す:

.in +5
.nf
.na
/**********************
 * 箱の中のコメント!! *
 **********************/

       /*
        * 別な種類のコメントには、
        * 別な形式を使う。
        */
.in -5
.ad
.fi

\fBindent\fP は箱形のコメントを ソースファイルの中に見つかった場所に残しておく。 よってコメントのインデント付けは変わらず、
その長さもどちらにしても変わらない。 別なモードでは、埋め込まれたタブ文字が適切な数の空白に変換されるだけである。

\`\-bbb\' オプションが指定された場合、 箱形コメントがコードの前に置かれていないときは、 箱形コメントの後に空行を置く。

箱形でないコメントは整形される。 これは、行が右端に合うように折り返され、 左側は空白で埋められるという意味である。 1
つの改行文字は空白と同じであるが、 (1 行に 2 つ以上の改行文字がある) 空行は パラグラフの切れ目として解釈される。
最初のカラムの後から始まるコメントの整形は、 \`\-fca\' オプションで有効になる。 カラム 1 から始まるコメントを整形するには、\`\-fc1\'
を指定する。 このような整形は、デフォルトでは無効にされている。

整形する際の右端は、デフォルトでは 78 であるが、 \`\-lc\' オプションで変更できる。 指定された右端まででコメントが表示できない場合、
コメントの終りまで右端が自動的に拡張される。 コメントが整形されない場合、右端の位置は守られない。

コメントで行が開始される場合 (つまり、コメントの左側にプログラムの文字列がない場合)、 コメントがコードのブロック中になければ、
そのコメントがあったカラムにインデントされる。 この場合、(最初のカラムからコメントが開始されていなければ)
そのブロックのインデントされたコードにコメントの左端を揃える。 揃える位置は \`\-d\' オプションで変更可能で、
何カラム\fI左\fPへ移動するかを指定する。 指定されない場合は、インデントされない。 例えば、\`\-d2\' ではコードから左へ空白 2
個の位置にコメントを置く。 デフォルトではコードにコメントの左端を揃える。 ただし、コメントが最初のカラムから開始されている場合、
デフォルトではインデントされない。 最初のカラムから始まるコメントをコードに左揃えしたい場合は、 \`\-fc1\' を指定すること。

コードの右側にあるコメントは、デフォルトではカラム 33 にインデントされる。 これは次の 3 つのオプションのいずれかで変更できる。 \`\-c\'
はコードの後のコメントのカラムを指定する。 \`\-cd\' は宣言の後のコメントのカラムを指定する。 \`\-cp\' はプリプロセッサディレクティブ
\fB#else\fP と \fB#endif\fP の後のコメントのカラムを指定する。

コメントの左側にあるコードが最初のカラムから開始されていない場合、 コードの終りの次のタブストップの位置からコメントカラムが開始される。
プリプロセッサディレクティブが最初のカラムから開始されていない場合、 ディレクティブの終りの 1 カラム後からコメントカラムが開始される。
この拡張はこのような特定のカラムの出力に対してのみ適応される。

\`\-cdb\' オプションを指定すると、コメント区切り文字を空行に置く。 よって \fB/* Loving hug */\fP のような 1
行のコメントは、 以下のように変換される。

.in +5
.nf
.na
/*
   Loving hug
 */
.in -5
.ad
.fi

\`\-sc\' オプションを指定すると、 複数行コメントの始めに \`*\' を置くことができる。 上記の 1 行のコメントは (\`\-cdb
\-sc\' により)  以下のように変換される。

.in +5
.nf
.na
/*
 * Loving hug
 */
.in -5
.ad
.fi

.SH 文

\`\-br\' または \`\-bl\' オプションは、ブレースをどのように整形するかを指定する。

\`\-br\' オプションを指定するとブレースは以下のように整形される:

.in +5
.nf
.na
if (x > 0) {
  x\-\-;
}
.in -5
.ad
.fi

\`\-bl\' オプションを指定するとブレースは以下のように整形される:

.in +5
.nf
.na
if (x > 0)
  {
    x\-\-;
  }
.in -5
.ad
.fi

\`\-bl\' オプションを使う場合には \`\-bli\' オプションも使うとよい。 このオプションはブレースのインデント付けに使う空白の数を指定する。
\`\-bli2\' (デフォルト値)を指定すると、先に示した結果となる。 \`\-bli0\' を指定した場合の結果は以下である:

.in +5
.nf
.na
if (x > 0)
{
  x\-\-;
}
.in -5
.ad
.fi

\`\-br\' オプションを使う場合には、多分 \`\-ce\' も使いたくなるだろう。 このオプションは if\-then\-else 構文の
\fBelse\fP を直前の \`}\' に隣に置く。 例えば \`\-br \-ce\' を指定すると、出力は以下のようになる:

.in +5
.nf
.na
if (x > 0) {
  x\-\-;
} else {
  fprintf (stderr, "...something wrong?\en");
}
.in -5
.ad
.fi

同じコードで \`\-br \-nce\' を指定すると以下のようになる:

.in +5
.nf
.na
if (x > 0) {
  x\-\-;
}
else {
  fprintf (stderr, "...something wrong?\en");
}
.in -5
.ad
.fi

これにより do\-while ループの \fBwhile\fP は直前の \`}\' と同じ行に置かれる。 例えば \`\-cdw\'
により以下のような出力が得られる。

.in +5
.nf
.na
do {
  x\-\-;
} while (x);
.in -5
.ad
.fi

同じコードで \`\-ncdw\' を指定すると以下のようになる:

.in +5
.nf
.na
do {
  x\-\-;
}
while (x);
.in -5
.ad
.fi

\`\-cli\' オプションは、case 構文のラベルを \fBswitch\fP 文から 右にインデントする際に空白をいくつ入れるかを指定する。

デフォルトでは以下のようなコードが得られる。

.in +5
.nf
.na
switch (i)
  {
  case 0:
    break;
  case 1:
    {
      ++i;
    }
  default:
    break;
  }
.in -5
.ad
.fi

\`\-cli2\' を使うと以下のようになる。

.in +5
.nf
.na
switch (i)
  {
    case 0:
      break;
    case 1:
      {
        ++i;
      }
    default:
      break;
  }
.in -5
.ad
.fi

case 文の後のブレースのインデントは、 \`\-cbi\fIn\fP\' オプションで制御できる。 例えば \`\-cli2 \-cbi0\'
を使うと次のような結果になる。

.in +5
.nf
.na
switch (i)
  {
    case 0:
      break;
    case 1:
    {
      ++i;
    }
    default:
      break;
  }
.in -5
.ad
.fi

セミコロンが \fBfor\fP または \fBwhile\fP 文と同じ行にある場合に \`\-ss\' を指定すると、空白がセミコロンの前に置かれる。
これによりセミコロンが強調され、 \fBfor\fP や \fBwhile\fP 文の本体が空の文であることがはっきりする。 \`\-nss\'
を指定すると、この機能は無効になる。

\`\-pcs\' オプションを指定すると、呼び出される手続きの名前と \`(\' の間に空白が置かれる (例えば、\fBputs\ ("Hi");\fP
となる。 また、\`\-npcs\' オプションを指定している場合には \fBputs("Hi");\fP) となる。)


\`\-cs\' オプションを指定すると、 \fBindent\fP はキャスト演算子の後に空白を置く。

\`\-bs\' オプションを指定すると、 キーワード \fBsizeof\fP とその引き数の間に必ず空白が置かれる。 バージョンによっては、 この機能は
\`Bill_Shannon\' オプションとして知られている。

\`\-saf\' オプションは \fBfor\fP とその後の括弧の間に空白を入れる。 これがデフォルトである。

\`\-sai\' オプションは \fBif\fP とその後の括弧の間に空白を入れる。 これがデフォルトである。

\`\-saw\' オプションは \fBwhile\fP とその後の括弧の間に空白を入れる。 これがデフォルトである。

\`\-prs\' オプションは全ての括弧とその間にあるものの間に空白を置く。 例えば \`\-prs\' を使うと以下のようなコードになる。

.in +5
.nf
.na
  while ( ( e_code \- s_code ) < ( dec_ind \- 1 ) )
    {
      set_buf_break ( bb_dec_ind );
      *e_code++ = \' \';
    }
.in -5
.ad
.fi

.SH 宣言

デフォルトでは、\fBindent\fP は \`\-di\' オプションで指定した カラムで識別子を揃える。 例えば、\`\-di16\'
を指定すると以下のようになる:

.in +5
.nf
.na
int             foo;
char           *bar;
.in -5
.ad
.fi

\`\-di\' オプションに小さい値 (1 や 2 など) を使うと、 置くことが可能な最初の場所に識別子を置くことができる。 例を以下に示す:

.in +5
.nf
.na
int foo;
char *bar;
.in -5
.ad
.fi

この場合でも、\`\-di\' オプションに指定した値は 型指定と異なる行に置いた変数には影響を与える。 例えば、\`\-di2\'
を指定すると以下のようになる:

.in +5
.nf
.na
int
  foo;
.in -5
.ad
.fi

\`\-bc\' オプションを指定すると、宣言中のコンマの後に改行が置かれる。 例を以下に示す:

.in +5
.nf
.na
int a,
  b,
  c;
.in -5
.ad
.fi

同じコードで \`\-nbc\' オプションを指定した場合は以下のようになる:

.in +5
.nf
.na
int a, b, c;
.in -5
.ad
.fi

\`\-bfda\' オプションを指定すると、 関数宣言の引き数のコンマの後で改行を入れる。 引き数は関数宣言より 1 段深くインデントされる。
これは引き数のリストが長い場合に特に役立つ。 \`\-bfde\' オプションを指定すると、 関数宣言の閉括弧の前に改行を入れる。 2 つのオプションとも
\'n\' を設定した \-nbdfa と \-nbdfe がデフォルトになる。


例えば、

.in +5
.nf
.na
void foo (int arg1, char arg2, int *arg3, long arg4, char arg5);
.in -5
.ad
.fi
は、\`\-bfda\' オプションを指定すると次のようになり、

.in +5
.nf
.na
void foo (
    int arg1,
    char arg2,
    int *arg3,
    long arg4,
    char arg5);
.in -5
.ad
.fi

更に \`\-bfde\' オプションを指定すると次のようになる。

.in +5
.nf
.na
void foo (
    int arg1,
    char arg2,
    int *arg3,
    long arg4,
    char arg5
    );
.in -5
.ad
.fi

\`\-psl\' オプションを指定すると、 定義される手続きの型は手続きの名前の前の行に置かれる。 このスタイルは、\fBetags\fP プログラムや
Emacs の \fBc\-mode\fP の 一部の機能を正しく動作させるために必要である。

プログラム中で \fBtypedef\fP で定義された型の名前を全て、 \`\-T\' オプションを使って \fBindent\fP に教えなければならない。
\`\-T\' は複数個指定することができ、指定された全ての名前を使うことができる。 例えば、プログラムに

.in +5
.nf
.na
typedef unsigned long CODE_ADDR;
typedef enum {red, blue, green} COLOR;
.in -5
.ad
.fi

という記述がある場合には、 オプション \`\-T CODE_ADDR \-T COLOR\' を使うことになるだろう。

\`\-brs\' や \`\-bls\' オプションは struct 宣言の ブレースをどのように整形するかを指定する。 \`\-brs\'
オプションはブレースを次のように整形する。

.in +5
.nf
.na
struct foo {
  int x;
};
.in -5
.ad
.fi

\`\-bls\' オプションはブレースを次のように整形する。

.in +5
.nf
.na
struct foo
{
  int x;
};
.in -5
.ad
.fi

.SH インデント付け

コードを整形する時の問題の 1 つは、 各行をどれだけ左端からインデントさせるかである。 \fBif\fP や \fBfor\fP 等の文の先頭部分があると、
インデントの深さは \`\-i\' オプションで指定した値だけ増える。 例えば、レベルごとに 8 文字分のインデントさせるには \`\-i8\' を使う。
文が 2 行に折り返されている場合、 2 行目は \`\-ci\' オプションで指定した追加のスペース分だけインデントされる。 \`\-ci\'
のデフォルト値は 0 である。 しかし、\`\-lp\' オプションが指定されており、かつ同じ行で閉じられていない
左括弧がある場合、その続きの行が始まる文字は左括弧の直後の位置に揃えられる。 この処理は \`[\' および初期化リストに現われる \`{\'
にも適用される。 例えば、\`\-nlp \-ci3\' が有効になっていると、 行をまたがるコードは以下のようになる:

.in +5
.nf
.na
  p1 = first_procedure (second_procedure (p2, p3),
     third_procedure (p4, p5));
.in -5
.ad
.fi

\`\-lp\' を有効にすると、コードはいくらか見やすくなる:

.in +5
.nf
.na
  p1 = first_procedure (second_procedure (p2, p3),
                        third_procedure (p4, p5));
.in -5
.ad
.fi

文が 2 つ以上の括弧の組 (...) にわかれている場合、 追加された括弧の組ごとに 1 段深くインデントされる。

.in +5
.nf
.na
if ((((i < 2 &&
        k > 0) || p == 0) &&
    q == 1) ||
  n = 0)
.in -5
.ad
.fi

オプション \`\-ip\fIN\fP\' は、括弧ごとの追加オフセットを設定するのに使う。 例えば \`\-ip0\' は上記のコードを次のように整形する。

.in +5
.nf
.na
if ((((i < 2 &&
  k > 0) || p == 0) &&
  q == 1) ||
  n = 0)
.in -5
.ad
.fi

\fBindent\fP はタブが入力と出力のストリームの両方で 一定の間隔で置かれることを想定している。 この間隔はデフォルトでは 8 カラム幅であるが、
(バージョン 1.2 からは) \`\-ts\' オプションで変更することができる。 タブは複数個の空白と同じ意味である。

古い形式の関数定義における型宣言のインデント付けは、 \`\-ip\' パラメータで制御することができる。
これは、型宣言では空白何個分のインデントを行うかを 指定する数値パラメータである。 例えばデフォルトの \`\-ip5\'
では、定義は以下のように整形される:

.in +5
.nf
.na
char *
create_world (x, y, scale)
     int x;
     int y;
     float scale;
{
  . . .
}
.in -5
.ad
.fi

他のバージョンの indent との互換性のために オプション \`\-nip\' が用意されている。 これは \`\-ip0\' と同じである。

ANSI C ではプリプロセッサコマンドラインの文字 \`#\' とコマンド名の間に 空白を入れることが許可されている。 デフォルトでは
\fBindent\fP はこの空白を削除するが、 \`\-lps\' オプションを指定することで \fBindent\fP にこの空白を変更しないように指示できる。
オプション \`\-ppi\' は \`\-nlps\' と \`\-lps\' を上書きする。

このオプションにより、 プリプロセッサ条件文を指定された空白数でインデントできる。 例えばオプション \`\-ppi 3\' は

.in +5
.nf
.na
#if X
#if Y
#define Z 1
#else
#define Z 0
#endif
#endif
.in -5
.ad
.fi
を次のように整形する。
.in +5
.nf
.na
#if X
#   if Y
#      define Z 1
#   else
#      define Z 0
#   endif
#endif
.in -5
.ad
.fi

.SH 長い行の折り返し

オプション \`\-l\fIn\fP\' または \`\-\-line\-length\fIn\fP\' により、 C 言語コードの行の最大長を指定することができる。
ただしコードの後のコメントは含まない。

指定された行の長さより長い場合、 GNU \fBindent\fP は行を論理的な位置で折り返す。 これはバージョン 2.1 の新機能であるが、
まだそれほど賢くはなく柔軟でもない。

どこで行を折り返すかを決定するアルゴリズムに干渉するためのオプションが、 現在のところ 2 つある。

\`\-bbo\' オプションを指定すると、GNU \fBindent\fP は 長い行をブーリアン演算子 \fB&&\fP と \fB||\fP の前で折り返す。
\`\-nbbo\' オプションを指定すると、GNU \fBindent\fP は 長い行をブーリアン演算子の前で折り返さない。
例えば、(\`\-\-line\-length60\' と \`\-\-ignore\-newlines\'と一緒に)  デフォルトのオプション \`\-bbo\'
を指定することにより、 コードは以下のようになる。

.in +5
.nf
.na
  if (mask
      && ((mask[0] == \'\e0\')
          || (mask[1] == \'\e0\'
              && ((mask[0] == \'0\') || (mask[0] == \'*\')))))
.in -5
.ad
.fi

オプション \`\-nbbo\' を使うと、次のようになる。

.in +5
.nf
.na
  if (mask &&
      ((mask[0] == \'\e0\') ||
       (mask[1] == \'\e0\' &&
        ((mask[0] == \'0\') || (mask[0] == \'*\')))))
.in -5
.ad
.fi

しかしデフォルトの \`\-hnl\' では、 入力ファイルにおける改行を重視して、 そこで改行するように可能な限りの優先度を与える。
例えば入力ファイルが以下のような場合、

.in +5
.nf
.na
  if (mask
      && ((mask[0] == \'\e0\')
      || (mask[1] == \'\e0\' && ((mask[0] == \'0\') || (mask[0] == \'*\')))))
.in -5
.ad
.fi

オプション \`\-hnl\' または \`\-\-honour\-newlines\' を 上述の \`\-nbbo\' と
\`\-\-line\-length60\' と一緒に使うと、 前の例で示したような出力ではなく、
入力ファイルのコードで改行されている位置でなるべく折り返される。

.in +5
.nf
.na
  if (mask
      && ((mask[0] == \'\e0\')
          || (mask[1] == \'\e0\' &&
              ((mask[0] == \'0\') || (mask[0] == \'*\')))))
.in -5
.ad
.fi

このオプションの背景となる考え方は、 既に折り返されている長すぎる行は GNU \fBindent\fP で変更しないというものである。
しかし本当に汚いコードは、 少なくとも 1 回は \`\-\-ignore\-newlines\' オプションを付けて \fBindent\fP
に通しておくべきである。

.SH 整形の無効化

特別な\fI制御用コメント\fPをプログラムに埋め込むことにより、 C 言語コードを部分的に整形しないようにすることができる。
プログラムのあるセクションを整形しないようにするためには、 無効化制御用コメント \fB/* *INDENT\-OFF* */\fP だけの行を
セクションの直前に置けばよい。 この制御用コメントの後でスキャンされたプログラムテキストは、 有効化コメントだけの行がスキャンされるまで、
入力の通りに変更されず出力される。 有効化制御コメントは \fB/* *INDENT\-ON* */\fP であり、
このコメントと同じ行で後に続くテキストも整形されずに出力される。 有効化制御コメントの後に続く行から整形が再開される。

もっと正確に言うと、\fBindent\fP は C 言語コメントの 終了区切り文字 (\fB*/\fP) を検証せず、 その行の空白は存在が意識されない。

これらの制御コメントは、 C++ の書式、 つまり \fB // *INDENT\-OFF*\fP と \fB// *INDENT\-ON*\fP でも機能する。

\fBindent\fP の内部状態は整形しないセクションでも変更されない、 という点に注意すべきである。 よって、例えば関数の途中で整形を無効にして
関数の終りまで無効にし続けた場合、変な結果になる。 したがって、コードを整形しないことを選択する場合は、 モジュールにしておくのがよい。

歴史的な注意点: 以前のバージョンの \fBindent\fP では \fB*INDENT**\fP で始まるエラーメッセージを生成するものがあった。
これらのバージョンの \fBindent\fP は、 このようなエラーメッセージで始まる入力テキスト行を 無視するように書かれていた。 私はこの閉鎖的な機能を
GNU \fBindent\fP から削除した。

.SH その他のオプション

使っている \fBindent\fP のバージョンを知るには、 コマンド \fBindent \-version\fP を用いること。
これを用いると、通常の処理は全く行われず、 \fBindent\fP のバージョン番号が表示される。

\`\-v\' オプションを用いると、詳細表示モードを有効にすることができる。 詳細表示モードでは、\fBindent\fP は 1
つの行を出力で複数行にする時には報告を 行い、実行終了時にサイズに関する情報を出力する。

\`\-pmt\' オプションを指定すると、\fBindent\fP は 出力ファイルのアクセス時刻と修正時刻を保存する。
このオプションを使うと、全てのソースファイルとヘッダファイルに \fBindent\fP を実行しても、\fBmake\fP はターゲットを再構築しない。
このオプションは POSIX \fButime(2)\fP 関数がある オペレーティングシステムでのみ利用可能である。

.SH バグ

バグは bug\-indent@gnu.org に報告してほしい。

同じプロファイルで 1 つのファイルに \fBindent\fP を 2 回実行した場合、 2 回目はファイルを\fI全く\fP変更しないべきである。
\fBindent\fP の現在の設計では、それは保証できず、 詳細にはテストされていない。

\fBindent\fP が C を理解しない。 このため、行を結合できない場合もある。 指定されたプロファイル (\`.indent.pro\') で
\fBindent\fP を実行した結果のファイルを入力として使った場合でも、 \fBindent\fP を通したファイルが\fI非可逆\fPになる。

C++ に対して \fBindent\fP を動作させることを試みたが、 とても簡単なものでない限り、 C++ のソースに対しては良い結果が得られない。

出力ファイルにコメントを書き出している場合、 \fBindent\fP は指定された \`\-\-line\-length\' オプションを参照しない。
そのため、たびたびコメントがかなり右に置かれる。 コメントが末尾にある折り返された行を \fBindent\fP が結合しないようにするため、
コメントが折り返しの最初の行から始まっていることを確認すること。

\fB/* *INDENT\-OFF* */\fP によって \fBindent\fP が無効にされている場合、 \fBindent\fP は行数やコメント数を数えない
(\`\-v\' オプションを参照)。

\fB/*UPPERCASE*/\fP という形式のコメントは、 コメントとして扱われないが、次の行と結合する識別子として扱われる。
この動作によって、コードの最初に埋め込まれない限り、 このタイプのコメントを無用なものにしてしまう。

.SH 著作権表示

以下の著作権表示は \fBindent\fP プログラムに適用される。 このマニュアルに関する著作権と複製許可については、
\`indent.texinfo\' と \`indent.info\' の先頭近くと \`indent.1\' の末尾近くに記述されている。

.nf
.na
Copyright (c) 2001 David Ingamells.
Copyright (c) 1999 Carlo Wood.
Copyright (c) 1995, 1996 Joseph Arceneaux.
Copyright (c) 1989, 1992, 1993, 1994, 1995, 1996 Free Software Foundation
Copyright (c) 1985 Sun Microsystems, Inc.
Copyright (c) 1980 The Regents of the University of California.
Copyright (c) 1976 Board of Trustees of the University of Illinois.
All rights reserved.

Redistribution and use in source and binary forms are permitted
provided that the above copyright notice and this paragraph are
duplicated in all such forms and that any documentation,
advertising materials, and other materials related to such
distribution and use acknowledge that the software was developed
by the University of California, Berkeley, the University of Illinois,
Urbana, and Sun Microsystems, Inc.  The name of either University
or Sun Microsystems may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED \`\`AS IS\'\' AND WITHOUT ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
PURPOSE.
.ad
.fi

.SH オプションの相互参照キー

長い名前についてアルファベット順に並べたオプションのリストを示す。 これを使えば対応する短いオプション名が簡単に分かる。


.in +5
.nf
.na
\-\-blank\-lines\-after\-commas                      \-bc            
\-\-blank\-lines\-after\-declarations                \-bad           
\-\-blank\-lines\-after\-procedures                  \-bap           
\-\-blank\-lines\-before\-block\-comments             \-bbb           
\-\-braces\-after\-if\-line                          \-bl            
\-\-brace\-indent                                  \-bli
\-\-braces\-after\-struct\-decl\-line                 \-bls
\-\-braces\-on\-if\-line                             \-br            
\-\-braces\-on\-struct\-decl\-line                    \-brs
\-\-break\-after\-boolean\-operator                  \-nbbo
\-\-break\-before\-boolean\-operator                 \-bbo
\-\-break\-function\-decl\-args                      \-bfda
\-\-break\-function\-decl\-args\-end                  \-bfde
\-\-case\-indentation                              \-cli\fIn\fP    
\-\-case\-brace\-indentation                        \-cbi\fIn\fP
\-\-comment\-delimiters\-on\-blank\-lines             \-cdb           
\-\-comment\-indentation                           \-c\fIn\fP      
\-\-continuation\-indentation                      \-ci\fIn\fP     
\-\-continue\-at\-parentheses                       \-lp            
\-\-cuddle\-do\-while                               \-cdw
\-\-cuddle\-else                                   \-ce            
\-\-declaration\-comment\-column                    \-cd\fIn\fP     
\-\-declaration\-indentation                       \-di\fIn\fP     
\-\-dont\-break\-function\-decl\-args                 \-nbfda
\-\-dont\-break\-function\-decl\-args\-end             \-nbfde
\-\-dont\-break\-procedure\-type                     \-npsl          
\-\-dont\-cuddle\-do\-while                          \-ncdw
\-\-dont\-cuddle\-else                              \-nce           
\-\-dont\-format\-comments                          \-nfca          
\-\-dont\-format\-first\-column\-comments             \-nfc1          
\-\-dont\-line\-up\-parentheses                      \-nlp           
\-\-dont\-space\-special\-semicolon                  \-nss
\-\-dont\-star\-comments                            \-nsc           
\-\-else\-endif\-column                             \-cp\fIn\fP
\-\-format\-all\-comments                           \-fca           
\-\-format\-first\-column\-comments                  \-fc1           
\-\-gnu\-style                                     \-gnu           
\-\-honour\-newlines                               \-hnl
\-\-ignore\-newlines                               \-nhnl
\-\-ignore\-profile                                \-npro          
\-\-indent\-level                                  \-i\fIn\fP      
\-\-k\-and\-r\-style                                 \-kr            
\-\-leave\-optional\-blank\-lines                    \-nsob          
\-\-leave\-preprocessor\-space                      \-lps
\-\-line\-comments\-indentation                     \-d\fIn\fP      
\-\-line\-length                                   \-l\fIn\fP      
\-\-no\-blank\-lines\-after\-commas                   \-nbc           
\-\-no\-blank\-lines\-after\-declarations             \-nbad          
\-\-no\-blank\-lines\-after\-procedures               \-nbap          
\-\-no\-blank\-lines\-before\-block\-comments          \-nbbb          
\-\-no\-comment\-delimiters\-on\-blank\-lines          \-ncdb          
\-\-no\-space\-after\-casts                          \-ncs           
\-\-no\-parameter\-indentation                      \-nip           
\-\-no\-space\-after\-for				\-nsaf
\-\-no\-space\-after\-function\-call\-names            \-npcs          
\-\-no\-space\-after\-if				\-nsai
\-\-no\-space\-after\-parentheses                    \-nprs
\-\-no\-space\-after\-while				\-nsaw
\-\-no\-tabs                                       \-nut
\-\-no\-verbosity                                  \-nv            
\-\-original                                      \-orig
\-\-parameter\-indentation                         \-ip\fIn\fP     
\-\-paren\-indentation                             \-pi\fIn\fP
\-\-preserve\-mtime				\-pmt
\-\-procnames\-start\-lines                         \-psl           
\-\-space\-after\-cast                              \-cs            
\-\-space\-after\-for				\-saf
\-\-space\-after\-if				\-sai
\-\-space\-after\-parentheses                       \-prs
\-\-space\-after\-procedure\-calls                   \-pcs           
\-\-space\-after\-while				\-saw
\-\-space\-special\-semicolon                       \-ss            
\-\-standard\-output                               \-st            
\-\-start\-left\-side\-of\-comments                   \-sc            
\-\-struct\-brace\-indentation                      \-sbi\fIn\fP
\-\-swallow\-optional\-blank\-lines                  \-sob           
\-\-tab\-size                                      \-ts\fIn\fP     
\-\-use\-tabs                                      \-ut
\-\-verbose                                       \-v             
.in -5
.ad
.fi

.SH 返り値
不明。
.SH ファイル
.br
.nf
.\" set tabstop to longest possible filename, plus a wee bit
.ta \w'$HOME/.indent.pro   'u
\fI$HOME/.indent.pro\fP	indent のデフォルトのオプションを設定する
.SH 作者
.br
Carlo Wood
.br
Joseph Arceneaux
.br
Jim Kingdon
.br
David Ingamells
.SH 履歴
UCB の "indent" プログラムが起源である。
.SH 著作権
Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996 Free Software Foundation,
Inc.  Copyright (C) 1995, 1996 Joseph Arceneaux.  Copyright (C) 1999 Carlo
Wood.  Copyright (C) 2001 David Ingamells.

Permission is granted to make and distribute verbatim copies of this manual
provided the copyright notice and this permission notice are preserved on
all copies.