From 78698d82e69fe9d670ed51def57d39672a66e028 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Sun, 21 Sep 2025 18:21:43 +0200 Subject: [PATCH] Split plugins into files by category --- .config/nvim/init.lua | 5 +- .config/nvim/lua/{ => config}/lspserver.lua | 10 +- .config/nvim/lua/config/plugins.lua | 68 ------- .config/nvim/lua/lsphelp.lua | 7 + .config/nvim/lua/plugins/all.lua | 190 -------------------- .config/nvim/lua/plugins/cmp.lua | 49 +++++ .config/nvim/lua/plugins/cvs.lua | 9 + .config/nvim/lua/plugins/debugging.lua | 55 ++++++ .config/nvim/lua/plugins/development.lua | 63 +++++++ .config/nvim/lua/plugins/syntax.lua | 8 + .config/nvim/lua/plugins/telescope.lua | 25 +++ .config/nvim/lua/plugins/view.lua | 35 ++++ .gitignore | 2 +- 13 files changed, 259 insertions(+), 267 deletions(-) rename .config/nvim/lua/{ => config}/lspserver.lua (88%) delete mode 100644 .config/nvim/lua/config/plugins.lua delete mode 100644 .config/nvim/lua/plugins/all.lua create mode 100644 .config/nvim/lua/plugins/cmp.lua create mode 100644 .config/nvim/lua/plugins/cvs.lua create mode 100644 .config/nvim/lua/plugins/debugging.lua create mode 100644 .config/nvim/lua/plugins/development.lua create mode 100644 .config/nvim/lua/plugins/syntax.lua create mode 100644 .config/nvim/lua/plugins/telescope.lua create mode 100644 .config/nvim/lua/plugins/view.lua diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index cab7d30..c72b60f 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -26,11 +26,10 @@ vim.opt.signcolumn = 'yes' vim.opt.mouse = 'a' -- " Enable mouse in all modes. -- --- Packer +-- Plugin management -- require("config.lazy") -require("config.plugins") -require'lspserver' +require("config.lspserver") -- -- Theme diff --git a/.config/nvim/lua/lspserver.lua b/.config/nvim/lua/config/lspserver.lua similarity index 88% rename from .config/nvim/lua/lspserver.lua rename to .config/nvim/lua/config/lspserver.lua index c516c7a..0b83901 100644 --- a/.config/nvim/lua/lspserver.lua +++ b/.config/nvim/lua/config/lspserver.lua @@ -2,7 +2,7 @@ require'lsphelp' vim.lsp.config('hls', { on_attach = default_on_attach, - capabilities = capabilities, + capabilities = _G['capabilities'], flags = { debounce_text_changes = 150, }, @@ -27,7 +27,7 @@ vim.lsp.config('intelephense', { licenceKey = os.getenv('HOME') .. '/Documents/Schluessel/intelephense.key', storagePath = '/tmp/intelephense' }, - capabilities = capabilities, + capabilities = _G['capabilities'], settings = { intelephense = { environment = { @@ -40,7 +40,7 @@ vim.lsp.enable('intelephense') vim.lsp.config('clangd', { on_attach = default_on_attach, - capabilities = capabilities + capabilities = _G['capabilities'] }) vim.lsp.enable('clangd') @@ -50,13 +50,13 @@ require('flutter-tools').setup { }, lsp = { on_attach = default_on_attach, - capabilities = capabilities + capabilities = _G['capabilities'] } } vim.lsp.config('twiggy_language_server', { on_attach = default_on_attach, - capabilities = capabilities, + capabilities = _G['capabilities'], settings = { twiggy = { framework = 'symfony', diff --git a/.config/nvim/lua/config/plugins.lua b/.config/nvim/lua/config/plugins.lua deleted file mode 100644 index d51beaa..0000000 --- a/.config/nvim/lua/config/plugins.lua +++ /dev/null @@ -1,68 +0,0 @@ --- --- ALE --- --- Run linters only on save -vim.g.ale_lint_on_text_changed = 'never' -vim.g.ale_lint_on_insert_leave = 0 - --- Include the linter name (e.g. 'hack' or 'hhast'), code, and message in errors -vim.g.ale_echo_msg_format = '[%linter%] %s' -vim.g.ale_linters = { - hack = {'hack', 'hhast'}, - haskell = {"hlint"}, - javascript = {'eslint'}, - d = {'dmd'}, - php = {'phpcs', 'phpstan'}, - ruby = {'rubocop'}, - cpp = {}, - asm = {}, -} -vim.g.ale_ruby_rubocop_executable = 'bundle' -vim.g.ale_cpp_cc_options = '-std=c++17 -Wall' - -vim.g.ale_open_list = 1 -vim.g.ale_disable_lsp = 1 - --- Setup lspconfig. -local capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities()) -capabilities.textDocument.foldingRange = { - dynamicRegistration = false, - lineFoldingOnly = true -} - --- --- Telescope --- -require('telescope').setup { - extensions = { - ["ui-select"] = { - require("telescope.themes").get_dropdown { - } - } - } -} -require("telescope").load_extension("ui-select") - -vim.api.nvim_set_keymap('n', 'ff', "lua require('telescope.builtin').find_files()", - { noremap = true, silent = true }) -vim.api.nvim_set_keymap('n', 'fg', "lua require('telescope.builtin').live_grep()", - { noremap = true, silent = true }) -vim.api.nvim_set_keymap('n', 'fb', "lua require('telescope.builtin').buffers()", - { noremap = true, silent = true }) -vim.api.nvim_set_keymap('n', 'fh', "lua require('telescope.builtin').help_tags()", - { noremap = true, silent = true }) - --- --- Vista --- -vim.g.vista_default_executive = 'nvim_lsp' - --- --- Vdebug --- -vim.g.vdebug_options = { port = '9000' } - --- --- sonokai --- -vim.g.sonokai_style = "shusia" diff --git a/.config/nvim/lua/lsphelp.lua b/.config/nvim/lua/lsphelp.lua index 63db76b..f22664b 100644 --- a/.config/nvim/lua/lsphelp.lua +++ b/.config/nvim/lua/lsphelp.lua @@ -29,3 +29,10 @@ function default_on_attach(client, bufnr) nnoremap('gr', vim.lsp.buf.references, "Find references") nnoremap('f', function() vim.lsp.buf.format { async = true } end, "Format file") end + +-- Setup lspconfig. +capabilities = require('cmp_nvim_lsp').default_capabilities(vim.lsp.protocol.make_client_capabilities()) +capabilities.textDocument.foldingRange = { + dynamicRegistration = false, + lineFoldingOnly = true +} diff --git a/.config/nvim/lua/plugins/all.lua b/.config/nvim/lua/plugins/all.lua deleted file mode 100644 index e289994..0000000 --- a/.config/nvim/lua/plugins/all.lua +++ /dev/null @@ -1,190 +0,0 @@ -return { - { - 'mfussenegger/nvim-dap', - config = function() - vim.keymap.set('n', '', function() require('dap').continue() end) - vim.keymap.set('n', '', function() require('dap').step_over() end) - vim.keymap.set('n', '', function() require('dap').step_into() end) - vim.keymap.set('n', '', function() require('dap').step_out() end) - vim.keymap.set('n', 'b', function() require('dap').toggle_breakpoint() end) - vim.keymap.set('n', 'B', function() require('dap').set_breakpoint() end) - vim.keymap.set('n', 'lp', function() require('dap').set_breakpoint(nil, nil, vim.fn.input('Log point message: ')) end) - vim.keymap.set('n', 'dr', function() require('dap').repl.open() end) - vim.keymap.set('n', 'dl', function() require('dap').run_last() end) - vim.keymap.set({'n', 'v'}, 'dh', function() - require('dap.ui.widgets').hover() - end) - vim.keymap.set({'n', 'v'}, 'dp', function() - require('dap.ui.widgets').preview() - end) - vim.keymap.set('n', 'df', function() - local widgets = require('dap.ui.widgets') - widgets.centered_float(widgets.frames) - end) - vim.keymap.set('n', 'ds', function() - local widgets = require('dap.ui.widgets') - widgets.centered_float(widgets.scopes) - end) - - local dap = require("dap") - dap.adapters.gdb = { - type = "executable", - command = "gdb", - args = { "-i", "dap" } - } - dap.configurations.cpp = { - { - name = "Launch", - type = "gdb", - request = "launch", - program = function() - return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') - end, - cwd = "${workspaceFolder}", - stopAtBeginningOfMainSubprogram = false, - }, - } - end - }, - { 'airblade/vim-gitgutter' }, - { 'neovim/nvim-lspconfig' }, - { 'dense-analysis/ale' }, - { 'liuchengxu/vista.vim' }, -- Tag bar. - { - 'nvim-treesitter/nvim-treesitter', - lazy = false, - build = ':TSUpdate', - config = function() - require'nvim-treesitter.configs'.setup { - ensure_installed = { - 'haskell', 'php', 'lua', 'css', 'dockerfile', 'html', 'javascript', 'markdown', 'ruby', 'vue' - }, - highlight = { - enable = true, - additional_vim_regex_highlighting = true - } - } - end - }, - - -- Git. - { 'tpope/vim-fugitive' }, - { - 'sindrets/diffview.nvim', - dependencies = {'nvim-lua/plenary.nvim'}, - opts = {} - }, - - -- File browser. - { - 'kyazdani42/nvim-tree.lua', - dependencies = {'nvim-tree/nvim-web-devicons'}, - lazy = false, - keys = { - { "", ":NvimTreeToggle" }, - { "r", ":NvimTreeRefresh" }, - { "n", ":NvimTreeFindFile" }, - }, - opts = {} - }, -- optional, for file icon - { - 'nvim-telescope/telescope.nvim', - dependencies = {'nvim-lua/plenary.nvim'}, - lazy = false, - config = function() - end - }, - { 'nvim-telescope/telescope-ui-select.nvim', lazy = false }, - { - 'kevinhwang91/nvim-ufo', - dependencies = {'kevinhwang91/promise-async'}, - config = function() - vim.wo.foldcolumn = '1' - vim.wo.foldlevel = 99 -- feel free to decrease the value - vim.wo.foldenable = true - - require('ufo').setup() - end - }, - - -- Theme. - { - 'sainnhe/sonokai', - config = function() - vim.cmd('colorscheme sonokai') - end - }, - { - 'nvim-lualine/lualine.nvim', - dependencies = {'nvim-tree/nvim-web-devicons'}, - opts = { - options = { - theme = 'sonokai' - }, - extensions = {'quickfix', 'nvim-tree', 'fugitive'}, - sections = { - lualine_c = { - 'filename' - } - } - } - }, -- optional, for status line icons - - -- Syntax. - { 'leafOfTree/vim-vue-plugin' }, - { 'mfussenegger/nvim-jdtls' }, - { 'dart-lang/dart-vim-plugin' }, - { - 'akinsho/flutter-tools.nvim', - dependencies = { 'nvim-lua/plenary.nvim' } - }, - { 'vim-vdebug/vdebug' }, - - -- nvim-cmp - { 'dcampos/nvim-snippy' }, - { - 'hrsh7th/nvim-cmp', - dependencies = { - 'hrsh7th/cmp-nvim-lsp', - 'hrsh7th/cmp-path', - 'hrsh7th/cmp-buffer', - 'dcampos/cmp-snippy' - }, - lazy = false, - config = function() - local cmp = require'cmp' - - cmp.setup({ - snippet = { - -- REQUIRED - you must specify a snippet engine - expand = function(args) - require'snippy'.expand_snippet(args.body) - end, - }, - mapping = { - [''] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }), - [''] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }), - [''] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }), - -- Specify `cmp.config.disable` if you want to remove the default `` mapping. - [''] = cmp.config.disable, - [''] = cmp.mapping({ - i = cmp.mapping.abort(), - c = cmp.mapping.close(), - }), - [''] = cmp.mapping.confirm({ select = false }), - }, - sources = cmp.config.sources({ - { name = 'nvim_lsp' }, - { name = 'snippy' }, - }, { - { name = 'path' }, - }, { - { name = 'buffer' }, - }), - view = { - entries = 'native', - }, - }) - end - } -} diff --git a/.config/nvim/lua/plugins/cmp.lua b/.config/nvim/lua/plugins/cmp.lua new file mode 100644 index 0000000..97a1c33 --- /dev/null +++ b/.config/nvim/lua/plugins/cmp.lua @@ -0,0 +1,49 @@ +return { + -- nvim-cmp + { 'dcampos/nvim-snippy' }, + { + 'hrsh7th/nvim-cmp', + dependencies = { + 'hrsh7th/cmp-nvim-lsp', + 'hrsh7th/cmp-path', + 'hrsh7th/cmp-buffer', + 'dcampos/cmp-snippy' + }, + lazy = false, + config = function() + local cmp = require'cmp' + + cmp.setup({ + snippet = { + -- REQUIRED - you must specify a snippet engine + expand = function(args) + require'snippy'.expand_snippet(args.body) + end, + }, + mapping = { + [''] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }), + [''] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }), + [''] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }), + -- Specify `cmp.config.disable` if you want to remove the default `` mapping. + [''] = cmp.config.disable, + [''] = cmp.mapping({ + i = cmp.mapping.abort(), + c = cmp.mapping.close(), + }), + [''] = cmp.mapping.confirm({ select = false }), + }, + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'snippy' }, + }, { + { name = 'path' }, + }, { + { name = 'buffer' }, + }), + view = { + entries = 'native', + }, + }) + end + } +} diff --git a/.config/nvim/lua/plugins/cvs.lua b/.config/nvim/lua/plugins/cvs.lua new file mode 100644 index 0000000..7e16e11 --- /dev/null +++ b/.config/nvim/lua/plugins/cvs.lua @@ -0,0 +1,9 @@ +return { + { 'airblade/vim-gitgutter' }, + { 'tpope/vim-fugitive' }, + { + 'sindrets/diffview.nvim', + dependencies = {'nvim-lua/plenary.nvim'}, + opts = {} + } +} diff --git a/.config/nvim/lua/plugins/debugging.lua b/.config/nvim/lua/plugins/debugging.lua new file mode 100644 index 0000000..35a5694 --- /dev/null +++ b/.config/nvim/lua/plugins/debugging.lua @@ -0,0 +1,55 @@ +return { + { + 'mfussenegger/nvim-dap', + config = function() + vim.keymap.set('n', '', function() require('dap').continue() end) + vim.keymap.set('n', '', function() require('dap').step_over() end) + vim.keymap.set('n', '', function() require('dap').step_into() end) + vim.keymap.set('n', '', function() require('dap').step_out() end) + vim.keymap.set('n', 'b', function() require('dap').toggle_breakpoint() end) + vim.keymap.set('n', 'B', function() require('dap').set_breakpoint() end) + vim.keymap.set('n', 'lp', function() require('dap').set_breakpoint(nil, nil, vim.fn.input('Log point message: ')) end) + vim.keymap.set('n', 'dr', function() require('dap').repl.open() end) + vim.keymap.set('n', 'dl', function() require('dap').run_last() end) + vim.keymap.set({'n', 'v'}, 'dh', function() + require('dap.ui.widgets').hover() + end) + vim.keymap.set({'n', 'v'}, 'dp', function() + require('dap.ui.widgets').preview() + end) + vim.keymap.set('n', 'df', function() + local widgets = require('dap.ui.widgets') + widgets.centered_float(widgets.frames) + end) + vim.keymap.set('n', 'ds', function() + local widgets = require('dap.ui.widgets') + widgets.centered_float(widgets.scopes) + end) + + local dap = require("dap") + dap.adapters.gdb = { + type = "executable", + command = "gdb", + args = { "-i", "dap" } + } + dap.configurations.cpp = { + { + name = "Launch", + type = "gdb", + request = "launch", + program = function() + return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') + end, + cwd = "${workspaceFolder}", + stopAtBeginningOfMainSubprogram = false, + }, + } + end + }, + { + 'vim-vdebug/vdebug', + config = function() + vim.g.vdebug_options = { port = '9000' } + end + } +} diff --git a/.config/nvim/lua/plugins/development.lua b/.config/nvim/lua/plugins/development.lua new file mode 100644 index 0000000..278e590 --- /dev/null +++ b/.config/nvim/lua/plugins/development.lua @@ -0,0 +1,63 @@ +return { + { 'neovim/nvim-lspconfig' }, + { + 'dense-analysis/ale', + config = function() + -- Run linters only on save + vim.g.ale_lint_on_text_changed = 'never' + vim.g.ale_lint_on_insert_leave = 0 + + -- Include the linter name (e.g. 'hack' or 'hhast'), code, and message in errors + vim.g.ale_echo_msg_format = '[%linter%] %s' + vim.g.ale_linters = { + hack = {'hack', 'hhast'}, + haskell = {"hlint"}, + javascript = {'eslint'}, + d = {'dmd'}, + php = {'phpcs', 'phpstan'}, + ruby = {'rubocop'}, + cpp = {}, + asm = {}, + } + vim.g.ale_ruby_rubocop_executable = 'bundle' + vim.g.ale_cpp_cc_options = '-std=c++17 -Wall' + + vim.g.ale_open_list = 1 + vim.g.ale_disable_lsp = 1 + end + }, + { -- Tag bar. + 'liuchengxu/vista.vim', + lazy = false, + config = function() + vim.g.vista_default_executive = 'nvim_lsp' + end + }, + { + 'nvim-treesitter/nvim-treesitter', + lazy = false, + build = ':TSUpdate', + config = function() + require'nvim-treesitter.configs'.setup { + ensure_installed = { + 'haskell', 'php', 'lua', 'css', 'dockerfile', 'html', 'javascript', 'markdown', 'ruby', 'vue' + }, + highlight = { + enable = true, + additional_vim_regex_highlighting = true + } + } + end + }, + { + 'kevinhwang91/nvim-ufo', + dependencies = {'kevinhwang91/promise-async'}, + config = function() + vim.wo.foldcolumn = '1' + vim.wo.foldlevel = 99 -- feel free to decrease the value + vim.wo.foldenable = true + + require('ufo').setup() + end + }, +} diff --git a/.config/nvim/lua/plugins/syntax.lua b/.config/nvim/lua/plugins/syntax.lua new file mode 100644 index 0000000..cc1adb0 --- /dev/null +++ b/.config/nvim/lua/plugins/syntax.lua @@ -0,0 +1,8 @@ +return { + { 'leafOfTree/vim-vue-plugin' }, + { 'dart-lang/dart-vim-plugin' }, + { + 'akinsho/flutter-tools.nvim', + dependencies = { 'nvim-lua/plenary.nvim' } + } +} diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua new file mode 100644 index 0000000..a2a30b2 --- /dev/null +++ b/.config/nvim/lua/plugins/telescope.lua @@ -0,0 +1,25 @@ +return { + { + 'nvim-telescope/telescope.nvim', + dependencies = { 'nvim-lua/plenary.nvim' }, + lazy = false, + config = function() + require('telescope').setup { + extensions = { + ["ui-select"] = { + require("telescope.themes").get_dropdown { + } + } + } + } + require("telescope").load_extension("ui-select") + end, + keys = { + { 'ff', "lua require('telescope.builtin').find_files()", noremap = true, silent = true }, + { 'fg', "lua require('telescope.builtin').live_grep()", noremap = true, silent = true }, + { 'fb', "lua require('telescope.builtin').buffers()", noremap = true, silent = true }, + { 'fh', "lua require('telescope.builtin').help_tags()", noremap = true, silent = true }, + } + }, + { 'nvim-telescope/telescope-ui-select.nvim' } +} diff --git a/.config/nvim/lua/plugins/view.lua b/.config/nvim/lua/plugins/view.lua new file mode 100644 index 0000000..eabf1c5 --- /dev/null +++ b/.config/nvim/lua/plugins/view.lua @@ -0,0 +1,35 @@ +return { + { + 'sainnhe/sonokai', + config = function() + vim.g.sonokai_style = "maia" + vim.cmd('colorscheme sonokai') + end + }, + { + 'nvim-lualine/lualine.nvim', + dependencies = {'nvim-tree/nvim-web-devicons'}, + opts = { + options = { + theme = 'sonokai' + }, + extensions = {'quickfix', 'nvim-tree', 'fugitive'}, + sections = { + lualine_c = { + 'filename' + } + } + } + }, + { + 'kyazdani42/nvim-tree.lua', + dependencies = {'nvim-tree/nvim-web-devicons'}, + lazy = false, + keys = { + { "", ":NvimTreeToggle" }, + { "r", ":NvimTreeRefresh" }, + { "n", ":NvimTreeFindFile" }, + }, + opts = {} + } +} diff --git a/.gitignore b/.gitignore index 2422663..0f4aa0a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ .config/nvim/config -.config/nvim/plugin/ +.config/nvim/lazy-lock.json