diff --git a/install.sh b/install.sh index 5cc3af5..1558e59 100755 --- a/install.sh +++ b/install.sh @@ -18,7 +18,7 @@ dependencies=( ) preserved_files=( "lua/mappings.lua" - "lua/user_config.lua" + "lua/chadrc.lua" ) # https://stackoverflow.com/questions/5947742/how-to-change-the-output-color-of-echo-in-linux diff --git a/lua/chadrc.lua b/lua/chadrc.lua new file mode 100644 index 0000000..e006e11 --- /dev/null +++ b/lua/chadrc.lua @@ -0,0 +1,100 @@ +local M = { + ui = { + theme = "onedark" + }, + options = { + permanent_undo = true, + ruler = false, + hidden = true, + ignorecase = true, + mouse = "a", + cmdheight = 1, + updatetime = 250, + timeoutlen = 400, + clipboard = "unnamedplus", + number = true, + numberwidth = 2, + expandtab = true, + shiftwidth = 2, + smartindent = true, + mapleader = " ", + autosave = false + }, + -- enable / disable plugins (true for disable) + plugin_status = { + better_esc = false, + nvim_bufferline = false, + galaxyline = false, + nvim_colorizer = false, + lspkind = false, + lspsignature = false, + neoformat = false, + gitsigns = false, + vim_matchup = false, + dashboard_nvim = false, + autosave_nvim = false, + truezen_nvim = false, + blankline = false, + vim_fugitive = false, + nvim_comment = false, + neoscroll_nvim = false + }, + -- make sure you dont use same keys twice + mappings = { + truezen = { + ataraxisMode = "<leader>zz", + minimalisticmode = "<leader>zm", + focusmode = "<leader>zf" + }, + comment_nvim = { + comment_toggle = "<leader>/" + }, + nvimtree = { + treetoggle = "<C-n>" + }, + neoformat = { + format = "<leader>fm" + }, + dashboard = { + open = "<leader>db", + newfile = "<leader>fn", + bookmarks = "<leader>bm", + sessionload = "<leader>l", + sessionsave = "<leader>s" + }, + telescope = { + live_grep = "<leader>fw", + git_status = "<leader>gt", + git_commits = "<leader>cm", + find_files = "<leader>ff", + media_files = "<leader>fp", + buffers = "<leader>fb", + help_tags = "<leader>fh", + oldfiles = "<leader>fo", + themes = "<leader>th" + }, + bufferline = { + new_buffer = "<S-t>", + newtab = "<C-t>b", + close = "<S-x>", + cycleNext = "<TAB>", + cyclePrev = "<S-Tab>" + }, + fugitive = { + Git = "<leader>gs", + diffget_2 = "<leader>gh", + diffget_3 = "<leader>gl", + git_blame = "<leader>gb" + }, + misc = { + openTerm_right = "<C-l>", + openTerm_bottom = "<C-x>", + openTerm_currentBuf = "<C-t>t", + copywhole_file = "<C-a>", + toggle_linenr = "<leader>n", + esc_Termmode = "jk" + } + } +} + +return M diff --git a/lua/highlights.lua b/lua/highlights.lua index 44a6d5b..dfea700 100644 --- a/lua/highlights.lua +++ b/lua/highlights.lua @@ -76,7 +76,7 @@ fg("NvimTreeVertSplit", darker_black) bg("NvimTreeVertSplit", darker_black) fg("NvimTreeEndOfBuffer", darker_black) -vim.cmd("hi NvimTreeRootFolder gui=underline guifg=" .. purple) +cmd("hi NvimTreeRootFolder gui=underline guifg=" .. purple) bg("NvimTreeNormal", darker_black) fg_bg("NvimTreeStatuslineNc", darker_black, darker_black) fg_bg("NvimTreeWindowPicker", red, black2) diff --git a/lua/mappings.lua b/lua/mappings.lua index 5562bb5..b1f16c9 100644 --- a/lua/mappings.lua +++ b/lua/mappings.lua @@ -1,3 +1,9 @@ +local user_map = require("chadrc").mappings +local miscMap = user_map.misc + +local M = {} +local cmd = vim.cmd + local function map(mode, lhs, rhs, opts) local options = {noremap = true, silent = true} if opts then @@ -30,26 +36,31 @@ map("", "<Down>", 'v:count ? "j" : "gj"', {expr = true}) map("", "<Up>", 'v:count ? "k" : "gk"', {expr = true}) -- OPEN TERMINALS -- -map("n", "<C-l>", ":vnew +terminal | setlocal nobuflisted <CR>", opt) -- term over right -map("n", "<C-x>", ":10new +terminal | setlocal nobuflisted <CR>", opt) -- term bottom -map("n", "<C-t>t", ":terminal <CR>", opt) -- term buffer +map("n", miscMap.openTerm_right, ":vnew +terminal | setlocal nobuflisted <CR>", opt) -- term over right +map("n", miscMap.openTerm_bottom, ":10new +terminal | setlocal nobuflisted <CR>", opt) -- term bottom +map("n", miscMap.openTerm_currentBuf, ":terminal <CR>", opt) -- term buffer -- copy whole file content -map("n", "<C-a>", ":%y+<CR>", opt) +map("n", miscMap.copywhole_file, ":%y+<CR>", opt) -- toggle numbers -map("n", "<leader>n", ":set nu!<CR>", opt) +map("n", miscMap.toggle_linenr, ":set nu!<CR>", opt) --- Truezen.nvim -map("n", "<leader>zz", ":TZAtaraxis<CR>", opt) -map("n", "<leader>zm", ":TZMinimalist<CR>", opt) -map("n", "<leader>zf", ":TZFocus<CR>", opt) +M.truezen = function() + local m = user_map.truezen + + map("n", m.ataraxisMode, ":TZAtaraxis<CR>", opt) + map("n", m.minimalisticmode, ":TZMinimalist<CR>", opt) + map("n", m.focusmode, ":TZFocus<CR>", opt) +end map("n", "<C-s>", ":w <CR>", opt) --- Commenter Keybinding -map("n", "<leader>/", ":CommentToggle<CR>", opt) -map("v", "<leader>/", ":CommentToggle<CR>", opt) +M.comment_nvim = function() + local m = user_map.comment_nvim.comment_toggle + map("n", m, ":CommentToggle<CR>", opt) + map("v", m, ":CommentToggle<CR>", opt) +end -- compe stuff local t = function(str) @@ -112,54 +123,74 @@ map("i", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true}) map("s", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true}) map("i", "<CR>", "v:lua.completions()", {expr = true}) --- nvimtree -map("n", "<C-n>", ":NvimTreeToggle<CR>", opt) +M.nvimtree = function() + local m = user_map.nvimtree.treetoggle --- format code -map("n", "<Leader>fm", ":Neoformat<CR>", opt) + map("n", m, ":NvimTreeToggle<CR>", opt) +end --- dashboard stuff -map("n", "<Leader>db", ":Dashboard<CR>", opt) -map("n", "<Leader>fn", ":DashboardNewFile<CR>", opt) -map("n", "<Leader>bm", ":DashboardJumpMarks<CR>", opt) -map("n", "<C-s>l", ":SessionLoad<CR>", opt) -map("n", "<C-s>s", ":SessionSave<CR>", opt) +M.neoformat = function() + local m = user_map.neoformat.format + map("n", m, ":Neoformat<CR>", opt) +end --- Telescope -map("n", "<Leader>fw", ":Telescope live_grep<CR>", opt) -map("n", "<Leader>gt", ":Telescope git_status <CR>", opt) -map("n", "<Leader>cm", ":Telescope git_commits <CR>", opt) -map("n", "<Leader>ff", ":Telescope find_files <CR>", opt) -map("n", "<Leader>fp", ":Telescope media_files <CR>", opt) -map("n", "<Leader>fb", ":Telescope buffers<CR>", opt) -map("n", "<Leader>fh", ":Telescope help_tags<CR>", opt) -map("n", "<Leader>fo", ":Telescope oldfiles<CR>", opt) -map("n", "<Leader>th", ":Telescope themes<CR>", opt) +M.dashboard = function() + local m = user_map.dashboard --- bufferline tab stuff -map("n", "<S-t>", ":enew<CR>", opt) -- new buffer -map("n", "<C-t>b", ":tabnew<CR>", opt) -- new tab -map("n", "<S-x>", ":bd!<CR>", opt) -- close tab + map("n", m.open, ":Dashboard<CR>", opt) + map("n", m.newfile, ":DashboardNewFile<CR>", opt) + map("n", m.bookmarks, ":DashboardJumpMarks<CR>", opt) + map("n", m.sessionload, ":SessionLoad<CR>", opt) + map("n", m.sessionsave, ":SessionSave<CR>", opt) +end --- move between tabs -map("n", "<TAB>", ":BufferLineCycleNext<CR>", opt) -map("n", "<S-TAB>", ":BufferLineCyclePrev<CR>", opt) +M.telescope = function() + local m = user_map.telescope + + map("n", m.live_grep, ":Telescope live_grep<CR>", opt) + map("n", m.git_status, ":Telescope git_status <CR>", opt) + map("n", m.git_commits, ":Telescope git_commits <CR>", opt) + map("n", m.find_files, ":Telescope find_files <CR>", opt) + map("n", m.media_files, ":Telescope media_files <CR>", opt) + map("n", m.buffers, ":Telescope buffers<CR>", opt) + map("n", m.help_tags, ":Telescope help_tags<CR>", opt) + map("n", m.oldfiles, ":Telescope oldfiles<CR>", opt) + map("n", m.themes, ":Telescope themes<CR>", opt) +end + +M.bufferline = function() + local m = user_map.bufferline + + map("n", m.new_buffer, ":enew<CR>", opt) -- new buffer + map("n", m.newtab, ":tabnew<CR>", opt) -- new tab + map("n", m.close, ":bd!<CR>", opt) -- close buffer + + -- move between tabs + + map("n", m.cycleNext, ":BufferLineCycleNext<CR>", opt) + map("n", m.cyclePrev, ":BufferLineCyclePrev<CR>", opt) +end -- use ESC to turn off search highlighting map("n", "<Esc>", ":noh<CR>", opt) -- get out of terminal with jk -map("t", "jk", "<C-\\><C-n>", opt) +map("t", miscMap.esc_Termmode, "<C-\\><C-n>", opt) -- Packer commands till because we are not loading it at startup -vim.cmd("silent! command PackerCompile lua require 'pluginList' require('packer').compile()") -vim.cmd("silent! command PackerInstall lua require 'pluginList' require('packer').install()") -vim.cmd("silent! command PackerStatus lua require 'pluginList' require('packer').status()") -vim.cmd("silent! command PackerSync lua require 'pluginList' require('packer').sync()") -vim.cmd("silent! command PackerUpdate lua require 'pluginList' require('packer').update()") +cmd("silent! command PackerCompile lua require 'pluginList' require('packer').compile()") +cmd("silent! command PackerInstall lua require 'pluginList' require('packer').install()") +cmd("silent! command PackerStatus lua require 'pluginList' require('packer').status()") +cmd("silent! command PackerSync lua require 'pluginList' require('packer').sync()") +cmd("silent! command PackerUpdate lua require 'pluginList' require('packer').update()") --- Vim Fugitive -map("n", "<Leader>gs", ":Git<CR>", opt) -map("n", "<Leader>gh", ":diffget //2<CR>", opt) -map("n", "<Leader>gl", ":diffget //3<CR>", opt) -map("n", "<Leader>gb", ":Git blame<CR>", opt) +M.fugitive = function() + local m = user_map.fugitive + + map("n", m.Git, ":Git<CR>", opt) + map("n", m.diffget_2, ":diffget //2<CR>", opt) + map("n", m.diffget_3, ":diffget //3<CR>", opt) + map("n", m.git_blame, ":Git blame<CR>", opt) +end + +return M diff --git a/lua/options.lua b/lua/options.lua index 50d63ba..15abb39 100644 --- a/lua/options.lua +++ b/lua/options.lua @@ -1,20 +1,21 @@ +local options = require("chadrc").options local opt = vim.opt local g = vim.g -opt.undofile = true -opt.ruler = false -opt.hidden = true -opt.ignorecase = true +opt.undofile = options.permanent_undo +opt.ruler = options.ruler +opt.hidden = options.hidden +opt.ignorecase = options.ignorecase opt.splitbelow = true opt.splitright = true opt.termguicolors = true opt.cul = true -opt.mouse = "a" +opt.mouse = options.mouse opt.signcolumn = "yes" -opt.cmdheight = 1 -opt.updatetime = 250 -- update interval for gitsigns -opt.timeoutlen = 400 -opt.clipboard = "unnamedplus" +opt.cmdheight = options.cmdheight +opt.updatetime = options.updatetime -- update interval for gitsigns +opt.timeoutlen = options.timeoutlen +opt.clipboard = options.clipboard -- disable nvim intro opt.shortmess:append("sI") @@ -23,21 +24,21 @@ opt.shortmess:append("sI") opt.fillchars = {eob = " "} -- Numbers -opt.number = true -opt.numberwidth = 2 +opt.number = options.number +opt.numberwidth = options.numberwidth -- opt.relativenumber = true -- Indenline -opt.expandtab = true -opt.shiftwidth = 2 -opt.smartindent = true +opt.expandtab = options.expandtab +opt.shiftwidth = options.shiftwidth +opt.smartindent = options.smartindent -- go to previous/next line with h,l,left arrow and right arrow -- when cursor reaches end/beginning of line opt.whichwrap:append("<>hl") -g.mapleader = " " -g.auto_save = false +g.mapleader = options.mapleader +g.auto_save = options.autosave -- disable builtin vim plugins local disabled_built_ins = { @@ -62,7 +63,7 @@ local disabled_built_ins = { } for _, plugin in pairs(disabled_built_ins) do - vim.g["loaded_" .. plugin] = 1 + g["loaded_" .. plugin] = 1 end -- Don't show status line on vim terminals diff --git a/lua/packerInit.lua b/lua/packerInit.lua index aa9101a..73975bb 100644 --- a/lua/packerInit.lua +++ b/lua/packerInit.lua @@ -1,4 +1,6 @@ -vim.cmd("packadd packer.nvim") +local cmd = vim.cmd + +cmd("packadd packer.nvim") local present, packer = pcall(require, "packer") @@ -19,7 +21,7 @@ if not present then } ) - vim.cmd("packadd packer.nvim") + cmd("packadd packer.nvim") present, packer = pcall(require, "packer") if present then @@ -33,9 +35,13 @@ return packer.init { display = { open_fn = function() return require("packer.util").float {border = "single"} - end + end, + prompt_border = "single" }, git = { clone_timeout = 600 -- Timeout, in seconds, for git clones - } + }, + auto_clean = true, + compile_on_sync = true + -- auto_reload_compiled = true } diff --git a/lua/pluginList.lua b/lua/pluginList.lua index 3701f1e..bf7c76b 100644 --- a/lua/pluginList.lua +++ b/lua/pluginList.lua @@ -1,3 +1,5 @@ +local plugin_status = require("chadrc").plugin_status + local present, _ = pcall(require, "packerInit") local packer @@ -18,6 +20,7 @@ return packer.startup( use { "jdhao/better-escape.vim", + disable = plugin_status.better_esc, event = "InsertEnter", config = function() require "plugins.others".escape() @@ -26,14 +29,19 @@ return packer.startup( use { "akinsho/nvim-bufferline.lua", + disable = plugin_status.nvim_bufferline, after = "nvim-base16.lua", config = function() require "plugins.bufferline" + end, + setup = function() + require "mappings".bufferline() end } use { "glepnir/galaxyline.nvim", + disable = plugin_status.galaxyline, after = "nvim-base16.lua", config = function() require "plugins.statusline" @@ -51,6 +59,7 @@ return packer.startup( use { "norcalli/nvim-colorizer.lua", + disable = plugin_status.nvim_colorizer, event = "BufRead", config = function() require("plugins.others").colorizer() @@ -81,6 +90,7 @@ return packer.startup( use { "onsails/lspkind-nvim", + disable = plugin_status.lspkind, event = "BufEnter", config = function() require("plugins.others").lspkind() @@ -89,6 +99,7 @@ return packer.startup( use { "ray-x/lsp_signature.nvim", + disable = plugin_status.lspsignature, after = "nvim-lspconfig", config = function() require("plugins.others").signature() @@ -121,7 +132,11 @@ return packer.startup( use { "sbdchd/neoformat", - cmd = "Neoformat" + disable = plugin_status.neoformat, + cmd = "Neoformat", + setup = function() + require "mappings".neoformat() + end } -- file managing , picker etc @@ -130,6 +145,9 @@ return packer.startup( cmd = "NvimTreeToggle", config = function() require "plugins.nvimtree" + end, + setup = function() + require "mappings".nvimtree() end } @@ -155,6 +173,9 @@ return packer.startup( cmd = "Telescope", config = function() require "plugins.telescope" + end, + setup = function() + require "mappings".telescope() end } @@ -171,6 +192,7 @@ return packer.startup( -- git stuff use { "lewis6991/gitsigns.nvim", + disable = plugin_status.gitsigns, after = "plenary.nvim", config = function() require "plugins.gitsigns" @@ -188,19 +210,23 @@ return packer.startup( use { "andymass/vim-matchup", + disable = plugin_status.vim_matchup, event = "CursorMoved" } use { "terrortylor/nvim-comment", + disable = plugin_status.nvim_comment, cmd = "CommentToggle", config = function() require("plugins.others").comment() + require "mappings".comment_nvim() end } use { "glepnir/dashboard-nvim", + disable = plugin_status.dashboard_nvim, cmd = { "Dashboard", "DashboardNewFile", @@ -210,11 +236,13 @@ return packer.startup( }, setup = function() require "plugins.dashboard" + require "mappings".dashboard() end } -- load autosave only if its globally enabled use { + disable = plugin_status.autosave_nvim, "Pocco81/AutoSave.nvim", config = function() require "plugins.autosave" @@ -227,6 +255,7 @@ return packer.startup( -- smooth scroll use { "karb94/neoscroll.nvim", + disable = plugin_status.neoscroll_nvim, event = "WinScrolled", config = function() require("plugins.others").neoscroll() @@ -235,6 +264,7 @@ return packer.startup( use { "Pocco81/TrueZen.nvim", + disable = plugin_status.truezen_nvim, cmd = { "TZAtaraxis", "TZMinimalist", @@ -242,6 +272,9 @@ return packer.startup( }, config = function() require "plugins.zenmode" + end, + setup = function() + require "mappings".truezen() end } @@ -249,6 +282,7 @@ return packer.startup( use { "lukas-reineke/indent-blankline.nvim", + disable = plugin_status.blankline, event = "BufRead", setup = function() require("plugins.others").blankline() @@ -257,9 +291,13 @@ return packer.startup( use { "tpope/vim-fugitive", + disable = plugin_status.vim_fugitive, cmd = { "Git" - } + }, + setup = function() + require "mappings".fugitive() + end } end ) diff --git a/lua/theme.lua b/lua/theme.lua index 2de9294..1e0d36b 100644 --- a/lua/theme.lua +++ b/lua/theme.lua @@ -1,4 +1,4 @@ -local chad_theme = require("user_config").ui.theme +local chad_theme = require("chadrc").ui.theme vim.g.nvchad_theme = chad_theme local present, base16 = pcall(require, "base16") diff --git a/lua/user_config.lua b/lua/user_config.lua deleted file mode 100644 index bd0f741..0000000 --- a/lua/user_config.lua +++ /dev/null @@ -1,7 +0,0 @@ -local M = { - ui = { - theme = "onedark" - } -} - -return M diff --git a/lua/utils.lua b/lua/utils.lua index 87e1e48..ced2dc7 100644 --- a/lua/utils.lua +++ b/lua/utils.lua @@ -84,7 +84,7 @@ M.change_theme = function(current_theme, new_theme) return end - local file = vim.fn.stdpath("config") .. "/lua/user_config.lua" + local file = vim.fn.stdpath("config") .. "/lua/chadrc.lua" -- store in data variable local data = assert(M.file("r", file)) local find = "theme = .?" .. current_theme .. ".?"