summaryrefslogtreecommitdiff
path: root/mnv/runtime/syntax/gleam.mnv
diff options
context:
space:
mode:
authorMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-04 12:41:27 +0300
committerMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-04 12:41:27 +0300
commit4f2d36194b4f299aa7509d815c07121039ea833b (patch)
treef3ded014bad3a4c76ff6a22b8726ebaab68c3d13 /mnv/runtime/syntax/gleam.mnv
parent5b578e70c314723a3cde5c9bfc2be0bf1dadc93b (diff)
downloadProject-Tick-4f2d36194b4f299aa7509d815c07121039ea833b.tar.gz
Project-Tick-4f2d36194b4f299aa7509d815c07121039ea833b.zip
NOISSUE change uvim folder name to mnv
Signed-off-by: Mehmet Samet Duman <yongdohyun@projecttick.org>
Diffstat (limited to 'mnv/runtime/syntax/gleam.mnv')
-rw-r--r--mnv/runtime/syntax/gleam.mnv98
1 files changed, 98 insertions, 0 deletions
diff --git a/mnv/runtime/syntax/gleam.mnv b/mnv/runtime/syntax/gleam.mnv
new file mode 100644
index 0000000000..55105269b4
--- /dev/null
+++ b/mnv/runtime/syntax/gleam.mnv
@@ -0,0 +1,98 @@
+" MNV syntax file
+" Language: Gleam
+" Maintainer: Kirill Morozov <kirill@robotix.pro>
+" Based On: https://github.com/gleam-lang/gleam.mnv
+" Last Change: 2025 Apr 20
+" 2025 May 15 Add @Spell clusters #17324
+
+if exists("b:current_syntax")
+ finish
+endif
+let b:current_syntax = "gleam"
+
+syntax case match
+
+" Keywords
+syntax keyword gleamConditional case if
+syntax keyword gleamConstant const
+syntax keyword gleamDebug echo
+syntax keyword gleamException panic assert todo
+syntax keyword gleamInclude import
+syntax keyword gleamKeyword as let use
+syntax keyword gleamStorageClass pub opaque
+syntax keyword gleamType type
+
+" Number
+"" Int
+syntax match gleamNumber "\<-\=\%(0\|\%(\d\|\d_\d\)\+\)\>"
+
+"" Binary
+syntax match gleamNumber "\<-\=0[bB]_\?\%([01]\|[01]_[01]\)\+\>"
+
+"" Octet
+syntax match gleamNumber "\<-\=0[oO]\?_\?\%(\o\|\o_\o\)\+\>"
+
+"" Hexadecimal
+syntax match gleamNumber "\<-\=0[xX]_\?\%(\x\|\x_\x\)\+\>"
+
+"" Float
+syntax match gleamFloat "\(0*[1-9][0-9_]*\|0\)\.\(0*[1-9][0-9_]*\|0\)\(e-\=0*[1-9][0-9_]*\)\="
+
+" String
+syntax region gleamString start=/"/ end=/"/ contains=gleamSpecial,@Spell
+syntax match gleamSpecial '\\.' contained
+
+" Operators
+"" Basic
+syntax match gleamOperator "[-+/*]\.\=\|[%=]"
+
+"" Arrows + Pipeline
+syntax match gleamOperator "<-\|[-|]>"
+
+"" Bool
+syntax match gleamOperator "&&\|||"
+
+"" Comparison
+syntax match gleamOperator "[<>]=\=\.\=\|[=!]="
+
+"" Misc
+syntax match gleamOperator "\.\.\|<>\||"
+
+" Type
+syntax match gleamIdentifier "\<[A-Z][a-zA-Z0-9]*\>" contains=@NoSpell
+
+" Attribute
+syntax match gleamPreProc "@[a-z][a-z_]*" contains=@NoSpell
+
+" Function definition
+syntax keyword gleamKeyword fn nextgroup=gleamFunction skipwhite skipempty
+syntax match gleamFunction "[a-z][a-z0-9_]*\ze\s*(" skipwhite skipnl contains=@NoSpell
+
+" Comments
+syntax region gleamComment start="//" end="$" contains=gleamTodo,@Spell
+syntax region gleamSpecialComment start="///" end="$" contains=@Spell
+syntax region gleamSpecialComment start="////" end="$" contains=@Spell
+syntax keyword gleamTodo contained TODO FIXME XXX NB NOTE
+
+" Highlight groups
+highlight link gleamComment Comment
+highlight link gleamConditional Conditional
+highlight link gleamConstant Constant
+highlight link gleamDebug Debug
+highlight link gleamException Exception
+highlight link gleamFloat Float
+highlight link gleamFunction Function
+highlight link gleamIdentifier Identifier
+highlight link gleamInclude Include
+highlight link gleamKeyword Keyword
+highlight link gleamNumber Number
+highlight link gleamOperator Operator
+highlight link gleamPreProc PreProc
+highlight link gleamSpecial Special
+highlight link gleamSpecialComment SpecialComment
+highlight link gleamStorageClass StorageClass
+highlight link gleamString String
+highlight link gleamTodo Todo
+highlight link gleamType Type
+
+" mnv: sw=2 sts=2 et