Justin M. Keyes 68ea43cd0c NVIM v0.12.4
Following is a list of commits (fixes/features only) in this release.
See `:help news` in Nvim for release notes.

FEATURES
--------------------------------------------------------------------------------
- fec4045601 lsp: clean up semantic token initialization and debounce #40266
- 55205b3231 lsp: use LspNotify for semantic tokens (#40242)

PERFORMANCE
--------------------------------------------------------------------------------
- fded370b3e lsp: overscan semantic_token range requests #40036
- fa365cedad treesitter: reduce memory usage of _select.lua #40409

FIXES
--------------------------------------------------------------------------------
- e57c37d246 api: nvim_buf_set_text resets changelist to 0 #39965
- ea07b60fb1 api: preserve ArrayOf metadata #40429
- 5ff4e147d0 cmdline: avoid redraw loop after wrapped line #40240
- a0d7e80368 folds: foldcolumn is interrupted for virtual line above nested fold (#39999)
- a4cfded55e health: always set 'modifiable' #40584
- 7fd0f541e7 health: don't check node package via yarn #40572
- 749126de08 highlight: keep guisp underline color in float with 'winblend' #40283
- 5c38490806 lsp: allow specifying bufnr + client_id filter when enabling capabilities #37690
- c81ab6027d lsp: catch another nil buffer state #40285
- bf8d0bef16 lsp: fire LspNotify didChange autocmds after undo/redo #40404
- 41dbb828bd lsp: fix multiline semantic token processing (#40340)
- 3dd3a6ceab lsp: make LspNotify more robust (#40341)
- ecda67662f lsp: refresh codelens despite pending debounce #40177
- 822d96969b lsp: request semantic tokens in BufWinEnter #40513
- fd27246f67 lsp: skip invalid file watcher globs #40376 #40396
- dc6a9170eb lsp: trailing blank line when edit inserts past end of buffer (#40176)
- 93dd8053ee lsp: use LspNotify for document_color (#40575)
- dffacf5c9d man.lua: highlight codeblocks #40310
- 527c7c8c6b messages: "progress" kind for busy messages #39280
- 0b134d8b23 messages: message kind for :recover and swapfile attention #39444
- 304f8ed67a net: set buftype=nofile (again) (#39932)
- f533a17958 pack: do not assert non-nil `stderr` #40544
- 61765b97fe process: avoid inherited stdio for Windows jobs #40074
- ed7acd1391 startup: use `nvim.difftool` for `nvim -d` only for directories #40185
- 83d9b9afca statusline: prevent various buffer overflows with item groups #40219
- c1318ac348 test: support multiple --filter-out #39885
- 2b37c26477 treesitter: incremental selection causes beeps when the bell is enabled #40414
- abaf2a0e93 tui: more compatible way to reset cursor #40234
- 1f82ecf770 tui: patch reset-cursor-style seq regardless of terminfo #40249
- c58e5b73f1 xxd: buffer overread #40236
- 5c75abf790 xxd: signed left-shift overflow in -r mode #40246

VIM PATCHES
--------------------------------------------------------------------------------
- 1b9159a695 9.2.0718: :syn sync without an argument also lists syntax cluster (#40399)
- ad5720eab9 9.2.0735: [security]: arbitrary Ex command execution during C omni-completion (#40441)
- e41b309abe 9.2.0754: repeated completion length lookup in search_for_exact_line (#40511)
- 71343dad79 9.2.0756: Session with multiple tabpages sets 'winminheight' to 0 (#40512)

REFACTOR
--------------------------------------------------------------------------------
- d6476eda40 os: libuv_proc_stdio #40506
2026-07-05 14:05:57 +02:00
2026-04-22 23:01:00 +00:00
2026-07-05 14:05:57 +02:00
2026-03-20 23:30:09 +01:00
2025-12-30 01:44:52 -05:00
2026-01-05 16:34:51 -08:00
2026-03-13 12:29:44 +00:00
2026-05-07 12:03:02 +02:00
2026-07-05 14:05:57 +02:00
2025-01-11 10:34:12 +01:00
2026-04-22 23:01:00 +00:00
2026-04-19 12:36:19 +00:00
2026-03-11 18:00:18 +01:00
2026-03-11 18:00:18 +01:00
2026-04-17 00:58:50 +00:00

Neovim

Documentation | Chat

Coverity Scan analysis Packages Debian CI Downloads

Neovim is a project that seeks to aggressively refactor Vim in order to:

See the Introduction wiki page and Roadmap for more information.

Features

See :help nvim-features for the full list, and :help news for noteworthy changes in the latest version!

Install from package

Pre-built packages for Windows, macOS, and Linux are found on the Releases page.

Managed packages are in Homebrew, Debian, Ubuntu, Fedora, Arch Linux, Void Linux, Gentoo, and more!

Install from source

See BUILD.md and supported platforms for details.

The build is CMake-based, but a Makefile is provided as a convenience. After installing the dependencies, run the following command.

make CMAKE_BUILD_TYPE=RelWithDebInfo
sudo make install

To install to a non-default location:

make CMAKE_BUILD_TYPE=RelWithDebInfo CMAKE_INSTALL_PREFIX=/full/path/
make install

CMake hints for inspecting the build:

  • cmake --build build --target help lists all build targets.
  • build/CMakeCache.txt (or cmake -LAH build/) contains the resolved values of all CMake variables.
  • build/compile_commands.json shows the full compiler invocations for each translation unit.

Transitioning from Vim

See :help nvim-from-vim for instructions.

Project layout

├─ cmake/           CMake utils
├─ cmake.config/    CMake defines
├─ cmake.deps/      subproject to fetch and build dependencies (optional)
├─ runtime/         plugins and docs
├─ src/nvim/        application source code (see src/nvim/README.md)
│  ├─ api/          API subsystem
│  ├─ eval/         Vimscript subsystem
│  ├─ event/        event-loop subsystem
│  ├─ generators/   code generation (pre-compilation)
│  ├─ lib/          generic data structures
│  ├─ lua/          Lua subsystem
│  ├─ msgpack_rpc/  RPC subsystem
│  ├─ os/           low-level platform code
│  └─ tui/          built-in UI
└─ test/            tests (see test/README.md)

License

Neovim contributions since b17d96 are licensed under the Apache 2.0 license, except for contributions copied from Vim (identified by the vim-patch token). See LICENSE.txt for details.

Description
Vim-fork focused on extensibility and usability
Readme 450 MiB
Languages
Vim Script 39.9%
Lua 32.5%
C 26.7%
CMake 0.4%
Zig 0.2%
Other 0.1%