Default Plugin Configurations
This page documents the default options that are set by AstroNvim for each individual plugin. All of these options can be changed in the plugins
table in the user/init.lua
configuration file as described in the Custom Plugins Documentation.
aerial.nvim
opts = { buftype_exclude = { "nofile", "terminal", }, filetype_exclude = { "help", "startify", "aerial", "alpha", "dashboard", "lazy", "neogitstatus", "NvimTree", "neo-tree", "Trouble", }, context_patterns = { "class", "return", "function", "method", "^if", "^while", "jsx_element", "^for", "^object", "^table", "block", "arguments", "if_statement", "else_clause", "jsx_element", "jsx_self_closing_element", "try_statement", "catch_clause", "import_statement", "operation_type", }, show_trailing_blankline_indent = false, use_treesitter = true, char = "▏", context_char = "▏", show_current_context = true,}
alpha-nvim
opts = function() local dashboard = require "alpha.themes.dashboard" dashboard.section.header.val = { " █████ ███████ ████████ ██████ ██████", "██ ██ ██ ██ ██ ██ ██ ██", "███████ ███████ ██ ██████ ██ ██", "██ ██ ██ ██ ██ ██ ██ ██", "██ ██ ███████ ██ ██ ██ ██████", " ", " ███ ██ ██ ██ ██ ███ ███", " ████ ██ ██ ██ ██ ████ ████", " ██ ██ ██ ██ ██ ██ ██ ████ ██", " ██ ██ ██ ██ ██ ██ ██ ██ ██", " ██ ████ ████ ██ ██ ██", } dashboard.section.header.opts.hl = "DashboardHeader"
local button = require("astronvim.utils").alpha_button dashboard.section.buttons.val = { button("LDR n", " New File "), button("LDR f f", " Find File "), button("LDR f o", " Recents "), button("LDR f w", " Find Word "), button("LDR f '", " Bookmarks "), button("LDR S l", " Last Session "), }
dashboard.config.layout[1].val = vim.fn.max { 2, vim.fn.floor(vim.fn.winheight(0) * 0.2) } dashboard.config.layout[3].val = 5 dashboard.config.opts.noautocmd = true return dashboardend
astrotheme
opts = { plugins = { ["dashboard-nvim"] = true } }
better-escape.nvim
opts = { timeout = 300 }
Comment.nvim
opts = function() return { pre_hook = require("ts_context_commentstring.integrations.comment_nvim").create_pre_hook() }end
dressing.nvim
opts = { input = { default_prompt = "➤ ", win_options = { winhighlight = "Normal:Normal,NormalNC:Normal" }, }, select = { backend = { "telescope", "builtin" }, builtin = { win_options = { winhighlight = "Normal:Normal,NormalNC:Normal" } }, },}
gitsigns.nvim
opts = { signs = { add = { text = "▎" }, change = { text = "▎" }, delete = { text = "▎" }, topdelete = { text = "契" }, changedelete = { text = "▎" }, untracked = { text = "▎" }, },}
heirline.nvim
indent-blankline.nvim
opts = { indent = { char = "▏" }, scope = { show_start = false, show_end = false }, exclude = { buftypes = { "nofile", "terminal", }, filetypes = { "help", "startify", "aerial", "alpha", "dashboard", "lazy", "neogitstatus", "NvimTree", "neo-tree", "Trouble", }, },}
lspkind.nvim
opts = { mode = "symbol", symbol_map = { NONE = "", Array = "", Boolean = "⊨", Class = "", Constructor = "", Key = "", Namespace = "", Null = "NULL", Number = "#", Object = "⦿", Package = "", Property = "", Reference = "", Snippet = "", String = "𝓐", TypeParameter = "", Unit = "", },}
LuaSnip
opts = { store_selection_keys = "<C-x>",}
mason-null-ls.nvim
opts = { automatic_setup = true }
mason-nvim-dap
opts = { automatic_setup = true }
mason.nvim
opts = { ui = { icons = { package_installed = "✓", package_uninstalled = "✗", package_pending = "⟳", }, },}
neo-tree.nvim
local get_icon = require("astronvim.utils").get_iconopts = { auto_clean_after_session_restore = true, close_if_last_window = true, source_selector = { winbar = true, content_layout = "center", sources = { { source = "filesystem", display_name = get_icon "FolderClosed" .. " File" }, { source = "buffers", display_name = get_icon "DefaultFile" .. " Bufs" }, { source = "git_status", display_name = get_icon "Git" .. " Git" }, { source = "diagnostics", display_name = get_icon "Diagnostic" .. " Diagnostic" }, }, }, default_component_configs = { indent = { padding = 0, indent_size = 1 }, icon = { folder_closed = get_icon "FolderClosed", folder_open = get_icon "FolderOpen", folder_empty = get_icon "FolderEmpty", default = get_icon "DefaultFile", }, modified = { symbol = get_icon "FileModified" }, git_status = { symbols = { added = get_icon "GitAdd", deleted = get_icon "GitDelete", modified = get_icon "GitChange", renamed = get_icon "GitRenamed", untracked = get_icon "GitUntracked", ignored = get_icon "GitIgnored", unstaged = get_icon "GitUnstaged", staged = get_icon "GitStaged", conflict = get_icon "GitConflict", }, }, }, commands = { system_open = function(state) require("astronvim.utils").system_open(state.tree:get_node():get_id()) end, parent_or_close = function(state) local node = state.tree:get_node() if (node.type == "directory" or node:has_children()) and node:is_expanded() then state.commands.toggle_node(state) else require("neo-tree.ui.renderer").focus_node(state, node:get_parent_id()) end end, child_or_open = function(state) local node = state.tree:get_node() if node.type == "directory" or node:has_children() then if not node:is_expanded() then -- if unexpanded, expand state.commands.toggle_node(state) else -- if expanded and has children, seleect the next child require("neo-tree.ui.renderer").focus_node(state, node:get_child_ids()[1]) end else -- if not a directory just open it state.commands.open(state) end end, copy_selector = function(state) local node = state.tree:get_node() local filepath = node:get_id() local filename = node.name local modify = vim.fn.fnamemodify
local results = { e = { val = modify(filename, ":e"), msg = "Extension only" }, f = { val = filename, msg = "Filename" }, F = { val = modify(filename, ":r"), msg = "Filename w/o extension" }, h = { val = modify(filepath, ":~"), msg = "Path relative to Home" }, p = { val = modify(filepath, ":."), msg = "Path relative to CWD" }, P = { val = filepath, msg = "Absolute path" }, }
local messages = { { "\nChoose to copy to clipboard:\n", "Normal" }, } for i, result in pairs(results) do if result.val and result.val ~= "" then vim.list_extend(messages, { { ("%s."):format(i), "Identifier" }, { (" %s: "):format(result.msg) }, { result.val, "String" }, { "\n" }, }) end end vim.api.nvim_echo(messages, false, {}) local result = results[vim.fn.getcharstr()] if result and result.val and result.val ~= "" then vim.notify("Copied: " .. result.val) vim.fn.setreg("+", result.val) end end, }, window = { width = 30, mappings = { ["<space>"] = false, -- disable space until we figure out which-key disabling ["[b"] = "prev_source", ["]b"] = "next_source", o = "open", O = "system_open", h = "parent_or_close", l = "child_or_open", Y = "copy_selector", }, }, filesystem = { follow_current_file = { enabled = true }, hijack_netrw_behavior = "open_current", use_libuv_file_watcher = true, }, event_handlers = { { event = "neo_tree_buffer_enter", handler = function(_) vim.opt_local.signcolumn = "auto" end, }, },}
neodev.nvim
opts = { override = function(root_dir, library) if root_dir:match(astronvim.install.config) then library.plugins = true end vim.b.neodev_enabled = library.enabled end,}
null-ls.nvim
opts = function() return { on_attach = require("astronvim.utils.lsp").on_attach } end
nvim-autopairs
opts = { check_ts = true, ts_config = { java = false }, fast_wrap = { map = "<M-e>", chars = { "{", "[", "(", '"', "'" }, pattern = string.gsub([[ [%'%"%)%>%]%)%}%,] ]], "%s+", ""), offset = 0, end_key = "$", keys = "qwertyuiopzxcvbnmasdfghjkl", check_comma = true, highlight = "PmenuSel", highlight_grey = "LineNr", },}
nvim-cmp
opts = function() local cmp = require "cmp" local snip_status_ok, luasnip = pcall(require, "luasnip") local lspkind_status_ok, lspkind = pcall(require, "lspkind") if not snip_status_ok then return end local border_opts = { border = "single", winhighlight = "Normal:Normal,FloatBorder:FloatBorder,CursorLine:Visual,Search:None" }
local function has_words_before() local line, col = unpack(vim.api.nvim_win_get_cursor(0)) return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match "%s" == nil end
return { enabled = function() if vim.api.nvim_get_option_value("buftype", { buf = 0 }) == "prompt" then return false end return vim.g.cmp_enabled end, preselect = cmp.PreselectMode.None, formatting = { fields = { "kind", "abbr", "menu" }, format = lspkind_status_ok and lspkind.cmp_format(astronvim.lspkind) or nil, }, snippet = { expand = function(args) luasnip.lsp_expand(args.body) end, }, duplicates = { nvim_lsp = 1, luasnip = 1, cmp_tabnine = 1, buffer = 1, path = 1, }, confirm_opts = { behavior = cmp.ConfirmBehavior.Replace, select = false, }, window = { completion = cmp.config.window.bordered(border_opts), documentation = cmp.config.window.bordered(border_opts), }, mapping = { ["<Up>"] = cmp.mapping.select_prev_item { behavior = cmp.SelectBehavior.Select }, ["<Down>"] = cmp.mapping.select_next_item { behavior = cmp.SelectBehavior.Select }, ["<C-p>"] = cmp.mapping.select_prev_item { behavior = cmp.SelectBehavior.Insert }, ["<C-n>"] = cmp.mapping.select_next_item { behavior = cmp.SelectBehavior.Insert }, ["<C-k>"] = cmp.mapping.select_prev_item { behavior = cmp.SelectBehavior.Insert }, ["<C-j>"] = cmp.mapping.select_next_item { behavior = cmp.SelectBehavior.Insert }, ["<C-u>"] = cmp.mapping(cmp.mapping.scroll_docs(-4), { "i", "c" }), ["<C-d>"] = cmp.mapping(cmp.mapping.scroll_docs(4), { "i", "c" }), ["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }), ["<C-y>"] = cmp.config.disable, ["<C-e>"] = cmp.mapping { i = cmp.mapping.abort(), c = cmp.mapping.close() }, ["<CR>"] = cmp.mapping.confirm { select = false }, ["<Tab>"] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_next_item() elseif luasnip.expand_or_jumpable() then luasnip.expand_or_jump() elseif has_words_before() then cmp.complete() else fallback() end end, { "i", "s" }), ["<S-Tab>"] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_prev_item() elseif luasnip.jumpable(-1) then luasnip.jump(-1) else fallback() end end, { "i", "s" }), }, sources = cmp.config.sources { { name = "nvim_lsp", priority = 1000 }, { name = "luasnip", priority = 750 }, { name = "buffer", priority = 500 }, { name = "path", priority = 250 }, }, }end
nvim-colorizer.lua
opts = { user_default_options = { names = false } }
nvim-dap-ui
opts = { floating = { border = "rounded" } }
nvim-notify
opts = { stages = "fade" }
nvim-treesitter
opts = { autotag = { enable = true }, context_commentstring = { enable = true, enable_autocmd = false }, highlight = { enable = true, disable = function(_, bufnr) return vim.api.nvim_buf_line_count(bufnr) > 10000 end, }, incremental_selection = { enable = true }, indent = { enable = true }, textobjects = { select = { enable = true, lookahead = true, keymaps = { ["ak"] = { query = "@block.outer", desc = "around block" }, ["ik"] = { query = "@block.inner", desc = "inside block" }, ["ac"] = { query = "@class.outer", desc = "around class" }, ["ic"] = { query = "@class.inner", desc = "inside class" }, ["a?"] = { query = "@conditional.outer", desc = "around conditional" }, ["i?"] = { query = "@conditional.inner", desc = "inside conditional" }, ["af"] = { query = "@function.outer", desc = "around function " }, ["if"] = { query = "@function.inner", desc = "inside function " }, ["al"] = { query = "@loop.outer", desc = "around loop" }, ["il"] = { query = "@loop.inner", desc = "inside loop" }, ["aa"] = { query = "@parameter.outer", desc = "around argument" }, ["ia"] = { query = "@parameter.inner", desc = "inside argument" }, }, }, move = { enable = true, set_jumps = true, goto_next_start = { ["]k"] = { query = "@block.outer", desc = "Next block start" }, ["]f"] = { query = "@function.outer", desc = "Next function start" }, ["]a"] = { query = "@parameter.inner", desc = "Next argument start" }, }, goto_next_end = { ["]K"] = { query = "@block.outer", desc = "Next block end" }, ["]F"] = { query = "@function.outer", desc = "Next function end" }, ["]A"] = { query = "@parameter.inner", desc = "Next argument end" }, }, goto_previous_start = { ["[k"] = { query = "@block.outer", desc = "Previous block start" }, ["[f"] = { query = "@function.outer", desc = "Previous function start" }, ["[a"] = { query = "@parameter.inner", desc = "Previous argument start" }, }, goto_previous_end = { ["[K"] = { query = "@block.outer", desc = "Previous block end" }, ["[F"] = { query = "@function.outer", desc = "Previous function end" }, ["[A"] = { query = "@parameter.inner", desc = "Previous argument end" }, }, }, swap = { enable = true, swap_next = { [">K"] = { query = "@block.outer", desc = "Swap next block" }, [">F"] = { query = "@function.outer", desc = "Swap next function" }, [">A"] = { query = "@parameter.inner", desc = "Swap next argument" }, }, swap_previous = { ["<K"] = { query = "@block.outer", desc = "Swap previous block" }, ["<F"] = { query = "@function.outer", desc = "Swap previous function" }, ["<A"] = { query = "@parameter.inner", desc = "Swap previous argument" }, }, }, },}
nvim-ufo
opts = { preview = { mappings = { scrollB = "<C-b>", scrollF = "<C-f>", scrollU = "<C-u>", scrollD = "<C-d>", }, }, provider_selector = function(_, filetype, buftype) return (filetype == "" or buftype == "nofile") and "indent" -- only use indent until a file is opened or { "treesitter", "indent" } -- if file opened, try to use treesitter if available end,}
nvim-web-devicons
opts = { override = { default_icon = { icon = require("astronvim.utils").get_icon "DefaultFile" }, deb = { icon = "", name = "Deb" }, lock = { icon = "", name = "Lock" }, mp3 = { icon = "", name = "Mp3" }, mp4 = { icon = "", name = "Mp4" }, out = { icon = "", name = "Out" }, ["robots.txt"] = { icon = "", name = "Robots" }, ttf = { icon = "", name = "TrueTypeFont" }, rpm = { icon = "", name = "Rpm" }, woff = { icon = "", name = "WebOpenFontFormat" }, woff2 = { icon = "", name = "WebOpenFontFormat2" }, xz = { icon = "", name = "Xz" }, zip = { icon = "", name = "Zip" }, },}
nvim-window-picker
opts = { use_winbar = "smart" }
smart-splits.nvim
opts = { ignored_filetypes = { "nofile", "quickfix", "qf", "prompt" }, ignored_buftypes = { "nofile" },}
telescope.nvim
opts = function() local actions = require "telescope.actions" local get_icon = require("astronvim.utils").get_icon return { defaults = { git_worktrees = vim.g.git_worktrees, prompt_prefix = string.format("%s ", get_icon "Search"), selection_caret = string.format("%s ", get_icon "Selected"), path_display = { "truncate" }, sorting_strategy = "ascending", layout_config = { horizontal = { prompt_position = "top", preview_width = 0.55, }, vertical = { mirror = false, }, width = 0.87, height = 0.80, preview_cutoff = 120, },
mappings = { i = { ["<C-n>"] = actions.cycle_history_next, ["<C-p>"] = actions.cycle_history_prev, ["<C-j>"] = actions.move_selection_next, ["<C-k>"] = actions.move_selection_previous, }, n = { ["q"] = actions.close }, }, }, }end
toggleterm.nvim
opts = { size = 10, open_mapping = [[<F7>]], shading_factor = 2, direction = "float", float_opts = { border = "curved", highlights = { border = "Normal", background = "Normal" }, },}