vim-patch:9.2.0551: filetype: Tolk files are not recognized

Problem:  filetype: Tolk files are not recognized
Solution: Detect *.tolk files as tolk filetype, include a syntax and
          filetype plugin (redavy)

Tolk is a new-generation language for writing smart contracts on TON
blockchain, which is vim/vim#1 in speed among other chains.

Reference:
https://docs.ton.org/blockchain-basics/tolk/overview

closes: vim/vim#20320

b9bba99712

Co-authored-by: redavy <hello.redavy@proton.me>
This commit is contained in:
zeertzjq
2026-05-29 08:51:55 +08:00
parent 4c70ee0256
commit df1f8a60cf
4 changed files with 61 additions and 0 deletions

22
runtime/ftplugin/tolk.vim Normal file
View File

@@ -0,0 +1,22 @@
" Vim filetype plugin file
" Language: Tolk
" Maintainer: redavy <hello.redavy@proton.me>
" Upstream: https://github.com/redavy/vim-tolk
" Last Update: 24 May 2026
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
setlocal commentstring=//\ %s
if get(g:, 'tolk_recommended_style', get(g:, 'recommended_style', 1))
setlocal tabstop=2
setlocal shiftwidth=2
setlocal expandtab
setlocal softtabstop=2
setlocal cindent
endif
let b:undo_ftplugin = "setlocal commentstring< tabstop< shiftwidth< expandtab< softtabstop< cindent<"

View File

@@ -1350,6 +1350,7 @@ local extension = {
tiltfile = 'tiltfile',
tla = 'tla',
tli = 'tli',
tolk = 'tolk',
toml = 'toml',
tpp = 'tpp',
treetop = 'treetop',

37
runtime/syntax/tolk.vim Normal file
View File

@@ -0,0 +1,37 @@
" Vim syntax file
" Language: Tolk
" Maintainer: redavy <hello.redavy@proton.me>
" Upstream: https://github.com/redavy/vim-tolk
" Last Update: 28 May 2026
if exists("b:current_syntax")
finish
endif
" Keywords
syn keyword tolkKeyword do if as fun asm get try var val lazy
syn keyword tolkKeyword else enum true tolk const false throw
syn keyword tolkKeyword redef while catch return assert import
syn keyword tolkKeyword global repeat contract mutate struct
syn keyword tolkKeyword match type null void never
" Strings
syn region tolkString start=+"+ end=+"+
syn region tolkString start=+'+ end=+'+
" Numbers
syn match tolkNumber "\<[0-9]\+\>"
syn match tolkNumber "\<0[xX][0-9a-fA-F]\+\>"
syn match tolkNumber "\<[0-9]\+\.[0-9]\+\>"
" Comments
syn match tolkComment "//.*$"
syn region tolkComment start="/\*" end="\*/"
" Highlights
hi link tolkKeyword Keyword
hi link tolkString String
hi link tolkNumber Number
hi link tolkComment Comment
let b:current_syntax = "tolk"

View File

@@ -903,6 +903,7 @@ func s:GetFilenameChecks() abort
\ 'tla': ['file.tla'],
\ 'tli': ['file.tli'],
\ 'tmux': ['tmuxfile.conf', '.tmuxfile.conf', '.tmux-file.conf', '.tmux.conf', 'tmux-file.conf', 'tmux.conf', 'tmux.conf.local'],
\ 'tolk': ['file.tolk'],
\ 'toml': ['file.toml', 'uv.lock', 'Gopkg.lock', 'Pipfile', '/home/user/.cargo/config', '.black',
\ 'any/containers/containers.conf', 'any/containers/containers.conf.d/file.conf',
\ 'any/containers/containers.conf.modules/file.conf', 'any/containers/containers.conf.modules/any/file.conf',