summaryrefslogtreecommitdiff
path: root/nvim/lua
diff options
context:
space:
mode:
author2025-04-21 15:15:42 +0300
committer2025-04-21 15:15:42 +0300
commit4d3bb0270aa6e76131fb12c191a07fde8cd819fe (patch)
tree400c190efd8944d95c67a73012180439949b97a7 /nvim/lua
parent20.05.2025 - 2 (diff)
downloaddotfiles-4d3bb0270aa6e76131fb12c191a07fde8cd819fe.tar.gz
dotfiles-4d3bb0270aa6e76131fb12c191a07fde8cd819fe.tar.bz2
dotfiles-4d3bb0270aa6e76131fb12c191a07fde8cd819fe.tar.xz
dotfiles-4d3bb0270aa6e76131fb12c191a07fde8cd819fe.zip
Привёл nvim к достаточному состоянию
Diffstat (limited to '')
-rw-r--r--nvim/lua/autocommands.lua80
-rw-r--r--nvim/lua/keymaps.lua76
-rw-r--r--nvim/lua/options.lua12
-rw-r--r--nvim/lua/plugins/dap.lua9
-rw-r--r--nvim/lua/plugins/format.lua29
-rw-r--r--nvim/lua/plugins/init.lua159
-rw-r--r--nvim/lua/plugins/telescope.lua3
-rw-r--r--nvim/lua/plugins/tree.lua15
8 files changed, 267 insertions, 116 deletions
diff --git a/nvim/lua/autocommands.lua b/nvim/lua/autocommands.lua
index 8db58e7..efdace8 100644
--- a/nvim/lua/autocommands.lua
+++ b/nvim/lua/autocommands.lua
@@ -1,9 +1,9 @@
-vim.api.nvim_create_autocmd({'BufWritePre'}, {
- pattern = '*.go',
+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)
+ 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
@@ -16,31 +16,79 @@ vim.api.nvim_create_autocmd({'BufWritePre'}, {
end,
})
-vim.api.nvim_create_autocmd({'BufWritePre'}, {
- pattern = '*.go',
+vim.api.nvim_create_autocmd({ "BufWritePre" }, {
+ pattern = "*.go",
callback = function()
vim.lsp.buf.format(nil, 3000)
- end
+ end,
})
-
-local TrimWhiteSpaceGrp = vim.api.nvim_create_augroup('TrimWhiteSpaceGrp', {})
-vim.api.nvim_create_autocmd('BufWritePre', {
+local TrimWhiteSpaceGrp = vim.api.nvim_create_augroup("TrimWhiteSpaceGrp", {})
+vim.api.nvim_create_autocmd("BufWritePre", {
group = TrimWhiteSpaceGrp,
- pattern = '*',
- command = '%s/\\s\\+$//e',
+ pattern = "*",
+ command = "%s/\\s\\+$//e",
})
-local YankHighlightGrp = vim.api.nvim_create_augroup('YankHighlightGrp', {})
-vim.api.nvim_create_autocmd('TextYankPost', {
+local YankHighlightGrp = vim.api.nvim_create_augroup("YankHighlightGrp", {})
+vim.api.nvim_create_autocmd("TextYankPost", {
group = YankHighlightGrp,
- pattern = '*',
+ pattern = "*",
callback = function()
vim.highlight.on_yank({
- higroup = 'IncSearch',
+ higroup = "IncSearch",
timeout = 40,
})
end,
})
+vim.api.nvim_create_autocmd({ "BufReadPost", "FileReadPost" }, {
+ pattern = "*",
+ callback = function()
+ vim.cmd("normal! zR")
+ end,
+})
+
+vim.api.nvim_create_autocmd("BufEnter", {
+ pattern = "*",
+ callback = function()
+ vim.defer_fn(function()
+ vim.cmd("normal! zR")
+ end, 100)
+ end,
+})
+
+vim.api.nvim_create_autocmd("BufWinEnter", {
+ pattern = "*",
+ callback = function()
+ vim.schedule(function()
+ vim.cmd("normal! zR")
+ end)
+ end,
+})
+
+local treeapi = require("nvim-tree.api")
+
+vim.api.nvim_create_autocmd("BufEnter", {
+ callback = function()
+ if vim.bo.filetype == "NvimTree" or vim.fn.expand("%") == "" then
+ return
+ end
+ vim.schedule(function()
+ treeapi.tree.find_file({
+ update_root = false,
+ focus = false,
+ })
+ end)
+ end,
+})
+-- vim.api.nvim_create_autocmd("InsertEnter", {
+-- pattern = "*",
+-- command = "set norelativenumber",
+-- })
+--
+-- vim.api.nvim_create_autocmd("InsertLeave", {
+-- pattern = "*",
+-- command = "set relativenumber",
+-- })
diff --git a/nvim/lua/keymaps.lua b/nvim/lua/keymaps.lua
index 75a11c4..969c629 100644
--- a/nvim/lua/keymaps.lua
+++ b/nvim/lua/keymaps.lua
@@ -1,55 +1,60 @@
local map = vim.api.nvim_set_keymap
local kmap = vim.keymap.set
-local opts = {noremap = true, silent = true}
+local opts = { noremap = true, silent = true }
+map("n", "<Space>", "<Nop>", opts)
+map("n", "<Home>", "^", opts)
+map("n", "<End>", "$", opts)
+map("v", "<Home>", "^", opts)
+map("v", "<End>", "$", opts)
+map("i", "<Home>", "<C-o>^", opts)
+map("i", "<End>", "<C-o>$", opts)
-map('n', '<Space>', '<Nop>', opts)
-map('n', '<Home>', '^', opts)
-map('n', '<End>', '$', opts)
-map('v', '<Home>', '^', opts)
-map('v', '<End>', '$', opts)
-map('i', '<Home>', '<C-o>^', opts)
-map('i', '<End>', '<C-o>$', opts)
-
-map('v', 'i', '<S-i>', opts)
-map('v', 'a', '<S-a>', opts)
+map("v", "i", "<S-i>", opts)
+map("v", "a", "<S-a>", opts)
-- Перемещение между буферами
-kmap('n', '<leader>bn', ':bnext<CR>', { noremap = true, silent = true }) -- Следующий буфер
-kmap('n', '<leader>bp', ':bprevious<CR>', { noremap = true, silent = true }) -- Предыдущий буфер
-kmap('n', '<leader>bd', ':bdelete<CR>', { noremap = true, silent = true }) -- Закрыть текущий буфер
+map("n", "<leader>bn", "<cmd>bnext<CR>", opts) -- Следующий буфер
+map("n", "<leader>bp", "<cmd>bprevious<CR>", opts) -- Предыдущий буфер
+map("n", "<leader>bd", "<cmd>bdelete<CR>", opts) -- Закрыть текущий буфер
+map("n", "<leader>w", "<cmd>wa<CR>", opts)
-- Tree
-map('n', '<C-t>', ':NvimTreeToggle<CR>', opts)
+map("n", "<F3>", ":NvimTreeToggle<CR>", opts)
-- Telescope
-map('n', '<leader>ff', '<cmd>Telescope find_files<CR>', opts)
-map('n', '<leader>fg', '<cmd>Telescope live_grep<CR>', opts)
-map('n', '<leader>fb', '<cmd>Telescope buffers<CR>', opts)
+map("n", "<leader>ff", "<cmd>Telescope find_files<CR>", opts)
+map("n", "<leader>fg", "<cmd>Telescope live_grep<CR>", opts)
+map("n", "<leader>fb", "<cmd>Telescope buffers<CR>", opts)
-- LSP
-kmap('n', '<leader>e', vim.diagnostic.open_float, opts)
-kmap('n', '[d', vim.diagnostic.goto_prev, opts)
-kmap('n', ']d', vim.diagnostic.goto_next, opts)
-kmap('n', '<leader>q', vim.diagnostic.setloclist, opts)
+kmap("n", "<leader>e", vim.diagnostic.open_float, opts)
+kmap("n", "[d", vim.diagnostic.goto_prev, opts)
+kmap("n", "]d", vim.diagnostic.goto_next, opts)
+kmap("n", "<leader>q", vim.diagnostic.setloclist, opts)
-- стандартные горячие клавиши для LSP, больше в документации
-- https://github.com/neovim/nvim-lspconfig
-kmap('n', 'gD', vim.lsp.buf.declaration, opts)
-kmap('n', 'gd', vim.lsp.buf.definition, opts)
-kmap('n', 'K', vim.lsp.buf.hover, opts)
-kmap('n', 'gi', vim.lsp.buf.implementation, opts)
-kmap('n', '<C-k>', vim.lsp.buf.signature_help, opts)
-kmap('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, opts)
-kmap('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, opts)
-kmap('n', '<leader>wl', function()
+kmap("n", "gD", vim.lsp.buf.declaration, opts)
+kmap("n", "gd", vim.lsp.buf.definition, opts)
+kmap("n", "K", vim.lsp.buf.hover, opts)
+kmap("n", "gi", vim.lsp.buf.implementation, opts)
+kmap("n", "<C-k>", vim.lsp.buf.signature_help, opts)
+kmap("n", "<leader>wa", vim.lsp.buf.add_workspace_folder, opts)
+kmap("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder, opts)
+kmap("n", "<leader>wl", function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, opts)
-kmap('n', '<leader>D', vim.lsp.buf.type_definition, opts)
-kmap('n', '<leader>rn', vim.lsp.buf.rename, opts)
-kmap('n', '<leader>ca', vim.lsp.buf.code_action, opts)
-kmap('n', 'gr', vim.lsp.buf.references, opts)
+kmap("n", "<leader>D", vim.lsp.buf.type_definition, opts)
+kmap("n", "<leader>rn", vim.lsp.buf.rename, opts)
+kmap("n", "<leader>ca", vim.lsp.buf.code_action, opts)
+kmap("n", "gr", vim.lsp.buf.references, opts)
-- kmap('n', '<leader>f', vim.lsp.buf.formatting, opts)
+kmap("n", "<leader>bb", "<cmd>lua require'dap'.toggle_breakpoint()<CR>", opts)
+kmap("n", "<F9>", "<cmd>lua require'dap'.continue()<CR>", opts)
+kmap("n", "<F8>", "<cmd>lua require'dap'.step_over()<CR>", opts)
+kmap("n", "<F7>", "<cmd>lua require'dap'.step_into()<CR>", opts)
+kmap("n", "<F2>", "<cmd>lua require'dapui'.toggle()<CR>", opts)
local function change_root_to_global_cwd()
local api = require("nvim-tree.api")
@@ -57,5 +62,4 @@ local function change_root_to_global_cwd()
api.tree.change_root(global_cwd)
end
-kmap('n', '<C-c>', change_root_to_global_cwd, {})
-
+kmap("n", "<C-c>", change_root_to_global_cwd, opts)
diff --git a/nvim/lua/options.lua b/nvim/lua/options.lua
index 6f575a9..518329a 100644
--- a/nvim/lua/options.lua
+++ b/nvim/lua/options.lua
@@ -28,18 +28,24 @@ local options = {
tabstop = 4,
cursorline = true,
number = true,
- relativenumber = true,
+ -- relativenumber = true,
numberwidth = 4,
signcolumn = "yes",
wrap = true,
scrolloff = 8,
sidescrolloff = 8,
+ syntax = "on",
+ foldmethod = "expr",
+ foldexpr = "nvim_treesitter#foldexpr()",
+ foldnestmax = 4,
+ foldlevel = 99,
+ foldlevelstart = 1,
}
-vim.opt.shortmess:append "c"
+vim.opt.shortmess:append("c")
for k, v in pairs(options) do
vim.opt[k] = v
end
-vim.cmd "set whichwrap+=<,>,[,],h,l"
+vim.cmd("set whichwrap+=<,>,[,],h,l")
diff --git a/nvim/lua/plugins/dap.lua b/nvim/lua/plugins/dap.lua
new file mode 100644
index 0000000..7c7f773
--- /dev/null
+++ b/nvim/lua/plugins/dap.lua
@@ -0,0 +1,9 @@
+require("dap-go").setup()
+require("dap").adapters.go = {
+ type = "server",
+ port = "${port}",
+ executable = {
+ command = "dlv",
+ args = { "dap", "-l", "127.0.0.1:${port}" },
+ },
+}
diff --git a/nvim/lua/plugins/format.lua b/nvim/lua/plugins/format.lua
new file mode 100644
index 0000000..435222d
--- /dev/null
+++ b/nvim/lua/plugins/format.lua
@@ -0,0 +1,29 @@
+local conform = require("conform")
+
+conform.setup({
+ formatters_by_ft = {
+ javascript = { "prettier" },
+ typescript = { "prettier" },
+ javascriptreact = { "prettier" },
+ typescriptreact = { "prettier" },
+ svelte = { "prettier" },
+ css = { "prettier" },
+ html = { "prettier" },
+ json = { "prettier" },
+ yaml = { "prettier" },
+ markdown = { "prettier" },
+ graphql = { "prettier" },
+ lua = { "stylua" },
+ python = { "isort", "black" },
+ go = { "gofmt" },
+ },
+ format_on_save = {
+ lsp_fallback = true,
+ async = false,
+ timeout_ms = 500,
+ },
+})
+
+vim.keymap.set({ "n", "v" }, "<leader>mp", function()
+ conform.format({ lsp_fallback = true, async = false, timeout_ms = 500 })
+end, { desc = "Format file or range (in visual mode)" })
diff --git a/nvim/lua/plugins/init.lua b/nvim/lua/plugins/init.lua
index f2f0676..f3e7030 100644
--- a/nvim/lua/plugins/init.lua
+++ b/nvim/lua/plugins/init.lua
@@ -1,61 +1,100 @@
-return require('packer').startup{function(use)
- use 'wbthomason/packer.nvim'
- use 'nvim-lua/plenary.nvim'
- use 'neovim/nvim-lspconfig'
- use 'bluz71/vim-moonfly-colors'
- use {
- 'hrsh7th/nvim-cmp',
- requires = {
- 'hrsh7th/cmp-nvim-lsp',
- 'hrsh7th/cmp-buffer',
- 'hrsh7th/cmp-path',
- 'hrsh7th/cmp-vsnip',
- 'hrsh7th/vim-vsnip',
- },
- config = function()
- require 'plugins.cmp'
+return require("packer").startup({
+ function(use)
+ use("wbthomason/packer.nvim")
+ use("nvim-lua/plenary.nvim")
+ use("neovim/nvim-lspconfig")
+ use("bluz71/vim-moonfly-colors")
+ use("Snyssfx/goerr-nvim")
+ use({
+ "lukas-reineke/indent-blankline.nvim",
+ config = function()
+ require("ibl").setup()
+ end,
+ })
+ use({
+ "rcarriga/nvim-dap-ui",
+ requires = { "mfussenegger/nvim-dap", "nvim-neotest/nvim-nio" },
+ config = function()
+ require("dapui").setup()
+ end,
+ })
+ use({
+ "leoluz/nvim-dap-go",
+ requires = { "mfussenegger/nvim-dap" },
+ config = function()
+ require("plugins.dap")
+ end,
+ })
+ use({
+ "hrsh7th/nvim-cmp",
+ requires = {
+ "hrsh7th/cmp-nvim-lsp",
+ "hrsh7th/cmp-buffer",
+ "hrsh7th/cmp-path",
+ "hrsh7th/cmp-vsnip",
+ "hrsh7th/vim-vsnip",
+ },
+ config = function()
+ require("plugins.cmp")
+ end,
+ })
+ use({
+ "nvim-lualine/lualine.nvim",
+ config = function()
+ require("plugins.lualine")
+ end,
+ })
+ use({
+ "nvim-treesitter/nvim-treesitter",
+ run = ":TSUpdate",
+ config = function()
+ require("plugins.treesitter")
+ end,
+ })
+ use({
+ "nvim-telescope/telescope.nvim",
+ config = function()
+ require("plugins.telescope")
+ end,
+ })
+ use({
+ "nvim-tree/nvim-tree.lua",
+ requires = {
+ "nvim-tree/nvim-web-devicons",
+ },
+ config = function()
+ require("plugins.tree")
+ end,
+ })
+ use({
+ "stevearc/conform.nvim",
+ config = function()
+ require("plugins.format")
+ end,
+ })
+ use({
+ "mfussenegger/nvim-dap",
+ config = function()
+ local dap = require("dap")
+ -- Общие конфигурации для Go
+ dap.configurations.go = {
+ {
+ type = "go",
+ name = "Debug",
+ request = "launch",
+ program = "${file}",
+ showLog = true,
+ console = "integratedTerminal",
+ },
+ }
+ end,
+ })
+ if packer_bootstrap then
+ require("packer").sync()
end
- }
- use {
- 'nvim-lualine/lualine.nvim',
- config = function()
- require 'plugins.lualine'
- end
- }
- use {
- 'nvim-treesitter/nvim-treesitter',
- run = ':TSUpdate',
- config = function()
- require 'plugins.treesitter'
- end
- }
- use {
- 'nvim-telescope/telescope.nvim',
- config = function()
- require 'plugins.telescope'
- end
- }
- use {
- 'nvim-tree/nvim-tree.lua',
- requires = {
- 'nvim-tree/nvim-web-devicons',
- },
- config = function()
- require 'plugins.tree'
- end
- }
- use {
- "stevearc/conform.nvim",
- config = function()
- require("conform").setup()
- end,
- }
- if packer_bootstrap then
- require('packer').sync()
- end
-end,
-config = {
- -- The root has to be a directory named "pack"
- package_root = vim.fn.stdpath('config') .. '/pack',
-}}
-
+ end,
+ config = {
+ -- The root has to be a directory named "pack"
+ package_root = vim.fn.stdpath("data") .. "/site/pack",
+ },
+})
diff --git a/nvim/lua/plugins/telescope.lua b/nvim/lua/plugins/telescope.lua
index 44b1869..02bc40c 100644
--- a/nvim/lua/plugins/telescope.lua
+++ b/nvim/lua/plugins/telescope.lua
@@ -3,5 +3,8 @@ require('telescope').setup{
buffers = {
initial_mode = 'normal'
}
+ },
+ defaults = {
+ file_ignore_patterns = {"vendor", "node_modules"}
}
}
diff --git a/nvim/lua/plugins/tree.lua b/nvim/lua/plugins/tree.lua
index cea966e..320849b 100644
--- a/nvim/lua/plugins/tree.lua
+++ b/nvim/lua/plugins/tree.lua
@@ -5,10 +5,23 @@ require("nvim-tree").setup({
view = {
width = 30,
},
+ git = {
+ enable = true,
+ },
renderer = {
group_empty = true,
+ highlight_git = true,
+ icons = {
+ show = {
+ git = true,
+ },
+ },
},
filters = {
- dotfiles = true,
+ dotfiles = false,
+ },
+ update_focused_file = {
+ enable = true,
+ update_root = false,
},
})