Mercurial > vim
annotate runtime/ftplugin/fortran.vim @ 26624:bdf11d8e3df3 v8.2.3841
patch 8.2.3841: Vim9: outdated TODO items, disabled tests that work
Commit: https://github.com/vim/vim/commit/71b768509250b12696e8cc90e5902029f1b5433d
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Dec 17 20:15:38 2021 +0000
patch 8.2.3841: Vim9: outdated TODO items, disabled tests that work
Problem: Vim9: outdated TODO items, disabled tests that work.
Solution: Remove TODO items, run tests that work now. Check that a dict
item isn't locked.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 17 Dec 2021 21:30:03 +0100 |
parents | 5c98ea5f5d6e |
children | f8e9d5023bf6 |
rev | line source |
---|---|
7 | 1 " Vim settings file |
3492 | 2 " Language: Fortran 2008 (and older: Fortran 2003, 95, 90, 77, 66) |
24387 | 3 " Version: (v53) 2021 April 06 |
5400 | 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:
5400
diff
changeset
|
5 " Usage: For instructions, do :help fortran-plugin from Vim |
2398 | 6 " Credits: |
22565 | 7 " Version 0.1 was created in September 2000 by Ajit Thakkar. |
8 " Since then, useful suggestions and contributions have been made, in order, by: | |
9 " Stefano Zacchiroli, Hendrik Merx, Ben Fritz, David Barnett, Eisuke Kawashima, | |
24387 | 10 " Doug Kearns, and Fritz Reese. |
7 | 11 |
12 " Only do these settings when not done yet for this buffer | |
13 if exists("b:did_ftplugin") | |
14 finish | |
15 endif | |
16 | |
3237 | 17 let s:cposet=&cpoptions |
18 set cpoptions&vim | |
19 | |
7 | 20 " Don't do other file type settings for this buffer |
21 let b:did_ftplugin = 1 | |
22 | |
23 " 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:
5400
diff
changeset
|
24 " 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:
5400
diff
changeset
|
25 " buffer-local value |
aea5ebf352c4
commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents:
5400
diff
changeset
|
26 " > global value |
aea5ebf352c4
commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents:
5400
diff
changeset
|
27 " > file extension as in Intel ifort, gcc (gfortran), NAG, Pathscale, and Cray compilers |
7 | 28 if !exists("b:fortran_fixed_source") |
29 if exists("fortran_free_source") | |
30 " User guarantees free source form | |
31 let b:fortran_fixed_source = 0 | |
32 elseif exists("fortran_fixed_source") | |
33 " User guarantees fixed source form | |
34 let b:fortran_fixed_source = 1 | |
20115 | 35 elseif expand("%:e") =~? '^f\%(90\|95\|03\|08\)$' |
7384
aea5ebf352c4
commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents:
5400
diff
changeset
|
36 " 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:
5400
diff
changeset
|
37 let b:fortran_fixed_source = 0 |
20115 | 38 elseif expand("%:e") =~? '^\%(f\|f77\|for\)$' |
7384
aea5ebf352c4
commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents:
5400
diff
changeset
|
39 " Fixed-form file extension defaults |
aea5ebf352c4
commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents:
5400
diff
changeset
|
40 let b:fortran_fixed_source = 1 |
7 | 41 else |
7384
aea5ebf352c4
commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents:
5400
diff
changeset
|
42 " 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:
5400
diff
changeset
|
43 " Assume fixed source form unless signs of free source form |
aea5ebf352c4
commit https://github.com/vim/vim/commit/256972a9849b5d575b62a6a71be5b6934b5b0e8b
Christian Brabandt <cb@256bit.org>
parents:
5400
diff
changeset
|
44 " are detected in the first five columns of the first s:lmax lines. |
7 | 45 " Detection becomes more accurate and time-consuming if more lines |
46 " 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:
5400
diff
changeset
|
47 " the very top of each file and you have a fast computer. |
2398 | 48 let s:lmax = 500 |
7 | 49 if ( s:lmax > line("$") ) |
50 let s:lmax = line("$") | |
51 endif | |
52 let b:fortran_fixed_source = 1 | |
53 let s:ln=1 | |
54 while s:ln <= s:lmax | |
55 let s:test = strpart(getline(s:ln),0,5) | |
2398 | 56 if s:test !~ '^[Cc*]' && s:test !~ '^ *[!#]' && s:test =~ '[^ 0-9\t]' && s:test !~ '^[ 0-9]*\t' |
7 | 57 let b:fortran_fixed_source = 0 |
58 break | |
59 endif | |
60 let s:ln = s:ln + 1 | |
61 endwhile | |
2398 | 62 unlet! s:lmax s:ln s:test |
7 | 63 endif |
64 endif | |
65 | |
66 " Set comments and textwidth according to source type | |
67 if (b:fortran_fixed_source == 1) | |
68 setlocal comments=:!,:*,:C | |
24387 | 69 " Fixed format requires a textwidth of 72 for code, |
70 " but some vendor extensions allow longer lines | |
71 if exists("fortran_extended_line_length") | |
72 setlocal tw=132 | |
73 elseif exists("fortran_cardimage_line_length") | |
74 setlocal tw=80 | |
75 else | |
76 setlocal tw=72 | |
7 | 77 " If you need to add "&" on continued lines so that the code is |
78 " compatible with both free and fixed format, then you should do so | |
79 " in column 73 and uncomment the next line | |
80 " setlocal tw=73 | |
24387 | 81 endif |
7 | 82 else |
83 setlocal comments=:! | |
5400 | 84 " Free format allows a textwidth of 132 |
85 setlocal tw=132 | |
7 | 86 endif |
87 | |
88 " Set commentstring for foldmethod=marker | |
89 setlocal cms=!%s | |
90 | |
91 " Tabs are not a good idea in Fortran so the default is to expand tabs | |
92 if !exists("fortran_have_tabs") | |
93 setlocal expandtab | |
94 endif | |
95 | |
5400 | 96 " Set 'formatoptions' to break text lines |
97 setlocal fo+=t | |
7 | 98 |
819 | 99 setlocal include=^\\c#\\=\\s*include\\s\\+ |
3492 | 100 setlocal suffixesadd+=.f08,.f03,.f95,.f90,.for,.f,.F,.f77,.ftn,.fpp |
7 | 101 |
102 " Define patterns for the matchit plugin | |
103 if !exists("b:match_words") | |
104 let s:notend = '\%(\<end\s\+\)\@<!' | |
105 let s:notselect = '\%(\<select\s\+\)\@<!' | |
106 let s:notelse = '\%(\<end\s\+\|\<else\s\+\)\@<!' | |
819 | 107 let s:notprocedure = '\%(\s\+procedure\>\)\@!' |
7 | 108 let b:match_ignorecase = 1 |
109 let b:match_words = | |
3492 | 110 \ '(:),' . |
7 | 111 \ '\<select\s*case\>:' . s:notselect. '\<case\>:\<end\s*select\>,' . |
112 \ s:notelse . '\<if\s*(.\+)\s*then\>:' . | |
113 \ '\<else\s*\%(if\s*(.\+)\s*then\)\=\>:\<end\s*if\>,'. | |
114 \ 'do\s\+\(\d\+\):\%(^\s*\)\@<=\1\s,'. | |
115 \ s:notend . '\<do\>:\<end\s*do\>,'. | |
116 \ s:notelse . '\<where\>:\<elsewhere\>:\<end\s*where\>,'. | |
117 \ s:notend . '\<type\s*[^(]:\<end\s*type\>,'. | |
3492 | 118 \ s:notend . '\<forall\>:\<end\s*forall\>,'. |
119 \ s:notend . '\<associate\>:\<end\s*associate\>,'. | |
120 \ s:notend . '\<enum\>:\<end\s*enum\>,'. | |
7 | 121 \ s:notend . '\<interface\>:\<end\s*interface\>,'. |
122 \ s:notend . '\<subroutine\>:\<end\s*subroutine\>,'. | |
123 \ s:notend . '\<function\>:\<end\s*function\>,'. | |
819 | 124 \ s:notend . '\<module\>' . s:notprocedure . ':\<end\s*module\>,'. |
7 | 125 \ s:notend . '\<program\>:\<end\s*program\>' |
126 endif | |
127 | |
128 " File filters for :browse e | |
22565 | 129 if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") |
3492 | 130 let b:browsefilter = "Fortran Files (*.f;*.for;*.f77;*.f90;*.f95;*.f03;*.f08;*.fpp;*.ftn)\t*.f;*.for;*.f77;*.f90;*.f95;*.f03;*.f08;*.fpp;*.ftn\n" . |
7 | 131 \ "All Files (*.*)\t*.*\n" |
132 endif | |
133 | |
5400 | 134 let b:undo_ftplugin = "setl fo< com< tw< cms< et< inc< sua<" |
7 | 135 \ . "| unlet! b:match_ignorecase b:match_words b:browsefilter" |
136 | |
137 let &cpoptions=s:cposet | |
138 unlet s:cposet | |
139 | |
140 " vim:sw=2 |