выпуск vim fortran indentexpr

788
MarkWayne

Странная проблема здесь с получением, indentexpr=FortranGetFreeIndent()чтобы быть установленным правильно.

Первый раз, когда я открываю файл (в свободной форме, конечно), скажем new.f90, :setдает

:set --- Options --- autoindent filetype=fortran incsearch smartcase autowrite helplang=en mouse=a syntax=fortran background=dark hidden ruler textwidth=72 backup history=500 shiftwidth=3 ttyfast comments=:!,:*,:C hlsearch showcmd ttymouse=xterm2 commentstring=!%s ignorecase showmatch backspace=indent,eol,start fileencodings=ucs-bom,utf-8,default,latin1 formatoptions=tcql include=^\c#\=\s*include\s\+ indentexpr=FortranGetFixedIndent() indentkeys=0{,0},:,0#,!^F,o,O,e,=~end,=~case,=~if,=~else,=~do,=~where,=~elsewh ere,=~select,=~endif,=~enddo,=~endwhere,=~endselect,=~elseif,=~type,=~interface, =~forall,=~associate,=~block,=~enum,=~endforall,=~endassociate,=~endblock,=~ende num printoptions=paper:letter runtimepath=~/.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/ vim73,/usr/share/vim/vimfiles/after,/var/lib/vim/addons/after,~/.vim/after suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg ,.inx,.out,.toc suffixesadd=.f95,.f90,.for,.f,.F,.f77,.ftn,.fpp Press ENTER or type command to continue 

Теперь, если я вручную, :set indentexpr=FortranGetFreeIndent()а затем написать код

program testfree print *,"Test free format" end program testfree 

затем в следующий раз, когда я открываю файл, :set indentexprдает indentexpr=FortranGetFreeIndent.

Таким образом, похоже, что «признаки обнаружены в первых пяти столбцах первых 25 строк» ​​(комментарий, цитируемый из «fortran.vim»), но расширение файла не распознается как .f90, подразумевающее свободную форму.

Спасибо за вашу помощь.

1
Посредством> bump <--- я могу обойти это, как описано выше. Но было бы полезно, если кто-то знает, что может пойти не так. Благодарю. MarkWayne 11 лет назад 0

1 ответ на вопрос

0
MarkWayne

Do this (or that portion of it that you need):

cd mkdir .vim cd .vim mkdir ftplugin cd ftplugin vi fortran.vim 

Then, in fortran.vim:

let s:extfname = expand("%:e") if s:extfname ==? "f90" let fortran_free_source=1 unlet! fortran_fixed_source else let fortran_fixed_source=1 unlet! fortran_free_source endif 

Works -- every time.

Возможно, потребуется поместить это в ~ / .vim / filetype.vim - по крайней мере, это то, что я только что должен был сделать в Mac OS X. MarkWayne 9 лет назад 0