neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 49d6cd1da86cab49c7a5a8c79e59d48d016975fa
parent c7ec010ade0832e43c7a319ea69fae642771479d
Author: Gregory Anders <greg@gpanders.com>
Date:   Mon,  2 Dec 2024 12:13:09 -0600

docs: provide example for configuring LSP foldexpr (#31411)

Using the "supports_method" function with a client capability inside of
an LspAttach autocommand is the preferred method to do this, so we
should be showing users how to do it.
Diffstat:
Mruntime/doc/lsp.txt | 13+++++++++++++
Mruntime/lua/vim/lsp.lua | 16++++++++++++++++
2 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/runtime/doc/lsp.txt b/runtime/doc/lsp.txt @@ -720,6 +720,19 @@ 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 + vim.api.nvim_create_autocommand('LspAttach', { + callback = function(args) + local client = vim.lsp.get_client_by_id(args.data.client_id) + if client:supports_method('textDocument/foldingRange') then + vim.wo.foldmethod = 'expr' + vim.wo.foldexpr = 'v:lua.vim.lsp.foldexpr()' + end + end, + }) +< + Parameters: ~ • {lnum} (`integer`) line number diff --git a/runtime/lua/vim/lsp.lua b/runtime/lua/vim/lsp.lua @@ -1097,6 +1097,22 @@ function lsp.tagfunc(pattern, flags) 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: +--- +--- ```lua +--- vim.api.nvim_create_autocommand('LspAttach', { +--- callback = function(args) +--- local client = vim.lsp.get_client_by_id(args.data.client_id) +--- if client:supports_method('textDocument/foldingRange') then +--- vim.wo.foldmethod = 'expr' +--- vim.wo.foldexpr = 'v:lua.vim.lsp.foldexpr()' +--- end +--- end, +--- }) +--- ``` +--- ---@param lnum integer line number function lsp.foldexpr(lnum) return vim.lsp._folding_range.foldexpr(lnum)