Merge remote-tracking branch 'refs/remotes/origin/main'

This commit is contained in:
Muneeb Usmani 2024-06-02 17:43:48 +05:00
commit 20255c81ed
27 changed files with 407 additions and 156 deletions

View file

@ -1,5 +1,48 @@
# Changelog
## [12.3.0](https://github.com/LazyVim/LazyVim/compare/v12.2.0...v12.3.0) (2024-06-02)
### Features
* **coding:** use `lazydev.nvim` instead of `neodev.nvim` ([5e76948](https://github.com/LazyVim/LazyVim/commit/5e76948d58d3ccae57b1cc09474a1f8b36d100ce))
* **extras:** show extras imported in other extras ([b2858a2](https://github.com/LazyVim/LazyVim/commit/b2858a297a465546e9f34d5c3e9d42b9716048eb))
* **extras:** split enabled in enabled plugins/languages ([45b92aa](https://github.com/LazyVim/LazyVim/commit/45b92aa381243417462fb4aac92478ce50b4e126))
* moved neoconf.nvim to extras ([c14d21c](https://github.com/LazyVim/LazyVim/commit/c14d21ce7534ff302c1ccf0b22f46160ea98ccf1))
* **util:** utility methods for lazy plugins ([596c439](https://github.com/LazyVim/LazyVim/commit/596c439db572c8b37c442a1f425b3f452607fd36))
### Bug Fixes
* **dot:** added dot to recommended ([c69553e](https://github.com/LazyVim/LazyVim/commit/c69553e1942a646917c92f3643a2ca78eeb19adf))
* **json:** added *.json to recommended ([c98fbef](https://github.com/LazyVim/LazyVim/commit/c98fbef3b56fe6ba709254cdc90c8c46c078d555))
* **util:** make sure doc gen works ([c33d657](https://github.com/LazyVim/LazyVim/commit/c33d6578a8b2ce03cab58d5952d717064125ef5d))
## [12.2.0](https://github.com/LazyVim/LazyVim/compare/v12.1.0...v12.2.0) (2024-06-01)
### Features
* **astro:** added support for ts-plugin, but won't work till mason-registry PR is merged. See [#3364](https://github.com/LazyVim/LazyVim/issues/3364) ([683aaeb](https://github.com/LazyVim/LazyVim/commit/683aaeb75b46f182f2a2dca3b8416151de296626))
* **extras:** added extra for svelte. Full support will be enabled once my mason PR gets merged ([7598a75](https://github.com/LazyVim/LazyVim/commit/7598a7503df0fd7912e81fdc9a0eb7635795605b))
* **typescript:** add keymap for remove unused imports ([#3376](https://github.com/LazyVim/LazyVim/issues/3376)) ([0a93737](https://github.com/LazyVim/LazyVim/commit/0a9373733f79be5edb4ccb8d9268a700c1e3faad))
### Bug Fixes
* **aerial:** disable trouble leader-cs keymap when aerial extra is enabled ([1351503](https://github.com/LazyVim/LazyVim/commit/135150307b53a5b51f2f0c149ca7f426a67eb8f1))
* **copilot-chat:** no need to schedule which-key keys. just use default ([6678af3](https://github.com/LazyVim/LazyVim/commit/6678af37ee3100882b4c08451fa8aaa37e37fd69))
* **extras:** `underline = false` for setting diagnostics ([#3379](https://github.com/LazyVim/LazyVim/issues/3379)) ([060f56d](https://github.com/LazyVim/LazyVim/commit/060f56d6d429c5ee3fd35f4fa0c152f4a42781ca))
* **health:** remove old deprecated module checks ([4e62df4](https://github.com/LazyVim/LazyVim/commit/4e62df4269a9300c17f6bf23acfcb9dd0729b6c3))
* **lsp:** better way of extending deeply nested lists. Fixes [#3398](https://github.com/LazyVim/LazyVim/issues/3398) ([9f2cc30](https://github.com/LazyVim/LazyVim/commit/9f2cc302463e3be0ca3a42845c0fc34e49e75bca))
* rename `+a` which-key group to `ai`. Fixes [#3392](https://github.com/LazyVim/LazyVim/issues/3392) ([a474aea](https://github.com/LazyVim/LazyVim/commit/a474aea1f9fcf0c7601914b1e53260067f621799))
* **rust:** let rustaceans.nvim setup rust_analyzer ([#3389](https://github.com/LazyVim/LazyVim/issues/3389)) ([3fadf6a](https://github.com/LazyVim/LazyVim/commit/3fadf6af8f4adc1788fb8adec1fd9850d12feaf8))
* **trouble:** don't enable symbols keymap when `outline.nvim` enabled ([#3408](https://github.com/LazyVim/LazyVim/issues/3408)) ([146c87c](https://github.com/LazyVim/LazyVim/commit/146c87cd786854b9225ad49ad39acbcb4b7fff0b))
* **ui:** allow to disable the trouble lualine component with `vim.g.trouble_lualine = false` ([#3391](https://github.com/LazyVim/LazyVim/issues/3391)) ([d02b73d](https://github.com/LazyVim/LazyVim/commit/d02b73d72a85d72a57c3bcf0cfaef0cd50c81c37))
* **ui:** remove old alpha.nvim warning ([abc6554](https://github.com/LazyVim/LazyVim/commit/abc6554e24ff97bfc630fe1d91827e02f826b1fa))
* **util:** make sure mason is loaded when getting package paths ([a6df15a](https://github.com/LazyVim/LazyVim/commit/a6df15a63fdeaf25895fb2d97910e3e099a95d0c))
* **vue:** correctly add plugins. See [#3401](https://github.com/LazyVim/LazyVim/issues/3401) ([e7430b0](https://github.com/LazyVim/LazyVim/commit/e7430b0776c13e9ab3f42a1b9aee84561bd07c0a))
## [12.1.0](https://github.com/LazyVim/LazyVim/compare/v12.0.0...v12.1.0) (2024-05-30)

View file

@ -2,6 +2,12 @@
## 11.x
- **Neovim >= 0.10** now uses the much faster [lazydev.nvim](https://github.com/folke/lazydev.nvim)
instead of `neodev.nvim`
- moved `neoconf.nvim` to extras. Project specific LSP settings
can be done with a `.lazy.lua` file instead.
- `mini.ai` is back as a default plugin! Removing it was a mistake.
It's a great plugin that enhances the native text objects.

View file

@ -1,4 +1,4 @@
*LazyVim.txt* For Neovim >= 0.9.0 Last change: 2024 May 30
*LazyVim.txt* For Neovim >= 0.9.0 Last change: 2024 June 02
==============================================================================
Table of Contents *LazyVim-table-of-contents*

View file

@ -28,6 +28,9 @@ vim.g.lazygit_config = true
-- Hide deprecation warnings
vim.g.deprecation_warnings = false
-- Show the current document symbols location from Trouble in lualine
vim.g.trouble_lualine = true
local opt = vim.opt
opt.autowrite = true -- Enable auto write

View file

@ -95,48 +95,46 @@ return {
},
-- snippets
vim.fn.has("nvim-0.10") == 1
and {
"nvim-cmp",
dependencies = {
{
"garymjr/nvim-snippets",
opts = {
friendly_snippets = true,
},
dependencies = { "rafamadriz/friendly-snippets" },
},
{
"nvim-cmp",
dependencies = {
{
"garymjr/nvim-snippets",
opts = {
friendly_snippets = true,
},
opts = function(_, opts)
opts.snippet = {
expand = function(item)
return LazyVim.cmp.expand(item.body)
end,
}
table.insert(opts.sources, { name = "snippets" })
dependencies = { "rafamadriz/friendly-snippets" },
},
},
opts = function(_, opts)
opts.snippet = {
expand = function(item)
return LazyVim.cmp.expand(item.body)
end,
keys = {
{
"<Tab>",
function()
return vim.snippet.active({ direction = 1 }) and "<cmd>lua vim.snippet.jump(1)<cr>" or "<Tab>"
end,
expr = true,
silent = true,
mode = { "i", "s" },
},
{
"<S-Tab>",
function()
return vim.snippet.active({ direction = -1 }) and "<cmd>lua vim.snippet.jump(-1)<cr>" or "<Tab>"
end,
expr = true,
silent = true,
mode = { "i", "s" },
},
},
}
or { import = "lazyvim.plugins.extras.coding.luasnip", enabled = vim.fn.has("nvim-0.10") == 0 },
table.insert(opts.sources, { name = "snippets" })
end,
keys = {
{
"<Tab>",
function()
return vim.snippet.active({ direction = 1 }) and "<cmd>lua vim.snippet.jump(1)<cr>" or "<Tab>"
end,
expr = true,
silent = true,
mode = { "i", "s" },
},
{
"<S-Tab>",
function()
return vim.snippet.active({ direction = -1 }) and "<cmd>lua vim.snippet.jump(-1)<cr>" or "<Tab>"
end,
expr = true,
silent = true,
mode = { "i", "s" },
},
},
},
-- auto pairs
{
@ -168,11 +166,6 @@ return {
"folke/ts-comments.nvim",
event = "VeryLazy",
opts = {},
enabled = vim.fn.has("nvim-0.10") == 1,
},
{
import = "lazyvim.plugins.extras.coding.mini-comment",
enabled = vim.fn.has("nvim-0.10") == 0,
},
-- Better text-objects
@ -207,4 +200,26 @@ return {
}
end,
},
{
"folke/lazydev.nvim",
ft = "lua",
opts = function()
return {
library = {
uv = "luvit-meta/library",
lazyvim = "LazyVim",
},
}
end,
},
-- Manage libuv types with lazy. Plugin will never be loaded
{ "Bilal2453/luvit-meta", lazy = true },
-- Add lazydev source to cmp
{
"hrsh7th/nvim-cmp",
opts = function(_, opts)
table.insert(opts.sources, { name = "lazydev", group_index = 0 })
end,
},
}

View file

@ -0,0 +1,18 @@
-- Compatibility with Neovim 0.9
return {
-- Use LuaSnip instead of native snippets
{ import = "lazyvim.plugins.extras.coding.luasnip" },
-- Use mini.comment instead of ts-comments
{ "folke/ts-comments.nvim", enabled = false },
{ import = "lazyvim.plugins.extras.coding.mini-comment" },
-- Use neodev instead of lazydev
{ "folke/lazydev.nvim", enabled = false },
{
"neovim/nvim-lspconfig",
dependencies = {
{ "folke/neodev.nvim", opts = {} },
},
},
}

View file

@ -471,8 +471,8 @@ return {
keys = {
{ "]t", function() require("todo-comments").jump_next() end, desc = "Next Todo Comment" },
{ "[t", function() require("todo-comments").jump_prev() end, desc = "Previous Todo Comment" },
{ "<leader>xt", "<cmd>TodoTrouble<cr>", desc = "Todo (Trouble)" },
{ "<leader>xT", "<cmd>TodoTrouble keywords=TODO,FIX,FIXME<cr>", desc = "Todo/Fix/Fixme (Trouble)" },
{ "<leader>xt", "<cmd>Trouble todo<cr>", desc = "Todo (Trouble)" },
{ "<leader>xT", "<cmd>Trouble todo filter = {tag = {TODO,FIX,FIXME}}<cr>", desc = "Todo/Fix/Fixme (Trouble)" },
{ "<leader>st", "<cmd>TodoTelescope<cr>", desc = "Todo" },
{ "<leader>sT", "<cmd>TodoTelescope keywords=TODO,FIX,FIXME<cr>", desc = "Todo/Fix/Fixme" },
},

View file

@ -50,13 +50,6 @@ return {
mode = { "n", "v" },
},
},
init = function()
LazyVim.on_load("which-key.nvim", function()
vim.schedule(function()
require("which-key").register({ a = { name = "+CopilotChat (AI)" } }, { prefix = "<leader>" })
end)
end)
end,
config = function(_, opts)
local chat = require("CopilotChat")
require("CopilotChat.integrations.cmp").setup()
@ -73,6 +66,16 @@ return {
end,
},
{
"folke/which-key.nvim",
optional = true,
opts = {
defaults = {
["<leader>a"] = { name = "+ai" },
},
},
},
-- Telescope integration
{
"nvim-telescope/telescope.nvim",

View file

@ -81,11 +81,6 @@ return {
},
},
},
-- VsCode launch.json parser
{
"folke/neoconf.nvim",
},
},
-- stylua: ignore

View file

@ -49,6 +49,14 @@ return {
},
},
{
"folke/trouble.nvim",
optional = true,
keys = {
{ "<leader>cs", false },
},
},
-- Telescope integration
{
"nvim-telescope/telescope.nvim",

View file

@ -1,4 +1,12 @@
return {
-- Disable `<leader>cs` keymap so it doesn't conflict with `outline.nvim`
{
"folke/trouble.nvim",
optional = true,
keys = {
{ "<leader>cs", false },
},
},
{
"hedyhli/outline.nvim",
keys = { { "<leader>cs", "<cmd>Outline<cr>", desc = "Toggle Outline" } },

View file

@ -10,6 +10,9 @@ return {
})
end,
-- depends on the typescript extra
{ import = "lazyvim.plugins.extras.lang.typescript" },
{
"nvim-treesitter/nvim-treesitter",
opts = function(_, opts)
@ -19,6 +22,7 @@ return {
end,
},
-- LSP Servers
{
"neovim/nvim-lspconfig",
opts = {
@ -27,4 +31,22 @@ return {
},
},
},
-- Configure tsserver plugin
{
"neovim/nvim-lspconfig",
opts = function(_, opts)
LazyVim.extend(opts.servers.vtsls, "settings.vtsls.tsserver.globalPlugins", {
{
name = "@astrojs/ts-plugin",
location = LazyVim.get_pkg_path(
"astro-language-server",
"/node_modules/@astrojs/ts-plugin",
{ warn = false }
),
enableForWorkspaceTypeScriptVersions = true,
},
})
end,
},
}

View file

@ -2,6 +2,7 @@ return {
recommended = function()
return LazyVim.extras.wants({
ft = { "json", "jsonc", "json5" },
root = { "*.json" },
})
end,

View file

@ -106,8 +106,7 @@ return {
{ "<leader>dPc", function() require('dap-python').test_class() end, desc = "Debug Class", ft = "python" },
},
config = function()
local path = require("mason-registry").get_package("debugpy"):get_install_path()
require("dap-python").setup(path .. "/venv/bin/python")
require("dap-python").setup(LazyVim.get_pkg_path("debugpy", "/venv/bin/python"))
end,
},
},

View file

@ -43,6 +43,7 @@ return {
pdfviewer = ""
},
config = function(_, opts)
vim.g.rout_follow_colorscheme = true
require("r").setup(opts)
require("r.pdf.generic").open = vim.ui.open
end,

View file

@ -0,0 +1,52 @@
return {
recommended = function()
return LazyVim.extras.wants({
ft = "svelte",
root = {
"svelte.config.js",
"svelte.config.mjs",
"svelte.config.cjs",
},
})
end,
-- depends on the typescript extra
{ import = "lazyvim.plugins.extras.lang.typescript" },
{
"nvim-treesitter/nvim-treesitter",
opts = function(_, opts)
if type(opts.ensure_installed) == "table" then
vim.list_extend(opts.ensure_installed, { "svelte" })
end
end,
},
-- LSP Servers
{
"neovim/nvim-lspconfig",
opts = {
servers = {
svelte = {},
},
},
},
-- Configure tsserver plugin
{
"neovim/nvim-lspconfig",
opts = function(_, opts)
LazyVim.extend(opts.servers.vtsls, "settings.vtsls.tsserver.globalPlugins", {
{
name = "typescript-svelte-plugin",
location = LazyVim.get_pkg_path(
"svelte-language-server",
"/node_modules/typescript-svelte-plugin",
{ warn = false }
),
enableForWorkspaceTypeScriptVersions = true,
},
})
end,
},
}

View file

@ -32,10 +32,21 @@ return {
enabled = false,
},
vtsls = {
-- explicitly add default filetypes, so that we can extend
-- them in related extras
filetypes = {
"javascript",
"javascriptreact",
"javascript.jsx",
"typescript",
"typescriptreact",
"typescript.tsx",
},
settings = {
complete_function_calls = true,
vtsls = {
enableMoveToFileCodeAction = true,
autoUseWorkspaceTsdk = true,
experimental = {
completion = {
enableServerSideFuzzyMatch = true,
@ -119,12 +130,6 @@ return {
-- copy typescript settings to javascript
opts.settings.javascript =
vim.tbl_deep_extend("force", {}, opts.settings.typescript, opts.settings.javascript or {})
local plugins = vim.tbl_get(opts.settings, "vtsls", "tsserver", "globalPlugins")
-- allow plugins to have a key for proper merging
-- remove the key here
if plugins then
opts.settings.vtsls.tsserver.globalPlugins = vim.tbl_values(plugins)
end
end,
},
},
@ -153,8 +158,7 @@ return {
command = "node",
-- 💀 Make sure to update this path to point to your installation
args = {
require("mason-registry").get_package("js-debug-adapter"):get_install_path()
.. "/js-debug/src/dapDebugServer.js",
LazyVim.get_pkg_path("js-debug-adapter", "/js-debug/src/dapDebugServer.js"),
"${port}",
},
},

View file

@ -6,6 +6,9 @@ return {
})
end,
-- depends on the typescript extra
{ import = "lazyvim.plugins.extras.lang.typescript" },
{
"nvim-treesitter/nvim-treesitter",
opts = function(_, opts)
@ -15,41 +18,29 @@ return {
end,
},
-- Add LSP servers
{
"neovim/nvim-lspconfig",
opts = {
servers = {
volar = {},
vtsls = {},
},
},
},
-- Configure tsserver plugin
{
"neovim/nvim-lspconfig",
opts = function(_, opts)
local vue_typescript_plugin = require("mason-registry").get_package("vue-language-server"):get_install_path()
.. "/node_modules/@vue/language-server"
.. "/node_modules/@vue/typescript-plugin"
opts.servers = vim.tbl_deep_extend("force", opts.servers, {
volar = {},
-- Volar 2.0 has discontinued their "take over mode" which in previous version provided support for typescript in vue files.
-- The new approach to get typescript support involves using the typescript language server along side volar.
vtsls = {
settings = {
vtsls = {
tsserver = {
globalPlugins = {
-- Use typescript language server along with vue typescript plugin
vue = {
name = "@vue/typescript-plugin",
location = vue_typescript_plugin,
languages = { "vue" },
},
},
},
},
},
filetypes = {
"javascript",
"javascriptreact",
"javascript.jsx",
"typescript",
"typescriptreact",
"typescript.tsx",
"vue",
},
table.insert(opts.servers.vtsls.filetypes, "vue")
LazyVim.extend(opts.servers.vtsls, "settings.vtsls.tsserver.globalPlugins", {
{
name = "@vue/typescript-plugin",
location = LazyVim.get_pkg_path("vue-language-server", "/node_modules/@vue/language-server"),
languages = { "vue" },
configNamespace = "typescript",
enableForWorkspaceTypeScriptVersions = true,
},
})
end,

View file

@ -0,0 +1,12 @@
return {
{
"neovim/nvim-lspconfig",
dependencies = {
{
"folke/neoconf.nvim",
cmd = "Neoconf",
opts = {},
},
},
},
}

View file

@ -7,6 +7,8 @@ local function have(path)
end
return {
recommended = true,
desc = "Language support for dotfiles",
{
"neovim/nvim-lspconfig",
opts = {

View file

@ -4,8 +4,6 @@ return {
"neovim/nvim-lspconfig",
event = "LazyFile",
dependencies = {
{ "folke/neoconf.nvim", cmd = "Neoconf", config = false, dependencies = { "nvim-lspconfig" } },
{ "folke/neodev.nvim", opts = {} },
"mason.nvim",
"williamboman/mason-lspconfig.nvim",
},
@ -75,7 +73,7 @@ return {
-- mason = false, -- set to false if you don't want this server to be installed with mason
-- Use this to add any additional keymaps
-- for specific lsp servers
---@type LazyKeysSpec[]
-- ---@type LazyKeysSpec[]
-- keys = {},
settings = {
Lua = {
@ -119,10 +117,6 @@ return {
end,
---@param opts PluginLspOpts
config = function(_, opts)
if LazyVim.has("neoconf.nvim") then
require("neoconf").setup(LazyVim.opts("neoconf.nvim"))
end
-- setup autoformat
LazyVim.format.register(LazyVim.lsp.formatter())
@ -284,19 +278,15 @@ return {
})
end, 100)
end)
local function ensure_installed()
mr.refresh(function()
for _, tool in ipairs(opts.ensure_installed) do
local p = mr.get_package(tool)
if not p:is_installed() then
p:install()
end
end
end
if mr.refresh then
mr.refresh(ensure_installed)
else
ensure_installed()
end
end)
end,
},
}

View file

@ -128,18 +128,7 @@ return {
vim.o.laststatus = vim.g.lualine_laststatus
local trouble = require("trouble")
local symbols = trouble.statusline
and trouble.statusline({
mode = "symbols",
groups = {},
title = false,
filter = { range = true },
format = "{kind_icon}{symbol.name:Normal}",
hl_group = "lualine_c_normal",
})
return {
local opts = {
options = {
theme = "auto",
globalstatus = true,
@ -162,10 +151,6 @@ return {
},
{ "filetype", icon_only = true, separator = "", padding = { left = 1, right = 0 } },
{ LazyVim.lualine.pretty_path() },
{
symbols and symbols.get,
cond = symbols and symbols.has,
},
},
lualine_x = {
-- stylua: ignore
@ -222,6 +207,26 @@ return {
},
extensions = { "neo-tree", "lazy" },
}
-- do not add trouble symbols if aerial is enabled
if vim.g.trouble_lualine then
local trouble = require("trouble")
local symbols = trouble.statusline
and trouble.statusline({
mode = "symbols",
groups = {},
title = false,
filter = { range = true },
format = "{kind_icon}{symbol.name:Normal}",
hl_group = "lualine_c_normal",
})
table.insert(opts.sections.lualine_c, {
symbols and symbols.get,
cond = symbols and symbols.has,
})
end
return opts
end,
},
@ -315,20 +320,6 @@ return {
-- ui components
{ "MunifTanjim/nui.nvim", lazy = true },
{
"goolord/alpha-nvim",
optional = true,
enabled = function()
LazyVim.warn({
"`dashboard.nvim` is now the default LazyVim starter plugin.",
"",
"To keep using `alpha.nvim`, please enable the `lazyvim.plugins.extras.ui.alpha` extra.",
"Or to hide this message, remove the alpha spec from your config.",
})
return false
end,
},
{
"nvimdev/dashboard-nvim",
lazy = false, -- As https://github.com/nvimdev/dashboard-nvim/pull/450, dashboard-nvim shouldn't be lazy-loaded to properly handle stdin.

View file

@ -5,15 +5,25 @@ local prios = {
["lazyvim.plugins.extras.editor.aerial"] = 100,
["lazyvim.plugins.extras.editor.outline"] = 100,
["lazyvim.plugins.extras.editor.trouble-v3"] = 100,
["lazyvim.plugins.extras.lang.typescript"] = 5,
["lazyvim.plugins.extras.ui.edgy"] = 2,
["lazyvim.plugins.extras.test.core"] = 1,
["lazyvim.plugins.extras.dap.core"] = 1,
}
---@type string[]
Config.json.data.extras = LazyVim.dedup(Config.json.data.extras)
local extras = LazyVim.dedup(Config.json.data.extras)
table.sort(Config.json.data.extras, function(a, b)
local version = vim.version()
local v = version.major .. "_" .. version.minor
local compat = { "0_9" }
if vim.tbl_contains(compat, v) then
extras[#extras + 1] = "lazyvim.plugins.compat.nvim-" .. v
end
table.sort(extras, function(a, b)
local pa = prios[a] or 10
local pb = prios[b] or 10
if pa == pb then
@ -25,4 +35,4 @@ end)
---@param extra string
return vim.tbl_map(function(extra)
return { import = extra }
end, Config.json.data.extras)
end, extras)

View file

@ -1,4 +1,7 @@
---@meta
---@class LazyVimGlobals
vim.g = {}
_G.lazyvim_docs = true
_G.LazyVim = require("lazyvim.util")

View file

@ -17,6 +17,7 @@ local Text = require("lazy.view.text")
---@field enabled boolean
---@field managed boolean
---@field recommended? boolean
---@field imports string[]
---@field row? number
---@field section? string
---@field plugins string[]
@ -82,7 +83,16 @@ end
---@param source LazyExtraSource
function M.get_extra(source, modname)
local enabled = vim.tbl_contains(M.state, modname)
local spec = Plugin.Spec.new({ import = modname }, { optional = true })
local spec = Plugin.Spec.new(nil, { optional = true })
spec:parse({ import = modname })
local imports = vim.tbl_filter(function(x)
return x ~= modname
end, spec.modules)
if #imports > 0 then
spec = Plugin.Spec.new(nil, { optional = true })
spec.modules = vim.deepcopy(imports)
spec:parse({ import = modname })
end
local plugins = {} ---@type string[]
local optional = {} ---@type string[]
for _, p in pairs(spec.plugins) do
@ -107,6 +117,7 @@ function M.get_extra(source, modname)
name = modname:sub(#source.module + 2),
module = modname,
enabled = enabled,
imports = imports,
desc = require(modname).desc,
recommended = recommended,
managed = vim.tbl_contains(Config.json.data.extras, modname) or not enabled,
@ -225,7 +236,8 @@ function X:render()
title = "Recommended Languages",
empty = false,
})
self:section({ enabled = true, title = "Enabled" })
self:section({ enabled = true, exclude = "^lang%.", title = "Enabled Plugins" })
self:section({ enabled = true, title = "Enabled Languages" })
self:section({ recommended = true, title = "Recommended Plugins", empty = false })
self:section({ title = "Plugins", exclude = "^lang%." })
self:section({ title = "Languages" })
@ -253,6 +265,10 @@ function X:extra(extra)
if extra.source.name ~= "LazyVim" then
self.text:append(" "):append(LazyConfig.options.ui.icons.event .. " " .. extra.source.name, "LazyReasonEvent")
end
for _, import in ipairs(extra.imports) do
import = import:gsub("^lazyvim.plugins.extras.", "")
self.text:append(" "):append(LazyConfig.options.ui.icons.plugin .. "" .. import, "LazyReasonStart")
end
for _, plugin in ipairs(extra.plugins) do
self.text:append(" "):append(LazyConfig.options.ui.icons.plugin .. "" .. plugin, "LazyReasonPlugin")
end

View file

@ -57,9 +57,22 @@ function M.is_win()
return vim.uv.os_uname().sysname:find("Windows") ~= nil
end
---@param name string
function M.get_plugin(name)
return require("lazy.core.config").spec.plugins[name]
end
---@param name string
---@param path string?
function M.get_plugin_path(name, path)
local plugin = M.get_plugin(name)
path = path and "/" .. path or ""
return plugin and (plugin.dir .. path)
end
---@param plugin string
function M.has(plugin)
return require("lazy.core.config").spec.plugins[plugin] ~= nil
return M.get_plugin(plugin) ~= nil
end
---@param fn fun()
@ -72,6 +85,27 @@ function M.on_very_lazy(fn)
})
end
--- This extends a deeply nested list with a key in a table
--- that is a dot-separated string.
--- The nested list will be created if it does not exist.
---@generic T
---@param t T[]
---@param key string
---@param values T[]
---@return T[]?
function M.extend(t, key, values)
local keys = vim.split(key, ".", { plain = true })
for i = 1, #keys do
local k = keys[i]
t[k] = t[k] or {}
if type(t) ~= "table" then
return
end
t = t[k]
end
return vim.list_extend(t, values)
end
---@param name string
function M.opts(name)
local plugin = require("lazy.core.config").spec.plugins[name]
@ -198,4 +232,32 @@ function M.create_undo()
end
end
--- Gets a path to a package in the Mason registry.
--- Prefer this to `get_package`, since the package might not always be
--- available yet and trigger errors.
---@param pkg string
---@param path? string
---@param opts? { warn?: boolean }
function M.get_pkg_path(pkg, path, opts)
pcall(require, "mason") -- make sure Mason is loaded. Will fail when generating docs
local root = vim.env.MASON or (vim.fn.stdpath("data") .. "/mason")
opts = opts or {}
opts.warn = opts.warn == nil and true or opts.warn
path = path or ""
local ret = root .. "/packages/" .. pkg .. "/" .. path
if opts.warn and not vim.loop.fs_stat(ret) then
M.warn(("Mason package path not found for **%s**:\n- `%s`"):format(pkg, path))
end
return ret
end
--- Override the default title for notifications.
for _, level in ipairs({ "info", "warn", "error" }) do
M[level] = function(msg, opts)
opts = opts or {}
opts.title = opts.title or "LazyVim"
return LazyUtil[level](msg, opts)
end
end
return M

View file

@ -17,11 +17,7 @@ M.deprecated_extras = {
["lazyvim.plugins.extras.editor.trouble-v3"] = "Trouble v3 has been merged in main",
}
M.deprecated_modules = {
["null-ls"] = "lsp.none-ls",
["nvim-navic.lib"] = "editor.navic",
["nvim-navic"] = "editor.navic",
}
M.deprecated_modules = {}
---@type table<string, string>
M.renames = {