) NVIM v0.4.0
This release represents ~ 2700 commits since v0.3.4, the previous non-maintenance release. Besides the highlights listed below, this release features vast improvements to documentation, internal subsystems and test / CI infrastructure, and 700 patches merged from Vim. FEATURES: New API functions: nvim_create_buf: create various kinds of buffers nvim_get_context, nvim_load_context 8e6b0a7# 10619API: Context: save / restore / inspect editor state nvim_input_mouse: perform mouse actions nvim_open_win: create floating windows (and external, for supporting UIs) nvim_paste: paste text at cursor nvim_put: put text at cursor nvim_select_popupmenu_item: perform popupmenu actions nvim_set_keymap: create / delete mappings nvim_set_vvar: set v: variables nvim_ui_pum_set_height nvim_ui_try_resize_grid nvim_win_close: close windows nvim_win_get_config: get window configuration nvim_win_set_config: reconfigure windows New UI events: redraw.grid_destroy redraw.hl_group_set 8a3f 858# 10504UI / highlight: expose builtin highlight groups using hl_group_set event redraw.msg_clear redraw.msg_history_show redraw.msg_ruler redraw.msg_set_pos redraw.msg_show redraw.msg_showcmd redraw.msg_showmode redraw.win_close redraw.win_external_pos redraw.win_float_pos redraw.win_hide redraw.win_pos APIF5C (F0)# 9170API / Lua: nvim_buf_attach: support Lua callback(d) C0# 9896API: emit nvim_error_event on failed async requestb9ad 12 e# 9992UI / nvim_ui_attach (): add `override` option3d1ed7c# 9993UI / ext_messages: learn more message kinds8ed 54 bb# 9547proper multiline error message for rpcrequest, API wrappers Lua This release introduces "Nvim-Lua standard library". See ": help lua-stdlib".(D7E)# 9463Lua stdlib: vim.inspect, string functions8e (C5)# 9740Lua: generate documentation from docstrings1cbe0 14# 9301lua / stdlib: Introduce vim.shared(c) *********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** C)# 10123Lua: introduce vim.loop (expose libuv event-loop)81 E1DBC# 10120Lua: vim.schedule (cb )(1f) ******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** (f)# 10688Lua: minimal UTF - 16 support needed for LSP****** (6fb) 20# 10513Lua encoding support ******** (C0) edLua: support getting UTF - 32 and UTF - 16 sizes of replaced text B0E 2619Lua: add {old_byte_size} to on_lines buffer change event UI: - The Nvim 0.3.4 UI protocol introduced line-based updates instead of legacy char-based updates. Nvim 0.4 continues to evolve the UI protocol. See ": help ui". Legacy UI clients are supported. See ": help api-contract".********** (9a) *********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** (b)# 6619Floating windows - Can be (re) positioned, anchored, external. - Are real windows showing real buffers. No shortcuts, hacks, or compromises. - Support all features and API of normal windows, plus more.6427894# 8455Multigrid: "windows drawn on separate grids" - Windows are logically isolated internally. - Windows are sent to UIs as distinct objects, so that UIs can control layout instead of being stuck with the classic TUI layout. - Per-window font-size, dimenions, line-spacing. - Compositor: Internal subsystem for composing grids.3855204# 6917UIEnter, UILeave788 BCBB# 9923ui: ": syn blend=", 'winblend'7cf7c0a(#) ui: 'redrawdebug' option for flexible debugging of redrawing5C 836 D2# 9607wildoptions=pum (enabled by default)37 f8df8# 9571UI: 'pumblend' option for semi-transparent popupmenuC 403 A 95# 9446Visual: highlight char-at-cursor - Traditionally Vim's visual selection does "reverse mode", which perhaps conflicts with the non-blinking block cursor. But 'guicursor' defaults to a vertical bar for selection=exclusive, and this confuses users who expect to see the text highlighted. : terminalFC (DC9)# 8550autocmds: TermEnter, TermLeaveD 13803 f# 9810keymap, terminal: more keycodes3b (f)# 9535: terminal: Fix F1-F4 key codes2d4a (e)# 10370: ls: show "R", "F" for terminal- jobsFD0FD 75# 9966terminal: swap priority of terminal, editor highlights7bb 858 c# 9494libvterm 0.1 TUI3afb 397syntax, TUI: support "strikethrough"ccbcd 39# 9408TUI: "title stacking" unconditionally(f)(#) TUI: detect background color, set bg=dark / light(f) *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** (a)# 9097TUI: handle Smulx extension capability (extended underline)424 DDD0# 10205TUI: support rgba background det ection(9b)# 9601TUI: italics in tmux, Terminal.appF6FB 370# 9793keymap: support more (keypad) keycodes(e)# 9423TUI: Konsole DECSCUSR fixup : checkhealthD0FD 66 bhealth / provider.vim: check curl HTTPS support(c) a# 10490checkhealth: try yarn if npm is missing(A4)# 9929health: check if tmux enabled true colorsec5a4d8# 9548checkhealth: validate locale providers (clipboard, python, etc.):96 be8a2# 10161Allow reloading providers (useful for UIs / clients)(db3c)# 9487provider: improve error message if provider is missing Various:36762 A0# 9295signs: support multiple columns801 fe 79# 10382eval: wait () (wait for any condition)9df3a 67# 10400MsgArea highlight; message grida9bea8c# 10790keymap : allow modifiers to multibyte chars, like25 E0A 44# 10878# 4448paste: redesign (10 x faster pasting; extensible vim.paste Lua hook)EF 5037 e# 9706autocmd : introduce " once" feature175398 f# 9616add CompleteChanged autocmd7fcf2f9# 9717TextYankPost: add v: event ["inclusive"]3A 699 A7# 8364termdebug.vim pluginCA1CE 59# 9709performance: use os_copy to create backupsed0e 96 cman.vim: set 'linebreak'70 f 6939# 9564events: add "Signal" eventf 89 d0d8# 9568inccommand: auto-disable if folding is slow FIXES:(BB) b# 10584process_stop: uv: do not close stdin first / explicitlye 50 aa2a# 10117normal: Don't exit CTRL-O mode after processing K_EVENT(fa) c# 9504: recover: Fix crash on non-existent * .swp(5A) d4# 9507screen: don't unconditionally clear messages on window scroll149 DCBF# 10021channel: refactor events, prevent recursive invocation of events(D) FF 73# 10107Fix multiple c_CTRL-D showing statusline(b) a7b7# 10103Fix wildmode=list, full and display =msgsep interaction0be6d3c# 9634fsync: Ignore ENOTSUP. Fix writing to SMB.B 247 C6F# 10025kbtree: pointer UB and unitialized value fixes018 e0d5# 9643API / buffer-updates: always detach on buf-reload(ee)# 9961API: fix cursor position when lines are added769 f 44 e# 9911win / defaults: Use "… / nvim-data / site" in 'runtimepath'83 d 5716# 9911spellfile.vim: store files in stdpath ('data')8dbf 231# 9887RPC: conform message-id type to msgpack-RPC spec5f (E3)# 9894options: properly reset directories on 'autochdir'4c4a 570# 9807various CursorMoved fixes943 bedf# 9853event-loop: do not set CA_COMMAND_BUSY9d 207 fd# 9693dictwatcheradd (): support b: changedtick2D (BF3)# 9789mac: fix locale detectionC 563133# 9754: mksession: restore tab-local working directories0 92 e7e6# 9703# 9703executable (): return false if user is not owner(a) f# 9686env var fixes / improvements8e 54847# 9666# 7920os / env: Fix completion of multibyte env var names5193826# 10468Fix is_executable_in_path () on Windows8eaa 452# 9516win: exepath (), executable () fixesf 55 c1e4# 10544reltimefloat (): allow negative resultb 08 DC3e# 10561win: jobstart (), system (): $ PATHEXT-resolve exe7cc2b 72# 10392TextYankPost: spurious / too-early dispatch during delete(6e) ******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** (ed6)OpenBSD : stop jobs / processes properly58 dd5fc# 10522jobstop (): close channel before process_stop ()8363202# 10959improved resize behavior (all UIs)c6eb1f4# 10830API: fix nvim_command_output buffer overflowcbfd 18 c# 10763startup: handle 'guicursor' after user config(B8F)# 10915jobwait (): fix race if job exits quickly2fafed6# 10765clipboard: handle / avoid SIGTERM with previous owner(8aca)# 9954clipboard: setreg ("*") with clipboard=unnamed(3f) c5b# 9480performance: clipboard / macOS: assume that pbcopy works48 EFAFC# 10398screen: disable redrawing inside VimResized5e4b 93 a# 10389API / Lua: make nvim_execute_lua use native lua floats, not special tables8c6f5b7(#) Spurious quote mark in command line when typing A8A 38 f3Lua 5.2 / 5.3 compat : terminal(B7B)(#) : terminal: update buffer when switching tabpage5225 C1E# 9605terminal: Fix potential invalid local 'scrollback'(f6be)# 8325: terminal: set topline based on window height8171 e 96# 9551Improve: terminal resizeD (b)# 9856: stopinsert should leave terminal-mode3f 71218# 9926: terminal: fix: Using `: stopinsert` while in normal mode5020 daa# 9883ui / terminal: make terminal state redraw like any other state TUI:9f 19 E8D# 9443TUI: Do not disable BCE for builtin terminfosA 4076 E5# 9474win / TUI: fix text overrides line numbers533 d4a3# 9645TUI: do not resize host-terminal on startupB 51 e5d8# 9688tui_tk_ti_getstr: handle weird value1f5eac1# 10785TUI: fix data-race during resize CHANGES:9697 c7 f# 8194fix menu_get ()7f2e 43 C# 9520improve Lua error messages(c)# 9526Remove jemallocBAF 93 D9# 9581UI: always use concrete colors for default_colors_set91688 B4# 9563defaults: set 'scrollback' to -1 by defaultBB 24 fec# 10136defaults: exclude "S" from 'shortmess'ddd0eb6# 8540startup: -es / -Es (silent / batch mode): skip swapfile3536249# 9805jumplist: avoid extra tail entry939 d 905# 10573channels: reflect exit due to signals in exit status code45 C (bd)# 10689: doautocmd : Never show "No matching autocommands"FB 19 aee# 9110API: make nvim_win_set_option () set window-global, not buffer-localabfc8b3(#) emsg_multiline: log Vim errors(D9CC7)# 10657exists ("$ FOO"): return false for empty env var6616 d1d# 10743win / env: Vim-compat: Empty string deletes env var7D 66483# 10662win: expand nested env var in $ HOME2816 BC8# 8349edit.c: Disable indent during completion58 f 505 d# 9829startup: remove TUI init special-case Historically Vim / Nvim does backflips to handle input and show messages before a UI is available. This logical contradiction was already fixed for remote UIs (#C 236 e 80). Fixing it also for the TUI avoids problems on Windows, simplifies the logic, and avoids races like# 9959.
- Loading branch information…
GIPHY App Key not set. Please check settings