aboutsummaryrefslogtreecommitdiff
path: root/test
Commit message (Collapse)AuthorAge
* Revert "fixup! add benchmark"Lewis Russell2024-02-08
| | | | This reverts commit b0bff57a3bc79481d89595791e3fb0e4dd10c896.
* fixup! add benchmarkLewis Russell2024-02-08
|
* vim-patch:9.1.0083: Redrawing can be improved when deleting lines with 'number'zeertzjq2024-02-08
| | | | | | | | | | | Problem: Redrawing can be improved when inserting/deleting lines with 'number'. Solution: Only redraw the number column of lines below changed lines. Add a test as this wasn't previously tested. (zeertzjq) closes: vim/vim#13985 https://github.com/vim/vim/commit/ae07ebc04b0726e12b1af39d52e01d86ae79ef0a
* vim-patch:9.1.0082: Redrawing can be improved when deleting lines with ↵zeertzjq2024-02-08
| | | | | | | | | | | | | | 'cursorline' Problem: Redrawing can be improved when deleting lines with 'cursorline'. Solution: Use smarter invalidation and adjustment. Remove unnecessary UPD_VALID as it is already set at the top of the loop. Make the test for vim/vim#4862 fail without the fix. (zeertzjq) closes: vim/vim#13986 https://github.com/vim/vim/commit/7ce34c9a947b17a8b5e81e7c2335a63552182d10
* feat(api): pass 0 to nvim_get_chan_info for current channel (#27321)nikolightsaber2024-02-08
| | | | | | | | | | | Getting current channel info was kind of annoying via RPC. Two functions had to be called: 1. `nvim_get_api_info` which returns `[channel_id, meta_data]`. - This results in `channel_id = api.nvim_get_api_info()[0]`. - Here the meta_data is sent but never used. 2. Finally call `nvim_get_chan_info(channel_id)`. This commit reduces the need for `nvim_get_api_info` as passing 0 returns current channel info.
* refactor(api): use keydict and arena for more api return valuesbfredl2024-02-08
| | | | | | | Implement api_keydict_to_dict as the complement to api_dict_to_keydict Fix a conversion error when nvim_get_win_config gets called from lua, where Float values "x" and "y" didn't get converted to lua numbers.
* perf: improve utf_char2cells() performance (#27353)VanaIgr2024-02-07
| | | | | | | | | | | | | | `utf_char2cells()` calls `utf_printable()` twice (sometimes indirectly, through `vim_isprintc()`) for characters >= 128. The function can be refactored to call to it only once. `utf_printable()` uses binary search on ranges of unprintable characters to determine if a given character is printable. Since there are only 9 ranges, and the first range contains only one character, binary search can be replaced with SSE2 SIMD comparisons that check 8 ranges at a time, and the first range is checked separately. SSE2 is enabled by default in GCC, Clang and MSVC for x86-64. Add 3-byte utf-8 to screenpos_spec benchmarks.
* fix(event-loop): process input before events (#27358)zeertzjq2024-02-07
| | | | | | | | | | | Problem: When nvim_input is followed immediately by non-fast events on RPC, both events and input are available after the polling done by the os_inchar() in state_enter(), but state_enter() then chooses to process events even if input is available, which is inconsistent with state_handle_k_event() that stops processing events once input is available. Solution: Also check for available input after the os_inchar() in state_enter().
* feat(treesitter): show root nodes in :InspectTree (#26944)altermo2024-02-06
| | | | Co-authored-by: altermo <> Co-authored-by: Jongwook Choi <wookayin@gmail.com>
* fix(column): handle w_redr_statuscol at end filler lines (#27365)zeertzjq2024-02-06
| | | | There doesn't seem to be an easy solution that doesn't involve a goto. Also remove duplicate assignment in win_line().
* vim-patch:9.1.0079: LineNrAbove/Below highlighting wrong on wrapped lines ↵zeertzjq2024-02-06
| | | | | | | | | | | | | (#27363) Problem: LineNrAbove and LineNrBelow background wrong on wrapped lines. Solution: Update number column also for wrapped part of a line. (zeertzjq) closes: vim/vim#13974 https://github.com/vim/vim/commit/ebfd856cfdf6ea0b16c8d115000961c998ce97da Cherry-pick test_number.vim changes from patch 9.0.0626.
* docs: small fixes (#27213)dundargoc2024-02-06
| | | Co-authored-by: Matthieu Coudron <886074+teto@users.noreply.github.com>
* test(tui_spec): prevent race between nvim_input and nvim_paste (#27356)zeertzjq2024-02-06
|
* test: add test for 'foldcolumn' with cmdwin (#27355)zeertzjq2024-02-06
|
* fix(tui): `space_buf` overflow when clearing screen (#27352)Sean Dewar2024-02-06
| | | | | | | | | Problem: `tui->space_buf` may be smaller than the width of the TUI or widest grid, causing an overflow when calling `tui_grid_clear` if `print_spaces` is called from `clear_region` (clears the TUI's screen since #23428). Solution: resize `space_buf` to be wide enough to fit the TUI or widest grid. Didn't bother shrinking the allocation if the max widths decrease.
* test(treesitter): add test cases for inspect_treeJongwook Choi2024-02-05
| | | | Co-authored-by: altermo <107814000+altermo@users.noreply.github.com>
* fix(lsp): handle adjacent snippet tabstopsMaria José Solano2024-02-05
|
* Merge pull request #27328 from wookayin/fix/lsp-tagfuncLewis Russell2024-02-05
|\
| * test(lsp): add test cases for vim.lsp.tagfuncJongwook Choi2024-02-03
| | | | | | | | | | | | | | Problem: There is no test case for vim.lsp.tagfunc; so CI was unable to catch the infinite loop bug (#27325). Solution: Add test cases for vim.lsp.tagfunc().
* | fix(redraw): update Visual selection properly with splits (#27343)zeertzjq2024-02-05
| |
* | fix(inccommand): update topline after moving cursor (#27341)zeertzjq2024-02-05
| |
* | perf(redraw): only redraw Visual area when cursor has moved (#27340)zeertzjq2024-02-05
| |
* | vim-patch:9.1.0076: luau config file not detectedChristian Clason2024-02-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: luau config file not detected (lopy) Solution: Detect it as jsonc (lopy) fixes: vim/vim#13960 closes: vim/vim#13970 https://github.com/vim/vim/commit/de7f5bde6c598d4da4ce5b30328eb458962ba60a Co-authored-by: lopy <70210066+lopi-py@users.noreply.github.com>
* | vim-patch:9.1.0075: insert completion not correct when adding new leader ↵Raphael2024-02-04
|/ | | | | | | | | | | (#27332) Problem: insert completion not correct when adding new leader Solution: Reset compl_curr_match to compl_shown_match (glepnir) closes: vim/vim#13957 https://github.com/vim/vim/commit/cbb46b439888e10f87baaca504eafd191723c44b
* fix(keycodes): simplify S- properly when D- is present (#27316)zeertzjq2024-02-03
|
* test(old): correct path to .valgrind.supp (#27306)zeertzjq2024-02-02
|
* fix(vim.system): don't process non-fast events during wait() (#27300)zeertzjq2024-02-02
| | | | | | | | Problem: Processing non-fast events during SystemObj:wait() may cause two pieces of code to interfere with each other, and is different from jobwait(). Solution: Don't process non-fast events during SystemObj:wait().
* feat(quickfix): support -q - to read 'errorfile' from stdin (#27303)zeertzjq2024-02-02
| | | Note that this only works when stdin is a pipe.
* feat(ex_cmds): no error on :lua with {range} and {code} (#27290)luukvbaal2024-02-02
| | | | | | Problem: Erroring when both {range} and {code} are supplied to :lua is inconvenient and may break mappings. Solution: Don't error, ignore {range} and execute {code} when both are supplied.
* Merge pull request #27122 from luukvbaal/signcolbfredl2024-02-01
|\ | | | | fix(column): clear "b_signcols" before moving saved marks
| * fix(column): clear "b_signcols" before moving saved marksLuuk van Baal2024-01-27
| | | | | | | | | | | | Problem: Marks moved by undo may be lost to "b_signcols.count". Solution: Count signs for each undo object separately instead of once for the entire undo.
* | build: various fixesdundargoc2024-02-01
| | | | | | | | | | | | | | - Consistently use the variable CMAKE_BUILD_TYPE to select build type. - Remove broken `doc_html` target. - Remove swap files created by oldtest when cleaning. - Only rerun `lintdoc` if any documentation files has changed.
* | feat(api): make nvim_open_win support non-floating windows (#25550)Will Hopkins2024-02-01
| | | | | | | | Adds support to `nvim_open_win` and `nvim_win_set_config` for creating and manipulating split (non-floating) windows.
* | vim-patch:8.2.0117: crash when using gettabwinvar() with invalid arguments ↵zeertzjq2024-02-01
| | | | | | | | | | | | | | | | | | | | | | (#27280) Problem: Crash when using gettabwinvar() with invalid arguments. (Yilin Yang) Solution: Use "curtab" if "tp" is NULL. (closes vim/vim#5475) https://github.com/vim/vim/commit/ee93b737aaa7bf65edc7281f429dd89fcf657a6f Co-authored-by: Bram Moolenaar <Bram@vim.org>
* | fix(statusline): missing offset when showing 'keymap' (#27270)zeertzjq2024-01-31
| |
* | fix(lua): avoid internal error when :luado deletes lines (#27262)zeertzjq2024-01-30
| |
* | vim-patch:9.1.0065: Segfault with CompleteChanged autocommand (#27261)zeertzjq2024-01-30
| | | | | | | | | | | | | | | | | | | | | | Problem: Segfault with CompleteChanged autocommand (markonm ) Solution: Test match->cp_prev for being NULL before accessing it closes: vim/vim#13929 https://github.com/vim/vim/commit/fef66301665027f1801a18d796f74584666f41ef Co-authored-by: Christian Brabandt <cb@256bit.org>
* | feat(api): add nvim_tabpage_set_win (#27222)Will Hopkins2024-01-29
| | | | | | | | Allows setting the current window of a non-current tabpage without switching tabpages.
* | feat(extmarks): subpriorities (relative to declaration order) (#27131)Gregory Anders2024-01-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The "priority" field of extmarks can be used to set priorities of extmarks which dictates which highlight group a range will actually have when there are multiple extmarks applied. However, when multiple extmarks have the same priority, the only way to enforce an actual priority is through the order in which the extmarks are set. It is not always possible or desirable to set extmarks in a specific order, however, so we add a new "subpriority" field that explicitly enforces the ordering of extmarks that have the same priority. For now this will be used only to enforce priority of treesitter highlights. A single node in a treesitter tree may match multiple captures, in which case that node will have multiple extmarks set. The order in which captures are returned from the treesitter API is not _necessarily_ in the same order they are defined in a query file, so we use the new subpriority field to force that ordering. For now subpriorites are not documented and are not meant to be used by external code, and it only applies to ephemeral extmarks. We indicate the "private" nature of subpriorities by prefixing the field name with an "_".
* | fix(jumplist): Ctrl+o, Ctrl+i weird behavior when deleting buffers #25461vE5li2024-01-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: - Navigation is not always symmetric: pressing Ctrl+o n times followed by Ctrl+i n times does not always gets me back to where I started. - Invalid buffers are not skipped by Ctrl+i/o, I have to press Ctrl+i/o multiple times to get to the next/previous buffer. Solution: - Remove all entries of a buffer from the jump list when deleting it. - Don't add a new entry to the jump list if the next buffer to be displayed is already in the jump list. Closes #25365
* | test: more tests for nvim_tabpage_get_win (#27248)zeertzjq2024-01-29
| |
* | vim-patch:9.1.0060: Recorded register cannot be translated using keytrans() ↵zeertzjq2024-01-29
| | | | | | | | | | | | | | | | | | | | | | | | (#27247) Problem: Recorded register cannot be translated using keytrans() when it involves character search (iddqd505) Solution: Record a K_IGNORE instead of a K_NOP (zeertzjq) related: vim/vim#13916 closes: vim/vim#13925 https://github.com/vim/vim/commit/bf321806bf44d59f108fd7e5a0eaead04682701d
* | build(docs): separate lint job to validate vimdoc #27227Jongwook Choi2024-01-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Separate the lint job (`make lintdoc`) to validate runtime/doc, it is no longer as a part of functionaltest (help_spec). Build (cmake) and CI: - `make lintdoc`: validate vimdoc files and test-generate HTML docs. CI will run this as a part of the "docs" workflow. - `scripts/lintdoc.lua` is added as an entry point (executable script) for validating vimdoc files. scripts/gen_help_html.lua: - Move the tests for validating docs and generating HTMLs from `help_spec.lua` to `gen_help_html`. Added: - `gen_help_html.run_validate()`. - `gen_help_html.test_gen()`. - Do not hard-code `help_dir` to `build/runtime/doc`, but resolve from `$VIMRUNTIME`. Therefore, the `make lintdoc` job will check doc files on `./runtime/doc`, not on `./build/runtime/doc`. - Add type annotations for gen_help_html.
* | test(lua/snippet_spec): wait for completion menu (#27243)zeertzjq2024-01-28
| | | | | | | | This fixes the flakiness caused by typing a completion menu key when the completion menu hasn't showed up.
* | test(tui): add & improve tests for terminal queries (#27219)Gregory Anders2024-01-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problems: 1. The test case for querying truecolor support did not check which capabilities were queried 2. The test case for querying truecolor support checked `&termguicolors` in the Nvim test runner, not the child Nvim in the the embedded terminal 3. The test case for querying truecolor support did not actually respond to the XTGETTCAP requests. `'termguicolors'` is still enabled even without responding to this query because libvterm understands and responds to the DECRQSS request, but it is still good to respond to the query explicitly instead of depending on hidden libvterm behavior 4. No test case exists at all for OSC 52 Solution: Fix all of the problems listed above.
* | vim-patch:9.1.0049: Make "[Command Line]" a special buffer nameSean Dewar2024-01-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: E95 is possible if a buffer called "[Command Line]" already exists when opening the cmdwin. This can also happen if the cmdwin's buffer could not be deleted when closing. Solution: Un-name the cmdwin buffer, and give it a special name instead, similar to what's done for quickfix buffers and for unnamed prompt and scratch buffers. As a result, BufFilePre/Post are no longer fired when opening the cmdwin. Add a "command" key to the dictionary returned by getbufinfo() to differentiate the cmdwin buffer instead. (Sean Dewar) Cherry-pick test_normal changes from v9.0.0954. https://github.com/vim/vim/commit/1fb41032060df09ca2640dc49541f11062f6dfaa
* | vim-patch:9.1.0048: Abort opening cmdwin if autocmds screw things upSean Dewar2024-01-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Autocmds triggered from opening the cmdwin (in win_split and do_ecmd) can cause issues such as E199, as the current checks are insufficient. Solution: Commands executed from the cmdwin apply to the old curwin/buf, so they should be kept in a "suspended" state; abort if they've changed. Also abort if cmdwin/buf was tampered with, and check that curwin is correct. Try to clean up the cmdwin buffer (only if hidden and non-current to simplify things; the same approach is used when closing cmdwin normally), and add a beep. (Sean Dewar) Rename the old Test_cmdwin_interrupted() like in the patch (can be moved to test_cmdwin.vim when v9.0.0027 is ported). Move the error message to `e_active_window_or_buffer_changed_or_deleted`. https://github.com/vim/vim/commit/43b395ec2e7d24a067d7cb00109818b64da144a5
* | vim-patch:9.1.0047: issues with temp curwin/buf while cmdwin is openSean Dewar2024-01-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Things that temporarily change/restore curwin/buf (e.g: win_execute, some autocmds) may break assumptions that curwin/buf is the cmdwin when "cmdwin_type != 0", causing issues. Solution: Expose the cmdwin's real win/buf and check that instead. Also try to ensure these variables are NULL if "cmdwin_type == 0", allowing them to be used directly in most cases without checking cmdwin_type. (Sean Dewar) Reset and save `cmdwin_old_curwin` in a similar fashion. Apply suitable changes for API functions and add Lua tests. https://github.com/vim/vim/commit/988f74311c26ea9917e84fbae608de226dba7e5f
* | docs(lua): update ":{range}lua" docs + error message #27231Justin M. Keyes2024-01-27
|/ | | | | - `:lua (no file)` is misleading because `:lua` never takes a file arg, unlike `:source`. - Update various related docs.
* fix(events): check for WinResized/WinScrolled in terminal mode (#27226)zeertzjq2024-01-27
|