diff options
| author | 2025-05-04 17:43:55 +0300 | |
|---|---|---|
| committer | 2025-05-04 17:43:55 +0300 | |
| commit | 74e201e92c31658eb6d7dcb56e1fdd6fdc43b2e4 (patch) | |
| tree | a0a858d166dd8da09e34a96263a7468027cd6b48 /nvim/lua | |
| parent | Привел в порядок дотфайлы (diff) | |
| download | dotfiles-74e201e92c31658eb6d7dcb56e1fdd6fdc43b2e4.tar.gz dotfiles-74e201e92c31658eb6d7dcb56e1fdd6fdc43b2e4.tar.bz2 dotfiles-74e201e92c31658eb6d7dcb56e1fdd6fdc43b2e4.tar.xz dotfiles-74e201e92c31658eb6d7dcb56e1fdd6fdc43b2e4.zip | |
Поправил кучку недостатков в neovim
Diffstat (limited to 'nvim/lua')
| -rw-r--r-- | nvim/lua/autocommands.lua | 12 | ||||
| -rw-r--r-- | nvim/lua/options.lua | 3 | ||||
| -rw-r--r-- | nvim/lua/plugins/cmp.lua | 116 | ||||
| -rw-r--r-- | nvim/lua/plugins/dap.lua | 115 | ||||
| -rw-r--r-- | nvim/lua/plugins/dapui.lua | 4 | ||||
| -rw-r--r-- | nvim/lua/plugins/snippets.lua | 15 | ||||
| -rw-r--r-- | nvim/lua/snippets/json.lua | 44 |
7 files changed, 254 insertions, 55 deletions
diff --git a/nvim/lua/autocommands.lua b/nvim/lua/autocommands.lua index 0e95ee4..f0733f3 100644 --- a/nvim/lua/autocommands.lua +++ b/nvim/lua/autocommands.lua @@ -82,6 +82,7 @@ vim.api.nvim_create_autocmd("BufEnter", { return end vim.schedule(function() + vim.cmd("nohlsearch") local treeapi = require("nvim-tree.api") treeapi.tree.find_file({ update_root = false, @@ -134,6 +135,17 @@ vim.api.nvim_create_autocmd({ "VimEnter" }, { 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.api.nvim_create_autocmd("InsertEnter", { -- pattern = "*", -- command = "set norelativenumber", diff --git a/nvim/lua/options.lua b/nvim/lua/options.lua index 583e638..c5bd497 100644 --- a/nvim/lua/options.lua +++ b/nvim/lua/options.lua @@ -37,8 +37,9 @@ local options = { --foldexpr = "nvim_treesitter#foldexpr()", foldlevelstart = 0, foldenable = true, + scrolloff = 999, } - +vim.opt.formatoptions:append({ r = true, o = true }) vim.opt.shortmess:append("c") for k, v in pairs(options) do diff --git a/nvim/lua/plugins/cmp.lua b/nvim/lua/plugins/cmp.lua index 24c1c47..0a7cffc 100644 --- a/nvim/lua/plugins/cmp.lua +++ b/nvim/lua/plugins/cmp.lua @@ -1,3 +1,10 @@ +local source_mapping = { + buffer = "[Buffer]", + nvim_lsp = "[LSP]", + nvim_lua = "[Lua]", + luasnip = "[Snip]", + path = "[Path]", +} return { "hrsh7th/nvim-cmp", dependencies = { @@ -18,52 +25,69 @@ return { config = function() require("plugins.snippets") end, - }, - }, - config = function() - local cmp = require("cmp") - local source_mapping = { - buffer = "[Buffer]", - nvim_lsp = "[LSP]", - nvim_lua = "[Lua]", - path = "[Path]", - } - cmp.setup({ - mapping = cmp.mapping.preset.insert({ - ["<CR>"] = cmp.mapping.confirm({ select = true }), - ["<Tab>"] = cmp.mapping(function(fallback) - if require("luasnip").expand_or_jumpable() then - require("luasnip").expand_or_jump() - else - fallback() - end - end, { "i", "s" }), - ["<S-Tab>"] = cmp.mapping(function(fallback) - if require("luasnip").jumpable(-1) then + keys = { + { + "<C-K>", + function() + require("luasnip").expand() + end, + silent = true, + }, + { + "<C-L>", + function() + require("luasnip").jump(1) + end, + silent = true, + }, + { + "<C-J>", + function() require("luasnip").jump(-1) - else - fallback() - end - end, { "i", "s" }), - }), - snippet = { - expand = function(args) - require("luasnip").lsp_expand(args.body) - end, - }, - formatting = { - format = function(entry, vim_item) - vim_item.menu = source_mapping[entry.source.name] or "[Unknown]" - return vim_item - end, + end, + silent = true, + }, }, - sources = cmp.config.sources({ - { name = "nvim_lsp", priority = 1000 }, - { name = "luasnip", priority = 750 }, - { name = "path", priority = 500 }, - }, { - { name = "buffer" }, - }), - }) - end, + }, + }, + opts = { + -- preselect = require("cmp").PreselectMode.None, + experimental = { + ghost_text = true, + }, + + confirmation = { + default_behavior = require("cmp").ConfirmBehavior.Replace, + }, + completion = { + completeopt = "menu,menuone,noinsert,noselect", + keyword_length = 2, + }, + mapping = require("cmp").mapping.preset.insert({ + ["<C-b>"] = require("cmp").mapping.scroll_docs(-4), + ["<C-f>"] = require("cmp").mapping.scroll_docs(4), + ["<C-Space>"] = require("cmp").mapping.complete(), + ["<C-e>"] = require("cmp").mapping.abort(), + ["<CR>"] = require("cmp").mapping.confirm({ select = false }), + ["<Right>"] = require("cmp").mapping.confirm({ select = true }), + }), + snippet = { + expand = function(args) + require("luasnip").lsp_expand(args.body) + end, + }, + formatting = { + format = function(entry, vim_item) + vim_item.menu = source_mapping[entry.source.name] or "[Unknown]" + return vim_item + end, + }, + sources = require("cmp").config.sources({ + { name = "nvim_lsp", priority = 1000 }, + { name = "luasnip", priority = 750 }, + { name = "path", priority = 500 }, + }, { + { name = "buffer" }, + }), + }, } diff --git a/nvim/lua/plugins/dap.lua b/nvim/lua/plugins/dap.lua index 0d104d9..58cc7f9 100644 --- a/nvim/lua/plugins/dap.lua +++ b/nvim/lua/plugins/dap.lua @@ -1,3 +1,103 @@ +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", + }, + tests = { + verbose = false, + }, +} + +local function setup_go_configuration(dap, configs) + local common_debug_configs = { + { + type = "go", + name = "Debug", + request = "launch", + program = "${file}", + buildFlags = configs.delve.build_flags, + outputMode = configs.delve.output_mode, + }, + { + type = "go", + name = "Debug (Arguments)", + request = "launch", + program = "${file}", + args = get_arguments, + buildFlags = configs.delve.build_flags, + outputMode = configs.delve.output_mode, + }, + { + type = "go", + name = "Debug (Arguments & Build Flags)", + request = "launch", + program = "${file}", + args = get_arguments, + buildFlags = get_build_flags, + outputMode = configs.delve.output_mode, + }, + { + type = "go", + name = "Debug Package", + request = "launch", + program = "${fileDirname}", + buildFlags = configs.delve.build_flags, + outputMode = configs.delve.output_mode, + }, + { + type = "go", + name = "Attach", + mode = "local", + request = "attach", + processId = filtered_pick_process, + buildFlags = configs.delve.build_flags, + }, + { + type = "go", + name = "Debug test", + request = "launch", + mode = "test", + program = "${file}", + buildFlags = configs.delve.build_flags, + outputMode = configs.delve.output_mode, + }, + { + type = "go", + name = "Debug test (go.mod)", + request = "launch", + mode = "test", + program = "./${relativeFileDirname}", + 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" }, @@ -13,6 +113,10 @@ return { 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 @@ -25,29 +129,30 @@ return { 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" } + { text = "!", texthl = "DapBreakpoint", linehl = "DapBreakpoint", numhl = "DapBreakpoint" } ) vim.fn.sign_define( "DapBreakpointCondition", - { text = "ﳁ", texthl = "DapBreakpoint", linehl = "DapBreakpoint", numhl = "DapBreakpoint" } + { text = "?", texthl = "DapBreakpoint", linehl = "DapBreakpoint", numhl = "DapBreakpoint" } ) vim.fn.sign_define( "DapBreakpointRejected", - { text = "", texthl = "DapBreakpoint", linehl = "DapBreakpoint", numhl = "DapBreakpoint" } + { text = "RJ", texthl = "DapBreakpoint", linehl = "DapBreakpoint", numhl = "DapBreakpoint" } ) vim.fn.sign_define( "DapLogPoint", - { text = "", texthl = "DapLogPoint", linehl = "DapLogPoint", numhl = "DapLogPoint" } + { text = "i", texthl = "DapLogPoint", linehl = "DapLogPoint", numhl = "DapLogPoint" } ) vim.fn.sign_define( "DapStopped", - { text = "", texthl = "DapStopped", linehl = "DapStopped", numhl = "DapStopped" } + { text = "→", texthl = "DapStopped", linehl = "DapStopped", numhl = "DapStopped" } ) end, keys = { diff --git a/nvim/lua/plugins/dapui.lua b/nvim/lua/plugins/dapui.lua index f5d1532..b63e2ac 100644 --- a/nvim/lua/plugins/dapui.lua +++ b/nvim/lua/plugins/dapui.lua @@ -37,8 +37,8 @@ return { }, opts = { icons = { - expanded = "▾", - collapsed = "▸", + expanded = "[-]", + collapsed = "[+]", }, mappings = { open = "o", diff --git a/nvim/lua/plugins/snippets.lua b/nvim/lua/plugins/snippets.lua index bf40e7c..f1f0f62 100644 --- a/nvim/lua/plugins/snippets.lua +++ b/nvim/lua/plugins/snippets.lua @@ -1,4 +1,16 @@ -require("luasnip").config.setup({ +local ls = require("luasnip") +local s = ls.snippet +local sn = ls.snippet_node +local t = ls.text_node +local i = ls.insert_node +local f = ls.function_node +local c = ls.choice_node +local d = ls.dynamic_node +local r = ls.restore_node +local fmt = require("luasnip.extras.fmt").fmt +local rep = require("luasnip.extras").rep + +ls.config.setup({ history = true, update_events = "TextChanged,TextChangedI", }) @@ -6,3 +18,4 @@ require("luasnip.loaders.from_vscode").lazy_load() require("luasnip.loaders.from_vscode").lazy_load({ paths = { vim.fn.stdpath("config") .. "/snippets" }, }) +ls.add_snippets("json", require("snippets.json")) diff --git a/nvim/lua/snippets/json.lua b/nvim/lua/snippets/json.lua new file mode 100644 index 0000000..fc58fff --- /dev/null +++ b/nvim/lua/snippets/json.lua @@ -0,0 +1,44 @@ +local ls = require("luasnip") +-- some shorthands... +local s = ls.snippet +local sn = ls.snippet_node +local t = ls.text_node +local i = ls.insert_node +local f = ls.function_node +local c = ls.choice_node +local d = ls.dynamic_node +local r = ls.restore_node +local l = require("luasnip.extras").lambda +local rep = require("luasnip.extras").rep +local p = require("luasnip.extras").partial +local m = require("luasnip.extras").match +local n = require("luasnip.extras").nonempty +local dl = require("luasnip.extras").dynamic_lambda +local fmt = require("luasnip.extras.fmt").fmt +local fmta = require("luasnip.extras.fmt").fmta +local types = require("luasnip.util.types") +local conds = require("luasnip.extras.conditions") +local conds_expand = require("luasnip.extras.conditions.expand") + +return { + s( + "launch", + fmt( + [[ +{{ + "name": "Launch {1}", + "type": "go", + "request": "launch", + "program": "${{workspaceFolder}}/cmd/{2}", + "args": [{3}], + "outputMode": "remote" +}}{4}]], + { + i(1), + rep(1), + i(2), + i(0), + } + ) + ), +} |
