diff --git a/lua/core/default_config.lua b/lua/core/default_config.lua index 9b087cf..fde5bd9 100644 --- a/lua/core/default_config.lua +++ b/lua/core/default_config.lua @@ -4,9 +4,10 @@ local M = {} M.options, M.ui, M.mappings, M.plugins = {}, {}, {}, {} --- non plugin normal, available without any plugins M.options = { - -- NeoVim/Vim options + -- custom = {} + -- general nvim/vim options , check :h optionname to know more about an option + clipboard = "unnamedplus", cmdheight = 1, ruler = false, @@ -16,17 +17,16 @@ M.options = { mapleader = " ", mouse = "a", number = true, - -- relative numbers in normal mode tool at the bottom of options.lua numberwidth = 2, relativenumber = false, expandtab = true, shiftwidth = 2, smartindent = true, - tabstop = 8, -- Number of spaces that a in the file counts for + tabstop = 8, timeoutlen = 400, - -- interval for writing swap file to disk, also used by gitsigns updatetime = 250, - undofile = true, -- keep a permanent undo (across restarts) + undofile = true, + -- NvChad options nvChad = { copy_cut = true, -- copy cut text ( x key ), visual and normal mode @@ -34,43 +34,46 @@ M.options = { insert_nav = true, -- navigation in insertmode window_nav = true, theme_toggler = false, - -- used for updater + + -- updater update_url = "https://github.com/NvChad/NvChad", update_branch = "main", }, } --- ui configs +---- UI ----- + M.ui = { - hl_override = "", -- path of your file which contains highlight stuffs + hl_override = "", -- path of your file that contains highlights italic_comments = false, - -- theme to be used, check available themes with ` + t + h` - theme = "onedark", + theme = "onedark", -- default theme -- toggle between two themes, see theme_toggler mappings theme_toggler = { "onedark", "gruvchad", }, - -- Enable this only if your terminal has the colorscheme set which nvchad uses + + -- Change terminal bg to nvim theme's bg color so it'll match well -- For Ex : if you have onedark set in nvchad, set onedark's bg color on your terminal transparency = false, } --- these are plugin related options +---- PLUGIN OPTIONS ---- + M.plugins = { - -- enable and disable plugins (false for disable) + -- enable/disable plugins (false for disable) status = { - blankline = true, -- show code scope with symbols - bufferline = true, -- list open buffers up the top, easy switching too + blankline = true, -- indentline stuff + bufferline = true, -- manage and preview opened buffers colorizer = false, -- color RGB, HEX, CSS, NAME color codes comment = true, -- easily (un)comment code, language aware - dashboard = false, -- NeoVim 'home screen' on open + dashboard = false, esc_insertmode = true, -- map to with no lag feline = true, -- statusline - gitsigns = true, -- gitsigns in statusline + gitsigns = true, lspsignature = true, -- lsp enhancements - telescope_media = false, -- media previews within telescope finders - vim_matchup = true, -- % operator enhancements + telescope_media = false, + vim_matchup = true, -- improved matchit cmp = true, nvimtree = true, autopairs = true, @@ -86,39 +89,46 @@ M.plugins = { luasnip = { snippet_path = {}, }, - statusline = { -- statusline related options - -- these are filetypes, not pattern matched - -- shown filetypes will overrule hidden filetypes + statusline = { + -- hide, show on specific filetypes hidden = { "help", "dashboard", "NvimTree", "terminal", }, - -- show short statusline on small screens - shortline = true, shown = {}, - -- default, round , slant , block , arrow - style = "default", + + -- truncate statusline on small screens + shortline = true, + style = "default", -- default, round , slant , block , arrow }, esc_insertmode_timeout = 300, }, default_plugin_config_replace = {}, } --- mappings -- don't use a single keymap twice -- --- non plugin mappings +-- Don't use a single keymap twice + +--- MAPPINGS ---- + +-- non plugin M.mappings = { - -- custom = {}, -- all custom user mappings - -- close current focused buffer - close_buffer = "x", - copy_whole_file = "", -- copy all contents of the current buffer - line_number_toggle = "n", -- show or hide line number - new_buffer = "", -- open a new buffer - new_tab = "b", -- open a new vim tab - save_file = "", -- save file using :w - theme_toggler = "tt", -- for theme toggler, see in ui.theme_toggler + -- custom = {}, -- custom user mappings + + misc = { + close_buffer = "x", + copy_whole_file = "", -- copy all contents of current buffer + line_number_toggle = "n", -- toggle line number + update_nvchad = "uu", + new_buffer = "", + new_tab = "b", + save_file = "", -- save file using :w + theme_toggler = "tt", -- see in ui.theme_toggler + }, + -- navigation in insert mode, only if enabled in options + insert_nav = { backward = "", end_of_line = "", @@ -127,60 +137,63 @@ M.mappings = { prev_line = "", beginning_of_line = "", }, - --better window movement + + -- better window movement window_nav = { moveLeft = "", moveRight = "", moveUp = "", moveDown = "", }, + -- terminal related mappings terminal = { - -- multiple mappings can be given for esc_termmode and esc_hide_termmode + -- multiple mappings can be given for esc_termmode, esc_hide_termmode + -- get out of terminal mode - esc_termmode = { "jk" }, -- multiple mappings allowed + esc_termmode = { "jk" }, + -- get out of terminal mode and hide it - esc_hide_termmode = { "JK" }, -- multiple mappings allowed + esc_hide_termmode = { "JK" }, -- show & recover hidden terminal buffers in a telescope picker pick_term = "W", - -- below three are for spawning terminals + + -- spawn terminals new_horizontal = "h", new_vertical = "v", new_window = "w", }, - -- update nvchad from nvchad, chadness 101 - update_nvchad = "uu", } --- all plugins related mappings +-- plugins related mappings + M.mappings.plugins = { - -- list open buffers up the top, easy switching too bufferline = { - next_buffer = "", -- next buffer - prev_buffer = "", -- previous buffer + next_buffer = "", + prev_buffer = "", }, - -- easily (un)comment code, language aware comment = { - toggle = "/", -- toggle comment (works on multiple lines) + toggle = "/", }, - -- NeoVim 'home screen' on open + dashboard = { bookmarks = "bm", new_file = "fn", -- basically create a new buffer open = "db", -- open dashboard - session_load = "l", -- load a saved session - session_save = "s", -- save a session + session_load = "l", + session_save = "s", }, + -- map to with no lag better_escape = { -- will still work esc_insertmode = { "jk" }, -- multiple mappings allowed }, - -- file explorer/tree + nvimtree = { toggle = "", focus = "e", }, - -- multitool for finding & picking things + telescope = { buffers = "fb", find_files = "ff", @@ -191,7 +204,7 @@ M.mappings.plugins = { live_grep = "fw", oldfiles = "fo", themes = "th", -- NvChad theme picker - -- media previews within telescope finders + telescope_media = { media_files = "fp", }, diff --git a/lua/core/hooks.lua b/lua/core/hooks.lua index af70156..02394a1 100644 --- a/lua/core/hooks.lua +++ b/lua/core/hooks.lua @@ -1,4 +1,5 @@ local hooks, M = {}, {} + local allowed_hooks = { "install_plugins", "setup_mappings", diff --git a/lua/core/mappings.lua b/lua/core/mappings.lua index cf9d2a0..3e0162b 100644 --- a/lua/core/mappings.lua +++ b/lua/core/mappings.lua @@ -68,19 +68,19 @@ M.misc = function() if nvChad_options.theme_toggler then map( "n", - maps.theme_toggler, + maps.misc.theme_toggler, ":lua require('nvchad').toggle_theme(require('core.utils').load_config().ui.theme_toggler) " ) end end local function required_mappings() - map("n", maps.close_buffer, ":lua require('core.utils').close_buffer() ") -- close buffer - map("n", maps.copy_whole_file, ":%y+ ") -- copy whole file content - map("n", maps.new_buffer, ":enew ") -- new buffer - map("n", maps.new_tab, ":tabnew ") -- new tabs - map("n", maps.line_number_toggle, ":set nu! ") -- toggle numbers - map("n", maps.save_file, ":w ") -- ctrl + s to save file + map("n", maps.misc.close_buffer, ":lua require('core.utils').close_buffer() ") -- close buffer + map("n", maps.misc.copy_whole_file, ":%y+ ") -- copy whole file content + map("n", maps.misc.new_buffer, ":enew ") -- new buffer + map("n", maps.misc.new_tab, ":tabnew ") -- new tabs + map("n", maps.misc.line_number_toggle, ":set nu! ") -- toggle numbers + map("n", maps.misc.save_file, ":w ") -- ctrl + s to save file -- terminal mappings -- local term_maps = maps.terminal @@ -107,7 +107,7 @@ M.misc = function() -- add NvChadUpdate command and mapping cmd "silent! command! NvChadUpdate lua require('nvchad').update_nvchad()" - map("n", maps.update_nvchad, ":NvChadUpdate ") + map("n", maps.misc.update_nvchad, ":NvChadUpdate ") -- add ChadReload command and maping -- cmd "silent! command! NvChadReload lua require('nvchad').reload_config()" diff --git a/lua/core/utils.lua b/lua/core/utils.lua index 37ffa68..be6da90 100644 --- a/lua/core/utils.lua +++ b/lua/core/utils.lua @@ -154,13 +154,12 @@ M.load_config = function(reload) } local default_config = "core.default_config" - local config_name = "chadrc" - local config_file = vim.fn.stdpath "config" .. "/lua/custom/" .. config_name .. ".lua" + local config_file = vim.fn.stdpath "config" .. "/lua/custom/" .. "chadrc.lua" -- unload the modules if force reload if reload then package.loaded[default_config or false] = nil - package.loaded[config_name or false] = nil + package.loaded["chadrc" or false] = nil end -- don't enclose in pcall, it better break when default config is faulty @@ -171,7 +170,7 @@ M.load_config = function(reload) -- print warning texts if user config file is present -- check if the user config is present if vim.fn.filereadable(vim.fn.glob(config_file)) == 1 then - local present, config = pcall(require, "custom/" .. config_name) + local present, config = pcall(require, "custom/chadrc") if present then -- make sure the returned value is table if type(config) == "table" then @@ -182,7 +181,7 @@ M.load_config = function(reload) to_replace ) else - print("Warning: " .. config_name .. " sourced successfully but did not return a lua table.") + print("Warning: chadrc " .. " sourced successfully but did not return a lua table.") end else print("Warning: " .. config_file .. " is present but sourcing failed.")