# Define SciTE settings for Fortran files.

filter.fortran=Fortran (f for f90 f95)|*.f;*.for;*.f90;*.f95|

file.patterns.f95=*.f90;*.f95
file.patterns.f77=*.f;*.for
file.patterns.fortran=$(file.patterns.f95);$(file.patterns.f77)

lexer.$(file.patterns.f95)=fortran
lexer.$(file.patterns.f77)=f77

keywordclass.fortran=allocatable allocate assignment backspace block \
blockdata call case character close common complex contains continue \
cycle data deallocate default dimension direct do double doubleprecision \
elemental else elseif elsewhere end endblock endblockdata enddo endfile \
endforall endfunction endif endinterface endmodule endprogram endselect \
endsubroutine endtype endwhere entry equivalence err exist exit external forall \
format formatted function go goto if implicit in inout include \
inquire integer intent interface intrinsic iolength iostat kind \
len logical module namelist none null nullify only open operator optional \
parameter pointer position precision print private procedure program public pure \
out read readwrite real rec recursive result return rewind save select selectcase \
sequence sequential stat status\
stop subroutine target then to type unformatted unit use where while write

keywords.$(file.patterns.f95)=$(keywordclass.fortran)
keywords.$(file.patterns.f77)=$(keywordclass.fortran)

# keywords2 is for highlighting intrinsic and extended functions
keywords2.$(file.patterns.fortran)=abs achar acos acosd adjustl adjustr \
aimag aimax0 aimin0 aint ajmax0 ajmin0 akmax0 akmin0 all allocated alog \
alog10 amax0 amax1 amin0 amin1 amod anint any asin asind associated \
atan atan2 atan2d atand bitest bitl bitlr bitrl bjtest bit_size bktest break \
btest cabs ccos cdabs cdcos cdexp cdlog cdsin cdsqrt ceiling cexp char \
clog cmplx conjg cos cosd cosh count cpu_time cshift csin csqrt dabs \
dacos dacosd dasin dasind datan datan2 datan2d datand date \
date_and_time dble dcmplx dconjg dcos dcosd dcosh dcotan ddim dexp \
dfloat dflotk dfloti dflotj digits dim dimag dint dlog dlog10 dmax1 dmin1 \
dmod dnint dot_product dprod dreal dsign dsin dsind dsinh dsqrt dtan dtand \
dtanh eoshift epsilon errsns exp exponent float floati floatj floatk floor fraction \
free huge iabs iachar iand ibclr ibits ibset ichar idate idim idint idnint ieor ifix \
iiabs iiand iibclr iibits iibset iidim iidint iidnnt iieor iifix iint iior iiqint iiqnnt iishft \
iishftc iisign ilen imax0 imax1 imin0 imin1 imod index inint inot int int1 int2 int4 \
int8 iqint iqnint ior ishft ishftc isign isnan izext jiand jibclr jibits jibset jidim jidint \
jidnnt jieor jifix jint jior jiqint jiqnnt jishft jishftc jisign jmax0 jmax1 jmin0 jmin1 \
jmod jnint jnot jzext kiabs kiand kibclr kibits kibset kidim kidint kidnnt kieor kifix \
kind kint kior kishft kishftc kisign kmax0 kmax1 kmin0 kmin1 kmod knint knot kzext \
lbound leadz len len_trim lenlge lge lgt lle llt log log10 logical lshift malloc matmul \
max max0 max1 maxexponent maxloc maxval merge min min0 min1 minexponent minloc \
minval mod modulo mvbits nearest nint not nworkers number_of_processors pack popcnt \
poppar precision present product radix random random_number random_seed range real \
repeat reshape rrspacing rshift scale scan secnds selected_int_kind \
selected_real_kind set_exponent shape sign sin sind sinh size sizeof sngl snglq spacing \
spread sqrt sum system_clock tan tand tanh tiny transfer transpose trim ubound unpack verify

# keywords3 are nonstardard, extended and user defined functions
keywords3.$(file.patterns.fortran)=cdabs cdcos cdexp cdlog cdsin cdsqrt cotan cotand \
dcmplx dconjg dcotan dcotand decode dimag dll_export dll_import doublecomplex dreal \
dvchk encode find flen flush getarg getcharqq getcl getdat getenv gettim hfix ibchng \
identifier imag int1 int2 int4 intc intrup invalop iostat_msg isha ishc ishl jfix \
lacfar locking locnear map nargs nbreak ndperr ndpexc offset ovefl peekcharqq precfill \
prompt qabs qacos qacosd qasin qasind qatan qatand qatan2 qcmplx qconjg qcos qcosd \
qcosh qdim qexp qext qextd qfloat qimag qlog qlog10 qmax1 qmin1 qmod qreal qsign qsin \
qsind qsinh qsqrt qtan qtand qtanh ran rand randu rewrite segment setdat settim system \
timer undfl unlock union val virtual volatile zabs zcos zexp zlog zsin zsqrt

#fold.comment.fortran=1
#fold.quotes.fortran=1

comment.block.fortran=!~

# "contains" and "else" need to be thinked carefully
statement.indent.$(file.patterns.fortran)=5 associate block blockdata case do enum forall \
function interface moudle program subroutine then type where
statement.end.$(file.patterns.fortran)=5 end
statement.lookback.$(file.patterns.fortran)=20

# Fortran styles
# Default
style.fortran.0=$(style.default.whitespace)
style.f77.0=$(style.default.whitespace)
style.fortran.32=
style.f77.32=
# Comment
# style.fortran.1=$(colour.code.comment.box),$(font.code.comment.box)
# style.f77.1=$(colour.code.comment.box),$(font.code.comment.box)
style.fortran.1=$(style.default.comment)
style.f77.1=$(style.default.comment)
# Number
style.fortran.2=$(style.default.number)
style.f77.2=$(style.default.number)
# Single quoted string
style.fortran.3=$(style.default.singlequote)
style.f77.3=$(style.default.singlequote)
# Double quoted string
style.fortran.4=$(style.default.doublequote)
style.f77.4=$(style.default.doublequote)
# End of line where string is not closed
style.fortran.5=$(style.default.unclosedstring)
style.f77.5=$(style.default.unclosedstring)
# Operators
style.fortran.6=$(style.default.operator)
style.f77.6=$(style.default.operator)
# Identifiers
style.fortran.7=$(style.default.identifier)
style.f77.7=$(style.default.identifie)
# Keywords
style.fortran.8=$(style.default.keyword)
style.f77.8=$(style.default.keyword)
# Keywords2
style.fortran.9=$(style.default.localkeyword)
style.f77.9=$(style.default.localkeyword)
# Keywords3
style.fortran.10=$(style.default.syskeyword)
style.f77.10=$(style.default.syskeyword)
# Preprocessor
style.fortran.11=$(style.default.preprocessor)
style.f77.11=$(style.default.preprocessor)
# Operators in .NAME. format
style.fortran.12=
style.f77.12=
# Labels
style.fortran.13=fore:#E0C0E0,$(font.monospace)
style.f77.13=fore:#B00080,$(font.monospace)
# Continuation
style.fortran.14=fore:#000000,back:#F0E080,$(font.monospace)
style.f77.14=fore:#000000,back:#F0E080,$(font.monospace)
# Braces are only matched in operator style
# braces.fortran.style=10

fc77=f77 $(anjuta.compiler.flags) -c "$(current.file.name.ext)" -o "$(current.file.name).o"
fb77=f77 $(anjuta.compiler.flags) "$(current.file.name.ext)" $(anjuta.linker.flags) -o "$(current.file.name)"
fc90=f90 $(anjuta.compiler.flags) -c "$(current.file.name.ext)" -o "$(current.file.name).o"
fb90=f90 $(anjuta.compiler.flags) "$(current.file.name.ext)" $(anjuta.linker.flags) -o "$(current.file.name)"
fexecute="$(current.full.filename)" $(anjuta.program.arguments)

command.compile.file.*.for=$(fc77)
command.build.file.*.for=$(fb77)
command.execute.file.*.for=$(fexecute)

command.compile.file.*.f=$(fc77)
command.build.file.*.f=$(fb77)
command.execute.file.*.f=$(fexecute)

command.compile.file.*.f90=$(fc90)
command.build.file.*.f90=$(fb90)
command.execute.file.*.f90=$(fexecute)

command.compile.file.*.f95=$(fc90)
command.build.file.*.f95=$(fb90)
command.execute.file.*.f95=$(fexecute)

autocomplete.fortran.ignorecase=1
autocomplete.f77.ignorecase=1
calltip.fortran.ignorecase=1
calltip.f77.ignorecase=1
