04.06.2025

This commit is contained in:
Alexander Neonxp Kiryukhin 2025-06-04 12:06:36 +03:00
parent d4c839302b
commit 27416cef99
Signed by: NeonXP
SSH key fingerprint: SHA256:SVt7TjxbVc87m1QYaQziOJ0N3OCFURv2g76gD/UTTXI
15 changed files with 190 additions and 205 deletions

61
nvim/lua/syntax/hjson.lua Normal file
View 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
})

1
nvim/lua/syntax/init.lua Normal file
View file

@ -0,0 +1 @@
require("syntax.hjson")