Перевёл dotfiles на stow

This commit is contained in:
Alexander Neonxp Kiryukhin 2025-06-09 13:43:45 +03:00
parent 27416cef99
commit 97af93b2a8
Signed by: NeonXP
SSH key fingerprint: SHA256:SVt7TjxbVc87m1QYaQziOJ0N3OCFURv2g76gD/UTTXI
169 changed files with 1256 additions and 100 deletions

View file

@ -1,7 +0,0 @@
root = true
[*]
end_of_line = lf
insert_final_newline = true
indent_style = tab

1
nvim/.gitignore vendored
View file

@ -1 +0,0 @@
codecompanion.lua

View file

@ -1,142 +0,0 @@
local function SetHl(group, mod, fg, bg)
local fmt="highlight %s gui=%s cterm=%s guifg=%s ctermfg=%s guibg=%s ctermbg=%s"
vim.cmd(fmt:format(group, mod[1], mod[2], fg[1], fg[2], bg[1], bg[2]))
end
local colors = require("theme.colors")
local mods = require("theme.modifiers")
vim.cmd([[hi normal guibg=NONE ctermbg=NONE]])
-- VIM - INTERFACE
------------------
SetHl("StatusLine", mods["bold"], colors["none"], colors["black_l"])
SetHl("StatusLineNC", mods["none"], colors["none"], colors["black_l"])
SetHl("TabLineSel", mods["bold"], colors["none"], colors["black_l"])
SetHl("WinSeparator", mods["none"], colors["gray"], colors["none"])
SetHl("Pmenu", mods["none"], colors["none"], colors["black_l"])
SetHl("PmenuSel", mods["bold"], colors["none"], colors["black_l"])
SetHl("PmenuThumb", mods["none"], colors["none"], colors["gray_dd"])
SetHl("FloatBorder", mods["none"], colors["gray"], colors["none"])
-- VIM - GENERAL TEXT
---------------------
SetHl("Visual", mods["bold"], colors["none"], colors["black_l"])
SetHl("Normal", mods["none"], colors["white"], colors["none"])
SetHl("NormalFloat", mods["none"], colors["white"], colors["none"])
SetHl("NonText", mods["none"], colors["gray"], colors["none"])
SetHl("SpecialKey", mods["none"], colors["gray"], colors["none"])
SetHl("Conceal", mods["none"], colors["gray"], colors["none"])
SetHl("Folded", mods["none"], colors["none"], colors["none"])
SetHl("MatchParen", mods["bold"], colors["yellow_l"], colors["black_l"])
SetHl("Search", mods["bold"], colors["yellow_l"], colors["black_l"])
SetHl("CurSearch", mods["bold"], colors["chartreuse_l"], colors["black_l"])
SetHl("CursorLine", mods["bold"], colors["none"], colors["black_ll"])
SetHl("CursorColumn", mods["bold"], colors["none"], colors["black_l"])
SetHl("ColorColumn", mods["bold"], colors["none"], colors["black_ll"])
-- VIM - INFO TEXT
------------------
SetHl("LineNr", mods["italic"], colors["gray"], colors["none"])
SetHl("SignColumn", mods["bold"], colors["gray"], colors["none"])
SetHl("DiagnosticError", mods["none"], colors["red_l"], colors["none"])
SetHl("DiagnosticWarn", mods["none"], colors["orange_l"], colors["none"])
SetHl("DiagnosticOK", mods["none"], colors["green_l"], colors["none"])
SetHl("DiagnosticInfo", mods["none"], colors["royal_l"], colors["none"])
SetHl("DiffAdd", mods["none"], colors["green_l"], colors["black_l"])
SetHl("DiffChange", mods["none"], colors["orange_l"], colors["black_l"])
SetHl("DiffDelete", mods["none"], colors["red_l"], colors["black_l"])
SetHl("DiffText", mods["none"], colors["royal_l"], colors["black_l"])
SetHl("QuickFixLine", mods["none"], colors["royal_l"], colors["none"])
-- VIM - MESSAGE TEXT
---------------------
SetHl("ErrorMsg", mods["none"], colors["red_l"], colors["none"])
SetHl("WarningMsg", mods["none"], colors["orange_l"], colors["none"])
SetHl("Title", mods["bold"], colors["white"], colors["none"])
SetHl("ModeMsg", mods["none"], colors["turquoise_l"], colors["none"])
SetHl("MoreMsg", mods["none"], colors["turquoise_l"], colors["none"])
SetHl("Question", mods["none"], colors["royal_l"], colors["none"])
-- VIM - FILE SYSTEM
--------------------
SetHl("Directory", mods["none"], colors["royal_l"], colors["none"])
SetHl("netrwClassify", mods["none"], colors["royal_d"], colors["none"])
SetHl("netrwExe", mods["none"], colors["turquoise_l"], colors["none"])
-- CODE - VIM GENERAL
---------------------
SetHl("PreProc", mods["none"], colors["purple_l"], colors["none"])
SetHl("PreCondit", mods["none"], colors["purple_l"], colors["none"])
SetHl("Statement", mods["none"], colors["cyan_l"], colors["none"])
SetHl("Type", mods["none"], colors["green_l"], colors["none"])
SetHl("Identifier", mods["none"], colors["royal_l"], colors["none"])
SetHl("Function", mods["none"], colors["turquoise_l"], colors["none"])
SetHl("Delimiter", mods["none"], colors["gray_ll"], colors["none"])
SetHl("Operator", mods["none"], colors["white"], colors["none"])
SetHl("Constant", mods["none"], colors["white"], colors["none"])
SetHl("Special", mods["none"], colors["white_dd"], colors["none"])
SetHl("String", mods["italic"], colors["white"], colors["none"])
SetHl("Comment", mods["italic"], colors["gray"], colors["none"])
SetHl("SpecialComment", mods["italic"], colors["turquoise_l"], colors["none"])
SetHl("Todo", mods["italic"], colors["turquoise_l"], colors["none"])
SetHl("Debug", mods["italic"], colors["gray"], colors["none"])
SetHl("Error", mods["none"], colors["red_l"], colors["none"])
SetHl("Added", mods["none"], colors["green_l"], colors["none"])
SetHl("Changed", mods["none"], colors["orange_l"], colors["none"])
SetHl("Removed", mods["none"], colors["red_l"], colors["none"])
-- CODE - TREESITTER GENERAL
----------------------------
SetHl("@variable", mods["none"], colors["royal_l"], colors["none"])
SetHl("@constant", mods["none"], colors["royal_l"], colors["none"])
SetHl("@function.builtin", mods["none"], colors["turquoise_l"], colors["none"])
SetHl("@variable.builtin", mods["none"], colors["purple_l"], colors["none"])
SetHl("@constant.builtin", mods["none"], colors["purple_l"], colors["none"])
-- CODE - TREESITTER BASH
-------------------------
SetHl("@variable.parameter.bash", mods["none"], colors["turquoise_d"], colors["none"])
SetHl("@punctuation.special.bash", mods["none"], colors["royal_d"], colors["none"])
SetHl("@character.special.bash", mods["none"], colors["purple_l"], colors["none"])
-- ADDON - LAZY
---------------
SetHl("LazyH1", mods["bold"], colors["purple_l"], colors["none"])
SetHl("LazyH2", mods["bold"], colors["turquoise_l"], colors["none"])
SetHl("LazyComment", mods["none"], colors["turquoise_d"], colors["none"])
SetHl("LazyButton", mods["none"], colors["white"], colors["none"])
SetHl("LazyButtonActive", mods["none"], colors["turquoise_l"], colors["none"])
SetHl("LazySpecial", mods["bold"], colors["turquoise_l"], colors["none"])
-- ADDON - LSPCMP
-----------------
SetHl("CmpItemKind", mods["italic"], colors["gray_l"], colors["none"])
SetHl("CmpItemKindKeyword", mods["italic"], colors["cyan_l"], colors["none"])
SetHl("CmpItemKindClass", mods["italic"], colors["yellow_l"], colors["none"])
SetHl("CmpItemKindStruct", mods["italic"], colors["green_l"], colors["none"])
SetHl("CmpItemKindEnum", mods["italic"], colors["salmon_l"], colors["none"])
SetHl("CmpItemKindInterface", mods["italic"], colors["blue_l"], colors["none"])
SetHl("CmpItemKindField", mods["italic"], colors["green_l"], colors["none"])
SetHl("CmpItemKindUnit", mods["italic"], colors["salmon_l"], colors["none"])
SetHl("CmpItemKindFile", mods["italic"], colors["turquoise_l"], colors["none"])
SetHl("CmpItemKindFunction", mods["italic"], colors["turquoise_l"], colors["none"])
SetHl("CmpItemKindMethod", mods["italic"], colors["turquoise_l"], colors["none"])
SetHl("CmpItemKindModule", mods["italic"], colors["turquoise_l"], colors["none"])
SetHl("CmpItemKindConstructor", mods["italic"], colors["turquoise_l"], colors["none"])
SetHl("CmpItemKindOperator", mods["italic"], colors["turquoise_l"], colors["none"])
SetHl("CmpItemKindFolder", mods["italic"], colors["royal_l"], colors["none"])
SetHl("CmpItemKindConstant", mods["italic"], colors["royal_l"], colors["none"])
SetHl("CmpItemKindVariable", mods["italic"], colors["royal_l"], colors["none"])
SetHl("CmpItemKindReference", mods["italic"], colors["royal_l"], colors["none"])
SetHl("CmpItemKindParameter", mods["italic"], colors["royal_l"], colors["none"])
SetHl("CmpItemKindEnumMember", mods["italic"], colors["royal_l"], colors["none"])
SetHl("CmpItemKindSnippet", mods["italic"], colors["purple_l"], colors["none"])
-- ADDON - TELESCOPE
--------------------
SetHl("TelescopeTitle", mods["bold"], colors["white"], colors["none"])
SetHl("TelescopeBorder", mods["none"], colors["gray"], colors["none"])
SetHl("TelescopePromptPrefix", mods["none"], colors["purple_l"], colors["none"])

View file

@ -1,37 +0,0 @@
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"--branch=stable",
lazyrepo,
lazypath,
})
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" },
{ "\nPress any key to exit..." },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)
vim.g.mapleader = " "
vim.g.maplocalleader = " "
vim.g.colorcolumn = 120
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1
vim.cmd("filetype plugin indent on")
require("options")
require("plugins")
require("keymaps")
require("commands")
require("autocommands")
require("lsp")
require("syntax")
-- require("dap")

View file

@ -1,34 +0,0 @@
{
"LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" },
"auto-save.nvim": { "branch": "main", "commit": "37c82fd548e3f5ffc2d9d020a65dac1044584f44" },
"blink.cmp": { "branch": "main", "commit": "022521a8910a5543b0251b21c9e1a1e989745796" },
"codecompanion.nvim": { "branch": "main", "commit": "9edf22cb71711cd7fab7671a25ed5424011a379d" },
"conform.nvim": { "branch": "master", "commit": "f643d1b51d1d3d14c8641a46ce44f6bce73c2697" },
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
"go.nvim": { "branch": "master", "commit": "a3455f48cff718a86275115523dcc735535a13aa" },
"goerr-nvim": { "branch": "main", "commit": "d30ba1cab652e78dbf6a644eb4823be57e9af203" },
"goimpl.nvim": { "branch": "main", "commit": "2548d42c4db0645dea14f27e67c4b19b7030f1cf" },
"guihua.lua": { "branch": "master", "commit": "87bea7b98429405caf2a0ce4d029b027bb017c70" },
"headlines.nvim": { "branch": "master", "commit": "bf17c96a836ea27c0a7a2650ba385a7783ed322e" },
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"lsp_signature.nvim": { "branch": "master", "commit": "a4e3c15dfdce8783c074539b1835edae75fa63d5" },
"lspsaga.nvim": { "branch": "main", "commit": "920b1253e1a26732e53fac78412f6da7f674671d" },
"lualine.nvim": { "branch": "master", "commit": "0c6cca9f2c63dadeb9225c45bc92bb95a151d4af" },
"nvim-dap": { "branch": "master", "commit": "b0f983507e3702f073bfe1516846e58b56d4e42f" },
"nvim-dap-go": { "branch": "main", "commit": "8763ced35b19c8dc526e04a70ab07c34e11ad064" },
"nvim-dap-ui": { "branch": "master", "commit": "73a26abf4941aa27da59820fd6b028ebcdbcf932" },
"nvim-lspconfig": { "branch": "master", "commit": "8adb3b5938f6074a1bcc36d3c3916f497d2e8ec4" },
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
"nvim-tree.lua": { "branch": "master", "commit": "1c733e8c1957dc67f47580fe9c458a13b5612d5b" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-treesitter-context": { "branch": "master", "commit": "464a443b5a6657f39772b20baa95d02ffe97b268" },
"nvim-treesitter-textobjects": { "branch": "master", "commit": "0f051e9813a36481f48ca1f833897210dbcfffde" },
"nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" },
"nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" },
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
"popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" },
"smartcolumn.nvim": { "branch": "main", "commit": "92f3773af80d674f1eb61e112dca79e2fa449fd1" },
"telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" },
"todotxt.nvim": { "branch": "main", "commit": "225ac77fea10a9ad9a48d0247a8d3c23f33cb2ba" }
}

View file

@ -1,163 +0,0 @@
local function async_cmd(cmd)
local job_id = vim.fn.jobstart(cmd, {
on_stdout = function(_, data)
for _, line in pairs(data or {}) do
print(line)
end
end,
on_stderr = function(_, data)
for _, line in pairs(data or {}) do
print(line)
end
end,
on_exit = function(_, code)
if code ~= 0 then
vim.notify(
string.format("Команда завершилась с ошибкой (%d)", code),
vim.log.levels.ERROR
)
else
vim.notify("OK", vim.log.levels.INFO)
end
end,
})
return job_id
end
vim.api.nvim_create_autocmd({ "BufWritePre" }, {
pattern = "*.go",
callback = function()
local params = vim.lsp.util.make_range_params(nil, vim.lsp.util._get_offset_encoding())
params.context = { only = { "source.organizeImports" } }
local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, 3000)
for _, res in pairs(result or {}) do
for _, r in pairs(res.result or {}) do
if r.edit then
vim.lsp.util.apply_workspace_edit(r.edit, vim.lsp.util._get_offset_encoding())
else
vim.lsp.buf.execute_command(r.command)
end
end
end
end,
})
vim.api.nvim_create_autocmd({ "BufWritePre" }, {
pattern = "*.go",
callback = function()
vim.lsp.buf.format(nil, 3000)
end,
})
local TrimWhiteSpaceGrp = vim.api.nvim_create_augroup("TrimWhiteSpaceGrp", {})
vim.api.nvim_create_autocmd("BufWritePre", {
group = TrimWhiteSpaceGrp,
pattern = "*",
command = "%s/\\s\\+$//e",
})
local YankHighlightGrp = vim.api.nvim_create_augroup("YankHighlightGrp", {})
vim.api.nvim_create_autocmd("TextYankPost", {
group = YankHighlightGrp,
pattern = "*",
callback = function()
vim.highlight.on_yank({
higroup = "IncSearch",
timeout = 40,
})
end,
})
vim.api.nvim_create_autocmd("BufEnter", {
callback = function()
if vim.bo.filetype == "NvimTree" or vim.fn.expand("%") == "" then
return
end
vim.schedule(function()
vim.cmd("nohlsearch")
local treeapi = require("nvim-tree.api")
treeapi.tree.find_file({
update_root = false,
focus = false,
})
end)
end,
})
vim.api.nvim_create_autocmd({ "BufEnter", "BufAdd", "BufNew", "BufNewFile", "BufWinEnter" }, {
group = vim.api.nvim_create_augroup("TS_FOLD_WORKAROUND", {}),
callback = function()
-- vim.cmd([[normal zR]])
end,
})
vim.api.nvim_create_autocmd("FileType", {
pattern = "*",
callback = function(args)
local buf = args.buf
local ft = vim.bo[buf].filetype
if ft and ft ~= "" then
local has_parser, _ = pcall(vim.treesitter.language.get_lang, ft)
if has_parser then
pcall(vim.treesitter.start, buf, ft)
end
end
end,
})
vim.api.nvim_create_autocmd("User", {
pattern = "TSUpdate",
callback = function()
vim.cmd([[TSEnable highlight]])
end,
})
vim.api.nvim_create_autocmd({ "BufWritePost" }, {
pattern = "*.templ",
callback = function()
local cmd = "templ generate"
async_cmd(cmd)
end,
})
vim.api.nvim_create_autocmd({ "VimEnter" }, {
callback = function(data)
local directory = vim.fn.isdirectory(data.file) == 1
if not directory then
return
end
vim.cmd.cd(data.file)
require("nvim-tree.api").tree.open()
end,
})
vim.api.nvim_create_autocmd("FileType", {
pattern = "go",
callback = function()
vim.opt_local.expandtab = false
vim.opt_local.tabstop = 4
vim.opt_local.shiftwidth = 4
vim.opt_local.autoindent = true
vim.opt_local.smartindent = true
vim.opt_local.cindent = false
end,
})
vim.filetype.add({
extension = {
hjson = "hjson",
},
})
vim.api.nvim_create_autocmd("VimResized", {
pattern = "*",
callback = function()
vim.opt.scrolloff = vim.fn.floor(vim.fn.winheight(0) / 2)
end,
})
vim.api.nvim_create_autocmd("InsertEnter", {
pattern = "*",
command = "set norelativenumber",
})
vim.api.nvim_create_autocmd("InsertLeave", {
pattern = "*",
command = "set relativenumber",
})

View file

@ -1,6 +0,0 @@
vim.api.nvim_create_user_command("Lower", function()
vim.cmd([[normal! guaw]])
end, { force = true })
vim.api.nvim_create_user_command("Upper", function()
vim.cmd([[normal! gUaw]])
end, { force = true })

View file

@ -1,77 +0,0 @@
local map = vim.api.nvim_set_keymap
local kmap = vim.keymap.set
-- Базовые настройки навигации --
map("n", "<Space>", "<Nop>", { noremap = true, silent = true })
-- Навигация в начало/конец строки
map("n", "<Home>", "^", { noremap = true, silent = true })
map("n", "<End>", "$", { noremap = true, silent = true })
map("v", "<Home>", "^", { noremap = true, silent = true })
map("v", "<End>", "$", { noremap = true, silent = true })
map("i", "<Home>", "<C-o>^", { noremap = true, silent = true })
map("i", "<End>", "<C-o>$", { noremap = true, silent = true })
-- Фикс для визуального режима
map("v", "i", "<S-i>", { noremap = true, silent = true })
map("v", "a", "<S-a>", { noremap = true, silent = true })
map("v", "J", ":m '>+1<CR>gv=gv", { noremap = true, silent = true })
map("v", "K", ":m '<-2<CR>gv=gv", { noremap = true, silent = true })
map("v", "<", "<gv", { noremap = true, silent = true })
map("v", ">", ">gv", { noremap = true, silent = true })
-- {{{ Управление буферами --
kmap("n", "<leader>bn", "<cmd>bnext<CR>", { noremap = true, silent = true, desc = "Next buffer" })
kmap("n", "<leader>bp", "<cmd>bprevious<CR>", { noremap = true, silent = true, desc = "Previous buffer" })
kmap("n", "<leader>bd", "<cmd>bdelete<CR>", { noremap = true, silent = true, desc = "Delete buffer" })
kmap("n", "<C-s>", "<cmd>wa<CR>", { noremap = true, silent = true, desc = "Save all files" })
kmap("n", "<leader>q", "<cmd>q<CR>", { noremap = true, silent = true, desc = "Exit" })
kmap("n", "<leader>vs", "<cmd>vsplit<CR>", { noremap = true, silent = true, desc = "Vertical split" })
-- }}}
-- {{{ Управление вкладками --
kmap("n", "<A-Right>", ":tabnext<CR>", { noremap = true, silent = true, desc = "Next tab" })
kmap("n", "<A-Left>", ":tabprevious<CR>", { noremap = true, silent = true, desc = "Previous tab" })
kmap("n", "<A-t>", ":tabnew<CR>", { noremap = true, silent = true, desc = "New tab" })
kmap("n", "<A-w>", ":tabclose<CR>", { noremap = true, silent = true, desc = "Close tab" })
-- Быстрый переход по вкладкам --
for i = 1, 9 do
kmap("n", "<A-" .. i .. ">", ":tabn " .. i .. "<CR>", { noremap = true, silent = true, desc = "Go to tab " .. i })
end
-- }}}
-- {{{ LSP функции
kmap("n", "d[", vim.diagnostic.goto_prev, { noremap = true, silent = true, desc = "Previous diagnostic" })
kmap("n", "d]", vim.diagnostic.goto_next, { noremap = true, silent = true, desc = "Next diagnostic" })
kmap("n", "gD", vim.lsp.buf.declaration, { noremap = true, silent = true, desc = "Go to declaration" })
kmap("n", "gd", vim.lsp.buf.definition, { noremap = true, silent = true, desc = "Go to definition" })
kmap("n", "K", vim.lsp.buf.hover, { noremap = true, silent = true, desc = "Show documentation" })
kmap("n", "<C-k>", vim.lsp.buf.signature_help, { noremap = true, silent = true, desc = "Signature help" })
kmap(
"n",
"<leader>wa",
vim.lsp.buf.add_workspace_folder,
{ noremap = true, silent = true, desc = "Add workspace folder" }
)
kmap(
"n",
"<leader>wr",
vim.lsp.buf.remove_workspace_folder,
{ noremap = true, silent = true, desc = "Remove workspace folder" }
)
kmap("n", "<leader>wl", function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, { noremap = true, silent = true, desc = "List workspace folders" })
--kmap("n", "<A-CR>", vim.lsp.buf.code_action, { noremap = true, silent = true, desc = "Code actions" })
kmap("n", "<A-CR>", "<cmd>Lspsaga code_action<cr>", { noremap = true, silent = true, desc = "Code actions" })
kmap("n", "<F2>", vim.lsp.buf.rename, { noremap = true, silent = true, desc = "Rename symbol" })
-- }}}

View file

@ -1,31 +0,0 @@
-- инициализация LSP для различных ЯП
local lspconfig = require("lspconfig")
local util = require("lspconfig/util")
local function config(_config)
return vim.tbl_deep_extend("force", {
-- capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()),
}, _config or {})
end
-- иницализация gopls LSP для Go
-- https://github.com/golang/tools/blob/master/gopls/doc/vim.md#neovim-install
lspconfig.gopls.setup(config({
cmd = { "gopls", "serve" },
filetypes = { "go", "go.mod" },
root_dir = util.root_pattern("go.work", "go.mod", ".git"),
settings = {
gopls = {
analyses = {
unusedparams = true,
},
staticcheck = true,
gofumpt = true,
},
},
}))
lspconfig.templ.setup(config({
cmd = { "templ", "lsp" },
filetypes = { "templ" },
root_markers = { "go.work", "go.mod", ".git" },
}))

View file

@ -1,97 +0,0 @@
local M = {}
M.setup = function(opts) end
M.isRightMost = function()
local curWin = vim.fn.winnr()
vim.cmd([[wincmd l]])
local rightWin = vim.fn.winnr()
if curWin == rightWin then
return true
else
vim.cmd([[wincmd h]])
return false
end
end
M.isLeftMost = function()
local curWin = vim.fn.winnr()
vim.cmd([[wincmd h]])
local leftWin = vim.fn.winnr()
if curWin == leftWin then
return true
else
vim.cmd([[wincmd l]])
return false
end
end
M.isBottomMost = function()
local curWin = vim.fn.winnr()
vim.cmd([[wincmd j]])
local bottomWin = vim.fn.winnr()
if curWin == bottomWin then
return true
else
vim.cmd([[wincmd k]])
return false
end
end
M.isTopMost = function()
local curWin = vim.fn.winnr()
vim.cmd([[wincmd k]])
local topWin = vim.fn.winnr()
if curWin == topWin then
return true
else
vim.cmd([[wincmd j]])
return false
end
end
M.ResizeLeft = function()
if M.isRightMost() then
if not M.isLeftMost() then
vim.cmd([[wincmd 5 >]])
end
else
vim.cmd([[wincmd 5 <]])
end
end
M.ResizeRight = function()
if M.isRightMost() then
if not M.isLeftMost() then
vim.cmd([[wincmd 5 <]])
end
else
vim.cmd([[wincmd 5 >]])
end
end
M.ResizeUp = function()
if M.isBottomMost() then
if not M.isTopMost() then
vim.cmd([[wincmd 5 +]])
else
vim.cmd([[wincmd 5 -]])
end
else
vim.cmd([[wincmd 5 -]])
end
end
M.ResizeDown = function()
if M.isBottomMost() then
if not M.isTopMost() then
vim.cmd([[wincmd 5 -]])
else
vim.cmd([[wincmd 5 +]])
end
else
vim.cmd([[wincmd 5 +]])
end
end
return M

View file

@ -1,65 +0,0 @@
local options = {
backup = false,
clipboard = "unnamedplus",
cmdheight = 2,
completeopt = { "menuone", "noselect" },
conceallevel = 0,
fileencoding = "utf-8",
hidden = true,
hlsearch = true,
ignorecase = true,
mouse = "",
pumheight = 10,
showmode = false,
showtabline = 2,
smartcase = true,
smartindent = true,
splitbelow = true,
splitright = true,
swapfile = false,
termguicolors = true,
undofile = true,
updatetime = 300,
writebackup = false,
shiftwidth = 4,
tabstop = 4,
cursorline = true,
number = true,
relativenumber = true,
numberwidth = 4,
signcolumn = "yes",
wrap = true,
scrolloff = 8,
sidescrolloff = 8,
syntax = "on",
foldmethod = "expr",
foldexpr = "v:lua.vim.treesitter.foldexpr()",
-- foldexpr = "nvim_treesitter#foldexpr()"
foldnestmax = 10,
foldlevel = 9,
-- foldlevelstart = 99,
scrolloff = 999,
so = vim.fn.floor(vim.fn.winheight(0) / 2),
guicursor = "n-v-c:block,i-ci-ve:hor10,r-cr:hor20,o:hor50,a:blinkwait700-blinkoff400-blinkon250-Cursor/lCursor,sm:block-blinkwait175-blinkoff150-blinkon175",
langmap = "ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯЖ;ABCDEFGHIJKLMNOPQRSTUVWXYZ:,фисвуапршолдьтщзйкыегмцчня;abcdefghijklmnopqrstuvwxyz",
spelllang = "en,ru_yo",
spell = true,
}
vim.opt.formatoptions:append({ r = true, o = true })
vim.opt.shortmess:append("c")
for k, v in pairs(options) do
vim.opt[k] = v
end
vim.wo.foldmethod = "expr"
vim.wo.foldexpr = "v:lua.vim.treesitter.foldexpr()"
vim.cmd("set whichwrap+=<,>,[,],h,l")
vim.filetype.add({
extension = {
templ = "templ",
},
pattern = {
[".*/todo.txt"] = "todotxt",
},
})
vim.cmd([[colorscheme neonxp]])

View file

@ -1,44 +0,0 @@
require("lazy").setup({
{ "nvim-lua/plenary.nvim" },
{
"ray-x/guihua.lua",
build = "cd lua/fzy && make",
},
{ "neovim/nvim-lspconfig" },
{ "Snyssfx/goerr-nvim" },
require("plugins.todo"),
require("plugins.codecompanion"),
require("plugins.resize"),
require("plugins.blankline"),
require("plugins.headlines"),
require("plugins.lsp_saga"),
require("plugins.lsp_signature"),
require("plugins.autosave"),
require("plugins.cmp"),
require("plugins.treesitter"),
require("plugins.tree"),
require("plugins.conform"),
require("plugins.dapui"),
require("plugins.dap"),
require("plugins.dap_go"),
require("plugins.go"),
require("plugins.goimpl"),
require("plugins.lualine"),
require("plugins.telescope"),
require("plugins.columns"),
}, {
performance = {
rtp = {
disabled_plugins = {
"gzip",
"matchit",
"matchparen",
"netrwPlugin",
"tarPlugin",
"tohtml",
"tutor",
"zipPlugin",
},
},
},
})

View file

@ -1,69 +0,0 @@
return {
"okuuva/auto-save.nvim",
enabled = true,
cmd = "ASToggle", -- optional for lazy loading on command
event = { "InsertLeave", "TextChanged" }, -- optional for lazy loading on trigger events
opts = {
enabled = true, -- start auto-save when the plugin is loaded (i.e. when your package manager loads it)
trigger_events = { -- See :h events
-- -- vim events that trigger an immediate save
-- -- I'm disabling this, as it's autosaving when I leave the buffer and
-- -- that's autoformatting stuff if on insert mode and following a tutorial
-- -- Re-enabling this to only save if NOT in insert mode in the condition below
-- immediate_save = { nil },
immediate_save = { "BufLeave", "FocusLost", "QuitPre", "VimSuspend" }, -- vim events that trigger an immediate save
-- vim events that trigger a deferred save (saves after `debounce_delay`)
defer_save = {
"InsertLeave",
"TextChanged",
{ "User", pattern = "VisualLeave" },
{ "User", pattern = "FlashJumpEnd" },
{ "User", pattern = "SnacksInputLeave" },
{ "User", pattern = "SnacksPickerInputLeave" },
},
cancel_deferred_save = {
"InsertEnter",
{ "User", pattern = "VisualEnter" },
{ "User", pattern = "FlashJumpStart" },
{ "User", pattern = "SnacksInputEnter" },
{ "User", pattern = "SnacksPickerInputEnter" },
},
},
-- function that takes the buffer handle and determines whether to save the current buffer or not
-- return true: if buffer is ok to be saved
-- return false: if it's not ok to be saved
-- if set to `nil` then no specific condition is applied
condition = function(buf)
-- Do not save when I'm in insert mode
-- Do NOT ADD VISUAL MODE HERE or the cancel_deferred_save wont' work
-- If I STAY in insert mode and switch to another app, like YouTube to
-- take notes, the BufLeave or FocusLost immediate_save will be ignored
-- and the save will not be triggered
local mode = vim.fn.mode()
if mode == "i" then
return false
end
-- Disable auto-save for the harpoon plugin, otherwise it just opens and closes
-- https://github.com/ThePrimeagen/harpoon/issues/434
--
-- don't save for `sql` file types
-- I do this so when working with dadbod the file is not saved every time
-- I make a change, and a SQL query executed
-- Run `:set filetype?` on a dadbod query to make sure of the filetype
local filetype = vim.bo[buf].filetype
if filetype == "harpoon" or filetype == "mysql" then
return false
end
return true
end,
write_all_buffers = true, -- write all buffers when the current one meets `condition`
noautocmd = false,
lockmarks = false, -- lock marks when saving, see `:h lockmarks` for more details
-- delay after which a pending save is executed (default 1000)
debounce_delay = 2000,
-- log debug messages to 'auto-save.log' file in neovim cache directory, set to `true` to enable
debug = false,
},
}

View file

@ -1,7 +0,0 @@
return {
"lukas-reineke/indent-blankline.nvim",
main = "ibl",
--@module "ibl"
--@type ibl.config
config = true,
}

View file

@ -1,49 +0,0 @@
local source_mapping = {
buffer = "[Buffer]",
nvim_lsp = "[LSP]",
nvim_lua = "[Lua]",
luasnip = "[Snip]",
path = "[Path]",
}
return {
"saghen/blink.cmp",
lazy = false,
version = "1.*",
dependencies = {
{
"L3MON4D3/LuaSnip",
version = "v2.*",
build = "make install_jsregexp",
dependencies = { "rafamadriz/friendly-snippets" },
config = function()
require("luasnip.loaders.from_vscode").lazy_load()
require("luasnip.loaders.from_vscode").lazy_load("./snippets")
end,
},
},
opts = {
keymap = {
preset = "enter",
},
completion = {
list = {
selection = {
preselect = false,
auto_insert = false,
},
},
ghost_text = {
enabled = true,
},
},
cmdline = {
keymap = { preset = "inherit" },
completion = { menu = { auto_show = true } },
sources = { "cmdline" },
},
snippets = { preset = "luasnip" },
sources = {
default = { "lsp", "path", "snippets", "buffer", "codecompanion" },
},
},
}

View file

@ -1,10 +0,0 @@
return {
"m4xshen/smartcolumn.nvim",
opts = {
colorcolumn = "80",
disabled_filetypes = { "help", "text" },
custom_colorcolumn = {},
scope = "file",
editorconfig = true,
},
}

View file

@ -1,35 +0,0 @@
return {
"stevearc/conform.nvim",
opts = {
formatters_by_ft = {
javascript = { "prettier" },
typescript = { "prettier" },
javascriptreact = { "prettier" },
typescriptreact = { "prettier" },
css = { "prettier" },
html = { "prettier" },
json = { "prettier" },
yaml = { "prettier" },
markdown = { "prettier" },
graphql = { "prettier" },
lua = { "stylua" },
python = { "isort", "black" },
go = { "gofmt" },
templ = { "templ" },
},
format_on_save = {
lsp_fallback = true,
async = false,
timeout_ms = 500,
},
},
keys = {
{
"<leader>mp",
function()
require("conform").format({ lsp_fallback = true, async = false, timeout_ms = 500 })
end,
desc = "Format file or range (in visual mode)",
},
},
}

View file

@ -1,3 +0,0 @@
return {
"mfussenegger/nvim-dap",
}

View file

@ -1,159 +0,0 @@
local default_config = {
delve = {
path = "dlv",
initialize_timeout_sec = 20,
port = "${port}",
args = {},
build_flags = "",
-- Automatically handle the issue on delve Windows versions < 1.24.0
-- where delve needs to be run in attched mode or it will fail (actually crashes).
detached = vim.fn.has("win32") == 0,
output_mode = "remote",
cwd = nil,
},
tests = {
verbose = false,
},
}
local function setup_go_configuration(dap, configs)
local common_debug_configs = {
{
type = "go",
name = "Debug",
request = "launch",
program = "${workspaceFolder}",
args = {},
buildFlags = configs.delve.build_flags,
outputMode = configs.delve.output_mode,
},
}
if dap.configurations.go == nil then
dap.configurations.go = {}
end
for _, config in ipairs(common_debug_configs) do
table.insert(dap.configurations.go, config)
end
if configs == nil or configs.dap_configurations == nil then
return
end
for _, config in ipairs(configs.dap_configurations) do
if config.type == "go" then
table.insert(dap.configurations.go, config)
end
end
end
return {
"leoluz/nvim-dap-go",
dependencies = { "mfussenegger/nvim-dap" },
opts = true,
config = function()
local dap, dapui = require("dap"), require("dapui")
dap.adapters.go = {
type = "server",
port = "${port}",
executable = {
command = "dlv",
args = { "dap", "-l", "127.0.0.1:${port}" },
},
}
setup_go_configuration(dap, default_config)
dap.defaults.fallback.terminal_win_cmd = "enew | set filetype=dap-terminal"
dap.listeners.before.attach.dapui_config = function()
dapui.open()
end
dap.listeners.before.launch.dapui_config = function()
dapui.open()
end
dap.listeners.before.event_terminated.dapui_config = function()
dapui.close()
end
dap.listeners.before.event_exited.dapui_config = function()
dapui.close()
end
vim.api.nvim_set_hl(0, "DapBreakpoint", { ctermbg = 0, fg = "#993939", bg = "#31353f" })
vim.api.nvim_set_hl(0, "DapLogPoint", { ctermbg = 0, fg = "#61afef", bg = "#31353f" })
vim.api.nvim_set_hl(0, "DapStopped", { ctermbg = 0, fg = "#98c379", bg = "#31353f" })
vim.fn.sign_define(
"DapBreakpoint",
{ text = "!", texthl = "DapBreakpoint", linehl = "DapBreakpoint", numhl = "DapBreakpoint" }
)
vim.fn.sign_define(
"DapBreakpointCondition",
{ text = "?", texthl = "DapBreakpoint", linehl = "DapBreakpoint", numhl = "DapBreakpoint" }
)
vim.fn.sign_define(
"DapBreakpointRejected",
{ text = "RJ", texthl = "DapBreakpoint", linehl = "DapBreakpoint", numhl = "DapBreakpoint" }
)
vim.fn.sign_define(
"DapLogPoint",
{ text = "i", texthl = "DapLogPoint", linehl = "DapLogPoint", numhl = "DapLogPoint" }
)
vim.fn.sign_define(
"DapStopped",
{ text = "", texthl = "DapStopped", linehl = "DapStopped", numhl = "DapStopped" }
)
end,
keys = {
{
"<F5>",
function()
require("dap").continue()
end,
silent = true,
},
{
"<F17>", -- S-F5
function()
require("dap").restart()
end,
silent = true,
},
{
"<F29>", -- C-F5
function()
require("dap").terminate()
end,
silent = true,
},
{
"<F8>",
function()
require("dap").step_over()
end,
silent = true,
},
{
"<F7>",
function()
require("dap").step_into()
end,
silent = true,
},
{
"<F19>", -- S-F7
function()
require("dap").step_out()
end,
silent = true,
},
{
"<A-b>",
function()
require("dap").toggle_breakpoint()
end,
silent = true,
},
},
}

View file

@ -1,73 +0,0 @@
return {
"rcarriga/nvim-dap-ui",
dependencies = {
"mfussenegger/nvim-dap",
"nvim-neotest/nvim-nio",
},
keys = {
{
"<F6>",
function()
require("dapui").toggle()
end,
silent = true,
},
{
"<Leader>dh",
function()
require("dap.ui.widgets").hover()
end,
silent = true,
},
{
"<Leader>dp",
function()
require("dap.ui.widgets").preview()
end,
silent = true,
},
{
"<F9>",
function()
local widgets = require("dap.ui.widgets")
widgets.centered_float(widgets.scopes)
end,
silent = true,
},
},
opts = {
icons = {
expanded = "[-]",
collapsed = "[+]",
},
mappings = {
open = "o",
remove = "d",
edit = "e",
repl = "r",
toggle = "t",
},
expand_lines = vim.fn.has("nvim-0.7"),
layouts = {
{
elements = {
"repl",
},
size = 0.3,
position = "bottom",
},
},
floating = {
max_height = nil,
max_width = nil,
border = "single",
mappings = {
close = { "q", "<Esc>" },
},
},
windows = { indent = 1 },
render = {
max_type_length = nil,
},
},
}

View file

@ -1,12 +0,0 @@
return {
"ray-x/go.nvim",
dependencies = {
"ray-x/guihua.lua",
"neovim/nvim-lspconfig",
"nvim-treesitter/nvim-treesitter",
},
config = true,
event = { "CmdlineEnter" },
ft = { "go", "gomod" },
build = ':lua require("go.install").update_all_sync()',
}

View file

@ -1,21 +0,0 @@
return {
"edolphin-ydf/goimpl.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-lua/popup.nvim",
"nvim-telescope/telescope.nvim",
"nvim-treesitter/nvim-treesitter",
},
config = function()
require("telescope").load_extension("goimpl")
end,
keys = {
{
"<leader>im",
function()
require("telescope").extensions.goimpl.goimpl({})
end,
desc = "Generate stub for interface on a type for golang",
},
},
}

View file

@ -1,5 +0,0 @@
return {
"lukas-reineke/headlines.nvim",
dependencies = "nvim-treesitter/nvim-treesitter",
config = true,
}

View file

@ -1,8 +0,0 @@
return {
"nvimdev/lspsaga.nvim",
opts = {
lightbulb = {
enable = false,
},
},
}

View file

@ -1,15 +0,0 @@
return {
"ray-x/lsp_signature.nvim",
event = "VeryLazy",
opts = {
doc_lines = 1,
max_height = 3,
hint_prefix = "",
hint_prefix = {
above = "",
current = "",
below = "",
},
floating_window = true,
},
}

View file

@ -1,44 +0,0 @@
local colors = require("theme.colors")
return {
"nvim-lualine/lualine.nvim",
opts = {
options = {
icons_enabled = true,
theme = "auto",
component_separators = { left = "", right = "" },
section_separators = { left = "", right = "" },
disabled_filetypes = {
statusline = {},
winbar = {},
},
ignore_focus = {},
always_divide_middle = true,
globalstatus = false,
refresh = {
statusline = 1000,
tabline = 1000,
winbar = 1000,
},
},
sections = {
lualine_a = { "mode" },
lualine_b = { "branch", "diff", "diagnostics" },
lualine_c = { "filename" },
lualine_x = { "filetype" },
lualine_y = { "progress", "location" },
lualine_z = { "lsp_status", "os.date('%H:%M')" },
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = { "filename" },
lualine_x = { "location" },
lualine_y = {},
lualine_z = {},
},
tabline = {},
winbar = {},
inactive_winbar = {},
extensions = {},
},
}

View file

@ -1,34 +0,0 @@
return {
name = "resize",
dir = "~/.config/nvim/lua/myplugins",
keys = {
{
"<C-S-Left>",
function()
require("myplugins.resize").ResizeLeft()
end,
silent = true,
},
{
"<C-S-Right>",
function()
require("myplugins.resize").ResizeRight()
end,
silent = true,
},
{
"<C-S-Up>",
function()
require("myplugins.resize").ResizeUp()
end,
silent = true,
},
{
"<C-S-Down>",
function()
require("myplugins.resize").ResizeDown()
end,
silent = true,
},
},
}

View file

@ -1,50 +0,0 @@
return {
"nvim-telescope/telescope.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
},
config = function()
local actions = require("telescope.actions")
require("telescope").setup({
extensions = {
project = {
sync_with_nvim_tree = true,
},
},
pickers = {
buffers = {
initial_mode = "normal",
},
},
defaults = {
file_ignore_patterns = { "vendor", "node_modules" },
mappings = {
i = {
["<F4>"] = actions.close,
},
n = {
["<F4>"] = actions.close,
},
},
},
})
end,
keys = {
{ "<leader>ff", "<cmd>Telescope find_files<CR>", noremap = true, silent = true, desc = "Find files" },
{ "<leader>fg", "<cmd>Telescope live_grep<CR>", noremap = true, silent = true, desc = "Live grep" },
{
"<leader>fb",
"<cmd>Telescope current_buffer_fuzzy_fund<CR>",
noremap = true,
silent = true,
desc = "Find current file",
},
{ "<F4>", "<cmd>Telescope buffers<CR>", noremap = true, silent = true, desc = "Find buffers" },
{ "<leader>gc", "<cmd>Telescope git_commits<CR>", noremap = true, silent = true },
{ "<leader>gs", "<cmd>Telescope git_status<CR>", noremap = true, silent = true },
{ "<leader>ch", "<cmd>Telescope commands_history<CR>", noremap = true, silent = true },
{ "<leader>e", "<cmd>Telescope diagnostics<CR>", noremap = true, silent = true },
{ "gi", "<cmd>Telescope lsp_implementations<CR>", noremap = true, silent = true },
{ "gr", "<cmd>Telescope lsp_references<CR>", noremap = true, silent = true },
},
}

View file

@ -1,69 +0,0 @@
return {
"phrmendes/todotxt.nvim",
cmd = { "TodoTxt", "DoneTxt" },
opts = {
todotxt = "/home/neonxp/Документы/todo.txt",
donetxt = "/home/neonxp/Документы/done.txt",
},
-- suggested keybindings
keys = {
{
"<leader>tp",
function() require("todotxt").cycle_priority() end,
desc = "todo.txt: cycle priority",
ft = "todotxt",
},
{
"<cr>",
function() require("todotxt").toggle_todo_state() end,
desc = "todo.txt: toggle task state",
ft = "todotxt",
},
{
"<leader>tn",
function() require("todotxt").capture_todo() end,
desc = "New entry",
},
{
"<leader>tt",
function() require("todotxt").toggle_todotxt() end,
desc = "Open",
},
{
"<leader>tr",
function() require("todotxt").move_done_tasks() end,
desc = "Move to done.txt",
ft = "todotxt",
},
{
"<leader>tss",
function() require("todotxt").sort_tasks() end,
desc = "Sort",
ft = "todotxt",
},
{
"<leader>tsd",
function() require("todotxt").sort_tasks_by_due_date() end,
desc = "Sort by due:date",
ft = "todotxt",
},
{
"<leader>tsP",
function() require("todotxt").sort_tasks_by_priority() end,
desc = "Sort by (priority)",
ft = "todotxt",
},
{
"<leader>tsc",
function() require("todotxt").sort_tasks_by_context() end,
desc = "Sort by @context",
ft = "todotxt",
},
{
"<leader>tsp",
function() require("todotxt").sort_tasks_by_project() end,
desc = "Sort by +project",
ft = "todotxt",
},
},
}

View file

@ -1,54 +0,0 @@
local WIDTH_RATIO = 0.25
return {
"nvim-tree/nvim-tree.lua",
dependencies = {
"nvim-tree/nvim-web-devicons",
},
opts = {
disable_netrw = true,
hijack_netrw = true,
sort = {
sorter = "case_sensitive",
},
view = {
width = function()
return math.floor(vim.opt.columns:get() * WIDTH_RATIO)
end,
adaptive_size = true,
centralize_selection = true,
},
git = {
enable = true,
},
renderer = {
group_empty = true,
highlight_git = true,
icons = {
show = {
git = true,
},
},
},
filters = {
dotfiles = false,
},
update_focused_file = {
enable = true,
},
},
keys = {
{
"<C-c>",
function()
local api = require("nvim-tree.api")
local global_cwd = vim.fn.getcwd(-1, -1)
api.tree.change_root(global_cwd)
end,
noremap = true,
silent = true,
desc = "Change tree root to CWD",
},
{ "<F3>", ":NvimTreeToggle<CR>", noremap = true, silent = true, desc = "Toggle file tree" },
},
}

View file

@ -1,53 +0,0 @@
return {
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
opts = {
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
},
ensure_installed = "all",
ignore_install = { "gdhsader", "phpdoc", "org" },
indent = { enable = true },
auto_install = true,
sync_install = true,
incremental_selection = {
enable = true,
keymaps = {
init_selection = "<C-space>",
node_incremental = "<C-space>",
scope_incremental = false,
node_decremental = "<bs>",
},
},
textobjects = {
select = { enable = true, lookahead = true },
move = {
enable = true,
goto_next_start = { ["]f"] = "@function.outer", ["]c"] = "@class.outer", ["]a"] = "@parameter.inner" },
goto_next_end = { ["]F"] = "@function.outer", ["]C"] = "@class.outer", ["]A"] = "@parameter.inner" },
goto_previous_start = {
["[f"] = "@function.outer",
["[c"] = "@class.outer",
["[a"] = "@parameter.inner",
},
goto_previous_end = { ["[F"] = "@function.outer", ["[C"] = "@class.outer", ["[A"] = "@parameter.inner" },
},
},
},
build = function()
require("nvim-treesitter.install").update({ with_sync = true })()
end,
dependencies = {
{ "nvim-treesitter/nvim-treesitter-textobjects" },
{
"nvim-treesitter/nvim-treesitter-context",
opts = {
enable = true,
mode = "topline",
line_numbers = true,
},
},
{ "windwp/nvim-ts-autotag" },
},
}

View file

@ -1,61 +0,0 @@
-- ~/.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
})

View file

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

View file

@ -1,29 +0,0 @@
local function HsvToRgb(h, s, v)
s = s / 100.0
v = v / 100.0
h = h / 60.0
local i = math.floor(h) % 6
local f = h - math.floor(h)
local p = v * (1.0 - s)
local q = v * (1.0 - f * s)
local t = v * (1.0 - (1.0 - f) * s)
local r, g, b = 0, 0, 0
if i == 0 then r, g, b = v, t, p
elseif i == 1 then r, g, b = q, v, p
elseif i == 2 then r, g, b = p, v, t
elseif i == 3 then r, g, b = p, q, v
elseif i == 4 then r, g, b = t, p, v
else r, g, b = v, p, q
end
r = math.floor(r * 255 + 0.5)
g = math.floor(g * 255 + 0.5)
b = math.floor(b * 255 + 0.5)
return string.format("#%02x%02x%02x", r, g, b)
end
return HsvToRgb

View file

@ -1,68 +0,0 @@
local HsvToRgb = require("theme.asset.hsv-to-rgb")
local colors = {
black = {HsvToRgb(0, 0, 0), 0},--0 Black
black_l = {HsvToRgb(0, 0, 10), 0},
black_ll = {HsvToRgb(0, 0, 20), 0},
gray_dd = {HsvToRgb(0, 0, 30), 8},--8 DarkGray
gray_d = {HsvToRgb(0, 0, 40), 8},
gray = {HsvToRgb(0, 0, 50), 7},--7 Gray
gray_l = {HsvToRgb(0, 0, 60), 7},
gray_ll = {HsvToRgb(0, 0, 70), 7},
white_dd = {HsvToRgb(0, 0, 80), 15},--15 White
white_d = {HsvToRgb(0, 0, 90), 15},
white = {HsvToRgb(0, 0, 100), 15},
red_d = {HsvToRgb(0, 100, 75), 12},--12 Red
red = {HsvToRgb(0, 100, 100), 12},
red_l = {HsvToRgb(0, 75, 100), 12},
orange_d = {HsvToRgb(30, 100, 75), 4},--4 DarkRed
orange = {HsvToRgb(30, 100, 100), 4},
orange_l = {HsvToRgb(30, 75, 100), 4},
yellow_d = {HsvToRgb(60, 100, 75), 14},--14 Yellow
yellow = {HsvToRgb(60, 100, 100), 14},
yellow_l = {HsvToRgb(60, 75, 100), 14},
chartreuse_d = {HsvToRgb(90, 100, 75), 6},--6 DarkYellow
chartreuse = {HsvToRgb(90, 100, 100), 6},
chartreuse_l = {HsvToRgb(90, 75, 100), 6},
green_d = {HsvToRgb(120, 100, 75), 10},--10 Green
green = {HsvToRgb(120, 100, 100), 10},
green_l = {HsvToRgb(120, 75, 100), 10},
turquoise_d = {HsvToRgb(150, 100, 75), 2},--2 DarkGreen
turquoise = {HsvToRgb(150, 100, 100), 2},
turquoise_l = {HsvToRgb(150, 75, 100), 2},
cyan_d = {HsvToRgb(180, 100, 75), 11},--11 Cyan
cyan = {HsvToRgb(180, 100, 100), 11},
cyan_l = {HsvToRgb(180, 75, 100), 11},
royal_d = {HsvToRgb(210, 100, 75), 3},--3 DarkCyan
royal = {HsvToRgb(210, 100, 100), 3},
royal_l = {HsvToRgb(210, 75, 100), 3},
blue_d = {HsvToRgb(240, 100, 75), 9},--9 Blue
blue = {HsvToRgb(240, 100, 100), 9},
blue_l = {HsvToRgb(240, 75, 100), 9},
purple_d = {HsvToRgb(270, 100, 75), 1},--1 DarkBlue
purple = {HsvToRgb(270, 100, 100), 1},
purple_l = {HsvToRgb(270, 75, 100), 1},
pink_d = {HsvToRgb(300, 100, 75), 13},--13 Magenta
pink = {HsvToRgb(300, 100, 100), 13},
pink_l = {HsvToRgb(300, 75, 100), 13},
salmon_d = {HsvToRgb(330, 100, 75), 5},--5 DarkMagenta
salmon = {HsvToRgb(330, 100, 100), 5},
salmon_l = {HsvToRgb(330, 75, 100), 5},
none = {"NONE", "NONE"}
}
return colors

View file

@ -1,16 +0,0 @@
local mods = {
bold = {"bold", "bold"},
italic = {"italic", "italic"},
underline = {"underline", "underline"},
underdouble = {"underdouble", "underdouble"},
underdoted = {"underdoted", "underdoted"},
underdashed = {"underdashed", "underdashed"},
undercurl = {"undercurl", "undercurl"},
reverse = {"reverse", "reverse"},
standout = {"standout", "standout"},
altfont = {"altfont", "altfont"},
strikethrough = {"strikethrough", "strikethrough"},
none = {"NONE", "NONE"}
}
return mods

View file

@ -1,28 +0,0 @@
{
"package line": {
"body": ["package ${TM_DIRECTORY/.+\\/(.+)$/${1:/downcase}/}", "", "$0"],
"description": "package header",
"prefix": "pkg"
},
"structure constructor": {
"body": [
"// New$1 returns new $1.",
"func New${1:type}(${2}) *$1 {",
"\t$3",
"\treturn &$1{$4}",
"}"
],
"description": "constructor for structure type",
"prefix": "construct"
},
"if err := ...; err != nil": {
"prefix": "iferrr",
"body": "if err := ${1}; err != nil {\n\t${2:return ${3:nil, }${4:err}}\n}",
"description": "Snippet for if err := ...; err != nil"
},
"if err != nil": {
"prefix": "iferr",
"body": "if err != nil {\n\t${1:return ${2:nil, }${3:err}}\n}",
"description": "Snippet for if err != nil"
}
}

View file

@ -1,11 +0,0 @@
{
"name": "gotools",
"contributes": {
"snippets": [
{
"language": "go",
"path": "./go.json"
}
]
}
}

View file

@ -1,2 +0,0 @@
блог
блога

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.