aboutsummaryrefslogtreecommitdiff
path: root/nvim/nvchad/lua/core/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'nvim/nvchad/lua/core/init.lua')
-rw-r--r--nvim/nvchad/lua/core/init.lua138
1 files changed, 138 insertions, 0 deletions
diff --git a/nvim/nvchad/lua/core/init.lua b/nvim/nvchad/lua/core/init.lua
new file mode 100644
index 0000000..8d19174
--- /dev/null
+++ b/nvim/nvchad/lua/core/init.lua
@@ -0,0 +1,138 @@
+local opt = vim.opt
+local g = vim.g
+local config = require("core.utils").load_config()
+
+-------------------------------------- globals -----------------------------------------
+g.nvchad_theme = config.ui.theme
+g.base46_cache = vim.fn.stdpath "data" .. "/nvchad/base46/"
+g.toggle_theme_icon = "  "
+g.transparency = config.ui.transparency
+
+-------------------------------------- options ------------------------------------------
+opt.laststatus = 3 -- global statusline
+opt.showmode = false
+
+opt.clipboard = "unnamedplus"
+opt.cursorline = true
+
+-- Indenting
+opt.expandtab = true
+opt.shiftwidth = 2
+opt.smartindent = true
+opt.tabstop = 2
+opt.softtabstop = 2
+
+opt.fillchars = { eob = " " }
+opt.ignorecase = true
+opt.smartcase = true
+opt.mouse = "a"
+
+-- Numbers
+opt.number = true
+opt.numberwidth = 2
+opt.ruler = false
+
+-- disable nvim intro
+opt.shortmess:append "sI"
+
+opt.signcolumn = "yes"
+opt.splitbelow = true
+opt.splitright = true
+opt.termguicolors = true
+opt.timeoutlen = 400
+opt.undofile = true
+
+-- interval for writing swap file to disk, also used by gitsigns
+opt.updatetime = 250
+
+-- 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 = " "
+
+-- disable some default providers
+for _, provider in ipairs { "node", "perl", "python3", "ruby" } do
+ vim.g["loaded_" .. provider .. "_provider"] = 0
+end
+
+-- add binaries installed by mason.nvim to path
+local is_windows = vim.loop.os_uname().sysname == "Windows_NT"
+vim.env.PATH = vim.fn.stdpath "data" .. "/mason/bin" .. (is_windows and ";" or ":") .. vim.env.PATH
+
+-------------------------------------- autocmds ------------------------------------------
+local autocmd = vim.api.nvim_create_autocmd
+
+-- dont list quickfix buffers
+autocmd("FileType", {
+ pattern = "qf",
+ callback = function()
+ vim.opt_local.buflisted = false
+ end,
+})
+
+-- reload some chadrc options on-save
+autocmd("BufWritePost", {
+ pattern = vim.tbl_map(function(path)
+ return vim.fs.normalize(vim.loop.fs_realpath(path))
+ end, vim.fn.glob(vim.fn.stdpath "config" .. "/lua/custom/**/*.lua", true, true, true)),
+ group = vim.api.nvim_create_augroup("ReloadNvChad", {}),
+
+ callback = function(opts)
+ local fp = vim.fn.fnamemodify(vim.fs.normalize(vim.api.nvim_buf_get_name(opts.buf)), ":r") --[[@as string]]
+ local app_name = vim.env.NVIM_APPNAME and vim.env.NVIM_APPNAME or "nvim"
+ local module = string.gsub(fp, "^.*/" .. app_name .. "/lua/", ""):gsub("/", ".")
+
+ require("plenary.reload").reload_module "base46"
+ require("plenary.reload").reload_module(module)
+ require("plenary.reload").reload_module "custom.chadrc"
+
+ config = require("core.utils").load_config()
+
+ vim.g.nvchad_theme = config.ui.theme
+ vim.g.transparency = config.ui.transparency
+
+ -- statusline
+ require("plenary.reload").reload_module("nvchad.statusline." .. config.ui.statusline.theme)
+ vim.opt.statusline = "%!v:lua.require('nvchad.statusline." .. config.ui.statusline.theme .. "').run()"
+
+ -- tabufline
+ if config.ui.tabufline.enabled then
+ require("plenary.reload").reload_module "nvchad.tabufline.modules"
+ vim.opt.tabline = "%!v:lua.require('nvchad.tabufline.modules').run()"
+ end
+
+ require("base46").load_all_highlights()
+ -- vim.cmd("redraw!")
+ end,
+})
+
+-- user event that loads after UIEnter + only if file buf is there
+vim.api.nvim_create_autocmd({ "UIEnter", "BufReadPost", "BufNewFile" }, {
+ group = vim.api.nvim_create_augroup("NvFilePost", { clear = true }),
+ callback = function(args)
+ local file = vim.api.nvim_buf_get_name(args.buf)
+ local buftype = vim.api.nvim_buf_get_option(args.buf, "buftype")
+
+ if not vim.g.ui_entered and args.event == "UIEnter" then
+ vim.g.ui_entered = true
+ end
+
+ if file ~= "" and buftype ~= "nofile" and vim.g.ui_entered then
+ vim.api.nvim_exec_autocmds("User", { pattern = "FilePost", modeline = false })
+ vim.api.nvim_del_augroup_by_name "NvFilePost"
+
+ vim.schedule(function()
+ vim.api.nvim_exec_autocmds("FileType", {})
+ require("editorconfig").config(args.buf)
+ end, 0)
+ end
+ end,
+})
+
+-------------------------------------- commands ------------------------------------------
+local new_cmd = vim.api.nvim_create_user_command
+
+new_cmd("NvChadUpdate", function()
+ require "nvchad.updater"()
+end, {})