@ -1,8 +1,6 @@
-- AstroNvim Configuration Table
-- All configuration changes should go inside of the table below
-- A split up user configuration example can be found at: https://github.com/AstroNvim/split_user_example
-- You can think of a Lua "table" as a dictionary like data structure the
-- normal format is "key = value". These also handle array like data structures
-- where a value with no key simply has an implicit numeric key
@ -10,7 +8,6 @@ local config = {
-- Configure AstroNvim updates
updater = {
remote = " origin " , -- remote to use
-- channel = "nightly", -- "stable" or "nightly"
channel = " nightly " , -- "stable" or "nightly"
version = " latest " , -- "latest", tag name, or regex search like "v1.*" to only do updates before v2 (STABLE ONLY)
branch = " nightly " , -- branch name (NIGHTLY ONLY)
@ -18,6 +15,7 @@ local config = {
pin_plugins = nil , -- nil, true, false (nil will pin plugins on stable only)
skip_prompts = false , -- skip prompts about breaking changes
show_changelog = true , -- show the changelog after performing an update
auto_reload = false , -- automatically reload and sync packer after a successful update
auto_quit = false , -- automatically quit the current session after a successful update
-- remotes = { -- easily add new remotes to track
-- ["remote_name"] = "https://remote_url.come/repo.git", -- full remote url
@ -26,8 +24,7 @@ local config = {
-- },
} ,
-- Set colorscheme to use
-- colorscheme = "astrodark",
colorscheme = " tokyonight-night " ,
colorscheme = " default_theme " ,
-- Add highlight groups in any theme
highlights = {
-- init = { -- this table overrides highlights in all themes
@ -37,7 +34,7 @@ local config = {
-- Normal = { bg = "#000000" },
-- },
} ,
-- set vim options here (vim.<first_key>.<second_key> = value)
-- set vim options here (vim.<first_key>.<second_key> = value)
options = {
opt = {
-- set to true or false etc.
@ -46,30 +43,28 @@ local config = {
spell = false , -- sets vim.opt.spell
signcolumn = " auto " , -- sets vim.opt.signcolumn to auto
wrap = false , -- sets vim.opt.wrap
-- Treesitter
foldenable = false ,
foldexpr = " nvim_treesitter#foldexpr() " , -- set Treesitter based folding
foldmethod = " expr " ,
} ,
g = {
-- sets vim.g.mapleader
mapleader = " " ,
-- enable or disable auto formatting at start (lsp.formatting.format_on_save must be enabled)
autoformat_enabled = true ,
-- enable completion at start
cmp_enabled = true ,
-- enable autopairs at start
autopairs_enabled = true ,
-- set the visibility of diagnostics in the UI (0=off, 1=only show in status line, 2=virtual text off, 3=all on)
diagnostics_mode = 3 ,
-- disable icons in the UI (disable if no nerd font is available, requires :PackerSync after changing)
icons_enabled = true ,
-- disable notifications when toggling UI elements
ui_notifications_enabled = true ,
mapleader = " " , -- sets vim.g.mapleader
cmp_enabled = true , -- enable completion at start
autopairs_enabled = true , -- enable autopairs at start
diagnostics_enabled = true , -- enable diagnostics at start
status_diagnostics_enabled = true , -- enable diagnostics in statusline
copilot_no_tab_map = true ,
copilot_assume_mapped = true ,
copilot_tab_fallback = " " ,
-- Taglist
Tlist_Use_Right_Window = 1 ,
Tlist_GainFocus_On_ToggleOpen = 1 ,
Tlist_Auto_Update = 1 ,
-- Tlist_Close_On_Select = 1,
-- MarkdownPreview
mkdp_auto_close = 0 ,
} ,
} ,
-- If you need more control, you can use the function()...end notation
@ -82,8 +77,64 @@ local config = {
-- return local_vim
-- end,
-- Set dashboard header
header = {
" █████ ███████ ████████ ██████ ██████ " ,
" ██ ██ ██ ██ ██ ██ ██ ██ " ,
" ███████ ███████ ██ ██████ ██ ██ " ,
" ██ ██ ██ ██ ██ ██ ██ ██ " ,
" ██ ██ ███████ ██ ██ ██ ██████ " ,
" " ,
" ███ ██ ██ ██ ██ ███ ███ " ,
" ████ ██ ██ ██ ██ ████ ████ " ,
" ██ ██ ██ ██ ██ ██ ██ ████ ██ " ,
" ██ ██ ██ ██ ██ ██ ██ ██ ██ " ,
" ██ ████ ████ ██ ██ ██ " ,
} ,
-- Default theme configuration
default_theme = {
-- Modify the color palette for the default theme
colors = {
fg = " #abb2bf " ,
bg = " #1e222a " ,
} ,
highlights = function ( hl ) -- or a function that returns a new table of colors to set
local C = require " default_theme.colors "
hl.Normal = { fg = C.fg , bg = C.bg }
-- New approach instead of diagnostic_style
hl.DiagnosticError . italic = true
hl.DiagnosticHint . italic = true
hl.DiagnosticInfo . italic = true
hl.DiagnosticWarn . italic = true
return hl
end ,
-- enable or disable highlighting for extra plugins
plugins = {
aerial = true ,
beacon = false ,
bufferline = true ,
dashboard = true ,
highlighturl = true ,
hop = false ,
indent_blankline = true ,
lightspeed = false ,
[ " neo-tree " ] = true ,
notify = true ,
[ " nvim-tree " ] = false ,
[ " nvim-web-devicons " ] = true ,
rainbow = true ,
symbols_outline = false ,
telescope = true ,
vimwiki = false ,
[ " which-key " ] = true ,
} ,
} ,
-- Diagnostics configuration (for vim.diagnostics.config({...})) when diagnostics are on
diagnostics = {
virtual_text = true ,
underline = true ,
} ,
-- Extend LSP configuration
@ -93,20 +144,10 @@ local config = {
-- "pyright"
} ,
formatting = {
-- control auto formatting on save
format_on_save = {
enabled = false , -- enable or disable format on save globally
allow_filetypes = { -- enable format on save for specified filetypes only
-- "go",
} ,
ignore_filetypes = { -- disable format on save for specified filetypes
-- "python",
} ,
format_on_save = false , -- enable or disable auto formatting on save
disabled = { -- disable formatting capabilities for the listed clients
-- "sumneko_lua",
} ,
disabled = { -- disable formatting capabilities for the listed language servers
-- "lua_ls",
} ,
timeout_ms = 1000 , -- default format timeout
-- filter = function(client) -- fully override the default formatting function
-- return true
-- end
@ -121,19 +162,13 @@ local config = {
-- on_attach = function(client, bufnr)
-- end,
-- override the LSP setup handler function based on server name
-- setup_handlers = {
-- -- first function changes the default setup handler
-- function(server, opts) require("lspconfig")[server].setup(opts) end,
-- -- keys for a specific server name will be used for that LSP
-- lua_ls = function(server, opts)
-- -- custom lua_ls setup handler
-- require("lspconfig")["lua_ls"].setup(opts)
-- end,
-- },
-- override the mason server-registration function
-- server_registration = function(server, opts)
-- require("lspconfig")[server].setup(opts)
-- end,
-- Add overrides for LSP server settings, the keys are the name of the server
config = {
[ " server-settings " ] = {
-- example for addings schemas to yamlls
-- yamlls = { -- override table for require("lspconfig").yamlls.setup({...})
-- settings = {
@ -148,9 +183,10 @@ local config = {
-- },
clangd = {
capabilities = { offsetEncoding = " utf-8 " } ,
} ,
}
} ,
} ,
-- Mapping data with "desc" stored directly by vim.keymap.set().
--
-- Please use this mappings table to set keyboard mapping since this is the
@ -159,60 +195,57 @@ local config = {
mappings = {
-- first key is the mode
n = {
[ " <leader>fT " ] = {
function ( ) require ( " telescope.builtin " ) . colorscheme { enable_preview = true } end ,
desc = " Find themes " ,
} ,
-- second key is the lefthand side of the map
-- mappings seen under group name "Buffer"
[ " <leader>bb " ] = { " <cmd>tabnew<cr> " , desc = " New tab " } ,
[ " <leader>bc " ] = { " <cmd>BufferLinePickClose<cr> " , desc = " Pick to close " } ,
[ " <leader>bj " ] = { " <cmd>BufferLinePick<cr> " , desc = " Pick to jump " } ,
[ " <leader>bt " ] = { " <cmd>BufferLineSortByTabs<cr> " , desc = " Sort by tabs " } ,
-- tables with the `name` key will be registered with which-key if it's installed
-- this is useful for naming menus
[ " <leader>b " ] = { name = " Buffers " } ,
-- Trigger Alpha dashboard on close when no buffers are left
[ " <leader>c " ] = {
function ( )
local bufs = vim.fn . getbufinfo { buflisted = true }
require ( " astronvim.utils.buffer " ) . close ( 0 )
if require ( " astronvim.utils " ) . is_available " alpha-nvim " and not bufs [ 2 ] then require ( " alpha " ) . start ( true ) end
end ,
desc = " Close buffer " ,
} ,
-- quick save
-- ["<C-s>"] = { ":w!<cr>", desc = "Save File" }, -- change description but the same command
[ " <leader>uD " ] = { " <cmd>Alpha<cr> " , desc = " Alpha dashboard " } ,
-- Debugger mappings
[ " <leader>dl " ] = { name = " Load launch.json " } ,
[ " <leader>L " ] = {
" <cmd>LiveServer<cr> " ,
desc = " Live server " ,
} ,
-- Config loading
[ " <leader>dlc " ] = {
function ( ) require ( " dap.ext.vscode " ) . load_launchjs ( nil , { cppdbg = { " c " , " cpp " , " asm " } } ) end ,
desc = " C/C++/asm " ,
} ,
[ " <leader>dln " ] = {
function ( )
require ( " dap.ext.vscode " ) . load_launchjs (
nil ,
{ node2 = { " javascript " , " javascriptreact " , " typescriptreact " , " typescript " } }
)
end ,
desc = " Node " ,
} ,
-- Load launch.json for all supported languages
[ " <leader>dla " ] = { function ( ) require ( " dap.ext.vscode " ) . load_launchjs ( nil , nil ) end , desc = " All " } ,
[ " <leader>dlc " ] = { function ( ) require ( " dap.ext.vscode " ) . load_launchjs ( nil , { cppdbg = { " c " , " cpp " , " asm " } } ) end , desc = " C/C++/asm " } ,
-- Function keys mappings
[ " <F5> " ] = { function ( ) require ( " dap " ) . continue ( ) end , desc = " Debugger: Start " } ,
[ " <F17> " ] = { function ( ) require ( " dap " ) . terminate ( ) end , desc = " Debugger: Stop " } , -- Shift+F5
[ " <F29> " ] = { function ( ) require ( " dap " ) . restart_frame ( ) end , desc = " Debugger: Restart " } , -- Control+F5
[ " <F6> " ] = { function ( ) require ( " dap " ) . pause ( ) end , desc = " Debugger: Pause " } ,
[ " <F9> " ] = { function ( ) require ( " dap " ) . toggle_breakpoint ( ) end , desc = " Debugger: Toggle Breakpoint " } ,
[ " <F10> " ] = { function ( ) require ( " dap " ) . step_over ( ) end , desc = " Debugger: Step Over " } ,
[ " <F11> " ] = { function ( ) require ( " dap " ) . step_into ( ) end , desc = " Debugger: Step Into " } ,
[ " <F23> " ] = { function ( ) require ( " dap " ) . step_out ( ) end , desc = " Debugger: Step Out " } , -- Shift+F11
-- Breakpoints
[ " <leader>db " ] = { function ( ) require ( " dap " ) . toggle_breakpoint ( ) end , desc = " Toggle Breakpoint (F9) " } ,
[ " <leader>dB " ] = { function ( ) require ( " dap " ) . clear_breakpoints ( ) end , desc = " Clear Breakpoints " } ,
-- Session actions
[ " <leader>dc " ] = { function ( ) require ( " dap " ) . continue ( ) end , desc = " Start/Continue (F5) " } ,
[ " <leader>dp " ] = { function ( ) require ( " dap " ) . pause ( ) end , desc = " Pause (F6) " } ,
[ " <leader>dr " ] = { function ( ) require ( " dap " ) . restart_frame ( ) end , desc = " Restart (C-F5) " } ,
[ " <leader>dq " ] = { function ( ) require ( " dap " ) . close ( ) end , desc = " Close Session " } ,
[ " <leader>dQ " ] = { function ( ) require ( " dap " ) . terminate ( ) end , desc = " Terminate Session (S-F5) " } ,
-- Step
[ " <leader>di " ] = { function ( ) require ( " dap " ) . step_into ( ) end , desc = " Step Into (F11) " } ,
[ " <leader>do " ] = { function ( ) require ( " dap " ) . step_over ( ) end , desc = " Step Over (F10) " } ,
[ " <leader>dO " ] = { function ( ) require ( " dap " ) . step_out ( ) end , desc = " Step Out (S-F11) " } ,
-- Repls (debugger)
[ " <leader>dR " ] = { function ( ) require ( " dap " ) . repl.toggle ( ) end , desc = " Toggle REPL " } ,
-- Dap-UI
[ " <leader>du " ] = { function ( ) require ( " dapui " ) . toggle ( ) end , desc = " Toggle Debugger UI " } ,
[ " <leader>dh " ] = { function ( ) require ( " dap.ui.widgets " ) . hover ( ) end , desc = " Debugger Hover " } ,
-- Mardown preview
[ " <leader>m " ] = { name = " Markdown " } ,
[ " <leader>mp " ] = { " <cmd>MarkdownPreview<cr> " , desc = " Markdown preview " } ,
[ " <leader>ms " ] = { " <cmd>MarkdownPreviewStop<cr> " , desc = " Markdown preview stop " } ,
[ " <leader>mt " ] = { " <cmd>MarkdownPreviewToggle<cr> " , desc = " Markdown preview toggle " } ,
-- Vimtex mappings
[ " <leader>x " ] = { name = " LaTeX " } ,
[ " <leader>xi " ] = { " <cmd>VimtexInfo<cr> " , desc = " Info " } ,
[ " <leader>xI " ] = { " <cmd>VimtexInfoFull<cr> " , desc = " Full info " } ,
[ " <leader>xt " ] = { " <cmd>VimtexTocOpen<cr> " , desc = " Open table of contents " } ,
@ -235,512 +268,199 @@ local config = {
[ " <leader>xX " ] = { " <cmd>VimtexReloadState<cr> " , desc = " Reload the state for the current buffer " } ,
[ " <leader>xs " ] = { " <cmd>VimtexToggleMain<cr> " , desc = " Set current file as 'current project' " } ,
[ " <leader>xa " ] = { " <cmd>VimtexContextMenu<cr> " , desc = " Show context menu " } ,
-- Trouble, Taglist
[ " <leader>lt " ] = { desc = false , name = " Trouble, Tagbar " } ,
-- Taglist
[ " <leader>ltT " ] = { " <cmd>TlistToggle<cr> " , desc = " Tagbar toggle " } ,
[ " <leader>ft " ] = { " <cmd>TlistToggle<cr> " , desc = " Tagbar toggle " } ,
-- Trouble
[ " <leader> l tx" ] = { " <cmd>TroubleToggle<cr> " , desc = " Toggle Trouble " } ,
[ " <leader> l tw" ] = { " <cmd>TroubleToggle workspace_diagnostics<cr> " , desc = " Workspace diagnostics " } ,
[ " <leader> l td" ] = { " <cmd>TroubleToggle document_diagnostics<cr> " , desc = " Document diagnostics " } ,
[ " <leader> l tq" ] = { " <cmd>TroubleToggle quickfix<cr> " , desc = " Quickfix " } ,
[ " <leader> l tl" ] = { " <cmd>TroubleToggle loclist<cr> " , desc = " Loc List " } ,
[ " <leader> l tR" ] = { " <cmd>TroubleToggle lsp_references<cr> " , desc = " Lsp references " } ,
-- ["<leader>ftt"] = { "<cmd>TodoTrouble<cr>", desc = "Todo Trouble" } ,
--
[ " <leader> t tx" ] = { " <cmd>TroubleToggle<cr> " , desc = " Toggle Trouble " } ,
[ " <leader> t tw" ] = { " <cmd>TroubleToggle workspace_diagnostics<cr> " , desc = " Workspace diagnostics " } ,
[ " <leader> t td" ] = { " <cmd>TroubleToggle document_diagnostics<cr> " , desc = " Document diagnostics " } ,
[ " <leader> t tq" ] = { " <cmd>TroubleToggle quickfix<cr> " , desc = " Quickfix " } ,
[ " <leader> t tl" ] = { " <cmd>TroubleToggle loclist<cr> " , desc = " Loc List " } ,
[ " <leader> t tR" ] = { " <cmd>TroubleToggle lsp_references<cr> " , desc = " Lsp references " } ,
[ " <leader>ttt " ] = { " <cmd>TodoTrouble<cr> " , desc = " Todo Trouble " } ,
-- Autosave
[ " <C-s> " ] = { " <cmd>ASToggle<cr> " , desc = " Toggle autosave " } ,
[ " <leader>fs " ] = { " <cmd>ASToggle<cr> " , desc = " Toggle autosave " } ,
} ,
v = {
-- Carbon code sharing
[ " <leader>s " ] = { " :CarbonNow<CR> " , desc = " Share code on Carbon " , silent = true } ,
-- quick save
-- ["<C-s>"] = { ":w!<cr>", desc = "Save File" }, -- change description but the same command
} ,
t = {
-- setting a mapping to false will disable it
-- ["<esc>"] = false,
} ,
} ,
-- Configure require("lazy").setup() options
lazy = {
defaults = { lazy = true } ,
performance = {
rtp = {
-- customize default disabled vim plugins
disabled_plugins = {
" tohtml " ,
" gzip " ,
" matchit " ,
" zipPlugin " ,
" netrwPlugin " ,
" tarPlugin " ,
" matchparen " ,
} ,
} ,
v = {
-- Carbon code sharing
[ " <leader>c " ] = { " :CarbonNow<CR> " , desc = " Share code on Carbon " , silent = true } ,
} ,
i = {
-- ["<Tab>"] = { "copilot#Accept('<CR>')", silent = true, expr = true },
}
} ,
-- Configure plugins
plugins = {
-- Theme
{
" folke/tokyonight.nvim " ,
event = " UIEnter " ,
} ,
-- You can disable default plugins as follows:
-- { "max397574/better-escape.nvim", enabled = false },
--
-- You can also easily customize additional setup of plugins that is outside of the plugin's setup call
-- {
-- "L3MON4D3/LuaSnip",
-- config = function(plugin, opts)
-- -- include the default astronvim config that calls the setup call
-- require "plugins.configs.luasnip"(plugin, opts)
-- -- add more custom luasnip configuration such as filetype extend or custom snippets
-- local luasnip = require "luasnip"
-- luasnip.filetype_extend("javascript", { "javascriptreact" })
-- end,
-- },
-- {
-- "windwp/nvim-autopairs",
-- config = function(plugin, opts)
-- -- include the default astronvim config that calls the setup call
-- require "plugins.configs.nvim-autopairs"(plugin, opts)
-- -- add more custom autopairs configuration such as custom rules
-- local npairs = require "nvim-autopairs"
-- local Rule = require "nvim-autopairs.rule"
-- local cond = require "nvim-autopairs.conds"
-- npairs.add_rules(
-- {
-- Rule("$", "$", { "tex", "latex" })
-- -- don't add a pair if the next character is %
-- :with_pair(cond.not_after_regex "%%")
-- -- don't add a pair if the previous character is xxx
-- :with_pair(
-- cond.not_before_regex("xxx", 3)
-- )
-- -- don't move right when repeat character
-- :with_move(cond.none())
-- -- don't delete if the next character is xx
-- :with_del(cond.not_after_regex "xx")
-- -- disable adding a newline when you press <cr>
-- :with_cr(cond.none()),
-- },
-- -- disable for .vim files, but it work for another filetypes
-- Rule("a", "a", "-vim")
-- )
-- end,
-- },
-- By adding to the which-key config and using our helper function you can add more which-key registered bindings
-- {
-- "folke/which-key.nvim",
-- config = function(plugin, opts)
-- require "plugins.configs.which-key" (plugin, opts)
-- -- Add bindings which show up as group name
-- local wk = require "which-key"
-- wk.register({
-- m = { name = "Markdown" },
-- ft = { name = "Trouble" },
-- b = { name = "Buffers" },
-- }, { mode = "n", prefix = "<leader>" })
-- end,
-- },
{
" dstein64/vim-startuptime " ,
cmd = " StartupTime " ,
} ,
init = {
-- You can disable default plugins as follows:
-- ["goolord/alpha-nvim"] = { disable = true },
{
-- override nvim-cmp plugin
" hrsh7th/nvim-cmp " ,
dependencies = {
" hrsh7th/cmp-emoji " , -- add cmp source as dependency of cmp
" zbirenbaum/copilot.lua " ,
-- You can also add new plugins here as well:
-- Add plugins, the packer syntax without the "use"
{ " andweeb/presence.nvim " } ,
{ " ellisonleao/carbon-now.nvim " ,
event = " BufRead " ,
config = function ( )
require ( ' carbon-now ' ) . setup ( )
end ,
} ,
-- override the options table that is used in the `require("cmp").setup()` call
opts = function ( _ , opts )
-- opts parameter is the default options table
-- the function is lazy loaded so cmp is able to be required
local cmp = require " cmp "
local luasnip = require " luasnip "
-- modify the mapping part of the table
-- Disable tab completion, use CTRL + J or CTRL + K instead
opts.mapping [ " <CR> " ] = cmp.mapping . confirm { select = false }
opts.mapping [ " <TAB> " ] = cmp.mapping . confirm { select = false }
-- {
-- "ray-x/lsp_signature.nvim",
-- event = "BufRead",
-- config = function()
-- require("lsp_signature").setup()
-- end,
-- },
if luasnip.expandable ( ) then
luasnip.expand ( )
elseif luasnip.expand_or_jumpable ( ) then
luasnip.expand_or_jump ( )
fallback ( )
{
" folke/todo-comments.nvim " ,
event = " BufRead " ,
config = function ( )
require ( " todo-comments " ) . setup ( )
end ,
} ,
{ " folke/trouble.nvim " ,
requires = " kyazdani42/nvim-web-devicons " ,
config = function ( )
require ( " trouble " ) . setup {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
}
end
opts.sources = cmp.config . sources {
-- Copilot Source
{ name = " copilot " , group_index = 2 } ,
{ name = " nvim_lsp " , priority = 1000 } ,
{ name = " luasnip " , priority = 750 } ,
{ name = " buffer " , priority = 500 } ,
{ name = " path " , priority = 250 } ,
{ name = " emoji " , priority = 700 } , -- add new source
}
return opts
end ,
} ,
{
" onsails/lspkind.nvim " ,
opts = {
mode = " symbol " ,
symbol_map = {
-- Copilot icon
Copilot = " " ,
Array = " " ,
Boolean = " ⊨ " ,
Class = " " ,
Constructor = " " ,
Key = " " ,
Namespace = " " ,
Null = " NULL " ,
Number = " # " ,
Object = " " ,
Package = " " ,
Property = " " ,
Reference = " " ,
Snippet = " " ,
String = " " ,
TypeParameter = " " ,
Unit = " " ,
} ,
menu = { } ,
} ,
enabled = vim.g . icons_enabled ,
config = require " plugins.configs.lspkind " ,
} ,
{ " yegappan/taglist " } ,
-- You can also add new plugins here as well:
-- Add plugins, the lazy syntax
-- Code completion
{ " github/copilot.vim " } ,
--Social
{
" jiriks74/presence.nvim " ,
event = " UIEnter " ,
} ,
{
" ellisonleao/carbon-now.nvim " ,
cmd = " CarbonNow " ,
opts = {
base_url = " https://carbon.now.sh/ " ,
open_cmd = " xdg-open " ,
options = {
theme = " night-owl " ,
window_theme = " none " ,
font_family = " Hack " ,
font_size = " 18px " ,
bg = " none " ,
line_numbers = true ,
line_height = " 133% " ,
drop_shadow = false ,
drop_shadow_offset_y = " 20px " ,
drop_shadow_blur = " 68px " ,
width = " 680 " ,
watermark = false ,
} ,
-- Code testing
-- TBD - no support for GoogleTest yet
-- { "nvim-neotest/neotest",
-- requires = {
-- "nvim-lua/plenary.nvim",
-- "nvim-treesitter/nvim-treesitter",
-- },
-- },
-- PlatformIO
{ " normen/vim-pio " } ,
-- Text related
{ " lervag/vimtex " } , -- LaTeX
{
" iamcco/markdown-preview.nvim " ,
run = function ( ) vim.fn [ " mkdp#util#install " ] ( ) end ,
} ,
} ,
-- Comments
{
" folke/todo-comments.nvim " ,
event = " User AstroFile " ,
opts = {
signs = true , -- show icons in the signs column
sign_priority = 8 , -- sign priority
-- keywords recognized as todo comments
keywords = {
FIX = {
icon = " " , -- icon used for the sign, and in search results
color = " error " , -- can be a hex color, or a named color (see below)
alt = { " FIXME " , " BUG " , " FIXIT " , " ISSUE " } , -- a set of other keywords that all map to this FIX keywords
-- signs = false, -- configure signs for some keywords individually
} ,
TODO = { icon = " " , color = " info " } ,
HACK = { icon = " " , color = " warning " } ,
WARN = { icon = " " , color = " warning " , alt = { " WARNING " , " XXX " } } ,
PERF = { icon = " " , alt = { " OPTIM " , " PERFORMANCE " , " OPTIMIZE " } } ,
NOTE = { icon = " " , color = " hint " , alt = { " INFO " } } ,
TEST = { icon = " ⏲ " , color = " test " , alt = { " TESTING " , " PASSED " , " FAILED " } } ,
} ,
gui_style = {
fg = " NONE " , -- The gui style to use for the fg highlight group.
bg = " BOLD " , -- The gui style to use for the bg highlight group.
} ,
merge_keywords = true , -- when true, custom keywords will be merged with the defaults
-- highlighting of the line containing the todo comment
-- * before: highlights before the keyword (typically comment characters)
-- * keyword: highlights of the keyword
-- * after: highlights after the keyword (todo text)
highlight = {
-- enable multine todo comments
multiline = true ,
-- lua pattern to match the next multiline from the start of the matched keyword
multiline_pattern = " ^. " ,
-- extra lines that will be re-evaluated when changing a line
multiline_context = 10 ,
-- "fg" or "bg" or empty
before = " " ,
-- "fg", "bg", "wide", "wide_bg", "wide_fg" or empty. (wide and wide_bg is the same as bg,
-- but will also highlight surrounding characters, wide_fg acts accordingly but with fg)
keyword = " wide " ,
-- "fg" or "bg" or empty
after = " fg " ,
-- pattern or table of patterns, used for highlighting (vim regex)
pattern = [[.*<(KEYWORDS)\s*:]] ,
-- uses treesitter to match keywords in comments only
comments_only = true ,
-- ignore lines longer than this
max_line_len = 400 ,
-- list of file types to exclude highlighting
exclude = { } ,
} ,
-- list of named colors where we try to extract the guifg from the
-- list of highlight groups or use the hex color if hl not found as a fallback
colors = {
error = { " DiagnosticError " , " ErrorMsg " , " #DC2626 " } ,
warning = { " DiagnosticWarn " , " WarningMsg " , " #FBBF24 " } ,
info = { " DiagnosticInfo " , " #2563EB " } ,
hint = { " DiagnosticHint " , " #10B981 " } ,
default = { " Identifier " , " #7C3AED " } ,
test = { " Identifier " , " #FF00FF " } ,
} ,
search = {
command = " rg " ,
args = {
" --color=never " ,
" --no-heading " ,
" --with-filename " ,
" --line-number " ,
" --column " ,
} ,
-- regex that will be used to match keywords.
-- don't replace the (KEYWORDS) placeholder
pattern = [[\b(KEYWORDS):]] , -- ripgrep regex
-- pattern = [[\b(KEYWORDS)\b]], -- match without the extra colon. You'll likely get false positives
} ,
{ " weirongxu/plantuml-previewer.vim " ,
requires = { " tyru/open-browser.vim " } ,
} ,
} ,
-- Show todo comments, warnings, errors, ...
{
" folke/trouble.nvim " ,
-- cmd = { "TroubleToggle", "TodoTrouble" }
cmd = " TroubleToggle " ,
} ,
-- TOC (functions, macros, ...)
{
" yegappan/taglist " ,
cmd = " TlistToggle " ,
} ,
{ " aklt/plantuml-syntax " } ,
-- Code completion
{
" zbirenbaum/copilot.lua " ,
cmd = " Copilot " ,
event = " User AstroFile " ,
config = function ( )
require ( " copilot " ) . setup {
suggestion = { enabled = false } ,
panel = { enabled = false } ,
}
end ,
} ,
{
" zbirenbaum/copilot-cmp " ,
config = function ( ) require ( " copilot_cmp " ) . setup ( ) end ,
event = " User AstroFile " ,
} ,
-- PlatformIO
{
" normen/vim-pio " ,
-- event = "BufEnter"
cmd = { " PIO " , " PIOInit " , " PIOInstall " , " PIOUninstall " , " PIONewProject " , " PIOAddLibrary " , " PIORemoveLibrary " } ,
} ,
-- Jupiter notebooks
{
" kiyoon/jupynium.nvim " ,
build = " pip3 install --user . " ,
event = " BufEnter *.ju.py " ,
opts = {
python_host = " /usr/bin/python3 " ,
-- Basic editor functionality
{
" Pocco81/auto-save.nvim " ,
config = function ( )
require ( " auto-save " ) . setup ( )
end ,
} ,
} ,
{ " stevearc/dressing.nvim " } ,
-- Live server
{
" aurum77/live-server.nvim " ,
run = function ( ) require ( " live_server.util " ) . install ( ) end ,
cmd = { " LiveServer " , " LiveServerStart " , " LiveServerStop " } ,
-- We also support a key value style plugin definition similar to NvChad:
-- ["ray-x/lsp_signature.nvim"] = {
-- event = "BufRead",
-- config = function()
-- require("lsp_signature").setup()
-- end,
-- },
[ " rebelot/heirline.nvim " ] = { commit = " 556666aabb57c227cbb14a996b30b2934e5ff7b1 " } ,
} ,
-- Text related
{
-- LaTeX
" lervag/vimtex " ,
event = " BufEnter *.tex " ,
} ,
{
" iamcco/markdown-preview.nvim " ,
requires = { " tyru/open-browser.vim " } ,
event = " BufEnter *.md " ,
config = function ( ) vim.fn [ " mkdp#util#install " ] ( ) end ,
} ,
-- All other entries override the require("<key>").setup({...}) call for default plugins
[ " null-ls " ] = function ( config ) -- overrides `require("null-ls").setup(config)`
-- config variable is the default configuration table for the setup function call
-- local null_ls = require "null-ls"
-- PlantUML
{
" weirongxu/plantuml-previewer.vim " ,
event = " BufEnter *.uml " ,
} ,
{
" aklt/plantuml-syntax " ,
event = " BufEnter *.uml " ,
} ,
-- Basic editor functionality
{
" Pocco81/auto-save.nvim " ,
event = " User AstroFile " ,
config = function ( ) require ( " auto-save " ) . setup ( ) end ,
} ,
-- Tasks.json
{
" stevearc/overseer.nvim " ,
cmd = {
" OverseerOpen " ,
" OverseerClose " ,
" OverseerToggle " ,
" OverseerSaveBundle " ,
" OverseerLoadBundle " ,
" OverseerDeleteBundle " ,
" OverseerRunCmd " ,
" OverseerRun " ,
" OverseerInfo " ,
" OverseerBuild " ,
" OverseerQuickAction " ,
" OverseerTaskAction " ,
" OverseerClearCache " ,
} ,
opts = { } ,
} ,
-- {
-- "ray-x/lsp_signature.nvim",
-- event = "BufRead",
-- config = function()
-- require("lsp_signature").setup()
-- end,
-- },
-- Plugin entries can also be used to override the default options for plugins as well
{
" goolord/alpha-nvim " ,
opts = function ( _ , opts )
-- customize the dashboard header
opts.section . header.val = {
" ███████ ████████ ███████ ███████ ██ ██ █████ ███████ ██ ██ " ,
" ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ " ,
" ███████ ██ █████ █████ █████ ███████ █████ ██ ██ " ,
" ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ " ,
" ███████ ██ ███████ ██ ██ ██ ██ ██ ██ ███████ ██████ " ,
" " ,
" █████ ███████ ████████ ██████ ██████ " ,
" ██ ██ ██ ██ ██ ██ ██ ██ " ,
" ███████ ███████ ██ ██████ ██ ██ " ,
" ██ ██ ██ ██ ██ ██ ██ ██ " ,
" ██ ██ ███████ ██ ██ ██ ██████ " ,
" " ,
" ███ ██ ██ ██ ██ ███ ███ " ,
" ████ ██ ██ ██ ██ ████ ████ " ,
" ██ ██ ██ ██ ██ ██ ██ ████ ██ " ,
" ██ ██ ██ ██ ██ ██ ██ ██ ██ " ,
" ██ ████ ████ ██ ██ ██ " ,
}
return opts
end ,
} ,
{
" jose-elias-alvarez/null-ls.nvim " ,
opts = function ( _ , config )
-- config variable is the default configuration table for the setup function call
-- local null_ls = require "null-ls"
-- Check supported formatters and linters
-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting
-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
config.sources = {
-- Set a formatter
-- null_ls.builtins.formatting.stylua,
-- null_ls.builtins.formatting.prettier,
}
return config -- return final config table
end ,
} ,
{
" nvim-treesitter/nvim-treesitter " ,
opts = {
-- ensure_installed = { "lua" },
} ,
-- Check supported formatters and linters
-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting
-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
config.sources = {
-- Set a formatter
-- null_ls.builtins.formatting.stylua,
-- null_ls.builtins.formatting.prettier,
}
return config -- return final config table
end ,
treesitter = { -- overrides `require("treesitter").setup(...)`
-- ensure_installed = { "lua" },
} ,
-- use mason-lspconfig to configure LSP installations
{
" williamboman/mason-lspconfig.nvim " ,
-- overrides `require("mason-lspconfig").setup(...)`
opts = {
-- ensure_installed = { "lua_ls" },
} ,
[ " mason-lspconfig " ] = { -- overrides `require("mason-lspconfig").setup(...)`
-- ensure_installed = { "sumneko_lua" },
} ,
-- use mason-null-ls to configure Formatters/Linter installation for null-ls sources
{
" jay-babu/mason-null-ls.nvim " ,
-- overrides `require("mason-null-ls").setup(...)`
opts = {
-- ensure_installed = { "prettier", "stylua" },
} ,
} ,
{
" jay-babu/mason-nvim-dap.nvim " ,
-- overrides `require("mason-nvim-dap").setup(...)`
opts = {
-- ensure_installed = { "python" },
} ,
[ " mason-null-ls " ] = { -- overrides `require("mason-null-ls").setup(...)`
-- ensure_installed = { "prettier", "stylua" },
} ,
} ,
-- Customize Heirline options
heirline = {
-- -- Customize different separators between sections
-- separators = {
-- breadcrumbs = " > ",
-- tab = { "", "" },
-- },
-- -- Customize colors for each element each element has a `_fg` and a `_bg`
-- colors = function(colors)
-- colors.git_branch_fg = require("astronvim.utils").get_hlgroup "Conditional"
-- return colors
-- end,
-- -- Customize attributes of highlighting in Heirline components
-- attributes = {
-- -- styling choices for each heirline element, check possible attributes with `:h attr-list`
-- git_branch = { bold = true }, -- bold the git branch statusline component
-- },
-- -- Customize if icons should be highlighted
-- icon_highlights = {
-- breadcrumbs = false, -- LSP symbols in the breadcrumbs
-- file_icon = {
-- winbar = false, -- Filetype icon in the winbar inactive windows
-- statusline = true, -- Filetype icon in the statusline
-- tabline = true, -- Filetype icon in the tabline
-- },
-- },
-- LuaSnip Options
luasnip = {
-- Add paths for including more VS Code style snippets in luasnip
vscode_snippet_paths = { } ,
-- Extend filetypes
filetype_extend = {
-- javascript = { "javascriptreact" },
} ,
} ,
-- CMP Source Priorities
-- modify here the priorities of default cmp sources
-- higher value == higher priority
-- The value can also be set to a boolean for disabling default sources:
-- false == disabled
-- true == 1000
cmp = {
source_priority = {
nvim_lsp = 1000 ,
luasnip = 750 ,
buffer = 500 ,
path = 250 ,
} ,
} ,
-- Modify which-key registration (Use this with mappings table in the above.)
[ " which-key " ] = {
-- Add bindings which show up as group name
register = {
-- first key is the mode, n == normal mode
n = {
-- second key is the prefix, <leader> prefixes
[ " <leader> " ] = {
-- third key is the key to bring up next level and its displayed
-- group name in which-key top level menu
[ " b " ] = { name = " Buffer " } ,
[ " d " ] = {
name = " Debugging " ,
[ " l " ] = { name = " Load launch.json " } ,
} ,
[ " m " ] = { name = " Markdown " } ,
[ " x " ] = { name = " LaTeX " } ,
[ " t " ] = {
name = " Terminal " ,
[ " t " ] = { name = " Trouble " } ,
} ,
} ,
} ,
} ,
} ,
-- This function is run last and is a good place to configuring
-- augroups/autocommands and custom filetypes also this just pure lua so
@ -758,6 +478,24 @@ local config = {
-- ["~/%.config/foo/.*"] = "fooscript",
-- },
-- }
local function alpha_on_bye ( cmd )
local bufs = vim.fn . getbufinfo { buflisted = true }
vim.cmd ( cmd )
if require ( " core.utils " ) . is_available " alpha-nvim " and not bufs [ 2 ] then
require ( " alpha " ) . start ( true )
end
end
vim.keymap . del ( " n " , " <leader>c " )
if require ( " core.utils " ) . is_available " bufdelete.nvim " then
vim.keymap . set ( " n " , " <leader>c " , function ( )
alpha_on_bye " Bdelete! "
end , { desc = " Close buffer " } )
else
vim.keymap . set ( " n " , " <leader>c " , function ( )
alpha_on_bye " bdelete! "
end , { desc = " Close buffer " } )
end
end ,
}