feat: добавлены hotkeys для перехода между файлами и дебаггингом, добавлен конфиг для работы с локальным конфигом prettier для веб проектов, плюс добавлены сеттинг подсказек при нажатии на tab

This commit is contained in:
RahatMelsov 2025-12-02 16:16:26 +05:00
parent b8653f6ed4
commit 148096e607
10 changed files with 304 additions and 128 deletions

View file

@ -0,0 +1,19 @@
return {
'zbirenbaum/copilot.lua',
event = 'InsertEnter',
config = function()
require('copilot').setup {
suggestion = {
enabled = true,
auto_trigger = true,
keymap = {
accept = '<C-l>',
next = '<M-]>',
prev = '<M-[>',
dismiss = '<C-]>',
},
},
panel = { enabled = false },
}
end,
}

View file

@ -0,0 +1,67 @@
return {
'mfussenegger/nvim-dap',
dependencies = {
-- Красивый UI
'rcarriga/nvim-dap-ui',
-- Обязательная зависимость для UI
'nvim-neotest/nvim-nio',
-- Настройка для Go
'leoluz/nvim-dap-go',
},
config = function()
local dap = require 'dap'
local dapui = require 'dapui'
-- Настраиваем UI
dapui.setup()
-- Настраиваем Go (автоматически подхватит dlv)
require('dap-go').setup()
-- Автоматическое открытие/закрытие окна отладки
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
-- КЛАВИШИ (Keymaps)
-- Ставит точку остановки (Breakpoint) на текущей строке
vim.keymap.set('n', '<leader>db', dap.toggle_breakpoint, { desc = 'Debug: Toggle Breakpoint' })
-- Запуск / Продолжить (F5 - как везде)
vim.keymap.set('n', '<F5>', dap.continue, { desc = 'Debug: Start/Continue' })
-- Шаг внутрь (Step Into - F11)
vim.keymap.set('n', '<F11>', dap.step_into, { desc = 'Debug: Step Into' })
-- Шаг через (Step Over - F10)
vim.keymap.set('n', '<F10>', dap.step_over, { desc = 'Debug: Step Over' })
-- Шаг назад (Step Out - Shift+F11)
vim.keymap.set('n', '<S-F11>', dap.step_out, { desc = 'Debug: Step Out' })
-- Открыть UI вручную (если вдруг закрылся)
vim.keymap.set('n', '<leader>du', dapui.toggle, { desc = 'Debug: Toggle UI' })
vim.keymap.set('n', '<leader>dt', function()
require('dap-go').debug_test()
end, { desc = 'Debug: Run Nearest Test' })
vim.keymap.set('n', '<leader>dq', function()
require('dapui').close()
end, { desc = 'Debug: [Q]uit/Close UI' })
vim.keymap.set('n', '<leader>dx', function()
require('dap').terminate() -- Убить процесс
require('dapui').close() -- Закрыть окна
end, { desc = 'Debug: e[X]it and close' })
end,
}

View file

@ -0,0 +1,8 @@
return {
'sindrets/diffview.nvim',
cmd = { 'DiffviewOpen', 'DiffviewFileHistory' },
keys = {
{ '<leader>gd', '<cmd>DiffviewOpen<cr>', desc = 'DiffView: Open' },
{ '<leader>gh', '<cmd>DiffviewFileHistory %<cr>', desc = 'DiffView: File History' },
},
}

View file

@ -0,0 +1,3 @@
return {
{ 'windwp/nvim-autopairs', event = 'InsertEnter', config = true },
}

View file

@ -0,0 +1,13 @@
return {
'akinsho/git-conflict.nvim',
version = '*',
config = function()
require('git-conflict').setup {
default_mappings = true,
-- co - выбрать Ours (свое)
-- ct - выбрать Theirs (чужое)
-- cb - оба
disable_diagnostics = true,
}
end,
}

View file

@ -0,0 +1,89 @@
return {
{
'lewis6991/gitsigns.nvim',
event = { 'BufReadPre', 'BufNewFile' },
dependencies = { 'nvim-lua/plenary.nvim' },
config = function()
local util = require 'gitsigns.util'
require('gitsigns').setup {
-- --- ТВОИ НАСТРОЙКИ ВИЗУАЛА (оставляем как было) ---
watch_gitdir = { interval = 1000, follow_files = true },
attach_to_untracked = true,
current_line_blame = true, -- Блейм включен по умолчанию
current_line_blame_opts = {
virt_text = true,
virt_text_pos = 'right_align',
delay = 500,
},
-- Твой кастомный форматтер блейма
current_line_blame_formatter = function(_, info)
return {
{ '|| ', '@lsp.type.variable' },
{ info.author, '@lsp.type.comment' },
{ '', '@lsp.type.variable' },
{ util.expand_format('<author_time:%R>', info), '@lsp.type.operator' },
{ '', '@lsp.type.variable' },
{ info.summary or '', '@lsp.type.string' },
}
end,
preview_config = {
border = 'rounded',
style = 'minimal',
relative = 'cursor',
row = 0,
col = 1,
},
-- --- ВОТ ЧЕГО НЕ ХВАТАЛО: КЛАВИШИ УПРАВЛЕНИЯ ---
on_attach = function(bufnr)
local gs = package.loaded.gitsigns
local function map(mode, l, r, opts)
opts = opts or {}
opts.buffer = bufnr
vim.keymap.set(mode, l, r, opts)
end
-- Навигация (переход к следующему изменению)
map('n', ']c', function()
if vim.wo.diff then
return ']c'
end
vim.schedule(function()
gs.next_hunk()
end)
return '<Ignore>'
end, { expr = true, desc = 'Jump to next hunk' })
map('n', '[c', function()
if vim.wo.diff then
return '[c'
end
vim.schedule(function()
gs.prev_hunk()
end)
return '<Ignore>'
end, { expr = true, desc = 'Jump to previous hunk' })
-- Действия (Actions)
map('n', '<leader>hs', gs.stage_hunk, { desc = 'Git: [S]tage Hunk' }) -- Добавить кусок в индекс
map('n', '<leader>hr', gs.reset_hunk, { desc = 'Git: [R]eset Hunk' }) -- Откатить кусок
map('v', '<leader>hs', function()
gs.stage_hunk { vim.fn.line '.', vim.fn.line 'v' }
end, { desc = 'Git: Stage selection' })
map('v', '<leader>hr', function()
gs.reset_hunk { vim.fn.line '.', vim.fn.line 'v' }
end, { desc = 'Git: Reset selection' })
map('n', '<leader>hS', gs.stage_buffer, { desc = 'Git: [S]tage Buffer' }) -- Добавить весь файл
map('n', '<leader>hu', gs.undo_stage_hunk, { desc = 'Git: [U]ndo Stage Hunk' }) -- Убрать из индекса последний кусок
map('n', '<leader>hp', gs.preview_hunk, { desc = 'Git: [P]review Hunk' }) -- Показать превью изменений
map('n', '<leader>tb', gs.toggle_current_line_blame, { desc = 'Git: [T]oggle [B]lame line' }) -- Вкл/Выкл блейм
map('n', '<leader>hd', gs.diffthis, { desc = 'Git: [D]iff against index' }) -- Показать diff
end,
}
end,
},
}

27
lua/custom/plugins/go.lua Normal file
View file

@ -0,0 +1,27 @@
return {
{
'ray-x/go.nvim',
ft = { 'go', 'gomod' },
dependencies = {
'ray-x/guihua.lua',
'nvim-treesitter/nvim-treesitter',
'neovim/nvim-lspconfig',
},
config = function()
require('go').setup {
lsp_cfg = true,
lsp_on_attach = function(client, bufnr)
if client.server_capabilities.documentFormattingProvider then
vim.api.nvim_create_autocmd('BufWritePre', {
group = vim.api.nvim_create_augroup('GoFormat', { clear = true }),
buffer = bufnr,
callback = function()
vim.lsp.buf.format { async = false }
end,
})
end
end,
}
end,
},
}

View file

@ -1,109 +0,0 @@
-- You can add your own plugins here or in other files in this directory!
-- I promise not to create any merge conflicts in this directory :)
--
-- See the kickstart.nvim README for more information
-- Bootstrap lazy.nvim
return {
{ 'folke/snacks.nvim', opts = { image = { enabled = true } } },
{
'nvim-neo-tree/neo-tree.nvim',
branch = 'v3.x',
dependencies = {
'nvim-lua/plenary.nvim',
'MunifTanjim/nui.nvim',
'nvim-tree/nvim-web-devicons', -- optional, but recommended
},
opts = {
window = {
mappings = {
['P'] = { -- toggle preview window
'toggle_preview',
config = { use_float = true, use_snacks_image = true, use_image_nvim = true },
},
},
},
},
lazy = false, -- neo-tree will lazily load itself
},
{
'ray-x/go.nvim',
dependencies = {
'ray-x/guihua.lua', -- required UI library
'nvim-treesitter/nvim-treesitter',
'neovim/nvim-lspconfig',
},
ft = { 'go', 'gomod' },
config = function()
require('go').setup {
lsp_cfg = true, -- auto-setup gopls
lsp_on_attach = function(client, bufnr)
-- Auto format on save
if client.server_capabilities.documentFormattingProvider then
vim.api.nvim_create_autocmd('BufWritePre', {
group = vim.api.nvim_create_augroup('GoFormat', { clear = true }),
buffer = bufnr,
callback = function()
vim.lsp.buf.format { async = false }
end,
})
end
end,
}
end,
},
{
'windwp/nvim-autopairs',
event = 'InsertEnter',
config = true,
},
-- ⬇️ Your gitsigns with blame-on-cursor
{
'lewis6991/gitsigns.nvim',
event = { 'BufReadPre', 'BufNewFile' },
dependencies = { 'nvim-lua/plenary.nvim' },
config = function()
local util = require 'gitsigns.util'
require('gitsigns').setup {
watch_gitdir = { interval = 1000, follow_files = true },
numhl = true,
linehl = false,
word_diff = false,
attach_to_untracked = true,
current_line_blame = true,
current_line_blame_opts = {
virt_text = true,
virt_text_pos = 'right_align', -- 'eol' | 'overlay' | 'right_align'
delay = 500,
ignore_whitespace = false,
virt_text_priority = 100,
use_focus = true,
},
current_line_blame_formatter = function(_, info)
return {
{ '|| ', '@lsp.type.variable' },
{ info.author, '@lsp.type.comment' },
{ '', '@lsp.type.variable' },
{ util.expand_format('<author_time:%R>', info), '@lsp.type.operator' },
{ '', '@lsp.type.variable' },
{ info.summary or '', '@lsp.type.string' }, -- commit message
}
end,
update_debounce = 200,
max_file_length = 40000,
preview_config = {
border = 'rounded',
style = 'minimal',
relative = 'cursor',
row = 0,
col = 1,
},
}
end,
},
}

26
lua/custom/plugins/ui.lua Normal file
View file

@ -0,0 +1,26 @@
return {
{ 'folke/snacks.nvim', opts = { image = { enabled = true } } },
{
'nvim-neo-tree/neo-tree.nvim',
branch = 'v3.x',
dependencies = {
'nvim-lua/plenary.nvim',
'MunifTanjim/nui.nvim',
'nvim-tree/nvim-web-devicons',
},
git_status = {
enabled = false, -- <--- вот это
},
opts = {
window = {
mappings = {
['P'] = {
'toggle_preview',
config = { use_float = true, use_snacks_image = true, use_image_nvim = true },
},
},
},
},
lazy = false,
},
}