return { -- Detect tabstop and shiftwidth automatically "tpope/vim-sleuth", -- "gc" to comment visual regions/lines "numToStr/Comment.nvim", -- Highlight, edit, and navigate code { "nvim-treesitter/nvim-treesitter", dependencies = { "nvim-treesitter/nvim-treesitter-textobjects", }, build = ":TSUpdate", opts = { ensure_installed = { "bash", "c", "cmake", "cpp", "c_sharp", "css", "go", "haskell", "html", "java", "javascript", "jsdoc", "json", "latex", "lua", "make", "markdown", "php", "python", "query", "regex", "rust", "toml", "tsx", "typescript", "vim", "vimdoc", "yaml", }, sync_install = false, auto_install = true, -- Default install directory is /parser -- parser_install_dir highlight = { enable = true, additional_vim_regex_highlighting = false, }, indent = { enable = true, }, } }, -- Auto-save { "okuuva/auto-save.nvim", cmd = "ASToggle", -- defer, until run command event = { "InsertLeave", "TextChanged" }, -- defer, until event trigger opts = { debounce_delay = 5000, -- delay for `defer_save`, in ms condition = function(buf) -- Dont save special-buffers return vim.fn.getbufvar(buf, "&buftype") == "" end, }, config = function(_, opts) require("auto-save").setup(opts) -- Cut off trailing whitespace and trailing blank lines local group = vim.api.nvim_create_augroup("AutoSave", { clear = false }) local core = require("core.functions") vim.api.nvim_create_autocmd("User", { pattern = "AutoSaveWritePre", group = group, callback = function(event) if event.data.saved_buffer ~= nil then core.trim_buffer() end end, }) end, }, -- Autopair / electric pair { -- https://github.com/altermo/ultimate-autopair.nvim "altermo/ultimate-autopair.nvim", event = { "InsertEnter", "CmdlineEnter" }, -- defer branch = "development", opts = { bs = { -- See: `:h ultimate-autopair-map-backspace-config` -- Call the backspace logic from the config, instead of automap -- https://github.com/altermo/ultimate-autopair.nvim/issues/60 map = "ultimate-autopair-BS", }, }, }, }