mirror of
https://github.com/LazyVim/LazyVim.git
synced 2026-07-25 14:01:06 +00:00
Merge branch 'main' into main
This commit is contained in:
commit
8cbe1006c8
32 changed files with 503 additions and 410 deletions
2
.github/.release-please-manifest.json
vendored
2
.github/.release-please-manifest.json
vendored
|
|
@ -1,3 +1,3 @@
|
||||||
{
|
{
|
||||||
".": "13.8.0"
|
".": "13.9.1"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
21
CHANGELOG.md
21
CHANGELOG.md
|
|
@ -1,5 +1,26 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [13.9.1](https://github.com/LazyVim/LazyVim/compare/v13.9.0...v13.9.1) (2024-12-12)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **blink:** set kind to int, not string, if overriding ([#4999](https://github.com/LazyVim/LazyVim/issues/4999)) ([cee60a6](https://github.com/LazyVim/LazyVim/commit/cee60a6d3040181ac9c5b709d79e80e180b34d48))
|
||||||
|
|
||||||
|
## [13.9.0](https://github.com/LazyVim/LazyVim/compare/v13.8.0...v13.9.0) (2024-12-11)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **luasnip:** add default user snippet location ([#4987](https://github.com/LazyVim/LazyVim/issues/4987)) ([8c79ab6](https://github.com/LazyVim/LazyVim/commit/8c79ab601af19b5370d560aa619567371ac70d86))
|
||||||
|
* **vscode:** add vscode-specific keymaps and sync undo/redo with vscode ([#4983](https://github.com/LazyVim/LazyVim/issues/4983)) ([9ad1c49](https://github.com/LazyVim/LazyVim/commit/9ad1c49b67a5c4330e366cde41ab11b156de03f2))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **autocmds:** remove snacks_win from close_with_q, since they have their own keymaps ([99c361f](https://github.com/LazyVim/LazyVim/commit/99c361f708924ddc63599115580bda537cc7f119))
|
||||||
|
* **blink:** config breaking changes. Fixes [#4990](https://github.com/LazyVim/LazyVim/issues/4990) ([439340b](https://github.com/LazyVim/LazyVim/commit/439340bd8a970aa23d513aea96c93e84b3af42dc))
|
||||||
|
|
||||||
## [13.8.0](https://github.com/LazyVim/LazyVim/compare/v13.7.0...v13.8.0) (2024-12-07)
|
## [13.8.0](https://github.com/LazyVim/LazyVim/compare/v13.7.0...v13.8.0) (2024-12-07)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
61
NEWS.md
61
NEWS.md
|
|
@ -1,5 +1,60 @@
|
||||||
# What's new?
|
# What's new?
|
||||||
|
|
||||||
|
## 14.x
|
||||||
|
|
||||||
|
Big new release with a lot of changes and improvements!
|
||||||
|
Two new plugins have been added, and a lot of plugins have been replaced.
|
||||||
|
With these changes, default **LazyVim** is now just `34` plugins.
|
||||||
|
|
||||||
|
### Added Plugins
|
||||||
|
|
||||||
|
- [fzf-lua](https://github.com/ibhagwan/fzf-lua) as a replacement for [telescope.nvim](https://github.com/nvim-telescope/telescope.nvim)
|
||||||
|
- to use **telescope.nvim** instead, enable the `ui.telescope` extra
|
||||||
|
- [blink.cmp](https://github.com/saghm/blink.cmp) as a replacement for [nvim-cmp](https://github.com/hrsh7th/nvim-cmp)
|
||||||
|
- to use **nvim-cmp** instead, enable the `nvim-cmp` extra
|
||||||
|
|
||||||
|
### Removed Plugins
|
||||||
|
|
||||||
|
- [dressing.nvim](https://github.com/stevearc/dressing.nvim) (replaced with [fzf-lua](https://github.com/ibhagwan/fzf-lua) and [snacks.input](https://github.com/folke/snacks.nvim))
|
||||||
|
- [telescope-fzf-native.nvim](https://github.com/nvim-telescope/telescope-fzf-native.nvim) (replaced with [fzf-lua](https://github.com/ibhagwan/fzf-lua))
|
||||||
|
- [telescope.nvim](https://github.com/nvim-telescope/telescope.nvim) (replaced with [fzf-lua](https://github.com/ibhagwan/fzf-lua))
|
||||||
|
- [indent-blankline.nvim](https://github.com/lukas-reineke/indent-blankline.nvim) (replaced with [snacks.indent](https://github.com/Folke/snacks.nvim))
|
||||||
|
- to use **indent-blankline.nvim** instead, enable the `indent-blankline` extra
|
||||||
|
- [nvim-cmp](https://github.com/hrsh7th/nvim-cmp) (replaced with [blink](https://github.com/Saghen/blink.cmp))
|
||||||
|
- [nvim-snippets](https://github.com/hrsh7th/vim-vsnip) (replaced with [blink](https://github.com/Saghen/blink.cmp))
|
||||||
|
- [cmp-buffer](https://github.com/hrsh7th/cmp-buffer) (replaced with [blink](https://github.com/Saghen/blink.cmp))
|
||||||
|
- [cmp-nvim-lsp](https://github.com/hrsh7th/cmp-nvim-lsp) (replaced with [blink](https://github.com/Saghen/blink.cmp))
|
||||||
|
- [cmp-path](https://github.com/hrsh7th/cmp-path) (replaced with [blink](https://github.com/Saghen/blink.cmp))
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
|
||||||
|
- added [`snacks.input`](https://github.com/folke/snacks.nvim/blob/main/docs/input.md)
|
||||||
|
- added [`snacks.scroll`](https://github.com/folke/snacks.nvim/blob/main/docs/scroll.md)
|
||||||
|
- added [`snacks.indent`](https://github.com/folke/snacks.nvim/blob/main/docs/indent.md)
|
||||||
|
- added [`snacks.scope`](https://github.com/folke/snacks.nvim/blob/main/docs/scope.md)
|
||||||
|
- added [`snacks.dim`](https://github.com/folke/snacks.nvim/blob/main/docs/dim.md)
|
||||||
|
- added [`snacks.zen`](https://github.com/folke/snacks.nvim/blob/main/docs/zen.md)
|
||||||
|
- changed default [`which-key`](https://github.com/folke/which-key.nvim) preset to `helix`
|
||||||
|
- drop `LazyVim.ui.fg` in favor of [`Snacks.util.color`](https://github.com/folke/snacks.nvim/blob/main/docs/util.md)
|
||||||
|
|
||||||
|
To disable **all animations**, add the following to your `options.lua`:
|
||||||
|
|
||||||
|
```lua
|
||||||
|
vim.g.snacks_animate = false
|
||||||
|
```
|
||||||
|
|
||||||
|
### Keymaps
|
||||||
|
|
||||||
|
- `<leader>z` to toggle [zen mode](https://github.com/folke/snacks.nvim/blob/main/docs/zen.md)
|
||||||
|
- `<leader>Z` to toggle [zoom mode](https://github.com/folke/snacks.nvim/blob/main/docs/zen.md)
|
||||||
|
- `<leader>uD` to toggle [dimming](https://github.com/folke/snacks.nvim/blob/main/docs/dim.md)
|
||||||
|
- `<leader>ua` to toggle [animations](https://github.com/folke/snacks.nvim/blob/main/docs/animate.md)
|
||||||
|
- `<leader>uS` to toggle [scroll](https://github.com/folke/snacks.nvim/blob/main/docs/scroll.md)
|
||||||
|
- `<leader>ug` to toggle [indent guides](https://github.com/folke/snacks.nvim/blob/main/docs/indent.md)
|
||||||
|
- [`snacks.profiler`](https://github.com/folke/snacks.nvim/blob/main/docs/profiler.md) keymaps under `<leader>dp`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 13.x
|
## 13.x
|
||||||
|
|
||||||
- **LazyVim** now uses `Snacks.dashboard` as the default dashboard.
|
- **LazyVim** now uses `Snacks.dashboard` as the default dashboard.
|
||||||
|
|
@ -21,6 +76,8 @@
|
||||||
- `Snacks.terminal` is similar to `lazyterm`, but has more features
|
- `Snacks.terminal` is similar to `lazyterm`, but has more features
|
||||||
and creates bottom splits by default (similar to the `edgy` integrating)
|
and creates bottom splits by default (similar to the `edgy` integrating)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 12.x
|
## 12.x
|
||||||
|
|
||||||
- **Markdown Extra**: [headlines.nvim](https://github.com/lukas-reineke/headlines.nvim) has been removed in favor of [markdown.nvim](https://github.com/MeanderingProgrammer/markdown.nvim)
|
- **Markdown Extra**: [headlines.nvim](https://github.com/lukas-reineke/headlines.nvim) has been removed in favor of [markdown.nvim](https://github.com/MeanderingProgrammer/markdown.nvim)
|
||||||
|
|
@ -48,6 +105,8 @@
|
||||||
- moved `neoconf.nvim` to extras. Project specific LSP settings
|
- moved `neoconf.nvim` to extras. Project specific LSP settings
|
||||||
can be done with a `.lazy.lua` file instead.
|
can be done with a `.lazy.lua` file instead.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 11.x
|
## 11.x
|
||||||
|
|
||||||
- **Keymaps:**
|
- **Keymaps:**
|
||||||
|
|
@ -107,6 +166,8 @@ Additionally, some core plugins have been moved to extras.
|
||||||
- `mini.indentscope` scopes are now also highlighted with `indent-blankline`
|
- `mini.indentscope` scopes are now also highlighted with `indent-blankline`
|
||||||
- `nvim-treesitter-context`
|
- `nvim-treesitter-context`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 10.x
|
## 10.x
|
||||||
|
|
||||||
- added new extra for [mini.diff](https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-diff.md)
|
- added new extra for [mini.diff](https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-diff.md)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
*LazyVim.txt* For Neovim Last change: 2024 December 11
|
*LazyVim.txt* For Neovim Last change: 2024 December 12
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
Table of Contents *LazyVim-table-of-contents*
|
Table of Contents *LazyVim-table-of-contents*
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util")
|
||||||
---@class LazyVimConfig: LazyVimOptions
|
---@class LazyVimConfig: LazyVimOptions
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
M.version = "13.8.0" -- x-release-please-version
|
M.version = "13.9.1" -- x-release-please-version
|
||||||
LazyVim.config = M
|
LazyVim.config = M
|
||||||
|
|
||||||
---@class LazyVimOptions
|
---@class LazyVimOptions
|
||||||
|
|
|
||||||
|
|
@ -131,6 +131,12 @@ Snacks.toggle.option("conceallevel", {off = 0, on = vim.o.conceallevel > 0 and v
|
||||||
Snacks.toggle.option("showtabline", {off = 0, on = vim.o.showtabline > 0 and vim.o.showtabline or 2, name = "Tabline"}):map("<leader>uA")
|
Snacks.toggle.option("showtabline", {off = 0, on = vim.o.showtabline > 0 and vim.o.showtabline or 2, name = "Tabline"}):map("<leader>uA")
|
||||||
Snacks.toggle.treesitter():map("<leader>uT")
|
Snacks.toggle.treesitter():map("<leader>uT")
|
||||||
Snacks.toggle.option("background", { off = "light", on = "dark" , name = "Dark Background"}):map("<leader>ub")
|
Snacks.toggle.option("background", { off = "light", on = "dark" , name = "Dark Background"}):map("<leader>ub")
|
||||||
|
Snacks.toggle.dim():map("<leader>uD")
|
||||||
|
Snacks.toggle.animate():map("<leader>ua")
|
||||||
|
Snacks.toggle.indent():map("<leader>ug")
|
||||||
|
Snacks.toggle.scroll():map("<leader>uS")
|
||||||
|
Snacks.toggle.profiler():map("<leader>dpp")
|
||||||
|
Snacks.toggle.profiler_highlights():map("<leader>dph")
|
||||||
if vim.lsp.inlay_hint then
|
if vim.lsp.inlay_hint then
|
||||||
Snacks.toggle.inlay_hints():map("<leader>uh")
|
Snacks.toggle.inlay_hints():map("<leader>uh")
|
||||||
end
|
end
|
||||||
|
|
@ -175,7 +181,8 @@ map("n", "<leader>w", "<c-w>", { desc = "Windows", remap = true })
|
||||||
map("n", "<leader>-", "<C-W>s", { desc = "Split Window Below", remap = true })
|
map("n", "<leader>-", "<C-W>s", { desc = "Split Window Below", remap = true })
|
||||||
map("n", "<leader>|", "<C-W>v", { desc = "Split Window Right", remap = true })
|
map("n", "<leader>|", "<C-W>v", { desc = "Split Window Right", remap = true })
|
||||||
map("n", "<leader>wd", "<C-W>c", { desc = "Delete Window", remap = true })
|
map("n", "<leader>wd", "<C-W>c", { desc = "Delete Window", remap = true })
|
||||||
LazyVim.ui.maximize():map("<leader>wm")
|
Snacks.toggle.zoom():map("<leader>wm"):map("<leader>uZ")
|
||||||
|
Snacks.toggle.zen():map("<leader>uz")
|
||||||
|
|
||||||
-- tabs
|
-- tabs
|
||||||
map("n", "<leader><tab>l", "<cmd>tablast<cr>", { desc = "Last Tab" })
|
map("n", "<leader><tab>l", "<cmd>tablast<cr>", { desc = "Last Tab" })
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,22 @@ vim.g.maplocalleader = "\\"
|
||||||
-- LazyVim auto format
|
-- LazyVim auto format
|
||||||
vim.g.autoformat = true
|
vim.g.autoformat = true
|
||||||
|
|
||||||
|
-- Snacks animations
|
||||||
|
-- Set to `false` to globally disable all snacks animations
|
||||||
|
vim.g.snacks_animate = true
|
||||||
|
|
||||||
-- LazyVim picker to use.
|
-- LazyVim picker to use.
|
||||||
-- Can be one of: telescope, fzf
|
-- Can be one of: telescope, fzf
|
||||||
-- Leave it to "auto" to automatically use the picker
|
-- Leave it to "auto" to automatically use the picker
|
||||||
-- enabled with `:LazyExtras`
|
-- enabled with `:LazyExtras`
|
||||||
vim.g.lazyvim_picker = "auto"
|
vim.g.lazyvim_picker = "auto"
|
||||||
|
|
||||||
|
-- LazyVim completion engine to use.
|
||||||
|
-- Can be one of: nvim-cmp, blink.cmp
|
||||||
|
-- Leave it to "auto" to automatically use the completion engine
|
||||||
|
-- enabled with `:LazyExtras`
|
||||||
|
vim.g.lazyvim_cmp = "auto"
|
||||||
|
|
||||||
-- if the completion engine supports the AI source,
|
-- if the completion engine supports the AI source,
|
||||||
-- use that instead of inline suggestions
|
-- use that instead of inline suggestions
|
||||||
vim.g.ai_cmp = true
|
vim.g.ai_cmp = true
|
||||||
|
|
|
||||||
|
|
@ -1,113 +1,14 @@
|
||||||
return {
|
return {
|
||||||
|
|
||||||
-- auto completion
|
|
||||||
{
|
{
|
||||||
"hrsh7th/nvim-cmp",
|
import = "lazyvim.plugins.extras.coding.nvim-cmp",
|
||||||
version = false, -- last release is way too old
|
enabled = function()
|
||||||
event = "InsertEnter",
|
return LazyVim.cmp_engine() == "nvim-cmp"
|
||||||
dependencies = {
|
|
||||||
"hrsh7th/cmp-nvim-lsp",
|
|
||||||
"hrsh7th/cmp-buffer",
|
|
||||||
"hrsh7th/cmp-path",
|
|
||||||
},
|
|
||||||
-- Not all LSP servers add brackets when completing a function.
|
|
||||||
-- To better deal with this, LazyVim adds a custom option to cmp,
|
|
||||||
-- that you can configure. For example:
|
|
||||||
--
|
|
||||||
-- ```lua
|
|
||||||
-- opts = {
|
|
||||||
-- auto_brackets = { "python" }
|
|
||||||
-- }
|
|
||||||
-- ```
|
|
||||||
opts = function()
|
|
||||||
vim.api.nvim_set_hl(0, "CmpGhostText", { link = "Comment", default = true })
|
|
||||||
local cmp = require("cmp")
|
|
||||||
local defaults = require("cmp.config.default")()
|
|
||||||
local auto_select = true
|
|
||||||
return {
|
|
||||||
auto_brackets = {}, -- configure any filetype to auto add brackets
|
|
||||||
completion = {
|
|
||||||
completeopt = "menu,menuone,noinsert" .. (auto_select and "" or ",noselect"),
|
|
||||||
},
|
|
||||||
preselect = auto_select and cmp.PreselectMode.Item or cmp.PreselectMode.None,
|
|
||||||
mapping = cmp.mapping.preset.insert({
|
|
||||||
["<C-b>"] = cmp.mapping.scroll_docs(-4),
|
|
||||||
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
|
||||||
["<C-n>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
|
|
||||||
["<C-p>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
|
|
||||||
["<C-Space>"] = cmp.mapping.complete(),
|
|
||||||
["<CR>"] = LazyVim.cmp.confirm({ select = auto_select }),
|
|
||||||
["<C-y>"] = LazyVim.cmp.confirm({ select = true }),
|
|
||||||
["<S-CR>"] = LazyVim.cmp.confirm({ behavior = cmp.ConfirmBehavior.Replace }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
|
|
||||||
["<C-CR>"] = function(fallback)
|
|
||||||
cmp.abort()
|
|
||||||
fallback()
|
|
||||||
end,
|
|
||||||
["<tab>"] = function(fallback)
|
|
||||||
return LazyVim.cmp.map({ "snippet_forward", "ai_accept" }, fallback)()
|
|
||||||
end,
|
|
||||||
}),
|
|
||||||
sources = cmp.config.sources({
|
|
||||||
{ name = "nvim_lsp" },
|
|
||||||
{ name = "path" },
|
|
||||||
}, {
|
|
||||||
{ name = "buffer" },
|
|
||||||
}),
|
|
||||||
formatting = {
|
|
||||||
format = function(entry, item)
|
|
||||||
local icons = LazyVim.config.icons.kinds
|
|
||||||
if icons[item.kind] then
|
|
||||||
item.kind = icons[item.kind] .. item.kind
|
|
||||||
end
|
|
||||||
|
|
||||||
local widths = {
|
|
||||||
abbr = vim.g.cmp_widths and vim.g.cmp_widths.abbr or 40,
|
|
||||||
menu = vim.g.cmp_widths and vim.g.cmp_widths.menu or 30,
|
|
||||||
}
|
|
||||||
|
|
||||||
for key, width in pairs(widths) do
|
|
||||||
if item[key] and vim.fn.strdisplaywidth(item[key]) > width then
|
|
||||||
item[key] = vim.fn.strcharpart(item[key], 0, width - 1) .. "…"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return item
|
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
experimental = {
|
|
||||||
-- only show ghost text when we show ai completions
|
|
||||||
ghost_text = vim.g.ai_cmp and {
|
|
||||||
hl_group = "CmpGhostText",
|
|
||||||
} or false,
|
|
||||||
},
|
|
||||||
sorting = defaults.sorting,
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
main = "lazyvim.util.cmp",
|
|
||||||
},
|
|
||||||
|
|
||||||
-- snippets
|
|
||||||
{
|
{
|
||||||
"nvim-cmp",
|
import = "lazyvim.plugins.extras.coding.blink",
|
||||||
optional = true,
|
enabled = function()
|
||||||
dependencies = {
|
return LazyVim.cmp_engine() == "blink.cmp"
|
||||||
{
|
|
||||||
"garymjr/nvim-snippets",
|
|
||||||
opts = {
|
|
||||||
friendly_snippets = true,
|
|
||||||
},
|
|
||||||
dependencies = { "rafamadriz/friendly-snippets" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
opts = function(_, opts)
|
|
||||||
opts.snippet = {
|
|
||||||
expand = function(item)
|
|
||||||
return LazyVim.cmp.expand(item.body)
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
if LazyVim.has("nvim-snippets") then
|
|
||||||
table.insert(opts.sources, { name = "snippets" })
|
|
||||||
end
|
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -160,7 +61,6 @@ return {
|
||||||
{ "%u[%l%d]+%f[^%l%d]", "%f[%S][%l%d]+%f[^%l%d]", "%f[%P][%l%d]+%f[^%l%d]", "^[%l%d]+%f[^%l%d]" },
|
{ "%u[%l%d]+%f[^%l%d]", "%f[%S][%l%d]+%f[^%l%d]", "%f[%P][%l%d]+%f[^%l%d]", "^[%l%d]+%f[^%l%d]" },
|
||||||
"^().*()$",
|
"^().*()$",
|
||||||
},
|
},
|
||||||
i = LazyVim.mini.ai_indent, -- indent
|
|
||||||
g = LazyVim.mini.ai_buffer, -- buffer
|
g = LazyVim.mini.ai_buffer, -- buffer
|
||||||
u = ai.gen_spec.function_call(), -- u for "Usage"
|
u = ai.gen_spec.function_call(), -- u for "Usage"
|
||||||
U = ai.gen_spec.function_call({ name_pattern = "[%w_]" }), -- without dot in function name
|
U = ai.gen_spec.function_call({ name_pattern = "[%w_]" }), -- without dot in function name
|
||||||
|
|
@ -190,12 +90,4 @@ return {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
-- Add lazydev source to cmp
|
|
||||||
{
|
|
||||||
"hrsh7th/nvim-cmp",
|
|
||||||
optional = true,
|
|
||||||
opts = function(_, opts)
|
|
||||||
table.insert(opts.sources, { name = "lazydev", group_index = 0 })
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,9 @@ return {
|
||||||
{ "garymjr/nvim-snippets", enabled = false },
|
{ "garymjr/nvim-snippets", enabled = false },
|
||||||
{ import = "lazyvim.plugins.extras.coding.luasnip" },
|
{ import = "lazyvim.plugins.extras.coding.luasnip" },
|
||||||
|
|
||||||
|
-- Use nvim-cmp instead of blink.cmp
|
||||||
|
{ import = "lazyvim.plugins.extras.coding.nvim-cmp" },
|
||||||
|
|
||||||
-- Use mini.comment instead of ts-comments
|
-- Use mini.comment instead of ts-comments
|
||||||
{ "folke/ts-comments.nvim", enabled = false },
|
{ "folke/ts-comments.nvim", enabled = false },
|
||||||
{ import = "lazyvim.plugins.extras.coding.mini-comment" },
|
{ import = "lazyvim.plugins.extras.coding.mini-comment" },
|
||||||
|
|
|
||||||
|
|
@ -176,12 +176,15 @@ return {
|
||||||
event = "VeryLazy",
|
event = "VeryLazy",
|
||||||
opts_extend = { "spec" },
|
opts_extend = { "spec" },
|
||||||
opts = {
|
opts = {
|
||||||
|
preset = "helix",
|
||||||
defaults = {},
|
defaults = {},
|
||||||
spec = {
|
spec = {
|
||||||
{
|
{
|
||||||
mode = { "n", "v" },
|
mode = { "n", "v" },
|
||||||
{ "<leader><tab>", group = "tabs" },
|
{ "<leader><tab>", group = "tabs" },
|
||||||
{ "<leader>c", group = "code" },
|
{ "<leader>c", group = "code" },
|
||||||
|
{ "<leader>d", group = "debug" },
|
||||||
|
{ "<leader>dp", group = "profiler" },
|
||||||
{ "<leader>f", group = "file/find" },
|
{ "<leader>f", group = "file/find" },
|
||||||
{ "<leader>g", group = "git" },
|
{ "<leader>g", group = "git" },
|
||||||
{ "<leader>gh", group = "hunks" },
|
{ "<leader>gh", group = "hunks" },
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ return {
|
||||||
|
|
||||||
-- codeium cmp source
|
-- codeium cmp source
|
||||||
{
|
{
|
||||||
"nvim-cmp",
|
"hrsh7th/nvim-cmp",
|
||||||
optional = true,
|
optional = true,
|
||||||
dependencies = { "codeium.nvim" },
|
dependencies = { "codeium.nvim" },
|
||||||
opts = function(_, opts)
|
opts = function(_, opts)
|
||||||
|
|
|
||||||
|
|
@ -58,14 +58,15 @@ return {
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
vim.g.ai_cmp
|
||||||
|
and {
|
||||||
-- copilot cmp source
|
-- copilot cmp source
|
||||||
{
|
{
|
||||||
"nvim-cmp",
|
"hrsh7th/nvim-cmp",
|
||||||
optional = true,
|
optional = true,
|
||||||
dependencies = { -- this will only be evaluated if nvim-cmp is enabled
|
dependencies = { -- this will only be evaluated if nvim-cmp is enabled
|
||||||
{
|
{
|
||||||
"zbirenbaum/copilot-cmp",
|
"zbirenbaum/copilot-cmp",
|
||||||
enabled = vim.g.ai_cmp, -- only enable if wanted
|
|
||||||
opts = {},
|
opts = {},
|
||||||
config = function(_, opts)
|
config = function(_, opts)
|
||||||
local copilot_cmp = require("copilot_cmp")
|
local copilot_cmp = require("copilot_cmp")
|
||||||
|
|
@ -78,7 +79,7 @@ return {
|
||||||
end,
|
end,
|
||||||
specs = {
|
specs = {
|
||||||
{
|
{
|
||||||
"nvim-cmp",
|
"hrsh7th/nvim-cmp",
|
||||||
optional = true,
|
optional = true,
|
||||||
---@param opts cmp.ConfigSchema
|
---@param opts cmp.ConfigSchema
|
||||||
opts = function(_, opts)
|
opts = function(_, opts)
|
||||||
|
|
@ -93,8 +94,7 @@ return {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
vim.g.ai_cmp and {
|
|
||||||
"saghen/blink.cmp",
|
"saghen/blink.cmp",
|
||||||
optional = true,
|
optional = true,
|
||||||
dependencies = { "giuxtaposition/blink-cmp-copilot" },
|
dependencies = { "giuxtaposition/blink-cmp-copilot" },
|
||||||
|
|
@ -110,5 +110,7 @@ return {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
} or nil,
|
},
|
||||||
|
}
|
||||||
|
or nil,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ return {
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"nvim-cmp",
|
"hrsh7th/nvim-cmp",
|
||||||
optional = true,
|
optional = true,
|
||||||
dependencies = { "tzachar/cmp-tabnine" },
|
dependencies = { "tzachar/cmp-tabnine" },
|
||||||
---@param opts cmp.ConfigSchema
|
---@param opts cmp.ConfigSchema
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,6 @@ if lazyvim_docs then
|
||||||
end
|
end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
{
|
|
||||||
"hrsh7th/nvim-cmp",
|
|
||||||
enabled = false,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"saghen/blink.cmp",
|
"saghen/blink.cmp",
|
||||||
version = not vim.g.lazyvim_blink_main and "*",
|
version = not vim.g.lazyvim_blink_main and "*",
|
||||||
|
|
@ -107,7 +103,12 @@ return {
|
||||||
for _, provider in pairs(opts.sources.providers or {}) do
|
for _, provider in pairs(opts.sources.providers or {}) do
|
||||||
---@cast provider blink.cmp.SourceProviderConfig|{kind?:string}
|
---@cast provider blink.cmp.SourceProviderConfig|{kind?:string}
|
||||||
if provider.kind then
|
if provider.kind then
|
||||||
require("blink.cmp.types").CompletionItemKind[provider.kind] = provider.kind
|
local CompletionItemKind = require("blink.cmp.types").CompletionItemKind
|
||||||
|
local kind_idx = #CompletionItemKind + 1
|
||||||
|
|
||||||
|
CompletionItemKind[kind_idx] = provider.kind
|
||||||
|
CompletionItemKind[provider.kind] = kind_idx
|
||||||
|
|
||||||
---@type fun(ctx: blink.cmp.Context, items: blink.cmp.CompletionItem[]): blink.cmp.CompletionItem[]
|
---@type fun(ctx: blink.cmp.Context, items: blink.cmp.CompletionItem[]): blink.cmp.CompletionItem[]
|
||||||
local transform_items = provider.transform_items
|
local transform_items = provider.transform_items
|
||||||
---@param ctx blink.cmp.Context
|
---@param ctx blink.cmp.Context
|
||||||
|
|
@ -115,7 +116,7 @@ return {
|
||||||
provider.transform_items = function(ctx, items)
|
provider.transform_items = function(ctx, items)
|
||||||
items = transform_items and transform_items(ctx, items) or items
|
items = transform_items and transform_items(ctx, items) or items
|
||||||
for _, item in ipairs(items) do
|
for _, item in ipairs(items) do
|
||||||
item.kind = provider.kind or item.kind
|
item.kind = kind_idx or item.kind
|
||||||
end
|
end
|
||||||
return items
|
return items
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ return {
|
||||||
|
|
||||||
-- nvim-cmp integration
|
-- nvim-cmp integration
|
||||||
{
|
{
|
||||||
"nvim-cmp",
|
"hrsh7th/nvim-cmp",
|
||||||
optional = true,
|
optional = true,
|
||||||
dependencies = { "saadparwaiz1/cmp_luasnip" },
|
dependencies = { "saadparwaiz1/cmp_luasnip" },
|
||||||
opts = function(_, opts)
|
opts = function(_, opts)
|
||||||
|
|
|
||||||
113
lua/lazyvim/plugins/extras/coding/nvim-cmp.lua
Normal file
113
lua/lazyvim/plugins/extras/coding/nvim-cmp.lua
Normal file
|
|
@ -0,0 +1,113 @@
|
||||||
|
return {
|
||||||
|
|
||||||
|
-- Setup nvim-cmp
|
||||||
|
{
|
||||||
|
"hrsh7th/nvim-cmp",
|
||||||
|
version = false, -- last release is way too old
|
||||||
|
event = "InsertEnter",
|
||||||
|
dependencies = {
|
||||||
|
"hrsh7th/cmp-nvim-lsp",
|
||||||
|
"hrsh7th/cmp-buffer",
|
||||||
|
"hrsh7th/cmp-path",
|
||||||
|
},
|
||||||
|
-- Not all LSP servers add brackets when completing a function.
|
||||||
|
-- To better deal with this, LazyVim adds a custom option to cmp,
|
||||||
|
-- that you can configure. For example:
|
||||||
|
--
|
||||||
|
-- ```lua
|
||||||
|
-- opts = {
|
||||||
|
-- auto_brackets = { "python" }
|
||||||
|
-- }
|
||||||
|
-- ```
|
||||||
|
opts = function()
|
||||||
|
vim.api.nvim_set_hl(0, "CmpGhostText", { link = "Comment", default = true })
|
||||||
|
local cmp = require("cmp")
|
||||||
|
local defaults = require("cmp.config.default")()
|
||||||
|
local auto_select = true
|
||||||
|
return {
|
||||||
|
auto_brackets = {}, -- configure any filetype to auto add brackets
|
||||||
|
completion = {
|
||||||
|
completeopt = "menu,menuone,noinsert" .. (auto_select and "" or ",noselect"),
|
||||||
|
},
|
||||||
|
preselect = auto_select and cmp.PreselectMode.Item or cmp.PreselectMode.None,
|
||||||
|
mapping = cmp.mapping.preset.insert({
|
||||||
|
["<C-b>"] = cmp.mapping.scroll_docs(-4),
|
||||||
|
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
||||||
|
["<C-n>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
|
||||||
|
["<C-p>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
|
||||||
|
["<C-Space>"] = cmp.mapping.complete(),
|
||||||
|
["<CR>"] = LazyVim.cmp.confirm({ select = auto_select }),
|
||||||
|
["<C-y>"] = LazyVim.cmp.confirm({ select = true }),
|
||||||
|
["<S-CR>"] = LazyVim.cmp.confirm({ behavior = cmp.ConfirmBehavior.Replace }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
|
||||||
|
["<C-CR>"] = function(fallback)
|
||||||
|
cmp.abort()
|
||||||
|
fallback()
|
||||||
|
end,
|
||||||
|
["<tab>"] = function(fallback)
|
||||||
|
return LazyVim.cmp.map({ "snippet_forward", "ai_accept" }, fallback)()
|
||||||
|
end,
|
||||||
|
}),
|
||||||
|
sources = cmp.config.sources({
|
||||||
|
{ name = "lazydev" },
|
||||||
|
{ name = "nvim_lsp" },
|
||||||
|
{ name = "path" },
|
||||||
|
}, {
|
||||||
|
{ name = "buffer" },
|
||||||
|
}),
|
||||||
|
formatting = {
|
||||||
|
format = function(entry, item)
|
||||||
|
local icons = LazyVim.config.icons.kinds
|
||||||
|
if icons[item.kind] then
|
||||||
|
item.kind = icons[item.kind] .. item.kind
|
||||||
|
end
|
||||||
|
|
||||||
|
local widths = {
|
||||||
|
abbr = vim.g.cmp_widths and vim.g.cmp_widths.abbr or 40,
|
||||||
|
menu = vim.g.cmp_widths and vim.g.cmp_widths.menu or 30,
|
||||||
|
}
|
||||||
|
|
||||||
|
for key, width in pairs(widths) do
|
||||||
|
if item[key] and vim.fn.strdisplaywidth(item[key]) > width then
|
||||||
|
item[key] = vim.fn.strcharpart(item[key], 0, width - 1) .. "…"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return item
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
experimental = {
|
||||||
|
-- only show ghost text when we show ai completions
|
||||||
|
ghost_text = vim.g.ai_cmp and {
|
||||||
|
hl_group = "CmpGhostText",
|
||||||
|
} or false,
|
||||||
|
},
|
||||||
|
sorting = defaults.sorting,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
main = "lazyvim.util.cmp",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- snippets
|
||||||
|
{
|
||||||
|
"hrsh7th/nvim-cmp",
|
||||||
|
dependencies = {
|
||||||
|
{
|
||||||
|
"garymjr/nvim-snippets",
|
||||||
|
opts = {
|
||||||
|
friendly_snippets = true,
|
||||||
|
},
|
||||||
|
dependencies = { "rafamadriz/friendly-snippets" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
opts = function(_, opts)
|
||||||
|
opts.snippet = {
|
||||||
|
expand = function(item)
|
||||||
|
return LazyVim.cmp.expand(item.body)
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
if LazyVim.has("nvim-snippets") then
|
||||||
|
table.insert(opts.sources, { name = "snippets" })
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -33,7 +33,6 @@ return {
|
||||||
|
|
||||||
-- stylua: ignore
|
-- stylua: ignore
|
||||||
keys = {
|
keys = {
|
||||||
{ "<leader>d", "", desc = "+debug", mode = {"n", "v"} },
|
|
||||||
{ "<leader>dB", function() require("dap").set_breakpoint(vim.fn.input('Breakpoint condition: ')) end, desc = "Breakpoint Condition" },
|
{ "<leader>dB", function() require("dap").set_breakpoint(vim.fn.input('Breakpoint condition: ')) end, desc = "Breakpoint Condition" },
|
||||||
{ "<leader>db", function() require("dap").toggle_breakpoint() end, desc = "Toggle Breakpoint" },
|
{ "<leader>db", function() require("dap").toggle_breakpoint() end, desc = "Toggle Breakpoint" },
|
||||||
{ "<leader>dc", function() require("dap").continue() end, desc = "Run/Continue" },
|
{ "<leader>dc", function() require("dap").continue() end, desc = "Run/Continue" },
|
||||||
|
|
@ -46,7 +45,7 @@ return {
|
||||||
{ "<leader>dl", function() require("dap").run_last() end, desc = "Run Last" },
|
{ "<leader>dl", function() require("dap").run_last() end, desc = "Run Last" },
|
||||||
{ "<leader>do", function() require("dap").step_out() end, desc = "Step Out" },
|
{ "<leader>do", function() require("dap").step_out() end, desc = "Step Out" },
|
||||||
{ "<leader>dO", function() require("dap").step_over() end, desc = "Step Over" },
|
{ "<leader>dO", function() require("dap").step_over() end, desc = "Step Over" },
|
||||||
{ "<leader>dp", function() require("dap").pause() end, desc = "Pause" },
|
{ "<leader>dP", function() require("dap").pause() end, desc = "Pause" },
|
||||||
{ "<leader>dr", function() require("dap").repl.toggle() end, desc = "Toggle REPL" },
|
{ "<leader>dr", function() require("dap").repl.toggle() end, desc = "Toggle REPL" },
|
||||||
{ "<leader>ds", function() require("dap").session() end, desc = "Session" },
|
{ "<leader>ds", function() require("dap").session() end, desc = "Session" },
|
||||||
{ "<leader>dt", function() require("dap").terminate() end, desc = "Terminate" },
|
{ "<leader>dt", function() require("dap").terminate() end, desc = "Terminate" },
|
||||||
|
|
|
||||||
|
|
@ -103,8 +103,11 @@ return {
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"nvim-cmp",
|
"hrsh7th/nvim-cmp",
|
||||||
|
optional = true,
|
||||||
opts = function(_, opts)
|
opts = function(_, opts)
|
||||||
|
opts.sorting = opts.sorting or {}
|
||||||
|
opts.sorting.comparators = opts.sorting.comparators or {}
|
||||||
table.insert(opts.sorting.comparators, 1, require("clangd_extensions.cmp_scores"))
|
table.insert(opts.sorting.comparators, 1, require("clangd_extensions.cmp_scores"))
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,8 @@ return {
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"nvim-cmp",
|
"hrsh7th/nvim-cmp",
|
||||||
|
optional = true,
|
||||||
dependencies = {
|
dependencies = {
|
||||||
{ "petertriho/cmp-git", opts = {} },
|
{ "petertriho/cmp-git", opts = {} },
|
||||||
},
|
},
|
||||||
|
|
|
||||||
51
lua/lazyvim/plugins/extras/ui/indent-blankline.lua
Normal file
51
lua/lazyvim/plugins/extras/ui/indent-blankline.lua
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
return {
|
||||||
|
-- disable snacks indent when indent-blankline is enabled
|
||||||
|
{
|
||||||
|
"snacks.nvim",
|
||||||
|
opts = {
|
||||||
|
indent = { enabled = false },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"lukas-reineke/indent-blankline.nvim",
|
||||||
|
event = "LazyFile",
|
||||||
|
opts = function()
|
||||||
|
Snacks.toggle({
|
||||||
|
name = "Indention Guides",
|
||||||
|
get = function()
|
||||||
|
return require("ibl.config").get_config(0).enabled
|
||||||
|
end,
|
||||||
|
set = function(state)
|
||||||
|
require("ibl").setup_buffer(0, { enabled = state })
|
||||||
|
end,
|
||||||
|
}):map("<leader>ug")
|
||||||
|
|
||||||
|
return {
|
||||||
|
indent = {
|
||||||
|
char = "│",
|
||||||
|
tab_char = "│",
|
||||||
|
},
|
||||||
|
scope = { show_start = false, show_end = false },
|
||||||
|
exclude = {
|
||||||
|
filetypes = {
|
||||||
|
"Trouble",
|
||||||
|
"alpha",
|
||||||
|
"dashboard",
|
||||||
|
"help",
|
||||||
|
"lazy",
|
||||||
|
"mason",
|
||||||
|
"neo-tree",
|
||||||
|
"notify",
|
||||||
|
"snacks_dashboard",
|
||||||
|
"snacks_notif",
|
||||||
|
"snacks_terminal",
|
||||||
|
"snacks_win",
|
||||||
|
"toggleterm",
|
||||||
|
"trouble",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
main = "ibl",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,16 @@
|
||||||
-- animations
|
-- animations
|
||||||
return {
|
return {
|
||||||
|
-- disable snacks scroll when animate is enabled
|
||||||
|
{
|
||||||
|
"snacks.nvim",
|
||||||
|
opts = {
|
||||||
|
scroll = { enabled = false },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- setup animate
|
||||||
|
{
|
||||||
"echasnovski/mini.animate",
|
"echasnovski/mini.animate",
|
||||||
recommended = true,
|
|
||||||
event = "VeryLazy",
|
event = "VeryLazy",
|
||||||
cond = vim.g.neovide == nil,
|
cond = vim.g.neovide == nil,
|
||||||
opts = function(_, opts)
|
opts = function(_, opts)
|
||||||
|
|
@ -51,4 +60,5 @@ return {
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,11 +43,24 @@ return {
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- disable inent-blankline scope when mini-indentscope is enabled
|
||||||
{
|
{
|
||||||
"lukas-reineke/indent-blankline.nvim",
|
"lukas-reineke/indent-blankline.nvim",
|
||||||
|
optional = true,
|
||||||
event = "LazyFile",
|
event = "LazyFile",
|
||||||
opts = {
|
opts = {
|
||||||
scope = { enabled = false },
|
scope = { enabled = false },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- disable snacks scroll when mini-indentscope is enabled
|
||||||
|
{
|
||||||
|
"snacks.nvim",
|
||||||
|
opts = {
|
||||||
|
indent = {
|
||||||
|
scope = { enabled = false },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,16 +10,6 @@ end
|
||||||
|
|
||||||
require("lazyvim.config").init()
|
require("lazyvim.config").init()
|
||||||
|
|
||||||
-- Terminal Mappings
|
|
||||||
local function term_nav(dir)
|
|
||||||
---@param self snacks.terminal
|
|
||||||
return function(self)
|
|
||||||
return self:is_floating() and "<c-" .. dir .. ">" or vim.schedule(function()
|
|
||||||
vim.cmd.wincmd(dir)
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
{ "folke/lazy.nvim", version = "*" },
|
{ "folke/lazy.nvim", version = "*" },
|
||||||
{ "LazyVim/LazyVim", priority = 10000, lazy = false, opts = {}, cond = true, version = "*" },
|
{ "LazyVim/LazyVim", priority = 10000, lazy = false, opts = {}, cond = true, version = "*" },
|
||||||
|
|
@ -27,34 +17,7 @@ return {
|
||||||
"folke/snacks.nvim",
|
"folke/snacks.nvim",
|
||||||
priority = 1000,
|
priority = 1000,
|
||||||
lazy = false,
|
lazy = false,
|
||||||
opts = function()
|
opts = {},
|
||||||
---@type snacks.Config
|
|
||||||
return {
|
|
||||||
bigfile = { enabled = true },
|
|
||||||
notifier = { enabled = true },
|
|
||||||
quickfile = { enabled = true },
|
|
||||||
statuscolumn = { enabled = false }, -- we set this in options.lua
|
|
||||||
terminal = {
|
|
||||||
win = {
|
|
||||||
keys = {
|
|
||||||
nav_h = { "<C-h>", term_nav("h"), desc = "Go to Left Window", expr = true, mode = "t" },
|
|
||||||
nav_j = { "<C-j>", term_nav("j"), desc = "Go to Lower Window", expr = true, mode = "t" },
|
|
||||||
nav_k = { "<C-k>", term_nav("k"), desc = "Go to Upper Window", expr = true, mode = "t" },
|
|
||||||
nav_l = { "<C-l>", term_nav("l"), desc = "Go to Right Window", expr = true, mode = "t" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
toggle = { map = LazyVim.safe_keymap_set },
|
|
||||||
words = { enabled = true },
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
-- stylua: ignore
|
|
||||||
keys = {
|
|
||||||
{ "<leader>.", function() Snacks.scratch() end, desc = "Toggle Scratch Buffer" },
|
|
||||||
{ "<leader>S", function() Snacks.scratch.select() end, desc = "Select Scratch Buffer" },
|
|
||||||
{ "<leader>n", function() Snacks.notifier.show_history() end, desc = "Notification History" },
|
|
||||||
{ "<leader>un", function() Snacks.notifier.hide() end, desc = "Dismiss All Notifications" },
|
|
||||||
},
|
|
||||||
config = function(_, opts)
|
config = function(_, opts)
|
||||||
local notify = vim.notify
|
local notify = vim.notify
|
||||||
require("snacks").setup(opts)
|
require("snacks").setup(opts)
|
||||||
|
|
|
||||||
|
|
@ -105,29 +105,30 @@ return {
|
||||||
{ LazyVim.lualine.pretty_path() },
|
{ LazyVim.lualine.pretty_path() },
|
||||||
},
|
},
|
||||||
lualine_x = {
|
lualine_x = {
|
||||||
|
Snacks.profiler.status(),
|
||||||
-- stylua: ignore
|
-- stylua: ignore
|
||||||
{
|
{
|
||||||
function() return require("noice").api.status.command.get() end,
|
function() return require("noice").api.status.command.get() end,
|
||||||
cond = function() return package.loaded["noice"] and require("noice").api.status.command.has() end,
|
cond = function() return package.loaded["noice"] and require("noice").api.status.command.has() end,
|
||||||
color = function() return LazyVim.ui.fg("Statement") end,
|
color = function() return { fg = Snacks.util.color("Statement") } end,
|
||||||
},
|
},
|
||||||
-- stylua: ignore
|
-- stylua: ignore
|
||||||
{
|
{
|
||||||
function() return require("noice").api.status.mode.get() end,
|
function() return require("noice").api.status.mode.get() end,
|
||||||
cond = function() return package.loaded["noice"] and require("noice").api.status.mode.has() end,
|
cond = function() return package.loaded["noice"] and require("noice").api.status.mode.has() end,
|
||||||
color = function() return LazyVim.ui.fg("Constant") end,
|
color = function() return { fg = Snacks.util.color("Constant") } end,
|
||||||
},
|
},
|
||||||
-- stylua: ignore
|
-- stylua: ignore
|
||||||
{
|
{
|
||||||
function() return " " .. require("dap").status() end,
|
function() return " " .. require("dap").status() end,
|
||||||
cond = function() return package.loaded["dap"] and require("dap").status() ~= "" end,
|
cond = function() return package.loaded["dap"] and require("dap").status() ~= "" end,
|
||||||
color = function() return LazyVim.ui.fg("Debug") end,
|
color = function() return { fg = Snacks.util.color("Debug") } end,
|
||||||
},
|
},
|
||||||
-- stylua: ignore
|
-- stylua: ignore
|
||||||
{
|
{
|
||||||
require("lazy.status").updates,
|
require("lazy.status").updates,
|
||||||
cond = require("lazy.status").has_updates,
|
cond = require("lazy.status").has_updates,
|
||||||
color = function() return LazyVim.ui.fg("Special") end,
|
color = function() return { fg = Snacks.util.color("Special") } end,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"diff",
|
"diff",
|
||||||
|
|
@ -185,50 +186,6 @@ return {
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
-- indent guides for Neovim
|
|
||||||
{
|
|
||||||
"lukas-reineke/indent-blankline.nvim",
|
|
||||||
event = "LazyFile",
|
|
||||||
opts = function()
|
|
||||||
Snacks.toggle({
|
|
||||||
name = "Indention Guides",
|
|
||||||
get = function()
|
|
||||||
return require("ibl.config").get_config(0).enabled
|
|
||||||
end,
|
|
||||||
set = function(state)
|
|
||||||
require("ibl").setup_buffer(0, { enabled = state })
|
|
||||||
end,
|
|
||||||
}):map("<leader>ug")
|
|
||||||
|
|
||||||
return {
|
|
||||||
indent = {
|
|
||||||
char = "│",
|
|
||||||
tab_char = "│",
|
|
||||||
},
|
|
||||||
scope = { show_start = false, show_end = false },
|
|
||||||
exclude = {
|
|
||||||
filetypes = {
|
|
||||||
"Trouble",
|
|
||||||
"alpha",
|
|
||||||
"dashboard",
|
|
||||||
"help",
|
|
||||||
"lazy",
|
|
||||||
"mason",
|
|
||||||
"neo-tree",
|
|
||||||
"notify",
|
|
||||||
"snacks_dashboard",
|
|
||||||
"snacks_notif",
|
|
||||||
"snacks_terminal",
|
|
||||||
"snacks_win",
|
|
||||||
"toggleterm",
|
|
||||||
"trouble",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
main = "ibl",
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Highly experimental plugin that completely replaces the UI for messages, cmdline and the popupmenu.
|
-- Highly experimental plugin that completely replaces the UI for messages, cmdline and the popupmenu.
|
||||||
{
|
{
|
||||||
"folke/noice.nvim",
|
"folke/noice.nvim",
|
||||||
|
|
@ -308,7 +265,26 @@ return {
|
||||||
{ "MunifTanjim/nui.nvim", lazy = true },
|
{ "MunifTanjim/nui.nvim", lazy = true },
|
||||||
|
|
||||||
{
|
{
|
||||||
"folke/snacks.nvim",
|
"snacks.nvim",
|
||||||
|
opts = {
|
||||||
|
indent = { enabled = true },
|
||||||
|
input = { enabled = true },
|
||||||
|
notifier = { enabled = true },
|
||||||
|
scope = { enabled = true },
|
||||||
|
scroll = { enabled = true },
|
||||||
|
statuscolumn = { enabled = false }, -- we set this in options.lua
|
||||||
|
toggle = { map = LazyVim.safe_keymap_set },
|
||||||
|
words = { enabled = true },
|
||||||
|
},
|
||||||
|
-- stylua: ignore
|
||||||
|
keys = {
|
||||||
|
{ "<leader>n", function() Snacks.notifier.show_history() end, desc = "Notification History" },
|
||||||
|
{ "<leader>un", function() Snacks.notifier.hide() end, desc = "Dismiss All Notifications" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"snacks.nvim",
|
||||||
opts = {
|
opts = {
|
||||||
dashboard = {
|
dashboard = {
|
||||||
preset = {
|
preset = {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,40 @@
|
||||||
|
-- Terminal Mappings
|
||||||
|
local function term_nav(dir)
|
||||||
|
---@param self snacks.terminal
|
||||||
|
return function(self)
|
||||||
|
return self:is_floating() and "<c-" .. dir .. ">" or vim.schedule(function()
|
||||||
|
vim.cmd.wincmd(dir)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
||||||
|
-- Snacks utils
|
||||||
|
{
|
||||||
|
"snacks.nvim",
|
||||||
|
opts = {
|
||||||
|
bigfile = { enabled = true },
|
||||||
|
quickfile = { enabled = true },
|
||||||
|
terminal = {
|
||||||
|
win = {
|
||||||
|
keys = {
|
||||||
|
nav_h = { "<C-h>", term_nav("h"), desc = "Go to Left Window", expr = true, mode = "t" },
|
||||||
|
nav_j = { "<C-j>", term_nav("j"), desc = "Go to Lower Window", expr = true, mode = "t" },
|
||||||
|
nav_k = { "<C-k>", term_nav("k"), desc = "Go to Upper Window", expr = true, mode = "t" },
|
||||||
|
nav_l = { "<C-l>", term_nav("l"), desc = "Go to Right Window", expr = true, mode = "t" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- stylua: ignore
|
||||||
|
keys = {
|
||||||
|
{ "<leader>.", function() Snacks.scratch() end, desc = "Toggle Scratch Buffer" },
|
||||||
|
{ "<leader>S", function() Snacks.scratch.select() end, desc = "Select Scratch Buffer" },
|
||||||
|
{ "<leader>dps", function() Snacks.profiler.scratch() end, desc = "Profiler Scratch Buffer" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
-- Session management. This saves your session in the background,
|
-- Session management. This saves your session in the background,
|
||||||
-- keeping track of open buffers, window arrangement, and more.
|
-- keeping track of open buffers, window arrangement, and more.
|
||||||
-- You can restore sessions when returning through the dashboard.
|
-- You can restore sessions when returning through the dashboard.
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
local prios = {
|
local prios = {
|
||||||
["lazyvim.plugins.extras.test.core"] = 1,
|
["lazyvim.plugins.extras.test.core"] = 1,
|
||||||
["lazyvim.plugins.extras.dap.core"] = 1,
|
["lazyvim.plugins.extras.dap.core"] = 1,
|
||||||
|
["lazyvim.plugins.extras.coding.nvim-cmp"] = 2,
|
||||||
["lazyvim.plugins.extras.ui.edgy"] = 2,
|
["lazyvim.plugins.extras.ui.edgy"] = 2,
|
||||||
["lazyvim.plugins.extras.lang.typescript"] = 5,
|
["lazyvim.plugins.extras.lang.typescript"] = 5,
|
||||||
["lazyvim.plugins.extras.coding.blink"] = 5,
|
["lazyvim.plugins.extras.coding.blink"] = 5,
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,12 @@ M.moved = {
|
||||||
ui = {
|
ui = {
|
||||||
statuscolumn = { "Snacks.statuscolumn" },
|
statuscolumn = { "Snacks.statuscolumn" },
|
||||||
bufremove = { "Snacks.bufdelete" },
|
bufremove = { "Snacks.bufdelete" },
|
||||||
|
fg = {
|
||||||
|
"{ fg = Snacks.util.color(...) }",
|
||||||
|
fn = function(...)
|
||||||
|
return { fg = Snacks.util.color(...) }
|
||||||
|
end,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -33,6 +39,9 @@ function M.decorate(name, mod)
|
||||||
if M.moved[name][k] then
|
if M.moved[name][k] then
|
||||||
local to = M.moved[name][k][1]
|
local to = M.moved[name][k][1]
|
||||||
LazyVim.deprecate("LazyVim." .. name .. "." .. k, to)
|
LazyVim.deprecate("LazyVim." .. name .. "." .. k, to)
|
||||||
|
if M.moved[name][k].fn then
|
||||||
|
return M.moved[name][k].fn
|
||||||
|
end
|
||||||
local ret = vim.tbl_get(_G, unpack(vim.split(to, ".", { plain = true })))
|
local ret = vim.tbl_get(_G, unpack(vim.split(to, ".", { plain = true })))
|
||||||
return ret
|
return ret
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -265,4 +265,13 @@ function M.memoize(fn)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---@return "nvim-cmp" | "blink.cmp"
|
||||||
|
function M.cmp_engine()
|
||||||
|
vim.g.lazyvim_cmp = vim.g.lazyvim_cmp or "auto"
|
||||||
|
if vim.g.lazyvim_cmp == "auto" then
|
||||||
|
return LazyVim.has_extra("nvim-cmp") and "nvim-cmp" or "blink.cmp"
|
||||||
|
end
|
||||||
|
return vim.g.lazyvim_cmp
|
||||||
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ function M.status(icon, status)
|
||||||
return status() ~= nil
|
return status() ~= nil
|
||||||
end,
|
end,
|
||||||
color = function()
|
color = function()
|
||||||
return LazyVim.ui.fg(colors[status()] or colors.ok)
|
return { fg = Snacks.util.color(colors[status()] or colors.ok) }
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
@ -146,7 +146,7 @@ function M.root_dir(opts)
|
||||||
other = true,
|
other = true,
|
||||||
icon = " ",
|
icon = " ",
|
||||||
color = function()
|
color = function()
|
||||||
return LazyVim.ui.fg("Special")
|
return { fg = Snacks.util.color("Special") }
|
||||||
end,
|
end,
|
||||||
}, opts or {})
|
}, opts or {})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,47 +1,6 @@
|
||||||
---@class lazyvim.util.mini
|
---@class lazyvim.util.mini
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
---@alias Mini.ai.loc {line:number, col:number}
|
|
||||||
---@alias Mini.ai.region {from:Mini.ai.loc, to:Mini.ai.loc}
|
|
||||||
|
|
||||||
-- Mini.ai indent text object
|
|
||||||
-- For "a", it will include the non-whitespace line surrounding the indent block.
|
|
||||||
-- "a" is line-wise, "i" is character-wise.
|
|
||||||
function M.ai_indent(ai_type)
|
|
||||||
local spaces = (" "):rep(vim.o.tabstop)
|
|
||||||
local lines = vim.api.nvim_buf_get_lines(0, 0, -1, false)
|
|
||||||
local indents = {} ---@type {line: number, indent: number, text: string}[]
|
|
||||||
|
|
||||||
for l, line in ipairs(lines) do
|
|
||||||
if not line:find("^%s*$") then
|
|
||||||
indents[#indents + 1] = { line = l, indent = #line:gsub("\t", spaces):match("^%s*"), text = line }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local ret = {} ---@type (Mini.ai.region | {indent: number})[]
|
|
||||||
|
|
||||||
for i = 1, #indents do
|
|
||||||
if i == 1 or indents[i - 1].indent < indents[i].indent then
|
|
||||||
local from, to = i, i
|
|
||||||
for j = i + 1, #indents do
|
|
||||||
if indents[j].indent < indents[i].indent then
|
|
||||||
break
|
|
||||||
end
|
|
||||||
to = j
|
|
||||||
end
|
|
||||||
from = ai_type == "a" and from > 1 and from - 1 or from
|
|
||||||
to = ai_type == "a" and to < #indents and to + 1 or to
|
|
||||||
ret[#ret + 1] = {
|
|
||||||
indent = indents[i].indent,
|
|
||||||
from = { line = indents[from].line, col = ai_type == "a" and 1 or indents[from].indent + 1 },
|
|
||||||
to = { line = indents[to].line, col = #indents[to].text },
|
|
||||||
}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return ret
|
|
||||||
end
|
|
||||||
|
|
||||||
-- taken from MiniExtra.gen_ai_spec.buffer
|
-- taken from MiniExtra.gen_ai_spec.buffer
|
||||||
function M.ai_buffer(ai_type)
|
function M.ai_buffer(ai_type)
|
||||||
local start_line, end_line = 1, vim.fn.line("$")
|
local start_line, end_line = 1, vim.fn.line("$")
|
||||||
|
|
@ -92,6 +51,7 @@ function M.ai_whichkey(opts)
|
||||||
{ "}", desc = "{} with ws" },
|
{ "}", desc = "{} with ws" },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
---@type wk.Spec[]
|
||||||
local ret = { mode = { "o", "x" } }
|
local ret = { mode = { "o", "x" } }
|
||||||
---@type table<string, string>
|
---@type table<string, string>
|
||||||
local mappings = vim.tbl_extend("force", {}, {
|
local mappings = vim.tbl_extend("force", {}, {
|
||||||
|
|
|
||||||
|
|
@ -42,10 +42,11 @@ function M.register(picker)
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---@return "telescope" | "fzf"
|
||||||
function M.want()
|
function M.want()
|
||||||
vim.g.lazyvim_picker = vim.g.lazyvim_picker or "auto"
|
vim.g.lazyvim_picker = vim.g.lazyvim_picker or "auto"
|
||||||
if vim.g.lazyvim_picker == "auto" then
|
if vim.g.lazyvim_picker == "auto" then
|
||||||
return LazyVim.has_extra("editor.fzf") and "fzf" or "telescope"
|
return LazyVim.has_extra("editor.telescope") and "telescope" or "fzf"
|
||||||
end
|
end
|
||||||
return vim.g.lazyvim_picker
|
return vim.g.lazyvim_picker
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -24,55 +24,4 @@ function M.foldexpr()
|
||||||
return vim.b[buf].ts_folds and vim.treesitter.foldexpr() or "0"
|
return vim.b[buf].ts_folds and vim.treesitter.foldexpr() or "0"
|
||||||
end
|
end
|
||||||
|
|
||||||
---@return {fg?:string}?
|
|
||||||
function M.fg(name)
|
|
||||||
local hl = vim.api.nvim_get_hl(0, { name = name, link = false })
|
|
||||||
local fg = hl and hl.fg or hl.foreground
|
|
||||||
return fg and { fg = string.format("#%06x", fg) } or nil
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.maximize()
|
|
||||||
---@type {k:string, v:any}[]?
|
|
||||||
local maximized = nil
|
|
||||||
local toggle = Snacks.toggle({
|
|
||||||
name = "Maximize",
|
|
||||||
get = function()
|
|
||||||
return maximized ~= nil
|
|
||||||
end,
|
|
||||||
set = function(state)
|
|
||||||
if state then
|
|
||||||
maximized = {}
|
|
||||||
local function set(k, v)
|
|
||||||
table.insert(maximized, 1, { k = k, v = vim.o[k] })
|
|
||||||
vim.o[k] = v
|
|
||||||
end
|
|
||||||
set("winwidth", 999)
|
|
||||||
set("winheight", 999)
|
|
||||||
set("winminwidth", 10)
|
|
||||||
set("winminheight", 4)
|
|
||||||
vim.cmd("wincmd =")
|
|
||||||
else
|
|
||||||
for _, opt in ipairs(maximized) do
|
|
||||||
vim.o[opt.k] = opt.v
|
|
||||||
end
|
|
||||||
maximized = nil
|
|
||||||
vim.cmd("wincmd =")
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
-- `QuitPre` seems to be executed even if we quit a normal window, so we don't want that
|
|
||||||
-- `VimLeavePre` might be another consideration? Not sure about differences between the 2
|
|
||||||
vim.api.nvim_create_autocmd("ExitPre", {
|
|
||||||
group = vim.api.nvim_create_augroup("lazyvim_restore_max_exit_pre", { clear = true }),
|
|
||||||
desc = "Restore width/height when close Neovim while maximized",
|
|
||||||
callback = function()
|
|
||||||
if toggle:get() then
|
|
||||||
toggle:set(false)
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
return toggle
|
|
||||||
end
|
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue