-- The MIT License (MIT) -- -- Copyright © 2026 Scott E. Graves -- -- Permission is hereby granted, free of charge, to any person obtaining a copy of this software -- and associated documentation files (the “Software”), to deal in the Software without restriction, -- including without limitation the rights to use, copy, modify, merge, publish, distribute, -- sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is -- furnished to do so, subject to the following conditions: -- -- The above copyright notice and this permission notice shall be included in all copies or -- substantial portions of the Software. -- -- THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING -- BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- local utils = require("darcula.utils") local group = utils.augroup_with_autocmd( "DarculaAutoCommands", "BufWinEnter", "*", function(args) local bufnr = args.buf if vim.b[bufnr]._darcula_cursor_restored then return end vim.b[bufnr]._darcula_cursor_restored = true local ft = vim.bo[bufnr].filetype if ft == "commit" or ft == "fugitive" or ft == "gitcommit" or ft == "rebase" then return end local pos = vim.fn.line('\'"') if pos >= 1 and pos <= vim.fn.line("$") then vim.cmd('normal! g`"') end end ) utils.autocmd( group, "FileChangedShellPost", "*", function(args) local filename = utils.get_current_filename(args.buf) vim.notify("File changed on disk:\n" .. filename, vim.log.levels.WARN) end ) utils.autocmd( group, {"FocusGained", "BufEnter", "CursorHold", "CursorHoldI"}, "*", function() local m = vim.fn.mode(0) if m ~= "c" and m ~= "cv" and m ~= "t" and vim.o.buftype ~= "nofile" then vim.cmd("silent! checktime") end end ) utils.autocmd( group, "TextYankPost", "*", function() vim.highlight.on_yank({timeout = 250}) end ) utils.autocmd( group, "FileType", "lua", function() vim.cmd("hi luaParenError guibg=NONE") end ) utils.autocmd( group, "ColorScheme", "*", function() NV_DARCULA_COLOR_SCHEME = vim.api.nvim_exec2("colorscheme", {output = true}).output end ) utils.autocmd( group, "VimEnter", "*", function() NV_Darcula_Set_Gui_Font(0) NV_Darcula_Set_Gui_Popup(false) end ) utils.autocmd(group, "DirChanged", "*", NV_Darcula_Load_RC) utils.autocmd(group, "VimEnter", "*", NV_Darcula_Load_RC) utils.autocmd( group, "FileType", "help", function() vim.opt_local.signcolumn = "no" end ) utils.autocmd( group, "User", {"DarculaGitUpdate", "FugitiveChanged"}, function() local api = require("nvim-tree.api") if api.tree.is_visible() then pcall(api.tree.reload) end end ) utils.autocmd( group, "FileType", "*", function(args) pcall(vim.treesitter.start, args.buf) end ) utils.autocmd( group, "BufEnter", "*", function() if vim.bo.filetype == "fugitive" or vim.bo.filetype == "gitcommit" then vim.cmd("resize 15") end end ) utils.autocmd( group, "BufWritePost", "*", function() if NV_DARCULA_ENABLE_FORMATTING then vim.cmd("FormatWriteLock") end end ) if not NV_DARCULA_ENABLE_COC then utils.autocmd( group, {"CursorHold"}, "*", function() vim.diagnostic.open_float(nil, {focus = false}) end ) end if NV_DARCULA_ENABLE_COC then local show_signature_help = function() if vim.bo.buftype ~= "prompt" and vim.bo.buftype ~= "nofile" then vim.fn.CocActionAsync("showSignatureHelp") end end utils.autocmd(group, "User", "CocJumpPlaceholder", show_signature_help) utils.autocmd( group, {"InsertEnter", "TextChangedI"}, "*", show_signature_help ) utils.autocmd( group, "CursorHold", "*", function() if vim.bo.buftype ~= "prompt" and vim.bo.buftype ~= "nofile" then vim.fn.CocActionAsync("highlight") end end ) utils.autocmd( group, "User", "CocNvimInit", function() vim.notify("Initialized coc.nvim for LSP support", vim.log.levels.INFO) end ) end utils.autocmd( group, "VimResized", "*", function() MiniNotify.refresh() end )