···11+# AstroNvim Template
22+33+**NOTE:** This is for AstroNvim v5+
44+55+A template for getting started with [AstroNvim](https://github.com/AstroNvim/AstroNvim)
66+77+## 🛠️ Installation
88+99+#### Make a backup of your current nvim and shared folder
1010+1111+```shell
1212+mv ~/.config/nvim ~/.config/nvim.bak
1313+mv ~/.local/share/nvim ~/.local/share/nvim.bak
1414+mv ~/.local/state/nvim ~/.local/state/nvim.bak
1515+mv ~/.cache/nvim ~/.cache/nvim.bak
1616+```
1717+1818+#### Create a new user repository from this template
1919+2020+Press the "Use this template" button above to create a new repository to store your user configuration.
2121+2222+You can also just clone this repository directly if you do not want to track your user configuration in GitHub.
2323+2424+#### Clone the repository
2525+2626+```shell
2727+git clone https://github.com/<your_user>/<your_repository> ~/.config/nvim
2828+```
2929+3030+#### Start Neovim
3131+3232+```shell
3333+nvim
3434+```
+27
modules/vic/dots/config/astrovim/init.lua
···11+-- This file simply bootstraps the installation of Lazy.nvim and then calls other files for execution
22+-- This file doesn't necessarily need to be touched, BE CAUTIOUS editing this file and proceed at your own risk.
33+local lazypath = vim.env.LAZY or vim.fn.stdpath "data" .. "/lazy/lazy.nvim"
44+55+if not (vim.env.LAZY or (vim.uv or vim.loop).fs_stat(lazypath)) then
66+ -- stylua: ignore
77+ local result = vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath })
88+ if vim.v.shell_error ~= 0 then
99+ -- stylua: ignore
1010+ vim.api.nvim_echo({ { ("Error cloning lazy.nvim:\n%s\n"):format(result), "ErrorMsg" }, { "Press any key to exit...", "MoreMsg" } }, true, {})
1111+ vim.fn.getchar()
1212+ vim.cmd.quit()
1313+ end
1414+end
1515+1616+vim.opt.rtp:prepend(lazypath)
1717+1818+-- validate that lazy is available
1919+if not pcall(require, "lazy") then
2020+ -- stylua: ignore
2121+ vim.api.nvim_echo({ { ("Unable to load lazy from: %s\n"):format(lazypath), "ErrorMsg" }, { "Press any key to exit...", "MoreMsg" } }, true, {})
2222+ vim.fn.getchar()
2323+ vim.cmd.quit()
2424+end
2525+2626+require "lazy_setup"
2727+require "polish"
···11+-- if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
22+33+-- AstroCommunity: import any community modules here
44+-- We import this file in `lazy_setup.lua` before the `plugins/` folder.
55+-- This guarantees that the specs are processed before any user plugins.
66+77+---@type LazySpec
88+return {
99+ "AstroNvim/astrocommunity",
1010+ { import = "astrocommunity.pack.lua" },
1111+ { import = "astrocommunity.pack.rust" },
1212+ { import = "astrocommunity.pack.go" },
1313+ { import = "astrocommunity.bars-and-lines.bufferline-nvim" },
1414+ { import = "astrocommunity.bars-and-lines.dropbar-nvim" },
1515+ { import = "astrocommunity.bars-and-lines.lualine-nvim" },
1616+ { import = "astrocommunity.bars-and-lines.scope-nvim" },
1717+ { import = "astrocommunity.bars-and-lines.smartcolumn-nvim" },
1818+ { import = "astrocommunity.completion.avante-nvim" },
1919+ { import = "astrocommunity.editing-support.codecompanion-nvim" },
2020+ -- import/override with your plugins folder
2121+}
···11+require("lazy").setup({
22+ {
33+ "AstroNvim/AstroNvim",
44+ version = "^5", -- Remove version tracking to elect for nightly AstroNvim
55+ import = "astronvim.plugins",
66+ opts = { -- AstroNvim options must be set here with the `import` key
77+ mapleader = " ", -- This ensures the leader key must be configured before Lazy is set up
88+ maplocalleader = ",", -- This ensures the localleader key must be configured before Lazy is set up
99+ icons_enabled = true, -- Set to false to disable icons (if no Nerd Font is available)
1010+ pin_plugins = nil, -- Default will pin plugins when tracking `version` of AstroNvim, set to true/false to override
1111+ update_notifications = true, -- Enable/disable notification about running `:Lazy update` twice to update pinned plugins
1212+ },
1313+ },
1414+ { import = "community" },
1515+ { import = "plugins" },
1616+} --[[@as LazySpec]], {
1717+ -- Configure any other `lazy.nvim` configuration options here
1818+ install = { colorscheme = { "astrotheme", "habamax" } },
1919+ ui = { backdrop = 100 },
2020+ performance = {
2121+ rtp = {
2222+ -- disable some rtp plugins, add more to your liking
2323+ disabled_plugins = {
2424+ "gzip",
2525+ "netrwPlugin",
2626+ "tarPlugin",
2727+ "tohtml",
2828+ "zipPlugin",
2929+ },
3030+ },
3131+ },
3232+} --[[@as LazyConfig]])
···11+if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
22+33+-- AstroCore provides a central place to modify mappings, vim options, autocommands, and more!
44+-- Configuration documentation can be found with `:h astrocore`
55+-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
66+-- as this provides autocomplete and documentation while editing
77+88+---@type LazySpec
99+return {
1010+ "AstroNvim/astrocore",
1111+ ---@type AstroCoreOpts
1212+ opts = {
1313+ -- Configure core features of AstroNvim
1414+ features = {
1515+ large_buf = { size = 1024 * 256, lines = 10000 }, -- set global limits for large files for disabling features like treesitter
1616+ autopairs = true, -- enable autopairs at start
1717+ cmp = true, -- enable completion at start
1818+ diagnostics = { virtual_text = true, virtual_lines = false }, -- diagnostic settings on startup
1919+ highlighturl = true, -- highlight URLs at start
2020+ notifications = true, -- enable notifications at start
2121+ },
2222+ -- Diagnostics configuration (for vim.diagnostics.config({...})) when diagnostics are on
2323+ diagnostics = {
2424+ virtual_text = true,
2525+ underline = true,
2626+ },
2727+ -- passed to `vim.filetype.add`
2828+ filetypes = {
2929+ -- see `:h vim.filetype.add` for usage
3030+ extension = {
3131+ foo = "fooscript",
3232+ },
3333+ filename = {
3434+ [".foorc"] = "fooscript",
3535+ },
3636+ pattern = {
3737+ [".*/etc/foo/.*"] = "fooscript",
3838+ },
3939+ },
4040+ -- vim options can be configured here
4141+ options = {
4242+ opt = { -- vim.opt.<key>
4343+ relativenumber = true, -- sets vim.opt.relativenumber
4444+ number = true, -- sets vim.opt.number
4545+ spell = false, -- sets vim.opt.spell
4646+ signcolumn = "yes", -- sets vim.opt.signcolumn to yes
4747+ wrap = false, -- sets vim.opt.wrap
4848+ },
4949+ g = { -- vim.g.<key>
5050+ -- configure global vim variables (vim.g)
5151+ -- NOTE: `mapleader` and `maplocalleader` must be set in the AstroNvim opts or before `lazy.setup`
5252+ -- This can be found in the `lua/lazy_setup.lua` file
5353+ },
5454+ },
5555+ -- Mappings can be configured through AstroCore as well.
5656+ -- NOTE: keycodes follow the casing in the vimdocs. For example, `<Leader>` must be capitalized
5757+ mappings = {
5858+ -- first key is the mode
5959+ n = {
6060+ -- second key is the lefthand side of the map
6161+6262+ -- navigate buffer tabs
6363+ ["]b"] = { function() require("astrocore.buffer").nav(vim.v.count1) end, desc = "Next buffer" },
6464+ ["[b"] = { function() require("astrocore.buffer").nav(-vim.v.count1) end, desc = "Previous buffer" },
6565+6666+ -- mappings seen under group name "Buffer"
6767+ ["<Leader>bd"] = {
6868+ function()
6969+ require("astroui.status.heirline").buffer_picker(
7070+ function(bufnr) require("astrocore.buffer").close(bufnr) end
7171+ )
7272+ end,
7373+ desc = "Close buffer from tabline",
7474+ },
7575+7676+ -- tables with just a `desc` key will be registered with which-key if it's installed
7777+ -- this is useful for naming menus
7878+ -- ["<Leader>b"] = { desc = "Buffers" },
7979+8080+ -- setting a mapping to false will disable it
8181+ -- ["<C-S>"] = false,
8282+ },
8383+ },
8484+ },
8585+}
···11+if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
22+33+-- AstroLSP allows you to customize the features in AstroNvim's LSP configuration engine
44+-- Configuration documentation can be found with `:h astrolsp`
55+-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
66+-- as this provides autocomplete and documentation while editing
77+88+---@type LazySpec
99+return {
1010+ "AstroNvim/astrolsp",
1111+ ---@type AstroLSPOpts
1212+ opts = {
1313+ -- Configuration table of features provided by AstroLSP
1414+ features = {
1515+ codelens = true, -- enable/disable codelens refresh on start
1616+ inlay_hints = false, -- enable/disable inlay hints on start
1717+ semantic_tokens = true, -- enable/disable semantic token highlighting
1818+ },
1919+ -- customize lsp formatting options
2020+ formatting = {
2121+ -- control auto formatting on save
2222+ format_on_save = {
2323+ enabled = true, -- enable or disable format on save globally
2424+ allow_filetypes = { -- enable format on save for specified filetypes only
2525+ -- "go",
2626+ },
2727+ ignore_filetypes = { -- disable format on save for specified filetypes
2828+ -- "python",
2929+ },
3030+ },
3131+ disabled = { -- disable formatting capabilities for the listed language servers
3232+ -- disable lua_ls formatting capability if you want to use StyLua to format your lua code
3333+ -- "lua_ls",
3434+ },
3535+ timeout_ms = 1000, -- default format timeout
3636+ -- filter = function(client) -- fully override the default formatting function
3737+ -- return true
3838+ -- end
3939+ },
4040+ -- enable servers that you already have installed without mason
4141+ servers = {
4242+ -- "pyright"
4343+ },
4444+ -- customize language server configuration options passed to `lspconfig`
4545+ ---@diagnostic disable: missing-fields
4646+ config = {
4747+ -- clangd = { capabilities = { offsetEncoding = "utf-8" } },
4848+ },
4949+ -- customize how language servers are attached
5050+ handlers = {
5151+ -- 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
5252+ -- function(server, opts) require("lspconfig")[server].setup(opts) end
5353+5454+ -- the key is the server that is being setup with `lspconfig`
5555+ -- rust_analyzer = false, -- setting a handler to false will disable the set up of that language server
5656+ -- pyright = function(_, opts) require("lspconfig").pyright.setup(opts) end -- or a custom handler function can be passed
5757+ },
5858+ -- Configure buffer local auto commands to add when attaching a language server
5959+ autocmds = {
6060+ -- first key is the `augroup` to add the auto commands to (:h augroup)
6161+ lsp_codelens_refresh = {
6262+ -- Optional condition to create/delete auto command group
6363+ -- can either be a string of a client capability or a function of `fun(client, bufnr): boolean`
6464+ -- condition will be resolved for each client on each execution and if it ever fails for all clients,
6565+ -- the auto commands will be deleted for that buffer
6666+ cond = "textDocument/codeLens",
6767+ -- cond = function(client, bufnr) return client.name == "lua_ls" end,
6868+ -- list of auto commands to set
6969+ {
7070+ -- events to trigger
7171+ event = { "InsertLeave", "BufEnter" },
7272+ -- the rest of the autocmd options (:h nvim_create_autocmd)
7373+ desc = "Refresh codelens (buffer)",
7474+ callback = function(args)
7575+ if require("astrolsp").config.features.codelens then vim.lsp.codelens.refresh { bufnr = args.buf } end
7676+ end,
7777+ },
7878+ },
7979+ },
8080+ -- mappings to be set up on attaching of a language server
8181+ mappings = {
8282+ n = {
8383+ -- 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
8484+ gD = {
8585+ function() vim.lsp.buf.declaration() end,
8686+ desc = "Declaration of current symbol",
8787+ cond = "textDocument/declaration",
8888+ },
8989+ ["<Leader>uY"] = {
9090+ function() require("astrolsp.toggles").buffer_semantic_tokens() end,
9191+ desc = "Toggle LSP semantic highlight (buffer)",
9292+ cond = function(client)
9393+ return client.supports_method "textDocument/semanticTokens/full" and vim.lsp.semantic_tokens ~= nil
9494+ end,
9595+ },
9696+ },
9797+ },
9898+ -- A custom `on_attach` function to be run after the default `on_attach` function
9999+ -- takes two parameters `client` and `bufnr` (`:h lspconfig-setup`)
100100+ on_attach = function(client, bufnr)
101101+ -- this would disable semanticTokensProvider for all clients
102102+ -- client.server_capabilities.semanticTokensProvider = nil
103103+ end,
104104+ },
105105+}
···11+if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
22+33+-- AstroUI provides the basis for configuring the AstroNvim User Interface
44+-- Configuration documentation can be found with `:h astroui`
55+-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
66+-- as this provides autocomplete and documentation while editing
77+88+---@type LazySpec
99+return {
1010+ "AstroNvim/astroui",
1111+ ---@type AstroUIOpts
1212+ opts = {
1313+ -- change colorscheme
1414+ colorscheme = "astrodark",
1515+ -- AstroUI allows you to easily modify highlight groups easily for any and all colorschemes
1616+ highlights = {
1717+ init = { -- this table overrides highlights in all themes
1818+ -- Normal = { bg = "#000000" },
1919+ },
2020+ astrodark = { -- a table of overrides/changes when applying the astrotheme theme
2121+ -- Normal = { bg = "#000000" },
2222+ },
2323+ },
2424+ -- Icons can be configured throughout the interface
2525+ icons = {
2626+ -- configure the loading of the lsp in the status line
2727+ LSPLoading1 = "⠋",
2828+ LSPLoading2 = "⠙",
2929+ LSPLoading3 = "⠹",
3030+ LSPLoading4 = "⠸",
3131+ LSPLoading5 = "⠼",
3232+ LSPLoading6 = "⠴",
3333+ LSPLoading7 = "⠦",
3434+ LSPLoading8 = "⠧",
3535+ LSPLoading9 = "⠇",
3636+ LSPLoading10 = "⠏",
3737+ },
3838+ },
3939+}
···11+if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
22+33+-- Customize None-ls sources
44+55+---@type LazySpec
66+return {
77+ "nvimtools/none-ls.nvim",
88+ opts = function(_, opts)
99+ -- opts variable is the default configuration table for the setup function call
1010+ -- local null_ls = require "null-ls"
1111+1212+ -- Check supported formatters and linters
1313+ -- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/formatting
1414+ -- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
1515+1616+ -- Only insert new sources, do not replace the existing ones
1717+ -- (If you wish to replace, use `opts.sources = {}` instead of the `list_insert_unique` function)
1818+ opts.sources = require("astrocore").list_insert_unique(opts.sources, {
1919+ -- Set a formatter
2020+ -- null_ls.builtins.formatting.stylua,
2121+ -- null_ls.builtins.formatting.prettier,
2222+ })
2323+ end,
2424+}
···11+if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
22+33+-- You can also add or configure plugins by creating files in this `plugins/` folder
44+-- PLEASE REMOVE THE EXAMPLES YOU HAVE NO INTEREST IN BEFORE ENABLING THIS FILE
55+-- Here are some examples:
66+77+---@type LazySpec
88+return {
99+1010+ -- == Examples of Adding Plugins ==
1111+1212+ "andweeb/presence.nvim",
1313+ {
1414+ "ray-x/lsp_signature.nvim",
1515+ event = "BufRead",
1616+ config = function() require("lsp_signature").setup() end,
1717+ },
1818+1919+ -- == Examples of Overriding Plugins ==
2020+2121+ -- customize dashboard options
2222+ {
2323+ "folke/snacks.nvim",
2424+ opts = {
2525+ dashboard = {
2626+ preset = {
2727+ header = table.concat({
2828+ " █████ ███████ ████████ ██████ ██████ ",
2929+ "██ ██ ██ ██ ██ ██ ██ ██",
3030+ "███████ ███████ ██ ██████ ██ ██",
3131+ "██ ██ ██ ██ ██ ██ ██ ██",
3232+ "██ ██ ███████ ██ ██ ██ ██████ ",
3333+ "",
3434+ "███ ██ ██ ██ ██ ███ ███",
3535+ "████ ██ ██ ██ ██ ████ ████",
3636+ "██ ██ ██ ██ ██ ██ ██ ████ ██",
3737+ "██ ██ ██ ██ ██ ██ ██ ██ ██",
3838+ "██ ████ ████ ██ ██ ██",
3939+ }, "\n"),
4040+ },
4141+ },
4242+ },
4343+ },
4444+4545+ -- You can disable default plugins as follows:
4646+ { "max397574/better-escape.nvim", enabled = false },
4747+4848+ -- You can also easily customize additional setup of plugins that is outside of the plugin's setup call
4949+ {
5050+ "L3MON4D3/LuaSnip",
5151+ config = function(plugin, opts)
5252+ require "astronvim.plugins.configs.luasnip"(plugin, opts) -- include the default astronvim config that calls the setup call
5353+ -- add more custom luasnip configuration such as filetype extend or custom snippets
5454+ local luasnip = require "luasnip"
5555+ luasnip.filetype_extend("javascript", { "javascriptreact" })
5656+ end,
5757+ },
5858+5959+ {
6060+ "windwp/nvim-autopairs",
6161+ config = function(plugin, opts)
6262+ require "astronvim.plugins.configs.nvim-autopairs"(plugin, opts) -- include the default astronvim config that calls the setup call
6363+ -- add more custom autopairs configuration such as custom rules
6464+ local npairs = require "nvim-autopairs"
6565+ local Rule = require "nvim-autopairs.rule"
6666+ local cond = require "nvim-autopairs.conds"
6767+ npairs.add_rules(
6868+ {
6969+ Rule("$", "$", { "tex", "latex" })
7070+ -- don't add a pair if the next character is %
7171+ :with_pair(cond.not_after_regex "%%")
7272+ -- don't add a pair if the previous character is xxx
7373+ :with_pair(
7474+ cond.not_before_regex("xxx", 3)
7575+ )
7676+ -- don't move right when repeat character
7777+ :with_move(cond.none())
7878+ -- don't delete if the next character is xx
7979+ :with_del(cond.not_after_regex "xx")
8080+ -- disable adding a newline when you press <cr>
8181+ :with_cr(cond.none()),
8282+ },
8383+ -- disable for .vim files, but it work for another filetypes
8484+ Rule("a", "a", "-vim")
8585+ )
8686+ end,
8787+ },
8888+}
+5
modules/vic/dots/config/astrovim/lua/polish.lua
···11+if true then return end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
22+33+-- This will run last in the setup process.
44+-- This is just pure lua so anything that doesn't
55+-- fit in the normal config locations above can go here
···11+ Apache License
22+ Version 2.0, January 2004
33+ http://www.apache.org/licenses/
44+55+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
66+77+ 1. Definitions.
88+99+ "License" shall mean the terms and conditions for use, reproduction,
1010+ and distribution as defined by Sections 1 through 9 of this document.
1111+1212+ "Licensor" shall mean the copyright owner or entity authorized by
1313+ the copyright owner that is granting the License.
1414+1515+ "Legal Entity" shall mean the union of the acting entity and all
1616+ other entities that control, are controlled by, or are under common
1717+ control with that entity. For the purposes of this definition,
1818+ "control" means (i) the power, direct or indirect, to cause the
1919+ direction or management of such entity, whether by contract or
2020+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
2121+ outstanding shares, or (iii) beneficial ownership of such entity.
2222+2323+ "You" (or "Your") shall mean an individual or Legal Entity
2424+ exercising permissions granted by this License.
2525+2626+ "Source" form shall mean the preferred form for making modifications,
2727+ including but not limited to software source code, documentation
2828+ source, and configuration files.
2929+3030+ "Object" form shall mean any form resulting from mechanical
3131+ transformation or translation of a Source form, including but
3232+ not limited to compiled object code, generated documentation,
3333+ and conversions to other media types.
3434+3535+ "Work" shall mean the work of authorship, whether in Source or
3636+ Object form, made available under the License, as indicated by a
3737+ copyright notice that is included in or attached to the work
3838+ (an example is provided in the Appendix below).
3939+4040+ "Derivative Works" shall mean any work, whether in Source or Object
4141+ form, that is based on (or derived from) the Work and for which the
4242+ editorial revisions, annotations, elaborations, or other modifications
4343+ represent, as a whole, an original work of authorship. For the purposes
4444+ of this License, Derivative Works shall not include works that remain
4545+ separable from, or merely link (or bind by name) to the interfaces of,
4646+ the Work and Derivative Works thereof.
4747+4848+ "Contribution" shall mean any work of authorship, including
4949+ the original version of the Work and any modifications or additions
5050+ to that Work or Derivative Works thereof, that is intentionally
5151+ submitted to Licensor for inclusion in the Work by the copyright owner
5252+ or by an individual or Legal Entity authorized to submit on behalf of
5353+ the copyright owner. For the purposes of this definition, "submitted"
5454+ means any form of electronic, verbal, or written communication sent
5555+ to the Licensor or its representatives, including but not limited to
5656+ communication on electronic mailing lists, source code control systems,
5757+ and issue tracking systems that are managed by, or on behalf of, the
5858+ Licensor for the purpose of discussing and improving the Work, but
5959+ excluding communication that is conspicuously marked or otherwise
6060+ designated in writing by the copyright owner as "Not a Contribution."
6161+6262+ "Contributor" shall mean Licensor and any individual or Legal Entity
6363+ on behalf of whom a Contribution has been received by Licensor and
6464+ subsequently incorporated within the Work.
6565+6666+ 2. Grant of Copyright License. Subject to the terms and conditions of
6767+ this License, each Contributor hereby grants to You a perpetual,
6868+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
6969+ copyright license to reproduce, prepare Derivative Works of,
7070+ publicly display, publicly perform, sublicense, and distribute the
7171+ Work and such Derivative Works in Source or Object form.
7272+7373+ 3. Grant of Patent License. Subject to the terms and conditions of
7474+ this License, each Contributor hereby grants to You a perpetual,
7575+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
7676+ (except as stated in this section) patent license to make, have made,
7777+ use, offer to sell, sell, import, and otherwise transfer the Work,
7878+ where such license applies only to those patent claims licensable
7979+ by such Contributor that are necessarily infringed by their
8080+ Contribution(s) alone or by combination of their Contribution(s)
8181+ with the Work to which such Contribution(s) was submitted. If You
8282+ institute patent litigation against any entity (including a
8383+ cross-claim or counterclaim in a lawsuit) alleging that the Work
8484+ or a Contribution incorporated within the Work constitutes direct
8585+ or contributory patent infringement, then any patent licenses
8686+ granted to You under this License for that Work shall terminate
8787+ as of the date such litigation is filed.
8888+8989+ 4. Redistribution. You may reproduce and distribute copies of the
9090+ Work or Derivative Works thereof in any medium, with or without
9191+ modifications, and in Source or Object form, provided that You
9292+ meet the following conditions:
9393+9494+ (a) You must give any other recipients of the Work or
9595+ Derivative Works a copy of this License; and
9696+9797+ (b) You must cause any modified files to carry prominent notices
9898+ stating that You changed the files; and
9999+100100+ (c) You must retain, in the Source form of any Derivative Works
101101+ that You distribute, all copyright, patent, trademark, and
102102+ attribution notices from the Source form of the Work,
103103+ excluding those notices that do not pertain to any part of
104104+ the Derivative Works; and
105105+106106+ (d) If the Work includes a "NOTICE" text file as part of its
107107+ distribution, then any Derivative Works that You distribute must
108108+ include a readable copy of the attribution notices contained
109109+ within such NOTICE file, excluding those notices that do not
110110+ pertain to any part of the Derivative Works, in at least one
111111+ of the following places: within a NOTICE text file distributed
112112+ as part of the Derivative Works; within the Source form or
113113+ documentation, if provided along with the Derivative Works; or,
114114+ within a display generated by the Derivative Works, if and
115115+ wherever such third-party notices normally appear. The contents
116116+ of the NOTICE file are for informational purposes only and
117117+ do not modify the License. You may add Your own attribution
118118+ notices within Derivative Works that You distribute, alongside
119119+ or as an addendum to the NOTICE text from the Work, provided
120120+ that such additional attribution notices cannot be construed
121121+ as modifying the License.
122122+123123+ You may add Your own copyright statement to Your modifications and
124124+ may provide additional or different license terms and conditions
125125+ for use, reproduction, or distribution of Your modifications, or
126126+ for any such Derivative Works as a whole, provided Your use,
127127+ reproduction, and distribution of the Work otherwise complies with
128128+ the conditions stated in this License.
129129+130130+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131131+ any Contribution intentionally submitted for inclusion in the Work
132132+ by You to the Licensor shall be under the terms and conditions of
133133+ this License, without any additional terms or conditions.
134134+ Notwithstanding the above, nothing herein shall supersede or modify
135135+ the terms of any separate license agreement you may have executed
136136+ with Licensor regarding such Contributions.
137137+138138+ 6. Trademarks. This License does not grant permission to use the trade
139139+ names, trademarks, service marks, or product names of the Licensor,
140140+ except as required for reasonable and customary use in describing the
141141+ origin of the Work and reproducing the content of the NOTICE file.
142142+143143+ 7. Disclaimer of Warranty. Unless required by applicable law or
144144+ agreed to in writing, Licensor provides the Work (and each
145145+ Contributor provides its Contributions) on an "AS IS" BASIS,
146146+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147147+ implied, including, without limitation, any warranties or conditions
148148+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149149+ PARTICULAR PURPOSE. You are solely responsible for determining the
150150+ appropriateness of using or redistributing the Work and assume any
151151+ risks associated with Your exercise of permissions under this License.
152152+153153+ 8. Limitation of Liability. In no event and under no legal theory,
154154+ whether in tort (including negligence), contract, or otherwise,
155155+ unless required by applicable law (such as deliberate and grossly
156156+ negligent acts) or agreed to in writing, shall any Contributor be
157157+ liable to You for damages, including any direct, indirect, special,
158158+ incidental, or consequential damages of any character arising as a
159159+ result of this License or out of the use or inability to use the
160160+ Work (including but not limited to damages for loss of goodwill,
161161+ work stoppage, computer failure or malfunction, or any and all
162162+ other commercial damages or losses), even if such Contributor
163163+ has been advised of the possibility of such damages.
164164+165165+ 9. Accepting Warranty or Additional Liability. While redistributing
166166+ the Work or Derivative Works thereof, You may choose to offer,
167167+ and charge a fee for, acceptance of support, warranty, indemnity,
168168+ or other liability obligations and/or rights consistent with this
169169+ License. However, in accepting such obligations, You may act only
170170+ on Your own behalf and on Your sole responsibility, not on behalf
171171+ of any other Contributor, and only if You agree to indemnify,
172172+ defend, and hold each Contributor harmless for any liability
173173+ incurred by, or claims asserted against, such Contributor by reason
174174+ of your accepting any such warranty or additional liability.
175175+176176+ END OF TERMS AND CONDITIONS
177177+178178+ APPENDIX: How to apply the Apache License to your work.
179179+180180+ To apply the Apache License to your work, attach the following
181181+ boilerplate notice, with the fields enclosed by brackets "[]"
182182+ replaced with your own identifying information. (Don't include
183183+ the brackets!) The text should be enclosed in the appropriate
184184+ comment syntax for the file format. We also recommend that a
185185+ file or class name and description of purpose be included on the
186186+ same "printed page" as the copyright notice for easier
187187+ identification within third-party archives.
188188+189189+ Copyright [yyyy] [name of copyright owner]
190190+191191+ Licensed under the Apache License, Version 2.0 (the "License");
192192+ you may not use this file except in compliance with the License.
193193+ You may obtain a copy of the License at
194194+195195+ http://www.apache.org/licenses/LICENSE-2.0
196196+197197+ Unless required by applicable law or agreed to in writing, software
198198+ distributed under the License is distributed on an "AS IS" BASIS,
199199+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200200+ See the License for the specific language governing permissions and
201201+ limitations under the License.
+4
modules/vic/dots/config/lazyvim/README.md
···11+# 💤 LazyVim
22+33+A starter template for [LazyVim](https://github.com/LazyVim/LazyVim).
44+Refer to the [documentation](https://lazyvim.github.io/installation) to get started.
+2
modules/vic/dots/config/lazyvim/init.lua
···11+-- bootstrap lazy.nvim, LazyVim and your plugins
22+require("config.lazy")
···11+-- Autocmds are automatically loaded on the VeryLazy event
22+-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
33+--
44+-- Add any additional autocmds here
55+-- with `vim.api.nvim_create_autocmd`
66+--
77+-- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults)
88+-- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell")
···11+-- Keymaps are automatically loaded on the VeryLazy event
22+-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
33+-- Add any additional keymaps here
···11+local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
22+if not (vim.uv or vim.loop).fs_stat(lazypath) then
33+ local lazyrepo = "https://github.com/folke/lazy.nvim.git"
44+ local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
55+ if vim.v.shell_error ~= 0 then
66+ vim.api.nvim_echo({
77+ { "Failed to clone lazy.nvim:\n", "ErrorMsg" },
88+ { out, "WarningMsg" },
99+ { "\nPress any key to exit..." },
1010+ }, true, {})
1111+ vim.fn.getchar()
1212+ os.exit(1)
1313+ end
1414+end
1515+vim.opt.rtp:prepend(lazypath)
1616+1717+require("lazy").setup({
1818+ spec = {
1919+ -- add LazyVim and import its plugins
2020+ { "LazyVim/LazyVim", import = "lazyvim.plugins" },
2121+ -- import/override with your plugins
2222+ { import = "plugins" },
2323+ },
2424+ defaults = {
2525+ -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
2626+ -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
2727+ lazy = false,
2828+ -- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
2929+ -- have outdated releases, which may break your Neovim install.
3030+ version = false, -- always use the latest git commit
3131+ -- version = "*", -- try installing the latest stable version for plugins that support semver
3232+ },
3333+ install = { colorscheme = { "tokyonight", "habamax" } },
3434+ checker = {
3535+ enabled = true, -- check for plugin updates periodically
3636+ notify = false, -- notify on update
3737+ }, -- automatically check for plugin updates
3838+ performance = {
3939+ rtp = {
4040+ -- disable some rtp plugins
4141+ disabled_plugins = {
4242+ "gzip",
4343+ -- "matchit",
4444+ -- "matchparen",
4545+ -- "netrwPlugin",
4646+ "tarPlugin",
4747+ "tohtml",
4848+ "tutor",
4949+ "zipPlugin",
5050+ },
5151+ },
5252+ },
5353+})
···11+-- Options are automatically loaded before lazy.nvim startup
22+-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
33+-- Add any additional options here
···4444 drag true
4545 drag-lock
4646 natural-scroll
4747- // accel-speed 0.2
4747+ // accel-speed 0.2
4848 // accel-profile "flat"
4949- // scroll-method "two-finger"
5050- // disabled-on-external-mouse
4949+ scroll-method "two-finger"
5050+ // disabled-on-external-mouse
5151 }
5252 mouse {
5353 // off
···68686969 }
7070 // Uncomment this to make the mouse warp to the center of newly focused windows.
7171- warp-mouse-to-focus mode="center-xy-always"
7171+ // warp-mouse-to-focus mode="center-xy-always"
7272 // Focus windows and outputs automatically when moving the mouse into them.
7373 // Setting max-scroll-amount="0%" makes it work only on windows already fully on screen.
7474 // focus-follows-mouse max-scroll-amount="0%"
7575 focus-follows-mouse
7676 workspace-auto-back-and-forth
7777- // mod-key "Alt"
7777+ // mod-key "Alt"
7878 // mod-key-nested "Super"
7979}
8080-/-switch-events {
8181-lid-close { spawn "notify-send" "The laptop lid is closed!"; }
8282-lid-open { spawn "notify-send" "The laptop lid is open!"; }
8080+switch-events {
8181+ lid-close {
8282+ spawn "systemctl" "hibernate"
8383+ }
8484+ lid-open {
8585+ spawn "notify-send" "The laptop lid is open!"
8686+ }
8787+}
8888+8989+// lenovo
9090+output "Chimei Innolux Corporation 0x140A Unknown" {
9191+ // scale 1.0
8392}
8493// You can configure outputs by their name, which you can find
8594// by running `niri msg outputs` while inside a niri instance.
···141150 proportion 0.33333
142151 proportion 0.5
143152 proportion 0.66667
153153+ proportion 0.9
154154+ proportion 1.0
144155 // Fixed sets the width in logical pixels exactly.
145156 // fixed 1920
146157 }
147158 // You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between.
148148- // preset-window-heights { }
159159+ preset-window-heights {
160160+ proportion 0.33333
161161+ proportion 0.5
162162+ proportion 0.66667
163163+ proportion 0.9
164164+ proportion 1.0
165165+ }
149166 // You can change the default width of the new windows.
150167 default-column-width {
151151- proportion 0.5
168168+ // proportion 0.5
169169+152170 }
153171 // If you leave the brackets empty, the windows themselves will decide their initial width.
154172 // default-column-width {}
···167185 // Uncomment this line to disable the focus ring.
168186 // off
169187 // How many logical pixels the ring extends out from the windows.
170170- width 8
188188+ width 3
171189 // Colors can be set in a variety of ways:
172190 // - CSS named colors: "red"
173191 // - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa"
···179197 // The focus ring only draws around the active window, so the only place
180198 // where you can see its inactive-color is on other monitors.
181199 inactive-color "#505050"
182182- // You can also use gradients. They take precedence over solid colors.
200200+ // You can also use gradients. They take precedence over solid colors.
183201 // Gradients are rendered the same as CSS linear-gradient(angle, from, to).
184202 // The angle is the same as in linear-gradient, and is optional,
185203 // defaulting to 180 (top-to-bottom gradient).
···187205 // Changing the color space is also supported, check the wiki for more info.
188206 //
189207 // active-gradient from="#80c8ff" to="#c7ff7f" angle=45
190190-191191- // You can also color the gradient relative to the entire view
208208+ active-gradient to="#994ae866" from="#994ae8EE" angle=45 relative-to="workspace-view"
209209+ // You can also color the gradient relative to the entire view
192210 // of the workspace, rather than relative to just the window itself.
193211 // To do that, set relative-to="workspace-view".
194212 //
195195- // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
213213+ //inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
196214 }
197215 // You can also add a border. It's similar to the focus ring, but always visible.
198216 border {
199217 // The settings are the same as for the focus ring.
200218 // If you enable the border, you probably want to disable the focus ring.
201219 off
202202- width 8
220220+ width 3
203221 active-color "#ffc87f"
204222 inactive-color "#505050"
205223 // Color of the border around windows that request your attention.
···366384// Example: enable rounded corners for all windows.
367385// (This example rule is commented out with a "/-" in front.)
368386window-rule {
369369- geometry-corner-radius 12
387387+ geometry-corner-radius 3
370388 clip-to-geometry true
371389}
372390overview {
···449467 }
450468 Mod+H {
451469 focus-column-left
470470+ }
471471+ Alt+Tab {
472472+ focus-window-previous
473473+ }
474474+ Mod+Tab {
475475+ focus-workspace-previous
476476+ }
477477+ Ctrl+Tab {
478478+ switch-focus-between-floating-and-tiling
452479 }
453480 // Mod+J { focus-window-down; }
454481 // Mod+K { focus-window-up; }
···824851 }
825852 // Powers off the monitors. To turn them back on, do any input like
826853 // moving the mouse or pressing any other key.
827827- Mod+Alt+P {
828828- power-off-monitors
829829- }
854854+ // Mod+Alt+P {
855855+ // power-off-monitors
856856+ // }
830857}
···11+return {
22+{
33+ 'saghen/blink.cmp',
44+ -- optional: provides snippets for the snippet source
55+ dependencies = { 'rafamadriz/friendly-snippets' },
66+77+ -- use a release tag to download pre-built binaries
88+ version = '1.*',
99+ -- AND/OR build from source, requires nightly: https://rust-lang.github.io/rustup/concepts/channels.html#working-with-nightly-rust
1010+ -- build = 'cargo build --release',
1111+ -- If you use nix, you can build from source using latest nightly rust with:
1212+ -- build = 'nix run .#build-plugin',
1313+1414+ ---@module 'blink.cmp'
1515+ ---@type blink.cmp.Config
1616+ opts = {
1717+ -- 'default' (recommended) for mappings similar to built-in completions (C-y to accept)
1818+ -- 'super-tab' for mappings similar to vscode (tab to accept)
1919+ -- 'enter' for enter to accept
2020+ -- 'none' for no mappings
2121+ --
2222+ -- All presets have the following mappings:
2323+ -- C-space: Open menu or open docs if already open
2424+ -- C-n/C-p or Up/Down: Select next/previous item
2525+ -- C-e: Hide menu
2626+ -- C-k: Toggle signature help (if signature.enabled = true)
2727+ --
2828+ -- See :h blink-cmp-config-keymap for defining your own keymap
2929+ keymap = { preset = 'default' },
3030+3131+ appearance = {
3232+ -- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
3333+ -- Adjusts spacing to ensure icons are aligned
3434+ nerd_font_variant = 'mono'
3535+ },
3636+3737+ -- (Default) Only show the documentation popup when manually triggered
3838+ completion = { documentation = { auto_show = false } },
3939+4040+ -- Default list of enabled providers defined so that you can extend it
4141+ -- elsewhere in your config, without redefining it, due to `opts_extend`
4242+ sources = {
4343+ default = { 'lsp', 'path', 'snippets', 'buffer' },
4444+ },
4545+4646+ -- (Default) Rust fuzzy matcher for typo resistance and significantly better performance
4747+ -- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation,
4848+ -- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"`
4949+ --
5050+ -- See the fuzzy documentation for more information
5151+ fuzzy = { implementation = "prefer_rust_with_warning" },
5252+ cmdline = { completion = { menu = { auto_show = true, }, }, },
5353+ },
5454+ opts_extend = { "sources.default" }
5555+},
5656+}