vim.g.base46_cache = vim.fn.stdpath "data" .. "/base46/" vim.g.mapleader = " " -- bootstrap lazy and all plugins local lazypath = vim.fn.stdpath "data" .. "/lazy/lazy.nvim" if not vim.uv.fs_stat(lazypath) then local repo = "https://github.com/folke/lazy.nvim.git" vim.fn.system { "git", "clone", "--filter=blob:none", repo, "--branch=stable", lazypath } end vim.opt.rtp:prepend(lazypath) local lazy_config = require "configs.lazy" -- load plugins require("lazy").setup({ { "NvChad/NvChad", lazy = false, branch = "v2.5", import = "nvchad.plugins", }, { import = "plugins" }, }, lazy_config) -- load theme dofile(vim.g.base46_cache .. "defaults") dofile(vim.g.base46_cache .. "statusline") require "options" require "nvchad.autocmds" vim.schedule(function() require "mappings" end) vim.api.nvim_create_autocmd({ "BufEnter", "QuitPre" }, { nested = false, callback = function(e) local tree = require("nvim-tree.api").tree -- Nothing to do if tree is not opened if not tree.is_visible() then return end -- How many focusable windows do we have? (excluding e.g. incline status window) local winCount = 0 for _, winId in ipairs(vim.api.nvim_list_wins()) do if vim.api.nvim_win_get_config(winId).focusable then winCount = winCount + 1 end end -- We want to quit and only one window besides tree is left if e.event == "QuitPre" and winCount == 2 then vim.api.nvim_cmd({ cmd = "qall" }, {}) end -- :bd was probably issued an only tree window is left -- Behave as if tree was closed (see `:h :bd`) if e.event == "BufEnter" and winCount == 1 then -- Required to avoid "Vim:E444: Cannot close last window" vim.defer_fn(function() -- close nvim-tree: will go to the last buffer used before closing tree.toggle { find_file = true, focus = true } -- re-open nivm-tree tree.toggle { find_file = true, focus = false } end, 10) end end, }) require("nvim-tree").setup { actions = { open_file = { quit_on_open = true, }, }, } local autocmd = vim.api.nvim_create_autocmd local function open_nvim_tree(data) -- buffer is a directory local directory = vim.fn.isdirectory(data.file) == 1 -- buffer is a [No Name] local no_name = data.file == "" and vim.bo[data.buf].buftype == "" if not directory and not no_name then return end if directory then -- change to the directory vim.cmd.cd(data.file) end -- open the tree require("nvim-tree.api").tree.open() end autocmd({ "VimEnter" }, { callback = open_nvim_tree })