mirror of
https://github.com/tiyn/viper.nvim.git
synced 2026-04-17 02:54:48 +02:00
46 lines
1.2 KiB
Lua
46 lines
1.2 KiB
Lua
local M = {}
|
|
|
|
function M.setup()
|
|
local group = vim.api.nvim_create_augroup("ViperSyntax", { clear = true })
|
|
|
|
local function enable_viper_syntax()
|
|
if vim.b.viper_syntax_loaded then
|
|
return
|
|
end
|
|
vim.b.viper_syntax_loaded = true
|
|
|
|
vim.cmd("syntax enable")
|
|
vim.cmd("syntax clear")
|
|
|
|
vim.cmd([[
|
|
syntax keyword viperKeyword method function returns requires ensures invariant
|
|
syntax keyword viperKeyword if else while var field predicate
|
|
syntax keyword viperKeyword assert assume inhale exhale fold unfold
|
|
|
|
syntax keyword viperType Int Bool Ref
|
|
|
|
syntax match viperComment "//.*$"
|
|
syntax match viperNumber "\v\d+"
|
|
]])
|
|
|
|
vim.api.nvim_set_hl(0, "viperKeyword", { link = "Keyword" })
|
|
vim.api.nvim_set_hl(0, "viperType", { link = "Type" })
|
|
vim.api.nvim_set_hl(0, "viperComment", { link = "Comment" })
|
|
vim.api.nvim_set_hl(0, "viperNumber", { link = "Number" })
|
|
end
|
|
|
|
vim.api.nvim_create_autocmd("FileType", {
|
|
group = group,
|
|
pattern = "viper",
|
|
callback = enable_viper_syntax,
|
|
})
|
|
|
|
vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
|
|
group = group,
|
|
pattern = "*.vpr",
|
|
callback = enable_viper_syntax,
|
|
})
|
|
end
|
|
|
|
return M
|