mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 01:34:25 +00:00 
			
		
		
		
	Problem:  hare runtime files outdated
Solution: runtime(hare): update hare.vim to match upstream
          (Amelia Clarke)
closes: vim/vim#14836
35dfe58a54
Co-authored-by: Amelia Clarke <selene@perilune.dev>
		
	
		
			
				
	
	
		
			158 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			158 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
" Vim syntax file.
 | 
						|
" Language:    Hare
 | 
						|
" Maintainer:  Amelia Clarke <selene@perilune.dev>
 | 
						|
" Last Change: 2024-05-10
 | 
						|
" Upstream:    https://git.sr.ht/~sircmpwn/hare.vim
 | 
						|
 | 
						|
if exists('b:current_syntax')
 | 
						|
  finish
 | 
						|
endif
 | 
						|
syn include @haredoc syntax/haredoc.vim
 | 
						|
let b:current_syntax = 'hare'
 | 
						|
 | 
						|
" Syntax {{{1
 | 
						|
syn case match
 | 
						|
syn iskeyword @,48-57,@-@,_
 | 
						|
 | 
						|
" Keywords {{{2
 | 
						|
syn keyword hareConditional else if match switch
 | 
						|
syn keyword hareDefine def
 | 
						|
syn keyword hareInclude use
 | 
						|
syn keyword hareKeyword break continue return yield
 | 
						|
syn keyword hareKeyword case
 | 
						|
syn keyword hareKeyword const let
 | 
						|
syn keyword hareKeyword defer
 | 
						|
syn keyword hareKeyword export static
 | 
						|
syn keyword hareKeyword fn
 | 
						|
syn keyword hareOperator as is
 | 
						|
syn keyword hareRepeat for
 | 
						|
syn keyword hareTypedef type
 | 
						|
 | 
						|
" Attributes.
 | 
						|
syn keyword hareAttribute @fini @init @test
 | 
						|
syn keyword hareAttribute @offset @packed
 | 
						|
syn keyword hareAttribute @symbol
 | 
						|
syn keyword hareAttribute @threadlocal
 | 
						|
 | 
						|
" Builtins.
 | 
						|
syn keyword hareBuiltin abort assert
 | 
						|
syn keyword hareBuiltin align len offset
 | 
						|
syn keyword hareBuiltin alloc free
 | 
						|
syn keyword hareBuiltin append delete insert
 | 
						|
syn keyword hareBuiltin vaarg vaend vastart
 | 
						|
 | 
						|
" Types {{{2
 | 
						|
syn keyword hareType bool
 | 
						|
syn keyword hareType done
 | 
						|
syn keyword hareType f32 f64
 | 
						|
syn keyword hareType i8 i16 i32 i64 int
 | 
						|
syn keyword hareType never
 | 
						|
syn keyword hareType opaque
 | 
						|
syn keyword hareType rune str
 | 
						|
syn keyword hareType u8 u16 u32 u64 uint
 | 
						|
syn keyword hareType uintptr
 | 
						|
syn keyword hareType valist
 | 
						|
syn keyword hareType void
 | 
						|
 | 
						|
" Other types.
 | 
						|
syn keyword hareStorageClass nullable
 | 
						|
syn keyword hareStructure enum struct union
 | 
						|
 | 
						|
" Literals {{{2
 | 
						|
syn keyword hareBoolean false true
 | 
						|
syn keyword hareConstant null
 | 
						|
 | 
						|
" Integer literals.
 | 
						|
syn match hareNumber '\v<%(0|[1-9]%(_?\d)*)%([Ee]\+?\d+)?%([iu]%(8|16|32|64)?|z)?>' display
 | 
						|
syn match hareNumber '\v<0b[01]%(_?[01])*%([iu]%(8|16|32|64)?|z)?>' display
 | 
						|
syn match hareNumber '\v<0o\o%(_?\o)*%([iu]%(8|16|32|64)?|z)?>' display
 | 
						|
syn match hareNumber '\v<0x\x%(_?\x)*%([iu]%(8|16|32|64)?|z)?>' display
 | 
						|
 | 
						|
" Floating-point literals.
 | 
						|
syn match hareFloat '\v<%(0|[1-9]%(_?\d)*)\.\d%(_?\d)*%([Ee][+-]?\d+)?%(f32|f64)?>' display
 | 
						|
syn match hareFloat '\v<%(0|[1-9]%(_?\d)*)%([Ee][+-]?\d+)?%(f32|f64)>' display
 | 
						|
syn match hareFloat '\v<0x\x%(_?\x)*%(\.\x%(_?\x)*)?[Pp][+-]?\d+%(f32|f64)?>' display
 | 
						|
 | 
						|
" Rune and string literals.
 | 
						|
syn region hareRune start="'" skip="\\'" end="'" contains=hareEscape
 | 
						|
syn region hareString start='"' skip='\\"' end='"' contains=hareEscape,hareFormat
 | 
						|
syn region hareString start='`' end='`' contains=hareFormat
 | 
						|
 | 
						|
" Escape sequences.
 | 
						|
syn match hareEscape '\\[0abfnrtv\\'"]' contained
 | 
						|
syn match hareEscape '\v\\%(x\x{2}|u\x{4}|U\x{8})' contained display
 | 
						|
 | 
						|
" Format sequences.
 | 
						|
syn match hareFormat '\v\{\d*%(:%(\.?\d+|[ +\-=Xbefgox]|F[.2ESUs]|_%(.|\\%([0abfnrtv\\'"]|x\x{2}|u\x{4}|U\x{8})))*)?}' contained contains=hareEscape display
 | 
						|
syn match hareFormat '{\d*%\d*}' contained display
 | 
						|
syn match hareFormat '{{\|}}' contained display
 | 
						|
 | 
						|
" Miscellaneous {{{2
 | 
						|
 | 
						|
" Comments.
 | 
						|
syn region hareComment start='//' end='$' contains=hareTodo,@haredoc,@Spell display
 | 
						|
syn keyword hareTodo FIXME TODO XXX contained
 | 
						|
 | 
						|
" Identifiers.
 | 
						|
syn match hareDelimiter '::' display
 | 
						|
syn match hareName '\<\h\w*\>' nextgroup=@harePostfix skipempty skipwhite transparent
 | 
						|
 | 
						|
" Labels.
 | 
						|
syn match hareLabel ':\h\w*\>' display
 | 
						|
 | 
						|
" Match `size` as a type unless it is followed by an open paren.
 | 
						|
syn match hareType '\<size\>' display
 | 
						|
syn match hareBuiltin '\<size\ze(' display
 | 
						|
 | 
						|
" Postfix expressions.
 | 
						|
syn cluster harePostfix contains=hareErrorTest,hareField,hareIndex,hareParens
 | 
						|
syn match hareErrorTest '!=\@!' contained nextgroup=@harePostfix skipempty skipwhite
 | 
						|
syn match hareErrorTest '?' nextgroup=@harePostfix skipempty skipwhite
 | 
						|
syn match hareField '\.\w*\>'hs=s+1 contained contains=hareNumber nextgroup=@harePostfix skipempty skipwhite
 | 
						|
syn region hareIndex start='\[' end=']' contained nextgroup=@harePostfix skipempty skipwhite transparent
 | 
						|
syn region hareParens start='(' end=')' nextgroup=@harePostfix skipempty skipwhite transparent
 | 
						|
 | 
						|
" Whitespace errors.
 | 
						|
syn match hareSpaceError '^ \+\ze\t' display
 | 
						|
syn match hareSpaceError excludenl '\s\+$' containedin=ALL display
 | 
						|
 | 
						|
" Folding {{{3
 | 
						|
syn region hareBlock start='{' end='}' fold transparent
 | 
						|
 | 
						|
" Default highlighting {{{1
 | 
						|
hi def link hareAttribute PreProc
 | 
						|
hi def link hareBoolean Boolean
 | 
						|
hi def link hareBuiltin Operator
 | 
						|
hi def link hareComment Comment
 | 
						|
hi def link hareConditional Conditional
 | 
						|
hi def link hareConstant Constant
 | 
						|
hi def link hareDefine Define
 | 
						|
hi def link hareDelimiter Delimiter
 | 
						|
hi def link hareErrorTest Special
 | 
						|
hi def link hareEscape SpecialChar
 | 
						|
hi def link hareFloat Float
 | 
						|
hi def link hareFormat SpecialChar
 | 
						|
hi def link hareInclude Include
 | 
						|
hi def link hareKeyword Keyword
 | 
						|
hi def link hareLabel Special
 | 
						|
hi def link hareNumber Number
 | 
						|
hi def link hareOperator Operator
 | 
						|
hi def link hareRepeat Repeat
 | 
						|
hi def link hareRune Character
 | 
						|
hi def link hareStorageClass StorageClass
 | 
						|
hi def link hareString String
 | 
						|
hi def link hareStructure Structure
 | 
						|
hi def link hareTodo Todo
 | 
						|
hi def link hareType Type
 | 
						|
hi def link hareTypedef Typedef
 | 
						|
 | 
						|
" Highlight embedded haredoc references.
 | 
						|
hi! def link haredocRefValid SpecialComment
 | 
						|
 | 
						|
" Highlight whitespace errors by default.
 | 
						|
if get(g:, 'hare_space_error', 1)
 | 
						|
  hi def link hareSpaceError Error
 | 
						|
endif
 | 
						|
 | 
						|
" vim: et sts=2 sw=2 ts=8
 |