mirror of
				https://github.com/vim/vim.git
				synced 2025-10-31 09:57:14 -04:00 
			
		
		
		
	
		
			
	
	
		
			152 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
		
		
			
		
	
	
			152 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
|   | " Copyright (C) 2021 Matthew T. Ihlenfield. | ||
|  | " | ||
|  | " This program is free software: you can redistribute it and/or modify | ||
|  | " it under the terms of the GNU General Public License as published by | ||
|  | " the Free Software Foundation, either version 3 of the License, or | ||
|  | " (at your option) any later version. | ||
|  | " | ||
|  | " This program is distributed in the hope that it will be useful, | ||
|  | " but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
|  | " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||
|  | " GNU General Public License for more details. | ||
|  | " | ||
|  | " You should have received a copy of the GNU General Public License | ||
|  | " along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||
|  | " | ||
|  | " Vim syntax file | ||
|  | " Language: Poke | ||
|  | " Maintainer: Matt Ihlenfield <mtihlenfield@protonmail.com> | ||
|  | " Filenames: *.pk | ||
|  | " Latest Revision: 10 March 2021 | ||
|  | 
 | ||
|  | if exists('b:current_syntax') | ||
|  |     finish | ||
|  | endif | ||
|  | 
 | ||
|  | " Poke statement | ||
|  | syn keyword pokeStatement assert break continue return | ||
|  | syn keyword pokeStatement type unit fun method nextgroup=pokeFunction skipwhite | ||
|  | syn keyword pokeStatement var nextgroup=pokeVar skipWhite | ||
|  | 
 | ||
|  | " Identifiers | ||
|  | syn match pokeVar '\h\w*' display contained | ||
|  | 
 | ||
|  | " User defined functions | ||
|  | syn match pokeFunction '\h\w*' display contained | ||
|  | 
 | ||
|  | " Poke operators | ||
|  | syn keyword pokeOperator in sizeof as isa unmap | ||
|  | 
 | ||
|  | " Conditionals | ||
|  | syn keyword pokeConditional if else where | ||
|  | 
 | ||
|  | " Structures, unions, etc... | ||
|  | syn keyword pokeStructure struct union pinned | ||
|  | 
 | ||
|  | " Loops | ||
|  | syn keyword pokeRepeat while for | ||
|  | 
 | ||
|  | " Imports | ||
|  | syn keyword pokeLoad load | ||
|  | 
 | ||
|  | " Exceptions | ||
|  | syn keyword pokeException try catch until raise | ||
|  | 
 | ||
|  | " Exception types | ||
|  | syn keyword pokeExceptionType Exception E_generic E_out_of_bounds | ||
|  | syn keyword pokeExceptionType E_eof E_elem E_constraint | ||
|  | syn keyword pokeExceptionType E_conv E_map_bounds E_map | ||
|  | syn keyword pokeExceptionType E_div_by_zero E_no_ios E_no_return | ||
|  | syn keyword pokeExceptionType E_io E_io_flags E_assert E_overflow | ||
|  | 
 | ||
|  | " Exception codes | ||
|  | syn keyword pokeExceptionCode EC_generic EC_out_of_bounds | ||
|  | syn keyword pokeExceptionCode EC_eof EC_elem EC_constraint | ||
|  | syn keyword pokeExceptionCode EC_conv EC_map_bounds EC_map | ||
|  | syn keyword pokeExceptionCode EC_div_by_zero EC_no_ios EC_no_return | ||
|  | syn keyword pokeExceptionCode EC_io EC_io_flags EC_assert EC_overflow | ||
|  | 
 | ||
|  | " Poke builtin types | ||
|  | syn keyword pokeBuiltinType string void int uint bit nibble | ||
|  | syn keyword pokeBuiltinType byte char ushort short ulong long | ||
|  | syn keyword pokeBuiltinType uint8 uint16 uint32 uint64 | ||
|  | syn keyword pokeBuiltinType off64 uoff64 offset | ||
|  | syn keyword pokeBuiltinType Comparator POSIX_Time32 POSIX_Time64 | ||
|  | syn keyword pokeBuiltinType big little any | ||
|  | 
 | ||
|  | " Poke constants | ||
|  | syn keyword pokeConstant ENDIAN_LITTLE ENDIAN_BIG | ||
|  | syn keyword pokeConstant IOS_F_READ IOS_F_WRITE IOS_F_TRUNCATE IOS_F_CREATE | ||
|  | syn keyword pokeConstant IOS_M_RDONLY IOS_M_WRONLY IOS_M_RDWR | ||
|  | syn keyword pokeConstant load_path NULL OFFSET | ||
|  | 
 | ||
|  | " Poke std lib | ||
|  | syn keyword pokeBuiltinFunction print printf catos stoca atoi ltos reverse | ||
|  | syn keyword pokeBuiltinFunction ltrim rtrim strchr qsort crc32 alignto | ||
|  | syn keyword pokeBuiltinFunction open close flush get_ios set_ios iosize | ||
|  | syn keyword pokeBuiltinFunction rand get_endian set_endian strace exit | ||
|  | syn keyword pokeBuiltinFunction getenv | ||
|  | 
 | ||
|  | " Formats | ||
|  | 
 | ||
|  | " Special chars | ||
|  | syn match pokeSpecial "\\\([nt\\]\|\o\{1,3}\)" display contained | ||
|  | 
 | ||
|  | " Chars | ||
|  | syn match pokeChar "'[^']*'" contains=pokeSpecial | ||
|  | 
 | ||
|  | " Attributes | ||
|  | syn match pokeAttribute "\h\w*'\h\w" | ||
|  | 
 | ||
|  | " Strings | ||
|  | syn region pokeString skip=+\\\\\|\\"+ start=+"+ end=+"+ contains=pokeSpecial | ||
|  | 
 | ||
|  | " Integer literals | ||
|  | syn match pokeInteger "\<\d\+_*\d*\([LlHhBbNn]\=[Uu]\=\|[Uu]\=[LlHhBbNn]\=\)\>" | ||
|  | syn match pokeInteger "\<0[Xx]\x\+_*\x*\([LlHhBbNn]\=[Uu]\=\|[Uu]\=[LlHhBbNn]\=\)\>" | ||
|  | syn match pokeInteger "\<0[Oo]\o\+_*\o*\([LlHhBbNn]\=[Uu]\=\|[Uu]\=[LlHhBbNn]\=\)\>" | ||
|  | syn match pokeInteger "\<0[Bb][01]\+_*[01]*\([LlHhBbNn]\=[Uu]\=\|[Uu]\=[LlHhBbNn]\=\)\>" | ||
|  | 
 | ||
|  | " Units | ||
|  | syn keyword pokeBuiltinUnit b M B | ||
|  | syn keyword pokeBuiltinUnit Kb KB Mb MB Gb GB | ||
|  | syn keyword pokeBuiltinUnit Kib KiB Mib MiB Gib GiB | ||
|  | 
 | ||
|  | " Offsets | ||
|  | syn match pokeOffset "#\h\w*" contains=pokeBuiltinUnit | ||
|  | 
 | ||
|  | " Comments | ||
|  | syn keyword pokeCommentTodo TODO FIXME XXX TBD contained | ||
|  | syn match pokeLineComment "\/\/.*" contains=pokeCommentTodo,@Spell extend | ||
|  | syn region pokeComment start="/\*"  end="\*/" contains=pokeCommentTodo,@Spell fold extend | ||
|  | 
 | ||
|  | " Allow folding of blocks | ||
|  | syn region pokeBlock start="{" end="}" transparent fold | ||
|  | 
 | ||
|  | " Highlight groups | ||
|  | hi def link pokeBuiltinFunction Function | ||
|  | hi def link pokeBuiltinType Type | ||
|  | hi def link pokeBuiltinUnit Keyword | ||
|  | hi def link pokeChar Character | ||
|  | hi def link pokeComment Comment | ||
|  | hi def link pokeCommentTodo Todo | ||
|  | hi def link pokeConditional Conditional | ||
|  | hi def link pokeConstant Constant | ||
|  | hi def link pokeException Exception | ||
|  | hi def link pokeExceptionCode Constant | ||
|  | hi def link pokeExceptionType Type | ||
|  | hi def link pokeFunction Function | ||
|  | hi def link pokeInteger Number | ||
|  | hi def link pokeLineComment Comment | ||
|  | hi def link pokeLoad Include | ||
|  | hi def link pokeOffset StorageClass | ||
|  | hi def link pokeOperator Operator | ||
|  | hi def link pokeSpecial SpecialChar | ||
|  | hi def link pokeStatement Statement | ||
|  | hi def link pokeString String | ||
|  | hi def link pokeStructure Structure | ||
|  | hi def link pokeRepeat Repeat | ||
|  | hi def link pokeVar Identifier | ||
|  | 
 | ||
|  | let b:current_syntax = 'poke' |