diff --git a/lua/cosmic/config/examples/config.lua b/lua/cosmic/config/examples/config.lua index ae05e44..f6c2b5a 100644 --- a/lua/cosmic/config/examples/config.lua +++ b/lua/cosmic/config/examples/config.lua @@ -19,19 +19,7 @@ local config = { -- lsp servers that should be installed ensure_installed = { - 'astro', - 'bashls', - 'cssls', - 'gopls', - 'graphql', - 'html', - 'jsonls', - 'tsserver', - 'sumneko_lua', - 'pyright', - 'svelte', - 'tailwindcss', - 'yamlls', + 'rust_analyzer', }, -- lsp servers that should be enabled @@ -73,10 +61,11 @@ local config = { end, }, }, - -- See Cosmic defaults lsp/providers/tsserver.lua + -- See Cosmic defaults lua/plugins/nvim-lsp-ts-utils/setup.lua ts_utils = {}, }, - -- adjust build in plugin settings + + -- adjust default plugin settings plugins = { -- See https://github.com/rmagatti/auto-session#%EF%B8%8F-configuration auto_session = {}, @@ -105,15 +94,8 @@ local config = { -- See :h nvim-tree.setup nvim_tree = {}, }, - -- Add additional plugins (lazy.nvim) - add_plugins = { - 'ggandor/lightspeed.nvim', - { - 'romgrk/barbar.nvim', - dependencies = { 'kyazdani42/nvim-web-devicons' }, - }, - }, - -- Disable plugins enabled by CosmicNvim + + -- Disable plugins default enabled by CosmicNvim disable_builtin_plugins = { --[[ 'auto-session', @@ -133,6 +115,15 @@ local config = { 'treesitter', ]] }, + + -- Add additional plugins (lazy.nvim) + add_plugins = { + 'ggandor/lightspeed.nvim', + { + 'romgrk/barbar.nvim', + dependencies = { 'kyazdani42/nvim-web-devicons' }, + }, + }, } return config diff --git a/lua/cosmic/core/mappings.lua b/lua/cosmic/core/mappings.lua index 7ef9032..769a499 100644 --- a/lua/cosmic/core/mappings.lua +++ b/lua/cosmic/core/mappings.lua @@ -1,14 +1,4 @@ local map = require('cosmic.utils').map -local user_plugins = require('cosmic.core.user') - --- Mappings for plugins that need to be lazy loaded -if not vim.tbl_contains(user_plugins.disable_builtin_plugins, 'nvim-tree') then - require('cosmic.plugins.nvim-tree.mappings') -end - -if not vim.tbl_contains(user_plugins.disable_builtin_plugins, 'auto-session') then - require('cosmic.plugins.auto-session.mappings') -end -- Quickfix mappings map('n', 'ck', ':cexpr []') diff --git a/lua/cosmic/lsp/providers/tsserver.lua b/lua/cosmic/lsp/providers/tsserver.lua index d7761bb..0617323 100644 --- a/lua/cosmic/lsp/providers/tsserver.lua +++ b/lua/cosmic/lsp/providers/tsserver.lua @@ -5,7 +5,7 @@ function M.on_attach(client, bufnr) default_on_attach(client, bufnr) -- ts utils must be setup on "on_attach" - require('cosmic.plugins.nvim-lsp-ts-utils.config').setup(client) + require('cosmic.plugins.nvim-lsp-ts-utils.setup').setup(client) end return M diff --git a/lua/cosmic/plugins/auto-session/init.lua b/lua/cosmic/plugins/auto-session/init.lua index 9818fff..012c971 100644 --- a/lua/cosmic/plugins/auto-session/init.lua +++ b/lua/cosmic/plugins/auto-session/init.lua @@ -14,5 +14,8 @@ return { config = function() require('auto-session').setup(u.merge(defaults, user_config.plugins.auto_session or {})) end, + init = function() + require('cosmic.plugins.auto-session.mappings') + end, enabled = not vim.tbl_contains(user_config.disable_builtin_plugins, 'auto-session'), } diff --git a/lua/cosmic/plugins/comments/init.lua b/lua/cosmic/plugins/comments/init.lua index 6f608ac..e6d2d70 100644 --- a/lua/cosmic/plugins/comments/init.lua +++ b/lua/cosmic/plugins/comments/init.lua @@ -21,6 +21,6 @@ return { end, }, user_config.plugins.comment_nvim or {})) end, - event = 'BufEnter', + event = 'VeryLazy', enabled = not vim.tbl_contains(user_config.disable_builtin_plugins, 'comment-nvim'), } diff --git a/lua/cosmic/plugins/dashboard/init.lua b/lua/cosmic/plugins/dashboard/init.lua index e3e79fa..178214e 100644 --- a/lua/cosmic/plugins/dashboard/init.lua +++ b/lua/cosmic/plugins/dashboard/init.lua @@ -48,5 +48,6 @@ return { g.dashboard_custom_footer = { '💫 github.com/CosmicNvim/CosmicNvim' } end, + event = 'VimEnter', enabled = not vim.tbl_contains(user_config.disable_builtin_plugins, 'dashboard'), } diff --git a/lua/cosmic/plugins/fugitive/init.lua b/lua/cosmic/plugins/fugitive/init.lua index 8c2bf3d..b1e81e8 100644 --- a/lua/cosmic/plugins/fugitive/init.lua +++ b/lua/cosmic/plugins/fugitive/init.lua @@ -1,7 +1,6 @@ local user_config = require('cosmic.core.user') return { 'tpope/vim-fugitive', - opt = true, cmd = 'Git', enabled = not vim.tbl_contains(user_config.disable_builtin_plugins, 'fugitive'), } diff --git a/lua/cosmic/plugins/gitsigns/config.lua b/lua/cosmic/plugins/gitsigns/config.lua deleted file mode 100644 index 4ae3afd..0000000 --- a/lua/cosmic/plugins/gitsigns/config.lua +++ /dev/null @@ -1,68 +0,0 @@ -local user_config = require('cosmic.core.user') -local u = require('cosmic.utils') - -require('gitsigns').setup(u.merge({ - signs = { - add = { hl = 'GitSignsAdd', text = '│', numhl = 'GitSignsAddNr', linehl = 'GitSignsAddLn' }, - change = { hl = 'GitSignsChange', text = '│', numhl = 'GitSignsChangeNr', linehl = 'GitSignsChangeLn' }, - delete = { hl = 'GitSignsDelete', text = '_', numhl = 'GitSignsDeleteNr', linehl = 'GitSignsDeleteLn' }, - topdelete = { hl = 'GitSignsDelete', text = '‾', numhl = 'GitSignsDeleteNr', linehl = 'GitSignsDeleteLn' }, - changedelete = { hl = 'GitSignsChange', text = '~', numhl = 'GitSignsChangeNr', linehl = 'GitSignsChangeLn' }, - }, - 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` - keymaps = { - -- Default keymap options - noremap = true, - - ['n ]c'] = { expr = true, "&diff ? ']c' : 'Gitsigns next_hunk'" }, - ['n [c'] = { expr = true, "&diff ? '[c' : 'Gitsigns prev_hunk'" }, - - ['n hs'] = 'Gitsigns stage_hunk', - ['v hs'] = ':Gitsigns stage_hunk', - ['n hu'] = 'Gitsigns undo_stage_hunk', - ['n hr'] = 'Gitsigns reset_hunk', - ['v hr'] = ':Gitsigns reset_hunk', - ['n hR'] = 'Gitsigns reset_buffer', - ['n hp'] = 'Gitsigns preview_hunk', - ['n hb'] = 'lua require"gitsigns".blame_line{full=true}', - ['n hS'] = 'Gitsigns stage_buffer', - ['n hU'] = 'Gitsigns reset_buffer_index', - - -- Text objects - ['o ih'] = ':Gitsigns select_hunk', - ['x ih'] = ':Gitsigns select_hunk', - }, - 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_opts = { - relative_time = false, - }, - sign_priority = 6, - update_debounce = 100, - status_formatter = nil, -- Use default - max_file_length = 40000, - preview_config = { - -- Options passed to nvim_open_win - border = user_config.border, - style = 'minimal', - relative = 'cursor', - row = 0, - col = 1, - }, - yadm = { - enable = false, - }, -}, user_config.plugins.gitsigns or {})) diff --git a/lua/cosmic/plugins/gitsigns/init.lua b/lua/cosmic/plugins/gitsigns/init.lua index aa277ab..2fe2535 100644 --- a/lua/cosmic/plugins/gitsigns/init.lua +++ b/lua/cosmic/plugins/gitsigns/init.lua @@ -1,12 +1,76 @@ local user_config = require('cosmic.core.user') +local u = require('cosmic.utils') return { 'lewis6991/gitsigns.nvim', dependencies = { 'nvim-lua/plenary.nvim' }, - opt = true, event = 'VeryLazy', config = function() - require('cosmic.plugins.gitsigns.config') + require('gitsigns').setup(u.merge({ + signs = { + add = { hl = 'GitSignsAdd', text = '│', numhl = 'GitSignsAddNr', linehl = 'GitSignsAddLn' }, + change = { hl = 'GitSignsChange', text = '│', numhl = 'GitSignsChangeNr', linehl = 'GitSignsChangeLn' }, + delete = { hl = 'GitSignsDelete', text = '_', numhl = 'GitSignsDeleteNr', linehl = 'GitSignsDeleteLn' }, + topdelete = { hl = 'GitSignsDelete', text = '‾', numhl = 'GitSignsDeleteNr', linehl = 'GitSignsDeleteLn' }, + changedelete = { hl = 'GitSignsChange', text = '~', numhl = 'GitSignsChangeNr', linehl = 'GitSignsChangeLn' }, + }, + 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` + keymaps = { + -- Default keymap options + noremap = true, + + ['n ]c'] = { expr = true, "&diff ? ']c' : 'Gitsigns next_hunk'" }, + ['n [c'] = { expr = true, "&diff ? '[c' : 'Gitsigns prev_hunk'" }, + + ['n hs'] = 'Gitsigns stage_hunk', + ['v hs'] = ':Gitsigns stage_hunk', + ['n hu'] = 'Gitsigns undo_stage_hunk', + ['n hr'] = 'Gitsigns reset_hunk', + ['v hr'] = ':Gitsigns reset_hunk', + ['n hR'] = 'Gitsigns reset_buffer', + ['n hp'] = 'Gitsigns preview_hunk', + ['n hb'] = 'lua require"gitsigns".blame_line{full=true}', + ['n hS'] = 'Gitsigns stage_buffer', + ['n hU'] = 'Gitsigns reset_buffer_index', + + -- Text objects + ['o ih'] = ':Gitsigns select_hunk', + ['x ih'] = ':Gitsigns select_hunk', + }, + 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_opts = { + relative_time = false, + }, + sign_priority = 6, + update_debounce = 100, + status_formatter = nil, -- Use default + max_file_length = 40000, + preview_config = { + -- Options passed to nvim_open_win + border = user_config.border, + style = 'minimal', + relative = 'cursor', + row = 0, + col = 1, + }, + yadm = { + enable = false, + }, + }, user_config.plugins.gitsigns or {})) end, enabled = not vim.tbl_contains(user_config.disable_builtin_plugins, 'gitsigns'), } diff --git a/lua/cosmic/plugins/lualine/init.lua b/lua/cosmic/plugins/lualine/init.lua index 4fa40ca..2b783ca 100644 --- a/lua/cosmic/plugins/lualine/init.lua +++ b/lua/cosmic/plugins/lualine/init.lua @@ -32,7 +32,7 @@ local custom_sections = { return { 'nvim-lualine/lualine.nvim', - lazy = false, + event = 'VeryLazy', config = function() require('lualine').setup(utils.merge({ options = { diff --git a/lua/cosmic/plugins/luasnip/init.lua b/lua/cosmic/plugins/luasnip/init.lua index 11a4721..2993989 100644 --- a/lua/cosmic/plugins/luasnip/init.lua +++ b/lua/cosmic/plugins/luasnip/init.lua @@ -5,7 +5,6 @@ return { 'L3MON4D3/LuaSnip', config = function() local ls = require('luasnip') - -- Every unspecified option will be set to the default. ls.config.set_config(u.merge({ history = true, -- Update more often, :h events for more info. diff --git a/lua/cosmic/plugins/mason-lspconfig/init.lua b/lua/cosmic/plugins/mason-lspconfig/init.lua index 2b59619..b1bbb5d 100644 --- a/lua/cosmic/plugins/mason-lspconfig/init.lua +++ b/lua/cosmic/plugins/mason-lspconfig/init.lua @@ -67,5 +67,8 @@ return { lspconfig[requested_server].setup(opts) end end, + dependencies = { + 'williamboman/mason.nvim', + }, event = 'BufEnter', } diff --git a/lua/cosmic/plugins/mason/init.lua b/lua/cosmic/plugins/mason/init.lua deleted file mode 100644 index ca1b15f..0000000 --- a/lua/cosmic/plugins/mason/init.lua +++ /dev/null @@ -1,3 +0,0 @@ -return { - 'williamboman/mason.nvim', -} diff --git a/lua/cosmic/plugins/noice/init.lua b/lua/cosmic/plugins/noice/init.lua index eb3205c..86e7d07 100644 --- a/lua/cosmic/plugins/noice/init.lua +++ b/lua/cosmic/plugins/noice/init.lua @@ -1,5 +1,6 @@ local user_config = require('cosmic.core.user') local u = require('cosmic.utils') +local map = require('cosmic.utils').map return { 'folke/noice.nvim', @@ -31,7 +32,18 @@ return { }, user_config.plugins.noice or {}) require('noice').setup(config) - require('cosmic.plugins.noice.mappings') + + map('n', '', function() + if not require('noice.lsp').scroll(4) then + return '' + end + end) + + map('n', '', function() + if not require('noice.lsp').scroll(-4) then + return '' + end + end) end, event = 'VeryLazy', dependencies = { diff --git a/lua/cosmic/plugins/noice/mappings.lua b/lua/cosmic/plugins/noice/mappings.lua deleted file mode 100644 index 3603ed1..0000000 --- a/lua/cosmic/plugins/noice/mappings.lua +++ /dev/null @@ -1,13 +0,0 @@ -local map = require('cosmic.utils').map - -map('n', '', function() - if not require('noice.lsp').scroll(4) then - return '' - end -end) - -map('n', '', function() - if not require('noice.lsp').scroll(-4) then - return '' - end -end) diff --git a/lua/cosmic/plugins/null-ls/config.lua b/lua/cosmic/plugins/null-ls/config.lua deleted file mode 100644 index d4537a8..0000000 --- a/lua/cosmic/plugins/null-ls/config.lua +++ /dev/null @@ -1,27 +0,0 @@ -local u = require('cosmic.utils') -local defaults = require('cosmic.lsp.providers.defaults') -local null_ls = require('null-ls') -local user_config = require('cosmic.core.user') - -local config_opts = u.merge(user_config.lsp.servers.null_ls or {}, { - default_cosmic_sources = true, -}) - --- how to disable sources? -if config_opts.default_cosmic_sources then - config_opts.sources = u.merge_list({ - null_ls.builtins.code_actions.eslint_d, - null_ls.builtins.diagnostics.eslint_d, - null_ls.builtins.formatting.eslint_d, - null_ls.builtins.diagnostics.markdownlint, - null_ls.builtins.formatting.prettierd.with({ - env = { - PRETTIERD_LOCAL_PRETTIER_ONLY = 1, - }, - }), - null_ls.builtins.formatting.stylua, - null_ls.builtins.code_actions.gitsigns, - }, config_opts.get_sources() or {}) -end - -null_ls.setup(u.merge(defaults, config_opts)) diff --git a/lua/cosmic/plugins/null-ls/init.lua b/lua/cosmic/plugins/null-ls/init.lua index e3477c0..2a6bfa7 100644 --- a/lua/cosmic/plugins/null-ls/init.lua +++ b/lua/cosmic/plugins/null-ls/init.lua @@ -1,9 +1,31 @@ local user_config = require('cosmic.core.user') +local u = require('cosmic.utils') return { 'jose-elias-alvarez/null-ls.nvim', config = function() - require('cosmic.plugins.null-ls.config') + local defaults = require('cosmic.lsp.providers.defaults') + local null_ls = require('null-ls') + local config_opts = u.merge(user_config.lsp.servers.null_ls or {}, { + default_cosmic_sources = true, + }) + if config_opts.default_cosmic_sources then + config_opts.sources = u.merge_list({ + null_ls.builtins.code_actions.eslint_d, + null_ls.builtins.diagnostics.eslint_d, + null_ls.builtins.formatting.eslint_d, + null_ls.builtins.diagnostics.markdownlint, + null_ls.builtins.formatting.prettierd.with({ + env = { + PRETTIERD_LOCAL_PRETTIER_ONLY = 1, + }, + }), + null_ls.builtins.formatting.stylua, + null_ls.builtins.code_actions.gitsigns, + }, config_opts.get_sources() or {}) + end + + null_ls.setup(u.merge(defaults, config_opts)) end, event = 'BufEnter', enabled = not vim.tbl_contains(user_config.disable_builtin_plugins, 'null_ls'), diff --git a/lua/cosmic/plugins/nvim-cmp/config.lua b/lua/cosmic/plugins/nvim-cmp/config.lua index 0bbbf17..d557f25 100644 --- a/lua/cosmic/plugins/nvim-cmp/config.lua +++ b/lua/cosmic/plugins/nvim-cmp/config.lua @@ -35,7 +35,6 @@ local default_cmp_opts = { i = cmp.mapping.abort(), c = cmp.mapping.close(), }), - -- disabled for autopairs mapping [''] = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = true, diff --git a/lua/cosmic/plugins/nvim-lsp-ts-utils/config.lua b/lua/cosmic/plugins/nvim-lsp-ts-utils/setup.lua similarity index 100% rename from lua/cosmic/plugins/nvim-lsp-ts-utils/config.lua rename to lua/cosmic/plugins/nvim-lsp-ts-utils/setup.lua diff --git a/lua/cosmic/plugins/nvim-tree/init.lua b/lua/cosmic/plugins/nvim-tree/init.lua index 2ddcefa..68bd503 100644 --- a/lua/cosmic/plugins/nvim-tree/init.lua +++ b/lua/cosmic/plugins/nvim-tree/init.lua @@ -49,6 +49,9 @@ return { config = function() require('nvim-tree').setup(u.merge(args, user_config.plugins.nvim_tree or {})) end, + init = function() + require('cosmic.plugins.nvim-tree.mappings') + end, cmd = { 'NvimTreeClipboard', 'NvimTreeFindFile', diff --git a/lua/cosmic/plugins/terminal/init.lua b/lua/cosmic/plugins/terminal/init.lua index 6f8a622..faa9175 100644 --- a/lua/cosmic/plugins/terminal/init.lua +++ b/lua/cosmic/plugins/terminal/init.lua @@ -4,9 +4,10 @@ local title = vim.env.SHELL return { 'voldikss/vim-floaterm', - keys = { - { '', 'FloatermToggle', desc = 'Floating Terminal' }, - }, + cmd = { 'FloatermToggle', 'FloatermNew' }, + init = function() + require('cosmic.plugins.terminal.mappings') + end, config = function() g.floaterm_width = 0.7 g.floaterm_height = 0.8 @@ -14,7 +15,6 @@ return { g.floaterm_borderchars = '─│─│╭╮╯╰' g.floaterm_opener = 'vsplit' - require('cosmic.plugins.terminal.mappings') require('cosmic.plugins.terminal.highlights') end, enabled = not vim.tbl_contains(user_config.disable_builtin_plugins, 'terminal'), diff --git a/lua/cosmic/plugins/todo-comments/init.lua b/lua/cosmic/plugins/todo-comments/init.lua index 9946d13..6fdc1db 100644 --- a/lua/cosmic/plugins/todo-comments/init.lua +++ b/lua/cosmic/plugins/todo-comments/init.lua @@ -29,6 +29,6 @@ return { }, }, user_config.plugins.todo_comments or {})) end, - event = 'BufEnter', + event = 'VeryLazy', enabled = not vim.tbl_contains(user_config.disable_builtin_plugins, 'todo-comments'), }