For notable changes, see runtime/doc/news.txt (or `:help news` in Nvim). Following is a list of fixes/features commits. BREAKING -------------------------------------------------------------------------------- -0f4f7d32ce
remove `nvim` and `provider` module for checkhealth -7dbbaaec3f
rename 'jumpoptions' flag "unload" to "clean" (#30418) -35c5e23107
store artifact shasums in a single shasum.txt file -188ec19894
turn off translations by default -328ea02eb7
use utf8proc full casefolding -737f58e232
api: rename Dictionary => Dict -a389dc2f95
clipboard: use OSC 52 as fallback clipboard provider (#31730) -ad70c9892d
column: rework 'statuscolumn' %r/l items -eb60cd74fb
deps: bump tree-sitter to HEAD, wasmtime to v29.0.1 (#32200) -a119aae4d3
diagnostic: filter diagnostics by severity before passing to handlers (#30070) -51ccd12b3d
diagnostic: make virtual text handler opt-in (#32079) -a9e725b26e
diagnostics: sort underline severity_sort (#30898) -e8b5dd1e89
lsp: `symbol_to_item` requires `offset_encoding` -8260e4860b
lsp: multiple client support for vim.lsp.buf.hover() -debabaf884
lsp: pass buffer number to root_dir function -9b357e30fd
lsp: remove client-server handlers from vim.lsp.handlers -3e3775961f
lsp: rename lsp.completion.trigger() to get() (#32911) -0083e03d6f
lsp: support multiple clients in goto methods (#30877) -dff684fdb3
lsp: support multiple clients in lsp.buf.references -970a27927e
lua: do not use typed table for empty dict -de48fbbd5f
messages: vim.ui_attach message callbacks are unsafe -a27419f3fc
options: disallow setting hidden options #28400 -b922b7d6d7
options: use OptVal for option defaults #26691 -4d9a1b9852
provider/python: add python 3.13, drop 3.7 and 3.8 (EOL) #33022 -318676ad13
release: remove backwards compatible releases -ad191be65e
signs: place higher-priority signs from the left #27781 -0dd933265f
terminal: cursor shape and blink (#31562) -35e5307af2
terminal: include cursor position in TermRequest event data (#31609) -3cf602486c
terminal: make 'belloff' and 'visualbell' apply to terminal bell (#30859) -041d98fe8d
treesitter: add default fallback to `ft_to_lang` lookups -6913c5e1d9
treesitter: default to correct behavior for quantified captures (#30193) -bd4ca22d03
treesitter: don't parse tree in get_parser() or start() -a0b52e7cb3
treesitter: enforce buffer is loaded when creating parser -99e0facf3a
treesitter: use return values in `language.add()` -bda63d5b97
typval: remove distinction of binary and nonbinary strings -48e2a73610
ui: emit prompt "messages" as cmdline events #31525 -ca5fca2912
windows: drop cat and tee executables from windows -be89d520d7
windows: only support UCRT, even for mingw FEATURES -------------------------------------------------------------------------------- -efa45832ea
add "jump" options to vim.diagnostic.config() (#29067) -0631492f9c
add vim.fs.relpath -f864b68c5b
allow gx to function for markdown links -f3632e14e3
get/set namespace properties #28728 -a664246171
remove deprecated features -ead5683ff9
api: add err field to nvim_echo() opts -aec4938a21
api: broadcast events to ALL channels #28487 -34d808b73c
api: combined highlights in nvim_eval_statusline() -19b25f3fea
api: deprecate nvim_buf_add_highlight() -5c92b40b4b
api: deprecate nvim_out/err_write(ln) -d84a95da7e
api: nvim_get_autocmds filter by id#31549 -25d8c3a5ad
api: nvim_open_win() relative to tabline and laststatus #32006 -e00d67ef31
checkhealth: group parsers by name and path in output -563051a53e
clipboard: support g:clipboard="osc52" #33021 -60ea046741
clipboard: try cygutils, clip on Windows #30215 -2c629ad13f
column: apply appropriate numhl highlight to virt_lines (#32400) -65c7033cbe
comment: allow commentstring to be determined from node metadata -268a3de0a7
complete: CompleteDone reason "cancel", "discard" #32600 -a616272f56
complete: specify reason for CompleteDone -f1748b78e3
default: bind `vim.lsp.buf.signature_help` in select mode (#31223) -ac207c3ac2
defaults: "Show Diagnostics" in mouse popupmenu #32122 -2c6b635872
defaults: add LSP default mappings (again) (#28650) -bb7604edda
defaults: add default unimpaired style mappings (#28525) -4662ad5643
defaults: completeopt=popup #32909 -e8e3b443f8
defaults: disable 'foldcolumn' in terminal buffers (#31480) -cc6992f1ca
defaults: dot-repeat [<Space> #31186 -6db830e40e
defaults: enable diffopt "linematch" #32346 -b31132f1c1
defaults: jump between :terminal shell prompts with ]]/[[ #32736 -0b7cc014fc
defaults: map gO to LSP document_symbol #30781 -26e765f905
defaults: map gri to vim.lsp.buf.implementation() (#30764) -76aa3e52be
defaults: popupmenu "Open in browser", "Go to definition" #30261 -09d76afe84
defaults: pretty :help headings #30544 -079e5f4f9b
defaults: unimpaired empty line below/above cursor #30984 -1c6d920052
defaults: use vim.diagnostic.jump() for default mappings (#29066) -c9c17fda80
deprecations: vim._defer_deprecated_module() -38a52caec0
diagnostic: add `current_line` option for `virtual_text` handler -8ba73f0e4c
diagnostic: add vim.diagnostic.jump() (#26745) -445ecca398
diagnostic: format() can filter diagnostics by returning nil #32302 -99e7323aa3
diagnostic: inherit parent 'path' option in open_float (#31273) -21961967ff
diagnostic: update quickfix list by title #31486 -7579af3c51
diagnostic: vim.diagnostic.setqflist improvements #30868 -1759b7844a
diagnostic: virtual_lines #31959 -fd65422b99
diff: do not try external when out of memory -0c296ab224
docs: "yxx" runs Lua/Vimscript code examples #31904 -6628741ada
docs: improve `@see` meta docstrings #30693 -23290e7676
editor: handle new multibyte sequences in normal mode replacement -cb6c0fda71
editorconfig: add support for spelling_language (#28638) -4817547ec4
ex_cmds: :sleep! hides the cursor while sleeping (#31493) -4f9260d06a
ext_messages: add hl_id to ext_messages chunks -4cced601c8
extmark: stack multiple highlight groups in `hl_group` -931ee5591f
extmarks: virtual text can be right-aligned, truncated #31921 -62d9fab9af
float: add winborder option (#31074) -9b8907d905
float: allow enabling mouse for non-focusable window (#30844) -511b991e66
fs.lua: add vim.fs.rm() -054a287dbe
ftplugin: change 'commentstring' to `// %s` for C/C++ (#29085) -f398e3a61a
ftplugin: set Lua 'omnifunc' to vim.lua_omnifunc #32491 -b61051ccb4
func: allow manual cache invalidation for _memoize -548f19ccc3
health: close checkhealth buffers with q #31870 -f2fa4ca97e
health: highlight headings #30525 -b12b91c274
health: show :checkhealth in floating window #31086 -6592873f77
help: use treesitter for table of contents -3e09fbdf82
highlight: add StatusLineTerm and StatusLineTermNC groups -295920845e
highlight: make `PmenuMatch` and `PmenuMatchSel` bold -5b1136a99c
inccommand: preview 'nomodifiable' buffers #32034 -61025c9e7a
install: mention standard paths, XDG vars in Windows installer #29101 -8ef41f5902
jobs: jobstart(…,{term=true}), deprecate termopen() #31343 -e7020306a1
jumplist: allow opting out of removing unloaded buffers (#29347) -8d55cc218c
keysets: teach Union and LuaRefOf -5931f780e0
log: use "ui" as default name for TUI client #30345 -e4c6e732fd
lsp: add select kind in showMessageRequest #32387 -f20335a54c
lsp: add support for completionItem.command resolving -3f1d09bc94
lsp: add vim.lsp.config and vim.lsp.enable -6072153796
lsp: announce codeLens resolveSupport (#29956) -1f5bcc7c4e
lsp: completion opts support custom item conversion (#30060) -ff097f2091
lsp: completion side effects -7a7747f1e4
lsp: deprecate execute_command with client:exec_cmd -454ae672aa
lsp: deprecate non-method client functions -54249d051c
lsp: deprecate vim.lsp.buf.completion -e56437cd48
lsp: deprecate vim.lsp.start_client #31341 -55e4301036
lsp: drop fswatch, use inotifywait (#29374) -dad55f5e76
lsp: export diagnostic conversion functions (#30064) -44229bb85b
lsp: highlight hover target/range #31110 -27f3750817
lsp: improve LSP doc hover rendering #30695 -6722149776
lsp: include `end_col` and `end_lnum` in `vim.lsp.buf.symbols_to_items` -20f22f75ee
lsp: include end_col, end_lnum in vim.lsp.buf.locations_to_items #29164 -4e90bc3023
lsp: lsp.completion support set deprecated (#29882) -6e68fed374
lsp: multi-client support for signature_help -629483e24e
lsp: require `offset_encoding` param #31249 -e00cd1ab40
lsp: return resolved config for vim.lsp.config[name] -130b5fd85f
lsp: return table from lsp/ files on runtimepath (#31663) -ce678043e3
lsp: show server name in code actions #30830 -07d5dc8938
lsp: show server version in `:checkhealth` #31611 -a1e313ded6
lsp: support `textDocument/foldingRange` (#31311) -3b0fe2659e
lsp: support completion context #32793 -41b07b128c
lsp: support for resolving code action command (#32704) -35247b00a4
lsp: support function for client root_dir (#31630) -45e76acaa0
lsp: support hostname in rpc.connect #30238 -b2bad0ac91
lsp: support postfix snippets in completion -d3e4ffafff
lsp: support utf-8 and utf-32 position encodings -5d26934c7c
lsp: update LSP healthcheck format (#28980) -ae2fd91b41
lsp: update LSP types -0df2c6b5d0
lsp: use fuzzy match on filterText instead of prefix match -e4c1f6667b
lsp: use the meta model to generate server capability map -5581a95534
lsp: vim.lsp.buf.format() supports textDocument/rangesFormatting #27323 -92e4e3fb76
lsp.util: fix type errors -ff1d7d4299
lsp.util: get_bufs_with_prefix -> get_writeable_bufs -cbc82011ce
lsp.util: improve offset_encoding type annotations -a18fa2f11c
lsp.util: minor codestyle -1944c0d610
lsp.util: refactor get_border_size() -f0973d4227
lsp.util: refactor symbols_to_items() -0e8568d72c
lsp.util: remove lsp spec extract -0621718e3b
lsp.util: remove metatable in locations_to_items -3f87e222f7
lsp.util: remove some aliases -e954a16063
lsp.util: remove some variables -5bec7288a5
lsp.util: remove uneeded do-end -8ad000ef7c
lsp.util: remove unneeded table -d44d36b8ff
lsp.util: simplify some bounds checking -0066dd0f65
lsp.util: use faster version of vim.validate -1edfe5c09e
lsp.util: use vim.api alias -97119a2369
lsp.util: use vim.w/b -cd53db2157
lua: add `context.env` (environment variables) to `vim._with()` -9afa1fd355
lua: add `vim._with` -5180707310
lua: add `vim.fs.abspath` -b34e137e43
lua: allow vim.on_key() callback to consume the key (#30939) -d5ae5c84e9
lua: completion for vim.fn, vim.v, vim.o #30472 -0a5a0efda6
lua: don't complete private (_) fields after dot (.) #32690 -07cc559cdf
lua: update `vim._with` to allow more granular option contexts -af0ef2ac9d
lua: vim.hl.range() "timeout" #32012 -be1fbe38b3
lua: vim.text.indent() -fdeb01cd77
main: expand file ~\ or ~/ prefix on Windows (#28515) -ea5b748f24
man.vim: "q" always closes window #30819 -f58e7d5fac
marks: add conceal_lines to nvim_buf_set_extmark() -51cf84daf9
marks: virtual lines support horizontal scrolling (#32497) -cfdf68a7ac
mbyte: support extended grapheme clusters including more emoji -124c655f56
messages: "g<" mapping for ext_messages -cb7b4e2962
messages: "verbose" message kind #31991 -5bae80899d
messages: add :!cmd shell message kinds -e16bec41b6
messages: confirm kind for z=, :tselect, inputlist() #32521 -21151144c6
meta: add type for quickfix entries -82a215cb2d
options: add 'eventignorewin' (#32152) -d831392b15
paste: unify cancel and error behavior (#30476) -08c328b8b0
runtime: Lua ftplugin 'includeexpr' #32719 -f5714994bc
runtime: Lua ftplugin sets 'omnifunc', 'foldexpr' #32697 -e6cfcaed18
snippet: add default keymaps during snippet session -123f8d229e
snippet: set snippet keymaps permanent instead of dynamic (#31887) -96128a5076
startup: validate --listen address -230b0c7f02
stdlib: overload vim.str_byteindex, vim.str_utfindex #30735 -517ecb85f5
stdlib: vim.json.encode(...,{escape_slash:boolean}) #30561 -8df6736ca1
term: enable reflow by default (#21124) -4199671047
term: support OSC 8 hyperlinks in :terminal (#30050) -93480f7fba
term: trigger TermRequest for APC (#32407) -3ad977f01d
terminal: add support for copying with OSC 52 in embedded terminal (#29117) -6f0bde11cc
terminal: add support for kitty keyboard protocol -06a1f82f1c
terminal: forward X1 and X2 mouse events -e3bfcf2fd4
terminal: support grapheme clusters, including emoji -f1c45fc7a4
terminal: support theme update notifications (DEC mode 2031) (#31999) -56d11b494b
terminal: disable 'number', 'relativenumber', and 'signcolumn' in terminal buffers (#31443) -34cd94812d
test: support and document lua test case debugging -b8c75a31e6
treesitter: #trim! can trim all whitespace -ec8922978e
treesitter: add more metadata to `language.inspect()` (#32657) -bd3b6ec836
treesitter: add node_for_range function -688b961d13
treesitter: add support for wasm parsers -8543aa406c
treesitter: allow LanguageTree:is_valid() to accept a range -44ccd9ca24
treesitter: allow `iter_captures` to accept `opts` -8b5a0a00c8
treesitter: allow disabling captures and patterns on TSQuery (#32790) -1af55bfcf2
treesitter: allow get_node to return anonymous nodes -a94a2927d0
treesitter: allow passing lang to InspectTree -45e606b1fd
treesitter: async parsing -3dfb9e6f60
treesitter: include capture id in return value of `get_captures_at_pos()` #30559 -267c7525f7
treesitter: introduce child_with_descendant() -09f9f0a946
treesitter: show which nodes are missing in InspectTree -b9b408a56c
treesitter: start moving get_parser to return nil #30313 -da0ae95349
treesitter: support modelines in `query.set()` (#30257) -2e5b560482
treesitter: table of contents for checkhealth, markdown (#32282) -8ba047e33f
treesitter: vertical conceal support for highlighter -ff85e54939
tui: builtin UI (TUI) sets client info #30397 -4fb3b57a19
tui: handle kitty key events in libtermkey (#31727) -f93ecd2760
tui: parse CSI subparams in termkey (#29805) -44dbfcfba4
tui: recognize X1 and X2 mouse events -e41368f3bc
tui: support in-band resize events (#29791) -d460928263
tui: update 'background' on theme change events (#31350) -45e319ade6
tutor: give hints to satisfy the line checker #30952 -4b0e2605ea
ui: UI :detach command -394f69a25d
ui: additional arguments for cmdline_show/hide events -a0e3fe5741
ui: cascading style inheritance for Pmenu* highlights #29980 -f85bc41c80
ui: don't show unfocusable windows in :tabs, 'tabline' #27984 -9762c5e340
ui: gx: use url extmark attribute and tree-sitter directive (#30192) -43d552c566
ui: more intuitive :substitute confirm prompt #31787 -433b342baa
ui: sign/statuscolumn can combine highlight attrs #31575 -a10636fbe7
ui: specify whether msg_show event is added to history -e049c6e4c0
ui: statusline text inherits highlights #29976 -611ef35491
vim.fs: find(), dir() can "follow" symlinks #31551 -3f15e57b26
vim.ui: configurable "gx" / vim.ui.open() tool -f4b620c4e6
vim.ui.open: support lemonade #30845 -3572319b4c
vim.validate: improve fast form and deprecate spec form -cb84cd5d9f
win32: embed executable icon FIXES -------------------------------------------------------------------------------- -200e7ad157
apply the change on more files -6720bd440f
assert failure in VimL expression parser -d123202ae6
change deprecation presentation -ded15ca8c2
completion.enable(false,...) deletes invalid augroup #32121 -7737f89206
deps build for ARM64 MSVC -50749f8df8
extend the life of vim.tbl_flatten to 0.13 -25abcd243e
fix broken wasmtime build -b6ab294838
fix incorrect search code -46b69aaf14
include nvim/ascii_defs.h -01b4da65c2
merge all provider healthchecks into a single health.lua -5c245ec3e9
remove vim.lsp._with_extend -98ba65b8be
replace NVIM with Nvim in default titlestring (#30348) -6aa42e8f92
resolve all remaining LuaLS diagnostics -e71713ba2b
show swapfile warning as a warning (#28971) -0418107074
update osc52 termfeatures flag on UIEnter/UILeave (#32756) -0829e7575d
warn when :InspectTree on buffer with no parser #32783 -47f2769b46
Man: completion on Mac -89f9f168a5
api: alloc and draw cursor window in nvim__redraw -743c5808b6
api: allow `scope = 'local'` with `buf` when using `nvim_get_option_value` -487c48ec86
api: clamp range lines in `nvim__redraw()` (#31710) -141114c170
api: crash on invalid buffer to nvim_buf_del_user_command (#31908) -716adbcc45
api: deprecate nvim_subscribe, nvim_unsubscribe #30456 -1e47aa677a
api: deprecated API nvim_get_option does not validate option name #31919 -095c0876c2
api: don't override Vimscript SID (#32610) -bff07f6dd0
api: don't try to get/set option for invalid option name (#31302) -0e59f6f4c7
api: don't use 'winborder' when reconfiguring float (#32984) -cce1eb0806
api: error properly with invalid field in nvim_open_win (#30078) -63bbb7c109
api: fix 'winborder' preventing splits with nvim_open_win (#32981) -f55213ce0e
api: fix crash/leak with float title/footer on error (#30543) -022449b522
api: generic error messages, not using TRY_WRAP #31596 -8de1dc6923
api: make `nvim_set_hl()` respect all `cterm` attributes (#31390) -ad60b3fb48
api: memory leaks in vim.api.nvim_*get_option #32390 -167a2383b9
api: not using TRY_WRAP, generic error messages #31595 -bf48dfadec
api: nvim__complete_set requires completeopt=popup #31177 -d1d7d54680
api: nvim_buf_get_text() crashes with large negative column #28740 -6ea45031d5
api: nvim_echo free text memory with invalid highlight (#31243) -e2ad251c8d
api: nvim_get_option_value does not clean up on FileType error #31219 -5b9518b436
api: nvim_set_decoration_provider callback return type #31912 -01a97d2ad7
api: nvim_win_set_buf(0, 0) fails if 'winfixbuf' is set #31576 -40347f6e27
api: only flush nvim__redraw when necessary #31250 -36f44b3121
api: remove invalid assertions -235cb5bc5f
api: update "range" windows in nvim__redraw #31042 -9c718bc2bc
api: validation, documentation of hl_group #31195 -289c9d21cb
autocmds: once=true Lua event-handler may call itself #29544 -ffaab09e99
build: <termios.h> is system-dependent #31705 -486076a0e1
build: remove USE_FNAME_CASE, redundant with CASE_INSENSITIVE_FILENAME -217e26cb64
build: surpress spurious warnings from gcc in -E preprocessor mode -34a2bfdcc5
build: vimdoc tags are not validated #32801 -8070988247
channel: handle writing to file instead of pipe (#30519) -c49162be59
channel: log after (not before) channel-close -965dc81f81
checkhealth: disable 'listchars' #31245 -4c9f3689a1
checkhealth: failed if 'lua' in plugin name -f5dd30948e
checkhealth: handle nested lua/ directory #32918 -c48cf18752
checkhealth: module not found when `&rtp` has nested paths #32988 -2495e7e22a
clipboard: tmux clipboard depends on $TMUX #31268 -847c28f6f6
cmdline: always show cmdline when it is a prompt #31866 -af4231d407
cmdline: cmdline completion of _defer_require() modules #33007 -a70ad5cdb6
cmdline: ext_cmdline block events for conditionals -bbf36ef8ef
cmdline: prevent cmdline_show events after exiting cmdline #32033 -092042b43d
cmdline: simplify and correct grapheme cluster adjustment -86ae59c612
colorscheme: distinguish CursorLine/Folded/StatusLineNC highlights #32256 -9b9f54e2c1
colorscheme: underline StatusLineNC with 'notermguicolors' #28810 -8bc28978b6
column: apply custom highlight to last 'statuscolumn' segment (#32182) -3cb1e825e6
column: check if signcolumn changed in all windows #31439 -1dcda86559
column: clamp line number for legacy signs -f2083bd55c
column: crash with 'signcolumn' set to "number" (#29003) -f9a49fab0c
column: modifying a sign should update placed signs (#29750) -d5f6f61879
column: set signcolumn width after splitting window (#30556) -063b69bab4
column: unnecessary redraws with resized 'statuscolumn' (#32944) -0a2218f965
comment: fall back to using trimmed comment markers (#28938) -e788d1a3a9
completion: avoid deleting text when completion leader changes #31448 -bfa365a872
completion: don't include <Lua function> in -complete= (#30209) -55dc482e75
completion: fix inconsistent Enter behavior (#30196) -83a7d97d64
coverity: CID 509571 Uninitialized variables #30395 -e1c2179dd9
coverity: INTEGER_OVERFLOW #31657 -f9eb68f340
coverity: error handling CHECKED_RETURN #31618 -069451bb21
coverity: size_t overflow #30497 -ff7832ad3f
coverity/497355: shada_read_when_writing out of bounds read #30665 -c49030b75a
coverity/497375: f_strpart cast overflow (#30773) -0fe4362e21
coverity/509227/509228: tui driver_ti underflow #30341 -60e1862ccb
coverity/510275: linematch out of bounds access (#30687) -a2008118a0
coverity/510436: shada_read_when_writing index out of bounds (#30686) -71507281fb
coverity/530826: validate_opt_idx unchecked negative idx (#32081) -5af9c065ad
decor: don't draw invalidated virtual lines (#29858) -a8fbe1d409
decor: don't use separate DecorSignHighlight for url (#30096) -34ded4d97b
decor: exclude invalid marks from meta total -87610d82db
decor: set invalid flag for end of invalidated paired marks -33ff546b50
decoration: fix crash when on_lines decor provider modifies marktree -0e299ebf75
decorator: noisy errors from decoration provider #31418 -f2173b1aa2
defaults: cannot remove "How-to disable mouse" menu item #30375 -61aabe0730
defaults: default @/Q broken when 'ignorecase' is set (#29343) -8323398bc6
defaults: don't replace keycodes in Visual search mappings (#31460) -f6f2334ac2
defaults: error messages UX for unimpaired mappings #30884 -59a171fd99
defaults: improve visual search mappings #32378 -01739d4673
defaults: missing ]Q/[Q unimpaired mappings #30943 -c644228e1d
defaults: omit empty line from unimpaired mapping messages (#31347) -ff93cccbc1
defaults: omit extraneous info from unimpaired mapping errors (#30983) -4075e613b2
defaults: properly pass count to quickfix commands (#30632) -289380bc40
defaults: use "range" instead of "count" for some mappings (#30642) -573fcb8b66
deps: revert accidental test commits (#30864) -de794f2d24
diagnostic: broken variable reference #31557 -c78728a384
diagnostic: clear autocmd only for valid buf (#32861) -f1fcf653cb
diagnostic: clear virtual_lines autocmd only for valid buf #32979 -921dc22fc0
diagnostic: correct `severity` type on `setqflist`, `setloclist` (#30506) -0e8e4a07f5
diagnostic: don't include diagnostic code when using custom formatter #32464 -d918ebe3b8
diagnostic: fix backwards compatibility for goto_next and goto_prev (#29593) -f69937fdbd
diagnostic: fix float scope filtering (#29134) -5bc948c050
diagnostic: improve current_line refresh logic #32275 -4b3be56a03
diagnostic: make docs agree with code (#29561) -fd902b1cb2
diagnostic: only store quickfix id when creating a new one #31466 -3b1d0e7f70
diagnostic: remove deprecated `severity_limit` option -5eda7aafe9
diagnostic: setqflist() is stuck after vim.lsp.buf.document_symbol #31553 -9a43ec13e6
diagnostic: show backtrace for deprecation warnings -4cbeb6fa3c
diagnostic: silence :chistory #31701 -6c975515c5
diagnostic: vim.diagnostic.setqflist() opens loclist on first call #31585 -17c25a66fc
diagnostic: virtual lines should scroll horizontally -fb842dfc22
diagnostic: virtual_lines diagnostic columns (#32703) -e5e81262af
diagnostics: don't apply extmarks to invalid lines #29321 -c65646c247
diff: use mmfile_t in linematch -81ea44fa6a
display: adjust winline info for concealed lines below last line (#32708) -f25dd7a8d5
display: correctly store winline info for concealed lines (#32656) -a901fb875f
docs: add missing properties to hl_info #30032 -cc26cf0400
docs: do not treat indexes as `short_link` -056009f741
docs: markdown instead of vimdoc in meta docstrings #30680 -8801b77ed0
docs: missing `@returns` desc in _meta/api.lua #30673 -09bcb31068
docs: replace `yxx` mappings with `g==` #31947 -efe92f9dff
docs: update context type in `vim.lsp.LocationOpts.OnList` -b8135a76b7
docs: wrong return value annotation for `nvim_buf_get_extmarks` -376de1483e
drawline: correct highlight priority with Visual selection (#30706) -9a0239fdc8
drawline: don't draw beyond end of window (#29035) -b1c439cef6
drawline: don't draw beyond end of window with 'rnu' (#29406) -34344b939c
editor: avoid scrolling :substitute confirm message #32149 -9e7b0bcf51
editorconfig: fix indent style for `local.mk` (#31342) -b0a1d35f69
eval: don't shorten $HOME in v:stacktrace (#32634) -2a3561819e
eval: handle wrong v:lua in expr option properly (#29953) -4317d36669
event-loop: process input before events in getchar() (#32322) -f05a6666cf
events: always allow some events to be nested (#32706) -e9f4ceeb74
events: don't expand `args.file` for Lua callback (#31473) -1f49a59b8b
events: fix incorrect capitalization of Cmdwin* events (#32813) -8c2d45be77
exit: close memfiles after processing events (#30872) -c7ec010ade
extmark: builtin completion can still affect nearby extmarks #31387 -93278e7720
extmark: clearer error message for invalid ephemeral mark usage -43a2019f09
extmarks: issues with revalidating marks #28961 -84ad95fdc9
fileio: copy to correct buffer position when reading -93347a67bf
filetype: fix :filetype detect error with -u NONE (#29991) -aa9f21ee95
filetype: fix typos in filetype detection -032e024f8a
filetype: handle .in files with no filename (#30487) -1077843b9b
filetype: make filetype detection work with :doautocmd (#31470) -21cbd90007
filetype: normalize full path before matching #32227 -5a8a34dafa
filetype: source ftdetect/* after creating scripts.vim autocmds (#29445) -cff5fa49fc
float: "Not enough room" error for 1-line float #25192 -07c5f41da3
float: can set title/footer without setting border #32594 -be01b361d8
float: cannot set title/footer independently #31993 -ff1791c9e5
float: close preview float window when no selected #29745 -d2cca606a1
float: ensure floating window width can fit title -8ddcf9d939
float: handle error in win_float_create() (#29742) -8b2b1fba2a
float: missing default highlight for title -df915f3afc
float: properly find last window of tabpage (#30571) -17383870dd
float: re-sort layers when grid zindex changed #30259 -206f8f24a2
fs: make vim.fs.root work for relative paths and unnamed buffers (#28964) -2c160f39d3
ftplugin/man.vim: hide signcolumn (auto) -214ce8d33c
gen_help_html: first tag in h2 is broken #30720 -ceea6898a8
gen_help_html: handle delimiter, heading #29415 -6c3f7e7e27
gen_vimdoc: correctly generate function fields -913e81c35f
getchar: do not simplify keycodes in terminal mode -b109b1abce
glob: avoid `subcapture nesting too deep` error (#29520) -4bd86120d4
glob: handle overlapping `{}` condition elements #29236 -b47b0b3f75
grid: double grid_line_start() with ext_messages #31292 -fe87656f29
grid: grid_line_start NULL access with 'redrawdebug' -a9c89bcbf6
gx: allow `@` in url -570a8da01b
health: "q" should not close last window #31876 -2e3f1069f4
health: better layout of vim.treesitter health check -10f9173519
health: broken ruby detect #28804 -84e85aeb10
health: check more "old" files #30421 -5b778a64ec
health: fix fetching url with python in provider health (#29594) -b4b4cf46a7
health: fix pyenv root and python exepath detect issue -237d2aef4d
health: return correct name from 'path2name()' -5e90406487
health: set nomodifiable in checkhealth buffers -9177371014
help: remove runnable code virtual text -ff75f345ab
highlight: 'winhl' shouldn't take priority over API (#31288) -458473acb8
highlight: add `StatusLineTerm`/`StatusLineTermNC` to `:color vim` (#29313) -6bcefad5a6
highlight: fix the seg fault caused by the invalid linked hl ids -8e81212e15
highlight: floating windows inherit NormalFloat from global-ns -6719276040
highlight: make TablineSel more noticeable with 'notermguicolors' #31905 -b67fcd0488
highlight: make `TablineSel` more noticeable #31896 -862679c70f
highlight: update `PmenuSel` for colored completion items #30183 -59e130b6ca
inccommand: ensure cursor is where it belongs -16f63b964f
input: handle vim.on_key() properly with ALT and K_SPECIAL (#29677) -b52ffd0a59
inspect: always show priority -9c278af7cc
inspect: show priority for treesitter highlights -22fd52325b
inspector: update semantic token namespace (#32157) -efe1732c6f
jobs: do not block UI when jobwait() doesn't block (#31803) -574ea6a191
keycodes: recognize <Find>, <Select> #28431 -67bb0cfa79
loader: follow the style of the error message for built-in loaders -44740e561f
log: RPC log format #32337 -851137f679
log: log unset $TMPDIR at "debug" level #32137 -c908c2560d
log: unify error messages for vim.ui_attach/decor providers #33005 -a6f219b06b
log: unintuitive message for undefined $TMPDIR -2e6d295f79
lsp: account for changedtick version gap on modified reset (#29170) -fac96b72a5
lsp: add foldingrange method support check #31463 -8263ed4670
lsp: add textDocument/documentLink to capability map (#28838) -a41b6fd173
lsp: autocmds to close lsp preview windows not cleared -b42dc232c5
lsp: autotrigger should only trigger on client's triggerCharacters (#32266) -7031949be0
lsp: avoid reusing diagnostics from different servers in actions (#30002) -fc9b70826e
lsp: avoid vim.keymap.del error when stopping a client (#29478) -39d79efa1e
lsp: better multi-client support for callHierarchy -bdfba8598b
lsp: cancel pending requests before refreshing -f9bf64d746
lsp: check buffer is loaded and valid #30330 -c2bf09ddff
lsp: check for configuration workspace folders when reusing clients -81b372fecd
lsp: check for nil response from server (#29196) -a9cdf76e3a
lsp: check for valid buf before processing semantic tokens response -230bc34ca5
lsp: check if buffer is valid before LspDetach autocmd (#29162) -af200c10cf
lsp: check if buffer was detached in on_init callback (#28914) -02097e43c8
lsp: check if sig_help window is focusable when configuring cycle keymap -025c874415
lsp: clear lsp client diagnostics (#29050) -c374f26430
lsp: clear word when expand multi-lines word (#32393) -adf7c98d60
lsp: compare URI instead of workspace folder name (#30962) -b4599acbf8
lsp: correct hover result handling (#30995) -f8d5811c71
lsp: correctly check for "codeAction/resolve" support -7d8db54441
lsp: delete b:lsp_floating_preview buf var after win close -2a1f604c77
lsp: delete bufvar inside WinClosed event -879d17ea8d
lsp: detach all clients on_reload to force buf_state reload (#28875) -292365fa1b
lsp: do not detach from buffer if there are uninitialized clients (#29029) -37bf4c572a
lsp: do not reset buf version when detaching client (#29242) -d56ba71af1
lsp: document_symbol uses loclist by default #32070 -720b309c78
lsp: don't send foreign diagnostics to servers in buf.code_action (#29501) -1f2f460b4a
lsp: don't show codelens for buffers that don't support it (#29690) -5f527f24f0
lsp: don't use completion filterText if prefix is empty -305012ea07
lsp: enable `additionalPropertiesSupport` -9d9ee3476e
lsp: ensure watcher cancel -aec7f1979a
lsp: fallback to `label` for completion items if all others are missing (#29522) -33d10db5b7
lsp: filter completion candidates based on completeopt (#30945) -b3109084c2
lsp: fix cursor position after snippet expansion (#30659) -4b001f297a
lsp: fix infinite loop -983953858e
lsp: fix isIncomplete condition in completion trigger (#30130) -2ce4a4d91e
lsp: fix reverse sorting of same position text edits (#29212) -8654a97006
lsp: handle empty call hierarchy items #30349 -f279d1ae33
lsp: handle encoding bounds in str_utfindex_enc -882a450a29
lsp: handle locations exceeding line length #30253 -008782208d
lsp: handle mixed encoding in tagfunc params -e0a5c3bb58
lsp: handle multiline signature help labels #30460 -8512f669f0
lsp: handle nil bytes in strings -f03b1622ad
lsp: handle nil root_dir in health check (#29007) -ed07167261
lsp: handle non-existent configs in lsp.config/enable -003b8a251d
lsp: handle out-of-bounds character positions #30288 -5187be81c2
lsp: handle using array as open_floating_preview title (#33016) -d9a2acdab3
lsp: hide layout in codelenses in virtual text (#28794) (#28807) -f54266dbed
lsp: hover border type can be string (#31013) -9a681ad09e
lsp: hover keymap (#31208) -a14fca432b
lsp: improve LSP floating preview window cleanup #31353 -e29f245a10
lsp: inlay hints are rendered in the correct order (#29707) -0086ee90dd
lsp: list all workspace folders in healthcheck #30966 -0e394f136f
lsp: log when receiving markup messages (#30065) -203e7a43d1
lsp: mention function name in warning #31301 -a4f575abd8
lsp: minimum height for floating popup #31990 -4fd2694f20
lsp: missing method parameter when canceling requests -be8d87014c
lsp: on detach, cancel pending foldingRange requests #31509 -7d5866d471
lsp: open_floating_preview() ignores max_height (#32716) -86770108e2
lsp: open_floating_preview() zindex relative to current window #31886 -724d1110b1
lsp: pre-filter matches on label if filterText is missing (#29491) -a450fda4ed
lsp: prefer `on_list` over `loclist` in default handler -6bb40f3dbf
lsp: prevent desync due to empty buffer (#29904) -eb629cce91
lsp: redundant spaces in lsp log (#29970) -43581011e4
lsp: remove superfluous on_detach callback from semantic tokens module (#29174) -d76f7fef13
lsp: reset active request when reporting an error -6bc7979044
lsp: reset the applied hints on `refresh` request #32446 -47aaddfa0d
lsp: resize hover window for concealed lines -081beb3659
lsp: restore get_language_id behaviour -29c72cdf4a
lsp: retrigger diagnostics request on server cancellation (#31345) -d9ccd828b0
lsp: return call hierarchy item, not the index (#30145) -9c20342297
lsp: reuse client if configs match and no root dir -6e45cd7f00
lsp: revert buf_versions deprecation/replacement (#29217) -bdff50dee5
lsp: revert text edit application order change (#29877) -e8a6c1b021
lsp: schedule call to vim.lsp.start for async root_dir (#31998) -a108852b00
lsp: semantic token functions allow "0" bufnr #28849 -c3cb702ac7
lsp: set 'smoothscroll' in docs hover #30748 -8a236c242a
lsp: set floating window filetype after setup #32112 -3c51058d76
lsp: set tagstack on jump via goto methods -24d7debdfb
lsp: signature_help highlights wrong parameter #32382 -80e37aa533
lsp: str_byteindex_enc bounds checking #30747 -629a5b71b5
lsp: support multiple clients in typehierarchy -e48179f31e
lsp: suppress completion request if completion is active (#30028) -50f006b617
lsp: tagfunc fails in unusual buffer #30700 -5ac8db10f0
lsp: trigger LspDetach on buffer delete (#28795) -19be3d2683
lsp: trim trailing whitespace from completion words (#29122) -aa47af7e69
lsp: tune completion word extraction for decorated labels (#29331) -38838fb00a
lsp: type-errors, other nits in vim.lsp.log #31235 -8d7eb03040
lsp: unify get_completion_word for textEdits/insertText -fe5ae88b20
lsp: update request name to capability map #30098 -5aa9906676
lsp: use client.id instead of pairs index (#29143) -c8d7d65679
lsp: use correct method for prepareTypehierarchy -b9e6fa7ec8
lsp: use filterText as word if textEdit/label doesn't match -5d08b65ac2
lsp: use unresolved code action when `codeAction/resolve` fails -0a7e4e9e5f
lsp: vim.lsp.enable(...,false) does not disable #32002 -888a803755
lsp: vim.lsp.start fails if existing client has no workspace_folders #31608 -42ed0ffad9
lsp: when prefix is non word add all result into matches (#30044) -55bdb077b7
lsp: wrapped ctx in opts before passed to vim.lsp.completion.trigger #32837 -2dcbfe78fc
lsp.buf: use correct offset_encoding for all requests -3275ae830d
lsp.protocal: improve typing of constants -acbc6a7f91
lsp.util: inconsistent handling of offset_encoding -564173e556
lsp.util: wrong arguments to 'validate' function -614c9322d5
lua: SIGSEGV in luv callback with error(nil) #32595 -b283736388
lua: `@private` => `@nodoc` #32587 -b6e350a6b4
lua: allows tables with integer keys to be merged in tbl_deep_extend -c8b64b7a43
lua: always use vim.inspect() for :lua= (#32715) -0e42c81c7f
lua: avoid recursive vim.on_key() callback (#30753) -fe1e2eff06
lua: avoid vim._with() double-free with cmdmod (#31505) -487f44a6c1
lua: change some vim.fn.expand() to vim.fs.normalize() (#29583) -43bd9c9c1c
lua: don't clamp -1 or v:maxcol in vim.highlight.range() (#29203) -bdc6e38781
lua: don't include text after cursor in completion pattern (#29587) -e2aca58bcc
lua: don't override script ID from :source (#32626) -d40481322a
lua: ensure inspect_pos() only shows visible highlight extmarks -948f2beed4
lua: find length of completion prefix earlier (#29384) -ebb963a4a0
lua: format errors from luv callbacks using __tostring -65a703e060
lua: ignore stdout and stderr for xdg-open -6b00c9acfd
lua: no omni/cmdline completion for vim.env (#33044) -c6d2cbf8f5
lua: pop retval for fast context LuaRef -a5b1b83a26
lua: prevent SIGSEGV when lua error is NULL in libuv_worker -3d707e6f14
lua: remove vim.loader.disable() #31344 -3a88113246
lua: revert vim.tbl_extend behavior change and document it -3688a33354
lua: show stacktrace for error in vim.on_key() callback (#31021) -40a149e7f9
lua: types for vim.api.keyset.win_config #32700 -7f33c1967b
lua: use rawget() to get __call in vim.is_callable() (#29536) -960fdc775a
lua: vim.deprecate does not support major>0 -d832518ec6
lua: vim.hl.on_yank highlights wrong region with yi' (#32850) -cd3855fb2b
lua: vim.tbl_get({}, nil, 1) should return nil #32218 -89d6d6f25c
lua: wrong script context for option set by func from nvim_exec2 (#32659) -9eb0426002
luacats: allow all types inside tuples -ee5aaba215
man: avoid setting v:errmsg (#30052) -7588ff2d89
man: check if buffer is valid before restoring 'tagfunc' (#30180) -da6f68ee69
man: filter OSC 8 hyperlink markup #29171 -7940ec6913
man.lua: `:Man <tab>` does not complete #31569 -e08e3d15f6
man.lua: skip `Attrs.None` highlights #32262 -d6653e1cc9
marks: ensure decor is removed with proper range (#32973) -906ad04ddd
marks: handle composing in inline virt_text with 'nowrap' (#32477) -8452032554
marks: handle double-with inline virt_text with 'nowrap' (#32476) -86046c5a31
marks: ineffective conceal_line callback optimization (#32662) -72f630f92d
marks: issues with invalid marks and marks beyond eob (#32862) -8da59060c6
marks: mark winline as invalid if change is in a concealed line (#32766) -012db2b0f5
marks: revalidate marks whose position did not change -5cc93ef472
marks: revise metadata for start mark of revalidated pair #32017 -c4f76299f0
marks: skip right_gravity marks when deleting text -cdedfc3743
marks: truncate double-width inline virt_text consistently (#32560) -7371abf755
marks: wrong winline info for concealed line with below virt line (#32747) -a9287dd882
mbyte: check for utf8proc_map() failure (#30531) -50a576ba57
mbyte: mark any 0xFE0F sequence as a TUI ambiguous width char -15bc930fca
memline: don't check line count for closed memline #32403 -aa976f0d93
messages: add a trailing space to inputlist() etc. prompts (#32328) -37c77ab46b
messages: attaching/detaching ext_messages causes asserts #31952 -d98827b634
messages: avoid empty msg_showmode with 'noshowmode' -31d6885deb
messages: better formatting for :highlight with ext_messages #31627 -21718c67dd
messages: better formatting for ext_messages #31839 -92556be33d
messages: compute msg_col after last newline in ext_messages -ad853d1df0
messages: improve deadly signal messages #32364 -51853b82bc
messages: incorrect error message splitting and kind #32990 -08f7c22377
messages: list_cmd kind for :registers, :au[g] #32531 -7ce27381fb
messages: lsp window/showMessage is not an error -1b6442034f
messages: more ext_messages kinds #31279 -9c6a3703bb
messages: no message kind for :undo messages #31590 -ca760e645b
messages: no message kind for :write messages #31519 -909b18d05a
messages: no message kind for completion menu messages #31646 -f111c32ff9
messages: no message kind for search pattern #31272 -282f73f067
messages: no trailing newline for inputlist, tselect, z= with ext_messages -9fa3a0964e
messages: pass previous highlight id to ext chunks -e025f5a5b3
messages: proper multiline Lua print() messages #31205 -d1e00a5f6d
messages: typo and unwanted truncation in msg_outtrans_long #31669 -d55b17e2b4
messages: verbose kind for nvim_echo() -c8e47f6480
meta: do not use hyphens in param names -2cd72258f6
mouse: 'statuscolumn' fold and popopmenu handling -81d4e96bc8
mouse: don't treat click on hsep as click on statusline (#29565) -102971a396
mouse: early return when clicking in padded 'statuscolumn' (#29394) -86c5c8724b
mouse: indicate X1 and X2 button clicks on statusline (#30655) -f86864f22f
move: 'scrolloff' cursor correction no longer handles folds properly (#32642) -5947f249f8
move: half-page scrolling with resized grid at eob (#28821) -ac7e0ff32f
move: redraw for 'concealcursor' after changing w_wcol (#31276) -af0a2157ad
move: wrong cursor row on concealed line (#32629) -83479b95ab
mpack: remove invalid bool definition -d32780de4d
mswin: UI may hang on exit -fa99afe35e
multibyte: handle backspace of wide clusters in replace mode -de83cc5842
netrw: re-add missing comment marker in syntax file -d9585bdcfb
nvim__set_complete: pum preview info truncated during completion #32555 -34e2185022
options: better handling of empty values -190d0241e2
options: fix 'winborder' accepting multiple string values (#32978) -8c532a9ea8
options: fix 'winhl' still accepting invalid value (#30896) -1b9dafa67b
options: fix :setglobal not working for 'spelloptions' (#30894) -395f420fc6
options: fix some 'belloff' flags not working properly (#30856) -50e63c8171
options: missing error check for global 'scl' and 'winhl' (#30919) -e697c1b43d
paste: improve repeating of pasted text (#30438) -052875b9dc
paste: only record a paste when it's from RPC (#30491) -9516997eb0
paste: wrong '[ mark after pasting a big string (streamed chunks) #33025 -42aa69b076
path: avoid chdir() when resolving path (#28799) -42db8b1759
path: crash with nvim_get_runtime_file during wildcard expansion (#32992) -0dfcf3fe12
plines: don't count invalidated virt text in char size (#29863) -afc3c43f12
popup: new preview_bufnr created when menu item is selected #32819 -ac1c5ccb2c
popup: reuse pum preview float win, set 'winfixbuf' #32636 -d288f7003d
popup: wrong extmark data sync when lines changed in popup preview #30246 -d24fb72c33
pum: don't select item when clicking to the left/right (#30967) -73ae7d44a2
quickfix: make shortmess+=O work with cmdheight=0 (#29609) -3bcd5624be
regexp: fix typo in E888 error message (#30161) -cb924764a4
runtime: "E121 Undefined variable s:termguicolors" #32209 -29a47b39cc
runtime: E15: Invalid expression in lua file when `gf` -b6c1ce8a95
runtime: add commentstring for glsl ftplugin -9ddfcb64bf
runtime: add remaining missing commentstrings (#30252) -e641155b02
runtime: avoid E31 in ftplugin (#32578) -82b02ae2f2
runtime: clean up one-off scripts -9788b81d7e
runtime: fully port emoji_list to Lua -74fcc9452c
runtime: gO always says "Help TOC" #32971 -69aa33d890
runtime: let matchit and matchparen skips fallback on treesitter captures -8369590eb2
runtime: remove obsolete ftplugin/calender.lua -41b70a0dea
runtime: set 'keywordprg' only once in vim ftplugin -7b16c1fa84
runtime: source c ftplugin properly for cpp on Windows (#29053) -12c9791e0f
runtime: stop treesitter highlight in b:undo_ftplugin (#29533) -862338255d
runtime: sync bundled treesitter queries -9e80738f30
runtime: sync bundled treesitter queries -5057753431
runtime: treat b:undo_ftplugin consistently in Lua ftplugins (#30473) -8f5e908110
runtime: update b:undo_ftplugin in Lua runtime files (#29529) -a5bd6665b0
scripts: update bundled dependencies in bump_deps -573a71469d
scrollbind: properly take filler/virtual lines into account -a8b6fa07c4
search: avoid quadratic time complexity when computing fuzzy score (#32153) -648d6426c8
server: CID 509282: DEADCODE #30316 -f4921e2b7d
shada: ":wshada/:rshada [filename]" with shadafile=NONE #32538 -cd48b72b60
shada: restore search pattern length properly (#28929) -608543f8a9
snippet: cancel snippet session when leaving the buffer (#29031) -7994fdba6a
snippet: don't override unnamed register on tabstop select (#28998) -5fe4ce6678
snippet: modify base indentation when there's actually whitespace (#29670) -424f4cc038
snippet: wrong indentation when snippet contains "^" #32970 -d46ebd2a74
startup: avoid crash with completion from -l script (#32160) -08153ddd1c
startup: ignore broken $XDG_RUNTIME_DIR #30285 -17e00d0cc6
startup: report --startuptime error to stderr (#31131) -8a2aec9974
startup: server fails if $NVIM_APPNAME is relative dir #30310 -19fc65acbc
statuscolumn: misleading v:lnum for virtual lines #32912 -87e806186c
statusline: overwriting stl_items with nvim_eval_statusline() {-item #32265 -1c30d86c33
tabline: restore behavior of click after last tabpage (#30602) -a49f95d887
terminal: avoid mismatched `busy_start` without `busy_stop` (#32458) -f3ce67549c
terminal: avoid more `busy_start` lacking `busy_stop` (#32509) -3d49c55d3c
terminal: avoid rescheduling events onto the same queue (#32755) -69a19295f8
terminal: delay when finishing terminal process #32846 -f8c8a245aa
terminal: don't crash on unprintable chars -6d997f8068
terminal: handle C0 characters in OSC terminator (#30090) -fa46441264
terminal: improve cursor refresh handling (#32596) -1d11808bfd
terminal: interrupt/got_int hangs terminal (#30056) -3db3947b0e
terminal: restore cursor from 'guicursor' on TermLeave (#31620) -c51bf5a6b2
terminal: set cursor cell percentage (#31703) -5def8714ad
terminal: set local values of window options (#29326) -e9c077d197
termkey: fix null pointer dereference (#31792) -c8e3618e0e
test: "tempdir not a directory" in CI logs -f7e32fb6e6
test: better management of tmpfiles -db2c3d1143
tests: filter out lines with __typeof__ keyword (#32524) -e61228a214
tests: needing two calls to setup a screen is cringe -639734bed4
tests: remove the __extension__ keyword in filter_complex_blocks (#32483) -59baa5e8a1
tohtml: apply sp color if present #30110 -67c39f5eca
tohtml: disable modeline #32822 -e37404f7fe
tohtml: enclose font-family names in quotation marks -25db0a1385
tohtml: extmark text may be out of bounds -8cd9feb501
tohtml: ignore lsp inlay hints -eb37241d38
tohtml: properly handle multiple hl groups #29012 -2ed6423c7e
tohtml: replace ipairs with pairs -88c7997503
tohtml: show how many warnings are hidden -118ae7e5ed
tohtml: support ranges again -c63e49cce2
treesitter: #trim! range for nodes ending at col 0 #31488 -b63cd8cbae
treesitter: EditQuery shows swapfile ATTENTION #30536 -55b165ac15
treesitter: `TSNode:field()` returns all children with the given field -86b737649b
treesitter: add 'QuitPre' event to autocommands in inspect_tree -bc1018a8d3
treesitter: avoid computing fold levels for empty buffer -a119dab40f
treesitter: avoid computing foldlevels for reloaded buffer #32233 -6696ea7f10
treesitter: clean up parsing queue -99acc9de55
treesitter: close InspectTree/EditQuery window on BufUnload (#31036) -f50f86b9ff
treesitter: compute folds on_changedtree only if not nil -7a20f93a92
treesitter: correct condition in `__has_ancestor` -9b25c68db2
treesitter: correctly parse queries with combined injections -3abfaafad2
treesitter: detect trees with outdated regions in `is_valid()` -9217e0d671
treesitter: display fields for anonymous nodes in :InspectTree -da4e8dc5b0
treesitter: do not modify highlight state for _on_spell_nav -0e3e1e6b6d
treesitter: don't open fold when o/O adds a line below #28709 -aa2b44fbb0
treesitter: don't return error message on success #31955 -b0bbe25c48
treesitter: don't spam query errors in the highlighter -b88874d33c
treesitter: empty queries can disable injections (#31748) -d413038b4f
treesitter: ensure syntaxset augroup exists (#29542) -f8e1ebd6f6
treesitter: escape things like `"` in omnifunc results -c4eb0b64bd
treesitter: find buffer in multiple windows #28922 -94d42a3e72
treesitter: highlight anonymous nodes in inspect_tree -5331f87f61
treesitter: indent size for inspect_tree #28727 -6ef80eb42c
treesitter: keep treeview open if source window is still open #31198 -052e048db6
treesitter: lint top-level anonymous nodes -4b90952851
treesitter: mark supertype nodes as named -096ae3bfd7
treesitter: nil access when running string parser async -c3337e357a
treesitter: nil check query for has_conceal_line -6711fa27ca
treesitter: recalculate folds on VimEnter #32240 -05dcda8f9b
treesitter: recognize aliased parsers in omnifunc, query linter -d3193afc25
treesitter: remove duplicate symbol names in language.inspect() -cdc9baeaf8
treesitter: remove redundant on_bytes callback #31041 -1827ab7a1f
treesitter: separately track the number of valid regions -36990f324d
treesitter: show proper node name error messages -4349bdbd0b
treesitter: specify success status in edit_query return value -e7ebc5c13d
treesitter: stop async parsing if buffer is invalid -0f067cd34d
treesitter: suppress get_parser warnings via opts.error -ae917dbd06
treesitter: sync queries from upstream -c4e9ff30a6
treesitter: sync queries with upstream -d8eec81560
treesitter: update lua, markdown queries -6e44a6a289
treesitter: update queries -5a54681025
treesitter: uv_dlclose after uv_dlerror -e4bc8b5967
treesitter.foldexpr: only refresh valid buffers -48acbc4d64
treesitter.foldexpr: refresh in the buffers affected by OptionSet -8474f52978
treesitter.foldexpr: robustness against ctrl-c -f81131cca2
tui: also reset cursor color if it was invisible (#31348) -4846bf05dc
tui: avoid flushing buffer halfway an OSC 2 sequence (#30793) -720ec5cec2
tui: cursor color in suckless terminal #32310 -b5cb69f8a4
tui: handle key events for arrow and function keys (#31804) -d7651b27d5
tui: move $COLORTERM check to _defaults.lua (#29197) -a811d4babd
tui: only reset cursor color if it was changed (#31337) -0c0352783f
tui: remove DCS escaping in tmux (#32723) -47c741e30c
tui: remove duplicate disabling of synchronized output (#28884) -f32557ca67
tui: reset active attr ID when OSC 8 sequence is terminated (#29960) -bc63ffcf39
tui: reset clear_region attributes during startup #28713 -b02c839414
tui: set id parameter in OSC 8 sequences (#29840) -0231265c8c
tui: skip TUI in ui_rgb_attached (#29096) -8b8096500d
tutor: incorrect lines marked as correct #29833 -31745b17e6
types: add narrower vim.validate types -44410d063a
types: add some vim.fn type annotations -b813075b8a
types: do not mark unstable API as private -e947f226be
types: use vararg return type annotation -a1906c23dd
ui: Windows :detach is opt-in -594c7f3d77
ui: avoid ambiguity about last chunk when flushing halfway (#29718) -216ec73972
ui: avoid redundant ext_cmdline events (#32237) -6cdcac4492
ui: clamp 'cmdheight' for other tabpages on screen resize (#31419) -318c0415d5
ui: correctly pass metadata to get_node_text #30222 -7eba016c86
ui: ensure screen update before waiting for input #30576 -5b6477be45
ui: flush ext_cmdline events before doing cmdpreview #27950 -6e4df18b45
ui: no fast context for prompt message kinds #31224 -6b8c56c7f6
ui: schedule UI detach (#32827) -b66106a46c
ui: superfluous showmode / excessive grid_cursor_goto #29089 -d1fd674df3
ui: update title in more cases (#31508) -442d338cb5
uri: uri_encode encodes brackets incorrectly for RFC2732 #31284 -d049752e45
version: fix vim.version().prerelease -8bdfc2ab2b
version: return nil with empty string -6401b433f7
vim.fs: default to follow=false #32859 -47e6b2233f
vim.fs: dirname() returns "." on mingw/msys2 #30480 -0bef3b911c
vim.fs: joinpath() does not normalize slashes on Windows #31782 -6dc0eb9f41
vim.fs.abspath: correctly handle UNC paths -a8ace2c58a
vim.fs.normalize: normalize case for windows drive letter -4c0d18c197
vim.iter: enable optimizations for arrays (lists with holes) (#28781) -734dba04d1
vim.system: close pipe handles after process handle -4e130c1ee4
vim.system: invalid MAX_TIMEOUT for 32-bit systems #31638 -ad3472e291
vim.system: resolve executable paths on windows -33464189bc
vim.text: handle very long strings (#30075) -4cff418564
vim.text: remove assert from vim.text.hexdecode -d338ec9cb2
vim.ui.open: prefer xdg-open on WSL #30302 -8bf79bd13c
vim.wo: never allow non-zero bufnr -453f2c52d2
vim_snprintf: special-case handling of binary format -32e128f209
watch: exclude .git when using inotifywait (#29914) -9e23b4e185
watch: ignore nonexistent paths (ENOENT) -a18652ed61
win-msi: add bin to PATH per-machine after installation (#29099) -88f07d6ca4
win-msi: set installer scope to machine #29895 -4f9311b759
window: making float with title/footer non-float leaks memory (#30551) -7b71fdbc1e
window: respect hide flag of float windows when switching (#30507) -59da82abd9
wininfo: when freeing windows, free the lowest priority wininfo PERFORMANCE -------------------------------------------------------------------------------- -48251134ee
add fast path to vim.validate (#28977) -3abd7ed4a4
consider only active decorations when drawing lines -8d2ee542a8
decor: join predicates and matches cache -48e3ac60c6
diagnostics: cache line diagnostics when `current_line` is set #32288 -b8ddd3b6bb
events: remove unnecessary loop in event_nr2name() (#32777) -15f2da55a8
events: use hashy for event name lookup (#32802) -abf4b65a51
filetype: cache (more) pattern data during "add" time -f61efe3fe7
filetype: implement parent pattern pre-matching (#29660) -ff575b3886
filetype: optimize internal data structures -dc04ef2a20
filetype: skip contents check in `match()` if there is no contents (#29596) -12d4caa9d3
keycodes: use hashy for string lookup -f8fc6cb157
loader: reduce calls to Loader.cache_file -138a93a057
lsp: avoid repeated table lookup in completion.enable -7342e6b00d
lsp: do not apply semantic tokens to folded lines -c85d15e0d5
lsp: don't construct potentially expensive strings -cc1f2d2ca6
lsp: don't copy completion items in filter pass -3e855d533f
lsp: use faster version of str_byteindex -000129201c
mouse: only generate <MouseMove> for a new cell positon (#31103) -3fdc430241
treesitter: cache queries strongly -b192d58284
treesitter: calculate folds asynchronously -c6abc97006
treesitter: do not use tree cursors with a small lifetime -cbad2c6628
treesitter: don't block when finding injection ranges -d9ee0d2984
treesitter: don't fetch parser for each fold line -562056c875
treesitter: only search for injections within the parse range -c57a85e0ed
treesitter: remove unnecessary foldexpr loop -64847fbdc9
treesitter: use `child_containing_descendant()` in `is_ancestor()` -4b02916334
treesitter: use child_containing_descendant() in has-ancestor? (#28512) -3f3e4837d5
validate: use lighter version -99b5ffd688
vim.text: use lookup table implementation for hex encoding (#30080) BUILD -------------------------------------------------------------------------------- -104800ce2e
"popcount" name conflict on NetBSD #28983 -198a952c13
add luals check -ef8067a19d
add quotes around `CMAKE_GENERATOR` variable -32e16cb0b6
add utf8proc as dependency -b213f5169c
allow comment after #include for required header (#29722) -382eb878bc
bump lua dev dependencies -1d815acd78
bump minimum cmake version to 3.16 -5284a2a793
bump unibilium to v2.1.2 -ac5a6d9ff5
fix RelWithDebInfo optimization flags #31802 -7c65224257
fix lint error on macos -046e0956ee
fix or silence new clang-tidy warnings -5719f2b91a
fix uncrustify install in nix devShell (#33020) -4a0ee22e77
make makefile work on msys -4ee65484b1
make makefile work on windows -1b90f4a9c4
mark CMake variables advanced #31412 -0f24b0826a
move all generator scripts to `src/gen/` -e5ff302033
remove -O2 from gen_cflags -d74c74aae3
remove `lintcommit` from `lint` target -573bcb2aaf
remove enforcement of cmake build type -0e9c92a900
remove nix flakes (#28863) -f09f5c45fa
reuse code for deps.txt for both deps and main build -e1dc824b7e
set luals checklevel to Hint #32392 -cac86e9b4c
silence "po" noise #30469 -07b14c8e2e
specify POST_BUILD when using add_custom_command -e83ce331da
use treesitter's CMakeLists.txt -e268fcbdaa
work around bug in make when PATH includes cmake as dir -b288fa8d62
bump_deps: abort if archive doesn't exist -7ead328a48
cjson: sync with upstream (#32114) -0e2f92ed79
clint: make NOLINT work with header checks (#31281) -327110ff8c
cmake: remove unnecessary policy code -535c2f8658
contrib: add zsh completion (#32617) -51d85f7ea5
deps: drop unused bundled bash, python parsers and queries -9216bc927c
deps: fix formatc target on MSVC -b3641b8008
deps: remove libtermkey dependency -1247684ae1
deps: remove msgpack-c dependency -fa79a8ad6d
deps: vendor libvterm at v0.3.3 -c614969570
docs: update CSS #28896 -0a087f2073
generator: add dependencies on hashy (#32796) -e178331488
lpeg: search for lpeg.so on MacOS -7e099cf3eb
macos: disable deduplication in link step -f4d9a2983a
release.sh: fix hang when generating docs (#33026) -b923fcbaf0
vim-patch.sh: don't ignore changes to version*.txt (#29425) -7aaa4a51b7
vim-patch.sh: include commit subject #28767 -3146433190
vim-patch.sh: use 7 hex digits for runtime patch file name (#29940)
Neovim is a project that seeks to aggressively refactor Vim in order to:
- Simplify maintenance and encourage contributions
- Split the work between multiple developers
- Enable advanced UIs without modifications to the core
- Maximize extensibility
See the Introduction wiki page and Roadmap for more information.
Features
- Modern GUIs
- API access from any language including C/C++, C#, Clojure, D, Elixir, Go, Haskell, Java/Kotlin, JavaScript/Node.js, Julia, Lisp, Lua, Perl, Python, Racket, Ruby, Rust
- Embedded, scriptable terminal emulator
- Asynchronous job control
- Shared data (shada) among multiple editor instances
- XDG base directories support
- Compatible with most Vim plugins, including Ruby and Python plugins
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
(orcmake -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 for details.
Vim is Charityware. You can use and copy it as much as you like, but you are
encouraged to make a donation for needy children in Uganda. Please see the
kcc section of the vim docs or visit the ICCF web site, available at these URLs:
https://iccf-holland.org/
https://www.vim.org/iccf/
https://www.iccf.nl/
You can also sponsor the development of Vim. Vim sponsors can vote for
features. The money goes to Uganda anyway.