# Define SciTE settings for Eiffel files.

filter.eiffel=Eiffel (e)|*.e|

*filter.eiffel=$(filter.eiffel)

file.patterns.eiffel=*.e

*source.patterns.eiffel=$(file.patterns.eiffel);

# Main Eiffel lexer dows indentation based folding
lexer.$(file.patterns.eiffel)=eiffel
# Alternative key word based folding has trouble with redefine and rename clauses
#lexer.$(file.patterns.eiffel)=eiffelkw

*language.eiffel=&Eiffel|e||

# These keywords are case insensitive although Eiffel has conventions for
# keywords, predefined names and predefined classes: alias, Current, BOOLEAN
# Could differentiate between these
keywordclass.eiffel=\
alias all and any as bit boolean \
check class character clone create creation current \
debug deferred div do double \
else elseif end ensure equal expanded export external \
false feature forget from frozen general \
if implies indexing infix inherit inspect integer invariant is \
language like local loop mod name nochange none not \
obsolete old once or platform pointer prefix precursor \
real redefine rename require rescue result retry \
select separate string strip then true undefine unique until \
variant void when xor

keywords.$(file.patterns.eiffel)=$(keywordclass.eiffel)

# Eiffel styles
# Default
style.eiffel.0=fore:#808080
style.eiffelkw.0=$(style.eiffel.0)
# Line comment
style.eiffel.1=$(colour.code.comment.line),$(font.code.comment.line)
style.eiffelkw.1=$(style.eiffel.1)
# Number
style.eiffel.2=$(colour.number)
style.eiffelkw.2=$(style.eiffel.2)
# Keyword
style.eiffel.3=$(colour.keyword),bold
style.eiffelkw.3=$(style.eiffel.3)
# String
style.eiffel.4=$(colour.string),$(font.monospace)
style.eiffelkw.4=$(style.eiffel.4)
# Character
style.eiffel.5=$(colour.char),$(font.monospace)
style.eiffelkw.5=$(style.eiffel.5)
# Operators
style.eiffel.6=$(colour.operator),bold
style.eiffelkw.6=$(style.eiffel.6)
# Identifier
style.eiffel.7=
style.eiffelkw.7=$(style.eiffel.7)
# End of line where string is not closed
style.eiffel.8=fore:#000000,$(font.monospace),back:#E0C0E0,eolfilled
style.eiffelkw.8=$(style.eiffel.8)
# Braces are only matched in operator style
braces.eiffel.style=6
braces.eiffelkw.style=$(braces.eiffel.style)

statement.indent.$(file.patterns.eiffel)=3 do else elsif rescue if is loop
statement.end.$(file.patterns.eiffel)=10 ;
statement.lookback.$(file.patterns.eiffel)=20
block.start.$(file.patterns.eiffel)=10 check debug deferred do from if inspect once
block.end.$(file.patterns.eiffel)=10 end

command.compile.*.e=compile "$(FileName)"