Home Explore Blog CI



neovim

5th chunk of `runtime/doc/news-0.11.txt`
06fddc244ca28ff50f6223028949b847c282bba2d275545d0000000100000ffa
 edits) is now built-in.
• |vim.lsp.util.locations_to_items()| and |vim.lsp.util.symbols_to_items()| now
  sets `end_col` and `end_lnum` fields.
• |vim.lsp.buf.format()| now supports passing a list of ranges
  via the `range` parameter (this requires support for the
  `textDocument/rangesFormatting` request).
• |vim.lsp.buf.code_action()| actions show client name when there are multiple
  clients.
• |vim.lsp.buf.signature_help()| can now cycle through different signatures
  using `<C-s>` and also support multiple clients.
• The client now supports `'utf-8'` and `'utf-32'` position encodings.
• |vim.lsp.buf.hover()| now highlights hover ranges using the
  |hl-LspReferenceTarget| highlight group.
• Functions in |vim.lsp.Client| can now be called as methods.
• Implemented LSP folding: |vim.lsp.foldexpr()|
  https://microsoft.github.io/language-server-protocol/specification/#textDocument_foldingRange
• |vim.lsp.config()| has been added to define default configurations for
  servers. In addition, configurations can be specified in `lsp/<name>.lua`.
• |vim.lsp.enable()| has been added to enable servers.
• |vim.lsp.buf.code_action()| resolves the `command` property during the
  `codeAction/resolve` request.
• The `textDocument/completion` request now includes the completion context in
  its parameters.

LUA

• Command-line completions for: `vim.g`, `vim.t`, `vim.w`, `vim.b`, `vim.v`,
  `vim.o`, `vim.wo`, `vim.bo`, `vim.opt`, `vim.opt_local`, `vim.opt_global`,
  `vim.env` and `vim.fn`.
• Documentation for |lua-bit|.
• |gf| in Lua buffers can go to module in same repo, |runtime-search-path| and
  |package.path|.
• |vim.fs.rm()| can delete files and directories.
• |vim.validate()| now has a new signature which uses less tables,
  is more performant and easier to read.
• |vim.str_byteindex()| and |vim.str_utfindex()| gained overload signatures
  supporting two new parameters, `encoding` and `strict_indexing`.
• |vim.json.encode()| has an option to enable forward slash escaping
• |vim.fs.abspath()| converts paths to absolute paths.
• |vim.fs.relpath()| gets relative path compared to base path.
• |vim.fs.dir()| and |vim.fs.find()| can now follow symbolic links,
  the behavior can be turn on using the new `follow` option.
• |vim.hl.range()| now has a optional `timeout` field which allows for a timed
  highlight.
• |vim.text.indent()| indents/dedents text.

OPTIONS

• 'completeopt' flag "fuzzy" enables |fuzzy-matching| during |ins-completion|.
• 'completeopt' flag "preinsert" highlights text to be inserted.
• 'wildmode' flag "noselect" shows 'wildmenu' without selecting an entry.
• 'messagesopt' configures |:messages| and |hit-enter| prompt.
• 'tabclose' controls which tab page to focus when closing a tab page.
• 'eventignorewin' to persistently ignore events in a window.
• 'winborder' sets the default border for |floating-windows|.

PERFORMANCE

• Significantly reduced redraw time for long lines with treesitter
  highlighting.
• LSP diagnostics and inlay hints are de-duplicated (new requests cancel
  inflight requests). This greatly improves performance with slow LSP servers.
• 10x speedup for |vim.treesitter.foldexpr()| (when no parser exists for the
  buffer).
• Strong |treesitter-query| caching makes repeat  |vim.treesitter.query.get()|
  and |vim.treesitter.query.parse()| calls significantly faster for large
  queries.
• Treesitter highlighting is now asynchronous. To force synchronous parsing,
  use `vim.g._ts_force_sync_parsing = true`.
• Treesitter folding is now calculated asynchronously.
• |LanguageTree:parse()| now only runs the injection query on the provided
  range (as long as the language does not have a combined injection),
  significantly improving |treesitter-highlight| performance.
• Treesitter injection query iteration is now asynchronous, making edits in
  large buffers with combined injections much quicker.
• 10x reduction in blocking time when attaching an LSP to a large buffer.

PLUGINS

• EditorConfig
  • spelling_language

Title: Nvim 0.11: LSP, Lua, Options and Performance improvements
Summary
This section covers the improvements in LSP, Lua, Options and Performance in Nvim 0.11. LSP features include server enabling, code action resolution, and completion context. Lua features include command-line completions, documentation for lua-bit, gf for Lua buffers, and new functions such as vim.fs.rm(), vim.validate(), vim.str_byteindex() and vim.fs.abspath(). New options include 'completeopt', 'wildmode', 'messagesopt', 'tabclose', 'eventignorewin', and 'winborder'. Performance is enhanced by reducing redraw time, deduplicating LSP requests, treesitter query caching, asynchronous treesitter highlighting, faster folding calculation, and improved injection query iteration. EditorConfig is mentioned under Plugins.