"SfR Fresh" - the SfR Freeware/Shareware Archive 
Member "vim72/runtime/indent/README.txt" of archive vim-7.2.tar.gz:
As a special service "SfR Fresh" has tried to format the requested source page into HTML format using source code syntax highlighting with prefixed line numbers.
Alternatively you can here view or download the uninterpreted source code file.
That can be also achieved for any archive member file by clicking within an archive contents listing on the first character of the file(path) respectively on the according byte size field.
1 This directory contains files to automatically compute the indent for a
2 type of file.
3
4 If you want to add your own indent file for your personal use, read the docs
5 at ":help indent-expression". Looking at the existing files should give you
6 inspiration.
7
8 If you make a new indent file which would be useful for others, please send it
9 to Bram@vim.org. Include instructions for detecting the file type for this
10 language, by file name extension or by checking a few lines in the file.
11 And please stick to the rules below.
12
13 If you have remarks about an existing file, send them to the maintainer of
14 that file. Only when you get no response send a message to Bram@vim.org.
15
16 If you are the maintainer of an indent file and make improvements, e-mail the
17 new version to Bram@vim.org.
18
19
20 Rules for making an indent file:
21
22 You should use this check for "b:did_indent":
23
24 " Only load this indent file when no other was loaded yet.
25 if exists("b:did_indent")
26 finish
27 endif
28 let b:did_indent = 1
29
30 Always use ":setlocal" to set 'indentexpr'. This avoids it being carried over
31 to other buffers.
32
33 To trigger the indenting after typing a word like "endif", add the word to the
34 'cinkeys' option with "+=".
35
36 You normally set 'indentexpr' to evaluate a function and then define that
37 function. That function only needs to be defined once for as long as Vim is
38 running. Add a test if the function exists and use ":finish", like this:
39 if exists("*GetMyIndent")
40 finish
41 endif
42
43 The user may have several options set unlike you, try to write the file such
44 that it works with any option settings. Also be aware of certain features not
45 being compiled in.