04.06.2025
This commit is contained in:
parent
d4c839302b
commit
27416cef99
15 changed files with 190 additions and 205 deletions
61
nvim/lua/syntax/hjson.lua
Normal file
61
nvim/lua/syntax/hjson.lua
Normal file
|
@ -0,0 +1,61 @@
|
|||
-- ~/.config/nvim/after/syntax/hjson.lua
|
||||
-- Или путь плагина: ~/.config/nvim/plugin/hjson.lua
|
||||
|
||||
vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
|
||||
pattern = "*.hjson",
|
||||
callback = function()
|
||||
vim.b.current_syntax = "hjson"
|
||||
|
||||
-- Очистка предыдущих правил
|
||||
vim.cmd("syntax clear")
|
||||
|
||||
-- Комментарии (высший приоритет)
|
||||
vim.cmd([[ syntax match hjsonLineComment "\/\/.*" ]])
|
||||
vim.cmd([[ syntax match hjsonLineComment "#.*" ]])
|
||||
vim.cmd([[ syntax region hjsonComment start="/\*" end="\*/" ]])
|
||||
|
||||
-- Строки
|
||||
vim.cmd([[ syntax region hjsonString matchgroup=hjsonQuote start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=hjsonEscape ]])
|
||||
vim.cmd([[ syntax region hjsonString matchgroup=hjsonQuote start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=hjsonEscape ]])
|
||||
vim.cmd([[ syntax region hjsonMLString matchgroup=hjsonQuote start=/'''/ end=/'''/ ]])
|
||||
|
||||
-- Числа
|
||||
vim.cmd([[ syntax match hjsonNumber "-\=\<\%(0\|[1-9]\d*\)\%(\.\d\+\)\=\%([eE][-+]\=\d\+\)\=\>" ]])
|
||||
|
||||
-- Булевы значения и null
|
||||
vim.cmd([[ syntax keyword hjsonBoolean true false ]])
|
||||
vim.cmd([[ syntax keyword hjsonNull null ]])
|
||||
|
||||
-- Ключи объектов
|
||||
vim.cmd([[ syntax match hjsonKey "[^][{}:,\"'\s]\+" contained ]])
|
||||
vim.cmd([[ syntax match hjsonKeyUnquoted "[^][{}:,\"'\s]\+:"he=e-1 contains=hjsonKey,hjsonNoise ]])
|
||||
|
||||
-- Пунктуация
|
||||
vim.cmd([[ syntax match hjsonNoise "[{}\[\],:]" ]])
|
||||
|
||||
-- Escape-последовательности
|
||||
vim.cmd([[ syntax match hjsonEscape "\\[\\\"'/bfnrt]" contained ]])
|
||||
vim.cmd([[ syntax match hjsonEscape "\\u\x\{4}" contained ]])
|
||||
|
||||
-- Строки без кавычек (низший приоритет)
|
||||
vim.cmd([[ syntax match hjsonStringUQ "[^][{}:,\"'\s]\+" contains=@NoSpell ]])
|
||||
|
||||
-- Сворачивание структур
|
||||
vim.cmd([[ syntax region hjsonObject matchgroup=hjsonBraces start="{" end="}" transparent fold ]])
|
||||
vim.cmd([[ syntax region hjsonArray matchgroup=hjsonBraces start="\[" end="\]" transparent fold ]])
|
||||
|
||||
-- Подсветка
|
||||
vim.cmd([[ highlight default link hjsonComment Comment ]])
|
||||
vim.cmd([[ highlight default link hjsonLineComment Comment ]])
|
||||
vim.cmd([[ highlight default link hjsonString String ]])
|
||||
vim.cmd([[ highlight default link hjsonMLString String ]])
|
||||
vim.cmd([[ highlight default link hjsonStringUQ String ]])
|
||||
vim.cmd([[ highlight default link hjsonEscape SpecialChar ]])
|
||||
vim.cmd([[ highlight default link hjsonNumber Number ]])
|
||||
vim.cmd([[ highlight default link hjsonBoolean Boolean ]])
|
||||
vim.cmd([[ highlight default link hjsonNull Constant ]])
|
||||
vim.cmd([[ highlight default link hjsonKey Label ]])
|
||||
vim.cmd([[ highlight default link hjsonNoise Delimiter ]])
|
||||
vim.cmd([[ highlight default link hjsonBraces Delimiter ]])
|
||||
end
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue