summaryrefslogtreecommitdiffstats
path: root/dot_config/nvim/lua
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--dot_config/nvim/lua/community.lua12
-rw-r--r--dot_config/nvim/lua/lazy_setup.lua32
-rw-r--r--dot_config/nvim/lua/plugins/astrocore.lua85
-rw-r--r--dot_config/nvim/lua/plugins/astrolsp.lua105
-rw-r--r--dot_config/nvim/lua/plugins/astroui.lua39
-rw-r--r--dot_config/nvim/lua/plugins/mason.lua28
-rw-r--r--dot_config/nvim/lua/plugins/none-ls.lua24
-rw-r--r--dot_config/nvim/lua/plugins/treesitter.lua15
-rw-r--r--dot_config/nvim/lua/plugins/user.lua88
-rw-r--r--dot_config/nvim/lua/polish.lua5
10 files changed, 433 insertions, 0 deletions
diff --git a/dot_config/nvim/lua/community.lua b/dot_config/nvim/lua/community.lua
new file mode 100644
index 0000000..c842899
--- /dev/null
+++ b/dot_config/nvim/lua/community.lua
@@ -0,0 +1,12 @@
+if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
+
+-- AstroCommunity: import any community modules here
+-- We import this file in `lazy_setup.lua` before the `plugins/` folder.
+-- This guarantees that the specs are processed before any user plugins.
+
+---@type LazySpec
+return {
+ "AstroNvim/astrocommunity",
+ { import = "astrocommunity.pack.lua" },
+ -- import/override with your plugins folder
+}
diff --git a/dot_config/nvim/lua/lazy_setup.lua b/dot_config/nvim/lua/lazy_setup.lua
new file mode 100644
index 0000000..4d9552f
--- /dev/null
+++ b/dot_config/nvim/lua/lazy_setup.lua
@@ -0,0 +1,32 @@
+require("lazy").setup({
+ {
+ "AstroNvim/AstroNvim",
+ version = "^5", -- Remove version tracking to elect for nightly AstroNvim
+ import = "astronvim.plugins",
+ opts = { -- AstroNvim options must be set here with the `import` key
+ mapleader = " ", -- This ensures the leader key must be configured before Lazy is set up
+ maplocalleader = ",", -- This ensures the localleader key must be configured before Lazy is set up
+ icons_enabled = true, -- Set to false to disable icons (if no Nerd Font is available)
+ pin_plugins = nil, -- Default will pin plugins when tracking `version` of AstroNvim, set to true/false to override
+ update_notifications = true, -- Enable/disable notification about running `:Lazy update` twice to update pinned plugins
+ },
+ },
+ { import = "community" },
+ { import = "plugins" },
+} --[[@as LazySpec]], {
+ -- Configure any other `lazy.nvim` configuration options here
+ install = { colorscheme = { "astrotheme", "habamax" } },
+ ui = { backdrop = 100 },
+ performance = {
+ rtp = {
+ -- disable some rtp plugins, add more to your liking
+ disabled_plugins = {
+ "gzip",
+ "netrwPlugin",
+ "tarPlugin",
+ "tohtml",
+ "zipPlugin",
+ },
+ },
+ },
+} --[[@as LazyConfig]])
diff --git a/dot_config/nvim/lua/plugins/astrocore.lua b/dot_config/nvim/lua/plugins/astrocore.lua
new file mode 100644
index 0000000..03d7441
--- /dev/null
+++ b/dot_config/nvim/lua/plugins/astrocore.lua
@@ -0,0 +1,85 @@
+if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
+
+-- AstroCore provides a central place to modify mappings, vim options, autocommands, and more!
+-- Configuration documentation can be found with `:h astrocore`
+-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
+-- as this provides autocomplete and documentation while editing
+
+---@type LazySpec
+return {
+ "AstroNvim/astrocore",
+ ---@type AstroCoreOpts
+ opts = {
+ -- Configure core features of AstroNvim
+ features = {
+ large_buf = { size = 1024 * 256, lines = 10000 }, -- set global limits for large files for disabling features like treesitter
+ autopairs = true, -- enable autopairs at start
+ cmp = true, -- enable completion at start
+ diagnostics = { virtual_text = true, virtual_lines = false }, -- diagnostic settings on startup
+ highlighturl = true, -- highlight URLs at start
+ notifications = true, -- enable notifications at start
+ },
+ -- Diagnostics configuration (for vim.diagnostics.config({...})) when diagnostics are on
+ diagnostics = {
+ virtual_text = true,
+ underline = true,
+ },
+ -- passed to `vim.filetype.add`
+ filetypes = {
+ -- see `:h vim.filetype.add` for usage
+ extension = {
+ foo = "fooscript",
+ },
+ filename = {
+ [".foorc"] = "fooscript",
+ },
+ pattern = {
+ [".*/etc/foo/.*"] = "fooscript",
+ },
+ },
+ -- vim options can be configured here
+ options = {
+ opt = { -- vim.opt.<key>
+ relativenumber = true, -- sets vim.opt.relativenumber
+ number = true, -- sets vim.opt.number
+ spell = false, -- sets vim.opt.spell
+ signcolumn = "yes", -- sets vim.opt.signcolumn to yes
+ wrap = false, -- sets vim.opt.wrap
+ },
+ g = { -- vim.g.<key>
+ -- configure global vim variables (vim.g)
+ -- NOTE: `mapleader` and `maplocalleader` must be set in the AstroNvim opts or before `lazy.setup`
+ -- This can be found in the `lua/lazy_setup.lua` file
+ },
+ },
+ -- Mappings can be configured through AstroCore as well.
+ -- NOTE: keycodes follow the casing in the vimdocs. For example, `<Leader>` must be capitalized
+ mappings = {
+ -- first key is the mode
+ n = {
+ -- second key is the lefthand side of the map
+
+ -- navigate buffer tabs
+ ["]b"] = { function() require("astrocore.buffer").nav(vim.v.count1) end, desc = "Next buffer" },
+ ["[b"] = { function() require("astrocore.buffer").nav(-vim.v.count1) end, desc = "Previous buffer" },
+
+ -- mappings seen under group name "Buffer"
+ ["<Leader>bd"] = {
+ function()
+ require("astroui.status.heirline").buffer_picker(
+ function(bufnr) require("astrocore.buffer").close(bufnr) end
+ )
+ end,
+ desc = "Close buffer from tabline",
+ },
+
+ -- tables with just a `desc` key will be registered with which-key if it's installed
+ -- this is useful for naming menus
+ -- ["<Leader>b"] = { desc = "Buffers" },
+
+ -- setting a mapping to false will disable it
+ -- ["<C-S>"] = false,
+ },
+ },
+ },
+}
diff --git a/dot_config/nvim/lua/plugins/astrolsp.lua b/dot_config/nvim/lua/plugins/astrolsp.lua
new file mode 100644
index 0000000..720b9d3
--- /dev/null
+++ b/dot_config/nvim/lua/plugins/astrolsp.lua
@@ -0,0 +1,105 @@
+if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
+
+-- AstroLSP allows you to customize the features in AstroNvim's LSP configuration engine
+-- Configuration documentation can be found with `:h astrolsp`
+-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
+-- as this provides autocomplete and documentation while editing
+
+---@type LazySpec
+return {
+ "AstroNvim/astrolsp",
+ ---@type AstroLSPOpts
+ opts = {
+ -- Configuration table of features provided by AstroLSP
+ features = {
+ codelens = true, -- enable/disable codelens refresh on start
+ inlay_hints = false, -- enable/disable inlay hints on start
+ semantic_tokens = true, -- enable/disable semantic token highlighting
+ },
+ -- customize lsp formatting options
+ formatting = {
+ -- control auto formatting on save
+ format_on_save = {
+ enabled = true, -- 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
+ -- disable lua_ls formatting capability if you want to use StyLua to format your lua code
+ -- "lua_ls",
+ },
+ timeout_ms = 1000, -- default format timeout
+ -- filter = function(client) -- fully override the default formatting function
+ -- return true
+ -- end
+ },
+ -- enable servers that you already have installed without mason
+ servers = {
+ -- "pyright"
+ },
+ -- customize language server configuration options passed to `lspconfig`
+ ---@diagnostic disable: missing-fields
+ config = {
+ -- clangd = { capabilities = { offsetEncoding = "utf-8" } },
+ },
+ -- customize how language servers are attached
+ handlers = {
+ -- a function without a key is simply the default handler, functions take two parameters, the server name and the configured options table for that server
+ -- function(server, opts) require("lspconfig")[server].setup(opts) end
+
+ -- the key is the server that is being setup with `lspconfig`
+ -- rust_analyzer = false, -- setting a handler to false will disable the set up of that language server
+ -- pyright = function(_, opts) require("lspconfig").pyright.setup(opts) end -- or a custom handler function can be passed
+ },
+ -- Configure buffer local auto commands to add when attaching a language server
+ autocmds = {
+ -- first key is the `augroup` to add the auto commands to (:h augroup)
+ lsp_codelens_refresh = {
+ -- Optional condition to create/delete auto command group
+ -- can either be a string of a client capability or a function of `fun(client, bufnr): boolean`
+ -- condition will be resolved for each client on each execution and if it ever fails for all clients,
+ -- the auto commands will be deleted for that buffer
+ cond = "textDocument/codeLens",
+ -- cond = function(client, bufnr) return client.name == "lua_ls" end,
+ -- list of auto commands to set
+ {
+ -- events to trigger
+ event = { "InsertLeave", "BufEnter" },
+ -- the rest of the autocmd options (:h nvim_create_autocmd)
+ desc = "Refresh codelens (buffer)",
+ callback = function(args)
+ if require("astrolsp").config.features.codelens then vim.lsp.codelens.refresh { bufnr = args.buf } end
+ end,
+ },
+ },
+ },
+ -- mappings to be set up on attaching of a language server
+ mappings = {
+ n = {
+ -- a `cond` key can provided as the string of a server capability to be required to attach, or a function with `client` and `bufnr` parameters from the `on_attach` that returns a boolean
+ gD = {
+ function() vim.lsp.buf.declaration() end,
+ desc = "Declaration of current symbol",
+ cond = "textDocument/declaration",
+ },
+ ["<Leader>uY"] = {
+ function() require("astrolsp.toggles").buffer_semantic_tokens() end,
+ desc = "Toggle LSP semantic highlight (buffer)",
+ cond = function(client)
+ return client.supports_method "textDocument/semanticTokens/full" and vim.lsp.semantic_tokens ~= nil
+ end,
+ },
+ },
+ },
+ -- A custom `on_attach` function to be run after the default `on_attach` function
+ -- takes two parameters `client` and `bufnr` (`:h lspconfig-setup`)
+ on_attach = function(client, bufnr)
+ -- this would disable semanticTokensProvider for all clients
+ -- client.server_capabilities.semanticTokensProvider = nil
+ end,
+ },
+}
diff --git a/dot_config/nvim/lua/plugins/astroui.lua b/dot_config/nvim/lua/plugins/astroui.lua
new file mode 100644
index 0000000..737a2fb
--- /dev/null
+++ b/dot_config/nvim/lua/plugins/astroui.lua
@@ -0,0 +1,39 @@
+if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
+
+-- AstroUI provides the basis for configuring the AstroNvim User Interface
+-- Configuration documentation can be found with `:h astroui`
+-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
+-- as this provides autocomplete and documentation while editing
+
+---@type LazySpec
+return {
+ "AstroNvim/astroui",
+ ---@type AstroUIOpts
+ opts = {
+ -- change colorscheme
+ colorscheme = "astrodark",
+ -- AstroUI allows you to easily modify highlight groups easily for any and all colorschemes
+ highlights = {
+ init = { -- this table overrides highlights in all themes
+ -- Normal = { bg = "#000000" },
+ },
+ astrodark = { -- a table of overrides/changes when applying the astrotheme theme
+ -- Normal = { bg = "#000000" },
+ },
+ },
+ -- Icons can be configured throughout the interface
+ icons = {
+ -- configure the loading of the lsp in the status line
+ LSPLoading1 = "⠋",
+ LSPLoading2 = "⠙",
+ LSPLoading3 = "⠹",
+ LSPLoading4 = "⠸",
+ LSPLoading5 = "⠼",
+ LSPLoading6 = "⠴",
+ LSPLoading7 = "⠦",
+ LSPLoading8 = "⠧",
+ LSPLoading9 = "⠇",
+ LSPLoading10 = "⠏",
+ },
+ },
+}
diff --git a/dot_config/nvim/lua/plugins/mason.lua b/dot_config/nvim/lua/plugins/mason.lua
new file mode 100644
index 0000000..2d79b5f
--- /dev/null
+++ b/dot_config/nvim/lua/plugins/mason.lua
@@ -0,0 +1,28 @@
+if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
+
+-- Customize Mason
+
+---@type LazySpec
+return {
+ -- use mason-tool-installer for automatically installing Mason packages
+ {
+ "WhoIsSethDaniel/mason-tool-installer.nvim",
+ -- overrides `require("mason-tool-installer").setup(...)`
+ opts = {
+ -- Make sure to use the names found in `:Mason`
+ ensure_installed = {
+ -- install language servers
+ "lua-language-server",
+
+ -- install formatters
+ "stylua",
+
+ -- install debuggers
+ "debugpy",
+
+ -- install any other package
+ "tree-sitter-cli",
+ },
+ },
+ },
+}
diff --git a/dot_config/nvim/lua/plugins/none-ls.lua b/dot_config/nvim/lua/plugins/none-ls.lua
new file mode 100644
index 0000000..2b0ed18
--- /dev/null
+++ b/dot_config/nvim/lua/plugins/none-ls.lua
@@ -0,0 +1,24 @@
+if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
+
+-- Customize None-ls sources
+
+---@type LazySpec
+return {
+ "nvimtools/none-ls.nvim",
+ opts = function(_, opts)
+ -- opts 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/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/formatting
+ -- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
+
+ -- Only insert new sources, do not replace the existing ones
+ -- (If you wish to replace, use `opts.sources = {}` instead of the `list_insert_unique` function)
+ opts.sources = require("astrocore").list_insert_unique(opts.sources, {
+ -- Set a formatter
+ -- null_ls.builtins.formatting.stylua,
+ -- null_ls.builtins.formatting.prettier,
+ })
+ end,
+}
diff --git a/dot_config/nvim/lua/plugins/treesitter.lua b/dot_config/nvim/lua/plugins/treesitter.lua
new file mode 100644
index 0000000..94436aa
--- /dev/null
+++ b/dot_config/nvim/lua/plugins/treesitter.lua
@@ -0,0 +1,15 @@
+if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
+
+-- Customize Treesitter
+
+---@type LazySpec
+return {
+ "nvim-treesitter/nvim-treesitter",
+ opts = {
+ ensure_installed = {
+ "lua",
+ "vim",
+ -- add more arguments for adding more treesitter parsers
+ },
+ },
+}
diff --git a/dot_config/nvim/lua/plugins/user.lua b/dot_config/nvim/lua/plugins/user.lua
new file mode 100644
index 0000000..b7de6df
--- /dev/null
+++ b/dot_config/nvim/lua/plugins/user.lua
@@ -0,0 +1,88 @@
+if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
+
+-- You can also add or configure plugins by creating files in this `plugins/` folder
+-- PLEASE REMOVE THE EXAMPLES YOU HAVE NO INTEREST IN BEFORE ENABLING THIS FILE
+-- Here are some examples:
+
+---@type LazySpec
+return {
+
+ -- == Examples of Adding Plugins ==
+
+ "andweeb/presence.nvim",
+ {
+ "ray-x/lsp_signature.nvim",
+ event = "BufRead",
+ config = function() require("lsp_signature").setup() end,
+ },
+
+ -- == Examples of Overriding Plugins ==
+
+ -- customize dashboard options
+ {
+ "folke/snacks.nvim",
+ opts = {
+ dashboard = {
+ preset = {
+ header = table.concat({
+ " █████ ███████ ████████ ██████ ██████ ",
+ "██ ██ ██ ██ ██ ██ ██ ██",
+ "███████ ███████ ██ ██████ ██ ██",
+ "██ ██ ██ ██ ██ ██ ██ ██",
+ "██ ██ ███████ ██ ██ ██ ██████ ",
+ "",
+ "███  ██ ██  ██ ██ ███  ███",
+ "████  ██ ██  ██ ██ ████  ████",
+ "██ ██  ██ ██  ██ ██ ██ ████ ██",
+ "██  ██ ██  ██  ██  ██ ██  ██  ██",
+ "██   ████   ████   ██ ██      ██",
+ }, "\n"),
+ },
+ },
+ },
+ },
+
+ -- 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 "astronvim.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 "astronvim.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 <cr>
+ :with_cr(cond.none()),
+ },
+ -- disable for .vim files, but it work for another filetypes
+ Rule("a", "a", "-vim")
+ )
+ end,
+ },
+}
diff --git a/dot_config/nvim/lua/polish.lua b/dot_config/nvim/lua/polish.lua
new file mode 100644
index 0000000..642719f
--- /dev/null
+++ b/dot_config/nvim/lua/polish.lua
@@ -0,0 +1,5 @@
+if true then return end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
+
+-- This will run last in the setup process.
+-- This is just pure lua so anything that doesn't
+-- fit in the normal config locations above can go here