if exists("b:current_syntax") finish endif " syntax sync minlines=255 syntax sync fromstart " Strings syntax region jai_string start='"' end='"' skip='\\"' contains=jai_escape " Escapes syntax match jai_escape contained "\\[%enrt\\"0]" " Hex syntax match jai_number "\<0x[0-9a-fA-F_]\+\>" " Float syntax match jai_number "\<\d[0-9_]*\.\d[0-9_]*\([eE][+-]\?\d\+\)\?\>" " Integer syntax match jai_number "\<\d[0-9_]*\>" " Directives syntax match jai_directive "#\<\(import\|load\|code\|run\|if\|ifx\|through\|char\|string\|type\|caller_location\|no_abc\|expand\|modify\|this\|must\|bake_arguments\|foreign\|program_export\|c_call\|no_context\|add_context\|assert\|compiler\|module_parameters\|placeholder\|deprecated\|isa\|Context\|insert\|scope_file\|no_debug\|asm\|scope_module\|scope_export\|specified\|no_padding\|complete\|library\|align\|as\|compile_time\|dump\|caller_code\|no_reset\|no_aoc\)\>" " Primitives syntax keyword jai_type \ int s8 s16 s32 s64 s128 \ u8 u16 u32 u64 \ float float32 float64 \ bool string void \ Any Type_Info Type " Keywords syntax keyword jai_keyword \ if ifx then else return case \ while for break continue it it_index \ cast xx no_check FORCE \ null true false \ operator inline using \ scope defer_pop \ enum enum_flags struct union \ no_dll no_static_library system link_always syntax keyword jai_keyword_special \ context push_context \ defer assert \ push_allocator temp " Memory related syntax keyword jai_memory \ allocations_before_this_call_will_not_be_considered_leaks \ this_allocation_is_not_a_leak " Operators syntax match jai_operator "[-+*/%&|^~!<>=(){}\[\]]=\?" syntax match jai_operator "\.\." syntax match jai_operator "->" syntax match jai_operator "::" syntax match jai_operator ":=" syntax match jai_operator ":" syntax match jai_operator ";" syntax match jai_operator "," syntax match jai_operator "\." syntax match jai_keyword_special /---/ " Constant syntax match jai_constant "\<\w\+\ze\s*::\s*[^([:lower:]]" " Procedures syntax match jai_procedure "\<\w\+\>\ze\s*::\s*\%(inline\s\+\)\?(" " Struct / enums syntax match jai_type_declaration "\<\w\+\>\ze\s*::\s*\(struct\|enum\|enum_flags\|union\)\>" " Macro Backtick syntax match jai_macro "`\w\+" " Multiline Strings syntax region jai_multiline_string \ matchgroup=jai_ms_delim \ start="#string\s\+\(\z(\k\+\)\)" \ end="\z1" \ contains=NONE \ keepend " Comments syntax match jai_line_comment "\/\/.*$" contains=NONE syntax match jai_line_comment_out "\/\/!.*$" contains=NONE syntax region jai_block_comment start="/\*" end="\*/" contains=jai_block_comment keepend " Colors highlight jai_line_comment guifg=#fe6888 highlight jai_block_comment guifg=#fe6888 highlight jai_line_comment_out guifg=#817c8d highlight jai_string guifg=#f6c177 highlight jai_multiline_string guifg=#f6c177 highlight jai_ms_delim guifg=#4293b1 highlight jai_number guifg=#8cd5ea highlight jai_directive guifg=#4293b1 highlight jai_keyword guifg=#4293b1 highlight jai_keyword_special guifg=#e64460 gui=bold highlight jai_operator guifg=#9691a2 highlight jai_procedure guifg=#dd9e9e gui=bold highlight jai_type_declaration guifg=#efac75 gui=bold highlight jai_macro guifg=#8c79e8 highlight jai_escape guifg=#4293b1 highlight jai_type guifg=#4293b1 highlight jai_memory guifg=#e84a27 gui=bold "highlight jai_constant guifg=#FFFFFF let b:current_syntax = "jai"