annotate runtime/indent/fortran.vim @ 27970:212c5894b8b1 v8.2.4510

patch 8.2.4510: Vim9: shortening commands leads to confusing script Commit: https://github.com/vim/vim/commit/204852ae2adfdde10c656ca7f14e5b4207a69172 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Mar 5 12:56:44 2022 +0000 patch 8.2.4510: Vim9: shortening commands leads to confusing script Problem: Vim9: shortening commands leads to confusing script. Solution: In Vim9 script require at least ":cont" for ":continue", "const" instead of "cons", "break" instead of "brea", "catch" instead of "cat", "else" instead of "el" "elseif" instead of "elsei" "endfor" instead of "endfo" "endif" instead of "en" "endtry" instead of "endt", "finally" instead of "fina", "throw" instead of "th", "while" instead of "wh".
author Bram Moolenaar <Bram@vim.org>
date Sat, 05 Mar 2022 14:00:03 +0100
parents 34b4eb3a8458
children 57c9377b9c62
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1 " Vim indent file
7384
aea5ebf352c4 commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents: 6530
diff changeset
2 " Language: Fortran 2008 (and older: Fortran 2003, 95, 90, and 77)
22565
17c4178f26ea Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 20115
diff changeset
3 " Version: (v48) 2020 October 07
6530
435956324539 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3237
diff changeset
4 " Maintainer: Ajit J. Thakkar <ajit@unb.ca>; <http://www2.unb.ca/~ajit/>
7384
aea5ebf352c4 commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents: 6530
diff changeset
5 " Usage: For instructions, do :help fortran-indent from Vim
6530
435956324539 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3237
diff changeset
6 " Credits:
22565
17c4178f26ea Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 20115
diff changeset
7 " Version 0.1 was created in September 2000 by Ajit Thakkar.
17c4178f26ea Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 20115
diff changeset
8 " Since then, useful suggestions and contributions have been made, in order, by:
17c4178f26ea Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 20115
diff changeset
9 " Albert Oliver Serra, Takuya Fujiwara, Philipp Edelmann, Eisuke Kawashima,
17c4178f26ea Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 20115
diff changeset
10 " and Louis Cochen.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12 " Only load this indent file when no other was loaded.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
13 if exists("b:did_indent")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
14 finish
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
15 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
16 let b:did_indent = 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
17
3237
91e53bcb7946 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2908
diff changeset
18 let s:cposet=&cpoptions
91e53bcb7946 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2908
diff changeset
19 set cpoptions&vim
91e53bcb7946 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2908
diff changeset
20
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
21 setlocal indentkeys+==~end,=~case,=~if,=~else,=~do,=~where,=~elsewhere,=~select
2908
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
22 setlocal indentkeys+==~endif,=~enddo,=~endwhere,=~endselect,=~elseif
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
23 setlocal indentkeys+==~type,=~interface,=~forall,=~associate,=~block,=~enum
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
24 setlocal indentkeys+==~endforall,=~endassociate,=~endblock,=~endenum
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
25 if exists("b:fortran_indent_more") || exists("g:fortran_indent_more")
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
26 setlocal indentkeys+==~function,=~subroutine,=~module,=~contains,=~program
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
27 setlocal indentkeys+==~endfunction,=~endsubroutine,=~endmodule
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
28 setlocal indentkeys+==~endprogram
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
29 endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
31 " Determine whether this is a fixed or free format source file
7384
aea5ebf352c4 commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents: 6530
diff changeset
32 " if this hasn't been done yet using the priority:
aea5ebf352c4 commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents: 6530
diff changeset
33 " buffer-local value
aea5ebf352c4 commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents: 6530
diff changeset
34 " > global value
aea5ebf352c4 commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents: 6530
diff changeset
35 " > file extension as in Intel ifort, gcc (gfortran), NAG, Pathscale, and Cray compilers
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
36 if !exists("b:fortran_fixed_source")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
37 if exists("fortran_free_source")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
38 " User guarantees free source form
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
39 let b:fortran_fixed_source = 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
40 elseif exists("fortran_fixed_source")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
41 " User guarantees fixed source form
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
42 let b:fortran_fixed_source = 1
20115
bd021eb62e73 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10385
diff changeset
43 elseif expand("%:e") =~? '^f\%(90\|95\|03\|08\)$'
7384
aea5ebf352c4 commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents: 6530
diff changeset
44 " Free-form file extension defaults as in Intel ifort, gcc(gfortran), NAG, Pathscale, and Cray compilers
aea5ebf352c4 commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents: 6530
diff changeset
45 let b:fortran_fixed_source = 0
20115
bd021eb62e73 Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 10385
diff changeset
46 elseif expand("%:e") =~? '^\%(f\|f77\|for\)$'
7384
aea5ebf352c4 commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents: 6530
diff changeset
47 " Fixed-form file extension defaults
aea5ebf352c4 commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents: 6530
diff changeset
48 let b:fortran_fixed_source = 1
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
49 else
7384
aea5ebf352c4 commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents: 6530
diff changeset
50 " Modern fortran still allows both fixed and free source form
aea5ebf352c4 commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents: 6530
diff changeset
51 " Assume fixed source form unless signs of free source form
6530
435956324539 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3237
diff changeset
52 " are detected in the first five columns of the first s:lmax lines.
7384
aea5ebf352c4 commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents: 6530
diff changeset
53 " Detection becomes more accurate and time-consuming if more lines
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
54 " are checked. Increase the limit below if you keep lots of comments at
7384
aea5ebf352c4 commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents: 6530
diff changeset
55 " the very top of each file and you have a fast computer.
2377
878562053ba3 Update Fortran indent and syntax file. (Ajit Thakkar)
Bram Moolenaar <bram@vim.org>
parents: 1125
diff changeset
56 let s:lmax = 500
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
57 if ( s:lmax > line("$") )
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
58 let s:lmax = line("$")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
59 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
60 let b:fortran_fixed_source = 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
61 let s:ln=1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
62 while s:ln <= s:lmax
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
63 let s:test = strpart(getline(s:ln),0,5)
2377
878562053ba3 Update Fortran indent and syntax file. (Ajit Thakkar)
Bram Moolenaar <bram@vim.org>
parents: 1125
diff changeset
64 if s:test !~ '^[Cc*]' && s:test !~ '^ *[!#]' && s:test =~ '[^ 0-9\t]' && s:test !~ '^[ 0-9]*\t'
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
65 let b:fortran_fixed_source = 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
66 break
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
67 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
68 let s:ln = s:ln + 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
69 endwhile
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
70 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
71 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
72
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
73 " Define the appropriate indent function but only once
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
74 if (b:fortran_fixed_source == 1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
75 setlocal indentexpr=FortranGetFixedIndent()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
76 if exists("*FortranGetFixedIndent")
23737
34b4eb3a8458 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 22565
diff changeset
77 let &cpoptions = s:cposet
34b4eb3a8458 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 22565
diff changeset
78 unlet s:cposet
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
79 finish
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
80 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
81 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
82 setlocal indentexpr=FortranGetFreeIndent()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
83 if exists("*FortranGetFreeIndent")
23737
34b4eb3a8458 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 22565
diff changeset
84 let &cpoptions = s:cposet
34b4eb3a8458 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 22565
diff changeset
85 unlet s:cposet
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
86 finish
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
87 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
88 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
89
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
90 function FortranGetIndent(lnum)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
91 let ind = indent(a:lnum)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
92 let prevline=getline(a:lnum)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
93 " Strip tail comment
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
94 let prevstat=substitute(prevline, '!.*$', '', '')
2908
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
95 let prev2line=getline(a:lnum-1)
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
96 let prev2stat=substitute(prev2line, '!.*$', '', '')
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
97
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
98 "Indent do loops only if they are all guaranteed to be of do/end do type
1125
96cd8222a819 updated for version 7.1a
vimboss
parents: 840
diff changeset
99 if exists("b:fortran_do_enddo") || exists("g:fortran_do_enddo")
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
100 if prevstat =~? '^\s*\(\d\+\s\)\=\s*\(\a\w*\s*:\)\=\s*do\>'
7790
ca19726d5e83 commit https://github.com/vim/vim/commit/298b440930ecece38d6ea0505a3e582dc817e79b
Christian Brabandt <cb@256bit.org>
parents: 7384
diff changeset
101 let ind = ind + shiftwidth()
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
102 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
103 if getline(v:lnum) =~? '^\s*\(\d\+\s\)\=\s*end\s*do\>'
7790
ca19726d5e83 commit https://github.com/vim/vim/commit/298b440930ecece38d6ea0505a3e582dc817e79b
Christian Brabandt <cb@256bit.org>
parents: 7384
diff changeset
104 let ind = ind - shiftwidth()
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
105 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
106 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
107
10385
368468ef35cf commit https://github.com/vim/vim/commit/c0514bf4777a1d55f5785b3887c5686fd0bbe870
Christian Brabandt <cb@256bit.org>
parents: 10244
diff changeset
108 "Add a shiftwidth to statements following if, else, else if, case, class,
2908
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
109 "where, else where, forall, type, interface and associate statements
10385
368468ef35cf commit https://github.com/vim/vim/commit/c0514bf4777a1d55f5785b3887c5686fd0bbe870
Christian Brabandt <cb@256bit.org>
parents: 10244
diff changeset
110 if prevstat =~? '^\s*\(case\|class\|else\|else\s*if\|else\s*where\)\>'
2908
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
111 \ ||prevstat=~? '^\s*\(type\|interface\|associate\|enum\)\>'
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
112 \ ||prevstat=~?'^\s*\(\d\+\s\)\=\s*\(\a\w*\s*:\)\=\s*\(forall\|where\|block\)\>'
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
113 \ ||prevstat=~? '^\s*\(\d\+\s\)\=\s*\(\a\w*\s*:\)\=\s*if\>'
7790
ca19726d5e83 commit https://github.com/vim/vim/commit/298b440930ecece38d6ea0505a3e582dc817e79b
Christian Brabandt <cb@256bit.org>
parents: 7384
diff changeset
114 let ind = ind + shiftwidth()
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
115 " Remove unwanted indent after logical and arithmetic ifs
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
116 if prevstat =~? '\<if\>' && prevstat !~? '\<then\>'
7790
ca19726d5e83 commit https://github.com/vim/vim/commit/298b440930ecece38d6ea0505a3e582dc817e79b
Christian Brabandt <cb@256bit.org>
parents: 7384
diff changeset
117 let ind = ind - shiftwidth()
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
118 endif
840
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 819
diff changeset
119 " Remove unwanted indent after type( statements
2908
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
120 if prevstat =~? '^\s*type\s*('
7790
ca19726d5e83 commit https://github.com/vim/vim/commit/298b440930ecece38d6ea0505a3e582dc817e79b
Christian Brabandt <cb@256bit.org>
parents: 7384
diff changeset
121 let ind = ind - shiftwidth()
840
2c885fab04e3 updated for version 7.0e06
vimboss
parents: 819
diff changeset
122 endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
123 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
124
2908
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
125 "Indent program units unless instructed otherwise
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
126 if !exists("b:fortran_indent_less") && !exists("g:fortran_indent_less")
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
127 let prefix='\(\(pure\|impure\|elemental\|recursive\)\s\+\)\{,2}'
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
128 let type='\(\(integer\|real\|double\s\+precision\|complex\|logical'
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
129 \.'\|character\|type\|class\)\s*\S*\s\+\)\='
10244
876fbdd84e52 commit https://github.com/vim/vim/commit/2ec618c9feac4573b154510236ad8121c77d0eca
Christian Brabandt <cb@256bit.org>
parents: 10048
diff changeset
130 if prevstat =~? '^\s*\(contains\|submodule\|program\)\>'
876fbdd84e52 commit https://github.com/vim/vim/commit/2ec618c9feac4573b154510236ad8121c77d0eca
Christian Brabandt <cb@256bit.org>
parents: 10048
diff changeset
131 \ ||prevstat =~? '^\s*'.'module\>\(\s*\procedure\)\@!'
2908
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
132 \ ||prevstat =~? '^\s*'.prefix.'subroutine\>'
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
133 \ ||prevstat =~? '^\s*'.prefix.type.'function\>'
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
134 \ ||prevstat =~? '^\s*'.type.prefix.'function\>'
7790
ca19726d5e83 commit https://github.com/vim/vim/commit/298b440930ecece38d6ea0505a3e582dc817e79b
Christian Brabandt <cb@256bit.org>
parents: 7384
diff changeset
135 let ind = ind + shiftwidth()
2908
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
136 endif
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
137 if getline(v:lnum) =~? '^\s*contains\>'
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
138 \ ||getline(v:lnum)=~? '^\s*end\s*'
10244
876fbdd84e52 commit https://github.com/vim/vim/commit/2ec618c9feac4573b154510236ad8121c77d0eca
Christian Brabandt <cb@256bit.org>
parents: 10048
diff changeset
139 \ .'\(function\|subroutine\|module\|submodule\|program\)\>'
7790
ca19726d5e83 commit https://github.com/vim/vim/commit/298b440930ecece38d6ea0505a3e582dc817e79b
Christian Brabandt <cb@256bit.org>
parents: 7384
diff changeset
140 let ind = ind - shiftwidth()
2908
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
141 endif
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
142 endif
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
143
10385
368468ef35cf commit https://github.com/vim/vim/commit/c0514bf4777a1d55f5785b3887c5686fd0bbe870
Christian Brabandt <cb@256bit.org>
parents: 10244
diff changeset
144 "Subtract a shiftwidth from else, else if, elsewhere, case, class, end if,
2908
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
145 " end where, end select, end forall, end interface, end associate,
9975
03fa8a51e9dc commit https://github.com/vim/vim/commit/e4a3bcf28d92d0bde9ca227ccb40d401038185e5
Christian Brabandt <cb@256bit.org>
parents: 7790
diff changeset
146 " end enum, end type, end block and end type statements
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
147 if getline(v:lnum) =~? '^\s*\(\d\+\s\)\=\s*'
10385
368468ef35cf commit https://github.com/vim/vim/commit/c0514bf4777a1d55f5785b3887c5686fd0bbe870
Christian Brabandt <cb@256bit.org>
parents: 10244
diff changeset
148 \. '\(else\|else\s*if\|else\s*where\|case\|class\|'
2908
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
149 \. 'end\s*\(if\|where\|select\|interface\|'
6530
435956324539 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3237
diff changeset
150 \. 'type\|forall\|associate\|enum\|block\)\)\>'
7790
ca19726d5e83 commit https://github.com/vim/vim/commit/298b440930ecece38d6ea0505a3e582dc817e79b
Christian Brabandt <cb@256bit.org>
parents: 7384
diff changeset
151 let ind = ind - shiftwidth()
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
152 " Fix indent for case statement immediately after select
22565
17c4178f26ea Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 20115
diff changeset
153 if prevstat =~? '\<select\s*\(case\|type\)\>'
7790
ca19726d5e83 commit https://github.com/vim/vim/commit/298b440930ecece38d6ea0505a3e582dc817e79b
Christian Brabandt <cb@256bit.org>
parents: 7384
diff changeset
154 let ind = ind + shiftwidth()
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
155 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
156 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
157
2908
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
158 "First continuation line
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
159 if prevstat =~ '&\s*$' && prev2stat !~ '&\s*$'
7790
ca19726d5e83 commit https://github.com/vim/vim/commit/298b440930ecece38d6ea0505a3e582dc817e79b
Christian Brabandt <cb@256bit.org>
parents: 7384
diff changeset
160 let ind = ind + shiftwidth()
2908
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
161 endif
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
162 "Line after last continuation line
6530
435956324539 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 3237
diff changeset
163 if prevstat !~ '&\s*$' && prev2stat =~ '&\s*$' && prevstat !~? '\<then\>'
7790
ca19726d5e83 commit https://github.com/vim/vim/commit/298b440930ecece38d6ea0505a3e582dc817e79b
Christian Brabandt <cb@256bit.org>
parents: 7384
diff changeset
164 let ind = ind - shiftwidth()
2908
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
165 endif
fd09a9c8468e Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2377
diff changeset
166
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
167 return ind
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
168 endfunction
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
169
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
170 function FortranGetFreeIndent()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
171 "Find the previous non-blank line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
172 let lnum = prevnonblank(v:lnum - 1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
173
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
174 "Use zero indent at the top of the file
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
175 if lnum == 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
176 return 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
177 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
178
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
179 let ind=FortranGetIndent(lnum)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
180 return ind
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
181 endfunction
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
182
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
183 function FortranGetFixedIndent()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
184 let currline=getline(v:lnum)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
185 "Don't indent comments, continuation lines and labelled lines
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
186 if strpart(currline,0,6) =~ '[^ \t]'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
187 let ind = indent(v:lnum)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
188 return ind
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
189 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
190
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
191 "Find the previous line which is not blank, not a comment,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
192 "not a continuation line, and does not have a label
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
193 let lnum = v:lnum - 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
194 while lnum > 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
195 let prevline=getline(lnum)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
196 if (prevline =~ "^[C*!]") || (prevline =~ "^\s*$")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
197 \ || (strpart(prevline,5,1) !~ "[ 0]")
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
198 " Skip comments, blank lines and continuation lines
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
199 let lnum = lnum - 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
200 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
201 let test=strpart(prevline,0,5)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
202 if test =~ "[0-9]"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
203 " Skip lines with statement numbers
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
204 let lnum = lnum - 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
205 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
206 break
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
207 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
208 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
209 endwhile
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
210
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
211 "First line must begin at column 7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
212 if lnum == 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
213 return 6
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
214 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
215
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
216 let ind=FortranGetIndent(lnum)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
217 return ind
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
218 endfunction
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
219
23737
34b4eb3a8458 Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 22565
diff changeset
220 let &cpoptions = s:cposet
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
221 unlet s:cposet
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
222
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
223 " vim:sw=2 tw=130