" Vim syntax file " Language: EDC " Maintainer: Viktor Kojouharov " Last Change: 2007 02 24 " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded if version < 600 syntax clear elseif exists("b:current_syntax") finish endif " A bunch of useful keywords syn keyword edcBlock images data fonts collections group contained syn keyword edcBlock part parts dragable description contained syn keyword edcBlock text font fill origin size image proxy contained syn keyword edcBlock programs program styles style contained syn keyword edcBlock gradient spectra spectrum contained syn keyword edcBlock color_classes color_class rel1 rel2 contained syn keyword edcBlock items item file params externals contained syn keyword edcBlock map rotation perspective script lua_script contained syn keyword edcBlock set syn keyword edcBlock sequence link contained " LazEDC blocks syn keyword edcBlock desc rect swallow textblock box table external spacer contained syn keyword edcLabel item name alias min max type effect contained syn keyword edcLabel mouse_events repeat_events clip_to contained syn keyword edcLabel x y z confine events scale contained syn keyword edcLabel ignore_flags precise_is_inside select_mode contained syn keyword edcLabel use_alternate_font_metrics entry_mode contained syn keyword edcLabel source source2 source3 source4 contained syn keyword edcLabel source5 source6 multiline pointer_mode contained syn keyword edcLabel state visible step aspect fixed middle contained syn keyword edcLabel aspect_preference ellipsis elipsis image contained syn keyword edcLabel relative offset to to_x to_y contained syn keyword edcLabel source_visible source_clip contained syn keyword edcLabel border border_scale border_scale_by scale_hint color color2 color3 font size contained syn keyword edcLabel signal action transition in filter contained syn keyword edcLabel target after fit align contained syn keyword edcLabel text smooth inherit tag base style contained syn keyword edcLabel text_source color_class text_class contained syn keyword edcLabel spectrum angle spread normal tween contained syn keyword edcLabel padding prefer weight aspect_mode contained syn keyword edcLabel options layout position span contained syn keyword edcLabel homogeneous contained syn keyword edcLabel on perspective light perspective_on contained syn keyword edcLabel backface_cull alpha center focus zplane focal contained syn keyword edcLabel int double string external script_only contained syn keyword edcLabel insert_before insert_after contained syn keyword edcLabel script_recursion contained syn keyword edcLabel limit broadcast_signal targets target_group groups size_range contained " LazEDC synonyms syn keyword edcLabel before after ignore pointer alt_font clip contained " LazEDC shorthand syn keyword edcLazShort broadcast nobroadcast mouse nomouse repeat norepeat precise noprecise noscale vis hid contained syn keyword edcConstant COMP RAW LOSSY NONE ON_HOLD AUTOGRAB NOGRAB syn keyword edcConstant TEXT IMAGE RECT TEXTBLOCK SWALLOW GRADIENT GROUP syn keyword edcConstant SPACER syn keyword edcConstant NONE PLAIN OUTLINE SOFT_OUTLINE SHADOW PROXY syn keyword edcConstant SOFT_SHADOW OUTLINE_SHADOW OUTLINE_SOFT_SHADOW syn keyword edcConstant GLOW FAR_SHADOW FAR_SOFT_SHADOW syn keyword edcConstant BOTTOM_RIGHT BOTTOM BOTTOM_LEFT LEFT syn keyword edcConstant TOP_LEFT TOP TOP_RIGHT RIGHT syn keyword edcConstant STATE_SET ACTION_STOP SIGNAL_EMIT FOCUS_SET syn keyword edcConstant DRAG_VAL_SET DRAG_VAL_STEP DRAG_VAL_PAGE syn keyword edcConstant LINEAR SINUSOIDAL ACCELERATE DECELERATE syn keyword edcConstant LIN DECEL DIVIS BOUNCE SPRING CURRENT syn keyword edcConstant ACCEL_FAC DECEL_FAC SIN_FAC DIVISOR_INTERP syn keyword edcConstant ACCELERATE_FACTOR DECELERATE_FACTOR syn keyword edcConstant VERTICAL HORIZONTAL BOTH BOX TABLE syn keyword edcConstant EDITABLE PASSWORD "default" syn keyword edcConstant DEFAULT EXPLICIT syn keyword edcConstant SOLID syn keyword edcConstant WIDTH HEIGHT syn keyword edcTodo contained TODO FIXME XXX syn match edcLabelMatch "\w\+:" contains=edcLabel syn match edcLazSMatch "\w\+;" contains=edcLazShort syn match edcBlockMatch "\w\+\_s*{" contains=edcBlock syn match edcBlockMatch "\w\+\.\a"me=e-2 contains=edcBlock " edcCommentGroup allows adding matches for special things in comments syn cluster edcCommentGroup contains=edcTodo " String and Character constants " Highlight special characters (those which have a backslash) differently syn match edcSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" syn region edcString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=edcSpecial syn match edcFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained syn match edcFormat display "%%" contained syn region edcString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat syn match edcCharacter "L\='[^\\]'" syn match edcCharacter "L'[^']*'" contains=edcSpecial syn match edcSpecialError "L\='\\[^'\"?\\abfnrtv]'" syn match edcSpecialCharacter "L\='\\['\"?\\abfnrtv]'" syn match edcSpecialCharacter display "L\='\\\o\{1,3}'" syn match edcSpecialCharacter display "'\\x\x\{1,2}'" syn match edcSpecialCharacter display "L'\\x\x\+'" "when wanted, highlight trailing white space if exists("edc_space_errors") if !exists("edc_no_trail_space_error") syn match edcSpaceError display excludenl "\s\+$" endif if !exists("edc_no_tab_space_error") syn match edcSpaceError display " \+\t"me=e-1 endif endif "catch errors caused by wrong parenthesis and brackets syn cluster edcParenGroup contains=edcParenError,edcIncluded,edcSpecial,edcCommentSkip,edcCommentString,edcComment2String,@edcCommentGroup,edcCommentStartError,edcUserCont,edcUserLabel,edcBitField,edcCommentSkip,edcOctalZero,edcFormat,edcNumber,edcFloat,edcOctal,edcOctalError,edcNumbersCom if exists("edc_no_bracket_error") syn region edcParen transparent start='(' end=')' contains=ALLBUT,@edcParenGroup syn match edcParenError display ")" syn match edcErrInParen display contained "[{}]" else syn region edcParen transparent start='(' end=')' contains=ALLBUT,@edcParenGroup,edcErrInBracket syn match edcParenError display "[\])]" syn match edcErrInParen display contained "[\]{}]" syn region edcBracket transparent start='\[' end=']' contains=ALLBUT,@edcParenGroup,edcErrInParen syn match edcErrInBracket display contained "[);{}]" endif "integer number, or floating point number without a dot and with "f". syn case ignore syn match edcNumbers display transparent "\<\d\|\.\d" contains=edcNumber,edcFloat,edcOctalError,edcOctal " Same, but without octal error (for comments) syn match edcNumbersCom display contained transparent "\<\d\|\.\d" contains=edcNumber,edcFloat,edcOctal syn match edcNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" "hex number syn match edcNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" " Flag the first zero of an octal number as something special syn match edcOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=edcOctalZero syn match edcOctalZero display contained "\<0" syn match edcFloat display contained "\d\+f" "floating point number, with dot, optional exponent syn match edcFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" "floating point number, starting with a dot, optional exponent syn match edcFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" "floating point number, without dot, with exponent syn match edcFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" " flag an octal number with wrong digits syn match edcOctalError display contained "0\o*[89]\d*" syn case match if exists("edc_comment_strings") " A comment can contain edcString, edcCharacter and edcNumber. " But a "*/" inside a edcString in a edcComment DOES end the comment! So we " need to use a special type of edcString: edcCommentString, which also ends " on "*/", and sees a "*" at the start of the line as comment again. " Unfortunately this doesn't very well work for // type of comments :-( syntax match edcCommentSkip contained "^\s*\*\($\|\s\+\)" syntax region edcCommentString contained start=+L\=\\\@" skip="\\$" end="$" end="//"me=s-1 contains=edcComment,edcCharacter,edcParenError,edcNumbers,edcCommentError,edcSpaceError syn match edcPreCondit display "^\s*#\s*\(else\|endif\)\>" syn region edcIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ syn match edcIncluded display contained "<[^>]*>" syn match edcInclude display "^\s*#\s*include\>\s*["<]" contains=edcIncluded syn cluster edcPreProcGroup contains=edcPreCondit,edcIncluded,edcInclude,edcDefine,edcErrInParen,edcErrInBracket,edcCommentSkip,edcCommentString,edcComment2String,@edcCommentGroup,edcCommentStartError,edcParen,edcBracket,edcMulti,edcUserLabel syn cluster edcAlphaNum contains=edcSpecial,edcOctalZero,edcFormat,edcNumber,edcFloat,edcOctal,edcOctalError,edcNumbersCom,edcString syn region edcDefine start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@edcPreProcGroup syn region edcPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@edcPreProcGroup syn match edcUserLabel display "\I\i*" contained syn include @edcEmbryo syntax/embryo.vim unlet b:current_syntax syn region edcScript matchgroup=edcScriptTag start="\= 508 || !exists("did_edc_syn_inits") if version < 508 let did_edc_syn_inits = 1 command -nargs=+ HiLink hi link else command -nargs=+ HiLink hi def link endif HiLink edcFormat edcSpecial HiLink edcCommentL edcComment HiLink edcCommentStart edcComment HiLink edcLabel Label HiLink edcLazShort Label HiLink edcUserLabel Label HiLink edcConditional Conditional HiLink edcRepeat Repeat HiLink edcCharacter Character HiLink edcSpecialCharacter cSpecial HiLink edcNumber Number HiLink edcOctal Number HiLink edcOctalZero PreProc " link this to Error if you want HiLink edcFloat Float HiLink edcOctalError edcError HiLink edcParenError edcError HiLink edcErrInParen edcError HiLink edcErrInBracket edcError HiLink edcCommentError edcError HiLink edcCommentStartError edcError HiLink edcSpaceError edcError HiLink edcSpecialError edcError HiLink edcOperator Operator HiLink edcStructure Structure HiLink edcStorageClass StorageClass HiLink edcInclude Include HiLink edcPreProc PreProc HiLink edcDefine Macro HiLink edcIncluded edcString HiLink edcError Error HiLink edcBlock Function HiLink edcScriptTag Function HiLink edcLuaScriptTag Function HiLink edcPreCondit PreCondit HiLink edcConstant Constant HiLink edcCommentString edcString HiLink edcComment2String edcString HiLink edcCommentSkip edcComment HiLink edcString String HiLink edcComment Comment HiLink edcSpecial SpecialChar HiLink edcTodo Todo delcommand HiLink endif let b:current_syntax = "edc" " vim: ts=8