diff --git a/init.lua b/init.lua index bb950b4..d64681b 100644 --- a/init.lua +++ b/init.lua @@ -1,22 +1,23 @@ -- 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 local config = { -- Configure AstroNvim updates updater = { - remote = "origin", -- remote to use - 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) - commit = nil, -- commit hash (NIGHTLY ONLY) - pin_plugins = nil, -- nil, true, false (nil will pin plugins on stable only) - skip_prompts = false, -- skip prompts about breaking changes + remote = "origin", -- remote to use + 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) + commit = nil, -- commit hash (NIGHTLY ONLY) + 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 + 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 -- ["remote2"] = "github_user/repo", -- GitHub user/repo shortcut, @@ -24,7 +25,7 @@ local config = { -- }, }, -- Set colorscheme to use - colorscheme = "default_theme", + colorscheme = "astrodark", -- Add highlight groups in any theme highlights = { -- init = { -- this table overrides highlights in all themes @@ -34,32 +35,28 @@ local config = { -- Normal = { bg = "#000000" }, -- }, }, - -- set vim options here (vim.. = value) + -- set vim options here (vim.. = value) options = { opt = { -- set to true or false etc. relativenumber = true, -- sets vim.opt.relativenumber - number = true, -- sets vim.opt.number - 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", + number = true, -- sets vim.opt.number + spell = false, -- sets vim.opt.spell + signcolumn = "auto", -- sets vim.opt.signcolumn to auto + wrap = false, -- sets vim.opt.wrap }, g = { - 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 - + mapleader = " ", -- sets vim.g.mapleader + autoformat_enabled = true, -- enable or disable auto formatting at start (lsp.formatting.format_on_save must be enabled) + cmp_enabled = true, -- enable completion at start + autopairs_enabled = true, -- enable autopairs at start + diagnostics_mode = 3, -- set the visibility of diagnostics in the UI (0=off, 1=only show in status line, 2=virtual text off, 3=all on) + icons_enabled = true, -- disable icons in the UI (disable if no nerd font is available, requires :PackerSync after changing) + ui_notifications_enabled = true, -- disable notifications when toggling UI elements + -- Copilot copilot_no_tab_map = true, copilot_assume_mapped = true, copilot_tab_fallback = "", - -- Taglist Tlist_Use_Right_Window = 1, Tlist_GainFocus_On_ToggleOpen = 1, @@ -77,64 +74,8 @@ 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 @@ -144,10 +85,20 @@ local config = { -- "pyright" }, formatting = { - format_on_save = false, -- enable or disable auto formatting on save - disabled = { -- disable formatting capabilities for the listed clients - -- "sumneko_lua", + -- 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", + }, }, + 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 @@ -156,19 +107,33 @@ local config = { mappings = { n = { -- ["lf"] = false -- disable formatting keymap + ["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", + }, }, }, -- add to the global LSP on_attach function -- on_attach = function(client, bufnr) -- end, - -- override the mason server-registration function - -- server_registration = function(server, opts) - -- require("lspconfig")[server].setup(opts) - -- 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, + -- }, -- Add overrides for LSP server settings, the keys are the name of the server - ["server-settings"] = { + config = { -- example for addings schemas to yamlls -- yamlls = { -- override table for require("lspconfig").yamlls.setup({...}) -- settings = { @@ -183,10 +148,9 @@ 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 @@ -201,51 +165,51 @@ local config = { ["bc"] = { "BufferLinePickClose", desc = "Pick to close" }, ["bj"] = { "BufferLinePick", desc = "Pick to jump" }, ["bt"] = { "BufferLineSortByTabs", desc = "Sort by tabs" }, - ["uD"] = { "Alpha", desc = "Alpha dashboard" }, + -- tables with the `name` key will be registered with which-key if it's installed + -- this is useful for naming menus + ["b"] = { name = "Buffers" }, + -- quick save + -- [""] = { ":w!", desc = "Save File" }, -- change description but the same command -- Debugger mappings + ["d"] = { name = "Debugger" }, + ["dl"] = { name = "Load launch.json" }, -- Config loading - ["dlc"] = { function() require("dap.ext.vscode").load_launchjs(nil, { cppdbg = { "c", "cpp", "asm" } }) end, desc = "C/C++/asm" }, - + ["dlc"] = { function() require("dap.ext.vscode").load_launchjs(nil, { cppdbg = { "c", "cpp", "asm" } }) end, desc = + "C/C++/asm" }, -- Function keys mappings [""] = { function() require("dap").continue() end, desc = "Debugger: Start" }, - [""] = { function() require("dap").terminate() end, desc = "Debugger: Stop" }, -- Shift+F5 + [""] = { function() require("dap").terminate() end, desc = "Debugger: Stop" }, -- Shift+F5 [""] = { function() require("dap").restart_frame() end, desc = "Debugger: Restart" }, -- Control+F5 [""] = { function() require("dap").pause() end, desc = "Debugger: Pause" }, [""] = { function() require("dap").toggle_breakpoint() end, desc = "Debugger: Toggle Breakpoint" }, [""] = { function() require("dap").step_over() end, desc = "Debugger: Step Over" }, [""] = { function() require("dap").step_into() end, desc = "Debugger: Step Into" }, [""] = { function() require("dap").step_out() end, desc = "Debugger: Step Out" }, -- Shift+F11 - -- Breakpoints ["db"] = { function() require("dap").toggle_breakpoint() end, desc = "Toggle Breakpoint (F9)" }, ["dB"] = { function() require("dap").clear_breakpoints() end, desc = "Clear Breakpoints" }, - -- Session actions ["dc"] = { function() require("dap").continue() end, desc = "Start/Continue (F5)" }, ["dp"] = { function() require("dap").pause() end, desc = "Pause (F6)" }, ["dr"] = { function() require("dap").restart_frame() end, desc = "Restart (C-F5)" }, ["dq"] = { function() require("dap").close() end, desc = "Close Session" }, ["dQ"] = { function() require("dap").terminate() end, desc = "Terminate Session (S-F5)" }, - -- Step ["di"] = { function() require("dap").step_into() end, desc = "Step Into (F11)" }, ["do"] = { function() require("dap").step_over() end, desc = "Step Over (F10)" }, ["dO"] = { function() require("dap").step_out() end, desc = "Step Out (S-F11)" }, - -- Repls (debugger) ["dR"] = { function() require("dap").repl.toggle() end, desc = "Toggle REPL" }, - -- Dap-UI ["du"] = { function() require("dapui").toggle() end, desc = "Toggle Debugger UI" }, ["dh"] = { function() require("dap.ui.widgets").hover() end, desc = "Debugger Hover" }, - -- Mardown preview ["mp"] = { "MarkdownPreview", desc = "Markdown preview" }, ["ms"] = { "MarkdownPreviewStop", desc = "Markdown preview stop" }, ["mt"] = { "MarkdownPreviewToggle", desc = "Markdown preview toggle" }, - -- Vimtex mappings + ["x"] = { name = "LaTeX" }, ["xi"] = { "VimtexInfo", desc = "Info" }, ["xI"] = { "VimtexInfoFull", desc = "Full info" }, ["xt"] = { "VimtexTocOpen", desc = "Open table of contents" }, @@ -268,200 +232,329 @@ local config = { ["xX"] = { "VimtexReloadState", desc = "Reload the state for the current buffer" }, ["xs"] = { "VimtexToggleMain", desc = "Set current file as 'current project'" }, ["xa"] = { "VimtexContextMenu", desc = "Show context menu" }, - -- Taglist - ["ft"] = { "TlistToggle", desc = "Tagbar toggle " }, - + ["fT"] = { "TlistToggle", desc = "Tagbar toggle " }, -- Trouble - ["ttx"] = { "TroubleToggle", desc = "Toggle Trouble" }, - ["ttw"] = { "TroubleToggle workspace_diagnostics", desc = "Workspace diagnostics" }, - ["ttd"] = { "TroubleToggle document_diagnostics", desc = "Document diagnostics" }, - ["ttq"] = { "TroubleToggle quickfix", desc = "Quickfix" }, - ["ttl"] = { "TroubleToggle loclist", desc = "Loc List" }, - ["ttR"] = { "TroubleToggle lsp_references", desc = "Lsp references" }, - ["ttt"] = { "TodoTrouble", desc = "Todo Trouble" }, - + ["ft"] = { name = "trouble" }, + ["ftx"] = { "TroubleToggle", desc = "Toggle Trouble" }, + ["ftw"] = { "TroubleToggle workspace_diagnostics", desc = "Workspace diagnostics" }, + ["ftd"] = { "TroubleToggle document_diagnostics", desc = "Document diagnostics" }, + ["ftq"] = { "TroubleToggle quickfix", desc = "Quickfix" }, + ["ftl"] = { "TroubleToggle loclist", desc = "Loc List" }, + ["ftR"] = { "TroubleToggle lsp_references", desc = "Lsp references" }, + ["ftt"] = { "TodoTrouble", desc = "Todo Trouble" }, -- Autosave [""] = { "ASToggle", desc = "Toggle autosave" }, - - - -- quick save - -- [""] = { ":w!", desc = "Save File" }, -- change description but the same command + ["fs"] = { "ASToggle", desc = "Toggle autosave" }, + -- Carbon code sharing + ["S"] = { "CarbonNow", desc = "Share code on Carbon", silent = true }, + }, + v = { + -- Carbon code sharing + ["c"] = { ":CarbonNow", desc = "Share code on Carbon", silent = true }, }, t = { -- setting a mapping to false will disable it -- [""] = false, }, - v = { - -- Carbon code sharing - ["c"] = { ":CarbonNow", desc = "Share code on Carbon", silent = true }, - - }, - i = { - -- [""] = { "copilot#Accept('')", silent = true, expr = true }, - } }, - -- Configure plugins - plugins = { - init = { - -- You can disable default plugins as follows: - -- ["goolord/alpha-nvim"] = { disable = true }, - - -- 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, - }, - -- { - -- "ray-x/lsp_signature.nvim", - -- event = "BufRead", - -- config = function() - -- require("lsp_signature").setup() - -- end, - -- }, - - { - "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 - }, - { "yegappan/taglist" }, - - -- Code completion - { "github/copilot.vim" }, - - -- 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, - }, - { "weirongxu/plantuml-previewer.vim", - requires = { "tyru/open-browser.vim" }, - }, - { "aklt/plantuml-syntax" }, - - -- Basic editor functionality - { - "Pocco81/auto-save.nvim", - config = function() - require("auto-save").setup() - end, - }, - - -- 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" }, - }, - - -- All other entries override the require("").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" - - -- 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 - ["mason-lspconfig"] = { -- overrides `require("mason-lspconfig").setup(...)` - -- ensure_installed = { "sumneko_lua" }, - }, - -- use mason-null-ls to configure Formatters/Linter installation for null-ls sources - ["mason-null-ls"] = { -- overrides `require("mason-null-ls").setup(...)` - -- ensure_installed = { "prettier", "stylua" }, - }, - }, - -- 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, prefixes - [""] = { - -- 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" }, - }, + -- 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", }, }, }, }, + -- Configure plugins + plugins = { + -- 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) + -- require "plugins.configs.luasnip"(plugin, opts) -- include the default astronvim config that calls the setup call + -- -- 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) + -- require "plugins.configs.nvim-autopairs"(plugin, opts) -- include the default astronvim config that calls the setup call + -- -- 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 + -- :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({ + -- b = { name = "Buffer" }, + -- }, { mode = "n", prefix = "" }) + -- end, + -- }, + -- + + { + -- override nvim-cmp plugin + "hrsh7th/nvim-cmp", + -- 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 + opts.mapping[""] = cmp.mapping.confirm { select = false } + opts.mapping[""] = cmp.mapping(function(fallback) + vim.api.nvim_feedkeys(vim.fn['copilot#Accept'](vim.api.nvim_replace_termcodes('', true, true, true)), 'n', + true) + end) + if luasnip.expandable() then + luasnip.expand() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + fallback() + end + opts.experimental = { + ghost_text = false -- this feature conflict with copilot.vim's preview. + } + + -- return the new table to be used + return opts + end, + }, + + -- You can also add new plugins here as well: + -- Add plugins, the lazy syntax + + -- Plugins for other plugins + { "tyru/open-browser.vim", cmd = { "OPenBrowser", "OpenBrowserSearch", "OpenBrowserSmartSearch" } }, + + --Social + { + "andweeb/presence.nvim", + event = "UIEnter" + }, + { + "ellisonleao/carbon-now.nvim", + cmd = "CarbonNow", + config = function() + require('carbon-now').setup() + end, + }, + + -- Comments + { + "folke/todo-comments.nvim", + event = "BufEnter", + config = function() + require("todo-comments").setup() + end + }, + -- Show todo comments, warnings, errors, ... + { + "folke/trouble.nvim", + cmd = { "TroubleToggle", "TodoTrouble" }, + 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 + }, + -- TOC (functions, macros, ...) + { + "yegappan/taglist", + cmd = "TlistToggle" + }, + + -- Code completion + { + "github/copilot.vim", + event = "UIEnter" + }, + + -- PlatformIO + { + "normen/vim-pio", + event = "BufEnter" + }, + + -- Text related + { + -- LaTeX + "lervag/vimtex", + event = "BufEnter *.tex" + }, + { + "iamcco/markdown-preview.nvim", + event = "BufEnter *.md", + run = function() vim.fn["mkdp#util#install"]() end, + }, + + -- PlantUML + { + "weirongxu/plantuml-previewer.vim", + event = "BufEnter *.uml", + }, + { + "aklt/plantuml-syntax", + event = "BufEnter *.uml" + }, + + -- Basic editor functionality + { + "Pocco81/auto-save.nvim", + event = "UIEnter", + config = function() + require("auto-save").setup() + end, + }, + + -- { + -- "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" }, + }, + }, + -- use mason-lspconfig to configure LSP installations + { + "williamboman/mason-lspconfig.nvim", + -- overrides `require("mason-lspconfig").setup(...)` + opts = { + -- ensure_installed = { "lua_ls" }, + }, + }, + -- 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" }, + }, + }, + }, + -- 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 + -- }, + -- }, + }, -- This function is run last and is a good place to configuring -- augroups/autocommands and custom filetypes also this just pure lua so -- anything that doesn't fit in the normal config locations above can go here @@ -478,24 +571,6 @@ 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", "c") - if require("core.utils").is_available "bufdelete.nvim" then - vim.keymap.set("n", "c", function() - alpha_on_bye "Bdelete!" - end, { desc = "Close buffer" }) - else - vim.keymap.set("n", "c", function() - alpha_on_bye "bdelete!" - end, { desc = "Close buffer" }) - end end, } diff --git a/plugins/cmp.lua b/plugins/cmp.lua deleted file mode 100644 index b247eed..0000000 --- a/plugins/cmp.lua +++ /dev/null @@ -1,25 +0,0 @@ -local cmp = require "cmp" -local luasnip = require "luasnip" -return { - preselect = cmp.PreselectMode.None, - mapping = { - [""] = cmp.mapping.confirm { select = false }, - [""] = cmp.mapping(function(fallback) - vim.api.nvim_feedkeys(vim.fn['copilot#Accept'](vim.api.nvim_replace_termcodes('', true, true, true)), 'n', - true) - end) - -- if luasnip.expandable() then - -- luasnip.expand() - -- elseif luasnip.expand_or_jumpable() then - -- luasnip.expand_or_jump() - -- fallback() - -- end - -- end, { - -- "i", - -- "s", - -- }), - }, - experimental = { - ghost_text = false -- this feature conflict with copilot.vim's preview. - } -}