annotate doc/emacs/fortran-xtra.texi @ 97683:02243cbabf8e

(Fortran): Change description of free form and fixed form a bit. Mention hideshow and imenu. (Fortran Motion): Mention fortran-end-of-subprogram, fortran-beginning-of-subprogram, fortran-mark-do, fortran-mark-if. (Fortran Indent): Minor re-word. (ForIndent Commands): Mention fortran-fill-paragraph and fortran-fill-statement. (ForIndent Cont): Mention fortran-tab-mode-string. (Fortran Comments): Mention fortran-comment-line-start-skip. (Fortran Columns): Mention font-locking. (Fortran Abbrev): Word syntax not relevant with new-style abbrev.
author Glenn Morris <rgm@gnu.org>
date Sat, 23 Aug 2008 23:29:54 +0000
parents 4b2311c2836f
children cb5d2387102c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1 @c This is part of the Emacs manual.
87903
5d58981e6690 Merge from emacs--rel--22
Miles Bader <miles@gnu.org>
parents: 85628
diff changeset
2 @c Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3 @c See file emacs.texi for copying conditions.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4 @c
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
5 @c This file is included either in emacs-xtra.texi (when producing the
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
6 @c printed version) or in the main Emacs manual (for the on-line version).
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
7 @node Fortran
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
8 @section Fortran Mode
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
9 @cindex Fortran mode
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
10 @cindex mode, Fortran
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
11
97683
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
12 @cindex Fortran fixed form and free form
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
13 @cindex Fortran 77 and Fortran 90, 95, 2003
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
14 @findex f90-mode
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
15 @findex fortran-mode
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
16 Fortran mode is meant for editing ``fixed form'' (and also ``tab
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
17 format'') source code (normally Fortran 77). For editing more modern
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
18 ``free form'' source code (Fortran 90, 95, 2003), use F90 mode
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
19 (@code{f90-mode}). Emacs normally uses Fortran mode for files with
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
20 extension @samp{.f}, @samp{.F} or @samp{.for}, and F90 mode for the
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
21 extensions @samp{.f90} and @samp{.f95}. Customize
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
22 @code{auto-mode-alist} to add more extensions. GNU Fortran supports
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
23 both free and fixed form. This manual mainly documents Fortran mode,
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
24 but the corresponding F90 mode features are mentioned when revelant.
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
25
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
26 Fortran mode provides special motion commands for Fortran statements
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
27 and subprograms, and indentation commands that understand Fortran
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
28 conventions of nesting, line numbers and continuation statements.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
29 Fortran mode has support for Auto Fill mode that breaks long lines into
97683
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
30 proper Fortran continuation lines. Fortran mode also supports Hideshow
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
31 minor mode
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
32 @iftex
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
33 (@pxref{Hideshow,,, emacs, the Emacs Manual}),
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
34 @end iftex
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
35 @ifnottex
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
36 (@pxref{Hideshow}),
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
37 @end ifnottex
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
38 and Imenu
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
39 @iftex
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
40 (@pxref{Imenu,,, emacs, the Emacs Manual}).
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
41 @end iftex
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
42 @ifnottex
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
43 (@pxref{Imenu}).
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
44 @end ifnottex
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
45
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
46 Special commands for comments are provided because Fortran comments
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
47 are unlike those of other languages. Built-in abbrevs optionally save
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
48 typing when you insert Fortran keywords.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
49
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
50 Use @kbd{M-x fortran-mode} to switch to this major mode. This
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
51 command runs the hook @code{fortran-mode-hook}.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
52 @iftex
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
53 @xref{Hooks,,, emacs, the Emacs Manual}.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
54 @end iftex
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
55 @ifnottex
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
56 @xref{Hooks}.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
57 @end ifnottex
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
58
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
59 @menu
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
60 * Motion: Fortran Motion. Moving point by statements or subprograms.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
61 * Indent: Fortran Indent. Indentation commands for Fortran.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
62 * Comments: Fortran Comments. Inserting and aligning comments.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
63 * Autofill: Fortran Autofill. Auto fill support for Fortran.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
64 * Columns: Fortran Columns. Measuring columns for valid Fortran.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
65 * Abbrev: Fortran Abbrev. Built-in abbrevs for Fortran keywords.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
66 @end menu
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
67
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
68 @node Fortran Motion
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
69 @subsection Motion Commands
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
70
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
71 In addition to the normal commands for moving by and operating on
97683
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
72 ``defuns'' (Fortran subprograms---functions and subroutines, using the
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
73 commands @code{fortran-end-of-subprogram} and
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
74 @code{fortran-beginning-of-subprogram}; as well as modules for F90
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
75 mode), Fortran mode provides special commands to move by statements and
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
76 other program units.
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
77
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
78 @table @kbd
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
79 @kindex C-c C-n @r{(Fortran mode)}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
80 @findex fortran-next-statement
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
81 @findex f90-next-statement
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
82 @item C-c C-n
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
83 Move to the beginning of the next statement
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
84 (@code{fortran-next-statement}/@code{f90-next-statement}).
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
85
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
86 @kindex C-c C-p @r{(Fortran mode)}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
87 @findex fortran-previous-statement
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
88 @findex f90-previous-statement
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
89 @item C-c C-p
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
90 Move to the beginning of the previous statement
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
91 (@code{fortran-previous-statement}/@code{f90-previous-statement}).
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
92 If there is no previous statement (i.e. if called from the first
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
93 statement in the buffer), move to the start of the buffer.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
94
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
95 @kindex C-c C-e @r{(F90 mode)}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
96 @findex f90-next-block
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
97 @item C-c C-e
97683
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
98 Move point forward to the start of the next code block, or the end of
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
99 the current block, whichever is encountered first.
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
100 (@code{f90-next-block}). A code block is a subroutine,
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
101 @code{if}--@code{endif} statement, and so forth. This command exists
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
102 for F90 mode only, not Fortran mode. With a numeric argument, this
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
103 moves forward that many blocks.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
104
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
105 @kindex C-c C-a @r{(F90 mode)}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
106 @findex f90-previous-block
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
107 @item C-c C-a
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
108 Move point backward to the previous code block
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
109 (@code{f90-previous-block}). This is like @code{f90-next-block}, but
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
110 moves backwards.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
111
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
112 @kindex C-M-n @r{(Fortran mode)}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
113 @findex fortran-end-of-block
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
114 @findex f90-end-of-block
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
115 @item C-M-n
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
116 Move to the end of the current code block
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
117 (@code{fortran-end-of-block}/@code{f90-end-of-block}). With a numeric
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
118 argument, move forward that number of blocks. The mark is set before
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
119 moving point. The F90 mode version of this command checks for
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
120 consistency of block types and labels (if present), but it does not
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
121 check the outermost block since that may be incomplete.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
122
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
123 @kindex C-M-p @r{(Fortran mode)}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
124 @findex fortran-beginning-of-block
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
125 @findex f90-beginning-of-block
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
126 @item C-M-p
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
127 Move to the start of the current code block
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
128 (@code{fortran-beginning-of-block}/@code{f90-beginning-of-block}). This
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
129 is like @code{fortran-end-of-block}, but moves backwards.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
130 @end table
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
131
97683
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
132 The commands @code{fortran-end-of-subprogram} and
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
133 @code{fortran-beginning-of-subprogram} move to the end or start of the
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
134 current subprogram, respectively. The commands @code{fortran-mark-do}
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
135 and @code{fortran-mark-if} mark the end of the current @code{do} or
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
136 @code{if} block, and move point to the start.
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
137
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
138
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
139 @node Fortran Indent
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
140 @subsection Fortran Indentation
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
141
97683
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
142 Special commands and features are needed for indenting fixed (or tab)
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
143 form Fortran code in order to make sure various syntactic entities (line
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
144 numbers, comment line indicators and continuation line flags) appear in
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
145 the required columns.
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
146
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
147 @menu
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
148 * Commands: ForIndent Commands. Commands for indenting and filling Fortran.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
149 * Contline: ForIndent Cont. How continuation lines indent.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
150 * Numbers: ForIndent Num. How line numbers auto-indent.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
151 * Conv: ForIndent Conv. Conventions you must obey to avoid trouble.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
152 * Vars: ForIndent Vars. Variables controlling Fortran indent style.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
153 @end menu
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
154
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
155 @node ForIndent Commands
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
156 @subsubsection Fortran Indentation and Filling Commands
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
157
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
158 @table @kbd
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
159 @item C-M-j
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
160 Break the current line at point and set up a continuation line
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
161 (@code{fortran-split-line}).
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
162 @item M-^
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
163 Join this line to the previous line (@code{fortran-join-line}).
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
164 @item C-M-q
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
165 Indent all the lines of the subprogram point is in
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
166 (@code{fortran-indent-subprogram}).
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
167 @item M-q
97683
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
168 Fill a comment block or statement (using @code{fortran-fill-paragraph}
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
169 or @code{fortran-fill-statement}).
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
170 @end table
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
171
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
172 @kindex C-M-q @r{(Fortran mode)}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
173 @findex fortran-indent-subprogram
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
174 The key @kbd{C-M-q} runs @code{fortran-indent-subprogram}, a command
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
175 to reindent all the lines of the Fortran subprogram (function or
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
176 subroutine) containing point.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
177
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
178 @kindex C-M-j @r{(Fortran mode)}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
179 @findex fortran-split-line
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
180 The key @kbd{C-M-j} runs @code{fortran-split-line}, which splits
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
181 a line in the appropriate fashion for Fortran. In a non-comment line,
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
182 the second half becomes a continuation line and is indented
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
183 accordingly. In a comment line, both halves become separate comment
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
184 lines.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
185
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
186 @kindex M-^ @r{(Fortran mode)}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
187 @kindex C-c C-d @r{(Fortran mode)}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
188 @findex fortran-join-line
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
189 @kbd{M-^} or @kbd{C-c C-d} runs the command @code{fortran-join-line},
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
190 which joins a continuation line back to the previous line, roughly as
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
191 the inverse of @code{fortran-split-line}. The point must be on a
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
192 continuation line when this command is invoked.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
193
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
194 @kindex M-q @r{(Fortran mode)}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
195 @kbd{M-q} in Fortran mode fills the comment block or statement that
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
196 point is in. This removes any excess statement continuations.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
197
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
198 @node ForIndent Cont
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
199 @subsubsection Continuation Lines
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
200 @cindex Fortran continuation lines
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
201
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
202 @vindex fortran-continuation-string
97683
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
203 Most Fortran 77 compilers allow two ways of writing continuation lines.
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
204 If the first non-space character on a line is in column 5, then that
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
205 line is a continuation of the previous line. We call this @dfn{fixed
97683
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
206 form}. (In GNU Emacs we always count columns from 0; but note that
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
207 the Fortran standard counts from 1.) The variable
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
208 @code{fortran-continuation-string} specifies what character to put in
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
209 column 5. A line that starts with a tab character followed by any digit
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
210 except @samp{0} is also a continuation line. We call this style of
97683
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
211 continuation @dfn{tab format}. (Fortran 90 introduced ``free form,''
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
212 with another style of continuation lines).
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
213
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
214 @vindex indent-tabs-mode @r{(Fortran mode)}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
215 @vindex fortran-analyze-depth
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
216 @vindex fortran-tab-mode-default
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
217 Fortran mode can use either style of continuation line. When you
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
218 enter Fortran mode, it tries to deduce the proper continuation style
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
219 automatically from the buffer contents. It does this by scanning up to
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
220 @code{fortran-analyze-depth} (default 100) lines from the start of the
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
221 buffer. The first line that begins with either a tab character or six
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
222 spaces determines the choice. If the scan fails (for example, if the
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
223 buffer is new and therefore empty), the value of
97683
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
224 @code{fortran-tab-mode-default} (@code{nil} for fixed form, and
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
225 non-@code{nil} for tab format) is used. @samp{/t}
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
226 (@code{fortran-tab-mode-string}) in the mode line indicates tab format
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
227 is selected. Fortran mode sets the value of @code{indent-tabs-mode}
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
228 accordingly.
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
229
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
230 If the text on a line starts with the Fortran continuation marker
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
231 @samp{$}, or if it begins with any non-whitespace character in column
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
232 5, Fortran mode treats it as a continuation line. When you indent a
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
233 continuation line with @key{TAB}, it converts the line to the current
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
234 continuation style. When you split a Fortran statement with
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
235 @kbd{C-M-j}, the continuation marker on the newline is created according
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
236 to the continuation style.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
237
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
238 The setting of continuation style affects several other aspects of
97683
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
239 editing in Fortran mode. In fixed form mode, the minimum column
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
240 number for the body of a statement is 6. Lines inside of Fortran
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
241 blocks that are indented to larger column numbers always use only the
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
242 space character for whitespace. In tab format mode, the minimum
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
243 column number for the statement body is 8, and the whitespace before
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
244 column 8 must always consist of one tab character.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
245
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
246 @node ForIndent Num
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
247 @subsubsection Line Numbers
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
248
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
249 If a number is the first non-whitespace in the line, Fortran
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
250 indentation assumes it is a line number and moves it to columns 0
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
251 through 4. (Columns always count from 0 in GNU Emacs.)
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
252
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
253 @vindex fortran-line-number-indent
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
254 Line numbers of four digits or less are normally indented one space.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
255 The variable @code{fortran-line-number-indent} controls this; it
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
256 specifies the maximum indentation a line number can have. The default
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
257 value of the variable is 1. Fortran mode tries to prevent line number
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
258 digits passing column 4, reducing the indentation below the specified
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
259 maximum if necessary. If @code{fortran-line-number-indent} has the
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
260 value 5, line numbers are right-justified to end in column 4.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
261
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
262 @vindex fortran-electric-line-number
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
263 Simply inserting a line number is enough to indent it according to
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
264 these rules. As each digit is inserted, the indentation is recomputed.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
265 To turn off this feature, set the variable
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
266 @code{fortran-electric-line-number} to @code{nil}.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
267
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
268
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
269 @node ForIndent Conv
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
270 @subsubsection Syntactic Conventions
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
271
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
272 Fortran mode assumes that you follow certain conventions that simplify
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
273 the task of understanding a Fortran program well enough to indent it
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
274 properly:
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
275
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
276 @itemize @bullet
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
277 @item
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
278 Two nested @samp{do} loops never share a @samp{continue} statement.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
279
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
280 @item
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
281 Fortran keywords such as @samp{if}, @samp{else}, @samp{then}, @samp{do}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
282 and others are written without embedded whitespace or line breaks.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
283
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
284 Fortran compilers generally ignore whitespace outside of string
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
285 constants, but Fortran mode does not recognize these keywords if they
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
286 are not contiguous. Constructs such as @samp{else if} or @samp{end do}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
287 are acceptable, but the second word should be on the same line as the
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
288 first and not on a continuation line.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
289 @end itemize
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
290
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
291 @noindent
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
292 If you fail to follow these conventions, the indentation commands may
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
293 indent some lines unaesthetically. However, a correct Fortran program
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
294 retains its meaning when reindented even if the conventions are not
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
295 followed.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
296
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
297 @node ForIndent Vars
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
298 @subsubsection Variables for Fortran Indentation
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
299
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
300 @vindex fortran-do-indent
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
301 @vindex fortran-if-indent
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
302 @vindex fortran-structure-indent
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
303 @vindex fortran-continuation-indent
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
304 @vindex fortran-check-all-num@dots{}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
305 @vindex fortran-minimum-statement-indent@dots{}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
306 Several additional variables control how Fortran indentation works:
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
307
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
308 @table @code
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
309 @item fortran-do-indent
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
310 Extra indentation within each level of @samp{do} statement (default 3).
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
311
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
312 @item fortran-if-indent
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
313 Extra indentation within each level of @samp{if}, @samp{select case}, or
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
314 @samp{where} statements (default 3).
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
315
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
316 @item fortran-structure-indent
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
317 Extra indentation within each level of @samp{structure}, @samp{union},
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
318 @samp{map}, or @samp{interface} statements (default 3).
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
319
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
320 @item fortran-continuation-indent
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
321 Extra indentation for bodies of continuation lines (default 5).
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
322
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
323 @item fortran-check-all-num-for-matching-do
97683
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
324 In Fortran 77, a numbered @samp{do} statement is ended by any statement
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
325 with a matching line number. It is common (but not compulsory) to use a
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
326 @samp{continue} statement for this purpose. If this variable has a
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
327 non-@code{nil} value, indenting any numbered statement must check for a
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
328 @samp{do} that ends there. If you always end @samp{do} statements with
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
329 a @samp{continue} line (or if you use the more modern @samp{enddo}),
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
330 then you can speed up indentation by setting this variable to
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
331 @code{nil}. The default is @code{nil}.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
332
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
333 @item fortran-blink-matching-if
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
334 If this is @code{t}, indenting an @samp{endif} (or @samp{enddo}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
335 statement moves the cursor momentarily to the matching @samp{if} (or
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
336 @samp{do}) statement to show where it is. The default is @code{nil}.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
337
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
338 @item fortran-minimum-statement-indent-fixed
97683
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
339 Minimum indentation for Fortran statements when using fixed form
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
340 continuation line style. Statement bodies are never indented less than
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
341 this much. The default is 6.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
342
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
343 @item fortran-minimum-statement-indent-tab
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
344 Minimum indentation for Fortran statements for tab format continuation line
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
345 style. Statement bodies are never indented less than this much. The
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
346 default is 8.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
347 @end table
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
348
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
349 The variables controlling the indentation of comments are described in
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
350 the following section.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
351
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
352 @node Fortran Comments
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
353 @subsection Fortran Comments
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
354
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
355 The usual Emacs comment commands assume that a comment can follow a
97683
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
356 line of code. In Fortran 77, the standard comment syntax requires an
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
357 entire line to be just a comment. Therefore, Fortran mode replaces the
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
358 standard Emacs comment commands and defines some new variables.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
359
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
360 @vindex fortran-comment-line-start
97683
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
361 Fortran mode can also handle the Fortran 90 comment syntax where
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
362 comments start with @samp{!} and can follow other text. Because only
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
363 some Fortran 77 compilers accept this syntax, Fortran mode will not
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
364 insert such comments unless you have said in advance to do so. To do
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
365 this, set the variable @code{fortran-comment-line-start} to @samp{"!"}.
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
366 If you use an unusual value, you may also need to adjust
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
367 @code{fortran-comment-line-start-skip}.
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
368
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
369
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
370 @table @kbd
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
371 @item M-;
97590
4b2311c2836f (Fortran Comments): Replace fortran-indent-comment with comment-dwim.
Glenn Morris <rgm@gnu.org>
parents: 97588
diff changeset
372 Align comment or insert new comment (@code{comment-dwim}).
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
373
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
374 @item C-x ;
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
375 Applies to nonstandard @samp{!} comments only.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
376
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
377 @item C-c ;
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
378 Turn all lines of the region into comments, or (with argument) turn them back
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
379 into real code (@code{fortran-comment-region}).
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
380 @end table
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
381
97590
4b2311c2836f (Fortran Comments): Replace fortran-indent-comment with comment-dwim.
Glenn Morris <rgm@gnu.org>
parents: 97588
diff changeset
382 @kbd{M-;} in Fortran mode runs the standard @code{comment-dwim}.
4b2311c2836f (Fortran Comments): Replace fortran-indent-comment with comment-dwim.
Glenn Morris <rgm@gnu.org>
parents: 97588
diff changeset
383 This recognizes any kind of existing comment and aligns its text
4b2311c2836f (Fortran Comments): Replace fortran-indent-comment with comment-dwim.
Glenn Morris <rgm@gnu.org>
parents: 97588
diff changeset
384 appropriately; if there is no existing comment, a comment is inserted
4b2311c2836f (Fortran Comments): Replace fortran-indent-comment with comment-dwim.
Glenn Morris <rgm@gnu.org>
parents: 97588
diff changeset
385 and aligned. Inserting and aligning comments are not the same in
4b2311c2836f (Fortran Comments): Replace fortran-indent-comment with comment-dwim.
Glenn Morris <rgm@gnu.org>
parents: 97588
diff changeset
386 Fortran mode as in other modes.
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
387
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
388 When a new comment must be inserted, if the current line is blank, a
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
389 full-line comment is inserted. On a non-blank line, a nonstandard @samp{!}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
390 comment is inserted if you have said you want to use them. Otherwise a
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
391 full-line comment is inserted on a new line before the current line.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
392
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
393 Nonstandard @samp{!} comments are aligned like comments in other
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
394 languages, but full-line comments are different. In a standard full-line
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
395 comment, the comment delimiter itself must always appear in column zero.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
396 What can be aligned is the text within the comment. You can choose from
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
397 three styles of alignment by setting the variable
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
398 @code{fortran-comment-indent-style} to one of these values:
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
399
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
400 @vindex fortran-comment-indent-style
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
401 @vindex fortran-comment-line-extra-indent
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
402 @table @code
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
403 @item fixed
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
404 Align the text at a fixed column, which is the sum of
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
405 @code{fortran-comment-line-extra-indent} and the minimum statement
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
406 indentation. This is the default.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
407
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
408 The minimum statement indentation is
97683
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
409 @code{fortran-minimum-statement-indent-fixed} for fixed form
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
410 continuation line style and @code{fortran-minimum-statement-indent-tab}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
411 for tab format style.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
412
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
413 @item relative
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
414 Align the text as if it were a line of code, but with an additional
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
415 @code{fortran-comment-line-extra-indent} columns of indentation.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
416
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
417 @item nil
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
418 Don't move text in full-line comments automatically.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
419 @end table
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
420
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
421 @vindex fortran-comment-indent-char
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
422 In addition, you can specify the character to be used to indent within
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
423 full-line comments by setting the variable
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
424 @code{fortran-comment-indent-char} to the single-character string you want
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
425 to use.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
426
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
427 @vindex fortran-directive-re
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
428 Compiler directive lines, or preprocessor lines, have much the same
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
429 appearance as comment lines. It is important, though, that such lines
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
430 never be indented at all, no matter what the value of
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
431 @code{fortran-comment-indent-style}. The variable
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
432 @code{fortran-directive-re} is a regular expression that specifies which
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
433 lines are directives. Matching lines are never indented, and receive
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
434 distinctive font-locking.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
435
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
436 The normal Emacs comment command @kbd{C-x ;} has not been redefined. If
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
437 you use @samp{!} comments, this command can be used with them. Otherwise
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
438 it is useless in Fortran mode.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
439
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
440 @kindex C-c ; @r{(Fortran mode)}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
441 @findex fortran-comment-region
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
442 @vindex fortran-comment-region
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
443 The command @kbd{C-c ;} (@code{fortran-comment-region}) turns all the
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
444 lines of the region into comments by inserting the string @samp{C$$$} at
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
445 the front of each one. With a numeric argument, it turns the region
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
446 back into live code by deleting @samp{C$$$} from the front of each line
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
447 in it. The string used for these comments can be controlled by setting
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
448 the variable @code{fortran-comment-region}. Note that here we have an
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
449 example of a command and a variable with the same name; these two uses
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
450 of the name never conflict because in Lisp and in Emacs it is always
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
451 clear from the context which one is meant.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
452
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
453 @node Fortran Autofill
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
454 @subsection Auto Fill in Fortran Mode
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
455
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
456 Fortran mode has specialized support for Auto Fill mode, which is a
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
457 minor mode that automatically splits statements as you insert them
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
458 when they become too wide. Splitting a statement involves making
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
459 continuation lines using @code{fortran-continuation-string}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
460 (@pxref{ForIndent Cont}). This splitting happens when you type
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
461 @key{SPC}, @key{RET}, or @key{TAB}, and also in the Fortran
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
462 indentation commands. You activate Auto Fill in Fortran mode in the
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
463 normal way.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
464 @iftex
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
465 @xref{Auto Fill,,, emacs, the Emacs Manual}.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
466 @end iftex
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
467 @ifnottex
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
468 @xref{Auto Fill}.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
469 @end ifnottex
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
470
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
471 @vindex fortran-break-before-delimiters
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
472 Auto Fill breaks lines at spaces or delimiters when the lines get
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
473 longer than the desired width (the value of @code{fill-column}). The
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
474 delimiters (besides whitespace) that Auto Fill can break at are
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
475 @samp{+}, @samp{-}, @samp{/}, @samp{*}, @samp{=}, @samp{<}, @samp{>},
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
476 and @samp{,}. The line break comes after the delimiter if the
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
477 variable @code{fortran-break-before-delimiters} is @code{nil}.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
478 Otherwise (and by default), the break comes before the delimiter.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
479
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
480 To enable Auto Fill in all Fortran buffers, add
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
481 @code{turn-on-auto-fill} to @code{fortran-mode-hook}.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
482 @iftex
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
483 @xref{Hooks,,, emacs, the Emacs Manual}.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
484 @end iftex
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
485 @ifnottex
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
486 @xref{Hooks}.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
487 @end ifnottex
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
488
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
489 @node Fortran Columns
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
490 @subsection Checking Columns in Fortran
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
491
97588
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
492 @vindex fortran-line-length
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
493 In standard Fortran 77, anything beyond column 72 is ignored.
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
494 Most compilers provide an option to change this (for example,
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
495 @samp{-ffixed-line-length-N} in gfortran). Customize the variable
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
496 @code{fortran-line-length} to change the line length in Fortran mode.
97683
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
497 Anything beyond this point is font-locked as a comment. (Unless it is
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
498 inside a string: strings that extend beyond @code{fortran-line-length}
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
499 will confuse font-lock.)
97588
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
500
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
501 @table @kbd
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
502 @item C-c C-r
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
503 Display a ``column ruler'' momentarily above the current line
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
504 (@code{fortran-column-ruler}).
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
505 @item C-c C-w
97588
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
506 Split the current window horizontally temporarily so that it is
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
507 @code{fortran-line-length} columns wide
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
508 (@code{fortran-window-create-momentarily}). This may help you avoid
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
509 making lines longer than the character limit imposed by your Fortran
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
510 compiler.
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
511 @item C-u C-c C-w
97588
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
512 Split the current window horizontally so that it is
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
513 @code{fortran-line-length} columns wide (@code{fortran-window-create}).
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
514 You can then continue editing.
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
515 @item M-x fortran-strip-sequence-nos
97588
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
516 Delete all text in column @code{fortran-line-length} and beyond.
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
517 @end table
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
518
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
519 @kindex C-c C-r @r{(Fortran mode)}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
520 @findex fortran-column-ruler
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
521 The command @kbd{C-c C-r} (@code{fortran-column-ruler}) shows a column
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
522 ruler momentarily above the current line. The comment ruler is two lines
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
523 of text that show you the locations of columns with special significance in
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
524 Fortran programs. Square brackets show the limits of the columns for line
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
525 numbers, and curly brackets show the limits of the columns for the
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
526 statement body. Column numbers appear above them.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
527
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
528 Note that the column numbers count from zero, as always in GNU Emacs.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
529 As a result, the numbers may be one less than those you are familiar
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
530 with; but the positions they indicate in the line are standard for
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
531 Fortran.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
532
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
533 @vindex fortran-column-ruler-fixed
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
534 @vindex fortran-column-ruler-tabs
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
535 The text used to display the column ruler depends on the value of the
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
536 variable @code{indent-tabs-mode}. If @code{indent-tabs-mode} is
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
537 @code{nil}, then the value of the variable
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
538 @code{fortran-column-ruler-fixed} is used as the column ruler.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
539 Otherwise, the value of the variable @code{fortran-column-ruler-tab} is
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
540 displayed. By changing these variables, you can change the column ruler
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
541 display.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
542
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
543 @kindex C-c C-w @r{(Fortran mode)}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
544 @findex fortran-window-create-momentarily
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
545 @kbd{C-c C-w} (@code{fortran-window-create-momentarily}) temporarily
97588
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
546 splits the current window horizontally, making a window
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
547 @code{fortran-line-length} columns wide, so you can see any lines that
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
548 are too long. Type a space to restore the normal width.
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
549
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
550 @kindex C-u C-c C-w @r{(Fortran mode)}
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
551 @findex fortran-window-create
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
552 You can also split the window horizontally and continue editing with
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
553 the split in place. To do this, use @kbd{C-u C-c C-w} (@code{M-x
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
554 fortran-window-create}). By editing in this window you can
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
555 immediately see when you make a line too wide to be correct Fortran.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
556
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
557 @findex fortran-strip-sequence-nos
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
558 The command @kbd{M-x fortran-strip-sequence-nos} deletes all text in
97588
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
559 column @code{fortran-line-length} and beyond, on all lines in the
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
560 current buffer. This is the easiest way to get rid of old sequence
a32c3ff6e2b1 (Fortran Columns): Document `fortran-line-length'.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
561 numbers.
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
562
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
563 @node Fortran Abbrev
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
564 @subsection Fortran Keyword Abbrevs
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
565
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
566 Fortran mode provides many built-in abbrevs for common keywords and
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
567 declarations. These are the same sort of abbrev that you can define
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
568 yourself. To use them, you must turn on Abbrev mode.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
569 @iftex
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
570 @xref{Abbrevs,,, emacs, the Emacs Manual}.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
571 @end iftex
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
572 @ifnottex
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
573 @xref{Abbrevs}.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
574 @end ifnottex
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
575
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
576 The built-in abbrevs are unusual in one way: they all start with a
97683
02243cbabf8e (Fortran): Change description of free form and
Glenn Morris <rgm@gnu.org>
parents: 97590
diff changeset
577 semicolon. For example, one built-in Fortran abbrev is @samp{;c} for
84241
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
578 @samp{continue}. If you insert @samp{;c} and then insert a punctuation
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
579 character such as a space or a newline, the @samp{;c} expands automatically
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
580 to @samp{continue}, provided Abbrev mode is enabled.@refill
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
581
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
582 Type @samp{;?} or @samp{;C-h} to display a list of all the built-in
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
583 Fortran abbrevs and what they stand for.
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
584
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
585 @ignore
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
586 arch-tag: 23ed7c36-1517-4646-9235-2d5ade5f06f6
f144b998e85f Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
587 @end ignore