Neovim 0.8

Release notes

v0.8.0

Highlights

Tree-sitter and highlights

Highlight names now support @ and . in names, so you can prefix your plugin and segment your names by . and @.

highlight @boo.normal guifg=#000000 guibg=#ffffff
highlight link Normal @boo.normal

With Tree-sitter now setting these variables.

@tag
@text
@keyword
@function

See others with :hi @<Tab>

set cmdheight=0

New option, allows you to collapse your vim cmd line to 0 when not used. Considered experimental.

neovim/neovim #16251

cmdheight=0

See :help cmdheight.

set mouse enabled by default

The mouse is now enabled by default. Added a right-click context UI. Configure with set mouse. See :help mouse.

mouse=0

Options I landed on. Can temporarily disable the mouse by holding the shift button down.

vim.opt.mouse = "nv"

neovim/neovim #19290

set mousescroll

neovim/neovim #12355

Tree-sitter now supports spellchecking

Tree-sitter now supports better spell checking by only checking areas tagged as @spell and/or @comment through Tree-sitter. You can now enable spell in more places. See :help spell.

Lua require’s listed in –startuptime

nvim --startuptime startup.log now shows lua requires. Good luck on your startup journey.

013.494  000.009  000.009: require('vim.F')
013.553  002.464  002.455: require('vim.diagnostic')
014.156  000.595  000.595: require('plugins')
019.902  000.720  000.720: require('packer.util')
019.957  005.150  004.430: require('packer')
023.469  001.379  001.379: require('packer.log')
023.479  002.606  001.228: require('packer.async')
024.816  000.571  000.571: require('packer.result')
024.823  001.341  000.769: require('packer.jobs')
024.835  004.842  000.895: require('packer.plugin_utils')
025.618  000.764  000.764: require('packer.snapshot')
026.975  000.224  000.224: require('rockerboo.typescript')

More Tree-sitter injections

Injections allow other languages that can be injected (like inline CSS/JavaScript for HTML files). Or Lua inside Markdown files.

filetype.lua enabled by default

New filetype detection in Lua is now enabled by default.

#19216

vim.lsp.buf.format()

Much better integration than the raw vim.lsp.buf.formatting(). Now has support for filtering your clients due for formatting (like disabling tsserver formatting for example), and selectively working on certain buffers.

See :help vim.lsp.buf.format.

Bundled Lua, viml tree-sitter parsers into Neovim

Out of the box Lua and viml Tree-sitter should improve baseline support for internal languages.

Conclusion

Tree-sitter making a big step in integrating Lua and viml languages by default.

Finalizing filetype.lua to help streamline future improvements.

Mouse support by default allows some expected behavior in terms of scrolling and selecting text. Helps to smoothen the approach for those who are comfortable using a mouse to browse around.

Full release notes:

Note: Make sure you update your parsers if you are running the lastest version of nvim-treesitter. These queries as well as the new ones being bundled might need those to be updated with this new release. If you see nvim-treesitter/highlight bugs this would be recommended.

Related