-- commands.lua vim.cmd 'autocmd BufRead,BufNewFile *.wiki,*.md,*.tex set wrap' vim.cmd 'au BufRead,BufNewFile *.kdl set filetype=kdl' vim.cmd [[autocmd BufWritePre * lua vim.lsp.buf.format()]] vim.cmd 'command W :execute \':silent w !sudo tee % > /dev/null\' | :edit!' -- Array of file names indicating root directory. Modify to your liking. local root_names = { '.git', 'Makefile' } -- Cache to use for speed up (at cost of possibly outdated results) local root_cache = {} local set_root = function() -- Get directory path to start search from local path = vim.api.nvim_buf_get_name(0) if path == '' then return end path = vim.fs.dirname(path) -- Try cache and resort to searching upward for root directory local root = root_cache[path] if root == nil then local root_file = vim.fs.find(root_names, { path = path, upward = true })[1] if root_file == nil then return end root = vim.fs.dirname(root_file) root_cache[path] = root end -- Set current directory vim.fn.chdir(root) end local root_augroup = vim.api.nvim_create_augroup('MyAutoRoot', {}) vim.api.nvim_create_autocmd('BufEnter', { group = root_augroup, callback = set_root })