mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-03 17:24:29 +00: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'
 |