Merge branch 'dev'
This commit is contained in:
		
						commit
						27c33790ef
					
				
					 27 changed files with 371 additions and 587 deletions
				
			
		
							
								
								
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1 +1,2 @@
 | 
			
		|||
plugin
 | 
			
		||||
custom
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										13
									
								
								examples/example_chadrc.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								examples/example_chadrc.lua
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
-- This is an example chadrc file , its supposed to be placed in /lua/custom dir
 | 
			
		||||
-- lua/custom/chadrc.lua
 | 
			
		||||
 | 
			
		||||
local M = {}
 | 
			
		||||
 | 
			
		||||
-- make sure you maintain the structure of `core/default_config.lua` here,
 | 
			
		||||
-- example of changing theme:
 | 
			
		||||
 | 
			
		||||
M.ui = {
 | 
			
		||||
   theme = "gruvchad",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
return M
 | 
			
		||||
							
								
								
									
										39
									
								
								examples/example_init.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								examples/example_init.lua
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,39 @@
 | 
			
		|||
-- This is an example init file , its supposed to be placed in /lua/custom dir
 | 
			
		||||
-- lua/custom/init.lua
 | 
			
		||||
 | 
			
		||||
-- This is where your custom modules and plugins go.
 | 
			
		||||
-- Please check NvChad docs if you're totally new to nvchad + dont know lua!!
 | 
			
		||||
 | 
			
		||||
local hooks = require "core.hooks"
 | 
			
		||||
 | 
			
		||||
-- MAPPINGS
 | 
			
		||||
-- To add new plugins, use the "setup_mappings" hook,
 | 
			
		||||
 | 
			
		||||
hooks.add("setup_mappings", function(map)
 | 
			
		||||
   map("n", "<leader>cc", ":Telescope <CR>", opt)
 | 
			
		||||
   map("n", "<leader>q", ":q <CR>", opt)
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
-- NOTE : opt is a variable  there (most likely a table if you want multiple options),
 | 
			
		||||
-- you can remove it if you dont have any custom options
 | 
			
		||||
 | 
			
		||||
-- Install plugins
 | 
			
		||||
-- To add new plugins, use the "install_plugin" hook,
 | 
			
		||||
 | 
			
		||||
-- examples below:
 | 
			
		||||
 | 
			
		||||
hooks.add("install_plugins", function(use)
 | 
			
		||||
   use {
 | 
			
		||||
      "max397574/better-escape.nvim",
 | 
			
		||||
      event = "InsertEnter",
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   use {
 | 
			
		||||
      "user or orgname/reponame",
 | 
			
		||||
      --further packer options
 | 
			
		||||
   }
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
-- NOTE: we heavily suggest using Packer's lazy loading (with the 'event' field)
 | 
			
		||||
-- see: https://github.com/wbthomason/packer.nvim
 | 
			
		||||
-- https://nvchad.github.io/config/walkthrough
 | 
			
		||||
							
								
								
									
										22
									
								
								init.lua
									
										
									
									
									
								
							
							
						
						
									
										22
									
								
								init.lua
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,5 +1,21 @@
 | 
			
		|||
local ok, err = pcall(require, "core")
 | 
			
		||||
local userconf = pcall(require, "custom")
 | 
			
		||||
 | 
			
		||||
if not ok then
 | 
			
		||||
   error("Error loading core" .. "\n\n" .. err)
 | 
			
		||||
if userconf then
 | 
			
		||||
   require "custom"
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local core_modules = {
 | 
			
		||||
   "core.options",
 | 
			
		||||
   "core.autocmds",
 | 
			
		||||
   "core.mappings",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
for _, module in ipairs(core_modules) do
 | 
			
		||||
   local ok, err = pcall(require, module)
 | 
			
		||||
   if not ok then
 | 
			
		||||
      error("Error loading " .. module .. "\n\n" .. err)
 | 
			
		||||
   end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- non plugin mappings
 | 
			
		||||
require("core.mappings").misc()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
local override = require("core.utils").load_config().ui.hl_override
 | 
			
		||||
 | 
			
		||||
local cmd = vim.cmd
 | 
			
		||||
 | 
			
		||||
local override = require("core.utils").load_config().ui.hl_override
 | 
			
		||||
local colors = require("colors").get()
 | 
			
		||||
local ui = require("core.utils").load_config().ui
 | 
			
		||||
 | 
			
		||||
local black = colors.black
 | 
			
		||||
local black2 = colors.black2
 | 
			
		||||
| 
						 | 
				
			
			@ -21,10 +21,10 @@ local purple = colors.purple
 | 
			
		|||
local red = colors.red
 | 
			
		||||
local white = colors.white
 | 
			
		||||
local yellow = colors.yellow
 | 
			
		||||
local orange = colors.orange
 | 
			
		||||
local one_bg3 = colors.one_bg3
 | 
			
		||||
 | 
			
		||||
local ui = require("core.utils").load_config().ui
 | 
			
		||||
 | 
			
		||||
-- functions for setting highlights
 | 
			
		||||
local fg = require("core.utils").fg
 | 
			
		||||
local fg_bg = require("core.utils").fg_bg
 | 
			
		||||
local bg = require("core.utils").bg
 | 
			
		||||
| 
						 | 
				
			
			@ -46,7 +46,7 @@ fg("EndOfBuffer", black)
 | 
			
		|||
 | 
			
		||||
-- For floating windows
 | 
			
		||||
fg("FloatBorder", blue)
 | 
			
		||||
bg("NormalFloat", one_bg)
 | 
			
		||||
bg("NormalFloat", darker_black)
 | 
			
		||||
 | 
			
		||||
-- Pmenu
 | 
			
		||||
bg("Pmenu", one_bg)
 | 
			
		||||
| 
						 | 
				
			
			@ -83,32 +83,21 @@ fg("DashboardHeader", grey_fg)
 | 
			
		|||
fg("DashboardShortcut", grey_fg)
 | 
			
		||||
 | 
			
		||||
-- Git signs
 | 
			
		||||
fg_bg("DiffAdd", nord_blue, "none")
 | 
			
		||||
fg_bg("DiffChange", grey_fg, "none")
 | 
			
		||||
fg_bg("DiffModified", nord_blue, "none")
 | 
			
		||||
fg_bg("DiffAdd", blue, "NONE")
 | 
			
		||||
fg_bg("DiffChange", grey_fg, "NONE")
 | 
			
		||||
fg_bg("DiffChangeDelete", red, "NONE")
 | 
			
		||||
fg_bg("DiffModified", red, "NONE")
 | 
			
		||||
fg_bg("DiffDelete", red, "NONE")
 | 
			
		||||
 | 
			
		||||
-- Indent blankline plugin
 | 
			
		||||
fg("IndentBlanklineChar", line)
 | 
			
		||||
 | 
			
		||||
-- ]]
 | 
			
		||||
-- Lsp diagnostics
 | 
			
		||||
 | 
			
		||||
-- [[ LspDiagnostics
 | 
			
		||||
 | 
			
		||||
-- Errors
 | 
			
		||||
fg("LspDiagnosticsSignError", red)
 | 
			
		||||
fg("LspDiagnosticsSignWarning", yellow)
 | 
			
		||||
fg("LspDiagnosticsVirtualTextError", red)
 | 
			
		||||
fg("LspDiagnosticsVirtualTextWarning", yellow)
 | 
			
		||||
 | 
			
		||||
-- Info
 | 
			
		||||
fg("LspDiagnosticsSignInformation", green)
 | 
			
		||||
fg("LspDiagnosticsVirtualTextInformation", green)
 | 
			
		||||
 | 
			
		||||
-- Hints
 | 
			
		||||
fg("LspDiagnosticsSignHint", purple)
 | 
			
		||||
fg("LspDiagnosticsVirtualTextHint", purple)
 | 
			
		||||
 | 
			
		||||
-- ]]
 | 
			
		||||
fg("DiagnosticHint", purple)
 | 
			
		||||
fg("DiagnosticError", red)
 | 
			
		||||
fg("DiagnosticWarn", yellow)
 | 
			
		||||
fg("DiagnosticInformation", green)
 | 
			
		||||
 | 
			
		||||
-- NvimTree
 | 
			
		||||
fg("NvimTreeEmptyFolderName", blue)
 | 
			
		||||
| 
						 | 
				
			
			@ -126,19 +115,59 @@ fg("NvimTreeVertSplit", darker_black)
 | 
			
		|||
bg("NvimTreeVertSplit", darker_black)
 | 
			
		||||
fg_bg("NvimTreeWindowPicker", red, black2)
 | 
			
		||||
 | 
			
		||||
-- Telescope
 | 
			
		||||
fg_bg("TelescopeBorder", darker_black, darker_black)
 | 
			
		||||
fg_bg("TelescopePromptBorder", black2, black2)
 | 
			
		||||
 | 
			
		||||
fg_bg("TelescopePromptNormal", white, black2)
 | 
			
		||||
fg_bg("TelescopePromptPrefix", red, black2)
 | 
			
		||||
 | 
			
		||||
bg("TelescopeNormal", darker_black)
 | 
			
		||||
 | 
			
		||||
fg_bg("TelescopePreviewTitle", black, green)
 | 
			
		||||
fg_bg("TelescopePromptTitle", black, red)
 | 
			
		||||
fg_bg("TelescopeResultsTitle", darker_black, darker_black)
 | 
			
		||||
 | 
			
		||||
bg("TelescopeSelection", black2)
 | 
			
		||||
 | 
			
		||||
-- keybinds cheatsheet
 | 
			
		||||
 | 
			
		||||
fg_bg("CheatsheetBorder", black, black)
 | 
			
		||||
bg("CheatsheetSectionContent", black)
 | 
			
		||||
fg("CheatsheetHeading", white)
 | 
			
		||||
 | 
			
		||||
local section_title_colors = {
 | 
			
		||||
   white,
 | 
			
		||||
   blue,
 | 
			
		||||
   red,
 | 
			
		||||
   green,
 | 
			
		||||
   yellow,
 | 
			
		||||
   purple,
 | 
			
		||||
   orange,
 | 
			
		||||
}
 | 
			
		||||
for i, color in ipairs(section_title_colors) do
 | 
			
		||||
   vim.cmd("highlight CheatsheetTitle" .. i .. " guibg = " .. color .. " guifg=" .. black)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Disable some highlight in nvim tree if transparency enabled
 | 
			
		||||
if ui.transparency then
 | 
			
		||||
   bg("NormalFloat", "NONE")
 | 
			
		||||
   bg("NvimTreeNormal", "NONE")
 | 
			
		||||
   bg("NvimTreeNormalNC", "NONE")
 | 
			
		||||
   bg("NvimTreeStatusLineNC", "NONE")
 | 
			
		||||
   bg("NvimTreeVertSplit", "NONE")
 | 
			
		||||
   fg("NvimTreeVertSplit", grey)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Telescope
 | 
			
		||||
fg("TelescopeBorder", one_bg)
 | 
			
		||||
fg_bg("TelescopePreviewTitle", green, one_bg)
 | 
			
		||||
fg_bg("TelescopePromptTitle", blue, one_bg)
 | 
			
		||||
fg_bg("TelescopeResultsTitle", red, one_bg)
 | 
			
		||||
   -- telescope
 | 
			
		||||
   bg("TelescopeBorder", "NONE")
 | 
			
		||||
   bg("TelescopePrompt", "NONE")
 | 
			
		||||
   bg("TelescopeResults", "NONE")
 | 
			
		||||
   bg("TelescopePromptBorder", "NONE")
 | 
			
		||||
   bg("TelescopePromptNormal", "NONE")
 | 
			
		||||
   bg("TelescopeNormal", "NONE")
 | 
			
		||||
   bg("TelescopePromptPrefix", "NONE")
 | 
			
		||||
   fg("TelescopeBorder", one_bg)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
if #override ~= 0 then
 | 
			
		||||
   require(override)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,9 +19,7 @@ M.init = function(theme)
 | 
			
		|||
      package.loaded["colors.highlights" or false] = nil
 | 
			
		||||
      -- then load the highlights
 | 
			
		||||
      require "colors.highlights"
 | 
			
		||||
   else
 | 
			
		||||
      return false
 | 
			
		||||
   end
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- returns a table of colors for givem or current theme
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,22 +0,0 @@
 | 
			
		|||
local function isModuleAvailable(name)
 | 
			
		||||
   if package.loaded[name] then
 | 
			
		||||
      return true
 | 
			
		||||
   else
 | 
			
		||||
      for _, searcher in ipairs(package.searchers or package.loaders) do
 | 
			
		||||
         local loader = searcher(name)
 | 
			
		||||
         if type(loader) == "function" then
 | 
			
		||||
            package.preload[name] = loader
 | 
			
		||||
            return true
 | 
			
		||||
         end
 | 
			
		||||
      end
 | 
			
		||||
      return false
 | 
			
		||||
   end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local loadIfExists = function(module)
 | 
			
		||||
   if isModuleAvailable(module) then
 | 
			
		||||
      require(module)
 | 
			
		||||
   end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
loadIfExists "custom"
 | 
			
		||||
| 
						 | 
				
			
			@ -2,11 +2,11 @@
 | 
			
		|||
-- use custom/chadrc.lua instead
 | 
			
		||||
 | 
			
		||||
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 +16,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 <Tab> 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 +33,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 `<leader> + 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 <ESC> 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 +88,47 @@ 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 = "<leader>x",
 | 
			
		||||
   copy_whole_file = "<C-a>", -- copy all contents of the current buffer
 | 
			
		||||
   line_number_toggle = "<leader>n", -- show or hide line number
 | 
			
		||||
   new_buffer = "<S-t>", -- open a new buffer
 | 
			
		||||
   new_tab = "<C-t>b", -- open a new vim tab
 | 
			
		||||
   save_file = "<C-s>", -- save file using :w
 | 
			
		||||
   theme_toggler = "<leader>tt", -- for theme toggler, see in ui.theme_toggler
 | 
			
		||||
   -- custom = {}, -- custom user mappings
 | 
			
		||||
 | 
			
		||||
   misc = {
 | 
			
		||||
      cheatsheet = "<leader>ch",
 | 
			
		||||
      close_buffer = "<leader>x",
 | 
			
		||||
      copy_whole_file = "<C-a>", -- copy all contents of current buffer
 | 
			
		||||
      line_number_toggle = "<leader>n", -- toggle line number
 | 
			
		||||
      update_nvchad = "<leader>uu",
 | 
			
		||||
      new_buffer = "<S-t>",
 | 
			
		||||
      new_tab = "<C-t>b",
 | 
			
		||||
      save_file = "<C-s>", -- save file using :w
 | 
			
		||||
      theme_toggler = "<leader>tt", -- see in ui.theme_toggler
 | 
			
		||||
   },
 | 
			
		||||
 | 
			
		||||
   -- navigation in insert mode, only if enabled in options
 | 
			
		||||
 | 
			
		||||
   insert_nav = {
 | 
			
		||||
      backward = "<C-h>",
 | 
			
		||||
      end_of_line = "<C-e>",
 | 
			
		||||
| 
						 | 
				
			
			@ -127,60 +137,63 @@ M.mappings = {
 | 
			
		|||
      prev_line = "<C-j>",
 | 
			
		||||
      beginning_of_line = "<C-a>",
 | 
			
		||||
   },
 | 
			
		||||
   --better window movement
 | 
			
		||||
 | 
			
		||||
   -- better window movement
 | 
			
		||||
   window_nav = {
 | 
			
		||||
      moveLeft = "<C-h>",
 | 
			
		||||
      moveRight = "<C-l>",
 | 
			
		||||
      moveUp = "<C-k>",
 | 
			
		||||
      moveDown = "<C-j>",
 | 
			
		||||
   },
 | 
			
		||||
 | 
			
		||||
   -- 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 = "<leader>W",
 | 
			
		||||
      -- below three are for spawning terminals
 | 
			
		||||
 | 
			
		||||
      -- spawn terminals
 | 
			
		||||
      new_horizontal = "<leader>h",
 | 
			
		||||
      new_vertical = "<leader>v",
 | 
			
		||||
      new_window = "<leader>w",
 | 
			
		||||
   },
 | 
			
		||||
   -- update nvchad from nvchad, chadness 101
 | 
			
		||||
   update_nvchad = "<leader>uu",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- all plugins related mappings
 | 
			
		||||
-- plugins related mappings
 | 
			
		||||
 | 
			
		||||
M.mappings.plugins = {
 | 
			
		||||
   -- list open buffers up the top, easy switching too
 | 
			
		||||
   bufferline = {
 | 
			
		||||
      next_buffer = "<TAB>", -- next buffer
 | 
			
		||||
      prev_buffer = "<S-Tab>", -- previous buffer
 | 
			
		||||
      next_buffer = "<TAB>",
 | 
			
		||||
      prev_buffer = "<S-Tab>",
 | 
			
		||||
   },
 | 
			
		||||
   -- easily (un)comment code, language aware
 | 
			
		||||
   comment = {
 | 
			
		||||
      toggle = "<leader>/", -- toggle comment (works on multiple lines)
 | 
			
		||||
      toggle = "<leader>/",
 | 
			
		||||
   },
 | 
			
		||||
   -- NeoVim 'home screen' on open
 | 
			
		||||
 | 
			
		||||
   dashboard = {
 | 
			
		||||
      bookmarks = "<leader>bm",
 | 
			
		||||
      new_file = "<leader>fn", -- basically create a new buffer
 | 
			
		||||
      open = "<leader>db", -- open dashboard
 | 
			
		||||
      session_load = "<leader>l", -- load a saved session
 | 
			
		||||
      session_save = "<leader>s", -- save a session
 | 
			
		||||
      session_load = "<leader>l",
 | 
			
		||||
      session_save = "<leader>s",
 | 
			
		||||
   },
 | 
			
		||||
 | 
			
		||||
   -- map to <ESC> with no lag
 | 
			
		||||
   better_escape = { -- <ESC> will still work
 | 
			
		||||
      esc_insertmode = { "jk" }, -- multiple mappings allowed
 | 
			
		||||
   },
 | 
			
		||||
   -- file explorer/tree
 | 
			
		||||
 | 
			
		||||
   nvimtree = {
 | 
			
		||||
      toggle = "<C-n>",
 | 
			
		||||
      focus = "<leader>e",
 | 
			
		||||
   },
 | 
			
		||||
   -- multitool for finding & picking things
 | 
			
		||||
 | 
			
		||||
   telescope = {
 | 
			
		||||
      buffers = "<leader>fb",
 | 
			
		||||
      find_files = "<leader>ff",
 | 
			
		||||
| 
						 | 
				
			
			@ -191,7 +204,7 @@ M.mappings.plugins = {
 | 
			
		|||
      live_grep = "<leader>fw",
 | 
			
		||||
      oldfiles = "<leader>fo",
 | 
			
		||||
      themes = "<leader>th", -- NvChad theme picker
 | 
			
		||||
      -- media previews within telescope finders
 | 
			
		||||
 | 
			
		||||
      telescope_media = {
 | 
			
		||||
         media_files = "<leader>fp",
 | 
			
		||||
      },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
local hooks, overrides, M = {}, {}, {}
 | 
			
		||||
local hooks, M = {}, {}
 | 
			
		||||
 | 
			
		||||
local allowed_hooks = {
 | 
			
		||||
   "install_plugins",
 | 
			
		||||
   "setup_mappings",
 | 
			
		||||
| 
						 | 
				
			
			@ -11,13 +12,11 @@ local function has_value(tab, val)
 | 
			
		|||
         return true
 | 
			
		||||
      end
 | 
			
		||||
   end
 | 
			
		||||
 | 
			
		||||
   return false
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
M.add = function(name, fn)
 | 
			
		||||
   if not (has_value(allowed_hooks, name)) then
 | 
			
		||||
      error("Custom lua uses unallowed hook " .. name)
 | 
			
		||||
      print("Custom lua uses unallowed hook " .. name)
 | 
			
		||||
   end
 | 
			
		||||
   if hooks[name] == nil then
 | 
			
		||||
      hooks[name] = {}
 | 
			
		||||
| 
						 | 
				
			
			@ -26,43 +25,11 @@ M.add = function(name, fn)
 | 
			
		|||
end
 | 
			
		||||
 | 
			
		||||
M.run = function(name, args)
 | 
			
		||||
   if hooks[name] == nil then
 | 
			
		||||
      return
 | 
			
		||||
   end
 | 
			
		||||
 | 
			
		||||
   for _, hook in pairs(hooks[name]) do
 | 
			
		||||
      hook(args)
 | 
			
		||||
   end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
M.createOverrides = function(module)
 | 
			
		||||
   local O = {}
 | 
			
		||||
 | 
			
		||||
   O.get = function(name, default)
 | 
			
		||||
      local current = default
 | 
			
		||||
      if overrides[module] and overrides[module][name] then
 | 
			
		||||
         if type(overrides[module][name]) == "function" then
 | 
			
		||||
            current = overrides[module][name]
 | 
			
		||||
         elseif type(overrides[module][name]) == "table" then
 | 
			
		||||
            for _, override in pairs(overrides[module][name]) do
 | 
			
		||||
               current = override(current)
 | 
			
		||||
            end
 | 
			
		||||
         end
 | 
			
		||||
   if hooks[name] ~= nil then
 | 
			
		||||
      for _, hook in pairs(hooks[name]) do
 | 
			
		||||
         hook(args)
 | 
			
		||||
      end
 | 
			
		||||
      return current
 | 
			
		||||
   end
 | 
			
		||||
 | 
			
		||||
   return O
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
M.override = function(module, name, overwrite)
 | 
			
		||||
   if overrides[module] == nil then
 | 
			
		||||
      overrides[module] = {}
 | 
			
		||||
   end
 | 
			
		||||
   if overrides[module][name] == nil then
 | 
			
		||||
      overrides[module][name] = {}
 | 
			
		||||
   end
 | 
			
		||||
   table.insert(overrides[module][name], overwrite)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
return M
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,20 +0,0 @@
 | 
			
		|||
local core_modules = {
 | 
			
		||||
   "core.custom",
 | 
			
		||||
   "core.options",
 | 
			
		||||
   "core.autocmds",
 | 
			
		||||
   "core.mappings",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
local hooks = require "core.hooks"
 | 
			
		||||
 | 
			
		||||
for _, module in ipairs(core_modules) do
 | 
			
		||||
   local ok, err = pcall(require, module)
 | 
			
		||||
   if not ok then
 | 
			
		||||
      error("Error loading " .. module .. "\n\n" .. err)
 | 
			
		||||
   end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- set all the non plugin mappings
 | 
			
		||||
require("core.mappings").misc()
 | 
			
		||||
 | 
			
		||||
hooks.run "ready"
 | 
			
		||||
| 
						 | 
				
			
			@ -29,6 +29,11 @@ M.misc = function()
 | 
			
		|||
 | 
			
		||||
      -- use ESC to turn off search highlighting
 | 
			
		||||
      map("n", "<Esc>", ":noh <CR>")
 | 
			
		||||
 | 
			
		||||
      -- center cursor when moving (goto_definition)
 | 
			
		||||
 | 
			
		||||
      -- yank from current cursor to end of line
 | 
			
		||||
      map("n", "Y", "yg$")
 | 
			
		||||
   end
 | 
			
		||||
 | 
			
		||||
   local function optional_mappings()
 | 
			
		||||
| 
						 | 
				
			
			@ -68,19 +73,20 @@ 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) <CR>"
 | 
			
		||||
         )
 | 
			
		||||
      end
 | 
			
		||||
   end
 | 
			
		||||
 | 
			
		||||
   local function required_mappings()
 | 
			
		||||
      map("n", maps.close_buffer, ":lua require('core.utils').close_buffer() <CR>") -- close  buffer
 | 
			
		||||
      map("n", maps.copy_whole_file, ":%y+ <CR>") -- copy whole file content
 | 
			
		||||
      map("n", maps.new_buffer, ":enew <CR>") -- new buffer
 | 
			
		||||
      map("n", maps.new_tab, ":tabnew <CR>") -- new tabs
 | 
			
		||||
      map("n", maps.line_number_toggle, ":set nu! <CR>") -- toggle numbers
 | 
			
		||||
      map("n", maps.save_file, ":w <CR>") -- ctrl + s to save file
 | 
			
		||||
      map("n", maps.misc.cheatsheet, ":lua require('nvchad.cheatsheet').show() <CR>") -- show keybinds
 | 
			
		||||
      map("n", maps.misc.close_buffer, ":lua require('core.utils').close_buffer() <CR>") -- close  buffer
 | 
			
		||||
      map("n", maps.misc.copy_whole_file, ":%y+ <CR>") -- copy whole file content
 | 
			
		||||
      map("n", maps.misc.new_buffer, ":enew <CR>") -- new buffer
 | 
			
		||||
      map("n", maps.misc.new_tab, ":tabnew <CR>") -- new tabs
 | 
			
		||||
      map("n", maps.misc.line_number_toggle, ":set nu! <CR>") -- toggle numbers
 | 
			
		||||
      map("n", maps.misc.save_file, ":w <CR>") -- ctrl + s to save file
 | 
			
		||||
 | 
			
		||||
      -- terminal mappings --
 | 
			
		||||
      local term_maps = maps.terminal
 | 
			
		||||
| 
						 | 
				
			
			@ -107,10 +113,7 @@ M.misc = function()
 | 
			
		|||
 | 
			
		||||
      -- add NvChadUpdate command and mapping
 | 
			
		||||
      cmd "silent! command! NvChadUpdate lua require('nvchad').update_nvchad()"
 | 
			
		||||
      map("n", maps.update_nvchad, ":NvChadUpdate <CR>")
 | 
			
		||||
 | 
			
		||||
      -- add ChadReload command and maping
 | 
			
		||||
      -- cmd "silent! command! NvChadReload lua require('nvchad').reload_config()"
 | 
			
		||||
      map("n", maps.misc.update_nvchad, ":NvChadUpdate <CR>")
 | 
			
		||||
   end
 | 
			
		||||
 | 
			
		||||
   non_config_mappings()
 | 
			
		||||
| 
						 | 
				
			
			@ -153,7 +156,7 @@ M.telescope = function()
 | 
			
		|||
   local m = plugin_maps.telescope
 | 
			
		||||
 | 
			
		||||
   map("n", m.buffers, ":Telescope buffers <CR>")
 | 
			
		||||
   map("n", m.find_files, ":Telescope find_files <CR>")
 | 
			
		||||
   map("n", m.find_files, ":Telescope find_files no_ignore=true <CR>")
 | 
			
		||||
   map("n", m.find_hiddenfiles, ":Telescope find_files hidden=true <CR>")
 | 
			
		||||
   map("n", m.git_commits, ":Telescope git_commits <CR>")
 | 
			
		||||
   map("n", m.git_status, ":Telescope git_status <CR>")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,9 +1,6 @@
 | 
			
		|||
local opt = vim.opt
 | 
			
		||||
local g = vim.g
 | 
			
		||||
 | 
			
		||||
-- export user config as a global varibale
 | 
			
		||||
g.nvchad_user_config = "chadrc"
 | 
			
		||||
 | 
			
		||||
local options = require("core.utils").load_config().options
 | 
			
		||||
 | 
			
		||||
opt.title = true
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -132,63 +132,26 @@ M.hide_statusline = function()
 | 
			
		|||
   if vim.tbl_contains(hidden, buftype) then
 | 
			
		||||
      api.nvim_set_option("laststatus", 0)
 | 
			
		||||
      return
 | 
			
		||||
   else
 | 
			
		||||
      api.nvim_set_option("laststatus", 2)
 | 
			
		||||
   end
 | 
			
		||||
 | 
			
		||||
   api.nvim_set_option("laststatus", 2)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- load config
 | 
			
		||||
-- 1st arg = boolean - whether to force reload
 | 
			
		||||
-- Modifies _G._NVCHAD_CONFIG global variable
 | 
			
		||||
M.load_config = function(reload)
 | 
			
		||||
   -- only do the stuff below one time, otherwise just return the set config
 | 
			
		||||
   if _G._NVCHAD_CONFIG_CONTENTS ~= nil and not (reload or false) then
 | 
			
		||||
      return _G._NVCHAD_CONFIG_CONTENTS
 | 
			
		||||
M.load_config = function()
 | 
			
		||||
   local conf = require "core.default_config"
 | 
			
		||||
 | 
			
		||||
   local chadrcExists, _ = pcall(require, "custom.chadrc")
 | 
			
		||||
 | 
			
		||||
   -- if chadrc exists , then merge its table into the default config's
 | 
			
		||||
 | 
			
		||||
   if chadrcExists then
 | 
			
		||||
      local change = require "custom.chadrc"
 | 
			
		||||
      conf = vim.tbl_deep_extend("force", conf, change)
 | 
			
		||||
      return conf
 | 
			
		||||
   end
 | 
			
		||||
 | 
			
		||||
   -- these are the table value which will be always prioritiezed to take user config value
 | 
			
		||||
   local to_replace = {
 | 
			
		||||
      "['mappings']['plugins']['esc_insertmode']",
 | 
			
		||||
      "['mappings']['terminal']['esc_termmode']",
 | 
			
		||||
      "['mappings']['terminal']['esc_hide_termmode']",
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   local default_config = "core.default_config"
 | 
			
		||||
   local config_name = vim.g.nvchad_user_config or "chadrc"
 | 
			
		||||
   local config_file = vim.fn.stdpath "config" .. "/lua/custom/" .. config_name .. ".lua"
 | 
			
		||||
 | 
			
		||||
   -- unload the modules if force reload
 | 
			
		||||
   if reload then
 | 
			
		||||
      package.loaded[default_config or false] = nil
 | 
			
		||||
      package.loaded[config_name or false] = nil
 | 
			
		||||
   end
 | 
			
		||||
 | 
			
		||||
   -- don't enclose in pcall, it better break when default config is faulty
 | 
			
		||||
   _G._NVCHAD_CONFIG_CONTENTS = require(default_config)
 | 
			
		||||
 | 
			
		||||
   -- user config is not required to run nvchad but a optional
 | 
			
		||||
   -- Make sure the config doesn't break the whole system if user config is not present or in bad state or not a table
 | 
			
		||||
   -- 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)
 | 
			
		||||
      if present then
 | 
			
		||||
         -- make sure the returned value is table
 | 
			
		||||
         if type(config) == "table" then
 | 
			
		||||
            -- data = require(config_name)
 | 
			
		||||
            _G._NVCHAD_CONFIG_CONTENTS = require("core.utils").merge_table(
 | 
			
		||||
               _G._NVCHAD_CONFIG_CONTENTS,
 | 
			
		||||
               config,
 | 
			
		||||
               to_replace
 | 
			
		||||
            )
 | 
			
		||||
         else
 | 
			
		||||
            print("Warning: " .. config_name .. " sourced successfully but did not return a lua table.")
 | 
			
		||||
         end
 | 
			
		||||
      else
 | 
			
		||||
         print("Warning: " .. config_file .. " is present but sourcing failed.")
 | 
			
		||||
      end
 | 
			
		||||
   end
 | 
			
		||||
   return _G._NVCHAD_CONFIG_CONTENTS
 | 
			
		||||
   -- or load default config
 | 
			
		||||
   return conf
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
M.map = function(mode, keys, cmd, opt)
 | 
			
		||||
| 
						 | 
				
			
			@ -239,88 +202,6 @@ M.map = function(mode, keys, cmd, opt)
 | 
			
		|||
   map_wrapper(mode, keys, cmd, options)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Base code: https://gist.github.com/revolucas/184aec7998a6be5d2f61b984fac1d7f7
 | 
			
		||||
-- Changes over it: preserving table 1 contents and also update with table b, without duplicating
 | 
			
		||||
-- 1st arg - base table
 | 
			
		||||
-- 2nd arg - table to merge
 | 
			
		||||
-- 3rg arg - list of nodes as a table, if the node is found replace the from table2 to result, rather than adding the value
 | 
			
		||||
-- e.g: merge_table(t1, t2, { ['mappings']['plugins']['bufferline'] })
 | 
			
		||||
M.merge_table = function(into, from, nodes_to_replace)
 | 
			
		||||
   -- make sure both are table
 | 
			
		||||
   if type(into) ~= "table" or type(from) ~= "table" then
 | 
			
		||||
      return into
 | 
			
		||||
   end
 | 
			
		||||
 | 
			
		||||
   local stack, seen = {}, {}
 | 
			
		||||
   local table1, table2 = into, from
 | 
			
		||||
 | 
			
		||||
   if type(nodes_to_replace) == "table" then
 | 
			
		||||
      -- function that will be executed with loadstring
 | 
			
		||||
      local replace_fn = function(node)
 | 
			
		||||
         local base_fn = [[
 | 
			
		||||
return function(table1, table2)
 | 
			
		||||
   local t1, t2 = table1_node or false , table2_node or false
 | 
			
		||||
   if t1 and t2 then
 | 
			
		||||
      table1_node = table2_node
 | 
			
		||||
   end
 | 
			
		||||
   return table1
 | 
			
		||||
end]]
 | 
			
		||||
 | 
			
		||||
         -- replace the _node in base_fn to actual given node value
 | 
			
		||||
         local fn = base_fn:gsub("_node", node)
 | 
			
		||||
         -- return the function created from the string base_fn
 | 
			
		||||
         return loadstring(fn)()(table1, table2)
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      for _, node in ipairs(nodes_to_replace) do
 | 
			
		||||
         -- pcall() is a poor workaround for if "['mappings']['plugins']['esc_insertmode']" 'plugins' sub-table does not exist
 | 
			
		||||
         local ok, result = pcall(replace_fn, node)
 | 
			
		||||
         if ok then
 | 
			
		||||
            -- if the node is found then replace
 | 
			
		||||
            table1 = result
 | 
			
		||||
         end
 | 
			
		||||
      end
 | 
			
		||||
   end
 | 
			
		||||
 | 
			
		||||
   while true do
 | 
			
		||||
      for k, v in pairs(table2) do
 | 
			
		||||
         if type(v) == "table" and type(table1[k]) == "table" then
 | 
			
		||||
            table.insert(stack, { table1[k], table2[k] })
 | 
			
		||||
         else
 | 
			
		||||
            local present = seen[v] or false
 | 
			
		||||
            if not present then
 | 
			
		||||
               if type(k) == "number" then
 | 
			
		||||
                  -- add the value to seen table until value is found
 | 
			
		||||
                  -- only do when key is number we just want to append to subtables
 | 
			
		||||
                  -- todo: maybe improve this
 | 
			
		||||
 | 
			
		||||
                  for _, value in pairs(table1) do
 | 
			
		||||
                     if value == v then
 | 
			
		||||
                        present = true
 | 
			
		||||
                        break
 | 
			
		||||
                     end
 | 
			
		||||
                  end
 | 
			
		||||
                  seen[v] = true
 | 
			
		||||
                  if not present then
 | 
			
		||||
                     table1[#table1 + 1] = v
 | 
			
		||||
                  end
 | 
			
		||||
               else
 | 
			
		||||
                  table1[k] = v
 | 
			
		||||
               end
 | 
			
		||||
            end
 | 
			
		||||
         end
 | 
			
		||||
      end
 | 
			
		||||
      if #stack > 0 then
 | 
			
		||||
         local t = stack[#stack]
 | 
			
		||||
         table1, table2 = t[1], t[2]
 | 
			
		||||
         stack[#stack] = nil
 | 
			
		||||
      else
 | 
			
		||||
         break
 | 
			
		||||
      end
 | 
			
		||||
   end
 | 
			
		||||
   return into
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- load plugin after entering vim ui
 | 
			
		||||
M.packer_lazy_load = function(plugin, timer)
 | 
			
		||||
   if plugin then
 | 
			
		||||
| 
						 | 
				
			
			@ -356,4 +237,27 @@ M.fg_bg = function(group, fgcol, bgcol)
 | 
			
		|||
   cmd("hi " .. group .. " guifg=" .. fgcol .. " guibg=" .. bgcol)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Override default config of a plugin based on the path provided in the chadrc
 | 
			
		||||
 | 
			
		||||
-- FUNCTION: override_req, use `chadrc` plugin config override if present
 | 
			
		||||
-- name = name inside `default_config` / `chadrc`
 | 
			
		||||
-- default_req = run this if 'name' does not exist in `default_config` / `chadrc`
 | 
			
		||||
-- if override or default_req start with `(`, then strip that and assume override calls a function, not a whole file
 | 
			
		||||
M.override_req = function(name, default_req)
 | 
			
		||||
   local override = require("core.utils").load_config().plugins.default_plugin_config_replace[name]
 | 
			
		||||
   local result = default_req
 | 
			
		||||
 | 
			
		||||
   if override ~= nil then
 | 
			
		||||
      result = override
 | 
			
		||||
   end
 | 
			
		||||
 | 
			
		||||
   if string.match(result, "^%(") then
 | 
			
		||||
      result = result:sub(2)
 | 
			
		||||
      result = result:gsub("%)%.", "').", 1)
 | 
			
		||||
      return "require('" .. result
 | 
			
		||||
   end
 | 
			
		||||
 | 
			
		||||
   return "require('" .. result .. "')"
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
return M
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,39 +0,0 @@
 | 
			
		|||
-- IMPORTANT NOTE : This is the user config, can be edited. Will be preserved if updated with internal updater
 | 
			
		||||
-- This file is for NvChad options & tools, custom settings are split between here and 'lua/custom/init.lua'
 | 
			
		||||
 | 
			
		||||
local M = {}
 | 
			
		||||
M.options, M.ui, M.mappings, M.plugins = {}, {}, {}, {}
 | 
			
		||||
 | 
			
		||||
-- NOTE: To use this, make a copy with `cp example_chadrc.lua chadrc.lua`
 | 
			
		||||
 | 
			
		||||
--------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
-- To use this file, copy the structure of `core/default_config.lua`,
 | 
			
		||||
-- examples of setting relative number & changing theme:
 | 
			
		||||
 | 
			
		||||
-- M.options = {
 | 
			
		||||
--    relativenumber = true,
 | 
			
		||||
-- }
 | 
			
		||||
 | 
			
		||||
-- M.ui = {
 | 
			
		||||
--   theme = "nord"
 | 
			
		||||
-- }
 | 
			
		||||
 | 
			
		||||
-- NvChad included plugin options & overrides
 | 
			
		||||
M.plugins = {
 | 
			
		||||
   options = {
 | 
			
		||||
      --   lspconfig = {
 | 
			
		||||
      --    path of file containing setups of different lsps (ex : "custom.plugins.lspconfig"), read the docs for more info
 | 
			
		||||
      --    setup_lspconf = "",
 | 
			
		||||
      --   },
 | 
			
		||||
   },
 | 
			
		||||
   -- To change the Packer `config` of a plugin that comes with NvChad,
 | 
			
		||||
   -- add a table entry below matching the plugin github name
 | 
			
		||||
   --              '-' -> '_', remove any '.lua', '.nvim' extensions
 | 
			
		||||
   -- this string will be called in a `require`
 | 
			
		||||
   --              use "(custom.configs).my_func()" to call a function
 | 
			
		||||
   --              use "custom.blankline" to call a file
 | 
			
		||||
   default_plugin_config_replace = {},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
return M
 | 
			
		||||
| 
						 | 
				
			
			@ -1,44 +0,0 @@
 | 
			
		|||
-- This is where your custom modules and plugins go.
 | 
			
		||||
-- See the wiki for a guide on how to extend NvChad
 | 
			
		||||
 | 
			
		||||
local hooks = require "core.hooks"
 | 
			
		||||
 | 
			
		||||
-- NOTE: To use this, make a copy with `cp example_init.lua init.lua`
 | 
			
		||||
 | 
			
		||||
--------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
-- To modify packaged plugin configs, use the overrides functionality
 | 
			
		||||
-- if the override does not exist in the plugin config, make or request a PR,
 | 
			
		||||
-- or you can override the whole plugin config with 'chadrc' -> M.plugins.default_plugin_config_replace{}
 | 
			
		||||
-- this will run your config instead of the NvChad config for the given plugin
 | 
			
		||||
 | 
			
		||||
-- hooks.override("lsp", "publish_diagnostics", function(current)
 | 
			
		||||
--   current.virtual_text = false;
 | 
			
		||||
--   return current;
 | 
			
		||||
-- end)
 | 
			
		||||
 | 
			
		||||
-- To add new mappings, use the "setup_mappings" hook,
 | 
			
		||||
-- you can set one or many mappings
 | 
			
		||||
-- example below:
 | 
			
		||||
 | 
			
		||||
-- hooks.add("setup_mappings", function(map)
 | 
			
		||||
--    map("n", "<leader>cc", "gg0vG$d", opt) -- example to delete the buffer
 | 
			
		||||
--    .... many more mappings ....
 | 
			
		||||
-- end)
 | 
			
		||||
 | 
			
		||||
-- To add new plugins, use the "install_plugin" hook,
 | 
			
		||||
-- NOTE: we heavily suggest using Packer's lazy loading (with the 'event' field)
 | 
			
		||||
-- see: https://github.com/wbthomason/packer.nvim
 | 
			
		||||
-- examples below:
 | 
			
		||||
 | 
			
		||||
-- hooks.add("install_plugins", function(use)
 | 
			
		||||
--    use {
 | 
			
		||||
--       "max397574/better-escape.nvim",
 | 
			
		||||
--       event = "InsertEnter",
 | 
			
		||||
--    }
 | 
			
		||||
-- end)
 | 
			
		||||
 | 
			
		||||
-- alternatively, put this in a sub-folder like "lua/custom/plugins/mkdir"
 | 
			
		||||
-- then source it with
 | 
			
		||||
 | 
			
		||||
-- require "custom.plugins.mkdir"
 | 
			
		||||
| 
						 | 
				
			
			@ -10,7 +10,6 @@ bufferline.setup {
 | 
			
		|||
      offsets = { { filetype = "NvimTree", text = "", padding = 1 } },
 | 
			
		||||
      buffer_close_icon = "",
 | 
			
		||||
      modified_icon = "",
 | 
			
		||||
      -- close_icon = "%@NvChad_bufferline_quitvim@%X",
 | 
			
		||||
      close_icon = "",
 | 
			
		||||
      show_close_icon = true,
 | 
			
		||||
      left_trunc_marker = "",
 | 
			
		||||
| 
						 | 
				
			
			@ -24,7 +23,7 @@ bufferline.setup {
 | 
			
		|||
      show_buffer_close_icons = true,
 | 
			
		||||
      separator_style = "thin",
 | 
			
		||||
      always_show_bufferline = true,
 | 
			
		||||
      diagnostics = false, -- "or nvim_lsp"
 | 
			
		||||
      diagnostics = false,
 | 
			
		||||
      custom_filter = function(buf_number)
 | 
			
		||||
         -- Func to filter out our managed/persistent split terms
 | 
			
		||||
         local present_type, type = pcall(function()
 | 
			
		||||
| 
						 | 
				
			
			@ -36,12 +35,11 @@ bufferline.setup {
 | 
			
		|||
               return false
 | 
			
		||||
            elseif type == "hori" then
 | 
			
		||||
               return false
 | 
			
		||||
            else
 | 
			
		||||
               return true
 | 
			
		||||
            end
 | 
			
		||||
         else
 | 
			
		||||
            return true
 | 
			
		||||
         end
 | 
			
		||||
 | 
			
		||||
         return true
 | 
			
		||||
      end,
 | 
			
		||||
   },
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -121,6 +119,7 @@ bufferline.setup {
 | 
			
		|||
         guifg = colors.black2,
 | 
			
		||||
         guibg = colors.black2,
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      -- tabs
 | 
			
		||||
      tab = {
 | 
			
		||||
         guifg = colors.light_grey,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,6 @@ end
 | 
			
		|||
 | 
			
		||||
vim.opt.completeopt = "menuone,noselect"
 | 
			
		||||
 | 
			
		||||
-- nvim-cmp setup
 | 
			
		||||
cmp.setup {
 | 
			
		||||
   snippet = {
 | 
			
		||||
      expand = function(args)
 | 
			
		||||
| 
						 | 
				
			
			@ -15,12 +14,8 @@ cmp.setup {
 | 
			
		|||
   },
 | 
			
		||||
   formatting = {
 | 
			
		||||
      format = function(entry, vim_item)
 | 
			
		||||
         -- load lspkind icons
 | 
			
		||||
         vim_item.kind = string.format(
 | 
			
		||||
            "%s %s",
 | 
			
		||||
            require("plugins.configs.lspkind_icons").icons[vim_item.kind],
 | 
			
		||||
            vim_item.kind
 | 
			
		||||
         )
 | 
			
		||||
         local icons = require "plugins.configs.lspkind_icons"
 | 
			
		||||
         vim_item.kind = string.format("%s %s", icons[vim_item.kind], vim_item.kind)
 | 
			
		||||
 | 
			
		||||
         vim_item.menu = ({
 | 
			
		||||
            nvim_lsp = "[LSP]",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,34 +0,0 @@
 | 
			
		|||
local present, gitsigns = pcall(require, "gitsigns")
 | 
			
		||||
if not present then
 | 
			
		||||
   return
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
gitsigns.setup {
 | 
			
		||||
   keymaps = {
 | 
			
		||||
      -- Default keymap options
 | 
			
		||||
      buffer = true,
 | 
			
		||||
      noremap = true,
 | 
			
		||||
      ["n ]c"] = { expr = true, "&diff ? ']c' : '<cmd>lua require\"gitsigns\".next_hunk()<CR>'" },
 | 
			
		||||
      ["n [c"] = { expr = true, "&diff ? '[c' : '<cmd>lua require\"gitsigns\".prev_hunk()<CR>'" },
 | 
			
		||||
      ["n <leader>hs"] = '<cmd>lua require"gitsigns".stage_hunk()<CR>',
 | 
			
		||||
      ["n <leader>hu"] = '<cmd>lua require"gitsigns".undo_stage_hunk()<CR>',
 | 
			
		||||
      ["n <leader>hr"] = '<cmd>lua require"gitsigns".reset_hunk()<CR>',
 | 
			
		||||
      ["n <leader>hp"] = '<cmd>lua require"gitsigns".preview_hunk()<CR>',
 | 
			
		||||
      ["n <leader>hb"] = '<cmd>lua require"gitsigns".blame_line()<CR>',
 | 
			
		||||
   },
 | 
			
		||||
   numhl = false,
 | 
			
		||||
 | 
			
		||||
   sign_priority = 5,
 | 
			
		||||
   signs = {
 | 
			
		||||
      add = { hl = "DiffAdd", text = "│", numhl = "GitSignsAddNr" },
 | 
			
		||||
      change = { hl = "DiffChange", text = "│", numhl = "GitSignsChangeNr" },
 | 
			
		||||
      changedelete = { hl = "DiffChange", text = "~", numhl = "GitSignsChangeNr" },
 | 
			
		||||
      delete = { hl = "DiffDelete", text = "_", numhl = "GitSignsDeleteNr" },
 | 
			
		||||
      topdelete = { hl = "DiffDelete", text = "‾", numhl = "GitSignsDeleteNr" },
 | 
			
		||||
   },
 | 
			
		||||
 | 
			
		||||
   status_formatter = nil, -- Use default
 | 
			
		||||
   watch_gitdir = {
 | 
			
		||||
      interval = 100,
 | 
			
		||||
   },
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,5 +1,3 @@
 | 
			
		|||
local overrides = require("core.hooks").createOverrides "lsp"
 | 
			
		||||
 | 
			
		||||
local function on_attach(_, bufnr)
 | 
			
		||||
   local function buf_set_keymap(...)
 | 
			
		||||
      vim.api.nvim_buf_set_keymap(bufnr, ...)
 | 
			
		||||
| 
						 | 
				
			
			@ -52,52 +50,11 @@ capabilities.textDocument.completion.completionItem.resolveSupport = {
 | 
			
		|||
   },
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- replace the default lsp diagnostic symbols
 | 
			
		||||
local function lspSymbol(name, icon)
 | 
			
		||||
   vim.fn.sign_define("LspDiagnosticsSign" .. name, { text = icon, numhl = "LspDiagnosticsDefault" .. name })
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
lspSymbol("Error", "")
 | 
			
		||||
lspSymbol("Information", "")
 | 
			
		||||
lspSymbol("Hint", "")
 | 
			
		||||
lspSymbol("Warning", "")
 | 
			
		||||
 | 
			
		||||
local lsp_publish_diagnostics_options = overrides.get("publish_diagnostics", {
 | 
			
		||||
   virtual_text = {
 | 
			
		||||
      prefix = "",
 | 
			
		||||
      spacing = 0,
 | 
			
		||||
   },
 | 
			
		||||
   signs = true,
 | 
			
		||||
   underline = true,
 | 
			
		||||
   update_in_insert = false, -- update diagnostics insert mode
 | 
			
		||||
})
 | 
			
		||||
vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(
 | 
			
		||||
   vim.lsp.diagnostic.on_publish_diagnostics,
 | 
			
		||||
   lsp_publish_diagnostics_options
 | 
			
		||||
)
 | 
			
		||||
vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, {
 | 
			
		||||
   border = "single",
 | 
			
		||||
})
 | 
			
		||||
vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, {
 | 
			
		||||
   border = "single",
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- suppress error messages from lang servers
 | 
			
		||||
vim.notify = function(msg, log_level, _opts)
 | 
			
		||||
   if msg:match "exit code" then
 | 
			
		||||
      return
 | 
			
		||||
   end
 | 
			
		||||
   if log_level == vim.log.levels.ERROR then
 | 
			
		||||
      vim.api.nvim_err_writeln(msg)
 | 
			
		||||
   else
 | 
			
		||||
      vim.api.nvim_echo({ { msg } }, true, {})
 | 
			
		||||
   end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- requires a file containing user's lspconfigs
 | 
			
		||||
 | 
			
		||||
local addlsp_confs = require("core.utils").load_config().plugins.options.lspconfig.setup_lspconf
 | 
			
		||||
 | 
			
		||||
if #addlsp_confs ~= 0 then
 | 
			
		||||
   require(addlsp_confs).setup_lsp(on_attach, capabilities)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
require("plugins.configs.others").lsp_handlers()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,4 @@
 | 
			
		|||
local M = {}
 | 
			
		||||
 | 
			
		||||
M.icons = {
 | 
			
		||||
local icons = {
 | 
			
		||||
   Text = "",
 | 
			
		||||
   Method = "",
 | 
			
		||||
   Function = "",
 | 
			
		||||
| 
						 | 
				
			
			@ -28,4 +26,4 @@ M.icons = {
 | 
			
		|||
   TypeParameter = "",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
return M
 | 
			
		||||
return icons
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,25 +7,20 @@ end
 | 
			
		|||
 | 
			
		||||
local g = vim.g
 | 
			
		||||
 | 
			
		||||
vim.o.termguicolors = true
 | 
			
		||||
 | 
			
		||||
g.nvim_tree_add_trailing = 0 -- append a trailing slash to folder names
 | 
			
		||||
g.nvim_tree_git_hl = git_status
 | 
			
		||||
g.nvim_tree_gitignore = 0
 | 
			
		||||
g.nvim_tree_highlight_opened_files = 0
 | 
			
		||||
g.nvim_tree_indent_markers = 1
 | 
			
		||||
g.nvim_tree_ignore = { ".git", "node_modules", ".cache" }
 | 
			
		||||
g.nvim_tree_quit_on_open = 0 -- closes tree when file's opened
 | 
			
		||||
g.nvim_tree_root_folder_modifier = table.concat { ":t:gs?$?/..", string.rep(" ", 1000), "?:gs?^??" }
 | 
			
		||||
 
 | 
			
		||||
g.nvim_tree_window_picker_exclude = {
 | 
			
		||||
   filetype = { 'notify', 'packer', 'qf' },
 | 
			
		||||
   buftype = {'terminal' },
 | 
			
		||||
   filetype = { "notify", "packer", "qf" },
 | 
			
		||||
   buftype = { "terminal" },
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
--
 | 
			
		||||
g.nvim_tree_show_icons = {
 | 
			
		||||
   folders = 1,
 | 
			
		||||
   -- folder_arrows= 1
 | 
			
		||||
   files = 1,
 | 
			
		||||
   git = git_status,
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -43,11 +38,8 @@ g.nvim_tree_icons = {
 | 
			
		|||
      untracked = "★",
 | 
			
		||||
   },
 | 
			
		||||
   folder = {
 | 
			
		||||
      -- disable indent_markers option to get arrows working or if you want both arrows and indent then just add the arrow icons in front            ofthe default and opened folders below!
 | 
			
		||||
      -- arrow_open = "",
 | 
			
		||||
      -- arrow_closed = "",
 | 
			
		||||
      default = "",
 | 
			
		||||
      empty = "", -- 
 | 
			
		||||
      empty = "",
 | 
			
		||||
      empty_open = "",
 | 
			
		||||
      open = "",
 | 
			
		||||
      symlink = "",
 | 
			
		||||
| 
						 | 
				
			
			@ -56,15 +48,6 @@ g.nvim_tree_icons = {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
nvimtree.setup {
 | 
			
		||||
   diagnostics = {
 | 
			
		||||
      enable = false,
 | 
			
		||||
      icons = {
 | 
			
		||||
         hint = "",
 | 
			
		||||
         info = "",
 | 
			
		||||
         warning = "",
 | 
			
		||||
         error = "",
 | 
			
		||||
      },
 | 
			
		||||
   },
 | 
			
		||||
   filters = {
 | 
			
		||||
      dotfiles = false,
 | 
			
		||||
   },
 | 
			
		||||
| 
						 | 
				
			
			@ -84,4 +67,8 @@ nvimtree.setup {
 | 
			
		|||
      side = "left",
 | 
			
		||||
      width = 25,
 | 
			
		||||
   },
 | 
			
		||||
 | 
			
		||||
   git = {
 | 
			
		||||
      ignore = false,
 | 
			
		||||
   },
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,19 +1,17 @@
 | 
			
		|||
local M = {}
 | 
			
		||||
 | 
			
		||||
local chadrc_config = require("core.utils").load_config()
 | 
			
		||||
 | 
			
		||||
M.autopairs = function()
 | 
			
		||||
   local present1, autopairs = pcall(require, "nvim-autopairs")
 | 
			
		||||
   local present2, cmp_autopairs = pcall(require, "nvim-autopairs.completion.cmp")
 | 
			
		||||
 | 
			
		||||
   if not (present1 or present2) then
 | 
			
		||||
      return
 | 
			
		||||
   if present1 and present2 then
 | 
			
		||||
      autopairs.setup()
 | 
			
		||||
 | 
			
		||||
      local cmp = require "cmp"
 | 
			
		||||
      cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
 | 
			
		||||
   end
 | 
			
		||||
 | 
			
		||||
   autopairs.setup()
 | 
			
		||||
 | 
			
		||||
   -- not needed if you disable cmp, the above var related to cmp tooo! override default config for autopairs
 | 
			
		||||
   local cmp = require "cmp"
 | 
			
		||||
   cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
M.better_escape = function()
 | 
			
		||||
| 
						 | 
				
			
			@ -35,6 +33,7 @@ M.blankline = function()
 | 
			
		|||
         "lspinfo",
 | 
			
		||||
         "TelescopePrompt",
 | 
			
		||||
         "TelescopeResults",
 | 
			
		||||
         "nvchad_cheatsheet",
 | 
			
		||||
      },
 | 
			
		||||
      buftype_exclude = { "terminal" },
 | 
			
		||||
      show_trailing_blankline_indent = false,
 | 
			
		||||
| 
						 | 
				
			
			@ -71,17 +70,15 @@ end
 | 
			
		|||
 | 
			
		||||
M.luasnip = function()
 | 
			
		||||
   local present, luasnip = pcall(require, "luasnip")
 | 
			
		||||
   if not present then
 | 
			
		||||
      return
 | 
			
		||||
   if present then
 | 
			
		||||
      luasnip.config.set_config {
 | 
			
		||||
         history = true,
 | 
			
		||||
         updateevents = "TextChanged,TextChangedI",
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      require("luasnip/loaders/from_vscode").load { paths = chadrc_config.plugins.options.luasnip.snippet_path }
 | 
			
		||||
      require("luasnip/loaders/from_vscode").load()
 | 
			
		||||
   end
 | 
			
		||||
 | 
			
		||||
   luasnip.config.set_config {
 | 
			
		||||
      history = true,
 | 
			
		||||
      updateevents = "TextChanged,TextChangedI",
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   require("luasnip/loaders/from_vscode").load { paths = chadrc_config.plugins.options.luasnip.snippet_path }
 | 
			
		||||
   require("luasnip/loaders/from_vscode").load()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
M.signature = function()
 | 
			
		||||
| 
						 | 
				
			
			@ -107,4 +104,59 @@ M.signature = function()
 | 
			
		|||
   end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
M.lsp_handlers = function()
 | 
			
		||||
   local function lspSymbol(name, icon)
 | 
			
		||||
      local hl = "DiagnosticSign" .. name
 | 
			
		||||
      vim.fn.sign_define(hl, { text = icon, numhl = hl, texthl = hl })
 | 
			
		||||
   end
 | 
			
		||||
 | 
			
		||||
   lspSymbol("Error", "")
 | 
			
		||||
   lspSymbol("Info", "")
 | 
			
		||||
   lspSymbol("Hint", "")
 | 
			
		||||
   lspSymbol("Warn", "")
 | 
			
		||||
 | 
			
		||||
   vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, {
 | 
			
		||||
      virtual_text = {
 | 
			
		||||
         prefix = "",
 | 
			
		||||
         spacing = 0,
 | 
			
		||||
      },
 | 
			
		||||
      signs = true,
 | 
			
		||||
      underline = true,
 | 
			
		||||
      update_in_insert = false, -- update diagnostics insert mode
 | 
			
		||||
   })
 | 
			
		||||
   vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, {
 | 
			
		||||
      border = "single",
 | 
			
		||||
   })
 | 
			
		||||
   vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, {
 | 
			
		||||
      border = "single",
 | 
			
		||||
   })
 | 
			
		||||
 | 
			
		||||
   -- suppress error messages from lang servers
 | 
			
		||||
   vim.notify = function(msg, log_level, _opts)
 | 
			
		||||
      if msg:match "exit code" then
 | 
			
		||||
         return
 | 
			
		||||
      end
 | 
			
		||||
      if log_level == vim.log.levels.ERROR then
 | 
			
		||||
         vim.api.nvim_err_writeln(msg)
 | 
			
		||||
      else
 | 
			
		||||
         vim.api.nvim_echo({ { msg } }, true, {})
 | 
			
		||||
      end
 | 
			
		||||
   end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
M.gitsigns = function()
 | 
			
		||||
   local present, gitsigns = pcall(require, "gitsigns")
 | 
			
		||||
   if present then
 | 
			
		||||
      gitsigns.setup {
 | 
			
		||||
         signs = {
 | 
			
		||||
            add = { hl = "DiffAdd", text = "│", numhl = "GitSignsAddNr" },
 | 
			
		||||
            change = { hl = "DiffChange", text = "│", numhl = "GitSignsChangeNr" },
 | 
			
		||||
            delete = { hl = "DiffDelete", text = "", numhl = "GitSignsDeleteNr" },
 | 
			
		||||
            topdelete = { hl = "DiffDelete", text = "‾", numhl = "GitSignsDeleteNr" },
 | 
			
		||||
            changedelete = { hl = "DiffChangeDelete", text = "~", numhl = "GitSignsChangeNr" },
 | 
			
		||||
         },
 | 
			
		||||
      }
 | 
			
		||||
   end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
return M
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,10 +43,12 @@ local icon_styles = {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
local config = require("core.utils").load_config().plugins.options.statusline
 | 
			
		||||
 | 
			
		||||
-- statusline style
 | 
			
		||||
local user_statusline_style = config.style
 | 
			
		||||
local statusline_style = icon_styles[user_statusline_style]
 | 
			
		||||
-- if show short statusline on small screens
 | 
			
		||||
 | 
			
		||||
-- show short statusline on small screens
 | 
			
		||||
local shortline = config.shortline == false and true
 | 
			
		||||
 | 
			
		||||
-- Initialize the components table
 | 
			
		||||
| 
						 | 
				
			
			@ -55,7 +57,6 @@ local components = {
 | 
			
		|||
   inactive = {},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
-- Initialize left, mid and right
 | 
			
		||||
table.insert(components.active, {})
 | 
			
		||||
table.insert(components.active, {})
 | 
			
		||||
table.insert(components.active, {})
 | 
			
		||||
| 
						 | 
				
			
			@ -186,6 +187,7 @@ components.active[1][10] = {
 | 
			
		|||
components.active[2][1] = {
 | 
			
		||||
   provider = function()
 | 
			
		||||
      local Lsp = vim.lsp.util.get_progress_messages()[1]
 | 
			
		||||
 | 
			
		||||
      if Lsp then
 | 
			
		||||
         local msg = Lsp.message or ""
 | 
			
		||||
         local percentage = Lsp.percentage or 0
 | 
			
		||||
| 
						 | 
				
			
			@ -207,10 +209,11 @@ components.active[2][1] = {
 | 
			
		|||
 | 
			
		||||
         if percentage >= 70 then
 | 
			
		||||
            return string.format(" %%<%s %s %s (%s%%%%) ", success_icon[frame + 1], title, msg, percentage)
 | 
			
		||||
         else
 | 
			
		||||
            return string.format(" %%<%s %s %s (%s%%%%) ", spinners[frame + 1], title, msg, percentage)
 | 
			
		||||
         end
 | 
			
		||||
 | 
			
		||||
         return string.format(" %%<%s %s %s (%s%%%%) ", spinners[frame + 1], title, msg, percentage)
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      return ""
 | 
			
		||||
   end,
 | 
			
		||||
   enabled = shortline or function(winid)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
local present, telescope = pcall(require, "telescope")
 | 
			
		||||
 | 
			
		||||
if not present then
 | 
			
		||||
   return
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -37,7 +38,7 @@ telescope.setup {
 | 
			
		|||
      file_sorter = require("telescope.sorters").get_fuzzy_file,
 | 
			
		||||
      file_ignore_patterns = { "node_modules" },
 | 
			
		||||
      generic_sorter = require("telescope.sorters").get_generic_fuzzy_sorter,
 | 
			
		||||
      path_display = { "absolute" },
 | 
			
		||||
      path_display = { "truncate" },
 | 
			
		||||
      winblend = 0,
 | 
			
		||||
      border = {},
 | 
			
		||||
      borderchars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
local present, ts_config = pcall(require, "nvim-treesitter.configs")
 | 
			
		||||
 | 
			
		||||
if not present then
 | 
			
		||||
   return
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -6,6 +7,7 @@ end
 | 
			
		|||
ts_config.setup {
 | 
			
		||||
   ensure_installed = {
 | 
			
		||||
      "lua",
 | 
			
		||||
      "vim",
 | 
			
		||||
   },
 | 
			
		||||
   highlight = {
 | 
			
		||||
      enable = true,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,40 +8,13 @@ local use = packer.use
 | 
			
		|||
 | 
			
		||||
return packer.startup(function()
 | 
			
		||||
   local plugin_settings = require("core.utils").load_config().plugins
 | 
			
		||||
 | 
			
		||||
   -- FUNCTION: override_req, use `chadrc` plugin config override if present
 | 
			
		||||
   -- name = name inside `default_config` / `chadrc`
 | 
			
		||||
   -- default_req = run this if 'name' does not exist in `default_config` / `chadrc`
 | 
			
		||||
   -- if override or default_req start with `(`, then strip that and assume override calls a function, not a whole file
 | 
			
		||||
   local override_req = function(name, default_req)
 | 
			
		||||
      local override = require("core.utils").load_config().plugins.default_plugin_config_replace[name]
 | 
			
		||||
      local result
 | 
			
		||||
 | 
			
		||||
      if override == nil then
 | 
			
		||||
         result = default_req
 | 
			
		||||
      else
 | 
			
		||||
         result = override
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      if string.match(result, "^%(") then
 | 
			
		||||
         result = result:sub(2)
 | 
			
		||||
         result = result:gsub("%)%.", "').", 1)
 | 
			
		||||
         return "require('" .. result
 | 
			
		||||
      else
 | 
			
		||||
         return "require('" .. result .. "')"
 | 
			
		||||
      end
 | 
			
		||||
   end
 | 
			
		||||
   local override_req = require("core.utils").override_req
 | 
			
		||||
 | 
			
		||||
   -- this is arranged on the basis of when a plugin starts
 | 
			
		||||
 | 
			
		||||
   -- this is the nvchad core repo containing utilities for some features like theme swticher, no need to lazy load
 | 
			
		||||
   use {
 | 
			
		||||
      "Nvchad/extensions",
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   use {
 | 
			
		||||
      "nvim-lua/plenary.nvim",
 | 
			
		||||
   }
 | 
			
		||||
   use "Nvchad/extensions"
 | 
			
		||||
   use "nvim-lua/plenary.nvim"
 | 
			
		||||
 | 
			
		||||
   use {
 | 
			
		||||
      "wbthomason/packer.nvim",
 | 
			
		||||
| 
						 | 
				
			
			@ -95,7 +68,6 @@ return packer.startup(function()
 | 
			
		|||
 | 
			
		||||
   use {
 | 
			
		||||
      "nvim-treesitter/nvim-treesitter",
 | 
			
		||||
      branch = "0.5-compat",
 | 
			
		||||
      event = "BufRead",
 | 
			
		||||
      config = override_req("nvim_treesitter", "plugins.configs.treesitter"),
 | 
			
		||||
   }
 | 
			
		||||
| 
						 | 
				
			
			@ -105,7 +77,7 @@ return packer.startup(function()
 | 
			
		|||
      "lewis6991/gitsigns.nvim",
 | 
			
		||||
      disable = not plugin_settings.status.gitsigns,
 | 
			
		||||
      opt = true,
 | 
			
		||||
      config = override_req("gitsigns", "plugins.configs.gitsigns"),
 | 
			
		||||
      config = override_req("gitsigns", "(plugins.configs.others).gitsigns()"),
 | 
			
		||||
      setup = function()
 | 
			
		||||
         require("core.utils").packer_lazy_load "gitsigns.nvim"
 | 
			
		||||
      end,
 | 
			
		||||
| 
						 | 
				
			
			@ -261,6 +233,6 @@ return packer.startup(function()
 | 
			
		|||
         require("core.mappings").telescope()
 | 
			
		||||
      end,
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   -- load user defined plugins
 | 
			
		||||
   require("core.hooks").run("install_plugins", use)
 | 
			
		||||
end)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,4 @@
 | 
			
		|||
local cmd = vim.cmd
 | 
			
		||||
 | 
			
		||||
cmd "packadd packer.nvim"
 | 
			
		||||
vim.cmd "packadd packer.nvim"
 | 
			
		||||
 | 
			
		||||
local present, packer = pcall(require, "packer")
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -19,7 +17,7 @@ if not present then
 | 
			
		|||
      packer_path,
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   cmd "packadd packer.nvim"
 | 
			
		||||
   vim.cmd "packadd packer.nvim"
 | 
			
		||||
   present, packer = pcall(require, "packer")
 | 
			
		||||
 | 
			
		||||
   if present then
 | 
			
		||||
| 
						 | 
				
			
			@ -37,11 +35,10 @@ packer.init {
 | 
			
		|||
      prompt_border = "single",
 | 
			
		||||
   },
 | 
			
		||||
   git = {
 | 
			
		||||
      clone_timeout = 600, -- Timeout, in seconds, for git clones
 | 
			
		||||
      clone_timeout = 6000, -- seconds
 | 
			
		||||
   },
 | 
			
		||||
   auto_clean = true,
 | 
			
		||||
   compile_on_sync = true,
 | 
			
		||||
   --    auto_reload_compiled = true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
return packer
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue