aboutsummaryrefslogtreecommitdiff
path: root/test/functional/fixtures
Commit message (Collapse)AuthorAge
...
* feat(lsp): options to filter and auto-apply code actions (#18221)Fredrik Ekre2022-04-30
| | | | | | | | | | | | | | | | | | | Implement two new options to vim.lsp.buf.code_action(): - filter (function): predicate taking an Action as input, and returning a boolean. - apply (boolean): when set to true, and there is just one remaining action (after filtering), the action is applied without user query. These options can, for example, be used to filter out, and automatically apply, the action indicated by the server to be preferred: vim.lsp.buf.code_action({ filter = function(action) return action.isPreferred end, apply = true, }) Fix #17514.
* NVIM 0.7bfredl2022-04-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | BREAKING CHANGES * Support for Python 2 is dropped. For Python 3, the minimum supported version is 3.6. Legacy `:pythonx` commands are still available, and always uses the python 3 provider. * api: Existing usages of `nvim_buf_set_text` that use negative line numbers will be off-by-one. * highlight: signature of `vim.highlight.range` was changed. * input: distinguish between some input keys which previously were synonyms. This will break some exiting mappings. - `<cr>`, `<tab>` and `<esc>` are no longer considered equivalent to `<c-m>`, `<c-i>` and `<c-[`> respectively. In case the terminal or GUI supports distinguishing these keys, these can now be mapped separately. But even if the terminal only can send one code you might still need to change what variant is used in the config. FEATURES Core APIs: * api: add support for lua function & description in keymap * api: add api and lua autocmds * api: nvim_clear_autocmd * api: pass args table to autocommand callbacks * api: remove Lua autocommand callbacks when they return true * api: implement nvim_{add,del}_user_command * api: implement nvim_buf_get_text * api: add nvim_get_option_value * highlight: ns=0 to set :highlight namespace * highlight: support for blend in nvim_set_hl * api: add strikethrough, nocombine to set_hl * api: relax statusline fillchar width check Lua: * lua: add vim.keymap * lua: add vim.spell * lua: add proper support of luv threads * lua: make :lua =expr print result of expr * lua: handle lazy submodules in `:lua vim.` wildmenu completion * lua: add notify_once() * lua: add support for multiple optional types in vim.validate * lua: show proper verbose output for lua configuration * lua: more conversions between LuaRef and Vim Funcref * lua: support converting nested Funcref back to LuaRef * call __tostring on lua errors if possible before reporting to user * filetype.lua * filetype.lua: add support for files under .git * filetype.lua: add support for patch files * filetype.lua: add support for tmux.conf files * filetype.lua: add support for txt files * filetype.lua: Add typescript extension to filetype detection * filetype.lua: fix .cc file not detected * filetype.lua: fix .env file not detected * filetype: convert patterns for mail buffers * filetype: support scripts.vim with filetype.lua UI and decorations: * decorations: support signs * extmarks: add strict option * api: expose extmark more details * api: expose extmark right_gravity and end_right_gravity * use nvim_buf_set_extmark for vim.highlight * statusline: support multibyte fillchar * add support for global statusline Treesitter: * ui: allow conceal to be defined in decorations and tree-sitter queries * tree-sitter: allow Atom-style capture fallbacks * treesitter: add more default groups to highlight map * treesitter: multiline match predicates * treesitter: set allocator when possible * ts: add support for multiline nodes in get_node_text * ts: expose minimum language version to lua * runtime: add query filetype LSP and diagnostic: * diagnostic: add "code" to the diagnostic structure * diagnostic: allow retrieving current diagnostic config * lsp,diagnostic: open folds in jump-related functions * lsp: add buf_detach_client * lsp: add handler for workspace/workspaceFolders * lsp: dynamically generate list title in response_to_list * lsp: enable default debounce of 150 ms * lsp: skip or reduce debounce after idle * lsp: use `vim.ui.select` for selecting lsp client Initial work to support remote TUI (and ui client library): * ui_client: connect to remote ui * ui_client: implement event handlers * ui_client: handle resize events * ui_client: implement async paste handling * ui_client: pass user input to remote server * --headless: add on_print callback to stdioopen * add autocommand event when search wraps around * add vim.tbl_get * autocmd: add Recording autocmds * autocmd: populate v:event in RecordingLeave * completion: support selecting item via API from Lua mapping * eval/method: partially port v8.1.1993 * eval/method: partially port v8.1.1996 * eval/method: partially port v8.1.2004 * eval: partially port v8.2.0878 * eval: port emsg from v8.2.3284 * events: add DirChangedPre * events: support SIGWINCH for Signal event * hardcopy: check gui colours for highlights first * highlight: support color names for cterm * ignore nore on <Plug> maps * input: delay some conversions to vgetc() * input: enable <tab>/<c-i>, <cr>/<c-m>, <esc>/<c-[> pairs unconditionally * keymap: add F38-F63 keys * keymap: return nil from an expr keymap * mappings: considering map description when filtering * provider: remove support for python2 and python3.[3-5] * remote: add basic --remote support * runtime: import cleanadd.vim from Vim * runtime: include Lua in C++ ftplugin * runtime: new checkhealth filetype * term: use vterm_output_set_callback() * test: use nvim_exec in helpers.source() * trigger ModeChanged for terminal modes * tui: add error logging * tui: add support for `CSI 4 : [2,4,5] m` * tui: enable CSI u keys * vim-patch.sh: support additional args for -s Performance Improvements * lsp: request only changed portions of the buffer in changetracking * only redraw concealed line if cursor has moved horizontally * pre-compile embedded Lua source into bytecode * screen: reduce cursorline redrawing when jumping around * treesitter: cache query parsing * api: elide luaref copy when setting 'callback' in nvim_set_keymap BUG FIXES * --headless: do not block on press-enter prompts when no UI * <Nop> not shown in :map commands * add forkpty for SunOS variants * add STRNLEN compatability macro * anonymous sid not working * api, lua: return NIL on failure to find converted function * api/nvim_win_call: share common win_execute logic * api: allow empty list for cterm in nvim_set_hl * api: allow nvim_buf_set_extmark to accept end_row key * api: convert blob to NUL-terminated API string * api: correctly handle negative line numbers for nvim_buf_set_text * api: correctly pass f-args for nvim_create_user_command * api: delete all autocmds with the same ID * api: force redefinition of user commands by default * api: highlight attribute for underline * api: improve autocmd error handling * api: include event in get_autocmds * api: make nil value in nvim_set_option_value clear local value * api: nvim__set_hl_ns causes extra redraws * api: nvim_win_set_cursor() redraw for cursorline and statusline * api: re-route nvim_get_runtime_file errors * api: use changedir_func() in nvim_set_current_dir() * api: validate command names in nvim_add_user_command * api: validate user_command name * append test for checking zero width node range * aucmd_win: always make aucmd_win the last window * aucmd_win: ensure aucmd_win stays floating * autocmd: clean up autocmds only when needed * autocmd: restore autocmd showing behavior * autoload variables not loaded with vim.g & nvim_get_var * bounds check for underdot * build: check for empty value of LUAC_PRG * build: check that LuaJIT has required modules for compilation * build: install luajit modules on windows * channel: fix channel consistency * check for interrupt in nvim_echo, write_msg and nlua_print * checkhealth: make provider checkhealth output more consistent * ci/backport: check for event_name == "pull_request_target" * ci: provide necessary permissions for calling workflow * clang/'Dead store': do not assign endcol * close floating windows when calling win_close() * completion: prevent K_LUA from closing pum * completion: update submode message when selecting from API * correct vertical dragging room calculation with global statusline * coverity/175977: big parameter passed by value * coverity/188749: nullify pointer to fix use-after-free * coverity/340720: error if nvim_eval_statusline given invalid winid * coverity: dead code and operands don't affect result * decorations: do not put empty virt_text * define NAME_MAX from _XOPEN_NAME_MAX * diagnostic: allow setting arbitrary config values * diagnostic: assert that diagnostics have line number and column * diagnostic: clamp diagnostics on negative line numbers * diagnostic: escape special chars in file names * diagnostic: improve validation for list arguments * diagnostic: make `open_float` respect global diagnostic options * diagnostic: only set default handler config if unset * diagnostic: resolve nil opts tables * diagnostic: respect "if_many" source option for virtual text * diagnostic: set effective buffer number for DiagnosticChanged autocmd * diagnostic: set effective buffer number in autocmd (again) * diagnostic: use botright copen for qflist * diff: make algorithm work for vim.diff * do not cast offset to char_u * do not pass aucmd to the callback * do not save K_EVENT as lastc in Insert mode * docs: add bufnr and user_data to diagnostic-structure * docs: spelling in new underlines docs * don't include pty.h on SunOS * don't use cfsetspeed, use i and o variants * enable filetype detection and syntax highlighting with --clean * eval/method: add missing method support for existing built-ins * eval: v:lua support for `-` in module names * event-loop: call vpeekc() directly first to check for character * event-loop: check if executed register has ended * event-loop: duplicate display updating logic in vgetorpeek() * events: make v:event readonly in more events * ex_normal: spam \n in Ex mode only if in Cmdline mode * extmarks: fix signs * extmarks: splice extmarks on accepting spell * filetype.lua: always return a string in getline helper function * filetype: expand tildes in filetype patterns * filetype: fix foam pattern detection * filetype: match negative priority patterns after extensions * filetype: match on <afile> rather than <abuf> * filetype: normalize slashes in file paths * filetype: set default ft_ignore_pat in filetype.lua * float: do not switch window before deleting last listed buffer * float: don't always switch window when deleting last listed buffer * float: handle buffer deletion with floating windows * float: make laststatus=1 behave consistently with floating windows * healthcheck: handle empty reports * health: do not run external processes in a shell * highlight: accept NONE as a color name * highlight: allow globals to be cleared * highlight: always update window highlight if highlight changed * inccommand: do not change reg_prev_sub when previewing * input: do not translate scroll keys into multiclicks * input: fix clearing of reg_executing * input: never escape CSI bytes * input: put modifiers back into typeahead buffer when needed * input: remove reinterpreted ALT/META chords from recorded macro * keymap: don't coerce false to '' * keywordprg: retain terminal buffer after K * line continuation: set growsize to correct value * lsp and diagnostic highlight priority * lsp: always split text edits on \r, \r\n, and \n * lsp: always use target bufnr in location handler * lsp: avoid attaching to unloaded buffers * lsp: avoid nil workspace/symbol query * lsp: call config on_exit handler before context is cleared * lsp: correct prefix when filterText is present * lsp: correctly align start and end range to codepoints during incremental sync * lsp: create lsp requests with position offsets considering client encoding * lsp: ensure pending changes are flushed on skipped debounce * lsp: explicitly pass bufnr in didSave handler * lsp: fetch offset_encoding from client in references * lsp: fix `nil`-index behavior for UTF-8 in `_str_*index_enc` methods * lsp: fix applying multiple out-of-range TextEdits * lsp: fix lookup of boolean values in workspace/configuration * lsp: forward offset_encoding in rename handler * lsp: forward offset_encoding to apply_text_edits * lsp: handle insertion of previous line * lsp: handle negative activeSignature in signatureHelp * lsp: only send valid params in executeCommand * lsp: pass offset_encoding in formatexpr() * lsp: progress handlers should return vim.NIL on error * lsp: resolve bufnr for get_lines * lsp: resolve nil bufnr * lsp: respect all of 'fixeol', 'eol', and 'binary' applying edits * lsp: set tabSize from 'shiftwidth', not 'softtabstop' * lsp: start incremental sync range at previous newline character * lsp: strictly enforce passing offset encoding * lsp: suppress ContentModified errors from UI * lsp: use "text" filetype for plaintext * lsp: use botright copen for all handlers * lua: don't use nlua_error when exiting early * lua: print multiple return values with =expr * lua: restore priority of the preloader * lua: stricter type check when calling API function * make mode() return correct value in ex mode * man.vim: fix search function on some systems * man.vim: support calling :Man without a section again * msgpack#strptime: use calendar.timegm to get seconds since epoch * ops: str_to_reg passing NULL to memcpy * options: disallow empty 'fdc' and 'scl' * paste: avoid edges cases caused by empty chunk * paste: deal with eol and eof in Visual mode * paste: deal with trailing new line in chunk * paste: don't move cursor past the end of pasted text in Normal mode * paste: escape control characters in Cmdline mode * paste: use getcmdtype() to determine whether in cmdline mode * prompt: add missing changes from v8.1.0036 * pty_process_win/wait_eof_timer_cb: also check for proc->out.did_eof * pum_redraw: use grid_puts_len() to truncate the text * PVS/V1019: compound assignment expression is used inside condition * PVS/V560: ignore false "conditional expression is always false" * PVS/V583: the '?:' operator always returns one and the same value * query.lua: check empty table for lines * quickfix: avoid O(N^2) when filling from string typval * remote: make compile again * remote: report connection error, missing return values * remote: report on missing wait commands, typecheck lua results * remote: respect silent in error reporting * remote: use STATIC_CSTR_AS_STRING * resolve nil arguments to API functions * respect os_proc_children rv of pid not found * runtime: add missing release metadata * runtime: add syntax file for query * runtime: check markdownError before syn-clear * screen: do not do syntax highlighting at filler or folded lines * screen: do not draw filler lines post eof if already at last row * screen: do not update syntax_last_parsed when drawing folded line * screen: don't put empty sign text in line number column * screenpos, float: add top and left border adjustment * screen: truncate double-width character correctly * screen: truncate when overwriting right half of a double-width char * set nested before executing callback * set RedrawingDisabled before entering aucmd_win * signcol: always trigger a redraw * signcol: handle edge case with maximum value * signcol: update cursor when signcol changes * skip libutil on SunOS * substitute: properly check for empty command line * syntax.c: correct hunk from Vim patch 8.0.0647 * syntax: remove trailing spaces in vim.vim * tabpage: correct check for failure to close window * termdebug: handle exiting during startup properly * terminal: correctly forward mouse events * terminal: fix resize crash with pending scrollback * terminal: ignore left-release mouse action * terminal: return early if there are no invalid rows * terminal: use coladvance() to calculate buffer cursor position * test: only use buffer completion in popupmenu timer test * tests: update legacy tab switch test to be sane * translation: po file for Russian * translation: po file for Ukrainian * ts: escape lang when loading parsers * tui: avoid using uninitialized memory in kitty * tui: correct CSI sequence * tui: end streamed paste correctly when key buffer is empty * tui: remove `ESC NUL` forced escape * ui: close floating window on BufLeave event * ui: inccomand performance degradation * ui: make window resize commands manage cmdheight * update last cursor on first CursorMoved * uri: change scheme pattern to not include the comma character * use normal! <C-L> in default <C-L> mapping * vim-patch.sh: fix N/A files patterns * win_close: count the window the be closed instead of curwin * win_split_ins: do not fail when oldwin is not valid
* fix(lsp): fix lookup of boolean values in workspace/configuration (#18026)Fredrik Ekre2022-04-15
|
* fix(healthcheck): handle empty reportsEdmund Cape2022-02-09
|
* [RFC] fix: has('python') error (#17252)Shougo2022-01-31
| | | | | * fix: has('python') error * fix: functional tests
* fix(eval): v:lua support for `-` in module namesbb010g2022-01-28
|
* NVIM 0.6.0Björn Linse2021-11-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | BREAKING CHANGES * 32-bit windows builds are no longer provided. * **build deps**: use libuv 1.42.0 upstream for WIN32 (#15889) (f6c0a37), closes #15889 * removes Windows 7 support * removes support for mouse and alternate buffers in TUI for Windows 8 and 8.1 * **lsp/diagnostic:** highlight groups and signs for LSP diagnostics renamed (e.g. `LspDiagnosticsDefaultWarning` to `DiagnosticWarn`) (a5bbb93) * **diagnostic:** make DiagnosticChanged a first class autocmd (#16098) (150a592), closes #16098 * `au User LspDiagnosticsChanged` autocommands are not supported. Use the new first-class DiagnosticChanged event instead. * **lua**: `register_keystroke_callback` => `on_key` (#15460) (69fe427) * **note**: this breaking change was included in 0.5.1 FEATURES * **:source, nvim_exec:** defer script item creation until s:var access (da9b0ab) * **:source, nvim_exec:** support script-local variables (d4ed51e), closes #13143 #11507 * **lua:** add trimempty optional parameter to vim.split (5fa26e2) * **lua:** add vim.str_utf_{start,end} (#16129) (2230b57) * **lua:** add vim.str_utf_pos function (d752cbc) * **lsp:** aggregate code actions from all clients (#15121) (c36df20) * **api:** add lua C bindings for xdiff (#14536) (3d3c0c6) * **api:** evaluate statusline string #16020 (9086938) * **api:** named marks set, get, delete #15346 (49fdc62) * **api:** nvim_get_chan_info: include "argv" for jobs #15537 (0603eba), closes #15440 * **api:** win_viewport also sends line_count #15613 (086631c) * **api:** support :terminal input callback in lua (9e41e82) * **ci:** add backport PR action (#14766) (6cc456d) * **decorations:** allow more than one stacked highlight in a virt_text (1495d36) * **decorations:** support virtual lines (392c658) (8d7816c) * **diagnostic:** move vim.lsp.diagnostic to vim.diagostic and support other sources (a5bbb93) * **diagnostic:** add 'prefix' option to open_float (#16321) (3c74ba4) * **diagnostic:** add option to include diagnostic source (d43151e) * **diagnostic:** allow 'prefix' option to return highlight (cc48837) * **diagnostic:** allow customized diagnostic messages (#15742) (d999c96) * **diagnostic:** match(), tolist(), fromlist() #15704 (e61ea77) * **diagnostic:** update jumplist on goto_next/prev (#15942) (b55944e) * **diagnostic:** use `scope = 'line'` by default for `open_float()` (#16456) (217f9f8), closes #16453 * **diagnostic:** support severity_sort (32c0631) * **checkhealth:** provide function for command line completion (8b43b07) * **f_chansend:** support Blob data argument (7e9ea08) * **job:** add parameter to close stdin (eb7f24b) * **keywordprg:** use :terminal for external commands #15398 (a90513c), closes #2995 #2761 * **lsp:** add 'focus' option to open_floating_preview (#16465) (fff8827) * **lsp:** add a registry for client side code action commands (6c03601) * **lsp:** add client command support to codelens (#15820) (19a77cd) * **lsp:** add codeAction/resolve support (#15818) (ec4731d) * **lsp:** add exit_timeout flag (#16070) (80456cf) * **lsp:** add formatexpr (#16186) (52fa1d2) * **lsp:** add lsp healthcheck (e268026) * **lsp:** add per-client commands (#16101) (519d8de) * **lsp:** add tagfunc (#16103) (f940e7a) * **lsp:** add warning message for large log size (e6777a7) * **lsp:** allow configuring zindex for floating windows (#15086) (c487a73) * **lsp:** allow diagnostics to be disabled for a buffer (#15134) (1aeb945) * **lsp:** allow root_dir to be nil (#15430) (ff0833c) * **lsp:** highlight active parameter in signature help (#15018) (af26371) * **lsp:** improve vim.lsp.util.apply_text_edits (#15561) (41cfba6) * **lsp:** include original request params in handler ctx (187579f) * **lsp:** jump to diagnostics by position (#14795) (ea39ff5) * **lsp:** Make line diagnostics display prettier (e43dbfd) * **lsp:** make list handlers configurable (#15199) (3e00d4f) * **lsp:** support textDocument/prepareRename (#15514) (c1f573f) * **lsp:** use uv_spawn to check if server executable (#16430) (1a60580) * **lsp:** use vim.ui.select() in codelenses (#16004) (e7ea54a) * **lsp:** utilize textEdit.range for startbyte in omnifunc (#15957) (e9d6f7c) * **lua:** add lua-cjson as vendored dependency (8decc9f) * **lua:** add vim.mpack for msgpack support in lua (eaf661d) * **lua:** allow passing handles to vim.b/w/t (6c5e7bd) * **lua:** convert binary string with NULs to Blob (de9df82) * **lua:** document support of packages with v:lua syntax (9dd371b) * **lua:** enable stack traces in error output (#16228) (03b805a) * **lua:** expose lua-cjson as vim.json (30fed27) * **lua:** make vim.mpack support vim.NIL and vim.empty_dict() (0f59666) * **match:** allow hl group to be defined after :match command (fca52f5) * **msgpack:** convert Blobs to BIN strings (af6f454) * **health:** support lua healthchecks (9249dcd), closes #15632 * **shada:** restore Blob globals properly (ef729fb) * **terminal:** TermClose: set exit code in v:event.status #15406 (50b30de), closes #4713 * **treesitter:** add next, prev sibling method (1400841) * **treesitter:** allow to set highlight priority for queries (242608e) * **ui:** add `opt.kind` to `vim.ui.select` (#15838) (7ae86c1) * **ui:** add vim.ui.input and use in lsp rename (#15959) (16d4af6) * **ui:** add vim.ui.select and use in code actions (#15771) (63fde08) * **vim script:** support calling v:lua as a method (b2994e3) CHANGES * **defaults:** auto-create backup dir (4600193) * **defaults:** inccommand=nosplit #15395 (7215d35) * **defaults:** set undo points in <C-U> and <C-W> (#15400) (2cb8db3) * **defaults:** limit syntax cost on CmdwinEnter #15401 (622a36b), closes #6289 #6399 * **defaults:** map CTRL-L to search highlights, update diffs #15385 (0aa8128) * **defaults:** map Y to y$ #13268 (5a111c1), closes #416 #6289 * **defaults:** remove 'options' from viewoptions #15397 (3954537), closes #6289 * **defaults:** set hidden (f6c72b7) * **defaults:** set nojoinspaces (d417e67) * **defaults:** switchbuf=uselast #15394 (4ba7495) * **runtime:** add packages as `"/pack/*/start/*"` patterns to &rtp (9df7e02) * **startup:** load builtin plugins with --clean #15893 (c7a63f3), closes #15605 * **terminal:** set cursorlineopt=number in terminal mode (#15493) (c61a386) * **window:** skip non-focusable floats for :windo (#15378) (e8631cb) PERFORMANCE IMPROVEMENTS * **api:** avoid spurious allocations when converting small objects (705e8f1) * **highlight:** use a hashtable for highlight group names (bb4b4d7) * **lua:** optimize vim.deep_equal #15236 (4b452d4) * **lua:** don't use regexes inside lua require'mod' (ea2023f), closes #15147 #15497 * **lsp:** improve json deserialization performance (#15854) (912a6e5) * **map:** reduce double pointer indirection to single pointer indirection (9e651a9) * **treesitter:** avoid string lookup of highlight name in hot loop (2460f0a) FIXES * **:source, nvim_exec:** handle Vimscript line continuations #14809 (6188926), closes #14807 * **:source:** copy curbuf lines to memory before sourcing #15111 (afdc9e6) * allow str_utfindex second argument to be an explicit nil (#16448) (512ec46) * **api:** fix crash after set_option_value_for() #15390 (8b0e6cc), closes #14097 #13577 * **api:** fix nvim_buf_set_extmark (2338345) * **autocmd:** fix conditions in block_autocmds, unblock_autocmds #15372 (29712ae), closes #6279 * **buffer_updates:** cleanup test behavior (54b2c68) * **buffer_updates:** handle :delete of the very last line in buffer (8335e26) * **buffer_updates:** handle :sort of already sorted buffer (ef687d3) * **buffer_updates:** make `lockmarks` not affect extmarks and buffer updates. fixes #12861 (7d171b1) * **bufupdates:** send correct updates for visual paste (1423146) * **build:** add an env var to re-enable the colors (5087347) * **build:** call find_package(Threads) before using its variables (f446ab3) * **build:** export symbols on Windows (aa644b7) * **build:** fix build failure in MinGW (0503e17) * **build:** make vendored libmpack and libmpack-lua build properly (2a08aef) * **channel:** throw error if sending to internal channel w/o terminal (3b89fee) * **checkhealth:** duplicate checks if module name has "-" #15935 (a36c6e5) * **checkhealth:** mitigate issues with duplicate healthchecks #15919 (acd5e83), closes #15259 * **ci:** disable broken test on openbsd on all CI due to resource constraints (a3e2636) * **ci:** re-run GHA for ready_for_review events (#15377) (c6ef956) * **decorations:** crash when :bdelete (extmark_free_all) after clear_namespace (cd353aa), closes #15212 * **defaults:** "syntax sync maxlines=1" on CmdwinEnter #15552 (5f8518b), closes #15401 * **defaults:** do not map Y in visual-mode #15387 (54726e8), closes #13268 * **diagnostic:** allow floats to be focusable (#16093) (427bac6) * **diagnostic:** change default severity_sort order (938ed45) * **diagnostic:** clamp line numbers in setqflist and setloclist (5b0d8f8) * **diagnostic:** correctly handle folder level diagnostics (f87779a) * **diagnostic:** deepcopy diagnostics before clamping line numbers (2abc799) * **diagnostic:** do not focus floats in goto functions (#16433) (b5b025f) * **diagnostic:** don't clamp line numbers in setqflist (0341c68) * **diagnostic:** don't return nil when callers expect a table (#15765) (057606e) * **diagnostic:** don't use nil col if missing from qflist (#16357) (5e46f64) * **diagnostic:** error on invalid severity value (#15965) (d5dd0aa) * **diagnostic:** fix navigation with diagnostics placed past end of line (34bb5fa) * **diagnostic:** fix option resolution in open_float (#16229) (fd34784) * **diagnostic:** fix wrong data type in setqflist() (3fd1450) * **diagnostic:** get line count per buffer when clamping (c59f200) * **diagnostic:** handle an unknown or missing client (#16242) (1fdbd29) * **diagnostic:** handle diagnostics placed past the end of line (#16095) (a2994c8) * **diagnostic:** make set() go through cache when calling show() (d93f47d) * **diagnostic:** only update decorations for loaded buffers (#15715) (924e8e4) * **diagnostic:** preserve fields from LSP diagnostics via user_data (#15735) (17b7968) * **diagnostic:** remove useless highlight links (#15683) (c13242c), closes #15585 * disable clipboard when test registers (dd63d93) * **docgen:** add tagfunc.lua (0746f00) * **doc:** various fixes #15604 (4eb1ebb) * **eval:** add the vimscript-1 feature to has() (18b32fc) * **eval:** checking for a non-empty string is too strict (#15987) (1dbbaf8) * **eval:** fix has('wsl') #16153 (16d06fa), closes #12642 #16143 * **eval:** fixup for empty modifier in fnamemodify (#16368) (a7ad509), closes #16367 * **extmark:** fix missing virt_lines when using id param of set_extmark (995dbd2) * **extmarks:** splice extmarks on nv_Undo #15920 (e069361) * **fileio:** replace characters over INT_MAX with U+FFFD (#16354) (a2e5c2f), closes #11877 * **float:** fix potential heap corruption in win_redr_border (de670f3) * **float:** redraw if w_border_adj changed (7ff1bc1) * **heath/provider.vim:** using list as string #16007 (5365f24), closes #15988 * **highlight:** remove syncolor.vim, always include syntax colors (9afa0d2), closes #15176 #12573 #15205 * **inccommand:** ignore trailing commands only for *previewed* command #15638 (1f8c91b), closes #8796 #7494 * include ci/ in exported tarball (d6f03aa), closes #15856 * **input:** never reinterpret unmapped ALT- chrods in Terminal mode (#16222) (5ce35ab) * **input:** resolve isolated (non-ALT/META) mappings #13109 (c4857b6), closes #13042 #13086 #15869 * **jobwait:** always drain process event queues #15402 (3c081d0), closes #15349 * **lsp_spec:** tests depended on previous session (069d1de) * **lsp:** accept file URIs without a hostname (a2c2a08) * **lsp:** add done flag to messages returned in util.get_progress_messages() (#15985) (45fa70a) * **lsp:** add placeholder cancel function (#16189) (4da0351) * **lsp:** add textDocument/prepareRename to capability map (#15961) (fcc11d5), closes #15899 * **lsp:** adjust legacy show diagnostic functions to use correct scope (#16106) (dc6c9fe) * **lsp:** allow diagnostic.clear to accept nil bufnr (#15137) (4ed2d4f) * **lsp:** avoid duplicates in client attached buffers (#16099) (c5525f2) * **lsp:** avoid serializing boolean as key (#15810) (96614f8) * **lsp:** change rpc start notify level to warn (#16467) (04c7b55) * **lsp:** change signature of buf_highlight_references (#16345) (eb3d591) * **lsp:** correctly parse LSP snippets #15579 (516775e), closes #15522 * **lsp:** default to UTF-16 in make_position_params (2e3a474) * **lsp:** do not index nil client in progress (#16262) (8f31b21) * **lsp:** do not invoke handlers for unsupported methods (#15926) (d288daa) * **lsp:** don't update active_clients on exit_timeout (#16192) (98f5782) * **lsp:** enable additional capabilities (#15470) (5d63354) * **lsp:** ensure buffers are re-attached on rename (#16266) (ee3a58d) * **lsp:** Ensure users get feedback on references/symbols errors or empty results (256570a) * **lsp:** expose ContentModified error code to callbacks (#15262) (3f09732) * **lsp:** fix cursor row after textEdits (#16038) (bd2f61c) * **lsp:** gracefully handle nil workspaceFolders (#16284) (0ecc58c) * **lsp:** guard textDocument/codeAction command logic #15769 (433bda4) * **lsp:** improve symbols_to_items performance (#16197) (5ad15c9) * **lsp:** Include client name in handler error messages (#15227) (24f2b9e) * **lsp:** pass bufnr for async formatting (#15084) (c31bc6e) * **lsp:** persist diagnostic config for clients (bcc9ba5) * **lsp:** prevent double <text> for cached plaintext markup (910967e) * **lsp:** restore diagnostics extmarks on buffer changes (#15011) (77b33e4) * **lsp:** rewrite incremental sync (#16252) (2ecf0a4) * **lsp:** send buffer contents joined on fileformat-specific linebreak (#16334) (134a638) * **lsp:** send textDocument/didChange for each buffer (#16431) (3451121) * **lsp:** support duplicate params in signature help (#15032) (9132b76) * **lsp:** update lsp-handler signature in call_hierarchy (#15738) (8164adc) * **lsp:** update workspace/applyEdit handler signature (#15573) (3f526fe) * **lua:** fix vim.deepcopy for metatables & cycled tables (#16435) (eb876a0) * **lua:** preserve argument lists which are not lists (6896d22) * **man.vim:** ensure buftype=nofile after :tag or :stag #15675 (29bc648), closes #15650 * **man.vim:** filetype=man is too eager #15488 (2548a9e), closes #15487 #15487 * **mouse:** fix mouse drag positions on multigrid #12667 (0dcfd0e), closes #15091 * **mouse:** correct dragged position in composed layout (810da1a) * **multigrid:** mouse events crash neovim (28ac6c0) * **nvim_open_win:** crash if autocmds delete buffer/window #15549 (0c06da1), closes #15548 * **options:** using :set fillchars should clear local value (7528bce) * prevent K_EVENT from stopping Select mode CTRL-O #15688 (5f144ef) * **provider:** compare versions as number, not string (python 3.10 support) #15937 (e16adbf), closes #14586 * **screen:** make display_tick monotonic up to 2^64. fixes #16152 (9e88c9c) * **screen:** missing search highlights when redrawing from timer #15380 (db695cc), closes #13074 #14064 * **shared:** do not treat empty tables as list in deep extend (#15094) (526fc60) * **sign:** reset auto sign column with minimum in float win minimal style (c8f57f6) * **startup:** init.lua: set $MYVIMRC to absolute path #15748 (c76cddf) * **termdebug:** replace mapset with nvim_set_keymap (#15699) (4d7dcbe) * **termdebug:** replace term_getline with getbufline #15598 (11289ad) * **terminal:** close without ! if the job is stopped (55defa1), closes #4683 * **terminal:** free terminal if close_buffer() closes a closed terminal (#16264) (14def4d) * **test/dumplog:** tostring(rv) before formatting as string (ddaa0cc) * **tests:** use isolated XDG_DATA_HOME in startup tests (8e663e2) * **treesitter:** do not map hl_group when no mapping is set (f489d98) * **treesitter:** run predicates more often in iter_matches (458f2aa) * **tui:** extend smglr ignores to smglp and smgrp (#16239) (3ba800f) * **tui:** remove obsolete $NVIM detection #15791 (4414584), closes #12937 #11390 * **tutor:** formatting, layout #15098 (c52ec8f), closes #15088 * **ui:** use nowait for q mapping in floating window (#16427) (c132144) * **v:lua:** fix emsg when calling v:lua directly (da9005a) * **vim-patch.sh:** run nvim with -u NONE -n #16179 (97ae0ab) * **vim.opt:** vimL map string values not trimmed (#14982) (4906156) * **window:** win_close from other tabpage #15454 (90b2da1), closes #15313 * **windowing:** positioning of relative floats (9065730)
* feat(lsp): add per-client commands (#16101)Michael Lingelbach2021-11-01
|
* feat(lsp): track pending+cancel requests on client object #15949jdrouhard2021-10-29
|
* fix(runtime): don't use regexes inside lua require'mod'Björn Linse2021-10-17
| | | | | | | | | | | | Fixes #15147 and fixes #15497. Also sketch "subdir" caching. Currently this only caches whether an rtp entry has a "lua/" subdir but we could consider cache other subdirs potentially or even "lua/mybigplugin/" possibly. Note: the async_leftpad test doesn't actually fail on master, at least not deterministically (even when disabling the fast_breakcheck throttling). It's still useful as a regression test for further changes and included as such.
* fix(lsp): update tests using 0.5.0 handler calls (#15969)Michael Lingelbach2021-10-08
| | | Fixes test regression introduced in https://github.com/neovim/neovim/pull/15262
* fix(lsp): expose ContentModified error code to callbacks (#15262)Rishikesh Vaishnav2021-10-08
|
* fix(checkhealth): mitigate issues with duplicate healthchecks #15919Javier Lopez2021-10-05
| | | | | | | | | | | | | | | * fix(runtime/health): mitigate issues with duplicate healthchecks Previously if a healthcheck was found as Lua and Vim it was executed both times. This new implementations prefers Lua, therefore if two are found It only runs the Lua one, this way a plugin can mantain both implementations the Lua one with the method `check()` and the autoload function `#check()` (for none HEAD nvim versions). **Note: This will require plugins to use `check()` as the function name, since the autoload function that wraps the lua implementation won't be called** * docs(health): use spaces and don't overuse backtics followup to #15259
* test(runtime/health): cover lua healthchecksJavier López2021-10-04
| | | | | | | - Add tests for lua healthchecks (failure, success and submodules). - Reword some of the test naming for improved logs readability. - Modify render test to accomodate the changes of the health autoload function. - Add test for :checkhealth completion of Lua healtchecks.
* fix(runtime): fix ordering of "after" packagesBjörn Linse2021-09-30
| | | | they must come after ordinary runtime dirs which are not "after"
* feat(lsp): add codeAction/resolve support (#15818)Mathias Fußenegger2021-09-28
| | | Closes https://github.com/neovim/neovim/issues/15339 and https://github.com/neovim/neovim/issues/15828
* fix(runtime): make a copy of runtime_search_path when iteratingBjörn Linse2021-09-27
| | | | | This is to prevent concurrent modification, just like save_rtp in the vim 8 implementation
* feat(lsp): use cjson for lsp rpc (#15759)Michael Lingelbach2021-09-26
|
* refactor(runtime): handle pack/foo/start/bar/after dirs properlyBjörn Linse2021-09-18
| | | | | | | | The order should be: XDG_CONFIG_HOME/nvim XDG_DATA_HOME/nvim/site/pack/foo/start/bar/ XDG_CONFIG_HOME/nvim/after XDG_DATA_HOME/nvim/site/pack/foo/start/bar/after
* feat(lsp): support textDocument/prepareRename (#15514)Zi How Poh2021-09-08
|
* feat(terminal): TermClose: set exit code in v:event.status #15406Gregory Anders2021-08-20
| | | Closes #4713
* NVIM v0.5.0v0.5.0Björn Linse2021-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This release represents ~4000 commits since v0.4.4, the previous non-maintenance release. Highlights include builtin support for LSP, new APIs for extended marks (with byte resolution tracking of changes) and buffer decorations, as well as vast improvements to lua as a plugin and configuration language. Experimental support for tree-sitter as a syntax engine is also included, building on the new core APIs for byte tracking and decorations. FEATURES: New API functions: nvim_exec: execute multiline vim script blocks nvim_get_hl_id_by_name: Gets a highight definition by name nvim_exec_lua: new name for nvim_execute_lua nvim_notify: Notify the user with a message nvim_get_runtime_file: Find files in runtime directories nvim_get_all_options_info: Get option information for all options nvim_get_option_info: Get option information for one option nvim_echo: Echo a message with highlights nvim_open_term: Open a virtual terminal in a buffer nvim_chan_send: send data to a channel. (like chansend() but supports lua strings) nvim_set_decoration_provider: callback driven decoration API for a namespace nvim_buf_set_text: Set/replace a character range in a buffer nvim_buf_delete: Delete the buffer. |:bwipeout| nvim_buf_get_extmark_by_id: Returns position for a given extmark id. nvim_buf_get_extmarks: get extmarks in traversal order. nvim_buf_set_extmark: Creates or updates an extmark. nvim_buf_del_extmark: Removes an extmark. nvim_buf_call: call a function with buffer as temporary current buffer nvim_win_hide: Closes the window and hide the buffer it contains |:hide| nvim_win_call: Calls a function with window as temporary current window. New UI events: redraw.screenshot redraw.win_viewport Lua: 767cd8b17 #12235 startup: add init.lua as an alternative user config 687eb0b39 #14686 feat(startup): Source runtime/plugin/**/*.lua at startup #14686 runtime: allow lua in various runtime search paths such as syntax/ ftdetect/ indent/ ftplugin/ compiler/ colors/ 43956dea5 #13479 lua: Add vim.opt and fix scopes of vim.o 1407899c3 #12268 lua: Add buffer, window and tab accessors be662fe5c lua: vim.wait implementation 2b663c061 #14213 viml: embed Lua syntax highlighting 901dd79f6 feat: add completion to ':lua' 82688973 lua: complete methods in metatables 342148525 runtime: propagate lua parsing errors while using "require" aaca2c1c4 #13276 feat(lua): improve error message to make it actionable c60c7375f startup: handle autoload and lua packages during startup 3ccdbc570 #12536 lua: add vim.register_keystroke_callback 971a191c4 lua: Add ability to pass lua functions directly to vimL 91e41c857 #12401 lua: add vim.highlight.range f2894bffb #12279 lua: Add highlight.on_yank ae5bd0454 #11969 lua: add tbl_deep_extend ea4127e9a lua: metatable for empty dict value dab40f43b Add v:lua.func() vimL syntax for calling lua 678a51b1d Lua: vim.validate() 474d0bcbf lua: vim.rpcrequest, vim.rpcnotify, vim.NIL 8ee7c94a9 lua: add vim.fn.{func} for direct access to vimL function d0d38fc36 #11442 Lua: vim.env, vim.{g,v,w,bo,wo} Tree-sitter: Note: tree-sitter is considered experimental for 0.5. There's remaining bugs for buffer parsing, as well as known performance issues for large files and injected (nested) languages. e93342629 #10124 Tree-sitter API for lua 440695c29 tree-sitter: implement query functionality and highlighting prototype 8bea39f37 feat(treesitter): allow injections to be configured through directives 929f19414 feat(treesitter): add offset predicate for language injection cd75d3289 #14200 feat: treesitter checkhealth 1a631026a feat(treesitter): add language tree d3f544002 treesitter: runtime queries 3c5141d2c #13008 treesitter: add string parser 9437327d5 treesitter: use new on_bytes interface e4b5efa51 treesitter: use decoration provider API d6209a7b8 fix: Add a test and it is so pretty 836c31032 feat(ts): bump tree-sitter to v0.20.0 LSP client: 00dc12c5d #11336 lua LSP client: initial implementation d5aaad14e #11430 Followup improvements to LSP ee7ac469c #11578 LSP: Use async completion for omnifunc. 070bd3ea2 #11604 LSP: shrink API, improve docs 25afa10f9 #11669 Merge 'LSP: differentiate diagnostic underline by severity' e956ea767 #11777 LSP: show diagnostic in qf/loclist dd8b29cfe #11838 LSP: set InitializeParams.rootPath value 0c5d2ffeb #11837 Merge 'LSP: fixes, improve test visibility' ca8699378 #11638 LSP: implement documentHighlight 220a2b05c LSP/references: Add context to locations returned by server ccb038dc6 LSP/completion: add textEdit support da6f38ab3 #12313 LSP: Add workspace.applyEdit client capabilities f559e5249 #11607 LSP: Add textDocument/codeAction support 0d83a1c43 #12638 LSP: Feature/add workspace folders fd507e278 #13641 LSP: window/showMessageRequest e467d2939 LSP: Move workspace/configuration handler from nvim-lspconfig to core 2bdd553c9 feat(lsp): Add codelens support UI: f8134f2fd screen.c: remove fold_line special case c146eddc8 experimental support for per-window color schemes a1508c9f6 nvim__screenshot (dump TUI state to file) 08fe10010 terminal: enable pass through indexed colors to TUI in rgb mode 5a8569942 tests/ui: make screen.lua use "linegrid" representation internally 8fe19d9d8 screen: make ui_compositor aware of the intended size of a float 54ce1010e extmark: add new flexible "decorations" abstraction 4781333a7 decorations: allow virt_text overlay at any column bdebe8516 decorations: use extmark column adjustments for buffer highlights 7b488314d decorations: Allow highlights beyond end of line hl_eol 425bc438a decorations: add additional styling of virt_text overlays edb5864a2 floats: z-index 243820ebd floats: add borders (MS-DOS MODE) 5b6edc852 feat(float): add rounded borders preset 4a36ec6da #14310 float: add "solid" border style vim patches: around ~1000 vim patches and runtime updates got merged. Hooray! Changes include improvements to quickfix, prompt buffers, incsearch, display of search counts, and much much more. various features and changes: 858c05613 #12809 Support for :perl, :perlfile, :perldo and perleval() bc86f76c0 api/buffer: add "on_bytes" callback to nvim_buf_attach 19b623708 jobstart now supports env/clear_env ef7c6b972 Support specifying "env" option for termopen() 7c4f34966 #13287 switch from travis to github actions 24db59ca8 feat: implement BufModified autocmd b83d8223f implement Scroll autocommand 8caf84130 Lower "closed by the client" message level to INFO 7de276b87 bump libvterm to 0.1.4 097ec71bd #14096 aarch64/linux: fix build by updating LuaJIT bd5f0e969 #12531 support autoread using tui focus tracking 8a1276005 #12382 Add v:event.visual during `TextYankPost` 802f8429d api(nvim_open_win): add "noautocmd" option FIXES: 21444552c BugFix(clipboard): Fix block paste not working properly 01493e799 #14413 api: fix nvim_exec() silencing behaviour 9699f3be1 fix(doc): Add '/site' to stdpath('data') example in `:help 'rtp'` 581b2bcde screen: fix problem with p_ch eae4b1e5c luaref: fix leaks for global luarefs 409b2711f fix: segfault when pasting in term with empty buffer cf6c23fb0 #14273 fix plenty of errors discovered by clang 21035cff9 #14500 fix plenty of errors discovered by coverity bca19138b #13987 tui: fix possibility of evaluating uninitialized variables 9f2335937 fix_cursor: do not change line number when edit will not impact cursor row 33f92fe02 fix(pty): Always use $TERM from the job's env dict 6249059d4 checkhealth: fix terminfo problems on Windows 397be5d38 #12811 UI: fix cursor not displayed after hiding and un-hiding 87afc9031 screen.c: fix an issue with wrap and folds b419e39a2 screen.c: fix last character on foldtext 2ea312769 #13688 screen.c: fix display of signcolumn=auto in diffs c2d288e29 Fix screen terminal family issues 314b222c2 #14127 Fix click on foldcolumn with vsplit e65d0e53b vim.fn: throw error when trying to use API function
* fix(lsp): do not convert vim.NIL to nil in listsAkin Sowemimo2021-06-24
|
* fixup! tests: fix system_spec when run with clipboard manager (#10956)Jan Edmund Lazo2021-06-05
| | | | | | uv_process_options_t "args" member was set to a local array from stack. when uv_process_options_t variable is outside the function. https://pvs-studio.com/en/docs/warnings/v507/
* api: allow open non-current buffer as terminal (+ xmas bonus)Björn Linse2021-03-12
| | | | vim.api.nvim_chan_send(vim.api.nvim_open_term(0), io.open("/path/to/smile.cat", "r"):read("*a"))
* lsp: Resolve codeLense server capabilities (#14056)Josa Gesell2021-03-10
|
* lsp: add incremental text synchronizationMichael Lingelbach2021-03-09
| | | | | * Implementation derived from and validated by vim-lsc authored by Nate Bosch
* lsp: remove deprecated references to 'callbacks' (#13945)Matthieu Coudron2021-02-23
| | | | | vim.lsp.callbacks was deprecated a few months ago. This is a cleanup before the release. Use vim.lsp.handlers instead.
* LSP: add test for workspace/configuration handlerMichael Lingelbach2021-01-01
|
* eval: executable(), exepath() accept strings onlyJan Edmund Lazo2020-12-11
| | | | | | | | Cherry-pick f_executable(), f_exepath(), check_for_string() from patch 8.2.2117. Rename check_for_string() to tv_check_for_string(). https://github.com/vim/vim/commit/7bb4e74c38642682cfdd0cb4052adfa5efdd7dd1 Close https://github.com/neovim/neovim/issues/13485
* runtime: propagate lua parsing errors while using "require"dm1try2020-12-10
|
* startup: load files from &packpath . '/start/{pluginname}'Björn Linse2020-11-19
| | | | | | | | | | | Quoting the existing docs: Packages are loaded. These are plugins, as above [&runtimepath], but found in the "start" directory of each entry in 'packpath'. Every plugin directory found is added in 'runtimepath' and then the plugins are sourced. Also tj didn't think I could do it.
* Add PVS comment to new source filesJames McCoy2020-11-10
|
* startup: handle autoload and lua packages during startupBjörn Linse2020-11-02
| | | | ¡NO HAY BANDA!
* lsp: only send buf requests to servers that support the request (#12764)francisco souza2020-10-25
| | | | | | | | | | | | | Refactors how required capabilities are detected and validated, and make sure requests are only sent to clients that support it (and only fail if no clients support the provided method). The validation happens at the buf_request level, because we assume that if someone is sending the request directly through the client, they know what they're doing. Also, let unknown methods go through. This is extracted from #12518 and closes #12755. Co-authored-by: francisco souza <fsouza@users.noreply.github.com>
* test/LSP: assert contents of log fileJustin M. Keyes2020-02-16
|
* lsp/rpc.lua: fix `env` application functionJustin M. Keyes2020-02-16
| | | | Env vars must be merged with the current env.
* LSP: fix validate_client_configJustin M. Keyes2020-02-16
| | | | | - `cmd_env` is a table not a function. - tests: Set $NVIM_LOG_FILE for fake LSP server.
* test/LSP: use less-generic exit codeJustin M. Keyes2020-02-16
| | | | | | | | | | | | | | | | | | | | | - os.exit(1) is too generic, since code 1 may be caused by Nvim exiting for some other reason. Change it to os.exit(101). - style: de-architect json_encode/json_decode calls. Failure seen in travis macOS job: https://travis-ci.org/neovim/neovim/jobs/647849133 [ FAILED ] test/functional/plugin/lsp_spec.lua@ 266 SP basic_init test should not send didOpen if the buffer closes before init test/functional/plugin/lsp_spec.lua:297: exit code Expected objects to be the same. Passed in: (number) 1 Expected: (number) 0 stack traceback: test/functional/plugin/lsp_spec.lua:297: in function 'on_exit' test/functional/plugin/lsp_spec.lua:100: in function 'test_rpc_server' test/functional/plugin/lsp_spec.lua:272: in function <test/functional/plugin/lsp_spec.lua:266>
* lsp: transmit "\n" after last line when 'eol' is setBjörn Linse2019-11-21
| | | | | Otherwise some servers like clangd will emit spurious "no newline at end of file" warnings.
* lua LSP client: initial implementation (#11336)Ashkan Kiani2019-11-13
| | | | | | Mainly configuration and RPC infrastructure can be considered "done". Specific requests and their callbacks will be improved later (and also served by plugins). There are also some TODO:s for the client itself, like incremental updates. Co-authored by at-tjdevries and at-h-michael, with many review/suggestion contributions.
* tests: let_spec: enable "multibyte env var to child process" (#11233)Daniel Hahler2019-10-18
|
* build: do not build test fixtures by default (#11230)Daniel Hahler2019-10-18
| | | | | - tty-test is also used on Windows - FUNCTIONALTEST_PREREQS: add printenv-test
* fix api_level_6.mpackJustin M. Keyes2019-09-15
| | | | | This was generated incorrectly in the 0.4.1 release, fixed in the 0.4.1 release.
* NVIM v0.4.0v0.4.0Justin M. Keyes2019-09-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 <m-ä> 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 <C-R> 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.
* tests: fix system_spec when run with clipboard manager (#10956)Daniel Hahler2019-09-12
| | | | | | | | | * tests: move os_kill to functional helpers * tests: fix system_spec when run with clipboard manager Replaces "xclip" with a dedicated helper program. Fixes: https://github.com/neovim/neovim/issues/4900#issuecomment-501866842
* test: shell-test.c: flush all streamsJustin M. Keyes2019-09-01
|
* shell-test: remove REP_NODELAY, less delay with REPDaniel Hahler2019-08-30
| | | | | | | | | REP_NODELAY was added because REP delayed too much. This changes REP to only add a delay on every 100th line instead. This helps to cover the additional pulse steps with out_data_decide_throttle, which would have required to change REP_NODELAY anyway.
* win: stream: reset tty stream on closeAnciety2019-08-20
| | | | | | | | | | This was overlooked in 8072f085d2ed. Analogous to 8a782f1699e2. fix #10668 ref 8072f085d2ed #9884 ref 8a782f1699e2 #2377
* tests: output_spec: use shell-test REP_NODELAY (#10726)Daniel Hahler2019-08-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix flaky "shell command :! throttles shell-command output greater than ~10KB:": [ RUN ] shell command :! throttles shell-command output greater than ~10KB: warning: Screen changes were received after the expected state. This indicates indeterminism in the test. Try adding screen:expect(...) (or wait()) between asynchronous (feed(), nvim_input()) and synchronous API calls. - Use screen:redraw_debug() to investigate; it may find relevant intermediate states that should be added to the test to make it more robust. - If the purpose of the test is to assert state after some user input sent with feed(), adding screen:expect() before the feed() will help to ensure the input is sent when Nvim is in a predictable state. This is preferable to wait(), for being closer to real user interaction. - wait() can trigger redraws and consequently generate more indeterminism. Try removing wait(). ERR test/functional/ui/screen.lua:579: Failed to match any screen lines. Expected (anywhere): " %." Actual: |XXXXXXXXXX 591 | |XXXXXXXXXX 592 | |XXXXXXXXXX 593 | |XXXXXXXXXX 594 | | | | | |{3:-- TERMINAL --} | stack traceback: test/functional/ui/screen.lua:579: in function '_wait' test/functional/ui/screen.lua:367: in function 'expect' test/functional/ui/output_spec.lua:63: in function <test/functional/ui/output_spec.lua:53> Log: https://travis-ci.org/neovim/neovim/jobs/569082705#L5355 (gcc-functionaltest-lua)