Странная проблема здесь с получением, 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, подразумевающее свободную форму.
Спасибо за вашу помощь.
Посредством> 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