Выпуск vim fortran indentexpr
Странная проблема здесь с получением 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 ответ
Решение
Сделайте это (или ту его часть, которая вам нужна):
cd
mkdir .vim
cd .vim
mkdir ftplugin
cd ftplugin
vi 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
Работает - каждый раз.