mirror of
https://github.com/neovim/neovim
synced 2025-07-16 09:11:51 +00:00
vim-patch:32f4973: runtime(gleam): update filetype plugin, include new compiler and syntax script
closes: vim/vim#17172
32f49738d1
Co-authored-by: Kirill Morozov <mail2kirill@gmail.com>
This commit is contained in:
committed by
Christian Clason
parent
4ddd31de14
commit
9e450000d3
25
runtime/compiler/gleam_build.vim
Normal file
25
runtime/compiler/gleam_build.vim
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
" Vim compiler file
|
||||||
|
" Language: Gleam
|
||||||
|
" Maintainer: Kirill Morozov <kirill@robotix.pro>
|
||||||
|
" Based On: https://github.com/gleam-lang/gleam.vim
|
||||||
|
" Last Change: 2025 Apr 21
|
||||||
|
|
||||||
|
if exists('current_compiler')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let current_compiler = "gleam_build"
|
||||||
|
|
||||||
|
CompilerSet makeprg=gleam\ build
|
||||||
|
|
||||||
|
" Example error message:
|
||||||
|
"
|
||||||
|
" error: Unknown variable
|
||||||
|
" ┌─ /home/michael/root/projects/tutorials/gleam/try/code/src/main.gleam:19:18
|
||||||
|
" │
|
||||||
|
" 19 │ Ok(tuple(name, spot))
|
||||||
|
" │ ^^^^ did you mean `sport`?
|
||||||
|
"
|
||||||
|
" The name `spot` is not in scope here.
|
||||||
|
CompilerSet errorformat=%Eerror:\ %m,%Wwarning:\ %m,%C\ %#┌─%#\ %f:%l:%c\ %#-%#
|
||||||
|
|
||||||
|
" vim: sw=2 sts=2 et
|
@ -2,24 +2,32 @@
|
|||||||
" Language: Gleam
|
" Language: Gleam
|
||||||
" Maintainer: Kirill Morozov <kirill@robotix.pro>
|
" Maintainer: Kirill Morozov <kirill@robotix.pro>
|
||||||
" Previous Maintainer: Trilowy (https://github.com/trilowy)
|
" Previous Maintainer: Trilowy (https://github.com/trilowy)
|
||||||
" Last Change: 2025 Apr 16
|
" Based On: https://github.com/gleam-lang/gleam.vim
|
||||||
|
" Last Change: 2025 Apr 21
|
||||||
|
|
||||||
if exists('b:did_ftplugin')
|
if exists('b:did_ftplugin')
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
let b:did_ftplugin = 1
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
setlocal comments=://,:///,:////
|
setlocal comments=:////,:///,://
|
||||||
setlocal commentstring=//\ %s
|
setlocal commentstring=//\ %s
|
||||||
setlocal formatprg=gleam\ format\ --stdin
|
setlocal formatprg=gleam\ format\ --stdin
|
||||||
|
setlocal suffixesadd=.gleam
|
||||||
let b:undo_ftplugin = "setlocal com< cms< fp<"
|
let b:undo_ftplugin = "setlocal com< cms< fp< sua<"
|
||||||
|
|
||||||
if get(g:, "gleam_recommended_style", 1)
|
if get(g:, "gleam_recommended_style", 1)
|
||||||
setlocal expandtab
|
setlocal expandtab
|
||||||
setlocal shiftwidth=2
|
setlocal shiftwidth=2
|
||||||
|
setlocal smartindent
|
||||||
setlocal softtabstop=2
|
setlocal softtabstop=2
|
||||||
let b:undo_ftplugin ..= " | setlocal et< sw< sts<"
|
setlocal tabstop=2
|
||||||
|
let b:undo_ftplugin ..= " | setlocal et< sw< si< sts< ts<"
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('current_compiler')
|
||||||
|
compiler gleam_build
|
||||||
|
let b:undo_ftplugin ..= "| compiler make"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" vim: sw=2 sts=2 et
|
" vim: sw=2 sts=2 et
|
||||||
|
97
runtime/syntax/gleam.vim
Normal file
97
runtime/syntax/gleam.vim
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
" Vim syntax file
|
||||||
|
" Language: Gleam
|
||||||
|
" Maintainer: Kirill Morozov <kirill@robotix.pro>
|
||||||
|
" Based On: https://github.com/gleam-lang/gleam.vim
|
||||||
|
" Last Change: 2025 Apr 20
|
||||||
|
|
||||||
|
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
|
||||||
|
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]*\>"
|
||||||
|
|
||||||
|
" Attribute
|
||||||
|
syntax match gleamPreProc "@[a-z][a-z_]*"
|
||||||
|
|
||||||
|
" Function definition
|
||||||
|
syntax keyword gleamKeyword fn nextgroup=gleamFunction skipwhite skipempty
|
||||||
|
syntax match gleamFunction "[a-z][a-z0-9_]*\ze\s*(" skipwhite skipnl
|
||||||
|
|
||||||
|
" Comments
|
||||||
|
syntax region gleamComment start="//" end="$" contains=gleamTodo
|
||||||
|
syntax region gleamSpecialComment start="///" end="$"
|
||||||
|
syntax region gleamSpecialComment start="////" end="$"
|
||||||
|
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
|
||||||
|
|
||||||
|
" vim: sw=2 sts=2 et
|
Reference in New Issue
Block a user