diff options
-rw-r--r-- | runtime/doc/lsp.txt | 15 | ||||
-rw-r--r-- | runtime/lua/vim/lsp.lua | 16 |
2 files changed, 25 insertions, 6 deletions
diff --git a/runtime/doc/lsp.txt b/runtime/doc/lsp.txt index f13a17cbef..16ea9c18a0 100644 --- a/runtime/doc/lsp.txt +++ b/runtime/doc/lsp.txt @@ -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, diff --git a/runtime/lua/vim/lsp.lua b/runtime/lua/vim/lsp.lua index 6c23c24220..bb4e1cd28f 100644 --- a/runtime/lua/vim/lsp.lua +++ b/runtime/lua/vim/lsp.lua @@ -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, |