1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: FORTH 3071d4279SBram Moolenaar" Maintainer: Christian V. J. Br�ssow <[email protected]> 4*6ee8d89cSBram Moolenaar" Last Change: Sa 07 Jan 2012 21:30:55 CET 5071d4279SBram Moolenaar" Filenames: *.fs,*.ft 6071d4279SBram Moolenaar" URL: http://www.cvjb.de/comp/vim/forth.vim 7071d4279SBram Moolenaar 8*6ee8d89cSBram Moolenaar" $Id: forth.vim,v 1.13 2012/01/07 21:31:31 bruessow Exp $ 9071d4279SBram Moolenaar 10071d4279SBram Moolenaar" The list of keywords is incomplete, compared with the offical ANS 11071d4279SBram Moolenaar" wordlist. If you use this language, please improve it, and send me 12071d4279SBram Moolenaar" the patches. 13e37d50a5SBram Moolenaar" 14e37d50a5SBram Moolenaar" Before sending me patches, please download the newest version of this file 15e37d50a5SBram Moolenaar" from http://www.cvjb.de/comp/vim/forth.vim or http://www.vim.org/ (search 16e37d50a5SBram Moolenaar" for forth.vim). 17071d4279SBram Moolenaar 18071d4279SBram Moolenaar" Many Thanks to... 19071d4279SBram Moolenaar" 20*6ee8d89cSBram Moolenaar" 2012-01-07: 21*6ee8d89cSBram Moolenaar" Thilo Six <T.Six at gmx dot de> send a patch for cpoptions. 22*6ee8d89cSBram Moolenaar" See the discussion at http://thread.gmane.org/gmane.editors.vim.devel/32151 23*6ee8d89cSBram Moolenaar" 24cdf04208SBram Moolenaar" 2009-06-28: 25cdf04208SBram Moolenaar" Josh Grams send a patch to allow the parenthesis comments at the 26cdf04208SBram Moolenaar" beginning of a line. That patch also fixed a typo in one of the 27cdf04208SBram Moolenaar" comments. 28cdf04208SBram Moolenaar" 29e37d50a5SBram Moolenaar" 2008-02-09: 30e37d50a5SBram Moolenaar" Shawn K. Quinn <sjquinn at speakeasy dot net> send a big patch with 31e37d50a5SBram Moolenaar" new words commonly used in Forth programs or defined by GNU Forth. 32e37d50a5SBram Moolenaar" 333577c6faSBram Moolenaar" 2007-07-11: 343577c6faSBram Moolenaar" Benjamin Krill <ben at codiert dot org> send me a patch 353577c6faSBram Moolenaar" to highlight space errors. 363577c6faSBram Moolenaar" You can toggle this feature on through setting the 373577c6faSBram Moolenaar" flag forth_space_errors in you vimrc. If you have switched it on, 383577c6faSBram Moolenaar" you can turn off highlighting of trailing spaces in comments by 393577c6faSBram Moolenaar" setting forth_no_trail_space_error in your vimrc. If you do not want 403577c6faSBram Moolenaar" the highlighting of a tabulator following a space in comments, you 413577c6faSBram Moolenaar" can turn this off by setting forth_no_tab_space_error. 423577c6faSBram Moolenaar" 433577c6faSBram Moolenaar" 2006-05-25: 443577c6faSBram Moolenaar" Bill McCarthy <WJMc@...> and Ilya Sher <ilya-vim@...> 453577c6faSBram Moolenaar" Who found a bug in the ccomment line in 2004!!! 463577c6faSBram Moolenaar" I'm really very sorry, that it has taken two years to fix that 473577c6faSBram Moolenaar" in the offical version of this file. Shame on me. 483577c6faSBram Moolenaar" I think my face will be red the next ten years... 493577c6faSBram Moolenaar" 503577c6faSBram Moolenaar" 2006-05-21: 513577c6faSBram Moolenaar" Thomas E. Vaughan <tevaugha at ball dot com> send me a patch 523577c6faSBram Moolenaar" for the parenthesis comment word, so words with a trailing 533577c6faSBram Moolenaar" parenthesis will not start the highlighting for such comments. 548299df96SBram Moolenaar" 55071d4279SBram Moolenaar" 2003-05-10: 56071d4279SBram Moolenaar" Andrew Gaul <andrew at gaul.org> send me a patch for 57071d4279SBram Moolenaar" forthOperators. 58071d4279SBram Moolenaar" 59071d4279SBram Moolenaar" 2003-04-03: 603577c6faSBram Moolenaar" Ron Aaron <ron at ronware dot org> made updates for an 61071d4279SBram Moolenaar" improved Win32Forth support. 62071d4279SBram Moolenaar" 63071d4279SBram Moolenaar" 2002-04-22: 643577c6faSBram Moolenaar" Charles Shattuck <charley at forth dot org> helped me to settle up with the 65071d4279SBram Moolenaar" binary and hex number highlighting. 66071d4279SBram Moolenaar" 67071d4279SBram Moolenaar" 2002-04-20: 683577c6faSBram Moolenaar" Charles Shattuck <charley at forth dot org> send me some code for correctly 69071d4279SBram Moolenaar" highlighting char and [char] followed by an opening paren. He also added 70071d4279SBram Moolenaar" some words for operators, conditionals, and definitions; and added the 71071d4279SBram Moolenaar" highlighting for s" and c". 72071d4279SBram Moolenaar" 73071d4279SBram Moolenaar" 2000-03-28: 743577c6faSBram Moolenaar" John Providenza <john at probo dot com> made improvements for the 75071d4279SBram Moolenaar" highlighting of strings, and added the code for highlighting hex numbers. 76071d4279SBram Moolenaar" 77071d4279SBram Moolenaar 78071d4279SBram Moolenaar 79071d4279SBram Moolenaar" For version 5.x: Clear all syntax items 80071d4279SBram Moolenaar" For version 6.x: Quit when a syntax file was already loaded 81071d4279SBram Moolenaarif version < 600 82071d4279SBram Moolenaar syntax clear 83071d4279SBram Moolenaarelseif exists("b:current_syntax") 84071d4279SBram Moolenaar finish 85071d4279SBram Moolenaarendif 86071d4279SBram Moolenaar 87*6ee8d89cSBram Moolenaarlet s:cpo_save = &cpo 88*6ee8d89cSBram Moolenaarset cpo&vim 89*6ee8d89cSBram Moolenaar 90071d4279SBram Moolenaar" Synchronization method 918299df96SBram Moolenaarsyn sync ccomment 928299df96SBram Moolenaarsyn sync maxlines=200 93071d4279SBram Moolenaar 94071d4279SBram Moolenaar" I use gforth, so I set this to case ignore 95071d4279SBram Moolenaarsyn case ignore 96071d4279SBram Moolenaar 97071d4279SBram Moolenaar" Some special, non-FORTH keywords 98071d4279SBram Moolenaarsyn keyword forthTodo contained TODO FIXME XXX 99071d4279SBram Moolenaarsyn match forthTodo contained 'Copyright\(\s([Cc])\)\=\(\s[0-9]\{2,4}\)\=' 100071d4279SBram Moolenaar 101071d4279SBram Moolenaar" Characters allowed in keywords 102e37d50a5SBram Moolenaar" I don't know if 128-255 are allowed in ANS-FORTH 103071d4279SBram Moolenaarif version >= 600 104071d4279SBram Moolenaar setlocal iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255 105071d4279SBram Moolenaarelse 106071d4279SBram Moolenaar set iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255 107071d4279SBram Moolenaarendif 108071d4279SBram Moolenaar 1093577c6faSBram Moolenaar" when wanted, highlight trailing white space 1103577c6faSBram Moolenaarif exists("forth_space_errors") 1113577c6faSBram Moolenaar if !exists("forth_no_trail_space_error") 1123577c6faSBram Moolenaar syn match forthSpaceError display excludenl "\s\+$" 1133577c6faSBram Moolenaar endif 1143577c6faSBram Moolenaar if !exists("forth_no_tab_space_error") 1153577c6faSBram Moolenaar syn match forthSpaceError display " \+\t"me=e-1 1163577c6faSBram Moolenaar endif 1173577c6faSBram Moolenaarendif 118071d4279SBram Moolenaar 119071d4279SBram Moolenaar" Keywords 120071d4279SBram Moolenaar 121071d4279SBram Moolenaar" basic mathematical and logical operators 122071d4279SBram Moolenaarsyn keyword forthOperators + - * / MOD /MOD NEGATE ABS MIN MAX 123e37d50a5SBram Moolenaarsyn keyword forthOperators AND OR XOR NOT LSHIFT RSHIFT INVERT 2* 2/ 1+ 124e37d50a5SBram Moolenaarsyn keyword forthOperators 1- 2+ 2- 8* UNDER+ 125071d4279SBram Moolenaarsyn keyword forthOperators M+ */ */MOD M* UM* M*/ UM/MOD FM/MOD SM/REM 126e37d50a5SBram Moolenaarsyn keyword forthOperators D+ D- DNEGATE DABS DMIN DMAX D2* D2/ 127071d4279SBram Moolenaarsyn keyword forthOperators F+ F- F* F/ FNEGATE FABS FMAX FMIN FLOOR FROUND 128071d4279SBram Moolenaarsyn keyword forthOperators F** FSQRT FEXP FEXPM1 FLN FLNP1 FLOG FALOG FSIN 129071d4279SBram Moolenaarsyn keyword forthOperators FCOS FSINCOS FTAN FASIN FACOS FATAN FATAN2 FSINH 130e37d50a5SBram Moolenaarsyn keyword forthOperators FCOSH FTANH FASINH FACOSH FATANH F2* F2/ 1/F 131e37d50a5SBram Moolenaarsyn keyword forthOperators F~REL F~ABS F~ 132e37d50a5SBram Moolenaarsyn keyword forthOperators 0< 0<= 0<> 0= 0> 0>= < <= <> = > >= U< U<= 133e37d50a5SBram Moolenaarsyn keyword forthOperators U> U>= D0< D0<= D0<> D0= D0> D0>= D< D<= D<> 134e37d50a5SBram Moolenaarsyn keyword forthOperators D= D> D>= DU< DU<= DU> DU>= WITHIN ?NEGATE 135e37d50a5SBram Moolenaarsyn keyword forthOperators ?DNEGATE 136071d4279SBram Moolenaar 137071d4279SBram Moolenaar" stack manipulations 138071d4279SBram Moolenaarsyn keyword forthStack DROP NIP DUP OVER TUCK SWAP ROT -ROT ?DUP PICK ROLL 139e37d50a5SBram Moolenaarsyn keyword forthStack 2DROP 2NIP 2DUP 2OVER 2TUCK 2SWAP 2ROT 2-ROT 140e37d50a5SBram Moolenaarsyn keyword forthStack 3DUP 4DUP 5DUP 3DROP 4DROP 5DROP 8DROP 4SWAP 4ROT 141e37d50a5SBram Moolenaarsyn keyword forthStack 4-ROT 4TUCK 8SWAP 8DUP 142071d4279SBram Moolenaarsyn keyword forthRStack >R R> R@ RDROP 2>R 2R> 2R@ 2RDROP 143e37d50a5SBram Moolenaarsyn keyword forthRstack 4>R 4R> 4R@ 4RDROP 144071d4279SBram Moolenaarsyn keyword forthFStack FDROP FNIP FDUP FOVER FTUCK FSWAP FROT 145071d4279SBram Moolenaar 146071d4279SBram Moolenaar" stack pointer manipulations 147071d4279SBram Moolenaarsyn keyword forthSP SP@ SP! FP@ FP! RP@ RP! LP@ LP! 148071d4279SBram Moolenaar 149071d4279SBram Moolenaar" address operations 150071d4279SBram Moolenaarsyn keyword forthMemory @ ! +! C@ C! 2@ 2! F@ F! SF@ SF! DF@ DF! 151071d4279SBram Moolenaarsyn keyword forthAdrArith CHARS CHAR+ CELLS CELL+ CELL ALIGN ALIGNED FLOATS 152071d4279SBram Moolenaarsyn keyword forthAdrArith FLOAT+ FLOAT FALIGN FALIGNED SFLOATS SFLOAT+ 153071d4279SBram Moolenaarsyn keyword forthAdrArith SFALIGN SFALIGNED DFLOATS DFLOAT+ DFALIGN DFALIGNED 154071d4279SBram Moolenaarsyn keyword forthAdrArith MAXALIGN MAXALIGNED CFALIGN CFALIGNED 155071d4279SBram Moolenaarsyn keyword forthAdrArith ADDRESS-UNIT-BITS ALLOT ALLOCATE HERE 156071d4279SBram Moolenaarsyn keyword forthMemBlks MOVE ERASE CMOVE CMOVE> FILL BLANK 157071d4279SBram Moolenaar 158071d4279SBram Moolenaar" conditionals 159071d4279SBram Moolenaarsyn keyword forthCond IF ELSE ENDIF THEN CASE OF ENDOF ENDCASE ?DUP-IF 160071d4279SBram Moolenaarsyn keyword forthCond ?DUP-0=-IF AHEAD CS-PICK CS-ROLL CATCH THROW WITHIN 161071d4279SBram Moolenaar 162071d4279SBram Moolenaar" iterations 163071d4279SBram Moolenaarsyn keyword forthLoop BEGIN WHILE REPEAT UNTIL AGAIN 164071d4279SBram Moolenaarsyn keyword forthLoop ?DO LOOP I J K +DO U+DO -DO U-DO DO +LOOP -LOOP 165071d4279SBram Moolenaarsyn keyword forthLoop UNLOOP LEAVE ?LEAVE EXIT DONE FOR NEXT 166071d4279SBram Moolenaar 167071d4279SBram Moolenaar" new words 168e37d50a5SBram Moolenaarsyn match forthClassDef '\<:class\s*[^ \t]\+\>' 169e37d50a5SBram Moolenaarsyn match forthObjectDef '\<:object\s*[^ \t]\+\>' 170071d4279SBram Moolenaarsyn match forthColonDef '\<:m\?\s*[^ \t]\+\>' 171071d4279SBram Moolenaarsyn keyword forthEndOfColonDef ; ;M ;m 172e37d50a5SBram Moolenaarsyn keyword forthEndOfClassDef ;class 173e37d50a5SBram Moolenaarsyn keyword forthEndOfObjectDef ;object 174e37d50a5SBram Moolenaarsyn keyword forthDefine CONSTANT 2CONSTANT FCONSTANT VARIABLE 2VARIABLE 175e37d50a5SBram Moolenaarsyn keyword forthDefine FVARIABLE CREATE USER VALUE TO DEFER IS DOES> IMMEDIATE 176e37d50a5SBram Moolenaarsyn keyword forthDefine COMPILE-ONLY COMPILE RESTRICT INTERPRET POSTPONE EXECUTE 177e37d50a5SBram Moolenaarsyn keyword forthDefine LITERAL CREATE-INTERPRET/COMPILE INTERPRETATION> 178e37d50a5SBram Moolenaarsyn keyword forthDefine <INTERPRETATION COMPILATION> <COMPILATION ] LASTXT 179e37d50a5SBram Moolenaarsyn keyword forthDefine COMP' POSTPONE, FIND-NAME NAME>INT NAME?INT NAME>COMP 180e37d50a5SBram Moolenaarsyn keyword forthDefine NAME>STRING STATE C; CVARIABLE 181e37d50a5SBram Moolenaarsyn keyword forthDefine , 2, F, C, 182e37d50a5SBram Moolenaarsyn match forthDefine "\[IFDEF]" 183e37d50a5SBram Moolenaarsyn match forthDefine "\[IFUNDEF]" 184e37d50a5SBram Moolenaarsyn match forthDefine "\[THEN]" 185e37d50a5SBram Moolenaarsyn match forthDefine "\[ENDIF]" 186e37d50a5SBram Moolenaarsyn match forthDefine "\[ELSE]" 187e37d50a5SBram Moolenaarsyn match forthDefine "\[?DO]" 188e37d50a5SBram Moolenaarsyn match forthDefine "\[DO]" 189e37d50a5SBram Moolenaarsyn match forthDefine "\[LOOP]" 190e37d50a5SBram Moolenaarsyn match forthDefine "\[+LOOP]" 191e37d50a5SBram Moolenaarsyn match forthDefine "\[NEXT]" 192e37d50a5SBram Moolenaarsyn match forthDefine "\[BEGIN]" 193e37d50a5SBram Moolenaarsyn match forthDefine "\[UNTIL]" 194e37d50a5SBram Moolenaarsyn match forthDefine "\[AGAIN]" 195e37d50a5SBram Moolenaarsyn match forthDefine "\[WHILE]" 196e37d50a5SBram Moolenaarsyn match forthDefine "\[REPEAT]" 197071d4279SBram Moolenaarsyn match forthDefine "\[COMP']" 198071d4279SBram Moolenaarsyn match forthDefine "'" 199071d4279SBram Moolenaarsyn match forthDefine '\<\[\>' 200071d4279SBram Moolenaarsyn match forthDefine "\[']" 201071d4279SBram Moolenaarsyn match forthDefine '\[COMPILE]' 202071d4279SBram Moolenaar 203071d4279SBram Moolenaar" debugging 204071d4279SBram Moolenaarsyn keyword forthDebug PRINTDEBUGDATA PRINTDEBUGLINE 205071d4279SBram Moolenaarsyn match forthDebug "\<\~\~\>" 206071d4279SBram Moolenaar 207071d4279SBram Moolenaar" Assembler 208071d4279SBram Moolenaarsyn keyword forthAssembler ASSEMBLER CODE END-CODE ;CODE FLUSH-ICACHE C, 209071d4279SBram Moolenaar 210071d4279SBram Moolenaar" basic character operations 211071d4279SBram Moolenaarsyn keyword forthCharOps (.) CHAR EXPECT FIND WORD TYPE -TRAILING EMIT KEY 212071d4279SBram Moolenaarsyn keyword forthCharOps KEY? TIB CR 213071d4279SBram Moolenaar" recognize 'char (' or '[char] (' correctly, so it doesn't 214071d4279SBram Moolenaar" highlight everything after the paren as a comment till a closing ')' 215071d4279SBram Moolenaarsyn match forthCharOps '\<char\s\S\s' 216071d4279SBram Moolenaarsyn match forthCharOps '\<\[char\]\s\S\s' 217071d4279SBram Moolenaarsyn region forthCharOps start=+."\s+ skip=+\\"+ end=+"+ 218071d4279SBram Moolenaar 219071d4279SBram Moolenaar" char-number conversion 220e37d50a5SBram Moolenaarsyn keyword forthConversion <<# <# # #> #>> #S (NUMBER) (NUMBER?) CONVERT D>F 221e37d50a5SBram Moolenaarsyn keyword forthConversion D>S DIGIT DPL F>D HLD HOLD NUMBER S>D SIGN >NUMBER 222e37d50a5SBram Moolenaarsyn keyword forthConversion F>S S>F 223071d4279SBram Moolenaar 224cdf04208SBram Moolenaar" interpreter, wordbook, compiler 225071d4279SBram Moolenaarsyn keyword forthForth (LOCAL) BYE COLD ABORT >BODY >NEXT >LINK CFA >VIEW HERE 226071d4279SBram Moolenaarsyn keyword forthForth PAD WORDS VIEW VIEW> N>LINK NAME> LINK> L>NAME FORGET 227e37d50a5SBram Moolenaarsyn keyword forthForth BODY> ASSERT( ASSERT0( ASSERT1( ASSERT2( ASSERT3( ) 228071d4279SBram Moolenaarsyn region forthForth start=+ABORT"\s+ skip=+\\"+ end=+"+ 229071d4279SBram Moolenaar 230071d4279SBram Moolenaar" vocabularies 231071d4279SBram Moolenaarsyn keyword forthVocs ONLY FORTH ALSO ROOT SEAL VOCS ORDER CONTEXT #VOCS 232071d4279SBram Moolenaarsyn keyword forthVocs VOCABULARY DEFINITIONS 233071d4279SBram Moolenaar 234e37d50a5SBram Moolenaar" File keywords 235e37d50a5SBram Moolenaarsyn keyword forthFileMode R/O R/W W/O BIN 236e37d50a5SBram Moolenaarsyn keyword forthFileWords OPEN-FILE CREATE-FILE CLOSE-FILE DELETE-FILE 237e37d50a5SBram Moolenaarsyn keyword forthFileWords RENAME-FILE READ-FILE READ-LINE KEY-FILE 238e37d50a5SBram Moolenaarsyn keyword forthFileWords KEY?-FILE WRITE-FILE WRITE-LINE EMIT-FILE 239e37d50a5SBram Moolenaarsyn keyword forthFileWords FLUSH-FILE FILE-STATUS FILE-POSITION 240e37d50a5SBram Moolenaarsyn keyword forthFileWords REPOSITION-FILE FILE-SIZE RESIZE-FILE 241e37d50a5SBram Moolenaarsyn keyword forthFileWords SLURP-FILE SLURP-FID STDIN STDOUT STDERR 242e37d50a5SBram Moolenaarsyn keyword forthBlocks OPEN-BLOCKS USE LOAD --> BLOCK-OFFSET 243e37d50a5SBram Moolenaarsyn keyword forthBlocks GET-BLOCK-FID BLOCK-POSITION LIST SCR BLOCK 244e37d50a5SBram Moolenaarsyn keyword forthBlocks BUFER EMPTY-BUFFERS EMPTY-BUFFER UPDATE UPDATED? 245e37d50a5SBram Moolenaarsyn keyword forthBlocks SAVE-BUFFERS SAVE-BUFFER FLUSH THRU +LOAD +THRU 246e37d50a5SBram Moolenaarsyn keyword forthBlocks BLOCK-INCLUDED 247e37d50a5SBram Moolenaar 248071d4279SBram Moolenaar" numbers 249071d4279SBram Moolenaarsyn keyword forthMath DECIMAL HEX BASE 250071d4279SBram Moolenaarsyn match forthInteger '\<-\=[0-9.]*[0-9.]\+\>' 251e37d50a5SBram Moolenaarsyn match forthInteger '\<&-\=[0-9.]*[0-9.]\+\>' 252071d4279SBram Moolenaar" recognize hex and binary numbers, the '$' and '%' notation is for gforth 253071d4279SBram Moolenaarsyn match forthInteger '\<\$\x*\x\+\>' " *1* --- dont't mess 254071d4279SBram Moolenaarsyn match forthInteger '\<\x*\d\x*\>' " *2* --- this order! 255071d4279SBram Moolenaarsyn match forthInteger '\<%[0-1]*[0-1]\+\>' 256e37d50a5SBram Moolenaarsyn match forthFloat '\<-\=\d*[.]\=\d\+[DdEe]\d\+\>' 257e37d50a5SBram Moolenaarsyn match forthFloat '\<-\=\d*[.]\=\d\+[DdEe][-+]\d\+\>' 258e37d50a5SBram Moolenaar 259e37d50a5SBram Moolenaar" XXX If you find this overkill you can remove it. this has to come after the 260e37d50a5SBram Moolenaar" highlighting for numbers otherwise it has no effect. 261e37d50a5SBram Moolenaarsyn region forthComment start='0 \[if\]' end='\[endif\]' end='\[then\]' contains=forthTodo 262071d4279SBram Moolenaar 263071d4279SBram Moolenaar" Strings 264071d4279SBram Moolenaarsyn region forthString start=+\.*\"+ end=+"+ end=+$+ 265071d4279SBram Moolenaar" XXX 266071d4279SBram Moolenaarsyn region forthString start=+s\"+ end=+"+ end=+$+ 267071d4279SBram Moolenaarsyn region forthString start=+c\"+ end=+"+ end=+$+ 268071d4279SBram Moolenaar 269071d4279SBram Moolenaar" Comments 2703577c6faSBram Moolenaarsyn match forthComment '\\\s.*$' contains=forthTodo,forthSpaceError 2713577c6faSBram Moolenaarsyn region forthComment start='\\S\s' end='.*' contains=forthTodo,forthSpaceError 2723577c6faSBram Moolenaarsyn match forthComment '\.(\s[^)]*)' contains=forthTodo,forthSpaceError 273cdf04208SBram Moolenaarsyn region forthComment start='\(^\|\s\)\zs(\s' skip='\\)' end=')' contains=forthTodo,forthSpaceError 2743577c6faSBram Moolenaarsyn region forthComment start='/\*' end='\*/' contains=forthTodo,forthSpaceError 275071d4279SBram Moolenaar 276071d4279SBram Moolenaar" Include files 277071d4279SBram Moolenaarsyn match forthInclude '^INCLUDE\s\+\k\+' 278e37d50a5SBram Moolenaarsyn match forthInclude '^require\s\+\k\+' 279071d4279SBram Moolenaarsyn match forthInclude '^fload\s\+' 280071d4279SBram Moolenaarsyn match forthInclude '^needs\s\+' 281071d4279SBram Moolenaar 282e37d50a5SBram Moolenaar" Locals definitions 283e37d50a5SBram Moolenaarsyn region forthLocals start='{\s' start='{$' end='\s}' end='^}' 284e37d50a5SBram Moolenaarsyn match forthLocals '{ }' " otherwise, at least two spaces between 285e37d50a5SBram Moolenaarsyn region forthDeprecated start='locals|' end='|' 286e37d50a5SBram Moolenaar 287071d4279SBram Moolenaar" Define the default highlighting. 288071d4279SBram Moolenaar" For version 5.7 and earlier: only when not done already 289071d4279SBram Moolenaar" For version 5.8 and later: only when an item doesn't have highlighting yet 290071d4279SBram Moolenaarif version >= 508 || !exists("did_forth_syn_inits") 291071d4279SBram Moolenaar if version < 508 292071d4279SBram Moolenaar let did_forth_syn_inits = 1 293071d4279SBram Moolenaar command -nargs=+ HiLink hi link <args> 294071d4279SBram Moolenaar else 295071d4279SBram Moolenaar command -nargs=+ HiLink hi def link <args> 296071d4279SBram Moolenaar endif 297071d4279SBram Moolenaar 298071d4279SBram Moolenaar " The default methods for highlighting. Can be overriden later. 299071d4279SBram Moolenaar HiLink forthTodo Todo 300071d4279SBram Moolenaar HiLink forthOperators Operator 301071d4279SBram Moolenaar HiLink forthMath Number 302071d4279SBram Moolenaar HiLink forthInteger Number 303071d4279SBram Moolenaar HiLink forthFloat Float 304071d4279SBram Moolenaar HiLink forthStack Special 305071d4279SBram Moolenaar HiLink forthRstack Special 306071d4279SBram Moolenaar HiLink forthFStack Special 307071d4279SBram Moolenaar HiLink forthSP Special 308071d4279SBram Moolenaar HiLink forthMemory Function 309071d4279SBram Moolenaar HiLink forthAdrArith Function 310071d4279SBram Moolenaar HiLink forthMemBlks Function 311071d4279SBram Moolenaar HiLink forthCond Conditional 312071d4279SBram Moolenaar HiLink forthLoop Repeat 313071d4279SBram Moolenaar HiLink forthColonDef Define 314071d4279SBram Moolenaar HiLink forthEndOfColonDef Define 315071d4279SBram Moolenaar HiLink forthDefine Define 316071d4279SBram Moolenaar HiLink forthDebug Debug 317071d4279SBram Moolenaar HiLink forthAssembler Include 318071d4279SBram Moolenaar HiLink forthCharOps Character 319071d4279SBram Moolenaar HiLink forthConversion String 320071d4279SBram Moolenaar HiLink forthForth Statement 321071d4279SBram Moolenaar HiLink forthVocs Statement 322071d4279SBram Moolenaar HiLink forthString String 323071d4279SBram Moolenaar HiLink forthComment Comment 324071d4279SBram Moolenaar HiLink forthClassDef Define 325071d4279SBram Moolenaar HiLink forthEndOfClassDef Define 326071d4279SBram Moolenaar HiLink forthObjectDef Define 327071d4279SBram Moolenaar HiLink forthEndOfObjectDef Define 328071d4279SBram Moolenaar HiLink forthInclude Include 329e37d50a5SBram Moolenaar HiLink forthLocals Type " nothing else uses type and locals must stand out 330e37d50a5SBram Moolenaar HiLink forthDeprecated Error " if you must, change to Type 331e37d50a5SBram Moolenaar HiLink forthFileMode Function 332e37d50a5SBram Moolenaar HiLink forthFileWords Statement 333e37d50a5SBram Moolenaar HiLink forthBlocks Statement 3343577c6faSBram Moolenaar HiLink forthSpaceError Error 335071d4279SBram Moolenaar 336071d4279SBram Moolenaar delcommand HiLink 337071d4279SBram Moolenaarendif 338071d4279SBram Moolenaar 339071d4279SBram Moolenaarlet b:current_syntax = "forth" 340071d4279SBram Moolenaar 341*6ee8d89cSBram Moolenaarlet &cpo = s:cpo_save 342*6ee8d89cSBram Moolenaarunlet s:cpo_save 343071d4279SBram Moolenaar" vim:ts=8:sw=4:nocindent:smartindent: 344