mirror of
https://github.com/LazyVim/LazyVim.git
synced 2026-07-25 14:01:06 +00:00
Merge branch 'main' into dev
This commit is contained in:
commit
e2fe9a19be
35 changed files with 332 additions and 282 deletions
2
.github/.release-please-manifest.json
vendored
2
.github/.release-please-manifest.json
vendored
|
|
@ -1,3 +1,3 @@
|
|||
{
|
||||
".": "15.10.1"
|
||||
".": "15.13.0"
|
||||
}
|
||||
|
|
|
|||
3
.markdownlint-cli2.yaml
Normal file
3
.markdownlint-cli2.yaml
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
config:
|
||||
MD013: false
|
||||
MD033: false
|
||||
59
CHANGELOG.md
59
CHANGELOG.md
|
|
@ -1,5 +1,64 @@
|
|||
# Changelog
|
||||
|
||||
## [15.13.0](https://github.com/LazyVim/LazyVim/compare/v15.12.2...v15.13.0) (2025-11-01)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **snacks:** `snacks.gh` integration. Enabled by default, unless the `util.octo` extra is enabled. ([5e981f9](https://github.com/LazyVim/LazyVim/commit/5e981f9a8cd75eb6f49756e188411037b82b8045))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **treesitter:** remove node requirement ([6b52a30](https://github.com/LazyVim/LazyVim/commit/6b52a3059e52eed062b6ff3f56e70cffcbf879fe))
|
||||
|
||||
## [15.12.2](https://github.com/LazyVim/LazyVim/compare/v15.12.1...v15.12.2) (2025-10-26)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **lsp.keymaps:** make cond -> enabled work again. Closes [#6697](https://github.com/LazyVim/LazyVim/issues/6697) ([1a40162](https://github.com/LazyVim/LazyVim/commit/1a401627146c66beaeb213f66dd02662f1006e82))
|
||||
|
||||
## [15.12.1](https://github.com/LazyVim/LazyVim/compare/v15.12.0...v15.12.1) (2025-10-26)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **fzf-lua:** LSP keymaps. Closes [#6698](https://github.com/LazyVim/LazyVim/issues/6698) ([b5ea1e9](https://github.com/LazyVim/LazyVim/commit/b5ea1e9d25202e38a47f0b03ac35cc587c80e6d7))
|
||||
* **navic:** navic attach. Closes [#6702](https://github.com/LazyVim/LazyVim/issues/6702) ([d2d0c64](https://github.com/LazyVim/LazyVim/commit/d2d0c641ed443f8d2ea9e131ec90df59ea149d0a))
|
||||
|
||||
## [15.12.0](https://github.com/LazyVim/LazyVim/compare/v15.11.0...v15.12.0) (2025-10-25)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **keymaps:** added `<localleader>r` to run the selection/file with lua ([acc3538](https://github.com/LazyVim/LazyVim/commit/acc35382294d91b279b319510b906249a03b2764))
|
||||
* **lsp:** lsp keymaps can now be configured with `lsp-config.opts.servers['*'].keys` like for lsp servers ([cd8c497](https://github.com/LazyVim/LazyVim/commit/cd8c4977a0a8e80750ed6a10992f988f811c6417))
|
||||
* **lsp:** refactor lsp code to use `Snacks.util.lsp.on` ([3964433](https://github.com/LazyVim/LazyVim/commit/39644330624139dddb857ed833987c1cfd8432cf))
|
||||
* **sidekick:** added NES toggle `<leader>uN`. Closes [#6692](https://github.com/LazyVim/LazyVim/issues/6692) ([84ca4df](https://github.com/LazyVim/LazyVim/commit/84ca4dffdbf175a5e7bc39904157700854d8b2ad))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **chezmoi:** use vim.env.HOME instead of os.getenv("HOME") for Windows compatibility ([231e476](https://github.com/LazyVim/LazyVim/commit/231e476ec9292b56258f86e28773843cddaf34b8))
|
||||
* **clipboard:** connecting via vscpde's remote-ssh extension causes severe lag during yank and copy operations. ([#6664](https://github.com/LazyVim/LazyVim/issues/6664)) ([5098a69](https://github.com/LazyVim/LazyVim/commit/5098a6987009199d5a5c4bfb8086d0fe4a94e0bb))
|
||||
* **lang.ember:** remove '.git' lang.ember ([#6685](https://github.com/LazyVim/LazyVim/issues/6685)) ([4796fb4](https://github.com/LazyVim/LazyVim/commit/4796fb4ac54744b69a45a6044655543b1c4231f0))
|
||||
* **root:** don't use fs_realpath on windows ([46e419d](https://github.com/LazyVim/LazyVim/commit/46e419d27efb5b7282a5ab17a49f4745ce23b55a))
|
||||
|
||||
## [15.11.0](https://github.com/LazyVim/LazyVim/compare/v15.10.1...v15.11.0) (2025-10-23)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **snacks_picker:** added gai/gao keymaps for calls incoming/outgoing ([b6e48a5](https://github.com/LazyVim/LazyVim/commit/b6e48a57fb4ad7a79f24646016926eef68ce3002))
|
||||
* **snacks.picker:** added `<leader>gD` to diff against merge base of branch/PR ([f0a91d9](https://github.com/LazyVim/LazyVim/commit/f0a91d9fa5f0cf27d6ba5fac759fa1d4e0df97a3))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **avante:** unset default keymaps ([#6657](https://github.com/LazyVim/LazyVim/issues/6657)) ([e8a1d8b](https://github.com/LazyVim/LazyVim/commit/e8a1d8b6286f82d75e5830de5ea93bd7622cec8c))
|
||||
* **extras:** remove custom formatter opts for dart/solidity. Closes [#6665](https://github.com/LazyVim/LazyVim/issues/6665) ([b38de4e](https://github.com/LazyVim/LazyVim/commit/b38de4e2fe4ad887cae1604fd9f1fbd230e0118f))
|
||||
|
||||
## [15.10.1](https://github.com/LazyVim/LazyVim/compare/v15.10.0...v15.10.1) (2025-10-20)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -29,3 +29,21 @@
|
|||
- Every language extra requires a `recommended` section as part of the extra.
|
||||
Check lspconfig server configurations for the proper filetypes and root directories.
|
||||
Refer to other extras for creating the `recommended` section.
|
||||
|
||||
### Language-Specific Keymaps
|
||||
|
||||
- Use `<localleader>` for language-specific keymaps (follows Vim/Neovim convention for filetype-specific mappings).
|
||||
- For LSP servers, define keymaps in the server's `keys` field, not in `on_attach`:
|
||||
```lua
|
||||
servers = {
|
||||
rust_analyzer = {
|
||||
keys = {
|
||||
{ "<localleader>e", function() vim.cmd.RustLsp("expandMacro") end, desc = "Expand Macro" },
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
- LazyVim's LSP system will automatically resolve and apply these keymaps (see `lua/lazyvim/plugins/lsp/keymaps.lua`).
|
||||
- Don't override standard LSP keymaps (like `K` for hover, `gd` for definition) unless absolutely necessary.
|
||||
- Use standard `<leader>c*` keymaps where they make sense (e.g., `<leader>co` for organize imports).
|
||||
- Refer to the R and Haskell extras for examples of proper `<localleader>` usage.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
*LazyVim.txt* For Neovim Last change: 2025 October 22
|
||||
*LazyVim.txt* LazyVim docs
|
||||
|
||||
==============================================================================
|
||||
Table of Contents *LazyVim-table-of-contents*
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ _G.LazyVim = require("lazyvim.util")
|
|||
---@class LazyVimConfig: LazyVimOptions
|
||||
local M = {}
|
||||
|
||||
M.version = "15.10.1" -- x-release-please-version
|
||||
M.version = "15.13.0" -- x-release-please-version
|
||||
LazyVim.config = M
|
||||
|
||||
---@class LazyVimOptions
|
||||
|
|
@ -34,7 +34,9 @@ local defaults = {
|
|||
dots = "",
|
||||
},
|
||||
ft = {
|
||||
octo = "",
|
||||
octo = " ",
|
||||
gh = " ",
|
||||
["markdown.gh"] = " ",
|
||||
},
|
||||
dap = {
|
||||
Stopped = { " ", "DiagnosticWarn", "DapStoppedLine" },
|
||||
|
|
|
|||
|
|
@ -200,3 +200,6 @@ map("n", "<leader><tab><tab>", "<cmd>tabnew<cr>", { desc = "New Tab" })
|
|||
map("n", "<leader><tab>]", "<cmd>tabnext<cr>", { desc = "Next Tab" })
|
||||
map("n", "<leader><tab>d", "<cmd>tabclose<cr>", { desc = "Close Tab" })
|
||||
map("n", "<leader><tab>[", "<cmd>tabprevious<cr>", { desc = "Previous Tab" })
|
||||
|
||||
-- lua
|
||||
map({"n", "x"}, "<localleader>r", function() Snacks.debug.run() end, { desc = "Run Lua", ft = "lua" })
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ local opt = vim.opt
|
|||
opt.autowrite = true -- Enable auto write
|
||||
-- only set clipboard if not in ssh, to make sure the OSC 52
|
||||
-- integration works automatically.
|
||||
opt.clipboard = vim.env.SSH_TTY and "" or "unnamedplus" -- Sync with system clipboard
|
||||
opt.clipboard = vim.env.SSH_CONNECTION and "" or "unnamedplus" -- Sync with system clipboard
|
||||
opt.completeopt = "menu,menuone,noselect"
|
||||
opt.conceallevel = 2 -- Hide * markup for bold and italic, but not markers with substitutions
|
||||
opt.confirm = true -- Confirm to save changes before exiting modified buffer
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ if lazyvim_docs then
|
|||
end
|
||||
|
||||
if LazyVim.has_extra("ai.copilot-native") then
|
||||
if not vim.lsp.inline_completion then
|
||||
if vim.fn.has("nvim-0.12") == 0 then
|
||||
LazyVim.error("You need Neovim >= 0.12 to use the `ai.copilot-native` extra.")
|
||||
return {}
|
||||
end
|
||||
|
|
|
|||
|
|
@ -85,9 +85,9 @@ return {
|
|||
copilot_cmp.setup(opts)
|
||||
-- attach cmp source whenever copilot attaches
|
||||
-- fixes lazy-loading issues with the copilot cmp source
|
||||
LazyVim.lsp.on_attach(function()
|
||||
Snacks.util.lsp.on({ name = "copilot" }, function()
|
||||
copilot_cmp._on_insert_enter({})
|
||||
end, "copilot")
|
||||
end)
|
||||
end,
|
||||
specs = {
|
||||
{
|
||||
|
|
|
|||
|
|
@ -65,6 +65,15 @@ return {
|
|||
return true
|
||||
end
|
||||
end
|
||||
Snacks.toggle({
|
||||
name = "Sidekick NES",
|
||||
get = function()
|
||||
return require("sidekick.nes").enabled
|
||||
end,
|
||||
set = function(state)
|
||||
require("sidekick.nes").enable(state)
|
||||
end,
|
||||
}):map("<leader>uN")
|
||||
end,
|
||||
-- stylua: ignore
|
||||
keys = {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,9 @@ return {
|
|||
desc = "Better Yank/Paste",
|
||||
event = "LazyFile",
|
||||
opts = {
|
||||
system_clipboard = {
|
||||
sync_with_ring = not vim.env.SSH_CONNECTION,
|
||||
},
|
||||
highlight = { timer = 150 },
|
||||
},
|
||||
keys = {
|
||||
|
|
|
|||
|
|
@ -289,15 +289,18 @@ return {
|
|||
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
opts = function()
|
||||
local Keys = require("lazyvim.plugins.lsp.keymaps").get()
|
||||
-- stylua: ignore
|
||||
vim.list_extend(Keys, {
|
||||
{ "gd", "<cmd>FzfLua lsp_definitions jump1=true ignore_current_line=true<cr>", desc = "Goto Definition", has = "definition" },
|
||||
{ "gr", "<cmd>FzfLua lsp_references jump1=true ignore_current_line=true<cr>", desc = "References", nowait = true },
|
||||
{ "gI", "<cmd>FzfLua lsp_implementations jump1=true ignore_current_line=true<cr>", desc = "Goto Implementation" },
|
||||
{ "gy", "<cmd>FzfLua lsp_typedefs jump1=true ignore_current_line=true<cr>", desc = "Goto T[y]pe Definition" },
|
||||
})
|
||||
end,
|
||||
opts = {
|
||||
servers = {
|
||||
-- stylua: ignore
|
||||
["*"] = {
|
||||
keys = {
|
||||
{ "gd", "<cmd>FzfLua lsp_definitions jump1=true ignore_current_line=true<cr>", desc = "Goto Definition", has = "definition" },
|
||||
{ "gr", "<cmd>FzfLua lsp_references jump1=true ignore_current_line=true<cr>", desc = "References", nowait = true },
|
||||
{ "gI", "<cmd>FzfLua lsp_implementations jump1=true ignore_current_line=true<cr>", desc = "Goto Implementation" },
|
||||
{ "gy", "<cmd>FzfLua lsp_typedefs jump1=true ignore_current_line=true<cr>", desc = "Goto T[y]pe Definition" },
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,19 +12,24 @@ return {
|
|||
-- LSP Keymaps
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
opts = function()
|
||||
local keys = require("lazyvim.plugins.lsp.keymaps").get()
|
||||
keys[#keys + 1] = {
|
||||
"<leader>cr",
|
||||
function()
|
||||
local inc_rename = require("inc_rename")
|
||||
return ":" .. inc_rename.config.cmd_name .. " " .. vim.fn.expand("<cword>")
|
||||
end,
|
||||
expr = true,
|
||||
desc = "Rename (inc-rename.nvim)",
|
||||
has = "rename",
|
||||
}
|
||||
end,
|
||||
opts = {
|
||||
servers = {
|
||||
["*"] = {
|
||||
keys = {
|
||||
{
|
||||
"<leader>cr",
|
||||
function()
|
||||
local inc_rename = require("inc_rename")
|
||||
return ":" .. inc_rename.config.cmd_name .. " " .. vim.fn.expand("<cword>")
|
||||
end,
|
||||
expr = true,
|
||||
desc = "Rename (inc-rename.nvim)",
|
||||
has = "rename",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
--- Noice integration
|
||||
|
|
|
|||
|
|
@ -7,13 +7,11 @@ return {
|
|||
lazy = true,
|
||||
init = function()
|
||||
vim.g.navic_silence = true
|
||||
LazyVim.lsp.on_attach(function(client, buffer)
|
||||
if client:supports_method("textDocument/documentSymbol") then
|
||||
require("nvim-navic").attach(client, buffer)
|
||||
end
|
||||
end)
|
||||
end,
|
||||
opts = function()
|
||||
Snacks.util.lsp.on({ method = "textDocument/documentSymbol" }, function(buffer, client)
|
||||
require("nvim-navic").attach(client, buffer)
|
||||
end)
|
||||
return {
|
||||
separator = " ",
|
||||
highlight = true,
|
||||
|
|
|
|||
|
|
@ -107,16 +107,23 @@ return {
|
|||
},
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
opts = function()
|
||||
local Keys = require("lazyvim.plugins.lsp.keymaps").get()
|
||||
-- stylua: ignore
|
||||
vim.list_extend(Keys, {
|
||||
{ "gd", function() Snacks.picker.lsp_definitions() end, desc = "Goto Definition", has = "definition" },
|
||||
{ "gr", function() Snacks.picker.lsp_references() end, nowait = true, desc = "References" },
|
||||
{ "gi", function() Snacks.picker.lsp_implementations() end, desc = "Goto Implementation" },
|
||||
{ "gy", function() Snacks.picker.lsp_type_definitions() end, desc = "Goto T[y]pe Definition" },
|
||||
})
|
||||
end,
|
||||
opts = {
|
||||
servers = {
|
||||
["*"] = {
|
||||
-- stylua: ignore
|
||||
keys = {
|
||||
{ "gd", function() Snacks.picker.lsp_definitions() end, desc = "Goto Definition", has = "definition" },
|
||||
{ "gr", function() Snacks.picker.lsp_references() end, nowait = true, desc = "References" },
|
||||
{ "gI", function() Snacks.picker.lsp_implementations() end, desc = "Goto Implementation" },
|
||||
{ "gy", function() Snacks.picker.lsp_type_definitions() end, desc = "Goto T[y]pe Definition" },
|
||||
{ "<leader>ss", function() Snacks.picker.lsp_symbols({ filter = LazyVim.config.kind_filter }) end, desc = "LSP Symbols", has = "documentSymbol" },
|
||||
{ "<leader>sS", function() Snacks.picker.lsp_workspace_symbols({ filter = LazyVim.config.kind_filter }) end, desc = "LSP Workspace Symbols", has = "workspace/symbols" },
|
||||
{ "gai", function() Snacks.picker.lsp_incoming_calls() end, desc = "C[a]lls Incoming", has = "callHierarchy/incomingCalls" },
|
||||
{ "gao", function() Snacks.picker.lsp_outgoing_calls() end, desc = "C[a]lls Outgoing", has = "callHierarchy/outgoingCalls" },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"folke/todo-comments.nvim",
|
||||
|
|
|
|||
|
|
@ -284,15 +284,18 @@ return {
|
|||
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
opts = function()
|
||||
local Keys = require("lazyvim.plugins.lsp.keymaps").get()
|
||||
-- stylua: ignore
|
||||
vim.list_extend(Keys, {
|
||||
{ "gd", function() require("telescope.builtin").lsp_definitions({ reuse_win = true }) end, desc = "Goto Definition", has = "definition" },
|
||||
{ "gr", "<cmd>Telescope lsp_references<cr>", desc = "References", nowait = true },
|
||||
{ "gI", function() require("telescope.builtin").lsp_implementations({ reuse_win = true }) end, desc = "Goto Implementation" },
|
||||
{ "gy", function() require("telescope.builtin").lsp_type_definitions({ reuse_win = true }) end, desc = "Goto T[y]pe Definition" },
|
||||
})
|
||||
end,
|
||||
opts = {
|
||||
servers = {
|
||||
["*"] = {
|
||||
-- stylua: ignore
|
||||
keys = {
|
||||
{ "gd", function() require("telescope.builtin").lsp_definitions({ reuse_win = true }) end, desc = "Goto Definition", has = "definition" },
|
||||
{ "gr", "<cmd>Telescope lsp_references<cr>", desc = "References", nowait = true },
|
||||
{ "gI", function() require("telescope.builtin").lsp_implementations({ reuse_win = true }) end, desc = "Goto Implementation" },
|
||||
{ "gy", function() require("telescope.builtin").lsp_type_definitions({ reuse_win = true }) end, desc = "Goto T[y]pe Definition" },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,10 +35,10 @@ return {
|
|||
},
|
||||
setup = {
|
||||
angularls = function()
|
||||
LazyVim.lsp.on_attach(function(client)
|
||||
Snacks.util.lsp.on({ name = "angularls" }, function(_, client)
|
||||
--HACK: disable angular renaming capability due to duplicate rename popping up
|
||||
client.server_capabilities.renameProvider = false
|
||||
end, "angularls")
|
||||
end)
|
||||
end,
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ return {
|
|||
recommended = function()
|
||||
return LazyVim.extras.wants({
|
||||
ft = { "handlebars", "typescript", "javascript", "typescript.glimmer", "javascript.glimmer" },
|
||||
root = { "ember-cli-build.js", ".git" },
|
||||
root = { "ember-cli-build.js" },
|
||||
})
|
||||
end,
|
||||
{
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ return {
|
|||
gopls = function(_, opts)
|
||||
-- workaround for gopls not supporting semanticTokensProvider
|
||||
-- https://github.com/golang/go/issues/54531#issuecomment-1464982242
|
||||
LazyVim.lsp.on_attach(function(client, _)
|
||||
Snacks.util.lsp.on({ name = "gopls" }, function(_, client)
|
||||
if not client.server_capabilities.semanticTokensProvider then
|
||||
local semantic = client.config.capabilities.textDocument.semanticTokens
|
||||
client.server_capabilities.semanticTokensProvider = {
|
||||
|
|
@ -67,7 +67,7 @@ return {
|
|||
range = true,
|
||||
}
|
||||
end
|
||||
end, "gopls")
|
||||
end)
|
||||
-- end workaround
|
||||
end,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -58,10 +58,10 @@ return {
|
|||
},
|
||||
setup = {
|
||||
[ruff] = function()
|
||||
LazyVim.lsp.on_attach(function(client, _)
|
||||
Snacks.util.lsp.on({ name = ruff }, function(_, client)
|
||||
-- Disable hover in favor of Pyright
|
||||
client.server_capabilities.hoverProvider = false
|
||||
end, ruff)
|
||||
end)
|
||||
end,
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@ return {
|
|||
resolve("vtsls")
|
||||
end
|
||||
|
||||
LazyVim.lsp.on_attach(function(client, buffer)
|
||||
Snacks.util.lsp.on({ name = "vtsls" }, function(buffer, client)
|
||||
client.commands["_typescript.moveToFileRefactoring"] = function(command, ctx)
|
||||
---@type string, string, lsp.Range
|
||||
local action, uri, range = unpack(command.arguments)
|
||||
|
|
@ -210,7 +210,7 @@ return {
|
|||
end)
|
||||
end)
|
||||
end
|
||||
end, "vtsls")
|
||||
end)
|
||||
-- copy typescript settings to javascript
|
||||
opts.settings.javascript =
|
||||
vim.tbl_deep_extend("force", {}, opts.settings.typescript, opts.settings.javascript or {})
|
||||
|
|
|
|||
|
|
@ -5,10 +5,15 @@ local pick_chezmoi = function()
|
|||
local fzf_lua = require("fzf-lua")
|
||||
local actions = {
|
||||
["enter"] = function(selected)
|
||||
fzf_lua.actions.vimcmd_entry("ChezmoiEdit", selected, { cwd = os.getenv("HOME") })
|
||||
fzf_lua.actions.vimcmd_entry("ChezmoiEdit", selected, { cwd = vim.env.HOME })
|
||||
end,
|
||||
}
|
||||
fzf_lua.files({ cmd = "chezmoi managed --include=files,symlinks", actions = actions, hidden = false })
|
||||
fzf_lua.files({
|
||||
cmd = "chezmoi managed --include=files,symlinks",
|
||||
actions = actions,
|
||||
cwd = vim.env.HOME,
|
||||
hidden = false,
|
||||
})
|
||||
elseif LazyVim.pick.picker.name == "snacks" then
|
||||
local results = require("chezmoi.commands").list({
|
||||
args = {
|
||||
|
|
@ -50,7 +55,7 @@ return {
|
|||
"alker0/chezmoi.vim",
|
||||
init = function()
|
||||
vim.g["chezmoi#use_tmp_buffer"] = 1
|
||||
vim.g["chezmoi#source_dir_path"] = os.getenv("HOME") .. "/.local/share/chezmoi"
|
||||
vim.g["chezmoi#source_dir_path"] = vim.env.HOME .. "/.local/share/chezmoi"
|
||||
end,
|
||||
},
|
||||
{
|
||||
|
|
@ -80,7 +85,7 @@ return {
|
|||
init = function()
|
||||
-- run chezmoi edit on file enter
|
||||
vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
|
||||
pattern = { os.getenv("HOME") .. "/.local/share/chezmoi/*" },
|
||||
pattern = { vim.env.HOME .. "/.local/share/chezmoi/*" },
|
||||
callback = function()
|
||||
vim.schedule(require("chezmoi.commands.__edit").watch)
|
||||
end,
|
||||
|
|
|
|||
|
|
@ -3,6 +3,16 @@ return {
|
|||
-- depends on the git extra for highlighting and auto-completion of github issues/prs
|
||||
{ import = "lazyvim.plugins.extras.lang.git" },
|
||||
|
||||
{
|
||||
"folke/snacks.nvim",
|
||||
keys = { -- disable conflicting keymaps
|
||||
{ "<leader>gi", false },
|
||||
{ "<leader>gI", false },
|
||||
{ "<leader>gp", false },
|
||||
{ "<leader>gP", false },
|
||||
},
|
||||
},
|
||||
|
||||
-- Octo
|
||||
{
|
||||
"pwntester/octo.nvim",
|
||||
|
|
|
|||
|
|
@ -7,14 +7,6 @@ if vim.fn.has("nvim-0.11.2") == 0 then
|
|||
vim.fn.getchar()
|
||||
vim.cmd([[quit]])
|
||||
return {}
|
||||
elseif not vim.lsp.is_enabled then
|
||||
vim.schedule(function()
|
||||
LazyVim.warn({
|
||||
"You're using an **old** `nightly` version of **Neovim**",
|
||||
"Please update to a recent `nightly`,",
|
||||
"or a stable version (`>= 0.11.2`).",
|
||||
})
|
||||
end)
|
||||
end
|
||||
|
||||
require("lazyvim.config").init()
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ return {
|
|||
"mason.nvim",
|
||||
{ "mason-org/mason-lspconfig.nvim", config = function() end },
|
||||
},
|
||||
opts_extend = { "servers.*.keys" },
|
||||
opts = function()
|
||||
---@class PluginLspOpts
|
||||
local ret = {
|
||||
|
|
@ -51,15 +52,6 @@ return {
|
|||
folds = {
|
||||
enabled = true,
|
||||
},
|
||||
-- add any global capabilities here
|
||||
capabilities = {
|
||||
workspace = {
|
||||
fileOperations = {
|
||||
didRename = true,
|
||||
willRename = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
-- options for vim.lsp.buf.format
|
||||
-- `bufnr` and `filter` is handled by the LazyVim formatter,
|
||||
-- but can be also overridden when specified
|
||||
|
|
@ -68,9 +60,47 @@ return {
|
|||
timeout_ms = nil,
|
||||
},
|
||||
-- LSP Server Settings
|
||||
---@alias lazyvim.lsp.Config vim.lsp.Config|{mason?:boolean, enabled?:boolean}
|
||||
-- Sets the default configuration for an LSP client (or all clients if the special name "*" is used).
|
||||
---@alias lazyvim.lsp.Config vim.lsp.Config|{mason?:boolean, enabled?:boolean, keys?:LazyKeysLspSpec[]}
|
||||
---@type table<string, lazyvim.lsp.Config|boolean>
|
||||
servers = {
|
||||
-- configuration for all lsp servers
|
||||
["*"] = {
|
||||
capabilities = {
|
||||
workspace = {
|
||||
fileOperations = {
|
||||
didRename = true,
|
||||
willRename = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
-- stylua: ignore
|
||||
keys = {
|
||||
{ "<leader>cl", function() Snacks.picker.lsp_config() end, desc = "Lsp Info" },
|
||||
{ "gd", vim.lsp.buf.definition, desc = "Goto Definition", has = "definition" },
|
||||
{ "gr", vim.lsp.buf.references, desc = "References", nowait = true },
|
||||
{ "gI", vim.lsp.buf.implementation, desc = "Goto Implementation" },
|
||||
{ "gy", vim.lsp.buf.type_definition, desc = "Goto T[y]pe Definition" },
|
||||
{ "gD", vim.lsp.buf.declaration, desc = "Goto Declaration" },
|
||||
{ "K", function() return vim.lsp.buf.hover() end, desc = "Hover" },
|
||||
{ "gK", function() return vim.lsp.buf.signature_help() end, desc = "Signature Help", has = "signatureHelp" },
|
||||
{ "<c-k>", function() return vim.lsp.buf.signature_help() end, mode = "i", desc = "Signature Help", has = "signatureHelp" },
|
||||
{ "<leader>ca", vim.lsp.buf.code_action, desc = "Code Action", mode = { "n", "x" }, has = "codeAction" },
|
||||
{ "<leader>cc", vim.lsp.codelens.run, desc = "Run Codelens", mode = { "n", "x" }, has = "codeLens" },
|
||||
{ "<leader>cC", vim.lsp.codelens.refresh, desc = "Refresh & Display Codelens", mode = { "n" }, has = "codeLens" },
|
||||
{ "<leader>cR", function() Snacks.rename.rename_file() end, desc = "Rename File", mode ={"n"}, has = { "workspace/didRenameFiles", "workspace/willRenameFiles" } },
|
||||
{ "<leader>cr", vim.lsp.buf.rename, desc = "Rename", has = "rename" },
|
||||
{ "<leader>cA", LazyVim.lsp.action.source, desc = "Source Action", has = "codeAction" },
|
||||
{ "]]", function() Snacks.words.jump(vim.v.count1) end, has = "documentHighlight",
|
||||
desc = "Next Reference", enabled = function() return Snacks.words.is_enabled() end },
|
||||
{ "[[", function() Snacks.words.jump(-vim.v.count1) end, has = "documentHighlight",
|
||||
desc = "Prev Reference", enabled = function() return Snacks.words.is_enabled() end },
|
||||
{ "<a-n>", function() Snacks.words.jump(vim.v.count1, true) end, has = "documentHighlight",
|
||||
desc = "Next Reference", enabled = function() return Snacks.words.is_enabled() end },
|
||||
{ "<a-p>", function() Snacks.words.jump(-vim.v.count1, true) end, has = "documentHighlight",
|
||||
desc = "Prev Reference", enabled = function() return Snacks.words.is_enabled() end },
|
||||
},
|
||||
},
|
||||
stylua = { enabled = false },
|
||||
lua_ls = {
|
||||
-- mason = false, -- set to false if you don't want this server to be installed with mason
|
||||
|
|
@ -125,16 +155,15 @@ return {
|
|||
LazyVim.format.register(LazyVim.lsp.formatter())
|
||||
|
||||
-- setup keymaps
|
||||
LazyVim.lsp.on_attach(function(client, buffer)
|
||||
require("lazyvim.plugins.lsp.keymaps").on_attach(client, buffer)
|
||||
end)
|
||||
|
||||
LazyVim.lsp.setup()
|
||||
LazyVim.lsp.on_dynamic_capability(require("lazyvim.plugins.lsp.keymaps").on_attach)
|
||||
for server, server_opts in pairs(opts.servers) do
|
||||
if type(server_opts) == "table" and server_opts.keys then
|
||||
require("lazyvim.plugins.lsp.keymaps").set({ name = server ~= "*" and server or nil }, server_opts.keys)
|
||||
end
|
||||
end
|
||||
|
||||
-- inlay hints
|
||||
if opts.inlay_hints.enabled then
|
||||
LazyVim.lsp.on_supports_method("textDocument/inlayHint", function(client, buffer)
|
||||
Snacks.util.lsp.on({ method = "textDocument/inlayHint" }, function(buffer)
|
||||
if
|
||||
vim.api.nvim_buf_is_valid(buffer)
|
||||
and vim.bo[buffer].buftype == ""
|
||||
|
|
@ -147,7 +176,7 @@ return {
|
|||
|
||||
-- folds
|
||||
if opts.folds.enabled then
|
||||
LazyVim.lsp.on_supports_method("textDocument/foldingRange", function(client, buffer)
|
||||
Snacks.util.lsp.on({ method = "textDocument/foldingRange" }, function()
|
||||
if LazyVim.set_default("foldmethod", "expr") then
|
||||
LazyVim.set_default("foldexpr", "v:lua.vim.lsp.foldexpr()")
|
||||
end
|
||||
|
|
@ -156,7 +185,7 @@ return {
|
|||
|
||||
-- code lens
|
||||
if opts.codelens.enabled and vim.lsp.codelens then
|
||||
LazyVim.lsp.on_supports_method("textDocument/codeLens", function(client, buffer)
|
||||
Snacks.util.lsp.on({ method = "textDocument/codeLens" }, function(buffer)
|
||||
vim.lsp.codelens.refresh()
|
||||
vim.api.nvim_create_autocmd({ "BufEnter", "CursorHold", "InsertLeave" }, {
|
||||
buffer = buffer,
|
||||
|
|
@ -180,7 +209,14 @@ return {
|
|||
vim.diagnostic.config(vim.deepcopy(opts.diagnostics))
|
||||
|
||||
if opts.capabilities then
|
||||
vim.lsp.config("*", { capabilities = opts.capabilities })
|
||||
LazyVim.deprecate("lsp-config.opts.capabilities", "Use lsp-config.opts.servers['*'].capabilities instead")
|
||||
opts.servers["*"] = vim.tbl_deep_extend("force", opts.servers["*"] or {}, {
|
||||
capabilities = opts.capabilities,
|
||||
})
|
||||
end
|
||||
|
||||
if opts.servers["*"] then
|
||||
vim.lsp.config("*", opts.servers["*"])
|
||||
end
|
||||
|
||||
-- get all the servers that are available through mason-lspconfig
|
||||
|
|
@ -192,6 +228,9 @@ return {
|
|||
|
||||
---@return boolean? exclude automatic setup
|
||||
local function configure(server)
|
||||
if server == "*" then
|
||||
return false
|
||||
end
|
||||
local sopts = opts.servers[server]
|
||||
sopts = sopts == true and {} or (not sopts) and { enabled = false } or sopts --[[@as lazyvim.lsp.Config]]
|
||||
|
||||
|
|
|
|||
|
|
@ -1,96 +1,65 @@
|
|||
local M = {}
|
||||
|
||||
---@type LazyKeysLspSpec[]|nil
|
||||
M._keys = nil
|
||||
M._keys = {}
|
||||
|
||||
---@alias LazyKeysLspSpec LazyKeysSpec|{has?:string|string[], cond?:fun():boolean}
|
||||
---@alias LazyKeysLsp LazyKeys|{has?:string|string[], cond?:fun():boolean}
|
||||
---
|
||||
---@alias LazyKeysLspSpec LazyKeysSpec|{has?:string|string[], enabled?:fun():boolean}
|
||||
---@alias LazyKeysLsp LazyKeys|{has?:string|string[], enabled?:fun():boolean}
|
||||
|
||||
---@deprecated
|
||||
---@return LazyKeysLspSpec[]
|
||||
function M.get()
|
||||
if M._keys then
|
||||
return M._keys
|
||||
end
|
||||
-- stylua: ignore
|
||||
M._keys = {
|
||||
{ "<leader>cl", function() Snacks.picker.lsp_config() end, desc = "Lsp Info" },
|
||||
{ "gd", vim.lsp.buf.definition, desc = "Goto Definition", has = "definition" },
|
||||
{ "gr", vim.lsp.buf.references, desc = "References", nowait = true },
|
||||
{ "gi", vim.lsp.buf.implementation, desc = "Goto Implementation" },
|
||||
{ "gy", vim.lsp.buf.type_definition, desc = "Goto T[y]pe Definition" },
|
||||
{ "gD", vim.lsp.buf.declaration, desc = "Goto Declaration" },
|
||||
{ "K", function() return vim.lsp.buf.hover() end, desc = "Hover" },
|
||||
{ "gK", function() return vim.lsp.buf.signature_help() end, desc = "Signature Help", has = "signatureHelp" },
|
||||
{ "<leader>ca", vim.lsp.buf.code_action, desc = "Code Action", mode = { "n", "v" }, has = "codeAction" },
|
||||
{ "<leader>cc", vim.lsp.codelens.run, desc = "Run Codelens", mode = { "n", "v" }, has = "codeLens" },
|
||||
{ "<leader>cC", vim.lsp.codelens.refresh, desc = "Refresh & Display Codelens", mode = { "n" }, has = "codeLens" },
|
||||
{ "<leader>cR", function() Snacks.rename.rename_file() end, desc = "Rename File", mode ={"n"}, has = { "workspace/didRenameFiles", "workspace/willRenameFiles" } },
|
||||
{ "<leader>cr", vim.lsp.buf.rename, desc = "Rename", has = "rename" },
|
||||
{ "<leader>cA", LazyVim.lsp.action.source, desc = "Source Action", has = "codeAction" },
|
||||
{ "]]", function() Snacks.words.jump(vim.v.count1) end, has = "documentHighlight",
|
||||
desc = "Next Reference", cond = function() return Snacks.words.is_enabled() end },
|
||||
{ "[[", function() Snacks.words.jump(-vim.v.count1) end, has = "documentHighlight",
|
||||
desc = "Prev Reference", cond = function() return Snacks.words.is_enabled() end },
|
||||
{ "<a-n>", function() Snacks.words.jump(vim.v.count1, true) end, has = "documentHighlight",
|
||||
desc = "Next Reference", cond = function() return Snacks.words.is_enabled() end },
|
||||
{ "<a-p>", function() Snacks.words.jump(-vim.v.count1, true) end, has = "documentHighlight",
|
||||
desc = "Prev Reference", cond = function() return Snacks.words.is_enabled() end },
|
||||
}
|
||||
|
||||
LazyVim.warn({
|
||||
'Adding LSP keymaps via `require("lazyvim.plugins.lsp.keymaps").get()` is deprecated.',
|
||||
"Please set keymaps via the `keys` field in the LSP server config.",
|
||||
[[
|
||||
```lua
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
opts = {
|
||||
servers = {
|
||||
['*'] = {
|
||||
keys = {
|
||||
{ "gd", "<cmd>lua vim.lsp.buf.definition()<CR>", has = "definition"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```]],
|
||||
}, { stacktrace = true })
|
||||
vim.schedule(function()
|
||||
if #M._keys > 0 then
|
||||
M.set({}, M._keys)
|
||||
M._keys = {}
|
||||
end
|
||||
end)
|
||||
return M._keys
|
||||
end
|
||||
|
||||
---@param method string|string[]
|
||||
function M.has(buffer, method)
|
||||
if type(method) == "table" then
|
||||
for _, m in ipairs(method) do
|
||||
if M.has(buffer, m) then
|
||||
return true
|
||||
---@param filter vim.lsp.get_clients.Filter
|
||||
---@param spec LazyKeysLspSpec[]
|
||||
function M.set(filter, spec)
|
||||
local Keys = require("lazy.core.handler.keys")
|
||||
for _, keys in pairs(Keys.resolve(spec)) do
|
||||
---@cast keys LazyKeysLsp
|
||||
local filters = {} ---@type vim.lsp.get_clients.Filter[]
|
||||
if keys.has then
|
||||
local methods = type(keys.has) == "string" and { keys.has } or keys.has --[[@as string[] ]]
|
||||
for _, method in ipairs(methods) do
|
||||
method = method:find("/") and method or ("textDocument/" .. method)
|
||||
filters[#filters + 1] = vim.tbl_extend("force", vim.deepcopy(filter), { method = method })
|
||||
end
|
||||
else
|
||||
filters[#filters + 1] = filter
|
||||
end
|
||||
return false
|
||||
end
|
||||
method = method:find("/") and method or "textDocument/" .. method
|
||||
local clients = vim.lsp.get_clients({ bufnr = buffer })
|
||||
for _, client in ipairs(clients) do
|
||||
if client:supports_method(method) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
---@return LazyKeysLsp[]
|
||||
function M.resolve(buffer)
|
||||
local Keys = require("lazy.core.handler.keys")
|
||||
if not Keys.resolve then
|
||||
return {}
|
||||
end
|
||||
local spec = vim.tbl_extend("force", {}, M.get())
|
||||
local opts = LazyVim.opts("nvim-lspconfig")
|
||||
local clients = vim.lsp.get_clients({ bufnr = buffer })
|
||||
for _, client in ipairs(clients) do
|
||||
local maps = opts.servers[client.name] and opts.servers[client.name].keys or {}
|
||||
vim.list_extend(spec, maps)
|
||||
end
|
||||
return Keys.resolve(spec)
|
||||
end
|
||||
|
||||
function M.on_attach(_, buffer)
|
||||
local Keys = require("lazy.core.handler.keys")
|
||||
local keymaps = M.resolve(buffer)
|
||||
|
||||
for _, keys in pairs(keymaps) do
|
||||
local has = not keys.has or M.has(buffer, keys.has)
|
||||
local cond = not (keys.cond == false or ((type(keys.cond) == "function") and not keys.cond()))
|
||||
|
||||
if has and cond then
|
||||
for _, f in ipairs(filters) do
|
||||
local opts = Keys.opts(keys)
|
||||
opts.cond = nil
|
||||
opts.has = nil
|
||||
opts.silent = opts.silent ~= false
|
||||
opts.buffer = buffer
|
||||
vim.keymap.set(keys.mode or "n", keys.lhs, keys.rhs, opts)
|
||||
---@cast opts snacks.keymap.set.Opts
|
||||
opts.lsp = f
|
||||
opts.enabled = keys.enabled
|
||||
Snacks.keymap.set(keys.mode or "n", keys.lhs, keys.rhs, opts)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -171,8 +171,14 @@ return {
|
|||
|
||||
for method, keymaps in pairs(moves) do
|
||||
for key, query in pairs(keymaps) do
|
||||
local desc = query:gsub("@", ""):gsub("%..*", "")
|
||||
desc = desc:sub(1, 1):upper() .. desc:sub(2)
|
||||
local queries = type(query) == "table" and query or { query }
|
||||
local parts = {}
|
||||
for _, q in ipairs(queries) do
|
||||
local part = q:gsub("@", ""):gsub("%..*", "")
|
||||
part = part:sub(1, 1):upper() .. part:sub(2)
|
||||
table.insert(parts, part)
|
||||
end
|
||||
local desc = table.concat(parts, " or ")
|
||||
desc = (key:sub(1, 1) == "[" and "Prev " or "Next ") .. desc
|
||||
desc = desc .. (key:sub(2, 2) == key:sub(2, 2):upper() and " End" or " Start")
|
||||
if not (vim.wo.diff and key:find("[cC]")) then
|
||||
|
|
|
|||
|
|
@ -23,8 +23,6 @@ return {
|
|||
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" },
|
||||
hide_slash = { "<C-/>", "hide", desc = "Hide Terminal", mode = { "t", "n" } },
|
||||
hide_underscore = { "<c-_>", "hide", desc = "which_key_ignore", mode = { "t", "n" } },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -6,6 +6,22 @@ M.moved = {
|
|||
rename_file = { "Snacks.rename.rename_file" },
|
||||
on_rename = { "Snacks.rename.on_rename_file" },
|
||||
words = { "Snacks.words" },
|
||||
on_supports_method = {
|
||||
"Snacks.util.lsp.on",
|
||||
fn = function(method, cb)
|
||||
return Snacks.util.lsp.on({ method = method }, function(buffer, client)
|
||||
cb(client, buffer)
|
||||
end)
|
||||
end,
|
||||
},
|
||||
on_attach = {
|
||||
"Snacks.util.lsp.on",
|
||||
fn = function(cb, name)
|
||||
return Snacks.util.lsp.on({ name = name }, function(buffer, client)
|
||||
cb(client, buffer)
|
||||
end)
|
||||
end,
|
||||
},
|
||||
},
|
||||
terminal = {
|
||||
open = { "Snacks.terminal" },
|
||||
|
|
|
|||
|
|
@ -221,7 +221,7 @@ function M.safe_keymap_set(mode, lhs, rhs, opts)
|
|||
---@diagnostic disable-next-line: no-unknown
|
||||
opts.remap = nil
|
||||
end
|
||||
vim.keymap.set(modes, lhs, rhs, opts)
|
||||
Snacks.keymap.set(modes, lhs, rhs, opts)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -1,103 +1,6 @@
|
|||
---@class lazyvim.util.lsp
|
||||
local M = {}
|
||||
|
||||
---@param on_attach fun(client:vim.lsp.Client, buffer)
|
||||
---@param name? string
|
||||
function M.on_attach(on_attach, name)
|
||||
return vim.api.nvim_create_autocmd("LspAttach", {
|
||||
callback = function(args)
|
||||
local buffer = args.buf ---@type number
|
||||
local client = vim.lsp.get_client_by_id(args.data.client_id)
|
||||
if client and (not name or client.name == name) then
|
||||
return on_attach(client, buffer)
|
||||
end
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
---@type table<string, table<vim.lsp.Client, table<number, boolean>>>
|
||||
M._supports_method = {}
|
||||
|
||||
function M.setup()
|
||||
local register_capability = vim.lsp.handlers["client/registerCapability"]
|
||||
vim.lsp.handlers["client/registerCapability"] = function(err, res, ctx)
|
||||
---@diagnostic disable-next-line: no-unknown
|
||||
local ret = register_capability(err, res, ctx)
|
||||
local client = vim.lsp.get_client_by_id(ctx.client_id)
|
||||
if client then
|
||||
for buffer in pairs(client.attached_buffers) do
|
||||
vim.api.nvim_exec_autocmds("User", {
|
||||
pattern = "LspDynamicCapability",
|
||||
data = { client_id = client.id, buffer = buffer },
|
||||
})
|
||||
end
|
||||
end
|
||||
return ret
|
||||
end
|
||||
M.on_attach(M._check_methods)
|
||||
M.on_dynamic_capability(M._check_methods)
|
||||
end
|
||||
|
||||
---@param client vim.lsp.Client
|
||||
function M._check_methods(client, buffer)
|
||||
-- don't trigger on invalid buffers
|
||||
if not vim.api.nvim_buf_is_valid(buffer) then
|
||||
return
|
||||
end
|
||||
-- don't trigger on non-listed buffers
|
||||
if not vim.bo[buffer].buflisted then
|
||||
return
|
||||
end
|
||||
-- don't trigger on nofile buffers
|
||||
if vim.bo[buffer].buftype == "nofile" then
|
||||
return
|
||||
end
|
||||
for method, clients in pairs(M._supports_method) do
|
||||
clients[client] = clients[client] or {}
|
||||
if not clients[client][buffer] then
|
||||
if client.supports_method and client:supports_method(method, buffer) then
|
||||
clients[client][buffer] = true
|
||||
vim.api.nvim_exec_autocmds("User", {
|
||||
pattern = "LspSupportsMethod",
|
||||
data = { client_id = client.id, buffer = buffer, method = method },
|
||||
})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---@param fn fun(client:vim.lsp.Client, buffer):boolean?
|
||||
---@param opts? {group?: integer}
|
||||
function M.on_dynamic_capability(fn, opts)
|
||||
return vim.api.nvim_create_autocmd("User", {
|
||||
pattern = "LspDynamicCapability",
|
||||
group = opts and opts.group or nil,
|
||||
callback = function(args)
|
||||
local client = vim.lsp.get_client_by_id(args.data.client_id)
|
||||
local buffer = args.data.buffer ---@type number
|
||||
if client then
|
||||
return fn(client, buffer)
|
||||
end
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
---@param method string
|
||||
---@param fn fun(client:vim.lsp.Client, buffer)
|
||||
function M.on_supports_method(method, fn)
|
||||
M._supports_method[method] = M._supports_method[method] or setmetatable({}, { __mode = "k" })
|
||||
return vim.api.nvim_create_autocmd("User", {
|
||||
pattern = "LspSupportsMethod",
|
||||
callback = function(args)
|
||||
local client = vim.lsp.get_client_by_id(args.data.client_id)
|
||||
local buffer = args.data.buffer ---@type number
|
||||
if client and method == args.data.method then
|
||||
return fn(client, buffer)
|
||||
end
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
---@param opts? LazyFormatter| {filter?: (string|vim.lsp.get_clients.Filter)}
|
||||
function M.formatter(opts)
|
||||
opts = opts or {}
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ function M.realpath(path)
|
|||
if path == "" or path == nil then
|
||||
return nil
|
||||
end
|
||||
path = vim.uv.fs_realpath(path) or path
|
||||
path = vim.fn.has("win32") == 0 and vim.uv.fs_realpath(path) or path
|
||||
return LazyVim.norm(path)
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ function M.setup(shell)
|
|||
|
||||
-- Setting shell command flags
|
||||
vim.o.shellcmdflag =
|
||||
"-NoLogo -NonInteractive -ExecutionPolicy RemoteSigned -Command [Console]::InputEncoding=[Console]::OutputEncoding=[System.Text.UTF8Encoding]::new();$PSDefaultParameterValues['Out-File:Encoding']='utf8';$PSStyle.OutputRendering='plaintext';Remove-Alias -Force -ErrorAction SilentlyContinue tee;"
|
||||
"-NoProfile -NoLogo -NonInteractive -ExecutionPolicy RemoteSigned -Command [Console]::InputEncoding=[Console]::OutputEncoding=[System.Text.UTF8Encoding]::new();$PSDefaultParameterValues['Out-File:Encoding']='utf8';$PSStyle.OutputRendering='plaintext';Remove-Alias -Force -ErrorAction SilentlyContinue tee;"
|
||||
|
||||
-- Setting shell redirection
|
||||
vim.o.shellredir = '2>&1 | %%{ "$_" } | Out-File %s; exit $LastExitCode'
|
||||
|
|
|
|||
|
|
@ -80,7 +80,6 @@ function M.check()
|
|||
["C compiler"] = have_cc,
|
||||
tar = have("tar"),
|
||||
curl = have("curl"),
|
||||
node = have("node"),
|
||||
}
|
||||
local ok = true
|
||||
for _, v in pairs(ret) do
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue