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
|
||||
" Maintainer: Kirill Morozov <kirill@robotix.pro>
|
||||
" 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')
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setlocal comments=://,:///,:////
|
||||
setlocal comments=:////,:///,://
|
||||
setlocal commentstring=//\ %s
|
||||
setlocal formatprg=gleam\ format\ --stdin
|
||||
|
||||
let b:undo_ftplugin = "setlocal com< cms< fp<"
|
||||
setlocal suffixesadd=.gleam
|
||||
let b:undo_ftplugin = "setlocal com< cms< fp< sua<"
|
||||
|
||||
if get(g:, "gleam_recommended_style", 1)
|
||||
setlocal expandtab
|
||||
setlocal shiftwidth=2
|
||||
setlocal smartindent
|
||||
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
|
||||
|
||||
" 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