diff --git a/lua/cosmic/config/init.lua b/lua/cosmic/config/init.lua index 13478cc..e950063 100644 --- a/lua/cosmic/config/init.lua +++ b/lua/cosmic/config/init.lua @@ -37,7 +37,8 @@ local default_config = { }, } -local config = vim.tbl_deep_extend('force', default_config, user_config) +local utils = require('cosmic.utils') +local config = utils.merge(default_config, user_config) local user_servers = vim.tbl_keys(config.lsp.servers) function config.lsp.can_client_format(client_name) diff --git a/lua/cosmic/lsp/diagnostics.lua b/lua/cosmic/lsp/diagnostics.lua index 0e743af..4315742 100644 --- a/lua/cosmic/lsp/diagnostics.lua +++ b/lua/cosmic/lsp/diagnostics.lua @@ -1,3 +1,4 @@ +local utils = require('cosmic.utils') local icons = require('cosmic.theme.icons') local config = require('cosmic.config') @@ -16,7 +17,7 @@ end -- set up vim.diagnostics -- vim.diagnostic.config opts -vim.diagnostic.config(vim.tbl_deep_extend('force', { +vim.diagnostic.config(utils.merge({ underline = true, signs = true, update_in_insert = false, diff --git a/lua/cosmic/lsp/providers/init.lua b/lua/cosmic/lsp/providers/init.lua index a988723..364d2ed 100644 --- a/lua/cosmic/lsp/providers/init.lua +++ b/lua/cosmic/lsp/providers/init.lua @@ -1,3 +1,4 @@ +local utils = require('cosmic.utils') local default_config = require('cosmic.lsp.providers.defaults') local config = require('cosmic.config') local lsp_installer = require('nvim-lsp-installer') @@ -54,17 +55,17 @@ lsp_installer.on_server_ready(function(server) -- set up default cosmic options if server.name == 'tsserver' then - opts = vim.tbl_deep_extend('force', opts, require('cosmic.lsp.providers.tsserver')) + opts = utils.merge(opts, require('cosmic.lsp.providers.tsserver')) elseif server.name == 'jsonls' then - opts = vim.tbl_deep_extend('force', opts, require('cosmic.lsp.providers.jsonls')) + opts = utils.merge(opts, require('cosmic.lsp.providers.jsonls')) elseif server.name == 'sumneko_lua' then - opts = vim.tbl_deep_extend('force', opts, require('cosmic.lsp.providers.sumneko_lua')) + opts = utils.merge(opts, require('cosmic.lsp.providers.sumneko_lua')) end -- override options if user definds them if type(config.lsp.servers[server.name]) == 'table' then if config.lsp.servers[server.name].opts ~= nil then - opts = vim.tbl_deep_extend('force', opts, config.lsp.servers[server.name].opts) + opts = utils.merge(opts, config.lsp.servers[server.name].opts) end end diff --git a/lua/cosmic/lsp/providers/null_ls.lua b/lua/cosmic/lsp/providers/null_ls.lua index 8a28379..04bc347 100644 --- a/lua/cosmic/lsp/providers/null_ls.lua +++ b/lua/cosmic/lsp/providers/null_ls.lua @@ -1,20 +1,21 @@ +local utils = require('cosmic.utils') local defaults = require('cosmic.lsp.providers.defaults') local config = require('cosmic.config') local null_ls = require('null-ls') -local has_eslint_config = function(utils) - return utils.root_has_file('.eslintrc') - or utils.root_has_file('.eslintrc.json') - or utils.root_has_file('.eslintrc.js') - or utils.root_has_file('package.json') - or utils.root_has_file('.eslintrc.cjs') - or utils.root_has_file('.eslintrc.yaml') - or utils.root_has_file('.eslintrc.yml') +local has_eslint_config = function(u) + return u.root_has_file('.eslintrc') + or u.root_has_file('.eslintrc.json') + or u.root_has_file('.eslintrc.js') + or u.root_has_file('package.json') + or u.root_has_file('.eslintrc.cjs') + or u.root_has_file('.eslintrc.yaml') + or u.root_has_file('.eslintrc.yml') end local config_opts = config.lsp.servers.null_ls or {} -require('null-ls').setup(vim.tbl_deep_extend('force', { +require('null-ls').setup(utils.merge({ -- you must define at least one source for the plugin to work sources = { null_ls.builtins.code_actions.eslint_d.with({ @@ -30,5 +31,4 @@ require('null-ls').setup(vim.tbl_deep_extend('force', { null_ls.builtins.formatting.prettierd, null_ls.builtins.formatting.stylua, }, - }, defaults, config_opts or {})) diff --git a/lua/cosmic/lsp/providers/tsserver.lua b/lua/cosmic/lsp/providers/tsserver.lua index 88cb06d..5958f3d 100644 --- a/lua/cosmic/lsp/providers/tsserver.lua +++ b/lua/cosmic/lsp/providers/tsserver.lua @@ -1,3 +1,4 @@ +local utils = require('cosmic.utils') local default_on_attach = require('cosmic.lsp.providers.defaults').on_attach local config = require('cosmic.config') local M = {} @@ -8,7 +9,7 @@ function M.on_attach(client, bufnr) local ts_utils = require('nvim-lsp-ts-utils') -- defaults - ts_utils.setup(vim.tbl_deep_extend('force', { + ts_utils.setup(utils.merge({ debug = false, disable_commands = false, enable_import_on_completion = true, diff --git a/lua/cosmic/plugins/auto-session/init.lua b/lua/cosmic/plugins/auto-session/init.lua index 481a060..547a203 100644 --- a/lua/cosmic/plugins/auto-session/init.lua +++ b/lua/cosmic/plugins/auto-session/init.lua @@ -1,4 +1,6 @@ local config = require('cosmic.config') +local utils = require('cosmic.utils') + local defaults = { pre_save_cmds = { 'NvimTreeClose', 'cclose', 'lua vim.notify.dismiss()' }, post_restore_cmds = { 'NvimTreeRefresh' }, @@ -7,4 +9,4 @@ local defaults = { auto_restore_enabled = false, } -require('auto-session').setup(vim.tbl_deep_extend('force', defaults, config.auto_session or {})) +require('auto-session').setup(utils.merge(defaults, config.auto_session or {})) diff --git a/lua/cosmic/plugins/comments/init.lua b/lua/cosmic/plugins/comments/init.lua index ce4120b..97ab44f 100644 --- a/lua/cosmic/plugins/comments/init.lua +++ b/lua/cosmic/plugins/comments/init.lua @@ -1,6 +1,7 @@ local config = require('cosmic.config') +local utils = require('cosmic.utils') -require('Comment').setup(vim.tbl_deep_extend('force', { +require('Comment').setup(utils.merge({ pre_hook = function(ctx) local U = require('Comment.utils') local location = nil diff --git a/lua/cosmic/plugins/cosmic-ui/init.lua b/lua/cosmic/plugins/cosmic-ui/init.lua index c6ecf40..e490e6f 100644 --- a/lua/cosmic/plugins/cosmic-ui/init.lua +++ b/lua/cosmic/plugins/cosmic-ui/init.lua @@ -1,7 +1,8 @@ local config = require('cosmic.config') +local utils = require('cosmic.utils') local defaults = { border = 'rounded', } -require('cosmic-ui').setup(vim.tbl_deep_extend('force', defaults, config.cosmic_ui or {})) +require('cosmic-ui').setup(utils.merge(defaults, config.cosmic_ui or {})) diff --git a/lua/cosmic/plugins/galaxyline/init.lua b/lua/cosmic/plugins/galaxyline/init.lua index 03d600b..a81bb45 100644 --- a/lua/cosmic/plugins/galaxyline/init.lua +++ b/lua/cosmic/plugins/galaxyline/init.lua @@ -11,7 +11,7 @@ local config = require('cosmic.config') local get_highlight = require('cosmic.theme.utils').get_highlight local statusline_colors = get_highlight('StatusLine') -local defaults = vim.tbl_deep_extend('force', { +local defaults = utils.merge({ main_icon = icons.cosmic, }, config.statusline or {}) local main_icon = defaults.main_icon diff --git a/lua/cosmic/plugins/gitsigns/init.lua b/lua/cosmic/plugins/gitsigns/init.lua index 304220e..c960726 100644 --- a/lua/cosmic/plugins/gitsigns/init.lua +++ b/lua/cosmic/plugins/gitsigns/init.lua @@ -1,6 +1,7 @@ local config = require('cosmic.config') +local utils = require('cosmic.utils') -require('gitsigns').setup(vim.tbl_deep_extend('force', { +require('gitsigns').setup(utils.merge({ signs = { add = { hl = 'GitSignsAdd', text = '│', numhl = 'GitSignsAddNr', linehl = 'GitSignsAddLn' }, change = { hl = 'GitSignsChange', text = '│', numhl = 'GitSignsChangeNr', linehl = 'GitSignsChangeLn' }, diff --git a/lua/cosmic/plugins/lsp-signature/init.lua b/lua/cosmic/plugins/lsp-signature/init.lua index 619c284..b7e1609 100644 --- a/lua/cosmic/plugins/lsp-signature/init.lua +++ b/lua/cosmic/plugins/lsp-signature/init.lua @@ -1,6 +1,7 @@ local config = require('cosmic.config') +local utils = require('cosmic.utils') -require('lsp_signature').setup(vim.tbl_deep_extend('force', { +require('lsp_signature').setup(utils.merge({ bind = true, -- This is mandatory, otherwise border config won't get registered. handler_opts = { border = config.border, diff --git a/lua/cosmic/plugins/luasnip/init.lua b/lua/cosmic/plugins/luasnip/init.lua index 7b85324..dcd583a 100644 --- a/lua/cosmic/plugins/luasnip/init.lua +++ b/lua/cosmic/plugins/luasnip/init.lua @@ -1,5 +1,7 @@ local config = require('cosmic.config') local ls = require('luasnip') +local utils = require('cosmic.utils') + -- some shorthands... --[[ local s = ls.snippet local sn = ls.snippet_node @@ -10,7 +12,7 @@ local c = ls.choice_node local d = ls.dynamic_node ]] -- Every unspecified option will be set to the default. -ls.config.set_config(vim.tbl_deep_extend('force', { +ls.config.set_config(utils.merge({ history = true, -- Update more often, :h events for more info. updateevents = 'TextChanged,TextChangedI', diff --git a/lua/cosmic/plugins/notify/init.lua b/lua/cosmic/plugins/notify/init.lua index 6355320..111de57 100644 --- a/lua/cosmic/plugins/notify/init.lua +++ b/lua/cosmic/plugins/notify/init.lua @@ -1,7 +1,8 @@ -local icons = require('cosmic.theme.icons') local config = require('cosmic.config') +local icons = require('cosmic.theme.icons') +local utils = require('cosmic.utils') -require('notify').setup(vim.tbl_deep_extend('force', { +require('notify').setup(utils.merge({ icons = { ERROR = icons.error, WARN = icons.warn, diff --git a/lua/cosmic/plugins/nvim-cmp/init.lua b/lua/cosmic/plugins/nvim-cmp/init.lua index a382158..67c7e8b 100644 --- a/lua/cosmic/plugins/nvim-cmp/init.lua +++ b/lua/cosmic/plugins/nvim-cmp/init.lua @@ -1,5 +1,5 @@ local cmp = require('cmp') -local utils = require('cosmic-ui.utils') +local utils = require('cosmic.utils') local luasnip = require('luasnip') local config = require('cosmic.config') local icons = require('cosmic.theme.icons') diff --git a/lua/cosmic/plugins/nvim-tree/init.lua b/lua/cosmic/plugins/nvim-tree/init.lua index 825a042..17e9129 100644 --- a/lua/cosmic/plugins/nvim-tree/init.lua +++ b/lua/cosmic/plugins/nvim-tree/init.lua @@ -1,6 +1,7 @@ +local config = require('cosmic.config') local g = vim.g local icons = require('cosmic.theme.icons') -local config = require('cosmic.config') +local utils = require('cosmic.utils') -- settings g.nvim_tree_git_hl = 1 @@ -48,4 +49,4 @@ local args = { }, } -require('nvim-tree').setup(vim.tbl_deep_extend('force', args, config.nvim_tree or {})) +require('nvim-tree').setup(utils.merge(args, config.nvim_tree or {})) diff --git a/lua/cosmic/plugins/telescope/init.lua b/lua/cosmic/plugins/telescope/init.lua index 70b0aeb..7c5a7a6 100644 --- a/lua/cosmic/plugins/telescope/init.lua +++ b/lua/cosmic/plugins/telescope/init.lua @@ -1,6 +1,7 @@ local actions = require('telescope.actions') -local icons = require('cosmic.theme.icons') local config = require('cosmic.config') +local icons = require('cosmic.theme.icons') +local utils = require('cosmic.utils') local default_mappings = { n = { @@ -47,7 +48,7 @@ local opts_flex = { }, } -require('telescope').setup(vim.tbl_deep_extend('force', { +require('telescope').setup(utils.merge({ defaults = { prompt_prefix = '🔍 ', selection_caret = icons.folder.arrow_closed, @@ -78,9 +79,9 @@ require('telescope').setup(vim.tbl_deep_extend('force', { }, }, pickers = { - buffers = vim.tbl_deep_extend('force', opts_flex, { + buffers = utils.merge(opts_flex, { prompt_title = '✨ Search Buffers ✨', - mappings = vim.tbl_deep_extend('force', { + mappings = utils.merge({ n = { ['d'] = actions.delete_buffer, }, @@ -88,46 +89,46 @@ require('telescope').setup(vim.tbl_deep_extend('force', { sort_mru = true, preview_title = false, }), - lsp_code_actions = vim.tbl_deep_extend('force', opts_cursor, { + lsp_code_actions = utils.merge(opts_cursor, { prompt_title = 'Code Actions', }), - lsp_range_code_actions = vim.tbl_deep_extend('force', opts_vertical, { + lsp_range_code_actions = utils.merge(opts_vertical, { prompt_title = 'Code Actions', }), - lsp_document_diagnostics = vim.tbl_deep_extend('force', opts_vertical, { + lsp_document_diagnostics = utils.merge(opts_vertical, { prompt_title = 'Document Diagnostics', mappings = default_mappings, }), - lsp_implementations = vim.tbl_deep_extend('force', opts_cursor, { + lsp_implementations = utils.merge(opts_cursor, { prompt_title = 'Implementations', mappings = default_mappings, }), - lsp_definitions = vim.tbl_deep_extend('force', opts_cursor, { + lsp_definitions = utils.merge(opts_cursor, { prompt_title = 'Definitions', mappings = default_mappings, }), - lsp_references = vim.tbl_deep_extend('force', opts_vertical, { + lsp_references = utils.merge(opts_vertical, { prompt_title = 'References', mappings = default_mappings, }), - find_files = vim.tbl_deep_extend('force', opts_flex, { + find_files = utils.merge(opts_flex, { prompt_title = '✨ Search Project ✨', mappings = default_mappings, hidden = true, }), - diagnostics = vim.tbl_deep_extend('force', opts_vertical, { + diagnostics = utils.merge(opts_vertical, { mappings = default_mappings, }), - git_files = vim.tbl_deep_extend('force', opts_flex, { + git_files = utils.merge(opts_flex, { prompt_title = '✨ Search Git Project ✨', mappings = default_mappings, hidden = true, }), - live_grep = vim.tbl_deep_extend('force', opts_flex, { + live_grep = utils.merge(opts_flex, { prompt_title = '✨ Live Grep ✨', mappings = default_mappings, }), - grep_string = vim.tbl_deep_extend('force', opts_vertical, { + grep_string = utils.merge(opts_vertical, { prompt_title = '✨ Grep String ✨', mappings = default_mappings, }), diff --git a/lua/cosmic/plugins/todo-comments/init.lua b/lua/cosmic/plugins/todo-comments/init.lua index 84c9331..6a85447 100644 --- a/lua/cosmic/plugins/todo-comments/init.lua +++ b/lua/cosmic/plugins/todo-comments/init.lua @@ -1,7 +1,8 @@ -local icons = require('cosmic.theme.icons') local config = require('cosmic.config') +local icons = require('cosmic.theme.icons') +local utils = require('cosmic.utils') -require('todo-comments').setup(vim.tbl_deep_extend('force', { +require('todo-comments').setup(utils.merge({ keywords = { FIX = { icon = icons.debug, -- icon used for the sign, and in search results diff --git a/lua/cosmic/plugins/treesitter/init.lua b/lua/cosmic/plugins/treesitter/init.lua index 6b2007e..8ff1928 100644 --- a/lua/cosmic/plugins/treesitter/init.lua +++ b/lua/cosmic/plugins/treesitter/init.lua @@ -1,4 +1,5 @@ local config = require('cosmic.config') +local utils = require('cosmic.utils') local defaults = { ensure_installed = { @@ -35,4 +36,4 @@ local defaults = { }, } -require('nvim-treesitter.configs').setup(vim.tbl_deep_extend('force', defaults, config.treesitter or {})) +require('nvim-treesitter.configs').setup(utils.merge(defaults, config.treesitter or {})) diff --git a/lua/cosmic/theme/init.lua b/lua/cosmic/theme/init.lua index 61b3ce7..ef5a38a 100644 --- a/lua/cosmic/theme/init.lua +++ b/lua/cosmic/theme/init.lua @@ -5,12 +5,13 @@ end local highlight = require('cosmic.theme.utils').highlight local get_highlight = require('cosmic.theme.utils').get_highlight local set_highlight = require('cosmic.theme.utils').set_highlight +local utils = require('cosmic.utils') local statusline_colors = get_highlight('StatusLine') local error_colors = get_highlight('DiagnosticError') set_highlight( 'DiagnosticErrorInv', - vim.tbl_extend('force', error_colors, { + utils.merge(error_colors, { guibg = error_colors.guifg, guifg = statusline_colors.guibg, }) @@ -19,7 +20,7 @@ set_highlight( local warning_colors = get_highlight('DiagnosticWarn') set_highlight( 'DiagnosticWarnInv', - vim.tbl_extend('force', warning_colors, { + utils.merge(warning_colors, { guibg = warning_colors.guifg, guifg = statusline_colors.guibg, }) @@ -28,7 +29,7 @@ set_highlight( local hint_colors = get_highlight('DiagnosticHint') set_highlight( 'DiagnosticHintInv', - vim.tbl_extend('force', hint_colors, { + utils.merge(hint_colors, { guibg = hint_colors.guifg, guifg = statusline_colors.guibg, }) @@ -37,7 +38,7 @@ set_highlight( local info_colors = get_highlight('DiagnosticInfo') set_highlight( 'DiagnosticInfoInv', - vim.tbl_extend('force', info_colors, { + utils.merge(info_colors, { guibg = info_colors.guifg, guifg = statusline_colors.guibg, }) diff --git a/lua/cosmic/utils/init.lua b/lua/cosmic/utils/init.lua index bf87f2b..ac0378f 100644 --- a/lua/cosmic/utils/init.lua +++ b/lua/cosmic/utils/init.lua @@ -1,4 +1,3 @@ -local Logger = require('cosmic.utils.logger') local M = {} function M.map(mode, lhs, rhs, opts) @@ -17,7 +16,7 @@ function M.buf_map(bufnr, mode, lhs, rhs, opts) vim.api.nvim_buf_set_keymap(bufnr, mode, lhs, rhs, options) end -M.merge = function(...) +function M.merge(...) return vim.tbl_deep_extend('force', ...) end @@ -67,6 +66,7 @@ local function clear_cache() end function M.post_reload(msg) + local Logger = require('cosmic.utils.logger') unload('cosmic.utils', true) unload('cosmic.theme', true) unload('cosmic.plugins.statusline', true) @@ -102,6 +102,7 @@ end -- update instance of CosmicNvim function M.update() + local Logger = require('cosmic.utils.logger') local Job = require('plenary.job') local path = M.get_install_dir() local errors = {} diff --git a/lua/cosmic/utils/logger.lua b/lua/cosmic/utils/logger.lua index 9b7682a..7158b92 100644 --- a/lua/cosmic/utils/logger.lua +++ b/lua/cosmic/utils/logger.lua @@ -1,3 +1,4 @@ +local utils = require('cosmic.utils') local Logger = {} Logger.__index = Logger @@ -8,7 +9,7 @@ function Logger:log(msg, opts) vim.notify( msg, vim.log.levels.INFO, - vim.tbl_deep_extend('force', { + utils.merge({ title = title, }, opts) ) @@ -19,7 +20,7 @@ function Logger:warn(msg, opts) vim.notify( msg, vim.log.levels.WARN, - vim.tbl_deep_extend('force', { + utils.merge({ title = title, }, opts) ) @@ -30,7 +31,7 @@ function Logger:error(msg, opts) vim.notify( msg, vim.log.levels.ERROR, - vim.tbl_deep_extend('force', { + utils.merge({ title = title, }, opts) )