Full Code of AstroNvim/AstroNvim for AI

main 7fd58328e2bc cached
78 files
290.7 KB
90.1k tokens
1 requests
Download .txt
Showing preview only (311K chars total). Download the full file or copy to clipboard to get everything.
Repository: AstroNvim/AstroNvim
Branch: main
Commit: 7fd58328e2bc
Files: 78
Total size: 290.7 KB

Directory structure:
gitextract_p228trao/

├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yml
│   │   ├── config.yml
│   │   └── feature_request.yaml
│   └── workflows/
│       ├── ci.yml
│       └── stale.yml
├── .gitignore
├── .luarc.json
├── .neoconf.json
├── .stylua.toml
├── .styluaignore
├── .typos.toml
├── CHANGELOG.md
├── LICENSE
├── README.md
├── init.lua
├── lua/
│   └── astronvim/
│       ├── config.lua
│       ├── dev.lua
│       ├── health.lua
│       ├── init.lua
│       ├── lazy_snapshot.lua
│       ├── notify.lua
│       └── plugins/
│           ├── _astrocore.lua
│           ├── _astrocore_autocmds.lua
│           ├── _astrocore_mappings.lua
│           ├── _astrocore_options.lua
│           ├── _astrolsp.lua
│           ├── _astrolsp_autocmds.lua
│           ├── _astrolsp_mappings.lua
│           ├── _astrotheme.lua
│           ├── _astroui.lua
│           ├── _astroui_status.lua
│           ├── aerial.lua
│           ├── autopairs.lua
│           ├── better-escape.lua
│           ├── blink.lua
│           ├── comment.lua
│           ├── configs/
│           │   ├── cmp-dap.lua
│           │   ├── lspconfig.lua
│           │   ├── luasnip.lua
│           │   ├── mason-lspconfig.lua
│           │   ├── mason-null-ls.lua
│           │   ├── mason-nvim-dap.lua
│           │   ├── mason-tool-installer.lua
│           │   ├── nvim-autopairs.lua
│           │   ├── nvim-dap-ui.lua
│           │   ├── nvim-dap.lua
│           │   ├── nvim-treesitter.lua
│           │   ├── ts-autotag.lua
│           │   └── vim-illuminate.lua
│           ├── dap.lua
│           ├── gitsigns.lua
│           ├── guess-indent.lua
│           ├── heirline.lua
│           ├── highlight-colors.lua
│           ├── lazydev.lua
│           ├── lspconfig.lua
│           ├── luasnip.lua
│           ├── mason-tool-installer.lua
│           ├── mason.lua
│           ├── mini-icons.lua
│           ├── neo-tree.lua
│           ├── none-ls.lua
│           ├── nvim-ufo.lua
│           ├── resession.lua
│           ├── smart-splits.lua
│           ├── snacks.lua
│           ├── todo-comments.lua
│           ├── toggleterm.lua
│           ├── treesitter.lua
│           ├── ts-autotag.lua
│           ├── ts-context-commentstring.lua
│           ├── vim-illuminate.lua
│           ├── which-key.lua
│           └── window-picker.lua
├── neovim.yml
├── selene.toml
└── version.txt

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/FUNDING.yml
================================================
github: AstroNvim
ko_fi: mehalter
liberapay: mehalter
custom: https://www.buymeacoffee.com/mehalter


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: Bug report
description: Create a report to help us improve
labels: [bug]

body:
  - type: checkboxes
    id: terms
    attributes:
      label: Checklist
      description: Have you checked if someone has reported this issue before?
      options:
        - label: I have searched through the AstroNvim docs
          required: true
        - label: I have searched through the existing issues of AstroNvim
          required: true
        - label: I have searched the existing issues of plugins related to this issue
          required: true
        - label: I have run `:Lazy update` and are on the latest version of AstroNvim
          required: true
        - label: I can replicate the bug with the minimal `repro.lua` provided below
          required: true
  - type: input
    id: system-version
    validations:
      required: true
    attributes:
      label: "Operating system/version"
      placeholder: "macOS 11.5"
  - type: input
    id: terminal
    validations:
      required: true
    attributes:
      label: "Terminal/GUI"
      placeholder: "kitty"
  - type: textarea
    id: health
    validations:
      required: true
    attributes:
      label: AstroNvim Health
      description: Output of `:checkhealth astronvim`
      placeholder: |
        ## AstroNvim
        - AstroNvim Version: v4.6.0
        - Neovim Version: v0.9.5
        - OK: Using stable Neovim >= 0.9.5
  - type: textarea
    id: description
    validations:
      required: true
    attributes:
      label: Describe the bug
      placeholder: A clear and concise description of what the bug is.
  - type: textarea
    id: reproduce
    validations:
      required: true
    attributes:
      label: Steps to Reproduce
      placeholder: |
        1. Go to '...'
        2. Click on '....'
        3. Scroll down to '....'
        4. See error
  - type: textarea
    id: expected
    validations:
      required: true
    attributes:
      label: Expected behavior
      placeholder: A clear and concise description of what you expected to happen
  - type: textarea
    id: screenshots
    attributes:
      label: Screenshots
      description: If applicable, add screenshots or recording ([Asciinema](asciinema.org)) to help explain your problem.
  - type: textarea
    id: additional-context
    attributes:
      label: Additional Context
      placeholder: Add any additional context about the problem here.
  - type: textarea
    validations:
      required: true
    attributes:
      label: Repro
      description: Minimal `init.lua` to reproduce this issue. Save as `repro.lua` and run with `nvim -u repro.lua`
      value: |
        -- save as repro.lua
        -- run with nvim -u repro.lua
        -- DO NOT change the paths
        local root = vim.fn.fnamemodify("./.repro", ":p")

        -- set stdpaths to use .repro
        for _, name in ipairs({ "config", "data", "state", "runtime", "cache" }) do
          vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name
        end

        -- bootstrap lazy
        local lazypath = root .. "/plugins/lazy.nvim"
        if not vim.loop.fs_stat(lazypath) then
          -- stylua: ignore
          vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath })
        end
        vim.opt.rtp:prepend(vim.env.LAZY or lazypath)

        -- install plugins
        local plugins = {
          { "AstroNvim/AstroNvim", import = "astronvim.plugins" },

          -- add any other plugins/customizations here
        }
        require("lazy").setup(plugins, {
          root = root .. "/plugins",
        })

        -- add anything else here (autocommands, vim.filetype, etc.)
      render: Lua


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: Discord Chat
    url: https://discord.astronvim.com
    about: Ask questions and have discussions about AstroNvim on Discord
  - name: r/AstroNvim (Reddit)
    url: https://www.reddit.com/r/AstroNvim
    about: Ask questions about AstroNvim on the official Subreddit


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yaml
================================================
name: Feature request
description: Suggest an idea for this project
labels: [enhancement]

body:
  - type: textarea
    id: problem
    attributes:
      label: Is your feature related to a problem?
      placeholder: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
  - type: textarea
    id: solution
    validations:
      required: true
    attributes:
      label: Describe the new feature
      placeholder: A clear and concise description of what the new feature is.
  - type: textarea
    id: additional-context
    attributes:
      label: Additional context
      placeholder: Add any other context or screenshots about the feature request here.


================================================
FILE: .github/workflows/ci.yml
================================================
name: AstroNvim
on:
  push:
    branches: [main]
  pull_request:
  pull_request_target:
    types: [opened, edited, synchronize]
  release:
    types: [published]

jobs:
  CI:
    uses: AstroNvim/.github/.github/workflows/plugin_ci.yml@main
    if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' }}
    secrets: inherit
    with:
      plugin_name: ${{ github.event.repository.name }}
      is_production: ${{ github.event_name == 'push' }}
      docs: false
  PR:
    uses: AstroNvim/.github/.github/workflows/validate_pr.yml@main
    if: ${{ github.event_name == 'pull_request_target' }}
    secrets: inherit
  Announcement:
    uses: AstroNvim/.github/.github/workflows/discord_announcement.yml@main
    if: ${{ github.event_name == 'release' }}
    secrets: inherit


================================================
FILE: .github/workflows/stale.yml
================================================
name: "Close stale issues and PRs"
on:
  schedule:
    - cron: "30 1 * * *" # run at 0130 UTC

jobs:
  stale:
    uses: AstroNvim/.github/.github/workflows/stale.yml@main
    secrets: inherit


================================================
FILE: .gitignore
================================================
# Project gitignore
coc-settings.json

# Global gitignore
# ----------------

# Mac OS X
.AppleDouble
.DS_Store
.LSOverride
._*

# Windoze
$RECYCLE.BIN/
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db

# (Neo)Vim
*~
.netrwhist
Session.vim
Sessionx.vim
[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]
[._]*.un~
tags

# VS Code
.history
.vscode

# JetBrains
.idea


================================================
FILE: .luarc.json
================================================
{
  "format.enable": false
}


================================================
FILE: .neoconf.json
================================================
{
  "neodev": {
    "library": {
      "enabled": true,
      "plugins": true
    }
  },
  "neoconf": {
    "plugins": {
      "lua_ls": {
        "enabled": true
      }
    }
  },
  "lspconfig": {
    "lua_ls": {
      "Lua.format.enable": false
    }
  }
}


================================================
FILE: .stylua.toml
================================================
column_width = 120
line_endings = "Unix"
indent_type = "Spaces"
indent_width = 2
quote_style = "AutoPreferDouble"
call_parentheses = "None"
collapse_simple_statement = "Always"


================================================
FILE: .styluaignore
================================================
lua/astronvim/lazy_snapshot.lua


================================================
FILE: .typos.toml
================================================
# See https://github.com/crate-ci/typos/blob/master/docs/reference.md to configure typos
[default.extend-words]
enew = "enew"
fo = "fo"
ba = "ba"
afe = "afe"
abd = "abd"
caf = "caf"


================================================
FILE: CHANGELOG.md
================================================
# Changelog

## [5.3.15](https://github.com/AstroNvim/AstroNvim/compare/v5.3.14...v5.3.15) (2026-01-26)


### Bug Fixes

* **snapshot:** update `lazy_snapshot` ([93b273b](https://github.com/AstroNvim/AstroNvim/commit/93b273baa9ac86e4100c12bbed14b192379706d3))

## [5.3.14](https://github.com/AstroNvim/AstroNvim/compare/v5.3.13...v5.3.14) (2025-12-29)


### Bug Fixes

* **autocmds:** only check time of valid buffers ([7381fbd](https://github.com/AstroNvim/AstroNvim/commit/7381fbd5f43a685b877df4ef5d0ef85d362cfcbc))

## [5.3.13](https://github.com/AstroNvim/AstroNvim/compare/v5.3.12...v5.3.13) (2025-11-13)


### Bug Fixes

* **autocmds:** improve `on_key` function to handle searching in command mode and replace mode ([0001b5a](https://github.com/AstroNvim/AstroNvim/commit/0001b5adbd6b6b9c14166f5c5955c43fde5624de))

## [5.3.12](https://github.com/AstroNvim/AstroNvim/compare/v5.3.11...v5.3.12) (2025-09-26)


### Bug Fixes

* **blink:** fix missing snippet icon when use `lspkind` symbols ([d871f76](https://github.com/AstroNvim/AstroNvim/commit/d871f76baeb7e27815a75e37380042166e8c031a))

## [5.3.11](https://github.com/AstroNvim/AstroNvim/compare/v5.3.10...v5.3.11) (2025-09-11)


### Bug Fixes

* **snapshot:** update `lazy_snapshot` ([3f34751](https://github.com/AstroNvim/AstroNvim/commit/3f34751725337ad2bcd3a9546cd185ab286ab5b2))

## [5.3.10](https://github.com/AstroNvim/AstroNvim/compare/v5.3.9...v5.3.10) (2025-08-31)


### Bug Fixes

* **autocmds:** resolve aerial not closing when last buffer ([f3e7cd3](https://github.com/AstroNvim/AstroNvim/commit/f3e7cd30d851e5b0d5bfc347dec76427d0e1e9c9)), closes [#2843](https://github.com/AstroNvim/AstroNvim/issues/2843)

## [5.3.9](https://github.com/AstroNvim/AstroNvim/compare/v5.3.8...v5.3.9) (2025-08-19)


### Bug Fixes

* check for `gdu` executable first on Mac before checking for `gdu-go` ([042d87c](https://github.com/AstroNvim/AstroNvim/commit/042d87c1e53feb0b296d32274e60afac36debfe3)), closes [#2839](https://github.com/AstroNvim/AstroNvim/issues/2839)

## [5.3.8](https://github.com/AstroNvim/AstroNvim/compare/v5.3.7...v5.3.8) (2025-08-07)


### Reverts

* move back to previous logic for automatic hlsearch management ([ff58f54](https://github.com/AstroNvim/AstroNvim/commit/ff58f5490880edfc0934e2ebec23a1cf11fa99bf))

## [5.3.7](https://github.com/AstroNvim/AstroNvim/compare/v5.3.6...v5.3.7) (2025-08-07)


### Bug Fixes

* **autocmds:** improve detection of automatic hlsearch management ([09d3128](https://github.com/AstroNvim/AstroNvim/commit/09d31282ace6872ad6335fd4b38511ad99ec17fd))

## [5.3.6](https://github.com/AstroNvim/AstroNvim/compare/v5.3.5...v5.3.6) (2025-07-26)


### Bug Fixes

* **blink:** add workaround for missing `<End>` mapping in `cmdline` mappings ([fa68880](https://github.com/AstroNvim/AstroNvim/commit/fa68880bcb1c47790ec5acb3da5548e7616574d2))

## [5.3.5](https://github.com/AstroNvim/AstroNvim/compare/v5.3.4...v5.3.5) (2025-07-21)


### Bug Fixes

* **astrocore:** fix incorrect which-key mapping label to indicate buffer local mapping ([047c941](https://github.com/AstroNvim/AstroNvim/commit/047c941a9d7037065ef5069b76531d46688319c5))
* **snacks:** Fix Snacks notifier icons ([e72c9a0](https://github.com/AstroNvim/AstroNvim/commit/e72c9a0523b9f4b76cdc6fa165298d42ae8b91ae))

## [5.3.4](https://github.com/AstroNvim/AstroNvim/compare/v5.3.3...v5.3.4) (2025-07-01)


### Bug Fixes

* **snapshot:** update dependencies ([c2f9ac8](https://github.com/AstroNvim/AstroNvim/commit/c2f9ac881ab830989726b5eb7fea7cd07f12d570))

## [5.3.3](https://github.com/AstroNvim/AstroNvim/compare/v5.3.2...v5.3.3) (2025-05-31)


### Bug Fixes

* **astrolsp:** use `astrolsp.utils` for `supports_method` for deprecation protection ([555be37](https://github.com/AstroNvim/AstroNvim/commit/555be37d8903b0ead166a35ff80dac22076fa375))
* **treesitter:** specify `master` branch in preparation to default branch change ([ed3c636](https://github.com/AstroNvim/AstroNvim/commit/ed3c636e132ae8c40ddc2557c64874b76c420e3a))

## [5.3.2](https://github.com/AstroNvim/AstroNvim/compare/v5.3.1...v5.3.2) (2025-05-27)


### Bug Fixes

* **heirline:** fix highlights not being set until `setup` is called ([9d14deb](https://github.com/AstroNvim/AstroNvim/commit/9d14deb242d4e37621ea61ccc997b51b4d5e36dc))


### Performance Improvements

* **heirline:** add caching for highlight functions ([f082fac](https://github.com/AstroNvim/AstroNvim/commit/f082faccf483bc095ad539aed62352ed0d57bdad))

## [5.3.1](https://github.com/AstroNvim/AstroNvim/compare/v5.3.0...v5.3.1) (2025-05-21)


### Bug Fixes

* **neo-tree:** fix netrw hijacking on first directory opened ([a5c6434](https://github.com/AstroNvim/AstroNvim/commit/a5c6434fae7fe60dbeb95158d26aa9b2d244c6c7))

## [5.3.0](https://github.com/AstroNvim/AstroNvim/compare/v5.2.6...v5.3.0) (2025-05-13)


### Features

* **snapshot:** update Mason to v2 ([b786c47](https://github.com/AstroNvim/AstroNvim/commit/b786c47284c50dca399857c8eef886035bec2e32))


### Bug Fixes

* always pin `blink.cmp` and `mason-lspconfig` even in development mode ([790c5ca](https://github.com/AstroNvim/AstroNvim/commit/790c5ca2bdcf6deee8973644476b49a4470ebe8e))
* **lspconfig:** pin `nvim-lspconfig` to last version not requiring `vim.lsp.config` for Neovim v0.11 ([a5e4de2](https://github.com/AstroNvim/AstroNvim/commit/a5e4de2db3cf7c1deb89f57545a3a4bcde4e6bd2))

## [5.2.6](https://github.com/AstroNvim/AstroNvim/compare/v5.2.5...v5.2.6) (2025-04-23)


### Bug Fixes

* **resession:** get configuration directly from AstroCore ([caf0c74](https://github.com/AstroNvim/AstroNvim/commit/caf0c74ce86d29378c15a224c43c7b2c21246b61))

## [5.2.5](https://github.com/AstroNvim/AstroNvim/compare/v5.2.4...v5.2.5) (2025-04-22)


### Bug Fixes

* **astrocore:** restrict overriding of `foldexpr` on `FileType` ([848884a](https://github.com/AstroNvim/AstroNvim/commit/848884ae2db41c4e2ee96a621ee43e15f462a6ed))

## [5.2.4](https://github.com/AstroNvim/AstroNvim/compare/v5.2.3...v5.2.4) (2025-04-21)


### Bug Fixes

* **astrocore:** make AstroUI folding persistent and override ftplugins ([90409ec](https://github.com/AstroNvim/AstroNvim/commit/90409ecf294765d9967c5f903c706f3d54505d72))
* **neo-tree:** only map filter mappings for filesystem window ([2ddcd27](https://github.com/AstroNvim/AstroNvim/commit/2ddcd27161607fcc9e6b8a3c979538e2e7affec3)), closes [#2802](https://github.com/AstroNvim/AstroNvim/issues/2802)

## [5.2.3](https://github.com/AstroNvim/AstroNvim/compare/v5.2.2...v5.2.3) (2025-04-18)


### Bug Fixes

* **treesitter:** only perform treesitter installations when compiler is available ([ceadde7](https://github.com/AstroNvim/AstroNvim/commit/ceadde78e655df563d30cbb7d73dc6b649d29be6))

## [5.2.2](https://github.com/AstroNvim/AstroNvim/compare/v5.2.1...v5.2.2) (2025-04-17)


### Bug Fixes

* **highlight-colors:** fix typo in config option ([c0aa908](https://github.com/AstroNvim/AstroNvim/commit/c0aa90857f62f7e7e778c592df125b84e133bdc0))
* **options:** always set `clipboard` to `unnamedplus` as this works with OSC52 ([eb583af](https://github.com/AstroNvim/AstroNvim/commit/eb583af3696d486ecd6c2a88ee90511d2d1e1314))

## [5.2.1](https://github.com/AstroNvim/AstroNvim/compare/v5.2.0...v5.2.1) (2025-04-16)


### Bug Fixes

* **nui:** pin to commit until next release ([c1784e3](https://github.com/AstroNvim/AstroNvim/commit/c1784e3a0d7d035211726894e550026bf890da1b))
* **todo-comments:** properly resolve lazy load commands based on plugin availability ([cdddbd3](https://github.com/AstroNvim/AstroNvim/commit/cdddbd3b9e1d83f39a0dae326a41585dba6c4c03))

## [5.2.0](https://github.com/AstroNvim/AstroNvim/compare/v5.1.5...v5.2.0) (2025-04-15)


### Features

* **snacks:** add undo history picker ([ebcdba5](https://github.com/AstroNvim/AstroNvim/commit/ebcdba5ab43d8a9e9fa2717e401dbfa679dd2ed7))

## [5.1.5](https://github.com/AstroNvim/AstroNvim/compare/v5.1.4...v5.1.5) (2025-04-15)


### Bug Fixes

* **neo-tree:** automatically extend `event_handlers` table ([c43b681](https://github.com/AstroNvim/AstroNvim/commit/c43b68155fb249967a707793ac7843c54c3ac027))

## [5.1.4](https://github.com/AstroNvim/AstroNvim/compare/v5.1.3...v5.1.4) (2025-04-14)


### Bug Fixes

* **highlight-colors:** update for important bug fix ([02f599c](https://github.com/AstroNvim/AstroNvim/commit/02f599c7330010eb2a391846574831dcdbfb52a6))

## [5.1.3](https://github.com/AstroNvim/AstroNvim/compare/v5.1.2...v5.1.3) (2025-04-04)


### Bug Fixes

* **snacks:** leave toggle mappings disabling on startup but toggling later ([b5d033c](https://github.com/AstroNvim/AstroNvim/commit/b5d033c54dc22966550662170993401c7865d915))

## [5.1.2](https://github.com/AstroNvim/AstroNvim/compare/v5.1.1...v5.1.2) (2025-04-04)


### Bug Fixes

* **snacks:** make it possible to disable mappings for individual snacks ([724397c](https://github.com/AstroNvim/AstroNvim/commit/724397c9cce2312342682fac09d51198a31d51db))

## [5.1.1](https://github.com/AstroNvim/AstroNvim/compare/v5.1.0...v5.1.1) (2025-04-03)


### Bug Fixes

* **blink:** disable `ghost_text` in `cmdline` by default ([186eae3](https://github.com/AstroNvim/AstroNvim/commit/186eae3b4643865570238303d17d7e87ffacb445))


### Reverts

* **blink:** re-enable `cmdline` in `blink.cmp` after fix upstream ([9cb32ab](https://github.com/AstroNvim/AstroNvim/commit/9cb32ab5bfb8dae23256048bf11b62ea8aca72f5))

## [5.1.0](https://github.com/AstroNvim/AstroNvim/compare/v5.0.6...v5.1.0) (2025-04-01)


### Features

* **snacks:** add find in dir commands for neo-tree ([008c7c9](https://github.com/AstroNvim/AstroNvim/commit/008c7c9a1fe7c7f0ed131201a67aba744ec42f4a))
* **snacks:** add help text for find mappings ([517a6f5](https://github.com/AstroNvim/AstroNvim/commit/517a6f5cee17236235dbeecad69f836feb55bcf0))


### Bug Fixes

* **blink:** disable `cmdline` by default due to instability ([0a22f02](https://github.com/AstroNvim/AstroNvim/commit/0a22f029e4cd82f53d22b3f515d350a8c1ad5fdc)), closes [#2782](https://github.com/AstroNvim/AstroNvim/issues/2782)

## [5.0.6](https://github.com/AstroNvim/AstroNvim/compare/v5.0.5...v5.0.6) (2025-03-31)


### Bug Fixes

* **blink:** prefer rust based fuzzy matching but silently fall back to lua ([f14a3d9](https://github.com/AstroNvim/AstroNvim/commit/f14a3d91db4eb4aed16a80da07a349644038dd98))
* **treesitter:** load treesitter immediately if opening a file directly ([ab69f95](https://github.com/AstroNvim/AstroNvim/commit/ab69f958bd7b2bf7bdaaeabd40ef5c6460d04c8d))

## [5.0.5](https://github.com/AstroNvim/AstroNvim/compare/v5.0.4...v5.0.5) (2025-03-31)


### Bug Fixes

* **blink:** incorrect order of tab operations, select should happen with highest priority ([4230a6f](https://github.com/AstroNvim/AstroNvim/commit/4230a6f7f53a6768dac77f9c1d4a941d9c29c0a0))

## [5.0.4](https://github.com/AstroNvim/AstroNvim/compare/v5.0.3...v5.0.4) (2025-03-29)


### Bug Fixes

* **snacks:** always enable `snacks.image` because utility function locks in configuration early ([bec1085](https://github.com/AstroNvim/AstroNvim/commit/bec1085c6886f0a9b20a48fdcf04544fc0b0da7c)), closes [#2774](https://github.com/AstroNvim/AstroNvim/issues/2774)

## [5.0.3](https://github.com/AstroNvim/AstroNvim/compare/v5.0.2...v5.0.3) (2025-03-29)


### Bug Fixes

* **snapshot:** temporarily pin todo-comments to commit until next release ([30b0d2f](https://github.com/AstroNvim/AstroNvim/commit/30b0d2fe6bcd057c5f8d57b22d820bc954603eeb))

## [5.0.2](https://github.com/AstroNvim/AstroNvim/compare/v5.0.1...v5.0.2) (2025-03-28)


### Bug Fixes

* **which-key:** disable all icons when icons are disabled ([10fd1c6](https://github.com/AstroNvim/AstroNvim/commit/10fd1c6d07e1ef1142ab33ff262b2c8abbbcc9c2)), closes [#2770](https://github.com/AstroNvim/AstroNvim/issues/2770)

## [5.0.1](https://github.com/AstroNvim/AstroNvim/compare/v5.0.0...v5.0.1) (2025-03-27)


### Bug Fixes

* **blink:** use ascii icons when icons are disabled ([a32c53f](https://github.com/AstroNvim/AstroNvim/commit/a32c53fe57fa15342cfe09dba7e1696d7ffb16ee))
* **blink:** use icon provider for snippets source ([57778ec](https://github.com/AstroNvim/AstroNvim/commit/57778ecc8e67bf31126fe24a56750562ad6312a8))
* **mason:** use ascii icons if icons are disabled ([533d716](https://github.com/AstroNvim/AstroNvim/commit/533d7166593d42886ca2e05f0997299472ac160a))
* **mini-icons:** set style to `ascii` if icons are disabled ([87d8642](https://github.com/AstroNvim/AstroNvim/commit/87d86425ed6f7a8aa831b3ef4a9fdb621d367492))

## [5.0.0](https://github.com/AstroNvim/AstroNvim/compare/v4.32.3...v5.0.0) (2025-03-26)


### ⚠ BREAKING CHANGES

* move from `nvim-cmp` to `blink.cmp`
* **plugins:** only use `nvim-ts-context-commentstring` if Neovim v0.10
* **plugins:** only use `Comment.nvim` if Neovim v0.10
* **plugins:** replace `alpha-nvim` with `snacks.dashboard`
* **plugins:** replace `telescope` with `snacks.picker`
* **plugins:** replace `indent-blankline` with `snacks.indent`
* **plugins:** replace `mini.bufremove` with `snacks.bufdelete`
* **plugins:** replace `nvim-notify` with `snacks.notifier`
* **plugins:** replace `dressing.nvim` with `snacks.input` and `snacks.picker`
* use built in Neovim folding in Neovim v0.11
* **astrocore:** use default `update_in_insert` value for diagnostic configuration
* **mappings:** move LSP implementation mapping from `gI` to `gri` to align with Neovim defaults
* **astrolsp:** do not configure any language servers out of the box, removes disabling third party checking in `lua_ls`
* require Neovim v0.10+
* **mappings:** use `<C-S>` in insert mode for signature help to align with default Neovim
* **config:** remove `astronvim.plugins.configs.heirline` function
* **config:** remove `astronvim.plugins.configs.guess-indent` function
* **plugins:** replace `nvim-web-devicons` and `lspkind.nvim` with `mini.icons`
* **plugins:** move from `nvim-colorizer` to `nvim-highlight-colors`
* **plugins:** migrate to `mason-tool-installer` for managing Mason installations

### Features

* **astrocore:** add new `<Leader>uv` and `<Leader>uV` for toggling virtual text and virtual lines ([fbc7c1e](https://github.com/AstroNvim/AstroNvim/commit/fbc7c1ec427e645727790b4352c892ecbc03ef00))
* **astrocore:** only enable large buffer detection for real file buffers by default ([d61f2b1](https://github.com/AstroNvim/AstroNvim/commit/d61f2b18c0c3dca88507b74f097e1535def27e89))
* **astrolsp:** enable LSP file operations by default ([870ddb2](https://github.com/AstroNvim/AstroNvim/commit/870ddb205a145a1d48bbc13ec448bccd9ee29881))
* **astrolsp:** trigger `willCreateFiles`/`didCreateFiles` when creating new files with vim ([a0dbcb6](https://github.com/AstroNvim/AstroNvim/commit/a0dbcb62e250dcad6314d5413c508404a9dfbf87))
* **astrolsp:** use the new `defaults` table for configuring `hover` and `signature_help` ([4bee581](https://github.com/AstroNvim/AstroNvim/commit/4bee581c99eee64716246be6e97cdb00a52d03e6))
* **autocmds:** add autocommand for restoring cursor position now that views are removed ([f164370](https://github.com/AstroNvim/AstroNvim/commit/f1643702f2c6a0a4b9cec9df9e4936b9ce3cf6bb))
* **commands:** add `AstroRename` for easily renaming the current file ([edc0d22](https://github.com/AstroNvim/AstroNvim/commit/edc0d22489234593d68237cc4d6e6da55d478820))
* **highlight-colors:** disable highlight colors on large buffers ([ce0a094](https://github.com/AstroNvim/AstroNvim/commit/ce0a09460aadc058dc700e6e059037a660fa1758))
* **mappings:** add `gco` and `gcO` for inserting comments above and below ([c6431b5](https://github.com/AstroNvim/AstroNvim/commit/c6431b5c29f7db7e782e3c9ce8640af8d366a5b6))
* **mappings:** backport new Neovim v0.11 default `gO` mapping for `vim.lsp.buf.document_symbol` ([7e104a8](https://github.com/AstroNvim/AstroNvim/commit/7e104a879a8fe2d30f542233ac2d14c2bb7e87ee))
* **mappings:** move LSP implementation mapping from `gI` to `gri` to align with Neovim defaults ([f3bb5ab](https://github.com/AstroNvim/AstroNvim/commit/f3bb5ab652ff839ea3a90696f028a506f82bc754))
* **mappings:** use `<C-S>` in insert mode for signature help to align with default Neovim ([1fba436](https://github.com/AstroNvim/AstroNvim/commit/1fba4363fabbf47c21f4b4d471629e0c210c8411))
* **mason-lspconfig:** use AstroLSP to register extra language server mappings to mason packages ([5b57025](https://github.com/AstroNvim/AstroNvim/commit/5b57025b578c2ab7488dc54f2c02cd9cdd3366bb))
* move from `nvim-cmp` to `blink.cmp` ([956bc1c](https://github.com/AstroNvim/AstroNvim/commit/956bc1cf899deaf931236ad444e6edd3f10bbe48))
* **options:** default `uselast` option for `tabclose` in Neovim v0.11 ([d0e7ade](https://github.com/AstroNvim/AstroNvim/commit/d0e7adeb1beab55102845f524f99348182b0f98d))
* **options:** disable completion messages with `shortmess` ([a1f02d0](https://github.com/AstroNvim/AstroNvim/commit/a1f02d02f24ae4b7fddbc74bf3178ee27db5c9f7))
* **plugins:** migrate to `mason-tool-installer` for managing Mason installations ([7c7822d](https://github.com/AstroNvim/AstroNvim/commit/7c7822d29f4f3312cd42b86aad611bc51813f7b1))
* **plugins:** move from `nvim-colorizer` to `nvim-highlight-colors` ([d7c525f](https://github.com/AstroNvim/AstroNvim/commit/d7c525fc65095f1ea7a22a72e5fc54c6804eaba1))
* **plugins:** only use `Comment.nvim` if Neovim v0.10 ([caba46d](https://github.com/AstroNvim/AstroNvim/commit/caba46d4b3fed212017cee6b1d601093ab36d059))
* **plugins:** only use `nvim-ts-context-commentstring` if Neovim v0.10 ([bfd4d0d](https://github.com/AstroNvim/AstroNvim/commit/bfd4d0dd987679159f70147645b15bf63707d941))
* **plugins:** replace `alpha-nvim` with `snacks.dashboard` ([f572528](https://github.com/AstroNvim/AstroNvim/commit/f5725287b2af1247612ec8b5307374db5a3e9ff4))
* **plugins:** replace `dressing.nvim` with `snacks.input` and `snacks.picker` ([6eea6e4](https://github.com/AstroNvim/AstroNvim/commit/6eea6e4af905a7e3cfbe249c4acc44a21e1171b3))
* **plugins:** replace `indent-blankline` with `snacks.indent` ([810236d](https://github.com/AstroNvim/AstroNvim/commit/810236d6bc596095ac1111790baf6036baf96d31))
* **plugins:** replace `mini.bufremove` with `snacks.bufdelete` ([83ddcb6](https://github.com/AstroNvim/AstroNvim/commit/83ddcb6c615559abb5b83d2201dc92adb74d7f87))
* **plugins:** replace `nvim-notify` with `snacks.notifier` ([ea175ff](https://github.com/AstroNvim/AstroNvim/commit/ea175ff4dc7dfb36f4889c403254e61f643c9af7))
* **plugins:** replace `nvim-web-devicons` and `lspkind.nvim` with `mini.icons` ([0c8e0fb](https://github.com/AstroNvim/AstroNvim/commit/0c8e0fb41292b5049e22eb0cf5e23b3b9d689083))
* **plugins:** replace `telescope` with `snacks.picker` ([a682e51](https://github.com/AstroNvim/AstroNvim/commit/a682e51a5486cad57b6ae71a60bfedb9a1628452))
* **plugins:** use `snacks.scope` along with `snacks.indent` ([b188030](https://github.com/AstroNvim/AstroNvim/commit/b188030868f4f427eca8933b5414a1cc09e3abc2))
* **snacks:** add `gitbrowse` mapping ([5ad8e64](https://github.com/AstroNvim/AstroNvim/commit/5ad8e6499af929dc177bc9201ed33c7b3856dcdf))
* **snacks:** configure zen mode and add `<Leader>uZ` mapping ([25884eb](https://github.com/AstroNvim/AstroNvim/commit/25884eb262184a1200c3cf0e2c55f3b18f335e3a))
* **snacks:** enable image support if terminal supports it ([3ab9ea2](https://github.com/AstroNvim/AstroNvim/commit/3ab9ea23cf82db54460e38515975a7c4dbc342dc))
* use built in Neovim folding in Neovim v0.11 ([6c34481](https://github.com/AstroNvim/AstroNvim/commit/6c34481218f133e97b95c3f51fd0c438ee470050))


### Bug Fixes

* **astrocore:** use correct `force` option in `:AstroRename` ([542cbde](https://github.com/AstroNvim/AstroNvim/commit/542cbde9034e7a5e8a787ea40f4e0483c45151de))
* **astrocore:** use default `update_in_insert` value for diagnostic configuration ([f26c0de](https://github.com/AstroNvim/AstroNvim/commit/f26c0de51b80d92c2199e205f76d91eb3768b1b4))
* **astrolsp:** do not configure any language servers out of the box, removes disabling third party checking in `lua_ls` ([709395c](https://github.com/AstroNvim/AstroNvim/commit/709395cb6894b373867ec3d1e1f61a2232d95ed7))
* **astrolsp:** remove lsp handler configuration for neovim 0.11 ([566f8cb](https://github.com/AstroNvim/AstroNvim/commit/566f8cb246bd1af24d9812c07df6a51db7de5cd3))
* **astrolsp:** update codelens on text changing in normal mode ([66faaa5](https://github.com/AstroNvim/AstroNvim/commit/66faaa5697692cc7c3bca3b39744214565c096e8))
* **astroui:** set up new folding configuration ([3d8b3d2](https://github.com/AstroNvim/AstroNvim/commit/3d8b3d21986dc8ba674d0f517036cc03364c2553))
* **cmp:** disable completion when recording macros ([699c086](https://github.com/AstroNvim/AstroNvim/commit/699c086d0ec67ba3b6668befd6eb13a24257d445))
* **heirline:** update winbar on `BufFilePost` ([3ed3497](https://github.com/AstroNvim/AstroNvim/commit/3ed3497d0fc3d5dd2fa2e81de6251a2e7208d3e1))
* make sure `colorscheme` is set after setting up after options ([e201003](https://github.com/AstroNvim/AstroNvim/commit/e2010037d0116bc6cbf4641a238a6bbf2fba0a86))
* **nvim-ufo:** disable `foldexpr` when setting up `nvim-ufo` ([8223350](https://github.com/AstroNvim/AstroNvim/commit/82233506b6be80389fce6559fc9fcd5c57f3f3e9))
* **plugins:** make sure all plugin specifications are merging properly ([220e338](https://github.com/AstroNvim/AstroNvim/commit/220e338de2758ee6854f99c19ed29e55f42414e1))
* **telescope:** have telescope follow symlinks by default ([0d87112](https://github.com/AstroNvim/AstroNvim/commit/0d87112899aaad690e8f0c900c7cb2ff17914812))
* use new `vim.diagnostic.jump` in Neovim v0.11 ([89c4af4](https://github.com/AstroNvim/AstroNvim/commit/89c4af432b101f31b2a1cea2dd938e43e3928503))


### Code Refactoring

* **config:** remove `astronvim.plugins.configs.guess-indent` function ([158c430](https://github.com/AstroNvim/AstroNvim/commit/158c4301a5964383431d6fb3ee9628681fdf220e))
* **config:** remove `astronvim.plugins.configs.heirline` function ([c06b096](https://github.com/AstroNvim/AstroNvim/commit/c06b096805ddcd28dad79167b448b4de2c178f73))
* require Neovim v0.10+ ([38715fa](https://github.com/AstroNvim/AstroNvim/commit/38715fa6be1c177d004cf057d084e4d4f788ad1e))

## [4.32.3](https://github.com/AstroNvim/AstroNvim/compare/v4.32.2...v4.32.3) (2025-03-18)


### Bug Fixes

* **gitsigns:** use the same signs for staged lines ([604b07d](https://github.com/AstroNvim/AstroNvim/commit/604b07d0ca6eff61607f6735786678ae1f18885d))

## [4.32.2](https://github.com/AstroNvim/AstroNvim/compare/v4.32.1...v4.32.2) (2025-03-15)


### Bug Fixes

* **autocmds:** fix `auto_hlsearch` `vim.on_key` function to only check for start of mapping commands ([445c0e3](https://github.com/AstroNvim/AstroNvim/commit/445c0e3995ff2074083b01e7de0a2731458b5559)), closes [#2765](https://github.com/AstroNvim/AstroNvim/issues/2765)

## [4.32.1](https://github.com/AstroNvim/AstroNvim/compare/v4.32.0...v4.32.1) (2025-02-19)


### Bug Fixes

* **_astrolsp:** use correct variable name 'operation' instead of 'module' in file operations ([52f6b2b](https://github.com/AstroNvim/AstroNvim/commit/52f6b2be972cb83923745961f714b3dd576263e0))

## [4.32.0](https://github.com/AstroNvim/AstroNvim/compare/v4.31.1...v4.32.0) (2025-02-17)


### Features

* **astrolsp:** add LSP based file operations and neo-tree integration ([71853c9](https://github.com/AstroNvim/AstroNvim/commit/71853c97440ac479a70c2dab507be6e029b4df9d))
* **autopairs:** only enable auto pairs in actual file editing buffers ([7e633c9](https://github.com/AstroNvim/AstroNvim/commit/7e633c9adc387b67452b971270422a29c0d36f0a))
* **mappings:** add `&lt;Leader&gt;R` to rename the current file ([415adc9](https://github.com/AstroNvim/AstroNvim/commit/415adc944ccf01e5df46a7705865abe2ed5161b2))


### Bug Fixes

* **astrolsp:** disable LSP file operations by default until v5 ([ac15557](https://github.com/AstroNvim/AstroNvim/commit/ac1555797980dc2791a391e9e40224ee5349d96b))

## [4.31.1](https://github.com/AstroNvim/AstroNvim/compare/v4.31.0...v4.31.1) (2025-02-13)


### Bug Fixes

* **treesitter:** load `nvim-treesitter` on `VeryLazy` as it can be needed before a file is opened ([54d7415](https://github.com/AstroNvim/AstroNvim/commit/54d741501bfbabf407f2b27a5ebd298638bf3b13))

## [4.31.0](https://github.com/AstroNvim/AstroNvim/compare/v4.30.3...v4.31.0) (2025-02-13)


### Features

* **astrocore:** enable large buffer notification by default ([ce26623](https://github.com/AstroNvim/AstroNvim/commit/ce26623bcbe1a863e6df0d2c238bdea7b282fc04))
* **astrocore:** increase the large file detection defaults ([b6a794f](https://github.com/AstroNvim/AstroNvim/commit/b6a794f95c075cdbbbb732451add60b53f1a5e01))


### Bug Fixes

* **astrocore:** fix incorrect diagnostic default setting ([0b6e721](https://github.com/AstroNvim/AstroNvim/commit/0b6e7211a0d304826a6bad936dc2c39930e9ac43))

## [4.30.3](https://github.com/AstroNvim/AstroNvim/compare/v4.30.2...v4.30.3) (2025-02-13)


### Bug Fixes

* fix incorrect large buffer function location ([5c2fb2c](https://github.com/AstroNvim/AstroNvim/commit/5c2fb2c660095e3bd2822c11d99254fa1aefc457))

## [4.30.2](https://github.com/AstroNvim/AstroNvim/compare/v4.30.1...v4.30.2) (2025-02-13)


### Bug Fixes

* **vim-illuminate:** disable fully on large buffers ([a64b2df](https://github.com/AstroNvim/AstroNvim/commit/a64b2df6152b4eb11023888ced7dc095af73ed46))

## [4.30.1](https://github.com/AstroNvim/AstroNvim/compare/v4.30.0...v4.30.1) (2025-02-12)


### Bug Fixes

* check if large buffer detection checks are enabled ([ec86d42](https://github.com/AstroNvim/AstroNvim/commit/ec86d42672c0fe82b153054e4a469fbf95a3715b))

## [4.30.0](https://github.com/AstroNvim/AstroNvim/compare/v4.29.3...v4.30.0) (2025-02-12)


### Features

* **astrocore:** add average line length to large buffer detection ([87dc70f](https://github.com/AstroNvim/AstroNvim/commit/87dc70f7761c3e9965315182f0c40bfbd2cbcd0e))


### Performance Improvements

* optimize large buffer detection ([1748b1d](https://github.com/AstroNvim/AstroNvim/commit/1748b1d2f8a0ecf46f26fca1d63b33723b300519))
* **treesitter:** evaluate large buffer detection immediately ([06c071d](https://github.com/AstroNvim/AstroNvim/commit/06c071d28fd7954996a8c1748bb4f1ed1dbc59b9))

## [4.29.3](https://github.com/AstroNvim/AstroNvim/compare/v4.29.2...v4.29.3) (2025-02-04)


### Bug Fixes

* **autopairs:** disable autopairs for more filetypes and make easily extendable ([f344658](https://github.com/AstroNvim/AstroNvim/commit/f34465805a3336127eae15b9f74ca9eb15cfc5a4))
* **lazydev:** use `luv` library bundled with `lua_ls` ([70a8a10](https://github.com/AstroNvim/AstroNvim/commit/70a8a10bbf356d290f83219e4f2e739a2134e7b5))
* use `opts_extend` for Mason registries ([4f6e3fa](https://github.com/AstroNvim/AstroNvim/commit/4f6e3faaf8853f6247b7a0bc2e2a7c0a43cdfdaf))

## [4.29.2](https://github.com/AstroNvim/AstroNvim/compare/v4.29.1...v4.29.2) (2025-01-13)


### Bug Fixes

* **notify:** pin `nvim-notify` to an older version for neovim v0.9 ([299a929](https://github.com/AstroNvim/AstroNvim/commit/299a92999d93ca922041e9af33ef94420cc3e487))

## [4.29.1](https://github.com/AstroNvim/AstroNvim/compare/v4.29.0...v4.29.1) (2025-01-08)


### Bug Fixes

* add hotpatch for Neovim v0.10.3 regression that breaks `:Inspect` ([c05308c](https://github.com/AstroNvim/AstroNvim/commit/c05308cdcbb21b3dc3fdc375be54238c167ba6cb))
* **snapshot:** update dependencies ([e341895](https://github.com/AstroNvim/AstroNvim/commit/e341895375a7994c90085e837b0384f3071f6463))

## [4.29.0](https://github.com/AstroNvim/AstroNvim/compare/v4.28.1...v4.29.0) (2024-12-10)


### Features

* **gitsigns:** add `[G`/`]G` mappings for first and last git hunk ([7077a2e](https://github.com/AstroNvim/AstroNvim/commit/7077a2eb548e8f8c19552f7da44c3d8c04eefabf))

## [4.28.1](https://github.com/AstroNvim/AstroNvim/compare/v4.28.0...v4.28.1) (2024-11-24)


### Bug Fixes

* **snapshot:** update dependencies ([9e5a0c9](https://github.com/AstroNvim/AstroNvim/commit/9e5a0c95a9ce28549784b9c00131bd652165159a))

## [4.28.0](https://github.com/AstroNvim/AstroNvim/compare/v4.27.2...v4.28.0) (2024-11-15)


### Features

* **astroui:** use new Lazygit theming in AstroUI ([e797484](https://github.com/AstroNvim/AstroNvim/commit/e7974843b7652f8bed38ff8ec6d4e5bab5d905ae))


### Bug Fixes

* **astroui:** improve LazyGit theming ([9f627ea](https://github.com/AstroNvim/AstroNvim/commit/9f627ea363b8de4ddcc5e8045c121e6be0f8c394))
* **autocmds:** `vim.highlight` getting deprecated ([31ea1b9](https://github.com/AstroNvim/AstroNvim/commit/31ea1b9d006b9c0732f8188c21fc01c7acc7cf40))

## [4.27.2](https://github.com/AstroNvim/AstroNvim/compare/v4.27.1...v4.27.2) (2024-11-07)


### Bug Fixes

* **snapshot:** update dependencies ([4da229b](https://github.com/AstroNvim/AstroNvim/commit/4da229bb799d277b0693e7c275b6f9364e264166))

## [4.27.1](https://github.com/AstroNvim/AstroNvim/compare/v4.27.0...v4.27.1) (2024-10-28)


### Reverts

* conflicting mapping health checks moved to individual plugins ([c4fa819](https://github.com/AstroNvim/AstroNvim/commit/c4fa819eabedd8b4d5ee6c69b72d0bfd2d855f06))

## [4.27.0](https://github.com/AstroNvim/AstroNvim/compare/v4.26.8...v4.27.0) (2024-10-28)


### Features

* **health:** add duplicate mapping report in `:checkhealth astronvim` ([33a90b5](https://github.com/AstroNvim/AstroNvim/commit/33a90b53b6089ab33a42203d570e75810f8f21bd))

## [4.26.8](https://github.com/AstroNvim/AstroNvim/compare/v4.26.7...v4.26.8) (2024-10-22)


### Reverts

* `mason-lspconfig.nvim` fixed, use original upstream ([a348a4e](https://github.com/AstroNvim/AstroNvim/commit/a348a4e9a21084bac047204a680dc5a415939a08))

## [4.26.7](https://github.com/AstroNvim/AstroNvim/compare/v4.26.6...v4.26.7) (2024-10-15)


### Bug Fixes

* **lspconfig:** use correct branch of `mason-lspconfig` fork ([5611677](https://github.com/AstroNvim/AstroNvim/commit/56116776c428328eeac2c5a3f50070daf2e49b2c))

## [4.26.6](https://github.com/AstroNvim/AstroNvim/compare/v4.26.5...v4.26.6) (2024-10-15)


### Bug Fixes

* **plugins:** use `mason-lspconfig` fork until PR fix is merged ([bee36ce](https://github.com/AstroNvim/AstroNvim/commit/bee36ce8b87ddf6c2e94288c61db1d748b216a1f))
* **snapshot:** fix `nvim-lspconfig` internal module renames ([4fd4781](https://github.com/AstroNvim/AstroNvim/commit/4fd4781ab0c2d9c876acef1fc5b3f01773c78be6))

## [4.26.5](https://github.com/AstroNvim/AstroNvim/compare/v4.26.4...v4.26.5) (2024-09-24)


### Bug Fixes

* **telescope:** unpin telescope as it doesn't truly follow semantic release and is not releasing new features ([f949939](https://github.com/AstroNvim/AstroNvim/commit/f949939cd09f1f3af9d419e04a5ecb21b697a8b3))

## [4.26.4](https://github.com/AstroNvim/AstroNvim/compare/v4.26.3...v4.26.4) (2024-09-24)


### Bug Fixes

* **telescope:** ensure `.git` folders are always ignored on Windows ([4cce0ca](https://github.com/AstroNvim/AstroNvim/commit/4cce0cad81c2089c3350f43b1accc16442d54823))


### Reverts

* remove all `jumpoptions` by default to avoid confusion ([e868e93](https://github.com/AstroNvim/AstroNvim/commit/e868e939cdfdd22a60ad182c398e5f6d519fbb06))

## [4.26.3](https://github.com/AstroNvim/AstroNvim/compare/v4.26.2...v4.26.3) (2024-09-17)


### Bug Fixes

* **dap:** revert back to using Plenary's JSON cleaning function ([cf31b6e](https://github.com/AstroNvim/AstroNvim/commit/cf31b6e33075ad0f0206c5aacd22fc375ab32ab6))

## [4.26.2](https://github.com/AstroNvim/AstroNvim/compare/v4.26.1...v4.26.2) (2024-09-16)


### Bug Fixes

* **alpha:** make plugin icon respect disable icons ([98cf96a](https://github.com/AstroNvim/AstroNvim/commit/98cf96a2a519ddfa480029124bc5288fdc82fa8d))

## [4.26.1](https://github.com/AstroNvim/AstroNvim/compare/v4.26.0...v4.26.1) (2024-09-09)


### Bug Fixes

* **telescope:** always ignore `.git` folders in results ([016c2cf](https://github.com/AstroNvim/AstroNvim/commit/016c2cfc5288118f315a7fb26082d90d86a529b6))

## [4.26.0](https://github.com/AstroNvim/AstroNvim/compare/v4.25.2...v4.26.0) (2024-09-09)


### Features

* **smart-splits:** add intelligent lazy loading of `smart-splits` ([9ac414d](https://github.com/AstroNvim/AstroNvim/commit/9ac414dfc4bfd580062f9a381e94dafacc3454e4))

## [4.25.2](https://github.com/AstroNvim/AstroNvim/compare/v4.25.1...v4.25.2) (2024-09-07)


### Bug Fixes

* **nvim-dap:** don't manually call `load_launchjs` ([a4e5fd8](https://github.com/AstroNvim/AstroNvim/commit/a4e5fd800a51f9d69d88e0717982682a32c08b26))

## [4.25.1](https://github.com/AstroNvim/AstroNvim/compare/v4.25.0...v4.25.1) (2024-09-04)


### Bug Fixes

* **which-key:** terminal mode trigger disabled upstream ([5a77860](https://github.com/AstroNvim/AstroNvim/commit/5a7786079a3ffd747c13a3b4160f22caaa57737b))

## [4.25.0](https://github.com/AstroNvim/AstroNvim/compare/v4.24.1...v4.25.0) (2024-08-30)


### Features

* **telescope:** add `&lt;Leader&gt;fg` to search git tracked files ([16db0c6](https://github.com/AstroNvim/AstroNvim/commit/16db0c64042419ded746ed858641abbd2bdaafac))

## [4.24.1](https://github.com/AstroNvim/AstroNvim/compare/v4.24.0...v4.24.1) (2024-08-29)


### Bug Fixes

* **cmp:** list extend `sources` table automatically ([53984b0](https://github.com/AstroNvim/AstroNvim/commit/53984b02dfa023439c4e7e086fb23e01e07a4c90))

## [4.24.0](https://github.com/AstroNvim/AstroNvim/compare/v4.23.11...v4.24.0) (2024-08-26)


### Features

* **astrolsp:** factor in `retriggerCharacters` in `signatureHelpProvider` ([fe6e596](https://github.com/AstroNvim/AstroNvim/commit/fe6e5961206b46d2c1b883ae538b971d5a7d6ac0))


### Bug Fixes

* **alpha:** improve window detection for dashboard ([6d43957](https://github.com/AstroNvim/AstroNvim/commit/6d439577678581b25eb86cc36e34c6e33369324d)), closes [#2691](https://github.com/AstroNvim/AstroNvim/issues/2691)
* **astrolsp:** make sure to clear automatic signature help internals when leaving insert ([1b68ef4](https://github.com/AstroNvim/AstroNvim/commit/1b68ef4d174f12cebf53e9d17c5cddc9a70a1ad6))


### Performance Improvements

* **astrolsp:** use set lookup for signature help triggering ([20815a7](https://github.com/AstroNvim/AstroNvim/commit/20815a7792caeef7b1d209084ed0766c7d2fa737))

## [4.23.11](https://github.com/AstroNvim/AstroNvim/compare/v4.23.10...v4.23.11) (2024-08-23)


### Bug Fixes

* **autocmds:** make sure to clean up `q_close_windows` cache ([622b7e8](https://github.com/AstroNvim/AstroNvim/commit/622b7e8d5f11f2451e1fb6363200de86931505b8))

## [4.23.10](https://github.com/AstroNvim/AstroNvim/compare/v4.23.9...v4.23.10) (2024-08-23)


### Bug Fixes

* **autocmds:** don't overwrite buffer-local `q` mapping if set ([a368bd2](https://github.com/AstroNvim/AstroNvim/commit/a368bd203220392589ac60deb6d47d02db9c7f5c))


### Performance Improvements

* **autocmds:** Only set `q` to close mapping at most once for a buffer ([6cb78a6](https://github.com/AstroNvim/AstroNvim/commit/6cb78a6cdb80e92abd53633d6b835771dd9ed747))

## [4.23.9](https://github.com/AstroNvim/AstroNvim/compare/v4.23.8...v4.23.9) (2024-08-22)


### Bug Fixes

* **snapshot:** move `aerial` and `indent-blankline` to pinning commits until their next releases ([3258357](https://github.com/AstroNvim/AstroNvim/commit/3258357293fb50cff543f39bf812df12b223d132))

## [4.23.8](https://github.com/AstroNvim/AstroNvim/compare/v4.23.7...v4.23.8) (2024-08-20)


### Bug Fixes

* **snapshot:** pin treesitter to older version until all plugins update ([96a5317](https://github.com/AstroNvim/AstroNvim/commit/96a5317b2de8028785dd92192afeac7008f0b5ca))

## [4.23.7](https://github.com/AstroNvim/AstroNvim/compare/v4.23.6...v4.23.7) (2024-08-19)


### Bug Fixes

* **which-key:** don't show which-key in terminal mode by default ([7d3020e](https://github.com/AstroNvim/AstroNvim/commit/7d3020edd868304b8cf6b5b8fd2806b5bcabb4f7))

## [4.23.6](https://github.com/AstroNvim/AstroNvim/compare/v4.23.5...v4.23.6) (2024-08-19)


### Bug Fixes

* **autocmds:** don't create directories for URI like buffers ([9168082](https://github.com/AstroNvim/AstroNvim/commit/9168082a268fa665be3b8a3194631dc30ba4e727)), closes [#2682](https://github.com/AstroNvim/AstroNvim/issues/2682)

## [4.23.5](https://github.com/AstroNvim/AstroNvim/compare/v4.23.4...v4.23.5) (2024-08-15)


### Bug Fixes

* **options:** make `&gt;`/`&lt;` follow `shiftwidth` ([0d35704](https://github.com/AstroNvim/AstroNvim/commit/0d357041a54fb18404250c05726dff2c4ad99068))
* **options:** make maintain view when jumping back to buffer ([f5dbbd2](https://github.com/AstroNvim/AstroNvim/commit/f5dbbd23f7cba8de14e697670acb3d2d7d82fad2))

## [4.23.4](https://github.com/AstroNvim/AstroNvim/compare/v4.23.3...v4.23.4) (2024-08-09)


### Reverts

* not using `on_attach` doesn't resolve aerial bug ([b0758c3](https://github.com/AstroNvim/AstroNvim/commit/b0758c334eb6f5074222d4811fee9075604d1066))

## [4.23.3](https://github.com/AstroNvim/AstroNvim/compare/v4.23.2...v4.23.3) (2024-08-08)


### Bug Fixes

* **aerial:** remove `on_attach` until upstream bug fixed ([43e3813](https://github.com/AstroNvim/AstroNvim/commit/43e38131799f0902e4c616dad1d0578514548d1a))
* **mappings:** don't set terminal movement commands in floating windows ([7d3214d](https://github.com/AstroNvim/AstroNvim/commit/7d3214d881e413ec7c4417a88bacc5982a4a5fe0))

## [4.23.2](https://github.com/AstroNvim/AstroNvim/compare/v4.23.1...v4.23.2) (2024-08-04)


### Bug Fixes

* **nvim-dap:** add nicer error message when parsing `.vscode/launch.json` file ([18b729b](https://github.com/AstroNvim/AstroNvim/commit/18b729bc4793393a40049a3744d7b2d920b146ba))
* **nvim-dap:** use AstroCore for JSON cleanup until plenary merges fix PR ([a84f11a](https://github.com/AstroNvim/AstroNvim/commit/a84f11ac4b8dfce4a2dfbdfca5d592fc6ac8ec9e))

## [4.23.1](https://github.com/AstroNvim/AstroNvim/compare/v4.23.0...v4.23.1) (2024-08-01)


### Bug Fixes

* **snapshot:** update `nvim-treesitter-text-objects` for bug fix ([85885ba](https://github.com/AstroNvim/AstroNvim/commit/85885bac4052fa3c3e1c2acc031a0ff1cae334cf))

## [4.23.0](https://github.com/AstroNvim/AstroNvim/compare/v4.22.2...v4.23.0) (2024-07-31)


### Features

* **astrolsp:** add the ability to automatically show signature help while editing ([4cb0e37](https://github.com/AstroNvim/AstroNvim/commit/4cb0e37aa0ce13a25850a2c77a953bdad166d416))
* **toggleterm:** use default `horizontal` direction for terminals ([fc1dfea](https://github.com/AstroNvim/AstroNvim/commit/fc1dfea6be2464a289be022ae6908cda58987298))

## [4.22.2](https://github.com/AstroNvim/AstroNvim/compare/v4.22.1...v4.22.2) (2024-07-30)


### Bug Fixes

* **astrolsp:** LSP signature help shouldn't be focusable ([101543f](https://github.com/AstroNvim/AstroNvim/commit/101543f2fe26ed53b742e4085ccbea8ed2940bf9))

## [4.22.1](https://github.com/AstroNvim/AstroNvim/compare/v4.22.0...v4.22.1) (2024-07-30)


### Bug Fixes

* **cmp:** protect against `nil` LSP kind in completion ([daf0b60](https://github.com/AstroNvim/AstroNvim/commit/daf0b604e8e1dabbe4d90e378c781a877b7ca966))
* **nvim-dap-ui:** fix incorrect loading order ([4f95228](https://github.com/AstroNvim/AstroNvim/commit/4f95228e559f938b80cb45223bef4bb54fd8ff95))

## [4.22.0](https://github.com/AstroNvim/AstroNvim/compare/v4.21.0...v4.22.0) (2024-07-25)


### Features

* **plugins:** migrate from `neodev` to `lazydev`, closes [#2618](https://github.com/AstroNvim/AstroNvim/issues/2618) ([0126d44](https://github.com/AstroNvim/AstroNvim/commit/0126d447633a5eddfb7cf0f93cdcae27c2df54fa))

## [4.21.0](https://github.com/AstroNvim/AstroNvim/compare/v4.20.1...v4.21.0) (2024-07-22)


### Features

* **dap:** automatically load vscode `launch.json` when loading DAP ([e43facb](https://github.com/AstroNvim/AstroNvim/commit/e43facbba4b904c27b96a73b46164ea0c73eeab5))


### Bug Fixes

* **better-escape:** load on "VeryLazy" now that `better-escape` works in all modes ([e0cb231](https://github.com/AstroNvim/AstroNvim/commit/e0cb23159376f47668d9395aa2b7f20405d22bfa))
* **better-escape:** only use `jj` and `jk` for escape in insert mode ([08399f6](https://github.com/AstroNvim/AstroNvim/commit/08399f6ead600d1ec45038e6b96a8240f06e8f91))
* **neo-tree:** extend sources list by default ([f97178d](https://github.com/AstroNvim/AstroNvim/commit/f97178d56b52cdfeafa0c57e4aced679bb8b05d3))
* **telescope:** automatically rebuild `telescope-fzf` if necessary ([7c6cb6f](https://github.com/AstroNvim/AstroNvim/commit/7c6cb6fe4d4888937881413a5377bd3a11ab02ec))
* **which-key:** extend `disable` lists by default as well ([b0df6ae](https://github.com/AstroNvim/AstroNvim/commit/b0df6aebc12bd54d4dea6e8dd34287a22fd3303d))

## [4.20.1](https://github.com/AstroNvim/AstroNvim/compare/v4.20.0...v4.20.1) (2024-07-16)


### Bug Fixes

* **astrolsp:** register LSP mapping group locally as well as globally ([ca129a7](https://github.com/AstroNvim/AstroNvim/commit/ca129a7b830877382877d9fc4a9c1ff18847e11a))
* **options:** don't set clipboard in SSH session with 0.10+ for OSC52 support ([b11f0d2](https://github.com/AstroNvim/AstroNvim/commit/b11f0d2b620fbced8e744e6675bb2982f0071886))
* **which-key:** automatically extend `spec` table in `which-key` ([5362d84](https://github.com/AstroNvim/AstroNvim/commit/5362d844d076b9bb6aa13ecb036750f58bbb5d23))


### Performance Improvements

* **ts-autotag:** remove unnecessary custom `config` ([7c6ff2e](https://github.com/AstroNvim/AstroNvim/commit/7c6ff2e4816b18c8796655c0af1d335503f7517a))

## [4.20.0](https://github.com/AstroNvim/AstroNvim/compare/v4.19.0...v4.20.0) (2024-07-12)


### Features

* **mappings:** add `&lt;Leader&gt;x` menu for quickfix/list access ([99c2b13](https://github.com/AstroNvim/AstroNvim/commit/99c2b13df7b4943b3f82ca772db3dfb8f13f42e7))


### Bug Fixes

* Move `editorconfig` ensurance back to `autocmd` for better user control ([309fb21](https://github.com/AstroNvim/AstroNvim/commit/309fb21c3679c13abb4d4b64a5f86fee7f21414d))
* **which-key:** update to the new v3 setup ([1839d93](https://github.com/AstroNvim/AstroNvim/commit/1839d93b078f38c5924cedcd8efefce9840e6869))


### Performance Improvements

* **vim-illuminate:** make large file detection more aggressive ([14a389f](https://github.com/AstroNvim/AstroNvim/commit/14a389fb114c9918b1bd79ebb2f2e5dba4f32e3d))

## [4.19.0](https://github.com/AstroNvim/AstroNvim/compare/v4.18.0...v4.19.0) (2024-07-10)


### Features

* **mappings:** add bindings for beginning and end of quickfix and location lists ([b0de586](https://github.com/AstroNvim/AstroNvim/commit/b0de586d0652505daee70849bf0bd5ac50ef0df0))


### Bug Fixes

* **astrolsp:** fix typo in mappings ([75bb91a](https://github.com/AstroNvim/AstroNvim/commit/75bb91a49400e4e0bd6f0d48b6036602a364e774))


### Performance Improvements

* **lspconfig:** optimize re-application of `editorconfig` ([8358cb2](https://github.com/AstroNvim/AstroNvim/commit/8358cb2e2dfcd598bf0185a1d437728d1c964333))

## [4.18.0](https://github.com/AstroNvim/AstroNvim/compare/v4.17.4...v4.18.0) (2024-07-10)


### Features

* **astrolsp:** add `&lt;Leader&gt;lA` for document source code actions ([5da7018](https://github.com/AstroNvim/AstroNvim/commit/5da70183cf72657a39d6eeead3ce4b7cf8dc45b7)), closes [#2655](https://github.com/AstroNvim/AstroNvim/issues/2655)


### Bug Fixes

* **astrolsp:** visual mode formatting should check for `rangeFormatting` capability ([27341c6](https://github.com/AstroNvim/AstroNvim/commit/27341c62626dfb525ac2490548bc65898d2d7e17))
* **autocmds:** only emit each `augroup` event once ([b4716f5](https://github.com/AstroNvim/AstroNvim/commit/b4716f5aa7b2a1fdfa6ba34a74b39a7f8c711070))

## [4.17.4](https://github.com/AstroNvim/AstroNvim/compare/v4.17.3...v4.17.4) (2024-07-09)


### Bug Fixes

* **autocmds:** collect `augroups` before `AstroFile` events are triggered ([649dca3](https://github.com/AstroNvim/AstroNvim/commit/649dca3b98df3b9d6a3ff039e534d8b6ebd349f5))

## [4.17.3](https://github.com/AstroNvim/AstroNvim/compare/v4.17.2...v4.17.3) (2024-07-09)


### Bug Fixes

* **autocmds:** only trigger `filetypedetect` events after `AstroFile`/`AstroGitFile` events ([97085c1](https://github.com/AstroNvim/AstroNvim/commit/97085c159d7e468fe4aebc50b1f45fd3ab4f18ef)), closes [#2651](https://github.com/AstroNvim/AstroNvim/issues/2651)

## [4.17.2](https://github.com/AstroNvim/AstroNvim/compare/v4.17.1...v4.17.2) (2024-07-08)


### Bug Fixes

* **astrolsp:** `servers` list should be extended by default ([167fd37](https://github.com/AstroNvim/AstroNvim/commit/167fd3780a66f9574d554f5e729073c782104829))

## [4.17.1](https://github.com/AstroNvim/AstroNvim/compare/v4.17.0...v4.17.1) (2024-07-08)


### Reverts

* **cmp:** visibility check was fine, move lazy loading back to `InsertEnter` ([4d7614f](https://github.com/AstroNvim/AstroNvim/commit/4d7614f65bd6afba5fa5f23ce9d1880bb5bd41b3))

## [4.17.0](https://github.com/AstroNvim/AstroNvim/compare/v4.16.2...v4.17.0) (2024-07-08)


### Features

* add support for more icon providers in `cmp` completion ([f633f03](https://github.com/AstroNvim/AstroNvim/commit/f633f03e1651d69203c1828c128ed1e36bdf6264))


### Bug Fixes

* **cmp:** centralize formatting function ([024428b](https://github.com/AstroNvim/AstroNvim/commit/024428bf96b5a7976cb52a55c001a268de520cb5))
* **cmp:** fix backwards compatibility for users using `lspkind` options ([d9edd6a](https://github.com/AstroNvim/AstroNvim/commit/d9edd6ab0555381299c00a392df8a700b2f459a4))


### Reverts

* **cmp:** use default `cmp.visible` function for checking visibility ([01a3aea](https://github.com/AstroNvim/AstroNvim/commit/01a3aea3982e1bdca7e4b70155bf1fabe3753bcb))

## [4.16.2](https://github.com/AstroNvim/AstroNvim/compare/v4.16.1...v4.16.2) (2024-07-01)


### Bug Fixes

* **astroui:** match `terminal` and `nofile` exactly in winbar disabling ([2869329](https://github.com/AstroNvim/AstroNvim/commit/28693294f01498d8137b4958f47c0be17407cb3b))
* **heirline:** fix type in winbar control ([7f4652f](https://github.com/AstroNvim/AstroNvim/commit/7f4652f09a03a665e5d8fcac6bc9d609e368e348))

## [4.16.1](https://github.com/AstroNvim/AstroNvim/compare/v4.16.0...v4.16.1) (2024-07-01)


### Bug Fixes

* **snapshot:** pin `nvim-dap` to commit as releases are not frequent ([bd696b7](https://github.com/AstroNvim/AstroNvim/commit/bd696b78b4c669631c6bebf37d60236da26b032c))

## [4.16.0](https://github.com/AstroNvim/AstroNvim/compare/v4.15.1...v4.16.0) (2024-07-01)


### Features

* **aerial:** add `]y`/`[y`/`]Y`/`[Y` to navigate between symbols ([16e09da](https://github.com/AstroNvim/AstroNvim/commit/16e09daa6c78ff30a47b5b69c904335f5bb543d4))
* **astrocore:** add `]e`/`[e` and `]w`/`[w` to navigate between errors and warnings ([24b59a7](https://github.com/AstroNvim/AstroNvim/commit/24b59a7275854e530440e7cd51d3d9cc2be8c131))

## [4.15.1](https://github.com/AstroNvim/AstroNvim/compare/v4.15.0...v4.15.1) (2024-06-30)


### Bug Fixes

* **telescope:** remove mappings that break default telescope behavior ([c5421e8](https://github.com/AstroNvim/AstroNvim/commit/c5421e8abf9bd209da5ef64892bbd68fbd2a06f2))

## [4.15.0](https://github.com/AstroNvim/AstroNvim/compare/v4.14.0...v4.15.0) (2024-06-28)


### Features

* **gitsigns:** add `ig` text objects for git hunks ([74686a2](https://github.com/AstroNvim/AstroNvim/commit/74686a2ae9f00daab08d770a66f671627f7ac107))
* **gitsigns:** set mappings with `on_attach` in `gitsigns` `opts` to make mappings context aware ([e0d2285](https://github.com/AstroNvim/AstroNvim/commit/e0d228527bca539b079dc5a1397ebd5aec2d90ad))


### Bug Fixes

* **gitsigns:** fix mappings incorrectly following lowercase/uppercase conventions ([35012ff](https://github.com/AstroNvim/AstroNvim/commit/35012ffdfaac0b9f472ac88111a227c49e693464))

## [4.14.0](https://github.com/AstroNvim/AstroNvim/compare/v4.13.0...v4.14.0) (2024-06-27)


### Features

* **astrocore:** add `]l`/`[l` for navigating loclist ([32c31d5](https://github.com/AstroNvim/AstroNvim/commit/32c31d5d6b3b544283344c9f2c4765be2fd41a08))
* **astrocore:** add `]q`/`[q` for navigating quickfix ([3624fc4](https://github.com/AstroNvim/AstroNvim/commit/3624fc479970917172445a08da851cbb634a5038))


### Bug Fixes

* **astroui:** set colorscheme to `astrotheme` rather than `astrodark` to respect light background on initial installation ([def9128](https://github.com/AstroNvim/AstroNvim/commit/def91287ce75fe5a43ff9d3a8fb361c3dff35b4c)), closes [#2639](https://github.com/AstroNvim/AstroNvim/issues/2639)
* **lspconfig:** do not use `astrocore` in `cmd` function of plugin spec ([b97a1b9](https://github.com/AstroNvim/AstroNvim/commit/b97a1b9da78abdd62cf4b8822855af07a67a620a))

## [4.13.0](https://github.com/AstroNvim/AstroNvim/compare/v4.12.1...v4.13.0) (2024-06-25)


### Features

* **telescope:** open multiple selected files ([#2637](https://github.com/AstroNvim/AstroNvim/issues/2637)) ([cc1d152](https://github.com/AstroNvim/AstroNvim/commit/cc1d1529da8c33c421b21c59f73b41648b32ea3c))


### Reverts

* `luarocks` support improved in Lazy.nvim ([cc4396c](https://github.com/AstroNvim/AstroNvim/commit/cc4396c9e8f5515298a701ae59a236db6cd3f15b))

## [4.12.1](https://github.com/AstroNvim/AstroNvim/compare/v4.12.0...v4.12.1) (2024-06-24)


### Bug Fixes

* **astrocore:** safely load astrocore for initial installation protection ([6f91c78](https://github.com/AstroNvim/AstroNvim/commit/6f91c788fe7c845094ee7093d4ae55fa63cef963))
* **gitsigns:** `winbar` configured upstream for blame window ([dee34f1](https://github.com/AstroNvim/AstroNvim/commit/dee34f111daca65d6e5428cb0c94e9399b725d2c))
* **lazy:** disable `luarocks` integration if it is not installed ([9a81c8c](https://github.com/AstroNvim/AstroNvim/commit/9a81c8c5415f0519c5ad816db33974e4479c0089))
* **plugins:** manually disable `luarocks` in `plenary` and `telescope` for now ([6a967f3](https://github.com/AstroNvim/AstroNvim/commit/6a967f3803238a5eda2b16af35c24cd5444b37f1))

## [4.12.0](https://github.com/AstroNvim/AstroNvim/compare/v4.11.1...v4.12.0) (2024-06-24)


### Features

* update to `lazy.nvim` v11 ([ac1746f](https://github.com/AstroNvim/AstroNvim/commit/ac1746f2e5a821597d30f50f72b3fe3a6667a241))

## [4.11.1](https://github.com/AstroNvim/AstroNvim/compare/v4.11.0...v4.11.1) (2024-06-21)


### Bug Fixes

* **cmp_luasnip:** add missing `command` mode mappings ([5a9551c](https://github.com/AstroNvim/AstroNvim/commit/5a9551cf78ada904371fc9ce1b9987ea1ce6e3b1))

## [4.11.0](https://github.com/AstroNvim/AstroNvim/compare/v4.10.5...v4.11.0) (2024-06-20)


### Features

* **astroui:** use `opts` table for configuring when winbar is enabled/disabled ([211e0d1](https://github.com/AstroNvim/AstroNvim/commit/211e0d187df5681f7610349e48ef6f8b0ad959b8))

## [4.10.5](https://github.com/AstroNvim/AstroNvim/compare/v4.10.4...v4.10.5) (2024-06-19)


### Bug Fixes

* **guess-indent:** update to new `guess-ident.nvim` refactor ([96e2dc7](https://github.com/AstroNvim/AstroNvim/commit/96e2dc7864f90a659e5a09c110f086d9911a1e28))

## [4.10.4](https://github.com/AstroNvim/AstroNvim/compare/v4.10.3...v4.10.4) (2024-06-17)


### Bug Fixes

* **telescope:** ignore built-in colorschemes if possible by default since they are not compatible anyway ([0888e1d](https://github.com/AstroNvim/AstroNvim/commit/0888e1d54ede843cf70ba33c21ec40f82bdaef46))

## [4.10.3](https://github.com/AstroNvim/AstroNvim/compare/v4.10.2...v4.10.3) (2024-06-13)


### Bug Fixes

* **dressing:** use AstroUI for default prompt ([2195fc5](https://github.com/AstroNvim/AstroNvim/commit/2195fc54c3ed767ffb835f67c030bd4de853c654))

## [4.10.2](https://github.com/AstroNvim/AstroNvim/compare/v4.10.1...v4.10.2) (2024-06-11)


### Bug Fixes

* **telescope:** remove LSP mappings as they are currently broken ([4a8443b](https://github.com/AstroNvim/AstroNvim/commit/4a8443bf46f9071f016bb94e1c2367f2c9956bf2))

## [4.10.1](https://github.com/AstroNvim/AstroNvim/compare/v4.10.0...v4.10.1) (2024-06-08)


### Bug Fixes

* **dap:** dap vscode filetype definition moved upstream to `mason-nvim-dap` ([69fa069](https://github.com/AstroNvim/AstroNvim/commit/69fa069ed02f69d690cfda1e516c7e4c469e9f29))

## [4.10.0](https://github.com/AstroNvim/AstroNvim/compare/v4.9.0...v4.10.0) (2024-06-07)


### Features

* **dap:** add a basic configuration of the VS Code `launch.json` support for `nvim-dap` ([f1f7230](https://github.com/AstroNvim/AstroNvim/commit/f1f7230461fb22d945927e3f4bc3f1ef353c9449))
* **dap:** add more sophisticated JSON parsing to `launch.json` support ([c86f07d](https://github.com/AstroNvim/AstroNvim/commit/c86f07d02c779c240e236cea3f7b4c7fb8b612af))

## [4.9.0](https://github.com/AstroNvim/AstroNvim/compare/v4.8.5...v4.9.0) (2024-06-07)


### Features

* use the new `opts_extend` in lazy.nvim to make `ensure_installed` lists extend ([e095b80](https://github.com/AstroNvim/AstroNvim/commit/e095b80e89c819dad7b5d07d5a89e2516d6104b6))


### Performance Improvements

* **cmp:** improve lazy loading ([a2aeaa1](https://github.com/AstroNvim/AstroNvim/commit/a2aeaa1edccbf43b446b4885bf342526e5c8626f))

## [4.8.5](https://github.com/AstroNvim/AstroNvim/compare/v4.8.4...v4.8.5) (2024-06-06)


### Bug Fixes

* **treesitter:** fail silently if  error loading query predicates ([88c1633](https://github.com/AstroNvim/AstroNvim/commit/88c1633813a132cfa263d92f992376ddc3c8b78d)), closes [#2620](https://github.com/AstroNvim/AstroNvim/issues/2620)

## [4.8.4](https://github.com/AstroNvim/AstroNvim/compare/v4.8.3...v4.8.4) (2024-06-05)


### Bug Fixes

* **astrocore:** decrease default large buffer size from 500kb to 250kb ([dc30375](https://github.com/AstroNvim/AstroNvim/commit/dc3037573a7bc17a22907990e08a1dbab0766655))
* **telescope:** add selected icon to multiple selection ([7aaa4ef](https://github.com/AstroNvim/AstroNvim/commit/7aaa4ef670d793655190da52fe94bdf7e95d7421))

## [4.8.3](https://github.com/AstroNvim/AstroNvim/compare/v4.8.2...v4.8.3) (2024-06-03)


### Bug Fixes

* **mappings:** `gx` mapping in visual mode ([8fc1f24](https://github.com/AstroNvim/AstroNvim/commit/8fc1f2492904b2f96b611690d86a652e5271e30e))


### Reverts

* use `$LAZY` for lazy dir if it's set ([bf099f2](https://github.com/AstroNvim/AstroNvim/commit/bf099f2d2b6f49e2f8a47e304894ede7a4f2760f))

## [4.8.2](https://github.com/AstroNvim/AstroNvim/compare/v4.8.1...v4.8.2) (2024-06-01)


### Bug Fixes

* **lazy:** don't use `$LAZY` for the lazy.nvim dir ([2c25760](https://github.com/AstroNvim/AstroNvim/commit/2c25760d4ecf3c4e32dbf8a2aaa4e006f07fe15f))

## [4.8.1](https://github.com/AstroNvim/AstroNvim/compare/v4.8.0...v4.8.1) (2024-05-31)


### Bug Fixes

* **snapshot:** update `nvim-lspconfig` to get ESLint bug fix ([ced9369](https://github.com/AstroNvim/AstroNvim/commit/ced9369b624f43b2342ad08f549f32dc9bf6b4e6))

## [4.8.0](https://github.com/AstroNvim/AstroNvim/compare/v4.7.9...v4.8.0) (2024-05-30)


### Features

* backport default LSP mappings in Neovim v0.11 ([36b88be](https://github.com/AstroNvim/AstroNvim/commit/36b88bef78f9726a0b28dda936e9f42fdc7bdbeb))


### Bug Fixes

* **astrocore:** handle `vim.diagnostic` changes in neovim v0.11 ([80498ac](https://github.com/AstroNvim/AstroNvim/commit/80498ac2f0ad635922b802644813d378a7bcf5b2))

## [4.7.9](https://github.com/AstroNvim/AstroNvim/compare/v4.7.8...v4.7.9) (2024-05-28)


### Bug Fixes

* **notify:** make sure to return the `vim.notify` result ([64757c3](https://github.com/AstroNvim/AstroNvim/commit/64757c325b376c490a329d5a715659fcc027d86a))

## [4.7.8](https://github.com/AstroNvim/AstroNvim/compare/v4.7.7...v4.7.8) (2024-05-28)


### Bug Fixes

* **astrocore:** add missing `&lt;Leader&gt;/` mappings for native commenting ([42cba10](https://github.com/AstroNvim/AstroNvim/commit/42cba1043e8b26fc92221643750121d7e8e847e7))
* **astrolsp:** code action mapping should be `x` mode instead of `v` ([84db33e](https://github.com/AstroNvim/AstroNvim/commit/84db33ef993d1972c9c8b9f2c4886522673c3293))

## [4.7.7](https://github.com/AstroNvim/AstroNvim/compare/v4.7.6...v4.7.7) (2024-05-24)


### Bug Fixes

* **astrocore:** add new `enabled` key to rooter ([0cf4960](https://github.com/AstroNvim/AstroNvim/commit/0cf496075a12627c9b333a81d5ddf58634efab36))

## [4.7.6](https://github.com/AstroNvim/AstroNvim/compare/v4.7.5...v4.7.6) (2024-05-23)


### Bug Fixes

* **cmp:** improve `cmp` visibility check ([a32371a](https://github.com/AstroNvim/AstroNvim/commit/a32371ac30d9cbdc3e44908342df3059ebeae8f7))

## [4.7.5](https://github.com/AstroNvim/AstroNvim/compare/v4.7.4...v4.7.5) (2024-05-21)


### Bug Fixes

* **astroui:** do not overwrite `colors` when modified in place ([c3d90b9](https://github.com/AstroNvim/AstroNvim/commit/c3d90b987287194f4375ed96d16ff9ab0849b771))

## [4.7.4](https://github.com/AstroNvim/AstroNvim/compare/v4.7.3...v4.7.4) (2024-05-21)


### Bug Fixes

* **ts-context-commentstring:** add support for native commenting in neovim 0.10+ ([9a16612](https://github.com/AstroNvim/AstroNvim/commit/9a166127de101a5318106b149808deaee48ca61d))

## [4.7.3](https://github.com/AstroNvim/AstroNvim/compare/v4.7.2...v4.7.3) (2024-05-18)


### Bug Fixes

* **mappings:** add back next/previous diagnostic mappings to neovim 0.10 ([f0c9a3f](https://github.com/AstroNvim/AstroNvim/commit/f0c9a3fff7f6cab815dd6b38d120cdb291cd393b))
* **mappings:** add missing default diagnostic mapping backport ([b853b01](https://github.com/AstroNvim/AstroNvim/commit/b853b0154d8b8daae78668e55469973f2d5a927f))

## [4.7.2](https://github.com/AstroNvim/AstroNvim/compare/v4.7.1...v4.7.2) (2024-05-17)


### Bug Fixes

* **indent-blankline:** limit updating of `indent-blankline` in Neovim &lt;0.10 ([ce2464c](https://github.com/AstroNvim/AstroNvim/commit/ce2464c90e024289d46557aadd20039bded22d3a))

## [4.7.1](https://github.com/AstroNvim/AstroNvim/compare/v4.7.0...v4.7.1) (2024-05-16)


### Bug Fixes

* **astroui:** use single character icon for `DapLogPoint` ([c7e2437](https://github.com/AstroNvim/AstroNvim/commit/c7e2437a4f24ee876b69fc3ae7bdd49c78e38173))
* **autocmd:** typo in unlist qf description ([#2597](https://github.com/AstroNvim/AstroNvim/issues/2597)) ([c14560e](https://github.com/AstroNvim/AstroNvim/commit/c14560ed0113342aa20a951de0098fef7c233bc5))

## [4.7.0](https://github.com/AstroNvim/AstroNvim/compare/v4.6.7...v4.7.0) (2024-05-14)


### Features

* **astroui:** add `runtime_condition` support to `null-ls` statusline integration ([5686c08](https://github.com/AstroNvim/AstroNvim/commit/5686c08563a8ecac2997435c1f1849a96dab1b03))

## [4.6.7](https://github.com/AstroNvim/AstroNvim/compare/v4.6.6...v4.6.7) (2024-05-11)


### Bug Fixes

* astrocore spelling in require ([#2588](https://github.com/AstroNvim/AstroNvim/issues/2588)) ([08622d6](https://github.com/AstroNvim/AstroNvim/commit/08622d6ef4c3b8872e0757c8ae0ce7611b943c40))

## [4.6.6](https://github.com/AstroNvim/AstroNvim/compare/v4.6.5...v4.6.6) (2024-05-09)


### Bug Fixes

* add missing windows `gdu` executable name possibility ([cb24728](https://github.com/AstroNvim/AstroNvim/commit/cb247284584b972f3ee071958f04e5809315433a)), closes [#2585](https://github.com/AstroNvim/AstroNvim/issues/2585)

## [4.6.5](https://github.com/AstroNvim/AstroNvim/compare/v4.6.4...v4.6.5) (2024-05-08)


### Bug Fixes

* **cmp:** `&lt;C-N&gt;` and `<C-P>` should start completion if not started ([54c9f6a](https://github.com/AstroNvim/AstroNvim/commit/54c9f6abcd383d8021a3ff7429c6b74fa9ed8a3a))


### Performance Improvements

* **notify:** optimize performance for notification pausing/resuming ([cd57fd4](https://github.com/AstroNvim/AstroNvim/commit/cd57fd4b8c81b168940dbfaf8bae861b6aa6866f))

## [4.6.4](https://github.com/AstroNvim/AstroNvim/compare/v4.6.3...v4.6.4) (2024-05-07)


### Bug Fixes

* notification deferment not playing nicely with `nvim-notify` ([d45edb1](https://github.com/AstroNvim/AstroNvim/commit/d45edb12bcc8f3709ae77ada53b2c72daf7f683e)), closes [#2579](https://github.com/AstroNvim/AstroNvim/issues/2579)

## [4.6.3](https://github.com/AstroNvim/AstroNvim/compare/v4.6.2...v4.6.3) (2024-05-07)


### Reverts

* use main upstream for `guess-indent` as lazy gets very confused ([3d094ea](https://github.com/AstroNvim/AstroNvim/commit/3d094ea7a6dafa90ac7bf6f48ffb399b28c22b12))

## [4.6.2](https://github.com/AstroNvim/AstroNvim/compare/v4.6.1...v4.6.2) (2024-05-06)


### Bug Fixes

* **guess-indent:** update to new API for silencing indentation notifications ([4952573](https://github.com/AstroNvim/AstroNvim/commit/4952573bde22cdba7805ec7f83bb589a59701e2a))
* **mappings:** remove neovim v0.10 lsp mappings as they got reverted ([0da22af](https://github.com/AstroNvim/AstroNvim/commit/0da22afb4dcdbf360bf65aa85ef44eabf96afa72))

## [4.6.1](https://github.com/AstroNvim/AstroNvim/compare/v4.6.0...v4.6.1) (2024-05-06)


### Bug Fixes

* **autocmds:** respect modeline when forwarding events ([5bd0684](https://github.com/AstroNvim/AstroNvim/commit/5bd0684ced37db0dba3f66f10d3e6c84fd526a21))


### Performance Improvements

* **guess-indent:** improve lazy loading ([#2561](https://github.com/AstroNvim/AstroNvim/issues/2561)) ([c1e8e74](https://github.com/AstroNvim/AstroNvim/commit/c1e8e74312284223a6faa816e6b75dbfcd4d1c2e))

## [4.6.0](https://github.com/AstroNvim/AstroNvim/compare/v4.5.1...v4.6.0) (2024-05-06)


### Features

* add `:AstroVersion` for displaying current version ([168b296](https://github.com/AstroNvim/AstroNvim/commit/168b29644be57e2a59333de554b92d931c9b0566))

## [4.5.1](https://github.com/AstroNvim/AstroNvim/compare/v4.5.0...v4.5.1) (2024-05-05)


### Bug Fixes

* decouple mappings to make it easier to override them individually ([3ed1a45](https://github.com/AstroNvim/AstroNvim/commit/3ed1a453dfd079f1477fbeba3d28965a13c92df9)), closes [#2574](https://github.com/AstroNvim/AstroNvim/issues/2574)

## [4.5.0](https://github.com/AstroNvim/AstroNvim/compare/v4.4.4...v4.5.0) (2024-05-03)


### Features

* **astrolsp:** add global inlay hints toggle ([7d73045](https://github.com/AstroNvim/AstroNvim/commit/7d730458b115bdc772ac926ce7818d8673b7abc7))


### Bug Fixes

* **astrolsp:** remove unnecessary backported `&lt;C-S&gt;` mapping. This is actually a bug because it overwrites a separate AstroNvim default ([1e36e3e](https://github.com/AstroNvim/AstroNvim/commit/1e36e3e7619957a708004b85a1de2c2761f5b354))

## [4.4.4](https://github.com/AstroNvim/AstroNvim/compare/v4.4.3...v4.4.4) (2024-05-02)


### Bug Fixes

* **comment:** make `&lt;Leader&gt;/` dot-repeatable ([e2edcc7](https://github.com/AstroNvim/AstroNvim/commit/e2edcc7e197d577912d29305f67d7c995ae47353)), closes [#2410](https://github.com/AstroNvim/AstroNvim/issues/2410)
* make `git` optional in the path for execution ([b10119d](https://github.com/AstroNvim/AstroNvim/commit/b10119d295e369fabf46d2648b0ab969cbc5c0bc))

## [4.4.3](https://github.com/AstroNvim/AstroNvim/compare/v4.4.2...v4.4.3) (2024-05-01)


### Bug Fixes

* **health:** check for ripgrep (`rg`) executable ([2f43843](https://github.com/AstroNvim/AstroNvim/commit/2f438432d6de5e9bdb9c806af24964393640059e))
* **telescope:** only map Telescope's `live_grep` picker if `rg` is available ([25a7ebf](https://github.com/AstroNvim/AstroNvim/commit/25a7ebf5383becedfdd4dfe4f94f70367a20e68f))

## [4.4.2](https://github.com/AstroNvim/AstroNvim/compare/v4.4.1...v4.4.2) (2024-05-01)


### Bug Fixes

* **treesitter:** guarantee mason loads before treesitter ([cfd992f](https://github.com/AstroNvim/AstroNvim/commit/cfd992f5661016e658475e946dec12f56870f125))

## [4.4.1](https://github.com/AstroNvim/AstroNvim/compare/v4.4.0...v4.4.1) (2024-04-30)


### Bug Fixes

* **cmp:** update `vim.snippet` to use updated `active` API ([#2560](https://github.com/AstroNvim/AstroNvim/issues/2560)) ([b505f4f](https://github.com/AstroNvim/AstroNvim/commit/b505f4ff41f851fa4a008586995f79408daf72bc))
* **smart-splits:** disable aggressive lazy loading for multiplexer setup ([242f728](https://github.com/AstroNvim/AstroNvim/commit/242f728ab5431d9b7142e4efe0894b5960fb6569))
* **vim-illuminate:** add missing `large_file_cutoff` default ([782fcb0](https://github.com/AstroNvim/AstroNvim/commit/782fcb069ba7879e1ad2b43db2351dad3f9a7ea0))

## [4.4.0](https://github.com/AstroNvim/AstroNvim/compare/v4.3.0...v4.4.0) (2024-04-29)


### Features

* **mappings:** backport new default neovim diagnostic and LSP mappings ([91191e6](https://github.com/AstroNvim/AstroNvim/commit/91191e60e26d0a5f9b1fbe46cd18ce6c4873c476))


### Bug Fixes

* clear up language in update notification for AstroNvim ([8ca570a](https://github.com/AstroNvim/AstroNvim/commit/8ca570aa99e47f50274c1d804900efb54f19be1c))
* **mappings:** fix incorrectly normalized mappings ([cc66460](https://github.com/AstroNvim/AstroNvim/commit/cc66460b62dfd2929622f3b39a03d1d489f6585f))

## [4.3.0](https://github.com/AstroNvim/AstroNvim/compare/v4.2.1...v4.3.0) (2024-04-26)


### Features

* **alpha:** show the actual leader key on the dashboard ([3dabdd0](https://github.com/AstroNvim/AstroNvim/commit/3dabdd06a92f3f7af61e34bd2477005ceafc7598))


### Bug Fixes

* **autocmds:** typo in terminal_settings description ([#2552](https://github.com/AstroNvim/AstroNvim/issues/2552)) ([4b4abca](https://github.com/AstroNvim/AstroNvim/commit/4b4abca875443a3d305d1fcfa854bc3f45bc59c1))

## [4.2.1](https://github.com/AstroNvim/AstroNvim/compare/v4.2.0...v4.2.1) (2024-04-23)


### Bug Fixes

* **nvim-dap-ui:** temporarily pin `nvim-dap-ui` to commit until next release ([a6fb183](https://github.com/AstroNvim/AstroNvim/commit/a6fb183eeaf08000f2961bc05009592ff986975c))

## [4.2.0](https://github.com/AstroNvim/AstroNvim/compare/v4.1.12...v4.2.0) (2024-04-18)


### Features

* add notification to recommend running `:Lazy update` again after AstroNvim updates ([3c81105](https://github.com/AstroNvim/AstroNvim/commit/3c811058edc4094a276e637e1763ca14a6135acc))

## [4.1.12](https://github.com/AstroNvim/AstroNvim/compare/v4.1.11...v4.1.12) (2024-04-18)


### Bug Fixes

* **autocmds:** add missing `HighlightURL` default highlight group ([93b10eb](https://github.com/AstroNvim/AstroNvim/commit/93b10ebb1bbf878369625139031f5581c7d3e587))


### Performance Improvements

* optimize url highlighting auto command and disable for large buffers ([848ac6b](https://github.com/AstroNvim/AstroNvim/commit/848ac6b798196893239c680a9d0b6b50c21345f6))

## [4.1.11](https://github.com/AstroNvim/AstroNvim/compare/v4.1.10...v4.1.11) (2024-04-16)


### Performance Improvements

* **astrolsp:** improve lazy loading of AstroLSP ([35b8928](https://github.com/AstroNvim/AstroNvim/commit/35b892836116dd489bf41de4b965052364dabfdb))

## [4.1.10](https://github.com/AstroNvim/AstroNvim/compare/v4.1.9...v4.1.10) (2024-04-11)


### Bug Fixes

* **comment:** add missing `Comment.nvim` mappings for lazy loading ([9d5b0eb](https://github.com/AstroNvim/AstroNvim/commit/9d5b0eb59548e8a5667d3e04d0ca1d9bb487fac9))

## [4.1.9](https://github.com/AstroNvim/AstroNvim/compare/v4.1.8...v4.1.9) (2024-04-10)


### Bug Fixes

* **autocmds:** check if buffer is valid before checking for file ([40f7c42](https://github.com/AstroNvim/AstroNvim/commit/40f7c42b9589cd3fe45168b3875200c3e2e93ed8))

## [4.1.8](https://github.com/AstroNvim/AstroNvim/compare/v4.1.7...v4.1.8) (2024-04-06)


### Bug Fixes

* **mappings:** clear up language of `&lt;Leader&gt;q` and `<Leader>Q` mappings ([e09e62e](https://github.com/AstroNvim/AstroNvim/commit/e09e62e5338e2b2b074c5a041b18a773c0eb55e3))
* **snapshot:** require AstroCore v1.1.1 for important bug fix ([4e0f63c](https://github.com/AstroNvim/AstroNvim/commit/4e0f63ce6efb6f1c1175afd8f77faf861b6f3317))

## [4.1.7](https://github.com/AstroNvim/AstroNvim/compare/v4.1.6...v4.1.7) (2024-04-05)


### Bug Fixes

* make sure `FileType` event is fired at the correct time after `AstroFile` ([eceb0a8](https://github.com/AstroNvim/AstroNvim/commit/eceb0a803bbaf146b0a7a33885b4d7cf410a345d))

## [4.1.6](https://github.com/AstroNvim/AstroNvim/compare/v4.1.5...v4.1.6) (2024-04-04)


### Bug Fixes

* **autocmds:** when triggering `AstroFile` events, only forward events for valid buffers ([3bf88e0](https://github.com/AstroNvim/AstroNvim/commit/3bf88e035e302a15504e1074018cb11e51fc1076))

## [4.1.5](https://github.com/AstroNvim/AstroNvim/compare/v4.1.4...v4.1.5) (2024-04-03)


### Bug Fixes

* **telescope:** load treesitter with telescope ([7462fb1](https://github.com/AstroNvim/AstroNvim/commit/7462fb100799ac8c9ec1968df2d97baf766d6853))

## [4.1.4](https://github.com/AstroNvim/AstroNvim/compare/v4.1.3...v4.1.4) (2024-04-03)


### Bug Fixes

* **autocmds:** fully retrigger original autocmd event after `AstroFile` ([112e209](https://github.com/AstroNvim/AstroNvim/commit/112e209d75bb728ecff416811c52a495531675d0))

## [4.1.3](https://github.com/AstroNvim/AstroNvim/compare/v4.1.2...v4.1.3) (2024-04-02)


### Bug Fixes

* **cmp:** guarantee all sources have a group index ([568da53](https://github.com/AstroNvim/AstroNvim/commit/568da5323cb17652d6eb7536a7668e83398260e9))
* **resession:** enable AstroCore resession extension for single tab restore ([0c9f87b](https://github.com/AstroNvim/AstroNvim/commit/0c9f87bff8232d3efbebdb3d8725ac65887dc28a))

## [4.1.2](https://github.com/AstroNvim/AstroNvim/compare/v4.1.1...v4.1.2) (2024-04-02)


### Bug Fixes

* **lspkind:** improve `cmp` and `lspkind` integration and loading order ([e1a5eca](https://github.com/AstroNvim/AstroNvim/commit/e1a5ecac5fc4dd2a157e466b5edbad49fca461aa))

## [4.1.1](https://github.com/AstroNvim/AstroNvim/compare/v4.1.0...v4.1.1) (2024-04-01)


### Bug Fixes

* **plugins:** explicitly mark all dependencies as `lazy = true` ([dbd3d13](https://github.com/AstroNvim/AstroNvim/commit/dbd3d1320459913bb6cadb3c932ccc986ccb57df))

## [4.1.0](https://github.com/AstroNvim/AstroNvim/compare/v4.0.0...v4.1.0) (2024-04-01)


### Features

* **dap:** enable dap on windows by default ([8d8f18d](https://github.com/AstroNvim/AstroNvim/commit/8d8f18d127b70e10a4e92fecb96a9d0eff75d49e))


### Bug Fixes

* **colorizer:** attach colorizer immediately after lazy loading ([f56a332](https://github.com/AstroNvim/AstroNvim/commit/f56a33276d8446cd562cc140ff0aa6673ae6e3b0))

## [4.0.0](https://github.com/AstroNvim/AstroNvim/compare/v3.45.3...v4.0.0) (2024-04-01)


### ⚠ BREAKING CHANGES

* **mappings:** change `gT` to `gy` for type definition to avoid conflict with core mapping
* move `signs` and `diagnostics` configuration to AstroCore
* **mappings:** change some UI/UX mappings to make more sense
* **options:** move vim options to AstroCore `opts`
* **ui:** unify capital/lowercase meaning for global/buffer
* remove `mini.indentscope` and just use `indent-blankline.nvim`
* **treesitter:** change loop text object from `l` to `o`
* **astrolsp:** configure signs separately from diagnostics
* remove `schemastore` from default plugins
* **mappings:** make `<Leader>uc` and `<Leader>uC` toggle buffer/global cmp and move colorizer toggle to `<Leader>uz`
* **plugins:** move from `null-ls` to maintained fork `none-ls`
* **ui:** use mini.indentscope for highlighting current context ([#2253](https://github.com/AstroNvim/AstroNvim/issues/2253))
* **neo-tree:** remove `o` binding, conflicts with new "Order by" keymaps
* **mason:** rename `MasonUpdate` and `MasonUpdateAll` to `AstroMasonUpdate` and `AstroMasonUpdateAll`
* move configuration defaults to `opts` tables
* move updater, git, and mason utilities to `astrocore`
* move buffer to `astrocore` and icons to `astroui`
* move resession extension to AstroCore
* make resession the default session manager
* move status API to AstroUI
* move colorscheme to AstroUI and polish to AstroCore
* move astronvim.user_terminals to AstroCore
* remove deprecated plugin configs and unnecessary LSPLoaded icon
* move UI/UX utils to `astrocore`
* move astronvim specific options to AstroCore options
* move Heirline `setup_colors` function to AstroUI
* move plugins and lazy_snapshot into `astronvim` module
* move to a model of just providing plugins
* remove updater mappings and commands
* **astrolsp:** `setup_handlers` renamed to `handlers`
* drop support for Neovim v0.8
* **plugins:** use `on_load` and remove some unnecessary `config` functions
* modularize config with AstroCore, AstroUI, and AstroLSP

### Features

* `large_buf` can be set to `false` to disable ([73d521e](https://github.com/AstroNvim/AstroNvim/commit/73d521e112f70f1d74e161531c66ea76327af4c6))
* add `&lt;Leader&gt;SF` to search all previous directory sessions ([ab9455a](https://github.com/AstroNvim/AstroNvim/commit/ab9455a99a664999ea83da8fe509bf01fc1da492))
* add `AstroLargeBuf` autocmd user event and update `max_file` usage to `large_buf` ([efaf0e5](https://github.com/AstroNvim/AstroNvim/commit/efaf0e5393793f70d6c8f5bda9ef58a2ab7f51bd))
* add `AstroUpdate` to update Lazy and Mason ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* add `init.lua` to warn user if they try to use AstroNvim as a direct Neovim configuration ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* add `vim.g.astronvim_options` as an optional function for setting up options ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* add configuration of plugin pinning ([9d1376d](https://github.com/AstroNvim/AstroNvim/commit/9d1376d5eddf44fabd0eb92153201939cfc938ed))
* add Neovim version detection on startup ([ad934f0](https://github.com/AstroNvim/AstroNvim/commit/ad934f0c996c93c9019cae82693c82ff27534271))
* **alpha:** use built in `button` function from Alpha ([1ad1e1e](https://github.com/AstroNvim/AstroNvim/commit/1ad1e1e0dc4b27a3c498130c0956a937245a5ef7))
* **astrocore:** disable rooter `autochdir` by default ([be5ee14](https://github.com/AstroNvim/AstroNvim/commit/be5ee1451e289b9b97f09528a0a0f8f86ce28044))
* **astrocore:** enable built-in project rooting by default ([9a8b7d1](https://github.com/AstroNvim/AstroNvim/commit/9a8b7d1675be66547e4ca4bdd19bd88d1d04be38))
* **astrocore:** increase the default size for large files ([e0b826d](https://github.com/AstroNvim/AstroNvim/commit/e0b826d4e854ea2ce59e927ccfe207e65cdc40f5))
* **astrolsp:** configure `vim.lsp.handlers` in configuration ([ab008dd](https://github.com/AstroNvim/AstroNvim/commit/ab008ddb438432982b67c9f2da74f65d580b0984))
* **astrolsp:** don't add formatting mappings when formatting is disabled ([26147a6](https://github.com/AstroNvim/AstroNvim/commit/26147a631e6c80370181c0617a4bc41ea4de8fbe))
* **astrolsp:** move lsp autocommands to AstroLSP `opts` ([8fe55d0](https://github.com/AstroNvim/AstroNvim/commit/8fe55d042e2d017f26e14b04f53e228b3ed45f29))
* **astrolsp:** move lsp user commands to AstroLSP `opts` ([2c19d9e](https://github.com/AstroNvim/AstroNvim/commit/2c19d9e600b52c62a6e05cad85a63e7f85c952b7))
* **cmp:** add buffer local cmp completion control ([815ee79](https://github.com/AstroNvim/AstroNvim/commit/815ee79ba4537e6073936d791ca7895c9d34ef12))
* **cmp:** allow `LuaSnip` to be disabled ([7958c12](https://github.com/AstroNvim/AstroNvim/commit/7958c12def1cc7a0e3fdba8e55983d2922df5f64))
* **cmp:** fallback to `vim.snippet` if available and no other snippet engine configured ([424f46b](https://github.com/AstroNvim/AstroNvim/commit/424f46b49ebd752997cb965e88f96f404172bde0))
* **cmp:** set `group_index` for lsp and buffer `cmp` sources ([bfb01ee](https://github.com/AstroNvim/AstroNvim/commit/bfb01ee8017a6c38d9cd0df258b0e67cb295d457))
* **config:** add ability to configure `mapleader` and `icons_enabled` in AstroNvim `opts` ([27adb26](https://github.com/AstroNvim/AstroNvim/commit/27adb26c3c65ce82489370f930de93237a671b48))
* **config:** move `maplocalleader` to AstroNvim `opts` to be set up before Lazy ([668691d](https://github.com/AstroNvim/AstroNvim/commit/668691d4bfa298ff38fdf2789412b9d6e0d2a6c3))
* **dev:** add dev utility to generate snapshot for stable releases ([5081890](https://github.com/AstroNvim/AstroNvim/commit/5081890702919d5046382c9af4d38e24e9db4c1a))
* **gitsigns:** use new preview hunk inline ([463be1a](https://github.com/AstroNvim/AstroNvim/commit/463be1a2630cbc2dcd63532d8add755107dbb1ca))
* **heirline:** add virtual environment component ([7761b63](https://github.com/AstroNvim/AstroNvim/commit/7761b6376394e465ab6fea30886f92d96b932869))
* **indent-blankline:** migrate to indent blankline v3 ([c2e15ee](https://github.com/AstroNvim/AstroNvim/commit/c2e15ee549871237072c50d2fcb358aa36ab67ae))
* **lazy:** use `$LAZY` environment directory for lazy dir if available ([1e93c9c](https://github.com/AstroNvim/AstroNvim/commit/1e93c9cd8145acbc4c9588feb60906510b98c44a))
* make resession the default session manager ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* **mappings:** make `&lt;Leader&gt;uc` and `<Leader>uC` toggle buffer/global cmp and move colorizer toggle to `<Leader>uz` ([cfa1962](https://github.com/AstroNvim/AstroNvim/commit/cfa1962709b75bca9ee521535a490eae99eefa78))
* move to modular plugin for configuring LSP options ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* move to modular plugin for configuring mappings and autocmds ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* **neo-tree:** add shift+enter to system open files ([7a20dc7](https://github.com/AstroNvim/AstroNvim/commit/7a20dc79a4305a30b33744a398881e702be6b5a3))
* **nvim-lspconfig:** add lazy loading on `nvim-lspconfig` commands ([495a17a](https://github.com/AstroNvim/AstroNvim/commit/495a17a4691dfdcfc11d3153e98c325ca0cfde1c))
* **nvim-treesitter:** disable all treesitter modules for large buffers ([a92f05d](https://github.com/AstroNvim/AstroNvim/commit/a92f05d3a101db4406f9ef72a41b6888a17347a8))
* **options:** enable confirm by default ([d8055ac](https://github.com/AstroNvim/AstroNvim/commit/d8055ac78087d401f6f1cbfabd080f8d2e638b33))
* **options:** use the histogram algorithm for diff calculations ([f1cfd02](https://github.com/AstroNvim/AstroNvim/commit/f1cfd02c5164906dfcd555315daf1cbbdb54bc46))
* **plugins:** add `todo-comments.nvim` to the base installation ([4d690ca](https://github.com/AstroNvim/AstroNvim/commit/4d690caa269b5a85aca839e154f39c82dd1a3134))
* **plugins:** move from `null-ls` to maintained fork `none-ls` ([b4687e3](https://github.com/AstroNvim/AstroNvim/commit/b4687e3f61804bba70899401f1ada567a061fa61))
* **plugins:** move to `vim-illuminate` to reference highlighting ([1749d5a](https://github.com/AstroNvim/AstroNvim/commit/1749d5ac3be624fb67c58c7b06f92245bafe7736))
* **plugins:** use `on_load` and remove some unnecessary `config` functions ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* remove `mini.indentscope` and just use `indent-blankline.nvim` ([0e23d5b](https://github.com/AstroNvim/AstroNvim/commit/0e23d5b90b8f281835c67ccfe402287c99d5f0ab))
* **resession:** add `&lt;Leader&gt;SD` for deleting a directory session ([e4c586c](https://github.com/AstroNvim/AstroNvim/commit/e4c586cba5ca73286b838c87e13deedf61ed2f39))
* **resession:** add `&lt;Leader&gt;SS` to save current directory session ([76018e9](https://github.com/AstroNvim/AstroNvim/commit/76018e90c5cd082869e98210466b9b7737e23e1b))
* **treesitter:** change loop text object from `l` to `o` ([2ed7eb3](https://github.com/AstroNvim/AstroNvim/commit/2ed7eb37385468a89eb00a167954cc727829cbf7))
* **treesitter:** enable `auto_install` if user has the `tree-sitter` CLI ([ca0db4e](https://github.com/AstroNvim/AstroNvim/commit/ca0db4e8db4d812dbd75a61215078db2853bd529))
* **ui:** use mini.indentscope for highlighting current context ([#2253](https://github.com/AstroNvim/AstroNvim/issues/2253)) ([c2e15ee](https://github.com/AstroNvim/AstroNvim/commit/c2e15ee549871237072c50d2fcb358aa36ab67ae))


### Bug Fixes

* `astrocore.utils` moved to `astrocore` ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* **alpha:** fix alpha on fresh installation ([16e2805](https://github.com/AstroNvim/AstroNvim/commit/16e2805175cfc6dd7b67279e07f1c5d382256d46))
* **alpha:** patch alpha button function until resolved upstream ([fb94050](https://github.com/AstroNvim/AstroNvim/commit/fb940502cfa5ce72d331317997717b97960c933d))
* **astrocore:** `syntax` toggle renamed to `buffer_syntax` ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* **astrocore:** prefer version control over project files ([41c63b9](https://github.com/AstroNvim/AstroNvim/commit/41c63b9cfe759811e19bdd80198d3bf1d1d346d6))
* **astrolsp:** `setup_handlers` renamed to `handlers` ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* **astrolsp:** configure signs separately from diagnostics ([10929d5](https://github.com/AstroNvim/AstroNvim/commit/10929d5a33b0e0b664e76103ed18a95635cb4b06))
* **astrolsp:** move `signs` to new dictionary format ([96bb76f](https://github.com/AstroNvim/AstroNvim/commit/96bb76ff351d39beeb6050dd115d8c5c830a5a93))
* **astrolsp:** update autoformat_enabled to autoformat ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* **astrolsp:** update lsp mapping conditions ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* **astrolsp:** which-key integration fixed ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* **astroui:** add missing gitsigns handlers ([9d593be](https://github.com/AstroNvim/AstroNvim/commit/9d593beed4196d315b06036c7bcd48f350a84461))
* **autocmds:** always fire "AstroFile" if in a vscode session ([5fb7345](https://github.com/AstroNvim/AstroNvim/commit/5fb7345e04a958d278b4ffe6395952ce4fb3dedb))
* **autocmds:** fix large buffer detection autocmd ([2bfce12](https://github.com/AstroNvim/AstroNvim/commit/2bfce126de622a43f2844626c39c213bc1f081ba))
* **autocmds:** silently fail if `augroup` has already been deleted ([f77ec3f](https://github.com/AstroNvim/AstroNvim/commit/f77ec3fa17f92ac76edcfbcf762a8c212e864997))
* **autocmds:** use quotes in git command on windows ([b5ef0d2](https://github.com/AstroNvim/AstroNvim/commit/b5ef0d25693a49c829b09429f131361fc584d69a))
* **cmp:** use `completeopt` from `vim.opt` rather than hard coding in `nvim-cmp` ([a2b3571](https://github.com/AstroNvim/AstroNvim/commit/a2b35718fbf42ebed371694fd86353c213e480a5))
* disable cmp for large buffers ([8b81aa5](https://github.com/AstroNvim/AstroNvim/commit/8b81aa5b633ca01f9c89eab04f07a50e7f87f9be))
* disable completion and indent guides for large buffers ([8b81aa5](https://github.com/AstroNvim/AstroNvim/commit/8b81aa5b633ca01f9c89eab04f07a50e7f87f9be))
* fix initial startup ordering ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* **heirline:** only apply sidebar padding for non full-width windows ([548a4c1](https://github.com/AstroNvim/AstroNvim/commit/548a4c1d288a1ccf5d226841c93b5d5868eab7c4))
* **heirline:** update to new `file_info` component defaults ([cf3974f](https://github.com/AstroNvim/AstroNvim/commit/cf3974fe229188b49f3386591803eeeac5a3e4a7))
* improve first installation path ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* **indent-blankline:** improve lazy loading ([d9592cd](https://github.com/AstroNvim/AstroNvim/commit/d9592cddc9451836ebb659ff1bc527c296cf904b))
* **init:** improve initialization sequence ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* **lspconfig:** resolve lsp attaching when new filetype buffer is not focused ([4f568eb](https://github.com/AstroNvim/AstroNvim/commit/4f568eb63387b3ea5810cca076a296eab0c46414))
* **mappings:** change `gT` to `gy` for type definition to avoid conflict with core mapping ([fe0e3d7](https://github.com/AstroNvim/AstroNvim/commit/fe0e3d708ffad29c06a3ce34e6986a0d5ac5ec52))
* **mappings:** change some UI/UX mappings to make more sense ([77ba866](https://github.com/AstroNvim/AstroNvim/commit/77ba866cb88ba26539d9aa115d8ca53f3205a2e0))
* **mappings:** fix incorrect mapping key casing ([a5cf6a0](https://github.com/AstroNvim/AstroNvim/commit/a5cf6a0a0603b65c8fbfcdcd0b568aee6247e760))
* **mappings:** move diagnostic mappings to always loaded ([e575551](https://github.com/AstroNvim/AstroNvim/commit/e575551e033961cfe2e4fac3d316cb2bcaba3fe5))
* **mason:** rename `MasonUpdate` and `MasonUpdateAll` to `AstroMasonUpdate` and `AstroMasonUpdateAll` ([9be64b9](https://github.com/AstroNvim/AstroNvim/commit/9be64b9d0f8fbd9d57209711a03460b8606abbd4))
* **neo-tree:** add missing fold icons from AstroUI ([bea5d52](https://github.com/AstroNvim/AstroNvim/commit/bea5d528e8ed72f68bfacf5ca1eea9399e315ea2))
* **neo-tree:** disable `foldcolumn` in neo-tree ([61e05d4](https://github.com/AstroNvim/AstroNvim/commit/61e05d4b38cdc0d6826ee01fb954e3740a2483bf))
* **neo-tree:** fix autocmds ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* **neo-tree:** improve `h` and `l` navigation edge cases for empty directories and nested files ([f7f3204](https://github.com/AstroNvim/AstroNvim/commit/f7f3204f2d88a26c096a18119f24ebf8f413210f))
* **neo-tree:** remove `o` binding, conflicts with new "Order by" keymaps ([ba92f46](https://github.com/AstroNvim/AstroNvim/commit/ba92f464b1e6738e136fed6650935e3379963899))
* **notify:** add icon disable support to `nvim-notify` ([fcb833c](https://github.com/AstroNvim/AstroNvim/commit/fcb833c92d3b8ec263f2413ad2af1f147a7480a1))
* **notify:** return after closing window ([d68514c](https://github.com/AstroNvim/AstroNvim/commit/d68514c718017350bf603029e3623904a120d7e7))
* **nvim-treesitter:** force install parsers bundled with neovim ([3bd128e](https://github.com/AstroNvim/AstroNvim/commit/3bd128e17a23a7f1df13964aa8a4e8c2d9582aef))
* **options:** add error reporting to malformed user options ([d9eb52d](https://github.com/AstroNvim/AstroNvim/commit/d9eb52d6b6d5dd9f1e5c3fb19028c9882b455d3e))
* **options:** don't concatenate boolean in error message ([90f3c3b](https://github.com/AstroNvim/AstroNvim/commit/90f3c3bb82505ee1a512d531d2cc7216e13fc476))
* **options:** initialize buffer list on startup ([8ea4190](https://github.com/AstroNvim/AstroNvim/commit/8ea4190a67ee04c60868920c2fae1b0317a846ad))
* **plugins:** don't use the shorthand notation for plugins ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* **plugins:** make sure `mason` is set up before mason plugins ([4afe41a](https://github.com/AstroNvim/AstroNvim/commit/4afe41a5b94f05802d6a81a7c6508eae3e71ec1a))
* **status:** allow for function in colors definition ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* **status:** use user provided `status.colors` table for overriding ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* **ui:** unify capital/lowercase meaning for global/buffer ([cf50450](https://github.com/AstroNvim/AstroNvim/commit/cf50450f87bd8897604511369dde729364ed42d1))
* **which-key:** remove separator icon when icons are disabled ([281606e](https://github.com/AstroNvim/AstroNvim/commit/281606e4c7696f3cc2d3eacf2cc5c342cdcbe2a4))
* **which-key:** use a more minimal which-key separator ([a5be725](https://github.com/AstroNvim/AstroNvim/commit/a5be725018ddca1c471f050b5117708efba1684f))


### Performance Improvements

* **autocmds:** improve performance of `AstroFile` detection ([09144c5](https://github.com/AstroNvim/AstroNvim/commit/09144c543ec785e19b3a26cdaf4030c78c02d751))
* **heirline:** simplify buffer matcher for disabling winbar ([91fd4d5](https://github.com/AstroNvim/AstroNvim/commit/91fd4d518971834b40209f6d254a0a176ce2d34c))
* **heirline:** use logic to calculate offset rather than hardcoded list ([72e1780](https://github.com/AstroNvim/AstroNvim/commit/72e17808ad7d6a9d18c9d5f80390222050d71e1d))
* improve initial installation and startup performance ([432897f](https://github.com/AstroNvim/AstroNvim/commit/432897fd8b1088dc44753ebda8cd53058d942e94))
* improve performance of triggered plugin loading ([bae0ad7](https://github.com/AstroNvim/AstroNvim/commit/bae0ad70021e47991cc4514dee99897d7654c3e6))
* **mappings:** remove unnecessary check ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* **options:** set options directly ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* **plugins:** lazy now ignores plugin fragments if a plugin is disabled ([811a0b1](https://github.com/AstroNvim/AstroNvim/commit/811a0b1ad4e45a900185b9990ad86d6f045d68ac))
* **toggleterm:** optimize toggleterm `on_create` function ([c6a9f03](https://github.com/AstroNvim/AstroNvim/commit/c6a9f03a11c511ce36180ff045c13252f6d6b492))


### Miscellaneous Chores

* remove deprecated plugin configs and unnecessary LSPLoaded icon ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))


### Code Refactoring

* drop support for Neovim v0.8 ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* modularize config with AstroCore, AstroUI, and AstroLSP ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* move `signs` and `diagnostics` configuration to AstroCore ([7898fcd](https://github.com/AstroNvim/AstroNvim/commit/7898fcd681ac19ecaadb3a1e85b120220fde986f))
* move astronvim specific options to AstroCore options ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* move astronvim.user_terminals to AstroCore ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* move buffer to `astrocore` and icons to `astroui` ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* move colorscheme to AstroUI and polish to AstroCore ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* move configuration defaults to `opts` tables ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* move Heirline `setup_colors` function to AstroUI ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* move plugins and lazy_snapshot into `astronvim` module ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* move resession extension to AstroCore ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* move status API to AstroUI ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* move to a model of just providing plugins ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* move UI/UX utils to `astrocore` ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* move updater, git, and mason utilities to `astrocore` ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))
* **options:** move vim options to AstroCore `opts` ([170774b](https://github.com/AstroNvim/AstroNvim/commit/170774b87545e6a8fdffbec9a37a56403b1c1f5c))
* remove `schemastore` from default plugins ([aeb24b0](https://github.com/AstroNvim/AstroNvim/commit/aeb24b0154c0a8907191acd0546bec904ad215c3))
* remove updater mappings and commands ([0e0d8bd](https://github.com/AstroNvim/AstroNvim/commit/0e0d8bdef5e0a147f1f1a0c434539016d39940b5))


================================================
FILE: LICENSE
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
software and other kinds of works.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received.  You must make sure that they, too, receive
or can get the source code.  And you must show them these terms so they
know their rights.

  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

  For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software.  For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.

  Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so.  This is fundamentally incompatible with the aim of
protecting users' freedom to change the software.  The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable.  Therefore, we
have designed this version of the GPL to prohibit the practice for those
products.  If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.

  Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary.  To prevent this, the GPL assures that
patents cannot be used to render the program non-free.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Use with the GNU Affero General Public License.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:

    <program>  Copyright (C) <year>  <name of author>
    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.

  The GNU General Public License does not permit incorporating your program
into proprietary programs.  If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.  But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.


================================================
FILE: README.md
================================================
<div align="center" id="madewithlua">
  <img
    src="https://astronvim.com/logo/astronvim.svg"
    width="110"
    ,
    height="100"
  />
</div>
<h1 align="center">AstroNvim</h1>

<h4 align="center">
  <a href="https://docs.astronvim.com/#-installation">Install</a>
  ·
  <a href="https://docs.astronvim.com/#-configuration">Configure</a>
  ·
  <a href="https://github.com/AstroNvim/astrocommunity">Community Plugins</a>
  ·
  <a href="https://astronvim.com">Website</a>
  ·
  <a href="https://discord.astronvim.com">Discord</a>
</h4>

<p align="center">
    <a href="https://github.com/AstroNvim/AstroNvim/pulse"><img src="https://img.shields.io/github/last-commit/AstroNvim/AstroNvim?style=for-the-badge&logo=github&color=7dc4e4&logoColor=D9E0EE&labelColor=302D41"></a>
    <a href="https://github.com/AstroNvim/AstroNvim/releases/latest"><img src="https://img.shields.io/github/v/release/AstroNvim/AstroNvim?style=for-the-badge&logo=gitbook&color=8bd5ca&logoColor=D9E0EE&labelColor=302D41"></a>
    <a href="https://github.com/AstroNvim/AstroNvim/stargazers"><img src="https://img.shields.io/github/stars/AstroNvim/AstroNvim?style=for-the-badge&logo=apachespark&color=eed49f&logoColor=D9E0EE&labelColor=302D41"></a>
     <img src="https://img.shields.io/endpoint?url=https://waka.mehalter.com/api/compat/shields/v1/mehalter/interval:any/label:AstroNvim&style=for-the-badge&label=wakatime&logo=wakatime&color=a6da95&logoColor=D9E0EE&labelColor=302D41">
    <br>
    <a href="https://www.twitter.com/AstroNvim"><img src="https://img.shields.io/badge/@AstroNvim-e05d44?style=for-the-badge&logo=twitter&color=fab387&logoColor=D9E0EE&labelColor=302D41"></a>
    <a href="https://hachyderm.io/@AstroNvim"><img src="https://img.shields.io/badge/@AstroNvim-e05d44?domain=https%3A%2F%2Fhachyderm.io&style=for-the-badge&logo=mastodon&color=eebebe&logoColor=D9E0EE&labelColor=302D41"></a>
    <a href="https://www.reddit.com/r/AstroNvim/"><img src="https://img.shields.io/badge/%2Fr%2FAstroNvim-e05d44?style=for-the-badge&logo=reddit&color=ee99a0&logoColor=D9E0EE&labelColor=302D41"></a>
    <br>
    <a href=https://discord.astronvim.com><img src="https://img.shields.io/discord/939594913560031363?style=for-the-badge&logo=discord&color=cba6f7&logoColor=D9E0EE&labelColor=302D41"></a>
</p>

<p align="center">
AstroNvim is an aesthetically pleasing and feature-rich neovim config that is extensible and easy to use with a great set of plugins
</p>

## 🌟 Preview

![Preview Image](https://astronvim.com/themes/overview.png)

## ✨ Features

- Common plugin specifications with [AstroCommunity](https://github.com/AstroNvim/astrocommunity)
- File explorer with [Neo-tree](https://github.com/nvim-neo-tree/neo-tree.nvim)
- Autocompletion with [Blink.cmp](https://github.com/Saghen/blink.cmp)
- Git integration with [Gitsigns](https://github.com/lewis6991/gitsigns.nvim)
- Statusline, Winbar, and Bufferline, Statuscolumn with [Heirline](https://github.com/rebelot/heirline.nvim)
- Terminal with [Toggleterm](https://github.com/akinsho/toggleterm.nvim)
- Fuzzy finding with [Snacks Picker](https://github.com/folke/snacks.nvim/blob/main/docs/picker.md)
- Syntax highlighting with [Treesitter](https://github.com/nvim-treesitter/nvim-treesitter)
- Formatting and Linting with [None-ls](https://github.com/nvimtools/none-ls.nvim)
- Language Server Protocol with [Native LSP](https://github.com/neovim/nvim-lspconfig)
- Debug Adapter Protocol with [nvim-dap](https://github.com/mfussenegger/nvim-dap)

## ⚡ Requirements

- [Nerd Fonts](https://www.nerdfonts.com/font-downloads) (_Optional with manual intervention:_ See [Documentation on customizing icons](https://docs.astronvim.com/Recipes/icons)) <sup>[[1]](#1)</sup>
- [Neovim 0.10+ (_Not_ including nightly)](https://github.com/neovim/neovim/releases/tag/stable)
- [Tree-sitter CLI](https://github.com/tree-sitter/tree-sitter/blob/master/cli/README.md) (_Note:_ This is only necessary if you want to use `auto_install` feature with Treesitter)
- A clipboard tool is necessary for the integration with the system clipboard (see [`:help clipboard-tool`](https://neovim.io/doc/user/provider.html#clipboard-tool) for supported solutions)
- Terminal with true color support (for the default theme, otherwise it is dependent on the theme you are using) <sup>[[2]](#2)</sup>
- Optional Requirements:
  - [ripgrep](https://github.com/BurntSushi/ripgrep) - live grep picker search (`<leader>fw`)
  - [lazygit](https://github.com/jesseduffield/lazygit) - git ui toggle terminal (`<leader>tl` or `<leader>gg`)
  - [go DiskUsage()](https://github.com/dundee/gdu) - disk usage toggle terminal (`<leader>tu`)
  - [bottom](https://github.com/ClementTsang/bottom) - process viewer toggle terminal (`<leader>tt`)
  - [Python](https://www.python.org/) - python repl toggle terminal (`<leader>tp`)
  - [Node](https://nodejs.org/en/) - node repl toggle terminal (`<leader>tn`)

> [!NOTE] > <sup id="1">[1]</sup> All downloadable Nerd Fonts contain icons which are used by AstroNvim. Install the Nerd Font of your choice to your system and in your terminal emulator settings, set its font face to that Nerd Font. If you are using AstroNvim on a remote system via SSH, you do not need to install the font on the remote system.

> [!NOTE] > <sup id="2">[2]</sup> Note when using default theme: For MacOS, the default terminal does not have true color support. You will need to use [iTerm2](https://iterm2.com/), [Kitty](https://sw.kovidgoyal.net/kitty/), [WezTerm](https://wezterm.org), or another [terminal emulator](https://github.com/termstandard/colors?tab=readme-ov-file#truecolor-support-in-output-devices) that has true color support.

## 🛠️ Installation

AstroNvim is provided as a plugin that can be installed with the [`lazy.nvim`](https://github.com/folke/lazy.nvim) plugin manager and then used to import all of the plugin configurations that AstroNvim provides. To quickly get started it is recommended to start with the official [AstroNvim Template](https://github.com/AstroNvim/template) which provides a great starting point for a new AstroNvim based configuration.

### Linux/Mac OS (Unix)

#### Make a backup of your current nvim and shared folder

```shell
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
mv ~/.local/state/nvim ~/.local/state/nvim.bak
mv ~/.cache/nvim ~/.cache/nvim.bak
```

#### Clone the template repository

```shell
git clone --depth 1 https://github.com/AstroNvim/template ~/.config/nvim
rm -rf ~/.config/nvim/.git
nvim
```

### Windows (Powershell)

#### Make a backup of your current nvim and nvim-data folder

```pwsh
Rename-Item -Path $env:LOCALAPPDATA\nvim -NewName $env:LOCALAPPDATA\nvim.bak
Rename-Item -Path $env:LOCALAPPDATA\nvim-data -NewName $env:LOCALAPPDATA\nvim-data.bak
```

#### Clone the repository

```pwsh
git clone --depth 1 https://github.com/AstroNvim/template $env:LOCALAPPDATA\nvim
Remove-Item $env:LOCALAPPDATA\nvim\.git -Recurse -Force
nvim
```

#### Minimal `~/.config/nvim/init.lua`

Some user's might not want to use an entire template or do any customization. Here is a minimal `~/.config/nvim/init.lua` file that simply set's up a base AstroNvim installation:

```lua
local lazypath = vim.fn.stdpath "data" .. "/lazy/lazy.nvim"
if not vim.uv.fs_stat(lazypath) then
  -- stylua: ignore
  vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath })
end
vim.opt.rtp:prepend(lazypath)

require("lazy").setup { "AstroNvim/AstroNvim", version = "^5", import = "astronvim.plugins" }
```

## 📦 Basic Setup

#### Install LSP

Enter `:LspInstall` followed by the name of the server you want to install<br>
Example: `:LspInstall pyright`

#### Install language parser

Enter `:TSInstall` followed by the name of the language you want to install<br>
Example: `:TSInstall python`

#### Install Debugger

Enter `:DapInstall` followed by the name of the debugger you want to install<br>
Example: `:DapInstall python`

#### Manage plugins

Run `:Lazy check` to check for plugin updates

Run `:Lazy update` to apply any pending plugin updates

Run `:Lazy clean` to remove any disabled or unused plugins

Run `:Lazy sync` to update and clean plugins

#### Update AstroNvim Packages

Run `:AstroUpdate` (`<leader>pa`) to update both Neovim plugins and Mason packages

## 🗒️ Links

- [AstroNvim Website](https://astronvim.com)
- [AstroNvim Documentation](https://docs.astronvim.com)
- [Setup](https://docs.astronvim.com/#-setup) is given for basic editor setup after installation
- [Default Mappings](https://docs.astronvim.com/mappings) more about the default key bindings
- [Customizing Plugins](https://docs.astronvim.com/configuration/customizing_plugins/) more about configuring and adding plugins

### 📹 Videos

There have been some great review videos released by members of the community! Here are a few:

- [Neovim With AstroNvim | Your New Advanced Development Editor](https://www.youtube.com/watch?v=GEHPiZ10gOk) (Version: 3, Content By: [@Cretezy](https://github.com/Cretezy))
- [Why I'm quitting VIM by Carlos Mafla](https://www.youtube.com/watch?v=71GDopdc9rw) (Version: 2, Content By: [@gigo6000](https://github.com/gigo6000))
- [Astro Vim - All in one Nvim config!! by John McBride](https://www.youtube.com/watch?v=JQLZ7NJRTEo) (Version: 1, Content By: [@jpmcb](https://github.com/jpmcb))

## 🚀 Contributing

If you plan to contribute, please check the [contribution guidelines](https://github.com/AstroNvim/.github/blob/main/CONTRIBUTING.md) first.

## ⭐ Credits

Sincere appreciation to the following repositories, plugin authors and the entire neovim community out there that made the development of AstroNvim possible.

- [Plugins](https://docs.astronvim.com/reference/default_plugins/)
- [NvChad](https://github.com/NvChad/NvChad)
- [LunarVim](https://github.com/LunarVim)
- [CosmicVim](https://github.com/CosmicNvim/CosmicNvim)

<div align="center" id="madewithlua">

[![Lua](https://img.shields.io/badge/Made%20with%20Lua-blue.svg?style=for-the-badge&logo=lua)](https://lua.org)

</div>


================================================
FILE: init.lua
================================================
vim.api.nvim_echo({
  { "This repository is not meant to be used as a direct Neovim configuration\n", "ErrorMsg" },
  { "Please check the AstroNvim documentation for installation details\n", "WarningMsg" },
  { "Press any key to exit...", "MoreMsg" },
}, true, {})

vim.fn.getchar()
vim.cmd.quit()


================================================
FILE: lua/astronvim/config.lua
================================================
---@class AstroNvimOpts
---@field mapleader string? the leader key to map before setting up Lazy
---@field maplocalleader string? the local leader key to map before setting up Lazy
---@field icons_enabled boolean? whether to enable icons, default to `true`
---@field pin_plugins boolean? whether to pin plugins or not, if `nil` then will pin if version is set.

---@type AstroNvimOpts
return {
  mapleader = " ",
  maplocalleader = ",",
  icons_enabled = true,
}


================================================
FILE: lua/astronvim/dev.lua
================================================
local M = {}

local astrocore = require "astrocore"

--- Helper function to generate AstroNvim snapshots (For internal use only)
---@param write? false write to AstroNvim if in `dev` mode, false to force no write
---@return table # The plugin specification table of the snapshot
function M.generate_snapshot(write)
  local astronvim = assert(astrocore.get_plugin "AstroNvim")
  if write ~= false then write = astronvim.dev end
  local prev_snapshot = require "astronvim.lazy_snapshot"
  for _, plugin in ipairs(prev_snapshot) do
    prev_snapshot[plugin[1]] = plugin
  end
  local plugins = assert(require("lazy").plugins())
  table.sort(plugins, function(l, r) return l[1] < r[1] end)
  local function git_commit(dir)
    local commit = assert(astrocore.cmd({ "git", "-C", dir, "rev-parse", "HEAD" }, false))
    if commit then return vim.trim(commit) end
  end
  local pinners = {
    ["*"] = function(plugin)
      return (plugin.version and ("version = %q"):format(plugin.version)) or ("commit = %q"):format(plugin.commit)
    end,
    ["AstroNvim/AstroNvim"] = false, -- Managed by user
    ["Bilal2453/luvit-meta"] = false, -- Not a real plugin, used for type stubs only
    ["rcarriga/nvim-notify"] = 'version = vim.fn.has "nvim-0.10" ~= 1 and "~3.14" or "^3"',
    -- example for pinning a plugin to a specific commit for older version of neovim
    -- ["neovim/nvim-lspconfig"] = function(plugin)
    --   return ('commit = vim.fn.has "nvim-0.10" ~= 1 and "76e7c8b029e6517f3689390d6599e9b446551704" or %q'):format(
    --     plugin.commit
    --   )
    -- end,
  } --[=[@as { [string]: false|string|fun(plugin: LazyPlugin): string?} ]=]
  local snapshot, module = {}, "return {\n"
  for _, plugin in ipairs(plugins) do
    local pinner = vim.F.if_nil(pinners[plugin[1]], pinners["*"])
    if pinner ~= false then
      plugin = { plugin[1], commit = git_commit(plugin.dir), version = plugin.version }
      local prev_version = vim.tbl_get(prev_snapshot, plugin[1], "version")
      if prev_version then plugin.version = prev_version end
      local pin = type(pinner) == "function" and pinner(plugin) or pinner
      if pin then
        module = module .. ("  { %q, "):format(plugin[1]) .. pin .. ", optional = true },\n"
        table.insert(snapshot, plugin)
      end
    end
  end
  module = module .. "}\n"
  if write then
    local snapshot_file = astronvim.dir .. "/lua/astronvim/lazy_snapshot.lua"
    astrocore.with_file(snapshot_file, "w+", function(file) file:write(module) end)
  end
  return snapshot
end

return M


================================================
FILE: lua/astronvim/health.lua
================================================
-- ### AstroNvim Health Checks
--
-- use with `:checkhealth astronvim`
--
-- copyright 2023
-- license GNU General Public License v3.0

local M = {}

local health = vim.health

function M.check()
  health.start "Checking requirements"

  health.info("AstroNvim Version: " .. require("astronvim").version())
  health.info("Neovim Version: v" .. vim.fn.matchstr(vim.fn.execute "version", "NVIM v\\zs[^\n]*"))

  if vim.version().prerelease then
    health.warn "Neovim nightly is not officially supported and may have breaking changes"
  elseif vim.fn.has "nvim-0.10.0" == 1 then
    health.ok "Using stable Neovim >= 0.10.0"
  else
    health.error "Neovim >= 0.10.0 is required"
  end

  local programs = {
    {
      cmd = { "git" },
      type = "error",
      msg = "Used for core functionality such as updater and plugin management",
    },
    {
      cmd = { "xdg-open", "rundll32", "explorer.exe", "open" },
      type = "warn",
      msg = "Used for `gx` mapping for opening files with system opener (Optional)",
    },
    {
      cmd = { "rg" },
      type = "warn",
      msg = "Used for Pickers `live_grep` picker, `<Leader>fw` and `<Leader>fW` by default (Optional)",
    },
    { cmd = { "lazygit" }, type = "warn", msg = "Used for mappings to pull up git TUI (Optional)" },
    { cmd = { "node" }, type = "warn", msg = "Used for mappings to pull up node REPL (Optional)" },
    {
      cmd = { "gdu", "gdu-go", "gdu_windows_amd64.exe" },
      type = "warn",
      msg = "Used for mappings to pull up disk usage analyzer (Optional)",
    },
    { cmd = { "btm" }, type = "warn", msg = "Used for mappings to pull up system monitor (Optional)" },
    { cmd = { "python", "python3" }, type = "warn", msg = "Used for mappings to pull up python REPL (Optional)" },
  }

  for _, program in ipairs(programs) do
    local name = table.concat(program.cmd, "/")
    local found = false
    for _, cmd in ipairs(program.cmd) do
      if vim.fn.executable(cmd) == 1 then
        name = cmd
        if not program.extra_check or program.extra_check(program) then found = true end
        break
      end
    end

    if found then
      health.ok(("`%s` is installed: %s"):format(name, program.msg))
    else
      health[program.type](("`%s` is not installed: %s"):format(name, program.msg))
    end
  end
end

return M


================================================
FILE: lua/astronvim/init.lua
================================================
local M = {}

M.did_init = false

M.config = require "astronvim.config"

function M.version()
  local astrocore = require "astrocore"
  local plugin = assert(astrocore.get_plugin "AstroNvim")
  local version_ok, version_str = pcall(astrocore.read_file, plugin.dir .. "/version.txt")
  if not version_ok then
    require("astrocore").notify("Unable to calculate version", vim.log.levels.ERROR)
    return
  end

  version_str = "v" .. vim.trim(version_str)

  if not plugin.version then
    version_str = version_str .. "-dev"
    if vim.fn.executable "git" == 1 then
      local git_description = astrocore.cmd({ "git", "-C", plugin.dir, "describe", "--tags" }, false)
      if git_description then
        local nightly_version = git_description and git_description:match ".*(-%d+-g%x+)\n*$"
        if nightly_version then version_str = version_str .. nightly_version end
      end
    end
  end

  return version_str
end

function M.init()
  if vim.fn.has "nvim-0.10" == 0 then
    vim.api.nvim_echo({
      { "AstroNvim requires Neovim >= 0.10.0\n", "ErrorMsg" },
      { "Press any key to exit", "MoreMsg" },
    }, true, {})
    vim.fn.getchar()
    vim.cmd.quit()
  end

  -- HACK: Hot patch for issue in Neovim v0.10.3 where vim.hl is not defined
  -- TODO: remove when dropping support for Neovim v0.10
  if vim.fn.has "nvim-0.10.3" == 1 and not vim.hl then vim.hl = vim.highlight end

  if M.did_init then return end
  M.did_init = true

  local notify = require "astronvim.notify"
  notify.setup()
  notify.defer_startup()

  -- force setup during initialization
  local plugin = require("lazy.core.config").spec.plugins.AstroNvim

  local opts = require("lazy.core.plugin").values(plugin, "opts")
  if opts.pin_plugins == nil then opts.pin_plugins = plugin.version ~= nil end

  ---@diagnostic disable-next-line: cast-local-type
  opts = vim.tbl_deep_extend("force", M.config, opts)
  ---@cast opts -nil
  M.config = opts

  if not vim.g.mapleader and M.config.mapleader then vim.g.mapleader = M.config.mapleader end
  if not vim.g.maplocalleader and M.config.maplocalleader then vim.g.maplocalleader = M.config.maplocalleader end
  if M.config.icons_enabled == false then vim.g.icons_enabled = false end
end

function M.setup() end

return M


================================================
FILE: lua/astronvim/lazy_snapshot.lua
================================================
return {
  { "AstroNvim/astrocore", version = "^2", optional = true },
  { "AstroNvim/astrolsp", version = "^3", optional = true },
  { "AstroNvim/astrotheme", version = "^4", optional = true },
  { "AstroNvim/astroui", version = "^3", optional = true },
  { "JoosepAlviste/nvim-ts-context-commentstring", commit = "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f", optional = true },
  { "L3MON4D3/LuaSnip", version = "^2", optional = true },
  { "MunifTanjim/nui.nvim", version = "^0.4", optional = true },
  { "NMAC427/guess-indent.nvim", commit = "84a4987ff36798c2fc1169cbaff67960aed9776f", optional = true },
  { "RRethy/vim-illuminate", commit = "0d1e93684da00ab7c057410fecfc24f434698898", optional = true },
  { "Saghen/blink.cmp", version = "^1", optional = true },
  { "Saghen/blink.compat", version = "^2", optional = true },
  { "WhoIsSethDaniel/mason-tool-installer.nvim", commit = "443f1ef8b5e6bf47045cb2217b6f748a223cf7dc", optional = true },
  { "akinsho/toggleterm.nvim", version = "^2", optional = true },
  { "brenoprata10/nvim-highlight-colors", commit = "e2cb22089cc2358b2b995c09578224f142de6039", optional = true },
  { "echasnovski/mini.icons", version = "^0.16", optional = true },
  { "folke/lazy.nvim", version = "^11", optional = true },
  { "folke/lazydev.nvim", version = "^1", optional = true },
  { "folke/neoconf.nvim", commit = "bbe36f4d60ed096282f564ddae4e781e420a8270", optional = true },
  { "folke/snacks.nvim", version = "^2", optional = true },
  { "folke/todo-comments.nvim", commit = "31e3c38ce9b29781e4422fc0322eb0a21f4e8668", optional = true },
  { "folke/which-key.nvim", version = "^3", optional = true },
  { "jay-babu/mason-null-ls.nvim", version = "^2", optional = true },
  { "jay-babu/mason-nvim-dap.nvim", version = "^2", optional = true },
  { "kevinhwang91/nvim-ufo", version = "^1", optional = true },
  { "kevinhwang91/promise-async", version = "^1", optional = true },
  { "lewis6991/gitsigns.nvim", version = "^1", optional = true },
  { "max397574/better-escape.nvim", version = "^2", optional = true },
  { "mfussenegger/nvim-dap", commit = "085386b9359ddf8d76ad89b98973b8e332dc5ba3", optional = true },
  { "mrjones2014/smart-splits.nvim", version = "^1", optional = true },
  { "neovim/nvim-lspconfig", version = "~2.1", optional = true },
  { "numToStr/Comment.nvim", commit = "e30b7f2008e52442154b66f7c519bfd2f1e32acb", optional = true },
  { "nvim-lua/plenary.nvim", commit = "b9fd5226c2f76c951fc8ed5923d85e4de065e509", optional = true },
  { "nvim-neo-tree/neo-tree.nvim", version = "^3", optional = true },
  { "nvim-neotest/nvim-nio", version = "^1", optional = true },
  { "nvim-treesitter/nvim-treesitter", commit = "42fc28ba918343ebfd5565147a42a26580579482", optional = true },
  { "nvim-treesitter/nvim-treesitter-textobjects", commit = "5ca4aaa6efdcc59be46b95a3e876300cfead05ef", optional = true },
  { "nvimtools/none-ls.nvim", commit = "3c206dfedf5f1385e9d29f85ffaec7874358592a", optional = true },
  { "rafamadriz/friendly-snippets", commit = "6cd7280adead7f586db6fccbd15d2cac7e2188b9", optional = true },
  { "rcarriga/cmp-dap", commit = "ea92773e84c0ad3288c3bc5e452ac91559669087", optional = true },
  { "rcarriga/nvim-dap-ui", commit = "cf91d5e2d07c72903d052f5207511bf7ecdb7122", optional = true },
  { "rebelot/heirline.nvim", version = "^1", optional = true },
  { "s1n7ax/nvim-window-picker", version = "^2", optional = true },
  { "stevearc/aerial.nvim", version = "^2.2", optional = true },
  { "stevearc/resession.nvim", version = "^1", optional = true },
  { "williamboman/mason-lspconfig.nvim", version = "^1", optional = true },
  { "williamboman/mason.nvim", version = "^2", optional = true },
  { "windwp/nvim-autopairs", commit = "c2a0dd0d931d0fb07665e1fedb1ea688da3b80b4", optional = true },
  { "windwp/nvim-ts-autotag", commit = "db15f2e0df2f5db916e511e3fffb682ef2f6354f", optional = true },
}


================================================
FILE: lua/astronvim/notify.lua
================================================
---AstroNvim Notify Utilities
---
---This module implements a pausable `vim.notify` in order to defer notifications on startup as well as allow for freely pausing and resuming of notifications
---
---Based on notification lazy loading in LazyVim
---https://github.com/LazyVim/LazyVim/blob/a50f92f7550fb6e9f21c0852e6cb190e6fcd50f5/lua/lazyvim/util/init.lua#L90-L125
---
---@class astronvim.notify
local M = {}

---@type table[]
local notifications = {}
local paused = false

--- Check if notifications are paused
---@return boolean # whether or not the notifications are paused
function M.is_paused() return paused end

--- Check now many notifications are pending
---@return table[] # the number of pending notifications
function M.pending() return notifications end

--- Pause notifications
function M.pause() paused = true end

--- Resume paused notifications
function M.resume()
  paused = false
  vim.schedule(function()
    vim.tbl_map(function(notif) vim.notify(vim.F.unpack_len(notif)) end, notifications)
    notifications = {}
  end)
end

--- A pausable `vim.notify` function
---@param message string|string[] Notification message
---@param level string|number Log level. See vim.log.levels
---@param opts notify.Options Notification options
function M.notify(message, level, opts)
  if M.is_paused() then
    local pos = opts and opts.replace
    if type(pos) == "table" and pos.id then pos = pos.id end
    if type(pos) ~= "number" or not notifications[pos] then pos = #notifications + 1 end
    if opts then opts.replace = nil end
    notifications[pos] = vim.F.pack_len(message, level, opts)
    return { id = pos }
  else
    return M._original(message, level, opts)
  end
end

--- Set `vim.notify` to extend it to be pause-able
---@param notify? function|notify the original notification function (defaults to `vim.notify`)
function M.setup(notify)
  if not notify then notify = vim.notify end
  assert(notify ~= M.notify, "vim.notify is already setup")
  M._original, vim.notify = notify, M.notify
end

--- Remove `astronvim.notify` utilities and restore original `vim.notify`
function M.restore()
  M.notify = M._original
  if M.is_paused() then M.resume() end
end

--- Pause notifications for a 500ms delay or until `vim.notify` changes
function M.defer_startup()
  M.pause()

  -- defer initially for 500ms or until `vim.notify` changes
  local timer, checker = vim.uv.new_timer(), vim.uv.new_check()

  local function replay()
    timer:stop()
    checker:stop()
    M.resume()
  end

  -- wait till vim.notify has been replaced
  checker:start(function()
    if vim.notify ~= M.notify then replay() end
  end)
  -- or if it took more than 500ms, then something went wrong
  timer:start(500, 0, replay)
end

return M


================================================
FILE: lua/astronvim/plugins/_astrocore.lua
================================================
local astronvim = require "astronvim"
astronvim.init()

return {
  { "folke/lazy.nvim", dir = vim.env.LAZY },
  {
    "AstroNvim/AstroNvim",
    build = function()
      if astronvim.config.pin_plugins and astronvim.config.update_notification ~= false then
        local astrocore_avail, astrocore = pcall(require, "astrocore")
        if astrocore_avail then
          vim.schedule(
            function()
              astrocore.notify(
                "Pinned versions of core plugins may have been updated\nRun `:Lazy update` again to get these updates.",
                vim.log.levels.WARN
              )
            end
          )
        end
      end
    end,
    priority = 10000,
    lazy = false,
  },
  { import = "astronvim.lazy_snapshot", cond = astronvim.config.pin_plugins },
  {
    "AstroNvim/astrocore",
    dependencies = { "AstroNvim/astroui" },
    lazy = false,
    priority = 10000,
    opts = function(_, opts)
      local get_icon = require("astroui").get_icon
      return require("astrocore").extend_tbl(opts, {
        features = {
          large_buf = {
            enabled = function(bufnr) return require("astrocore.buffer").is_valid(bufnr) end,
            notify = true,
            size = 1.5 * 1024 * 1024,
            lines = 100000,
            line_length = 1000,
          },
          autopairs = true, -- enable autopairs at start
          cmp = true, -- enable completion at start
          diagnostics = true, -- enable diagnostics by default
          highlighturl = true, -- highlight URLs by default
          notifications = true, -- disable notifications
        },
        diagnostics = {
          virtual_text = true,
          signs = {
            text = {
              [vim.diagnostic.severity.ERROR] = get_icon "DiagnosticError",
              [vim.diagnostic.severity.HINT] = get_icon "DiagnosticHint",
              [vim.diagnostic.severity.WARN] = get_icon "DiagnosticWarn",
              [vim.diagnostic.severity.INFO] = get_icon "DiagnosticInfo",
            },
          },
          update_in_insert = false,
          underline = true,
          severity_sort = true,
          float = {
            focused = false,
            style = "minimal",
            border = "rounded",
            source = true,
            header = "",
            prefix = "",
          },
          -- TODO: remove check when dropping support for neovim v0.10
          jump = vim.fn.has "nvim-0.11" == 1 and { float = true } or nil,
        },
        rooter = {
          enabled = true,
          detector = { "lsp", { ".git", "_darcs", ".hg", ".bzr", ".svn" }, { "lua", "MakeFile", "package.json" } },
          ignore = {
            servers = {},
            dirs = {},
          },
          autochdir = false,
          scope = "global",
          notify = false,
        },
        sessions = {
          autosave = { last = true, cwd = true },
          ignore = {
            dirs = {},
            filetypes = { "gitcommit", "gitrebase" },
            buftypes = {},
          },
        },
      } --[[@as AstroCoreOpts]])
    end,
  },
}


================================================
FILE: lua/astronvim/plugins/_astrocore_autocmds.lua
================================================
local mid_mapping = false
return {
  "AstroNvim/astrocore",
  ---@type AstroCoreOpts
  opts = {
    commands = {
      AstroVersion = {
        function()
          local version = require("astronvim").version()
          if version then require("astrocore").notify(("Version: *%s*"):format(version)) end
        end,
        desc = "Check AstroNvim Version",
      },
      AstroReload = { function() require("astrocore").reload() end, desc = "Reload AstroNvim (Experimental)" },
      AstroUpdate = { function() require("astrocore").update_packages() end, desc = "Update Lazy and Mason" },
      AstroRename = {
        function(opts) require("astrocore").rename_file { to = opts.fargs[1], force = opts.bang } end,
        desc = "Rename the current file, optionally new filename argument (:AstroRename! will overwrite existing files)",
        bang = true,
        nargs = "?",
        complete = "file",
      },
    },
    autocmds = {
      auto_quit = {
        {
          event = "BufEnter",
          desc = "Quit AstroNvim if more than one window is open and only sidebar windows are list",
          callback = function()
            local wins = vim.api.nvim_tabpage_list_wins(0)
            -- neo-tree handles if there is only a single window left
            if #wins == 1 and vim.bo[vim.api.nvim_win_get_buf(wins[1])].filetype ~= "aerial" then return end
            local sidebar_fts = { aerial = true, ["neo-tree"] = true }
            for _, winid in ipairs(wins) do
              if vim.api.nvim_win_is_valid(winid) then
                local bufnr = vim.api.nvim_win_get_buf(winid)
                local filetype = vim.bo[bufnr].filetype
                -- If any visible windows are not sidebars, early return
                if not sidebar_fts[filetype] then
                  return
                -- If the visible window is a sidebar
                else
                  -- only count filetypes once, so remove a found sidebar from the detection
                  sidebar_fts[filetype] = nil
                end
              end
            end
            if #vim.api.nvim_list_tabpages() > 1 then
              vim.cmd.tabclose()
            else
              vim.cmd.qall()
            end
          end,
        },
      },
      bufferline = {
        {
          event = { "BufAdd", "BufEnter", "TabNewEntered" },
          desc = "Update buffers when adding new buffers",
          callback = function(args)
            local buf_utils = require "astrocore.buffer"
            if not vim.t.bufs then vim.t.bufs = {} end
            if not buf_utils.is_valid(args.buf) then return end
            if args.buf ~= buf_utils.current_buf then
              buf_utils.last_buf = buf_utils.is_valid(buf_utils.current_buf) and buf_utils.current_buf or nil
              buf_utils.current_buf = args.buf
            end
            local bufs = vim.t.bufs
            if not vim.tbl_contains(bufs, args.buf) then
              table.insert(bufs, args.buf)
              vim.t.bufs = bufs
            end
            vim.t.bufs = vim.tbl_filter(buf_utils.is_valid, vim.t.bufs)
            require("astrocore").event "BufsUpdated"
          end,
        },
        {
          event = { "BufDelete", "TermClose" },
          desc = "Update buffers when deleting buffers",
          callback = function(args)
            local removed
            for _, tab in ipairs(vim.api.nvim_list_tabpages()) do
              local bufs = vim.t[tab].bufs
              if bufs then
                for i, bufnr in ipairs(bufs) do
                  if bufnr == args.buf then
                    removed = true
                    table.remove(bufs, i)
                    vim.t[tab].bufs = bufs
                    break
                  end
                end
              end
            end
            vim.t.bufs = vim.tbl_filter(require("astrocore.buffer").is_valid, vim.t.bufs)
            if removed then require("astrocore").event "BufsUpdated" end
            vim.cmd.redrawtabline()
          end,
        },
      },
      checktime = {
        {
          event = { "FocusGained", "TermClose", "TermLeave" },
          desc = "Check if buffers changed on editor focus",
          callback = function()
            if vim.bo.buftype ~= "nofile" then vim.cmd "checktime" end
          end,
        },
      },
      create_dir = {
        {
          event = "BufWritePre",
          desc = "Automatically create parent directories if they don't exist when saving a file",
          callback = function(args)
            local file = args.match
            if not require("astrocore.buffer").is_valid(args.buf) or file:match "^%w+:[\\/][\\/]" then return end
            vim.fn.mkdir(vim.fn.fnamemodify(vim.uv.fs_realpath(file) or file, ":p:h"), "p")
          end,
        },
      },
      editorconfig_filetype = {
        {
          event = "FileType",
          desc = "Ensure editorconfig settings take highest precedence",
          callback = function(args)
            if vim.F.if_nil(vim.b.editorconfig, vim.g.editorconfig) then
              local editorconfig_avail, editorconfig = pcall(require, "editorconfig")
              if editorconfig_avail then editorconfig.config(args.buf) end
            end
          end,
        },
      },
      file_user_events = {
        {
          event = { "BufReadPost", "BufNewFile", "BufWritePost" },
          desc = "AstroNvim user events for file detection (AstroFile and AstroGitFile)",
          callback = function(args)
            if vim.b[args.buf].astrofile_checked then return end
            vim.b[args.buf].astrofile_checked = true
            vim.schedule(function()
              if not vim.api.nvim_buf_is_valid(args.buf) then return end
              local astro = require "astrocore"
              local current_file = vim.api.nvim_buf_get_name(args.buf)
              if vim.g.vscode or not (current_file == "" or vim.bo[args.buf].buftype == "nofile") then
                local skip_augroups = {}
                for _, autocmd in ipairs(vim.api.nvim_get_autocmds { event = args.event }) do
                  if autocmd.group_name then skip_augroups[autocmd.group_name] = true end
                end
                skip_augroups["filetypedetect"] = false -- don't skip filetypedetect events
                astro.event "File"
                local folder = vim.fn.fnamemodify(current_file, ":p:h")
                if vim.fn.has "win32" == 1 then folder = ('"%s"'):format(folder) end
                if vim.fn.executable "git" == 1 then
                  if astro.cmd({ "git", "-C", folder, "rev-parse" }, false) or astro.file_worktree() then
                    astro.event "GitFile"
                    pcall(vim.api.nvim_del_augroup_by_name, "file_user_events")
                  end
                else
                  pcall(vim.api.nvim_del_augroup_by_name, "file_user_events")
                end
                vim.schedule(function()
                  if require("astrocore.buffer").is_valid(args.buf) then
                    for _, autocmd in ipairs(vim.api.nvim_get_autocmds { event = args.event }) do
                      if autocmd.group_name and not skip_augroups[autocmd.group_name] then
                        vim.api.nvim_exec_autocmds(
                          args.event,
                          { group = autocmd.group_name, buffer = args.buf, data = args.data }
                        )
                        skip_augroups[autocmd.group_name] = true
                      end
                    end
                  end
                end)
              end
            end)
          end,
        },
      },
      highlightyank = {
        {
          event = "TextYankPost",
          desc = "Highlight yanked text",
          pattern = "*",
          -- TODO: remove check when dropping support for Neovim v0.10
          callback = function() (vim.hl or vim.highlight).on_yank() end,
        },
      },
      large_buf_settings = {
        {
          event = "User",
          desc = "Disable certain functionality on very large files",
          pattern = "AstroLargeBuf",
          callback = function(args)
            vim.opt_local.list = false -- disable list chars
            vim.b[args.buf].autoformat = false -- disable autoformat on save
            vim.b[args.buf].completion = false -- disable completion
          end,
        },
      },
      q_close_windows = {
        {
          event = "BufWinEnter",
          desc = "Make q close help, man, quickfix, dap floats",
          callback = function(args)
            -- Add cache for buffers that have already had mappings created
            if not vim.g.q_close_windows then vim.g.q_close_windows = {} end
            -- If the buffer has been checked already, skip
            if vim.g.q_close_windows[args.buf] then return end
            -- Mark the buffer as checked
            vim.g.q_close_windows[args.buf] = true
            -- Check to see if `q` is already mapped to the buffer (avoids overwriting)
            for _, map in ipairs(vim.api.nvim_buf_get_keymap(args.buf, "n")) do
              if map.lhs == "q" then return end
            end
            -- If there is no q mapping already and the buftype is a non-real file, create one
            if vim.tbl_contains({ "help", "nofile", "quickfix" }, vim.bo[args.buf].buftype) then
              vim.keymap.set("n", "q", "<Cmd>close<CR>", {
                desc = "Close window",
                buffer = args.buf,
                silent = true,
                nowait = true,
              })
            end
          end,
        },
        {
          event = "BufDelete",
          desc = "Clean up q_close_windows cache",
          callback = function(args)
            if vim.g.q_close_windows then vim.g.q_close_windows[args.buf] = nil end
          end,
        },
      },
      restore_cursor = {
        {
          event = "BufReadPost",
          desc = "Restore last cursor position when opening a file",
          callback = function(args)
            local buf = args.buf
            if vim.b[buf].last_loc_restored or vim.tbl_contains({ "gitcommit" }, vim.bo[buf].filetype) then return end
            vim.b[buf].last_loc_restored = true
            local mark = vim.api.nvim_buf_get_mark(buf, '"')
            if mark[1] > 0 and mark[1] <= vim.api.nvim_buf_line_count(buf) then
              pcall(vim.api.nvim_win_set_cursor, 0, mark)
            end
          end,
        },
      },
      -- TODO: remove autocommand when dropping support for Neovim v0.10
      terminal_settings = vim.fn.has "nvim-0.11" ~= 1 and {
        {
          event = "TermOpen",
          desc = "Disable line number/fold column/sign column for terminals",
          callback = function()
            vim.opt_local.number = false
            vim.opt_local.relativenumber = false
            vim.opt_local.foldcolumn = "0"
            vim.opt_local.signcolumn = "no"
          end,
        },
      } or false,
      unlist_quickfix = {
        {
          event = "FileType",
          desc = "Unlist quickfix buffers",
          pattern = "qf",
          callback = function() vim.opt_local.buflisted = false end,
        },
      },
    },
    on_keys = {
      auto_hlsearch = {
        function(char)
          if mid_mapping then return end
          local new_hlsearch
          if vim.fn.mode() == "n" then -- enable highlight search when actively searching in normal mode
            new_hlsearch = vim.tbl_contains({ "<CR>", "n", "N", "*", "#", "?", "/" }, vim.fn.keytrans(char))
          elseif vim.fn.mode() == "r" then -- always enable highlight search in replace mode
            new_hlsearch = true
          -- enable highlight search when searching in command mode
          elseif vim.fn.mode() == "c" and vim.tbl_contains({ "<CR>" }, vim.fn.keytrans(char)) then
            local cmd = vim.fn.getcmdline()
            if (cmd:match "^s" or cmd:match "^%%s" or cmd:match "^'<,'>s") and vim.o.incsearch then
              new_hlsearch = true
            end
          else
            return
          end
          if vim.o.hlsearch ~= new_hlsearch then vim.opt.hlsearch = new_hlsearch end
          mid_mapping = true
          vim.schedule(function() mid_mapping = false end)
        end,
      },
    },
  },
}


================================================
FILE: lua/astronvim/plugins/_astrocore_mappings.lua
================================================
return {
  "AstroNvim/astrocore",
  ---@param opts AstroCoreOpts
  opts = function(_, opts)
    local astro = require "astrocore"
    local get_icon = require("astroui").get_icon
    -- initialize internally use mapping section titles
    opts._map_sections = {
      f = { desc = get_icon("Search", 1, true) .. "Find" },
      p = { desc = get_icon("Package", 1, true) .. "Packages" },
      l = { desc = get_icon("ActiveLSP", 1, true) .. "Language Tools" },
      u = { desc = get_icon("Window", 1, true) .. "UI/UX" },
      b = { desc = get_icon("Tab", 1, true) .. "Buffers" },
      bs = { desc = get_icon("Sort", 1, true) .. "Sort Buffers" },
      d = { desc = get_icon("Debugger", 1, true) .. "Debugger" },
      g = { desc = get_icon("Git", 1, true) .. "Git" },
      S = { desc = get_icon("Session", 1, true) .. "Session" },
      t = { desc = get_icon("Terminal", 1, true) .. "Terminal" },
      x = { desc = get_icon("List", 1, true) .. "Quickfix/Lists" },
    }

    -- initialize mappings table
    local maps = astro.empty_map_table()
    local sections = assert(opts._map_sections)

    -- Normal --
    -- Standard Operations
    maps.n["j"] = { "v:count == 0 ? 'gj' : 'j'", expr = true, silent = true, desc = "Move cursor down" }
    maps.x["j"] = maps.n["j"]
    maps.n["k"] = { "v:count == 0 ? 'gk' : 'k'", expr = true, silent = true, desc = "Move cursor up" }
    maps.x["k"] = maps.n["k"]
    maps.n["<Leader>w"] = { "<Cmd>w<CR>", desc = "Save" }
    maps.n["<Leader>q"] = { "<Cmd>confirm q<CR>", desc = "Quit Window" }
    maps.n["<Leader>Q"] = { "<Cmd>confirm qall<CR>", desc = "Exit AstroNvim" }
    maps.n["<Leader>n"] = { "<Cmd>enew<CR>", desc = "New File" }
    maps.n["<C-S>"] = { "<Cmd>silent! update! | redraw<CR>", desc = "Force write" }
    maps.x["<C-S>"] = maps.i["<C-s>"]
    maps.n["<C-Q>"] = { "<Cmd>q!<CR>", desc = "Force quit" }
    maps.n["|"] = { "<Cmd>vsplit<CR>", desc = "Vertical Split" }
    maps.n["\\"] = { "<Cmd>split<CR>", desc = "Horizontal Split" }
    maps.n["<Leader>/"] = { "gcc", remap = true, desc = "Toggle comment line" }
    maps.x["<Leader>/"] = { "gc", remap = true, desc = "Toggle comment" }

    maps.n["gco"] = { "o<esc>Vcx<esc><cmd>normal gcc<cr>fxa<bs>", desc = "Add Comment Below" }
    maps.n["gcO"] = { "O<esc>Vcx<esc><cmd>normal gcc<cr>fxa<bs>", desc = "Add Comment Above" }

    maps.n["<Leader>R"] = { function() require("astrocore").rename_file() end, desc = "Rename file" }

    -- Neovim Default LSP Mappings
    if vim.fn.has "nvim-0.11" ~= 1 then
      maps.n["gra"] = { function() vim.lsp.buf.code_action() end, desc = "vim.lsp.buf.code_action()" }
      maps.x["gra"] = { function() vim.lsp.buf.code_action() end, desc = "vim.lsp.buf.code_action()" }
      maps.n["grn"] = { function() vim.lsp.buf.rename() end, desc = "vim.lsp.buf.rename()" }
      maps.n["grr"] = { function() vim.lsp.buf.references() end, desc = "vim.lsp.buf.references()" }
      maps.n["gri"] = { function() vim.lsp.buf.implementation() end, desc = "vim.lsp.buf.implementation()" }
      maps.n["gO"] = { function() vim.lsp.buf.document_symbol() end, desc = "vim.lsp.buf.document_symbol()" }
      maps.i["<C-S>"] = { function() vim.lsp.buf.signature_help() end, desc = "vim.lsp.buf.signature_help()" }
      maps.s["<C-S>"] = { function() vim.lsp.buf.signature_help() end, desc = "vim.lsp.buf.signature_help()" }
    end

    -- Plugin Manager
    maps.n["<Leader>p"] = vim.tbl_get(sections, "p")
    maps.n["<Leader>pi"] = { function() require("lazy").install() end, desc = "Plugins Install" }
    maps.n["<Leader>ps"] = { function() require("lazy").home() end, desc = "Plugins Status" }
    maps.n["<Leader>pS"] = { function() require("lazy").sync() end, desc = "Plugins Sync" }
    maps.n["<Leader>pu"] = { function() require("lazy").check() end, desc = "Plugins Check Updates" }
    maps.n["<Leader>pU"] = { function() require("lazy").update() end, desc = "Plugins Update" }
    maps.n["<Leader>pa"] = { function() require("astrocore").update_packages() end, desc = "Update Lazy and Mason" }

    -- Manage Buffers
    maps.n["<Leader>c"] = { function() require("astrocore.buffer").close() end, desc = "Close buffer" }
    maps.n["<Leader>C"] = { function() require("astrocore.buffer").close(0, true) end, desc = "Force close buffer" }
    maps.n["]b"] = {
      function() require("astrocore.buffer").nav(vim.v.count1) end,
      desc = "Next buffer",
    }
    maps.n["[b"] = {
      function() require("astrocore.buffer").nav(-vim.v.count1) end,
      desc = "Previous buffer",
    }
    maps.n[">b"] = {
      function() require("astrocore.buffer").move(vim.v.count1) end,
      desc = "Move buffer tab right",
    }
    maps.n["<b"] = {
      function() require("astrocore.buffer").move(-vim.v.count1) end,
      desc = "Move buffer tab left",
    }

    maps.n["<Leader>b"] = vim.tbl_get(sections, "b")
    maps.n["<Leader>bc"] =
      { function() require("astrocore.buffer").close_all(true) end, desc = "Close all buffers except current" }
    maps.n["<Leader>bC"] = { function() require("astrocore.buffer").close_all() end, desc = "Close all buffers" }
    maps.n["<Leader>bl"] =
      { function() require("astrocore.buffer").close_left() end, desc = "Close all buffers to the left" }
    maps.n["<Leader>bp"] = { function() require("astrocore.buffer").prev() end, desc = "Previous buffer" }
    maps.n["<Leader>br"] =
      { function() require("astrocore.buffer").close_right() end, desc = "Close all buffers to the right" }
    maps.n["<Leader>bs"] = vim.tbl_get(sections, "bs")
    maps.n["<Leader>bse"] = { function() require("astrocore.buffer").sort "extension" end, desc = "By extension" }
    maps.n["<Leader>bsr"] = { function() require("astrocore.buffer").sort "unique_path" end, desc = "By relative path" }
    maps.n["<Leader>bsp"] = { function() require("astrocore.buffer").sort "full_path" end, desc = "By full path" }
    maps.n["<Leader>bsi"] = { function() require("astrocore.buffer").sort "bufnr" end, desc = "By buffer number" }
    maps.n["<Leader>bsm"] = { function() require("astrocore.buffer").sort "modified" end, desc = "By modification" }

    maps.n["<Leader>l"] = vim.tbl_get(sections, "l")
    maps.n["<Leader>ld"] = { function() vim.diagnostic.open_float() end, desc = "Hover diagnostics" }
    local function diagnostic_jump(dir, severity)
      local jump_opts = {}
      if type(severity) == "string" then jump_opts.severity = vim.diagnostic.severity[severity] end
      if vim.fn.has "nvim-0.11" == 1 then
        return function()
          jump_opts.count = dir and vim.v.count1 or -vim.v.count1
          vim.diagnostic.jump(jump_opts)
        end
      else -- TODO: remove when dropping support for Neovim v0.10
        local jump = vim.diagnostic["goto_" .. (dir and "next" or "prev")]
        return function() jump(jump_opts) end
      end
    end
    -- TODO: Remove mapping after dropping support for Neovim v0.10, it's automatic
    if vim.fn.has "nvim-0.11" == 0 then
      maps.n["[d"] = { diagnostic_jump(false), desc = "Previous diagnostic" }
      maps.n["]d"] = { diagnostic_jump(true), desc = "Next diagnostic" }
    end
    maps.n["[e"] = { diagnostic_jump(false, "ERROR"), desc = "Previous error" }
    maps.n["]e"] = { diagnostic_jump(true, "ERROR"), desc = "Next error" }
    maps.n["[w"] = { diagnostic_jump(false, "WARN"), desc = "Previous warning" }
    maps.n["]w"] = { diagnostic_jump(true, "WARN"), desc = "Next warning" }
    maps.n["gl"] = { function() vim.diagnostic.open_float() end, desc = "Hover diagnostics" }

    -- Navigate tabs
    maps.n["]t"] = { function() vim.cmd.tabnext() end, desc = "Next tab" }
    maps.n["[t"] = { function() vim.cmd.tabprevious() end, desc = "Previous tab" }

    -- Split navigation
    maps.n["<C-H>"] = { "<C-w>h", desc = "Move to left split" }
    maps.n["<C-J>"] = { "<C-w>j", desc = "Move to below split" }
    maps.n["<C-K>"] = { "<C-w>k", desc = "Move to above split" }
    maps.n["<C-L>"] = { "<C-w>l", desc = "Move to right split" }
    maps.n["<C-Up>"] = { "<Cmd>resize -2<CR>", desc = "Resize split up" }
    maps.n["<C-Down>"] = { "<Cmd>resize +2<CR>", desc = "Resize split down" }
    maps.n["<C-Left>"] = { "<Cmd>vertical resize -2<CR>", desc = "Resize split left" }
    maps.n["<C-Right>"] = { "<Cmd>vertical resize +2<CR>", desc = "Resize split right" }

    -- List management
    maps.n["<Leader>x"] = vim.tbl_get(sections, "x")
    maps.n["<Leader>xq"] = { "<Cmd>copen<CR>", desc = "Quickfix List" }
    maps.n["<Leader>xl"] = { "<Cmd>lopen<CR>", desc = "Location List" }
    if vim.fn.has "nvim-0.11" == 0 then
      maps.n["]q"] = { vim.cmd.cnext, desc = "Next quickfix" }
      maps.n["[q"] = { vim.cmd.cprev, desc = "Previous quickfix" }
      maps.n["]Q"] = { vim.cmd.clast, desc = "End quickfix" }
      maps.n["[Q"] = { vim.cmd.cfirst, desc = "Beginning quickfix" }

      maps.n["]l"] = { vim.cmd.lnext, desc = "Next loclist" }
      maps.n["[l"] = { vim.cmd.lprev, desc = "Previous loclist" }
      maps.n["]L"] = { vim.cmd.llast, desc = "End loclist" }
      maps.n["[L"] = { vim.cmd.lfirst, desc = "Beginning loclist" }
    end

    -- Stay in indent mode
    maps.v["<S-Tab>"] = { "<gv", desc = "Unindent line" }
    maps.v["<Tab>"] = { ">gv", desc = "Indent line" }

    -- Improved Terminal Navigation
    local function term_nav(dir)
      return function()
        if vim.api.nvim_win_get_config(0).zindex then
          vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<C-" .. dir .. ">", true, false, true), "n", false)
        else
          vim.cmd.wincmd(dir)
        end
      end
    end
    maps.t["<C-H>"] = { term_nav "h", desc = "Terminal left window navigation" }
    maps.t["<C-J>"] = { term_nav "j", desc = "Terminal down window navigation" }
    maps.t["<C-K>"] = { term_nav "k", desc = "Terminal up window navigation" }
    maps.t["<C-L>"] = { term_nav "l", desc = "Terminal right window navigation" }

    maps.n["<Leader>u"] = vim.tbl_get(sections, "u")
    -- Custom menu for modification of the user experience
    maps.n["<Leader>uA"] = { function() require("astrocore.toggles").autochdir() end, desc = "Toggle rooter autochdir" }
    maps.n["<Leader>ub"] = { function() require("astrocore.toggles").background() end, desc = "Toggle background" }
    maps.n["<Leader>ud"] = { function() require("astrocore.toggles").diagnostics() end, desc = "Toggle diagnostics" }
    maps.n["<Leader>ug"] = { function() require("astrocore.toggles").signcolumn() end, desc = "Toggle signcolumn" }
    maps.n["<Leader>u>"] = { function() require("astrocore.toggles").foldcolumn() end, desc = "Toggle foldcolumn" }
    maps.n["<Leader>ui"] = { function() require("astrocore.toggles").indent() end, desc = "Change indent setting" }
    maps.n["<Leader>ul"] = { function() require("astrocore.toggles").statusline() end, desc = "Toggle statusline" }
    maps.n["<Leader>un"] = { function() require("astrocore.toggles").number() end, desc = "Change line numbering" }
    maps.n["<Leader>uN"] =
      { function() require("astrocore.toggles").notifications() end, desc = "Toggle Notifications" }
    maps.n["<Leader>up"] = { function() require("astrocore.toggles").paste() end, desc = "Toggle paste mode" }
    maps.n["<Leader>us"] = { function() require("astrocore.toggles").spell() end, desc = "Toggle spellcheck" }
    maps.n["<Leader>uS"] = { function() require("astrocore.toggles").conceal() end, desc = "Toggle conceal" }
    maps.n["<Leader>ut"] = { function() require("astrocore.toggles").tabline() end, desc = "Toggle tabline" }
    maps.n["<Leader>uu"] = { function() require("astrocore.toggles").url_match() end, desc = "Toggle URL highlight" }
    maps.n["<Leader>uv"] = { function() require("astrocore.toggles").virtual_text() end, desc = "Toggle virtual text" }
    -- TODO: remove check when dropping support for Neovim 0.10
    if vim.fn.has "nvim-0.11" == 1 then
      maps.n["<Leader>uV"] =
        { function() require("astrocore.toggles").virtual_lines() end, desc = "Toggle virtual lines" }
    end
    maps.n["<Leader>uw"] = { function() require("astrocore.toggles").wrap() end, desc = "Toggle wrap" }
    maps.n["<Leader>uy"] =
      { function() require("astrocore.toggles").buffer_syntax() end, desc = "Toggle syntax highlight (buffer)" }

    opts.mappings = maps
  end,
}


================================================
FILE: lua/astronvim/plugins/_astrocore_options.lua
================================================
return {
  "AstroNvim/astrocore",
  ---@param opts AstroCoreOpts
  opts = function(_, opts)
    local opt = {}

    if vim.fn.has "nvim-0.11" == 1 then
      -- TODO: remove check when dropping support for Neovim v0.10
      opt.tabclose = "uselast" -- go to last used tab when closing the current tab
    end

    opt.backspace = vim.list_extend(vim.opt.backspace:get(), { "nostop" }) -- don't stop backspace at insert
    opt.breakindent = true -- wrap indent to match  line start
    opt.clipboard = "unnamedplus" -- connection to the system clipboard
    opt.cmdheight = 0 -- hide command line unless needed
    opt.completeopt = { "menu", "menuone", "noselect" } -- Options for insert mode completion
    opt.confirm = true -- raise a dialog asking if you wish to save the current file(s)
    opt.copyindent = true -- copy the previous indentation on autoindenting
    opt.cursorline = true -- highlight the text line of the cursor
    opt.diffopt = vim.list_extend(vim.opt.diffopt:get(), { "algorithm:histogram", "linematch:60" }) -- enable linematch diff algorithm
    opt.expandtab = true -- enable the use of space in tab
    opt.fillchars = { eob = " " } -- disable `~` on nonexistent lines
    opt.ignorecase = true -- case insensitive searching
    opt.infercase = true -- infer cases in keyword completion
    opt.jumpoptions = {} -- apply no jumpoptions on startup
    opt.laststatus = 3 -- global statusline
    opt.linebreak = true -- wrap lines at 'breakat'
    opt.mouse = "a" -- enable mouse support
    opt.number = true -- show numberline
    opt.preserveindent = true -- preserve indent structure as much as possible
    opt.pumheight = 10 -- height of the pop up menu
    opt.relativenumber = true -- show relative numberline
    opt.shiftround = true -- round indentation with `>`/`<` to shiftwidth
    opt.shiftwidth = 0 -- number of space inserted for indentation; when zero the 'tabstop' value will be used
    opt.shortmess = vim.tbl_deep_extend("force", vim.opt.shortmess:get(), { s = true, I = true, c = true, C = true }) -- disable search count wrap, startup messages, and completion messages
    opt.showmode = false -- disable showing modes in command line
    opt.showtabline = 2 -- always display tabline
    opt.signcolumn = "yes" -- always show the sign column
    opt.smartcase = true -- case sensitive searching
    opt.splitbelow = true -- splitting a new window below the current one
    opt.splitright = true -- splitting a new window at the right of the current one
    opt.tabstop = 2 -- number of space in a tab
    opt.termguicolors = true -- enable 24-bit RGB color in the TUI
    opt.timeoutlen = 500 -- shorten key timeout length a little bit for which-key
    opt.title = true -- set terminal title to the filename and path
    opt.undofile = true -- enable persistent undo
    opt.updatetime = 300 -- length of time to wait before triggering the plugin
    opt.virtualedit = "block" -- allow going past end of line in visual block mode
    opt.wrap = false -- disable wrapping of lines longer than the width of window
    opt.writebackup = false -- disable making a backup before overwriting a file

    local g = {}
    g.markdown_recommended_style = 0

    if not vim.t.bufs then vim.t.bufs = vim.api.nvim_list_bufs() end -- initialize buffer list
    opts.options = { opt = opt, g = g, t = { bufs = vim.t.bufs } }
  end,
}


================================================
FILE: lua/astronvim/plugins/_astrolsp.lua
================================================
return {
  "AstroNvim/astrolsp",
  lazy = true,
  ---@type AstroLSPOpts
  opts = {
    features = {
      codelens = true,
      inlay_hints = false,
      semantic_tokens = true,
    },
    capabilities = vim.lsp.protocol.make_client_capabilities(),
    ---@diagnostic disable-next-line: missing-fields
    config = {},
    defaults = {
      hover = {
        border = "rounded",
        silent = true,
      },
      signature_help = {
        border = "rounded",
        silent = true,
        focusable = false,
      },
    },
    file_operations = {
      timeout = 10000,
      operations = {
        didCreate = true,
        didDelete = true,
        didRename = true,
        willCreate = true,
        willDelete = true,
        willRename = true,
      },
    },
    flags = {},
    formatting = { format_on_save = { enabled = true }, disabled = {} },
    handlers = { function(server, server_opts) require("lspconfig")[server].setup(server_opts) end },
    servers = {},
    on_attach = nil,
  },
  specs = {
    {
      "AstroNvim/astrocore",
      ---@type AstroCoreOpts
      opts = {
        autocmds = {
          astrolsp_createfiles_events = {
            {
              event = "BufWritePre",
              desc = "trigger willCreateFiles before writing a new file",
              callback = function(args)
                local filename = require("astrocore.buffer").is_valid(args.buf)
                  and vim.fn.expand("#" .. args.buf .. ":p")
                if filename and not vim.uv.fs_stat(filename) then
                  vim.b[args.buf].new_file = filename
                  require("astrolsp.file_operations").willCreateFiles(filename)
                end
              end,
            },
            {
              event = "BufWritePost",
              desc = "trigger didCreateFiles after writing a new file",
              callback = function(args)
                local filename = vim.b[args.buf].new_file
                if filename then
                  vim.b[args.buf].new_file = false
                  require("astrolsp.file_operations").didCreateFiles(filename)
                end
              end,
            },
          },
        },
      },
    },
    {
      "nvim-neo-tree/neo-tree.nvim",
      optional = true,
      opts = function(_, opts)
        local events = require "neo-tree.events"
        if not opts.event_handlers then opts.event_handlers = {} end
        local move_args = function(args) return { from = args.source, to = args.destination } end
        local operations = {
          willCreateFiles = { events = { events.BEFORE_FILE_ADD } },
          didCreateFiles = { events = { events.FILE_ADDED } },
          willDeleteFiles = { events = { events.BEFORE_FILE_DELETE } },
          didDeleteFiles = { events = { events.FILE_DELETED } },
          willRenameFiles = { events = { events.BEFORE_FILE_MOVE, events.BEFORE_FILE_RENAME }, args = move_args },
          didRenameFiles = { events = { events.FILE_MOVED, events.FILE_RENAMED }, args = move_args },
        }
        for operation, config in pairs(operations) do
          for _, event in ipairs(config.events) do
            table.insert(opts.event_handlers, {
              event = event,
              id = "astrolsp_" .. operation,
              handler = function(args)
                require("astrolsp.file_operations")[operation](config.args and config.args(args) or args)
              end,
            })
          end
        end
      end,
    },
  },
}


================================================
FILE: lua/astronvim/plugins/_astrolsp_autocmds.lua
================================================
local function formatting_enabled(client)
  local formatting_disabled = vim.tbl_get(require("astrolsp").config, "formatting", "disabled")
  return require("astrolsp.utils").supports_method(client, "textDocument/formatting")
    and formatting_disabled ~= true
    and not vim.tbl_contains(formatting_disabled, client.name)
end

return {
  "AstroNvim/astrolsp",
  ---@type AstroLSPOpts
  opts = {
    commands = {
      Format = {
        cond = formatting_enabled,
        function() vim.lsp.buf.format(require("astrolsp").format_opts) end,
        desc = "Format file with LSP",
      },
    },
    autocmds = {
      lsp_codelens_refresh = {
        cond = "textDocument/codeLens",
        {
          event = { "TextChanged", "InsertLeave", "BufEnter" },
          desc = "Refresh codelens (buffer)",
          callback = function(args)
            if require("astrolsp").config.features.codelens then vim.lsp.codelens.refresh { bufnr = args.buf } end
          end,
        },
      },
      lsp_auto_signature_help = {
        cond = "textDocument/signatureHelp",
        {
          event = "TextChangedI",
          desc = "Automatically show signature help if enabled",
          callback = function(args)
            local signature_help = vim.b[args.buf].signature_help
            if signature_help == nil then signature_help = require("astrolsp").config.features.signature_help end
            if signature_help then
              local trigger = vim.b[args.buf].signature_help_triggerCharacters or {}
              local retrigger = vim.b[args.buf].signature_help_retriggerCharacters or {}
              local pos = vim.api.nvim_win_get_cursor(0)[2]
              local cur_char = vim.api.nvim_get_current_line():sub(pos, pos)
              if
                vim.g.signature_help_triggered and (cur_char:match "%s" or retrigger[cur_char])
                or trigger[cur_char]
              then
                vim.g.signature_help_triggered = true
                vim.lsp.buf.signature_help()
                return
              end
            end
            vim.g.signature_help_triggered = false
          end,
        },
        {
          event = "InsertLeave",
          desc = "Clear automatic signature help internals when leaving insert",
          callback = function() vim.g.signature_help_triggered = false end,
        },
      },
      lsp_auto_format = {
        cond = formatting_enabled,
        {
          event = "BufWritePre",
          desc = "autoformat on save",
          callback = function(_, _, bufnr)
            local astrolsp = require "astrolsp"
            local autoformat = assert(astrolsp.config.formatting.format_on_save)
            local buffer_autoformat = vim.b[bufnr].autoformat
            if buffer_autoformat == nil then buffer_autoformat = autoformat.enabled end
            if buffer_autoformat and ((not autoformat.filter) or autoformat.filter(bufnr)) then
              vim.lsp.buf.format(vim.tbl_deep_extend("force", astrolsp.format_opts, { bufnr = bufnr }))
            end
          end,
        },
      },
    },
  },
}


================================================
FILE: lua/astronvim/plugins/_astrolsp_mappings.lua
================================================
return {
  "AstroNvim/astrolsp",
  ---@param opts AstroLSPOpts
  opts = function(_, opts)
    ---@type AstroLSPMappings
    local maps = require("astrocore").empty_map_table()
    maps.n["<Leader>l"] = { desc = require("astroui").get_icon("ActiveLSP", 1, true) .. "Language Tools" }
    maps.v["<Leader>l"] = { desc = re
Download .txt
gitextract_p228trao/

├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yml
│   │   ├── config.yml
│   │   └── feature_request.yaml
│   └── workflows/
│       ├── ci.yml
│       └── stale.yml
├── .gitignore
├── .luarc.json
├── .neoconf.json
├── .stylua.toml
├── .styluaignore
├── .typos.toml
├── CHANGELOG.md
├── LICENSE
├── README.md
├── init.lua
├── lua/
│   └── astronvim/
│       ├── config.lua
│       ├── dev.lua
│       ├── health.lua
│       ├── init.lua
│       ├── lazy_snapshot.lua
│       ├── notify.lua
│       └── plugins/
│           ├── _astrocore.lua
│           ├── _astrocore_autocmds.lua
│           ├── _astrocore_mappings.lua
│           ├── _astrocore_options.lua
│           ├── _astrolsp.lua
│           ├── _astrolsp_autocmds.lua
│           ├── _astrolsp_mappings.lua
│           ├── _astrotheme.lua
│           ├── _astroui.lua
│           ├── _astroui_status.lua
│           ├── aerial.lua
│           ├── autopairs.lua
│           ├── better-escape.lua
│           ├── blink.lua
│           ├── comment.lua
│           ├── configs/
│           │   ├── cmp-dap.lua
│           │   ├── lspconfig.lua
│           │   ├── luasnip.lua
│           │   ├── mason-lspconfig.lua
│           │   ├── mason-null-ls.lua
│           │   ├── mason-nvim-dap.lua
│           │   ├── mason-tool-installer.lua
│           │   ├── nvim-autopairs.lua
│           │   ├── nvim-dap-ui.lua
│           │   ├── nvim-dap.lua
│           │   ├── nvim-treesitter.lua
│           │   ├── ts-autotag.lua
│           │   └── vim-illuminate.lua
│           ├── dap.lua
│           ├── gitsigns.lua
│           ├── guess-indent.lua
│           ├── heirline.lua
│           ├── highlight-colors.lua
│           ├── lazydev.lua
│           ├── lspconfig.lua
│           ├── luasnip.lua
│           ├── mason-tool-installer.lua
│           ├── mason.lua
│           ├── mini-icons.lua
│           ├── neo-tree.lua
│           ├── none-ls.lua
│           ├── nvim-ufo.lua
│           ├── resession.lua
│           ├── smart-splits.lua
│           ├── snacks.lua
│           ├── todo-comments.lua
│           ├── toggleterm.lua
│           ├── treesitter.lua
│           ├── ts-autotag.lua
│           ├── ts-context-commentstring.lua
│           ├── vim-illuminate.lua
│           ├── which-key.lua
│           └── window-picker.lua
├── neovim.yml
├── selene.toml
└── version.txt
Condensed preview — 78 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (315K chars).
[
  {
    "path": ".github/FUNDING.yml",
    "chars": 100,
    "preview": "github: AstroNvim\nko_fi: mehalter\nliberapay: mehalter\ncustom: https://www.buymeacoffee.com/mehalter\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "chars": 3733,
    "preview": "name: Bug report\ndescription: Create a report to help us improve\nlabels: [bug]\n\nbody:\n  - type: checkboxes\n    id: terms"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 320,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: Discord Chat\n    url: https://discord.astronvim.com\n    about: Ask "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yaml",
    "chars": 700,
    "preview": "name: Feature request\ndescription: Suggest an idea for this project\nlabels: [enhancement]\n\nbody:\n  - type: textarea\n    "
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 794,
    "preview": "name: AstroNvim\non:\n  push:\n    branches: [main]\n  pull_request:\n  pull_request_target:\n    types: [opened, edited, sync"
  },
  {
    "path": ".github/workflows/stale.yml",
    "chars": 192,
    "preview": "name: \"Close stale issues and PRs\"\non:\n  schedule:\n    - cron: \"30 1 * * *\" # run at 0130 UTC\n\njobs:\n  stale:\n    uses: "
  },
  {
    "path": ".gitignore",
    "chars": 406,
    "preview": "# Project gitignore\ncoc-settings.json\n\n# Global gitignore\n# ----------------\n\n# Mac OS X\n.AppleDouble\n.DS_Store\n.LSOverr"
  },
  {
    "path": ".luarc.json",
    "chars": 29,
    "preview": "{\n  \"format.enable\": false\n}\n"
  },
  {
    "path": ".neoconf.json",
    "chars": 260,
    "preview": "{\n  \"neodev\": {\n    \"library\": {\n      \"enabled\": true,\n      \"plugins\": true\n    }\n  },\n  \"neoconf\": {\n    \"plugins\": {"
  },
  {
    "path": ".stylua.toml",
    "chars": 177,
    "preview": "column_width = 120\nline_endings = \"Unix\"\nindent_type = \"Spaces\"\nindent_width = 2\nquote_style = \"AutoPreferDouble\"\ncall_p"
  },
  {
    "path": ".styluaignore",
    "chars": 32,
    "preview": "lua/astronvim/lazy_snapshot.lua\n"
  },
  {
    "path": ".typos.toml",
    "chars": 182,
    "preview": "# See https://github.com/crate-ci/typos/blob/master/docs/reference.md to configure typos\n[default.extend-words]\nenew = \""
  },
  {
    "path": "CHANGELOG.md",
    "chars": 91509,
    "preview": "# Changelog\n\n## [5.3.15](https://github.com/AstroNvim/AstroNvim/compare/v5.3.14...v5.3.15) (2026-01-26)\n\n\n### Bug Fixes\n"
  },
  {
    "path": "LICENSE",
    "chars": 35149,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "README.md",
    "chars": 10084,
    "preview": "<div align=\"center\" id=\"madewithlua\">\n  <img\n    src=\"https://astronvim.com/logo/astronvim.svg\"\n    width=\"110\"\n    ,\n  "
  },
  {
    "path": "init.lua",
    "chars": 298,
    "preview": "vim.api.nvim_echo({\n  { \"This repository is not meant to be used as a direct Neovim configuration\\n\", \"ErrorMsg\" },\n  { "
  },
  {
    "path": "lua/astronvim/config.lua",
    "chars": 463,
    "preview": "---@class AstroNvimOpts\n---@field mapleader string? the leader key to map before setting up Lazy\n---@field maplocalleade"
  },
  {
    "path": "lua/astronvim/dev.lua",
    "chars": 2540,
    "preview": "local M = {}\n\nlocal astrocore = require \"astrocore\"\n\n--- Helper function to generate AstroNvim snapshots (For internal u"
  },
  {
    "path": "lua/astronvim/health.lua",
    "chars": 2325,
    "preview": "-- ### AstroNvim Health Checks\n--\n-- use with `:checkhealth astronvim`\n--\n-- copyright 2023\n-- license GNU General Publi"
  },
  {
    "path": "lua/astronvim/init.lua",
    "chars": 2255,
    "preview": "local M = {}\n\nM.did_init = false\n\nM.config = require \"astronvim.config\"\n\nfunction M.version()\n  local astrocore = requir"
  },
  {
    "path": "lua/astronvim/lazy_snapshot.lua",
    "chars": 3879,
    "preview": "return {\n  { \"AstroNvim/astrocore\", version = \"^2\", optional = true },\n  { \"AstroNvim/astrolsp\", version = \"^3\", optiona"
  },
  {
    "path": "lua/astronvim/notify.lua",
    "chars": 2737,
    "preview": "---AstroNvim Notify Utilities\n---\n---This module implements a pausable `vim.notify` in order to defer notifications on s"
  },
  {
    "path": "lua/astronvim/plugins/_astrocore.lua",
    "chars": 3103,
    "preview": "local astronvim = require \"astronvim\"\nastronvim.init()\n\nreturn {\n  { \"folke/lazy.nvim\", dir = vim.env.LAZY },\n  {\n    \"A"
  },
  {
    "path": "lua/astronvim/plugins/_astrocore_autocmds.lua",
    "chars": 12312,
    "preview": "local mid_mapping = false\nreturn {\n  \"AstroNvim/astrocore\",\n  ---@type AstroCoreOpts\n  opts = {\n    commands = {\n      A"
  },
  {
    "path": "lua/astronvim/plugins/_astrocore_mappings.lua",
    "chars": 12304,
    "preview": "return {\n  \"AstroNvim/astrocore\",\n  ---@param opts AstroCoreOpts\n  opts = function(_, opts)\n    local astro = require \"a"
  },
  {
    "path": "lua/astronvim/plugins/_astrocore_options.lua",
    "chars": 3377,
    "preview": "return {\n  \"AstroNvim/astrocore\",\n  ---@param opts AstroCoreOpts\n  opts = function(_, opts)\n    local opt = {}\n\n    if v"
  },
  {
    "path": "lua/astronvim/plugins/_astrolsp.lua",
    "chars": 3499,
    "preview": "return {\n  \"AstroNvim/astrolsp\",\n  lazy = true,\n  ---@type AstroLSPOpts\n  opts = {\n    features = {\n      codelens = tru"
  },
  {
    "path": "lua/astronvim/plugins/_astrolsp_autocmds.lua",
    "chars": 3092,
    "preview": "local function formatting_enabled(client)\n  local formatting_disabled = vim.tbl_get(require(\"astrolsp\").config, \"formatt"
  },
  {
    "path": "lua/astronvim/plugins/_astrolsp_mappings.lua",
    "chars": 4729,
    "preview": "return {\n  \"AstroNvim/astrolsp\",\n  ---@param opts AstroLSPOpts\n  opts = function(_, opts)\n    ---@type AstroLSPMappings\n"
  },
  {
    "path": "lua/astronvim/plugins/_astrotheme.lua",
    "chars": 99,
    "preview": "return { \"AstroNvim/astrotheme\", lazy = true, opts = { plugins = { [\"dashboard-nvim\"] = true } } }\n"
  },
  {
    "path": "lua/astronvim/plugins/_astroui.lua",
    "chars": 4690,
    "preview": "local astroui_foldexpr = \"v:lua.require'astroui.folding'.foldexpr()\"\nreturn {\n  \"AstroNvim/astroui\",\n  lazy = true,\n  sp"
  },
  {
    "path": "lua/astronvim/plugins/_astroui_status.lua",
    "chars": 10465,
    "preview": "return {\n  \"AstroNvim/astroui\",\n  ---@param opts AstroUIOpts\n  opts = function(_, opts)\n    local sign_handlers = {}\n   "
  },
  {
    "path": "lua/astronvim/plugins/aerial.lua",
    "chars": 1815,
    "preview": "return {\n  \"stevearc/aerial.nvim\",\n  event = \"User AstroFile\",\n  specs = {\n    {\n      \"AstroNvim/astrocore\",\n      opts"
  },
  {
    "path": "lua/astronvim/plugins/autopairs.lua",
    "chars": 923,
    "preview": "return {\n  \"windwp/nvim-autopairs\",\n  event = \"User AstroFile\",\n  specs = {\n    {\n      \"AstroNvim/astrocore\",\n      opt"
  },
  {
    "path": "lua/astronvim/plugins/better-escape.lua",
    "chars": 204,
    "preview": "return {\n  \"max397574/better-escape.nvim\",\n  event = \"VeryLazy\",\n  opts = {\n    timeout = 300,\n    default_mappings = fa"
  },
  {
    "path": "lua/astronvim/plugins/blink.lua",
    "chars": 7870,
    "preview": "local function has_words_before()\n  local line, col = (unpack or table.unpack)(vim.api.nvim_win_get_cursor(0))\n  return "
  },
  {
    "path": "lua/astronvim/plugins/comment.lua",
    "chars": 2304,
    "preview": "-- TODO: Remove when dropping support for Neovim v0.10\nreturn {\n  \"numToStr/Comment.nvim\",\n  enabled = vim.fn.has \"nvim-"
  },
  {
    "path": "lua/astronvim/plugins/configs/cmp-dap.lua",
    "chars": 244,
    "preview": "return function(_, _)\n  local blink_avail, blink = pcall(require, \"blink.cmp\")\n  if blink_avail then\n    for _, dap_ft i"
  },
  {
    "path": "lua/astronvim/plugins/configs/lspconfig.lua",
    "chars": 591,
    "preview": "return function(_, _)\n  local astrocore = require \"astrocore\"\n  local function setup_servers()\n    local was_setup, astr"
  },
  {
    "path": "lua/astronvim/plugins/configs/luasnip.lua",
    "chars": 206,
    "preview": "return function(_, opts)\n  if opts then require(\"luasnip\").config.setup(opts) end\n  vim.tbl_map(function(type) require(\""
  },
  {
    "path": "lua/astronvim/plugins/configs/mason-lspconfig.lua",
    "chars": 303,
    "preview": "return function(_, opts)\n  local is_available = require(\"astrocore\").is_available\n  if is_available \"mason-tool-installe"
  },
  {
    "path": "lua/astronvim/plugins/configs/mason-null-ls.lua",
    "chars": 172,
    "preview": "return function(_, opts)\n  if require(\"astrocore\").is_available \"mason-tool-installer.nvim\" then opts.ensure_installed ="
  },
  {
    "path": "lua/astronvim/plugins/configs/mason-nvim-dap.lua",
    "chars": 173,
    "preview": "return function(_, opts)\n  if require(\"astrocore\").is_available \"mason-tool-installer.nvim\" then opts.ensure_installed ="
  },
  {
    "path": "lua/astronvim/plugins/configs/mason-tool-installer.lua",
    "chars": 203,
    "preview": "return function(_, opts)\n  local mason_tool_installer = require \"mason-tool-installer\"\n  mason_tool_installer.setup(opts"
  },
  {
    "path": "lua/astronvim/plugins/configs/nvim-autopairs.lua",
    "chars": 204,
    "preview": "return function(_, opts)\n  local npairs = require \"nvim-autopairs\"\n  npairs.setup(opts)\n\n  local astrocore = require \"as"
  },
  {
    "path": "lua/astronvim/plugins/configs/nvim-dap-ui.lua",
    "chars": 348,
    "preview": "return function(_, opts)\n  local dap, dapui = require \"dap\", require \"dapui\"\n  dap.listeners.after.event_initialized.dap"
  },
  {
    "path": "lua/astronvim/plugins/configs/nvim-dap.lua",
    "chars": 763,
    "preview": "return function()\n  local parser, cleaner\n  local vscode = require \"dap.ext.vscode\"\n  vscode.json_decode = function(str)"
  },
  {
    "path": "lua/astronvim/plugins/configs/nvim-treesitter.lua",
    "chars": 939,
    "preview": "return function(plugin, opts)\n  local ts = require(plugin.main)\n\n  -- if no compiler or git available, disable installat"
  },
  {
    "path": "lua/astronvim/plugins/configs/ts-autotag.lua",
    "chars": 156,
    "preview": "return function(_, opts)\n  require(\"nvim-ts-autotag\").setup(opts)\n  require(\"astrocore\").exec_buffer_autocmds(\"FileType\""
  },
  {
    "path": "lua/astronvim/plugins/configs/vim-illuminate.lua",
    "chars": 67,
    "preview": "return function(_, opts) require(\"illuminate\").configure(opts) end\n"
  },
  {
    "path": "lua/astronvim/plugins/dap.lua",
    "chars": 6062,
    "preview": "return {\n  \"mfussenegger/nvim-dap\",\n  lazy = true,\n  specs = {\n    {\n      \"AstroNvim/astrocore\",\n      opts = function("
  },
  {
    "path": "lua/astronvim/plugins/gitsigns.lua",
    "chars": 3120,
    "preview": "return {\n  \"lewis6991/gitsigns.nvim\",\n  enabled = vim.fn.executable \"git\" == 1,\n  event = \"User AstroGitFile\",\n  opts = "
  },
  {
    "path": "lua/astronvim/plugins/guess-indent.lua",
    "chars": 936,
    "preview": "return {\n  \"NMAC427/guess-indent.nvim\",\n  cmd = \"GuessIndent\",\n  specs = {\n    {\n      \"AstroNvim/astrocore\",\n      opts"
  },
  {
    "path": "lua/astronvim/plugins/heirline.lua",
    "chars": 5990,
    "preview": "return {\n  \"rebelot/heirline.nvim\",\n  event = \"BufEnter\",\n  specs = {\n    {\n      \"AstroNvim/astrocore\",\n      ---@param"
  },
  {
    "path": "lua/astronvim/plugins/highlight-colors.lua",
    "chars": 598,
    "preview": "return {\n  \"brenoprata10/nvim-highlight-colors\",\n  event = { \"User AstroFile\", \"InsertEnter\" },\n  cmd = \"HighlightColors"
  },
  {
    "path": "lua/astronvim/plugins/lazydev.lua",
    "chars": 775,
    "preview": "return {\n  \"folke/lazydev.nvim\",\n  ft = \"lua\",\n  cmd = \"LazyDev\",\n  opts_extend = { \"library\" },\n  opts = {\n    library "
  },
  {
    "path": "lua/astronvim/plugins/lspconfig.lua",
    "chars": 1325,
    "preview": "return {\n  \"neovim/nvim-lspconfig\",\n  specs = {\n    {\n      \"AstroNvim/astrolsp\",\n      opts = function(_, opts)\n       "
  },
  {
    "path": "lua/astronvim/plugins/luasnip.lua",
    "chars": 580,
    "preview": "return {\n  \"L3MON4D3/LuaSnip\",\n  lazy = true,\n  build = vim.fn.has \"win32\" == 0\n      and \"echo 'NOTE: jsregexp is optio"
  },
  {
    "path": "lua/astronvim/plugins/mason-tool-installer.lua",
    "chars": 831,
    "preview": "return {\n  \"WhoIsSethDaniel/mason-tool-installer.nvim\",\n  cmd = {\n    \"MasonToolsInstall\",\n    \"MasonToolsInstallSync\",\n"
  },
  {
    "path": "lua/astronvim/plugins/mason.lua",
    "chars": 947,
    "preview": "return {\n  \"williamboman/mason.nvim\",\n  cmd = {\n    \"Mason\",\n    \"MasonInstall\",\n    \"MasonUninstall\",\n    \"MasonUninsta"
  },
  {
    "path": "lua/astronvim/plugins/mini-icons.lua",
    "chars": 1273,
    "preview": "return {\n  \"echasnovski/mini.icons\",\n  lazy = true,\n  init = function()\n    package.preload[\"nvim-web-devicons\"] = funct"
  },
  {
    "path": "lua/astronvim/plugins/neo-tree.lua",
    "chars": 7507,
    "preview": "return {\n  \"nvim-neo-tree/neo-tree.nvim\",\n  specs = {\n    { \"nvim-lua/plenary.nvim\", lazy = true },\n    { \"MunifTanjim/n"
  },
  {
    "path": "lua/astronvim/plugins/none-ls.lua",
    "chars": 901,
    "preview": "return {\n  \"nvimtools/none-ls.nvim\",\n  main = \"null-ls\",\n  specs = {\n    { \"nvim-lua/plenary.nvim\", lazy = true },\n    {"
  },
  {
    "path": "lua/astronvim/plugins/nvim-ufo.lua",
    "chars": 2455,
    "preview": "-- TODO: Remove when dropping support for Neovim v0.10\nreturn {\n  \"kevinhwang91/nvim-ufo\",\n  event = { \"User AstroFile\","
  },
  {
    "path": "lua/astronvim/plugins/resession.lua",
    "chars": 2401,
    "preview": "return {\n  \"stevearc/resession.nvim\",\n  lazy = true,\n  specs = {\n    {\n      \"AstroNvim/astrocore\",\n      opts = functio"
  },
  {
    "path": "lua/astronvim/plugins/smart-splits.lua",
    "chars": 1431,
    "preview": "local term = vim.trim((vim.env.TERM_PROGRAM or \"\"):lower())\nlocal mux = term == \"tmux\" or term == \"wezterm\" or vim.env.K"
  },
  {
    "path": "lua/astronvim/plugins/snacks.lua",
    "chars": 11656,
    "preview": "return {\n  \"folke/snacks.nvim\",\n  lazy = false,\n  priority = 1000,\n  opts = function(_, opts)\n    local get_icon = requi"
  },
  {
    "path": "lua/astronvim/plugins/todo-comments.lua",
    "chars": 1834,
    "preview": "return {\n  \"folke/todo-comments.nvim\",\n  dependencies = { { \"folke/snacks.nvim\", optional = true } },\n  cmd = { \"TodoTro"
  },
  {
    "path": "lua/astronvim/plugins/toggleterm.lua",
    "chars": 5191,
    "preview": "return {\n  \"akinsho/toggleterm.nvim\",\n  cmd = { \"ToggleTerm\", \"TermExec\" },\n  specs = {\n    {\n      \"AstroNvim/astrocore"
  },
  {
    "path": "lua/astronvim/plugins/treesitter.lua",
    "chars": 5014,
    "preview": "return {\n  \"nvim-treesitter/nvim-treesitter\",\n  branch = \"master\",\n  main = \"nvim-treesitter.configs\",\n  dependencies = "
  },
  {
    "path": "lua/astronvim/plugins/ts-autotag.lua",
    "chars": 80,
    "preview": "return {\n  \"windwp/nvim-ts-autotag\",\n  event = \"User AstroFile\",\n  opts = {},\n}\n"
  },
  {
    "path": "lua/astronvim/plugins/ts-context-commentstring.lua",
    "chars": 972,
    "preview": "-- TODO: Remove when dropping support for Neovim v0.10\nreturn {\n  \"JoosepAlviste/nvim-ts-context-commentstring\",\n  enabl"
  },
  {
    "path": "lua/astronvim/plugins/vim-illuminate.lua",
    "chars": 1058,
    "preview": "return {\n  \"RRethy/vim-illuminate\",\n  event = \"User AstroFile\",\n  specs = {\n    {\n      \"AstroNvim/astrocore\",\n      opt"
  },
  {
    "path": "lua/astronvim/plugins/which-key.lua",
    "chars": 1048,
    "preview": "return {\n  \"folke/which-key.nvim\",\n  event = \"VeryLazy\",\n  opts_extend = { \"spec\", \"disable.ft\", \"disable.bt\" },\n  opts "
  },
  {
    "path": "lua/astronvim/plugins/window-picker.lua",
    "chars": 169,
    "preview": "return {\n  \"s1n7ax/nvim-window-picker\",\n  main = \"window-picker\",\n  lazy = true,\n  opts = { picker_config = { statusline"
  },
  {
    "path": "neovim.yml",
    "chars": 47,
    "preview": "---\nbase: lua51\n\nglobals:\n  vim:\n    any: true\n"
  },
  {
    "path": "selene.toml",
    "chars": 168,
    "preview": "std = \"neovim\"\n\n[rules]\nglobal_usage = \"allow\"\nif_same_then_else = \"allow\"\nincorrect_standard_library_use = \"allow\"\nmixe"
  },
  {
    "path": "version.txt",
    "chars": 7,
    "preview": "5.3.15\n"
  }
]

About this extraction

This page contains the full source code of the AstroNvim/AstroNvim GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 78 files (290.7 KB), approximately 90.1k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!