# Define SciTE settings for Forth files

# These patterns conflict with fortran.properties and nncrontab.properties
# so disable these other properties files if you want to use forth.
#file.patterns.forth=*.f;*.spf
file.patterns.forth=*.forth

# add '*.tab;*.spf;' to 'source.files' variable in 'SciTEGlobal.properties'
# if you want to include these file patterns into default source file list

lexer.$(file.patterns.forth)=forth

filter.forth=Forth files (f spf)|$(file.patterns.forth)|

word.characters.$(file.patterns.forth)=$(chars.alpha)$(chars.numeric)%-

comment.block.forth=\
#comment.block.at.line.start.forth=0
comment.stream.start.forth=(
comment.stream.end.forth=)
comment.box.start.forth=\
comment.box.middle.forth=\
comment.box.end.forth=\
fold.comment=1
fold.preprocessor=1

# Forth styles

# control keywords Forth
keywords.$(file.patterns.forth)=\
AGAIN BEGIN CASE DO ELSE ENDCASE ENDOF IF LOOP OF REPEAT THEN UNTIL  WHILE \
[IF] [ELSE] [THEN] ?DO

# Keywords
keywords2.$(file.patterns.forth)=\
DUP DROP ROT SWAP OVER @ ! 2@ 2! 2DUP 2DROP 2SWAP 2OVER NIP R@ >R R> 2R@ 2>R 2R> \
0= 0< SP@ SP! W@ W! C@ C! < > = <> 0<>\
SPACE SPACES KEY? KEY THROW CATCH ABORT */ 2* /MOD CELL+ CELLS CHAR+ \
CHARS MOVE ERASE DABS TITLE HEX DECIMAL HOLD <# # #S #> SIGN \
D. . U. DUMP (.") >NUMBER ' IMMEDIATE EXIT RECURSE UNLOOP LEAVE HERE ALLOT , \
C, W, COMPILE, BRANCH, RET, LIT, DLIT, ?BRANCH, ", >MARK >RESOLVE1 <MARK >RESOLVE \
ALIGN ALIGNED USER-ALLOT USER-HERE HEADER DOES> SMUDGE HIDE :NONAME LAST-WORD \
?ERROR ERROR2 FIND1 SFIND SET-CURRENT GET-CURRENT DEFINITIONS GET-ORDER FORTH \
ONLY SET-ORDER ALSO PREVIOUS VOC-NAME. ORDER LATEST LITERAL 2LITERAL SLITERAL \
CLITERAL ?LITERAL1 ?SLITERAL1 HEX-LITERAL HEX-SLITERAL ?LITERAL2 ?SLITERAL2 SOURCE \
EndOfChunk CharAddr PeekChar IsDelimiter GetChar OnDelimiter SkipDelimiters OnNotDelimiter \
SkipWord SkipUpTo ParseWord NextWord PARSE SKIP CONSOLE-HANDLES REFILL DEPTH ?STACK \
?COMP WORD INTERPRET BYE QUIT MAIN1 EVALUATE INCLUDE-FILE INCLUDED >BODY +WORD \
WORDLIST CLASS! CLASS@ PAR! PAR@ ID. ?IMMEDIATE ?VOC IMMEDIATE VOC WordByAddrWl \
WordByAddr NLIST WORDS SAVE OPTIONS /notransl ANSI>OEM ACCEPT EMIT CR TYPE EKEY? \
EKEY EKEY>CHAR EXTERNTASK ERASE-IMPORTS ModuleName ModuleDirName ENVIRONMENT? \
DROP-EXC-HANDLER SET-EXC-HANDLER HALT ERR CLOSE-FILE CREATE-FILE CREATE-FILE-SHARED \
OPEN-FILE-SHARED DELETE-FILE FILE-POSITION FILE-SIZE OPEN-FILE READ-FILE REPOSITION-FILE \
DOS-LINES UNIX-LINES READ-LINE WRITE-FILE RESIZE-FILE WRITE-LINE ALLOCATE FREE RESIZE \
START SUSPEND RESUME STOP PAUSE MIN MAX TRUE FALSE ASCIIZ> \
R/O W/O ;CLASS ENDWITH OR AND /STRING SEARCH COMPARE EXPORT ;MODULE SPACE

# defwords
keywords3.$(file.patterns.forth)=\
VARIABLE CREATE : VALUE CONSTANT VM: M: var dvar chars OBJ \
CONSTR: DESTR: CLASS: OBJECT: POINTER \
USER USER-CREATE USER-VALUE VECT \
WNDPROC: VOCABULARY -- TASK: CEZ: MODULE:

# prewords1
keywords4.$(file.patterns.forth)=\
CHAR [CHAR] POSTPONE WITH ['] TO [COMPILE] CHAR ASCII \'

# prewords2
keywords5.$(file.patterns.forth)=\
REQUIRE WINAPI:

# string words
keywords6.$(file.patterns.forth)=\
S" ABORT" Z" " ." C"

# whitespace (SCE_FORTH_DEFAULT)
style.forth.0=$(font.monospace)
# Comment (SCE_FORTH_COMMENT)
style.forth.1=fore:#009933,$(font.comment),$(font.monospace)
# ML comment (SCE_FORTH_COMMENT_ML)
style.forth.2=fore:#007F00,$(font.comment)
# ML comment (SCE_FORTH_IDENTIFIER)
style.forth.3=fore:#000000,bold
# control (SCE_FORTH_CONTROL)
style.forth.4=fore:#00007F,bold
# Keywords (SCE_FORTH_KEYWORD)
style.forth.5=fore:#000000,$(font.monospace),bold
# defwords (SCE_FORTH_DEFWORD)
style.forth.6=fore:#FF0000,bold,$(font.monospace)
# preword1 (SCE_FORTH_PREWORD1)
style.forth.7=fore:#CC3300,bold,$(font.monospace)
# preword2 (SCE_FORTH_PREWORD2)
style.forth.8=fore:#996633,bold,$(font.monospace)
# number (SCE_FORTH_NUMBER)
style.forth.9=fore:#007F7F,$(font.monospace)
# Double quoted string (SCE_FORTH_STRING)
style.forth.10=fore:#CC3300,$(font.monospace)
# locale
style.forth.11=fore:#0000CC,$(font.monospace)

#command.compile.*.f=spf.cmd $(FileNameExt)
