Mercurial > vim
comparison runtime/syntax/hare.vim @ 30547:1e91e26ceebf
Update runtime files
Commit: https://github.com/vim/vim/commit/9fbdbb814f4ad67a14979aba4a6a49800c2f1a99
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Sep 27 17:30:34 2022 +0100
Update runtime files
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 27 Sep 2022 18:45:05 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
30546:3107cc41afc2 | 30547:1e91e26ceebf |
---|---|
1 " PRELUDE {{{1 | |
2 " Vim syntax file | |
3 " Language: Hare | |
4 " Maintainer: Amelia Clarke <me@rsaihe.dev> | |
5 " Last Change: 2022-09-21 | |
6 | |
7 if exists("b:current_syntax") | |
8 finish | |
9 endif | |
10 let b:current_syntax = "hare" | |
11 | |
12 " SYNTAX {{{1 | |
13 syn case match | |
14 | |
15 " KEYWORDS {{{2 | |
16 syn keyword hareConditional if else match switch | |
17 syn keyword hareKeyword break continue return yield | |
18 syn keyword hareKeyword defer | |
19 syn keyword hareKeyword fn | |
20 syn keyword hareKeyword let | |
21 syn keyword hareLabel case | |
22 syn keyword hareOperator as is | |
23 syn keyword hareRepeat for | |
24 syn keyword hareStorageClass const def export nullable static | |
25 syn keyword hareStructure enum struct union | |
26 syn keyword hareTypedef type | |
27 | |
28 " C ABI. | |
29 syn keyword hareKeyword vastart vaarg vaend | |
30 | |
31 " BUILTINS {{{2 | |
32 syn keyword hareBuiltin abort | |
33 syn keyword hareBuiltin alloc free | |
34 syn keyword hareBuiltin append delete insert | |
35 syn keyword hareBuiltin assert | |
36 syn keyword hareBuiltin len offset | |
37 | |
38 " TYPES {{{2 | |
39 syn keyword hareType bool | |
40 syn keyword hareType char str | |
41 syn keyword hareType f32 f64 | |
42 syn keyword hareType u8 u16 u32 u64 i8 i16 i32 i64 | |
43 syn keyword hareType uint int | |
44 syn keyword hareType rune | |
45 syn keyword hareType uintptr | |
46 syn keyword hareType void | |
47 | |
48 " C ABI. | |
49 syn keyword hareType valist | |
50 | |
51 " LITERALS {{{2 | |
52 syn keyword hareBoolean true false | |
53 syn keyword hareNull null | |
54 | |
55 " Number literals. | |
56 syn match hareNumber "\v(\.@1<!|\.\.)\zs<\d+([Ee][+-]?\d+)?(z|[iu](8|16|32|64)?)?>" display | |
57 syn match hareNumber "\v(\.@1<!|\.\.)\zs<0b[01]+(z|[iu](8|16|32|64)?)?>" display | |
58 syn match hareNumber "\v(\.@1<!|\.\.)\zs<0o\o+(z|[iu](8|16|32|64)?)?>" display | |
59 syn match hareNumber "\v(\.@1<!|\.\.)\zs<0x\x+(z|[iu](8|16|32|64)?)?>" display | |
60 | |
61 " Floating-point number literals. | |
62 syn match hareFloat "\v<\d+\.\d+([Ee][+-]?\d+)?(f32|f64)?>" display | |
63 syn match hareFloat "\v<\d+([Ee][+-]?\d+)?(f32|f64)>" display | |
64 | |
65 " String and rune literals. | |
66 syn match hareEscape "\\[\\'"0abfnrtv]" contained display | |
67 syn match hareEscape "\v\\(x\x{2}|u\x{4}|U\x{8})" contained display | |
68 syn match hareFormat "\v\{\d*(\%\d*|(:[ 0+-]?\d*(\.\d+)?[Xbox]?))?}" contained display | |
69 syn match hareFormat "\({{\|}}\)" contained display | |
70 syn region hareRune start="'" end="'\|$" skip="\\'" contains=hareEscape display extend | |
71 syn region hareString start=+"+ end=+"\|$+ skip=+\\"+ contains=hareEscape,hareFormat display extend | |
72 syn region hareString start="`" end="`\|$" contains=hareFormat display | |
73 | |
74 " MISCELLANEOUS {{{2 | |
75 syn keyword hareTodo FIXME TODO XXX contained | |
76 | |
77 " Attributes. | |
78 syn match hareAttribute "@[a-z]*" | |
79 | |
80 " Blocks. | |
81 syn region hareBlock start="{" end="}" fold transparent | |
82 | |
83 " Comments. | |
84 syn region hareComment start="//" end="$" contains=hareCommentDoc,hareTodo,@Spell display keepend | |
85 syn region hareCommentDoc start="\[\[" end="]]\|\ze\_s" contained display | |
86 | |
87 " The size keyword can be either a builtin or a type. | |
88 syn match hareBuiltin "\v<size>\ze(\_s*//.*\_$)*\_s*\(" contains=hareComment | |
89 syn match hareType "\v<size>((\_s*//.*\_$)*\_s*\()@!" contains=hareComment | |
90 | |
91 " Trailing whitespace. | |
92 syn match hareSpaceError "\v\s+$" display excludenl | |
93 syn match hareSpaceError "\v\zs +\ze\t" display | |
94 | |
95 " Use statement. | |
96 syn region hareUse start="\v^\s*\zsuse>" end=";" contains=hareComment display | |
97 | |
98 syn match hareErrorAssertion "\v(^([^/]|//@!)*\)\_s*)@<=!\=@!" | |
99 syn match hareQuestionMark "?" | |
100 | |
101 " DEFAULT HIGHLIGHTING {{{1 | |
102 hi def link hareAttribute Keyword | |
103 hi def link hareBoolean Boolean | |
104 hi def link hareBuiltin Function | |
105 hi def link hareComment Comment | |
106 hi def link hareCommentDoc SpecialComment | |
107 hi def link hareConditional Conditional | |
108 hi def link hareEscape SpecialChar | |
109 hi def link hareFloat Float | |
110 hi def link hareFormat SpecialChar | |
111 hi def link hareKeyword Keyword | |
112 hi def link hareLabel Label | |
113 hi def link hareNull Constant | |
114 hi def link hareNumber Number | |
115 hi def link hareOperator Operator | |
116 hi def link hareQuestionMark Special | |
117 hi def link hareRepeat Repeat | |
118 hi def link hareRune Character | |
119 hi def link hareStorageClass StorageClass | |
120 hi def link hareString String | |
121 hi def link hareStructure Structure | |
122 hi def link hareTodo Todo | |
123 hi def link hareType Type | |
124 hi def link hareTypedef Typedef | |
125 hi def link hareUse PreProc | |
126 | |
127 hi def link hareSpaceError Error | |
128 autocmd InsertEnter * hi link hareSpaceError NONE | |
129 autocmd InsertLeave * hi link hareSpaceError Error | |
130 | |
131 hi def hareErrorAssertion ctermfg=red cterm=bold guifg=red gui=bold | |
132 | |
133 " vim: tabstop=8 shiftwidth=2 expandtab |