From e2cc5fe09d98ce1ccaaa666a835c896805ccc196 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Sun, 15 Sep 2019 12:38:40 -0700 Subject: [PATCH] NVIM v0.4.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 8e6b0a73c91b #10619 API: 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 8a3f8589a3ed #10504 UI/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 API f5c56f03bb9e #9170 API/Lua: nvim_buf_attach: support Lua callback 82d48c0dab0f #9896 API: emit nvim_error_event on failed async request b9ad12e6c2fa #9992 UI/nvim_ui_attach(): add `override` option 3d1ed7c95901 #9993 UI/ext_messages: learn more message kinds 8ed54bbec3b0 #9547 proper multiline error message for rpcrequest, API wrappers Lua This release introduces "Nvim-Lua standard library". See ":help lua-stdlib". 89d7e24891c2 #9463 Lua stdlib: vim.inspect, string functions 8e941c59ec23 #9740 Lua: generate documentation from docstrings 1cbe0145695b #9301 lua/stdlib: Introduce vim.shared c83926cd0aa5 #10123 Lua: introduce vim.loop (expose libuv event-loop) 81e1dbca99c1 #10120 Lua: vim.schedule(cb) 1f54f68732b4 #10688 Lua: minimal UTF-16 support needed for LSP 6fb0020df4eb #10513 Lua encoding support c0993ed3433e Lua: support getting UTF-32 and UTF-16 sizes of replaced text b0e26199ec02 Lua: 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". 9a1675b06539 #6619 Floating 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. 6427894d8911 #8455 Multigrid: "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. 3855204f5860 #6917 UIEnter, UILeave 788bcbba2465 #9923 ui: ":syn blend=", 'winblend' 7cf7c0a0b8e9 #9575 ui: 'redrawdebug' option for flexible debugging of redrawing 5c836d2ef8b6 #9607 wildoptions=pum (enabled by default) 37f8df882463 #9571 UI: 'pumblend' option for semi-transparent popupmenu c403a95a5297 #9446 Visual: 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. :terminal fc27dc98d74f #8550 autocmds: TermEnter, TermLeave d13803f64fc5 #9810 keymap, terminal: more keycodes 3b56f59532ac #9535 :terminal : Fix F1-F4 key codes 2d4a37ebab35 #10370 :ls : show "R", "F" for terminal-jobs fd0fd752c872 #9966 terminal: swap priority of terminal, editor highlights 7bb858c39cac #9494 libvterm 0.1 TUI 3afb397407af syntax, TUI: support "strikethrough" ccbcd390d42d #9408 TUI: "title stacking" unconditionally 298608f88c46 #9509 TUI: detect background color, set bg=dark/light 42f492ac9905 #9097 TUI: handle Smulx extension capability (extended underline) 424ddd01f588 #10205 TUI: support rgba background detection 9b4383261a3d #9601 TUI: italics in tmux, Terminal.app f6fb370b1bcc #9793 keymap: support more (keypad) keycodes 3340e08becbf #9423 TUI: Konsole DECSCUSR fixup :checkhealth d0fd66ba82c4 health/provider.vim: check curl HTTPS support c38862aceabe #10490 checkhealth: try yarn if npm is missing 43356a43d00f #9929 health: check if tmux enabled true colors ec5a4d862d71 #9548 checkhealth: validate locale providers (clipboard, python, etc.): 96be8a2c4d63 #10161 Allow reloading providers (useful for UIs/clients) db3c797c6b3c #9487 provider: improve error message if provider is missing Various: 36762a00a801 #9295 signs: support multiple columns 801fe799ff35 #10382 eval: wait() (wait for any condition) 9df3a676e7f2 #10400 MsgArea highlight; message grid a9bea8c1047f #10790 keymap: allow modifiers to multibyte chars, like 25e0a449bb66 #10878 #4448 paste: redesign (10x+ faster pasting; extensible vim.paste Lua hook) ef5037e7f6e1 #9706 autocmd: introduce "++once" feature 175398f21645 #9616 add CompleteChanged autocmd 7fcf2f926fc6 #9717 TextYankPost: add v:event["inclusive"] 3a699a790c14 #8364 termdebug.vim plugin ca1ce590257c #9709 performance: use os_copy to create backups ed0e96cd28f8 man.vim: set 'linebreak' 70f6939fd4b5 #9564 events: add "Signal" event f89d0d8230f3 #9568 inccommand: auto-disable if folding is slow FIXES: 41bb68b8e8d0 #10584 process_stop: uv: do not close stdin first/explicitly e50aa2a6c654 #10117 normal: Don't exit CTRL-O mode after processing K_EVENT 95fa71c6d2b4 #9504 :recover : Fix crash on non-existent *.swp 5a836d4767b7 #9507 screen: don't unconditionally clear messages on window scroll 149dcbf2c762 #10021 channel: refactor events, prevent recursive invocation of events d19ff73b39a9 #10107 Fix multiple c_CTRL-D showing statusline b65a7b7f6692 #10103 Fix wildmode=list,full and display+=msgsep interaction 0be6d3c86fe5 #9634 fsync: Ignore ENOTSUP. Fix writing to SMB. b247c6fd2255 #10025 kbtree: pointer UB and unitialized value fixes 018e0d5a19c3 #9643 API/buffer-updates: always detach on buf-reload 400ee59247ea #9961 API: fix cursor position when lines are added 769f44e918c6 #9911 win/defaults: Use "…/nvim-data/site" in 'runtimepath' 83d571653bdc #9911 spellfile.vim: store files in stdpath('data') 8dbf23181add #9887 RPC: conform message-id type to msgpack-RPC spec 5f996e36d102 #9894 options: properly reset directories on 'autochdir' 4c4a57015687 #9807 various CursorMoved fixes 943bedfc86ab #9853 event-loop: do not set CA_COMMAND_BUSY 9d207fd87617 #9693 dictwatcheradd(): support b:changedtick 2d50bf349883 #9789 mac: fix locale detection c5631338b16b #9754 :mksession : restore tab-local working directories 092e7e6c6058 #9703 #9703 executable(): return false if user is not owner 11a481f711ee #9686 env var fixes/improvements 8e54847fdf3c #9666 #7920 os/env: Fix completion of multibyte env var names 519382646be3 #10468 Fix is_executable_in_path() on Windows 8eaa452073a1 #9516 win: exepath(), executable() fixes f55c1e4233a4 #10544 reltimefloat(): allow negative result b08dc3ec195f #10561 win: jobstart(), system(): $PATHEXT-resolve exe 7cc2b723d43c #10392 TextYankPost: spurious/too-early dispatch during delete 6e01ed6a4c85 OpenBSD: stop jobs/processes properly 58dd5fcc01ed #10522 jobstop(): close channel before process_stop() 83632022f84e #10959 improved resize behavior (all UIs) c6eb1f42bec0 #10830 API: fix nvim_command_output buffer overflow cbfd18c85acd #10763 startup: handle 'guicursor' after user config b8f2436febcc #10915 jobwait(): fix race if job exits quickly 2fafed6bb8aa #10765 clipboard: handle/avoid SIGTERM with previous owner 8aca932aa0ac #9954 clipboard: setreg("*") with clipboard=unnamed 3f10c5b5338f #9480 performance: clipboard/macOS: assume that pbcopy works 48efafc81c84 #10398 screen: disable redrawing inside VimResized 5e4b93a38f1e #10389 API/Lua: make nvim_execute_lua use native lua floats, not special tables 8c6f5b7f9268 #9934 Spurious quote mark in command line when typing a8a38f346548 Lua 5.2/5.3 compat :terminal 47b7b471fa0f #10700 :terminal : update buffer when switching tabpage 5225c1ec302f #9605 terminal: Fix potential invalid local 'scrollback' 894f6bee54e8 #8325 :terminal : set topline based on window height 8171e96b9640 #9551 Improve :terminal resize d928b036dc2b #9856 :stopinsert should leave terminal-mode 3f712185058f #9926 :terminal : fix: Using `:stopinsert` while in normal mode 5020daa6e5ce #9883 ui/terminal: make terminal state redraw like any other state TUI: 9f19e8d29dce #9443 TUI: Do not disable BCE for builtin terminfos a4076e5dcf66 #9474 win/TUI: fix text overrides line numbers 533d4a36ec03 #9645 TUI: do not resize host-terminal on startup b51e5d8b8dd2 #9688 tui_tk_ti_getstr: handle weird value 1f5eac1115a4 #10785 TUI: fix data-race during resize CHANGES: 9697c7f56a26 #8194 fix menu_get() 7f2e43c637e5 #9520 improve Lua error messages c2343180d74f #9526 Remove jemalloc baf93d96063c #9581 UI: always use concrete colors for default_colors_set 91688b488310 #9563 defaults: set 'scrollback' to -1 by default bb24fec33355 #10136 defaults: exclude "S" from 'shortmess' ddd0eb6f5120 #8540 startup: -es/-Es (silent/batch mode): skip swapfile 35362495c965 #9805 jumplist: avoid extra tail entry 939d9053bdf2 #10573 channels: reflect exit due to signals in exit status code 45c34bd84aa5 #10689 :doautocmd : Never show "No matching autocommands" fb19aeeb33f7 #9110 API: make nvim_win_set_option() set window-global, not buffer-local abfc8b3257f8 #10778 emsg_multiline: log Vim errors 06d9cc734bf0 #10657 exists("$FOO"): return false for empty env var 6616d1d3e5c9 #10743 win/env: Vim-compat: Empty string deletes env var 7d664837e1a9 #10662 win: expand nested env var in $HOME 2816bc8620ca #8349 edit.c: Disable indent during completion 58f505dc7432 #9829 startup: 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 (#9024 c236e80cf3df). Fixing it also for the TUI avoids problems on Windows, simplifies the logic, and avoids races like #9959. --- CMakeLists.txt | 4 ++-- test/functional/fixtures/api_level_6.mpack | Bin 0 -> 25194 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 test/functional/fixtures/api_level_6.mpack diff --git a/CMakeLists.txt b/CMakeLists.txt index b92b5473b2..9c3c20d23f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -115,12 +115,12 @@ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY set(NVIM_VERSION_MAJOR 0) set(NVIM_VERSION_MINOR 4) set(NVIM_VERSION_PATCH 0) -set(NVIM_VERSION_PRERELEASE "-dev") # for package maintainers +set(NVIM_VERSION_PRERELEASE "") # for package maintainers # API level set(NVIM_API_LEVEL 6) # Bump this after any API change. set(NVIM_API_LEVEL_COMPAT 0) # Adjust this after a _breaking_ API change. -set(NVIM_API_PRERELEASE true) +set(NVIM_API_PRERELEASE false) file(TO_CMAKE_PATH ${CMAKE_CURRENT_LIST_DIR}/.git FORCED_GIT_DIR) include(GetGitRevisionDescription) diff --git a/test/functional/fixtures/api_level_6.mpack b/test/functional/fixtures/api_level_6.mpack new file mode 100644 index 0000000000000000000000000000000000000000..b348f86beb8ba96441d3621af24ec03e663b34c5 GIT binary patch literal 25194 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 F`Cm74gL?n~ literal 0 HcmV?d00001