diff --git a/init.lua b/init.lua index 0b3af07..a585457 100644 --- a/init.lua +++ b/init.lua @@ -4,9 +4,9 @@ require('settings/tabs') require('settings/panels') require('settings/search') +-- Плагины +require('plugins/packer') + -- Комбинации клавиш require('keymaps/system') require('keymaps/plugins') - --- Плагины -require('plugins/packer') diff --git a/lua/keymaps/plugins.lua b/lua/keymaps/plugins.lua index 03880e2..c0ff824 100644 --- a/lua/keymaps/plugins.lua +++ b/lua/keymaps/plugins.lua @@ -1,8 +1,12 @@ --[[ nvim-neo-tree/neo-tree ]] --- Открыть интерфейс -vim.keymap.set('n', 'ff', 'NeoTreeShow', {noremap = true}) -vim.keymap.set('n', 'fd', 'NeoTreeReveal', {noremap = true}) +-- Открыть интерфейс с древовидным отображением файлов +vim.keymap.set({'n', 'i', 'v', 'o', 'x'}, '', 'NeoTreeRevealToggle', {noremap = true}) + + +-- [[ folke/trouble.nvim ]] +vim.keymap.set({'n', 'i', 'v', 'o', 'x'}, '', 'TroubleToggle', {noremap = true}) + --[[ onsails/diaglist.nvim ]] @@ -10,160 +14,142 @@ vim.keymap.set('n', 'fd', 'NeoTreeReveal', {noremap = true}) vim.keymap.set('n', 'dw', 'lua require(\'diaglist\').open_all_diagnostics()', {noremap = true}) vim.keymap.set('n', 'd0', 'lua require(\'diaglist\').open_buffer_diagnostics()', {noremap = true}) + --[[ noib3/nvim-cokeline ]] -- Переключение вкладок vim.keymap.set('n', '', '(cokeline-focus-next)', {noremap = true, silent = true}) vim.keymap.set('n', '', '(cokeline-focus-prev)', {noremap = true, silent = true}) ---[[ neoclide/coc ]] --- Автозавершение -function _G.check_back_space() - local col = vim.fn.col('.') - 1 - return col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') ~= nil +--[[ neovim/nvim-lspconfig ]] + +-- Диагностика +vim.keymap.set('n', 'e', vim.diagnostic.open_float, {noremap = true, silent = true}) +vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, {noremap = true, silent = true}) +vim.keymap.set('n', ']d', vim.diagnostic.goto_next, {noremap = true, silent = true}) +vim.keymap.set('n', 'q', vim.diagnostic.setloclist, {noremap = true, silent = true}) + +-- Инициализация только после того, как LSP-сервер подключится к текущему буферу +lspconfig_on_attach = function(client, bufnr) + -- Активация завершения + vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') + + vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, {noremap = true, silent = true, buffer = bufnr}) + vim.keymap.set('n', 'gd', vim.lsp.buf.definition, {noremap = true, silent = true, buffer = bufnr}) + vim.keymap.set('n', 'K', vim.lsp.buf.hover, {noremap = true, silent = true, buffer = bufnr}) + vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, {noremap = true, silent = true, buffer = bufnr}) + vim.keymap.set('n', '', vim.lsp.buf.signature_help, {noremap = true, silent = true, buffer = bufnr}) + vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, {noremap = true, silent = true, buffer = bufnr}) + vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, {noremap = true, silent = true, buffer = bufnr}) + vim.keymap.set('n', 'wl', function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end, {noremap = true, silent = true, buffer = bufnr}) + vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, {noremap = true, silent = true, buffer = bufnr}) + vim.keymap.set('n', 'rn', vim.lsp.buf.rename, {noremap = true, silent = true, buffer = bufnr}) + vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, {noremap = true, silent = true, buffer = bufnr}) + vim.keymap.set('n', 'gr', vim.lsp.buf.references, {noremap = true, silent = true, buffer = bufnr}) + + -- Форматирование + vim.keymap.set('n', 'f', function() vim.lsp.buf.format { async = true } end, {noremap = true, silent = true, buffer = bufnr}) end -vim.keymap.set('i', '', 'coc#pum#visible() ? coc#pum#next(1) : v:lua.check_back_space() ? "" : coc#refresh()', {silent = true, noremap = true, expr = true, replace_keycodes = false}) -vim.keymap.set('i', '', [[coc#pum#visible() ? coc#pum#prev(1) : "\"]], {silent = true, noremap = true, expr = true, replace_keycodes = false}) --- Применить выбранное автозавершение -vim.keymap.set('i', '', [[coc#pum#visible() ? coc#pum#confirm() : "\u\\=coc#on_enter()\"]], {silent = true, noremap = true, expr = true, replace_keycodes = false}) --- Отобразить меню фрагментов -vim.keymap.set('i', '', '(coc-snippets-expand-jump)', {silent = true, noremap = true, expr = true, replace_keycodes = false}) +--[[ lewis6991/gitsigns.nvim ]] --- Отобразить меню автозавершений -vim.keymap.set('i', '', 'coc#refresh()', {silent = true, expr = true}) +-- Инициализация только после того, как LSP-сервер подключится к текущему буферу +gitsigns_on_attach = function(bufnr) + -- Инициализация ярлыка + local gs = package.loaded.gitsigns --- Навигация в диагностической панели -vim.keymap.set('n', '[g', '(coc-diagnostic-prev)', {silent = true}) -vim.keymap.set('n', ']g', '(coc-diagnostic-next)', {silent = true}) + -- Навигация + vim.keymap.set('n', ']c', function() + if vim.wo.diff then return ']c' end + vim.schedule(function() gs.next_hunk() end) + return '' + end, {expr = true, buffer = bufnr}) --- GoTo-навигация -vim.keymap.set('n', 'gd', '(coc-definition)', {silent = true}) -vim.keymap.set('n', 'gy', '(coc-type-definition)', {silent = true}) -vim.keymap.set('n', 'gi', '(coc-implementation)', {silent = true}) -vim.keymap.set('n', 'gr', '(coc-references)', {silent = true}) + -- Навигация + vim.keymap.set('n', '[c', function() + if vim.wo.diff then return '[c' end + vim.schedule(function() gs.prev_hunk() end) + return '' + end, {expr = true, buffer = bufnr}) --- Отобразить документацию в окне представления -function _G.show_docs() - local cw = vim.fn.expand('') - if vim.fn.index({'vim', 'help'}, vim.bo.filetype) >= 0 then - vim.api.nvim_command('h ' .. cw) - elseif vim.api.nvim_eval('coc#rpc#ready()') then - vim.fn.CocActionAsync('doHover') - else - vim.api.nvim_command('!' .. vim.o.keywordprg .. ' ' .. cw) + vim.keymap.set('n', 'hs', 'Gitsigns stage_hunk', {buffer = bufnr}) + vim.keymap.set('v', 'hs', 'Gitsigns stage_hunk', {buffer = bufnr}) + vim.keymap.set('n', 'hr', 'Gitsigns reset_hunk', {buffer = bufnr}) + vim.keymap.set('v', 'hr', 'Gitsigns reset_hunk', {buffer = bufnr}) + vim.keymap.set('n', 'hS', gs.stage_buffer, {buffer = bufnr}) + vim.keymap.set('n', 'hu', gs.undo_stage_hunk, {buffer = bufnr}) + vim.keymap.set('n', 'hR', gs.reset_buffer, {buffer = bufnr}) + vim.keymap.set('n', 'hp', gs.preview_hunk, {buffer = bufnr}) + vim.keymap.set('n', 'hb', function() gs.blame_line{full=true} end, {buffer = bufnr}) + vim.keymap.set('n', 'tb', gs.toggle_current_line_blame, {buffer = bufnr}) + vim.keymap.set('n', 'hd', gs.diffthis, {buffer = bufnr}) + vim.keymap.set('n', 'hD', function() gs.diffthis('~') end, {buffer = bufnr}) + vim.keymap.set('n', 'td', gs.toggle_deleted, {buffer = bufnr}) + + vim.keymap.set('o', 'ih', 'Gitsigns select_hunk', {buffer = bufnr}) + vim.keymap.set('x', 'ih', 'Gitsigns select_hunk', {buffer = bufnr}) +end + + +--[[ nvim-telescope/telescope.nvim ]] + +-- Инициализация ярлыка +local builtin = require('telescope.builtin') + +-- Поиск файла +vim.keymap.set('n', 'ff', builtin.find_files, {noremap = true, silent = true}) + +-- grep +vim.keymap.set('n', 'fg', builtin.live_grep, {noremap = true, silent = true}) + +-- Буферы? +vim.keymap.set('n', 'fb', builtin.buffers, {noremap = true, silent = true}) + +-- Помощь +vim.keymap.set('n', 'fh', builtin.help_tags, {noremap = true, silent = true}) + + +--[[ windwp/nvim-autopairs ]] + +-- Переназначение стандартных сочетаний клавиш для "ms-jpq/coq_nvim" +--vim.keymap.set('i', '', [[pumvisible() ? "" : ""]], {expr = true, noremap = true}) +--vim.keymap.set('i', '', [[pumvisible() ? "" : ""]], {expr = true, noremap = true}) +--vim.keymap.set('i', '', [[pumvisible() ? "" : ""]], {expr = true, noremap = true}) +--vim.keymap.set('i', '', [[pumvisible() ? "" : ""]], {expr = true, noremap = true}) + +_G.PairIT = function() + local autopairs = { + ['('] = ')', + ['['] = ']', + ['{'] = '}', + ['<'] = '>', + [ [=[']=] ] = [=[']=], + [ [=["]=] ] = [=["]=], + } + local set_pairs = vim.keymap.set + for k, v in pairs(autopairs) do + set_pairs('i', k, function() + return k .. v .. '' + end, { expr = true, noremap = true }) end end -vim.keymap.set('n', 'k', 'lua _G.show_docs()', {silent = true}) --- Подсветка символа и ссылаемые на него объекты при событии "CursorHold" (курсор неподвижен) -vim.api.nvim_create_augroup('CocGroup', {}) -vim.api.nvim_create_autocmd('CursorHold', { - group = 'CocGroup', - command = 'silent call CocActionAsync(\'highlight\')', - desc = 'Подсветка символа и ссылаемые на него объекты при событии "CursorHold"' -}) --- Переименовать символ -vim.keymap.set('n', 'rn', '(coc-rename)', {silent = true}) +--[[ b3nj5m1n/kommentary ]] +vim.keymap.set('n', 'cic', 'kommentary_line_increase', {noremap = true, silent = true}) +vim.keymap.set('n', 'ci', 'kommentary_motion_increase', {noremap = true, silent = true}) +vim.keymap.set('x', 'ci', 'kommentary_visual_increase', {noremap = true, silent = true}) +vim.keymap.set('n', 'cdc', 'kommentary_line_decrease', {noremap = true, silent = true}) +vim.keymap.set('n', 'cd', 'kommentary_motion_decrease', {noremap = true, silent = true}) +vim.keymap.set('x', 'cd', 'kommentary_visual_decrease', {noremap = true, silent = true}) --- Форматировать выбранный код -vim.keymap.set('x', 'f', '(coc-format-selected)', {silent = true}) -vim.keymap.set('n', 'f', '(coc-format-selected)', {silent = true}) --- Установить formatexpr для указанных типов файлов -vim.api.nvim_create_autocmd('FileType', { - group = 'CocGroup', - pattern = 'typescript,json', - command = 'setl formatexpr=CocAction(\'formatSelected\')', - desc = 'Установить formatexpr для указанных типов файлов' -}) +--[[ preservim/tagbar ]] +vim.keymap.set({'n', 'i', 'v', 'o', 'x'}, '', 'TagbarToggle', {noremap = true, silent = true}) --- Обновить вспомогательную запись на всплывающем заполнителе -vim.api.nvim_create_autocmd('User', { - group = 'CocGroup', - pattern = 'CocJumpPlaceholder', - command = 'call CocActionAsync(\'showSignatureHelp\')', - desc = 'Обновить вспомогательную запись на всплывающем заполнителе' -}) --- Применить codeAction к выбранному региону -vim.keymap.set('x', 'a', '(coc-codeaction-selected)', {silent = true, nowait = true}) -vim.keymap.set('n', 'a', '(coc-codeaction-selected)', {silent = true, nowait = true}) +--[[ simrat39/symbols-outline.nvim ]] +vim.keymap.set({'n', 'i', 'v', 'o', 'x'}, '', 'SymbolsOutline', {noremap = true, silent = true}) --- Применить действия с кодом в позиции курсора -vim.keymap.set('n', 'ac', '(coc-codeaction-cursor)', {silent = true, nowait = true}) - --- Применить действия с кодом на всём буфере -vim.keymap.set('n', 'as', '(coc-codeaction-source)', {silent = true, nowait = true}) - --- Применить codeActions в текущем буфере -vim.keymap.set('n', 'ac', '(coc-codeaction)', {silent = true, nowait = true}) - --- Применить наиболее предпочтительное быстрое исправление в текущей строке -vim.keymap.set('n', 'qf', '(coc-fix-current)', {silent = true, nowait = true}) - --- Применить рефакторинг -vim.keymap.set('n', 're', '(coc-codeaction-refactor)', {silent = true}) -vim.keymap.set('x', 'r', 'Plug>(coc-codeaction-refactor-selected)', {silent = true}) -vim.keymap.set('n', 'r', 'Plug>(coc-codeaction-refactor-selected)', {silent = true}) - --- Выполнить действия Code Lens в текущей строке -vim.keymap.set('n', 'cl', '(coc-codelens-action)', {silent = true, nowait = true}) - --- Назначение функция и классов текстовых объектов -vim.keymap.set('x', 'if', '(coc-funcobj-i)', {silent = true, nowait = true}) -vim.keymap.set('o', 'if', '(coc-funcobj-i)', {silent = true, nowait = true}) -vim.keymap.set('x', 'af', '(coc-funcobj-a)', {silent = true, nowait = true}) -vim.keymap.set('o', 'af', '(coc-funcobj-a)', {silent = true, nowait = true}) -vim.keymap.set('x', 'ic', '(coc-classobj-i)', {silent = true, nowait = true}) -vim.keymap.set('o', 'ic', '(coc-classobj-i)', {silent = true, nowait = true}) -vim.keymap.set('x', 'ac', '(coc-classobj-a)', {silent = true, nowait = true}) -vim.keymap.set('o', 'ac', '(coc-classobj-a)', {silent = true, nowait = true}) - --- Прокрутка во всплывающих окнах -vim.keymap.set('n', '', 'coc#float#has_scroll() ? coc#float#scroll(1) : \'\'', {silent = true, nowait = true, expr = true}) -vim.keymap.set('n', '', 'coc#float#has_scroll() ? coc#float#scroll(0) : \'\'', {silent = true, nowait = true, expr = true}) -vim.keymap.set('i', '', 'coc#float#has_scroll() ? \'=coc#float#scroll(1)\' : \'\'', {silent = true, nowait = true, expr = true}) -vim.keymap.set('i', '', 'coc#float#has_scroll() ? \'=coc#float#scroll(0)\' : \'\'', {silent = true, nowait = true, expr = true}) -vim.keymap.set('v', '', 'coc#float#has_scroll() ? coc#float#scroll(1) : \'\'', {silent = true, nowait = true, expr = true}) -vim.keymap.set('v', '', 'coc#float#has_scroll() ? coc#float#scroll(0) : \'\'', {silent = true, nowait = true, expr = true}) - --- Выбрать диапазон -vim.keymap.set('n', '', '(coc-range-select)', {silent = true}) -vim.keymap.set('x', '', '(coc-range-select)', {silent = true}) - --- Команда ":Format" для форматирования текущего буфера -vim.api.nvim_create_user_command('Format', 'call CocAction(\'format\')', {}) - --- Команда ":Fold" для сворачивания текущего буфера -vim.api.nvim_create_user_command('Fold', 'call CocAction(\'fold\', )', {nargs = '?'}) - --- Команда ":OR" для организации импорта текущего буфера -vim.api.nvim_create_user_command('OR', 'call CocActionAsync(\'runCommand\', \'editor.action.organizeImport\')', {}) - --- Показать всю диагностику -vim.keymap.set('n', 'a', ':CocList diagnostics', {silent = true, nowait = true}) - --- Управление расширениями -vim.keymap.set('n', 'e', ':CocList extensions', {silent = true, nowait = true}) - --- Показать команды -vim.keymap.set('n', 'c', ':CocList commands', {silent = true, nowait = true}) - --- Поиск символа текущего документа -vim.keymap.set('n', 'o', ':CocList outline', {silent = true, nowait = true}) - --- Поиск символа рабочей области -vim.keymap.set('n', 's', ':CocList -I symbols', {silent = true, nowait = true}) - --- Выполнить действие по умолчанию для следующего элемента -vim.keymap.set('n', 'j', ':CocNext', {silent = true, nowait = true}) - --- Выполнить действие по умолчанию для предыдущего элемента -vim.keymap.set('n', 'k', ':CocPrev', {silent = true, nowait = true}) - --- Восстановить последний список -vim.keymap.set('n', 'p', ':CocListResume', {silent = true, nowait = true}) diff --git a/lua/keymaps/system.lua b/lua/keymaps/system.lua index a60443d..41cb59d 100644 --- a/lua/keymaps/system.lua +++ b/lua/keymaps/system.lua @@ -1,6 +1,12 @@ -- Выход из режима "ВСТАВКА" (insert) -vim.api.nvim_set_keymap('i', '', '', {noremap = true}) +vim.keymap.set('i', '', '', {noremap = true}) -- Быстрый сдвиг текста в режиме 'ВСТАВКА' (insert) -vim.api.nvim_set_keymap('i', '', '>', {noremap = true}) -vim.api.nvim_set_keymap('i', '', '<', {noremap = true}) +vim.keymap.set('i', '', '>', {noremap = true}) +vim.keymap.set('i', '', '<', {noremap = true}) + +-- Отключение стрелок +vim.keymap.set('n', '', '', {noremap = true}) +vim.keymap.set('n', '', '', {noremap = true}) +vim.keymap.set('n', '', '', {noremap = true}) +vim.keymap.set('n', '', '', {noremap = true}) diff --git a/lua/plugins/autopairs.lua b/lua/plugins/autopairs.lua index f422c51..fc501ef 100644 --- a/lua/plugins/autopairs.lua +++ b/lua/plugins/autopairs.lua @@ -1,2 +1,4 @@ require('nvim-autopairs').setup({ + map_bs = false, + map_cr = false }) diff --git a/lua/plugins/bufferline.lua b/lua/plugins/bufferline.lua new file mode 100644 index 0000000..b0035ac --- /dev/null +++ b/lua/plugins/bufferline.lua @@ -0,0 +1,2 @@ +require('bufferline').setup({ +}) diff --git a/lua/plugins/cokeline.lua b/lua/plugins/cokeline.lua deleted file mode 100644 index c84f6ac..0000000 --- a/lua/plugins/cokeline.lua +++ /dev/null @@ -1,2 +0,0 @@ -require('cokeline').setup({ -}) diff --git a/lua/plugins/coq.lua b/lua/plugins/coq.lua new file mode 100644 index 0000000..07cd115 --- /dev/null +++ b/lua/plugins/coq.lua @@ -0,0 +1,6 @@ +vim.g.coq_settings = { + auto_start = 'shut-up', + --keymap = { + -- recommended = false + --} +} diff --git a/lua/plugins/fidget.lua b/lua/plugins/fidget.lua index 45ca1e3..7f2dc22 100644 --- a/lua/plugins/fidget.lua +++ b/lua/plugins/fidget.lua @@ -38,11 +38,7 @@ require('fidget').setup({ ) end, }, - sources = { -- Sources to configure - * = { -- Name of source - ignore = false, -- Ignore notifications from this source - }, - }, + sources = {}, debug = { logging = false, -- whether to enable logging, for debugging strict = false, -- whether to interpret LSP strictly diff --git a/lua/plugins/gitsigns.lua b/lua/plugins/gitsigns.lua new file mode 100644 index 0000000..329b1fe --- /dev/null +++ b/lua/plugins/gitsigns.lua @@ -0,0 +1,43 @@ +require('gitsigns').setup { + on_attach = gitsigns_on_attach, + signs = { + add = { text = '│' }, + change = { text = '│' }, + delete = { text = '_' }, + topdelete = { text = '‾' }, + changedelete = { text = '~' }, + untracked = { text = '┆' }, + }, + signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` + numhl = false, -- Toggle with `:Gitsigns toggle_numhl` + linehl = false, -- Toggle with `:Gitsigns toggle_linehl` + word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` + watch_gitdir = { + interval = 1000, + follow_files = true + }, + attach_to_untracked = true, + current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame` + current_line_blame_opts = { + virt_text = true, + virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align' + delay = 1000, + ignore_whitespace = false, + }, + current_line_blame_formatter = ', - ', + sign_priority = 6, + update_debounce = 100, + status_formatter = nil, -- Use default + max_file_length = 40000, -- Disable if file is longer than this (in lines) + preview_config = { + -- Options passed to nvim_open_win + border = 'single', + style = 'minimal', + relative = 'cursor', + row = 0, + col = 1 + }, + yadm = { + enable = false + }, +} diff --git a/lua/plugins/lint.lua b/lua/plugins/lint.lua new file mode 100644 index 0000000..b392c4a --- /dev/null +++ b/lua/plugins/lint.lua @@ -0,0 +1,5 @@ +vim.api.nvim_create_autocmd({ 'BufWritePost' }, { + callback = function() + require('lint').try_lint() + end, +}) diff --git a/lua/plugins/lspconfig.lua b/lua/plugins/lspconfig.lua new file mode 100644 index 0000000..ebad0db --- /dev/null +++ b/lua/plugins/lspconfig.lua @@ -0,0 +1,6 @@ +local coq = require('coq') + +require('lspconfig').psalm.setup { + on_attach = lspconfig_on_attach, + coq.lsp_ensure_capabilities() +} diff --git a/lua/plugins/mason.lua b/lua/plugins/mason.lua deleted file mode 100644 index 8b79193..0000000 --- a/lua/plugins/mason.lua +++ /dev/null @@ -1,9 +0,0 @@ -require('mason').setup({ - ui = { - icons = { - package_installed = "✓", - package_pending = "➜", - package_uninstalled = "✗" - } - } -}) diff --git a/lua/plugins/null-ls.lua b/lua/plugins/null-ls.lua deleted file mode 100644 index 40398b0..0000000 --- a/lua/plugins/null-ls.lua +++ /dev/null @@ -1,10 +0,0 @@ -local null_ls = require("null-ls") - -null_ls.setup({ - sources = { - null_ls.builtins.formatting.stylua, - null_ls.builtins.diagnostics.eslint, - null_ls.builtins.completion.spell, - null_ls.builtins.code_actions.gitsigns - }, -}) diff --git a/lua/plugins/nvim-web-devicons.lua b/lua/plugins/nvim-web-devicons.lua new file mode 100644 index 0000000..140a140 --- /dev/null +++ b/lua/plugins/nvim-web-devicons.lua @@ -0,0 +1,5 @@ +require('nvim-web-devicons').setup { + override = {}, + color_icons = true, + default = false +} diff --git a/lua/plugins/packer.lua b/lua/plugins/packer.lua index e142efe..8f788d6 100644 --- a/lua/plugins/packer.lua +++ b/lua/plugins/packer.lua @@ -6,46 +6,61 @@ return require('packer').startup(function(use) use 'wbthomason/packer.nvim' -- Быстрая настройка LSP-серверов - use 'neovim/nvim-lspconfig' + use { + 'neovim/nvim-lspconfig', + config = function() require('plugins/lspconfig') end + } -- Прогресс LSP use { 'j-hui/fidget.nvim', - config = function() require('fidget') end + config = function() require('plugins/fidget') end } -- Интерфейс отображающий найденные проблемы LSP-серверами use { 'folke/trouble.nvim', requires = 'kyazdani42/nvim-web-devicons', - config = function() require('trouble') end + config = function() require('plugins/trouble') end } - -- Пиктограммы которые используются плагинами + -- Пиктограммы для плагинов use { 'onsails/lspkind-nvim', config = function() require('plugins/lspkind') end } + -- Пиктограммы для плагинов + use { + 'nvim-tree/nvim-web-devicons', + config = function() require('plugins/nvim-web-devicons') end + } + -- Интеграция с GIT use { 'lewis6991/gitsigns.nvim', - config = function() require('gitsigns') end + config = function() require('plugins/gitsigns') end } + -- Обработчик GIT-команд + use 'tpope/vim-fugitive' + + -- Отображение изменений GIT + use 'mhinz/vim-signify' + -- Отрисовка в реальном времени найденных ошибок LSP-серверами use { 'onsails/diaglist.nvim', - config = function() require('diaglist') end + config = function() require('plugins/diaglist') end } -- Интерфейс строки состояния use { 'nvim-lualine/lualine.nvim', - requires = { 'kyazdani42/nvim-web-devicons', opt = true }, + requires = 'kyazdani42/nvim-web-devicons', config = function() require('plugins/lualine') end } - + -- Дополнение для "nvim-lualine/lualine.nvim" с отображением прогресса работы с LSP-серверами use { 'arkav/lualine-lsp-progress', @@ -53,11 +68,12 @@ return require('packer').startup(function(use) } -- Интерфейс строки буфера файлов - use { - 'noib3/nvim-cokeline', - requires = 'kyazdani42/nvim-web-devicons', - config = function() require('plugins/cokeline') end - } + use { + 'akinsho/bufferline.nvim', + tag = "v3.*", + requires = 'nvim-tree/nvim-web-devicons', + config = function() require('plugins/bufferline') end + } -- Интерфейс древовидной структуры файлов use { @@ -77,53 +93,75 @@ return require('packer').startup(function(use) config = function() require('plugins/autopairs') end } - -- Загрузчик расширений - use { - 'neoclide/coc.nvim', - branch = 'release', - config = function() require('plugins/coc') end - } - -- Цвета для отображения найденных ошибок LSP-сервером в случае если другие цвета не найдены use 'folke/lsp-colors.nvim' - -- Менеджер пакетов для LSP-серверов, DAP-серверов, линтеров и форматировщиков - use { - 'williamboman/mason.nvim', - config = function() require('plugins/mason') end - } - - -- Быстрое обновление всех пакетов через "nwilliamboman/mason.nvim" - use 'RubixDev/mason-update-all' - - -- Мост между "williamboman/mason.nvim" и "neovim/nvim-lspconfig" - use { - 'williamboman/mason-lspconfig.nvim', - requires = { - 'williamboman/mason.nvim', - 'neovim/nvim-lspconfig' - } - } - -- Клиентская реализация DAP use { 'mfussenegger/nvim-dap', config = function() require('plugins/dap') end } - -- Мост между "nwilliamboman/mason.nvim" и "mfussenegger/nvim-dap" + -- Автозавершение use { - 'jay-babu/mason-nvim-dap.nvim', - requires = { - 'williamboman/mason.nvim', - 'mfussenegger/nvim-dap' - } + 'ms-jpq/coq_nvim', + branch = 'coq', + config = function() require('plugins/coq') end } - -- Линтер, форматировщик и прочее + -- Готовые наброски для автозавершения "ms-jpq/coq_nvim" use { - 'jose-elias-alvarez/null-ls.nvim', - requires = 'nvim-lua/plenary.nvim', - config = function() require('plugins/null-ls') end + 'ms-jpq/coq.artifacts', + branch = 'artifacts' + } + + -- Пользовательские готовые наброски для автозавершения "ms-jpq/coq_nvim" + use { + 'ms-jpq/coq.thirdparty', + branch = '3p' + } + + -- Линтер + use { + 'mfussenegger/nvim-lint', + config = function() require('plugins/lint') end + } + + -- Тестирование + use { + 'vim-test/vim-test', + config = function() require('plugins/vim-test') end + } + + -- Интерфейс для поиска + use { + 'nvim-telescope/telescope.nvim', + tag = '0.1.1', + config = function() require('plugins/telescope') end + } + + -- Интеграция treesitter + use { + 'nvim-treesitter/nvim-treesitter', + run = ':TSUpdate', + config = function() require('plugins/treesitter') end + } + + -- Удобное комментирование + use 'b3nj5m1n/kommentary' + + -- Древовидное представление символов + use { + 'simrat39/symbols-outline.nvim', + config = function() require('plugins/symbols-outline') end + } + + -- Интерфейс для отображения тегов в отдельном окне + use 'preservim/tagbar' + + -- PHP-теги для "preservim/tagbar" (phpctags для ctags) + use { + 'vim-php/phpctags', + run = 'composer install' } end) diff --git a/lua/plugins/symbols-outline.lua b/lua/plugins/symbols-outline.lua new file mode 100644 index 0000000..23afe23 --- /dev/null +++ b/lua/plugins/symbols-outline.lua @@ -0,0 +1,4 @@ +require('symbols-outline').setup({ + --auto_preview = true, + --show_numbers = true +}) diff --git a/lua/plugins/telescope.lua b/lua/plugins/telescope.lua new file mode 100644 index 0000000..a58ffc7 --- /dev/null +++ b/lua/plugins/telescope.lua @@ -0,0 +1,18 @@ +require('telescope').setup{ + pickers = { + -- Default configuration for builtin pickers goes here: + -- picker_name = { + -- picker_config_key = value, + -- ... + -- } + -- Now the picker_config_key will be applied every time you call this + -- builtin picker + }, + extensions = { + -- Your extension configuration goes here: + -- extension_name = { + -- extension_config_key = value, + -- } + -- please take a look at the readme of the extension you want to configure + } +} diff --git a/lua/plugins/treesitter.lua b/lua/plugins/treesitter.lua new file mode 100644 index 0000000..4e29200 --- /dev/null +++ b/lua/plugins/treesitter.lua @@ -0,0 +1,6 @@ +require('nvim-treesitter.configs').setup { + highlight = { + enable = true, + additional_vim_regex_highlighting = false + }, +} diff --git a/lua/plugins/coc.lua b/lua/plugins/vim-test.lua similarity index 100% rename from lua/plugins/coc.lua rename to lua/plugins/vim-test.lua diff --git a/lua/settings/system.lua b/lua/settings/system.lua index d34cb00..bba604a 100644 --- a/lua/settings/system.lua +++ b/lua/settings/system.lua @@ -2,7 +2,7 @@ vim.opt.clipboard = 'unnamedplus' -- Автодополнение (встроенное в Neovim) -vim.opt.completeopt = 'menuone,noselect' +--vim.opt.completeopt = 'menuone,noselect' -- Не автокомментировать новые линии при переходе на новую строку vim.cmd('autocmd BufEnter * set fo-=c fo-=r fo-=o') @@ -10,15 +10,11 @@ vim.cmd('autocmd BufEnter * set fo-=c fo-=r fo-=o') -- Нумерация строк vim.opt.number = true --- Отключение бекапов (для плагина coc) -vim.opt.backup = false -vim.opt.writebackup = false - -- Интервал обновлений отрисовки -vim.opt.updatetime = 300 +vim.opt.updatetime = 100 -- Всегда отображать signcolumn (?) -vim.opt.signcolumn = "yes" - - +vim.opt.signcolumn = 'yes' +-- 24-битные цвета +vim.opt.termguicolors = true