vim fortran indentexpr Ausgabe

881
MarkWayne

Seltsames Problem dabei, indentexpr=FortranGetFreeIndent()richtig eingestellt zu werden.

Das erste Mal, wenn ich eine Datei öffne (natürlich Freiform) new.f90, :setgibt es beispielsweise

: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 

Nun, wenn ich manuell :set indentexpr=FortranGetFreeIndent()und dann etwas Code schreibe

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

dann das nächste mal wenn ich die datei öffne, :set indentexprgibt indentexpr=FortranGetFreeIndent.

Es scheint also, dass "Zeichen in den ersten fünf Spalten der ersten 25 Zeilen erkannt werden" (Kommentar aus 'fortran.vim'), die Dateierweiterung jedoch nicht als .f90 erkannt wird, was die freie Form impliziert.

Danke für Ihre Hilfe.

1
By way of a >bump< --- I'm able to work around this, as described above. But it would be helpful if someone knows what might be going wrong. Thanks. MarkWayne vor 10 Jahren 0

1 Antwort auf die Frage

0
MarkWayne

Tun Sie dies (oder den Teil davon, den Sie brauchen):

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

Dann 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 

Funktioniert jedes Mal.

Möglicherweise muss dies in ~ / .vim / filetype.vim eingegeben werden - zumindest musste ich dies unter Mac OS X tun. MarkWayne vor 8 Jahren 0