docs(lsp): simplify example of enabling LSP folding

This commit is contained in:
Yi Ming
2025-03-15 08:31:59 +08:00
committed by Christian Clason
parent f5714994bc
commit 1862d3210d
2 changed files with 25 additions and 6 deletions

View File

@ -882,14 +882,23 @@ foldexpr({lnum}) *vim.lsp.foldexpr()*
Provides an interface between the built-in client and a `foldexpr`
function.
To use, check for the "textDocument/foldingRange" capability in an
|LspAttach| autocommand. Example: >lua
To use, set 'foldmethod' to "expr" and set the value of 'foldexpr': >lua
vim.o.foldmethod = 'expr'
vim.o.foldexpr = 'v:lua.vim.lsp.foldexpr()'
<
Or use it only when supported by checking for the
"textDocument/foldingRange" capability in an |LspAttach| autocommand.
Example: >lua
vim.o.foldmethod = 'expr'
-- Default to treesitter folding
vim.o.foldexpr = 'v:lua.vim.treesitter.foldexpr()'
-- Prefer LSP folding if client supports it
vim.api.nvim_create_autocmd('LspAttach', {
callback = function(args)
local client = vim.lsp.get_client_by_id(args.data.client_id)
if client:supports_method('textDocument/foldingRange') then
local win = vim.api.nvim_get_current_win()
vim.wo[win][0].foldmethod = 'expr'
vim.wo[win][0].foldexpr = 'v:lua.vim.lsp.foldexpr()'
end
end,

View File

@ -1365,16 +1365,26 @@ end
--- Provides an interface between the built-in client and a `foldexpr` function.
---
--- To use, check for the "textDocument/foldingRange" capability in an
--- |LspAttach| autocommand. Example:
--- To use, set 'foldmethod' to "expr" and set the value of 'foldexpr':
---
--- ```lua
--- vim.o.foldmethod = 'expr'
--- vim.o.foldexpr = 'v:lua.vim.lsp.foldexpr()'
--- ```
---
--- Or use it only when supported by checking for the "textDocument/foldingRange"
--- capability in an |LspAttach| autocommand. Example:
---
--- ```lua
--- vim.o.foldmethod = 'expr'
--- -- Default to treesitter folding
--- vim.o.foldexpr = 'v:lua.vim.treesitter.foldexpr()'
--- -- Prefer LSP folding if client supports it
--- vim.api.nvim_create_autocmd('LspAttach', {
--- callback = function(args)
--- local client = vim.lsp.get_client_by_id(args.data.client_id)
--- if client:supports_method('textDocument/foldingRange') then
--- local win = vim.api.nvim_get_current_win()
--- vim.wo[win][0].foldmethod = 'expr'
--- vim.wo[win][0].foldexpr = 'v:lua.vim.lsp.foldexpr()'
--- end
--- end,