mirror of
https://github.com/neovim/neovim.git
synced 2024-12-25 21:55:17 -07: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'
|