aboutsummaryrefslogtreecommitdiff
path: root/test/functional/editor
Commit message (Collapse)AuthorAge
* fix(completion): correct what modes support fuzzy completionzeertzjq2023-01-17
|
* refactor: remove E5500, adjust testszeertzjq2023-01-16
| | | | | | Now with try_end() including more exception info, E5500 looks like redundant information. Adjust tests for more exception information.
* test(undo_spec): add more tests for writing in Insert modezeertzjq2022-12-09
|
* vim-patch:9.0.1036: undo misbehaves when writing from an insert mode mappingzeertzjq2022-12-09
| | | | | | | | | Problem: Undo misbehaves when writing from an insert mode mapping. Solution: Sync undo when writing. (closes vim/vim#11674) https://github.com/vim/vim/commit/3f8f82772313af9f2417b06651f30988b63e1c96 Co-authored-by: Bram Moolenaar <Bram@vim.org>
* vim-patch:9.0.0969: matchparen highlight is not updated when switching ↵zeertzjq2022-11-29
| | | | | | | | | | | buffers (#21227) Problem: Matchparen highlight is not updated when switching buffers. Solution: Listen to the BufLeave and the BufWinEnter autocmd events. (closes vim/vim#11626) https://github.com/vim/vim/commit/28a896f54d4b2f2b4bef8ef4144dde1673c9d6e7 Co-authored-by: Bram Moolenaar <Bram@vim.org>
* fix(mark): do not restore view in op-pending mode (#20889)zeertzjq2022-11-01
|
* fix: avoid unsigned overflow in home_replace() (#20854)zeertzjq2022-10-30
|
* fix(completion): set pum_size even if ext_popupmenu is used (#20648)zeertzjq2022-10-14
| | | | This allows CompleteChanged event to get the correct `v:event.size`. It should be harmless and more consistent to also set `pum_array`.
* test(tabpage_spec): actually test for nvim_win_hidezeertzjq2022-09-23
|
* test: add tests for #13549 #20285 #20290zeertzjq2022-09-23
|
* fix(keywordprg): default to :help if set to empty string (#19983)zeertzjq2022-08-29
|
* fix(edit.c): indentkeys double indent after "!" #12894Axel Forsman2022-08-21
| | | | | | | | | | | | | which is both unexpected and different from the Vim behaviour. Indent was triggered once by the '!' check in insert_execute(), and inserting the char was correctly skipped, but then triggered again in insert_check() (provided that cindent was not being ignored after manual indentation, i.e. `can_cindent == true`). While this is the smallest fix, another solution would be to remove VimState#check and instead move that to *_enter()/-_execute(), since the control flow is pretty unnecessarily convoluted as is. That would also have the benefit of differing less from the Vim source code.
* test: use poke_eventloop() instead of sleep(10) where possible (#19794)zeertzjq2022-08-16
| | | | Using sleep(10) to wait for typeahead to finish is flaky, especially on macOS, where legacy/global_spec.lua has failed several times.
* fix(completion): remove wrong FUNC_ATTR_NONNULL_ALL (#19627)zeertzjq2022-08-03
|
* fix(ui): set redraw_cmdline when setting window height (#19630)zeertzjq2022-08-03
|
* fix(tabpage): check if ROWS_AVAIL changed for resize (#19620)zeertzjq2022-08-02
| | | | | | | | | N/A patches for version.c: vim-patch:9.0.0135: comment about tabpage line above the wrong code Problem: Comment about tabpage line above the wrong code. Solution: Move the comment. (closes vim/vim#10836) https://github.com/vim/vim/commit/0b0ccbbfb014e1c9682b86a7a41ff2837b0b8047
* fix(input): do no reinterpret mouse keys with ALT modifierszeertzjq2022-07-25
| | | | | Remove check for MOD_MASK_META as it is for <T- which never appears in TUI. Make small changes to docs.
* fix(mark): give correct error message when mark is in another buffer (#19454)zeertzjq2022-07-21
|
* perf(ui): eliminate spurious memory allocations for hl_attr_define eventbfredl2022-07-18
|
* fix(mark): fix unexpected cursor movements (#19253)zeertzjq2022-07-06
|
* fix(mark): mark without a view restores at topline #19224zeertzjq2022-07-04
| | | | | For a local mark without a view, currently trying to restore its view will put the cursor at topline, which is not the correct behavior. Initialize `topline_offset` to `MAXLNUM` instead to fix this.
* feat(marks): restore viewport on jump #15831Javier Lopez2022-06-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ** Refactor Previously most functions used to "get" a mark returned a position, changed the line number and sometimes changed even the current buffer. Now functions return a {x}fmark_T making calling context aware whether the mark is in another buffer without arcane casting. A new function is provided for switching to the mark buffer and returning a flag style Enum to convey what happen in the movement. If the cursor changed, line, columns, if it changed buffer, etc. The function to get named mark was split into multiple functions. - mark_get() -> fmark_T - mark_get_global() -> xfmark_T - mark_get_local() -> fmark_T - mark_get_motion() -> fmark_T - mark_get_visual() -> fmark_T Functions that manage the changelist and jumplist were also modified to return mark types. - get_jumplist -> fmark_T - get_changelist -> fmark_T The refactor is also seen mainly on normal.c, where all the mark movement has been siphoned through one function nv_gomark, while the other functions handle getting the mark and setting their movement flags. To handle whether context marks should be left, etc. ** Mark View While doing the refactor the concept of a mark view was also implemented: The view of a mark currently implemented as the number of lines between the mark position on creation and the window topline. This allows for moving not only back to the position of a mark but having the window look similar to when the mark was defined. This is done by carrying and extra element in the fmark_T struct, which can be extended later to also restore horizontal shift. *** User space features 1. There's a new option, jumpoptions+=view enables the mark view restoring automatically when using the jumplist, changelist, alternate-file and mark motions. <C-O> <C-I> g; g, <C-^> '[mark] `[mark] ** Limitations - The view information is not saved in shada. - Calls to get_mark should copy the value in the pointer since we are using pos_to_mark() to wrap and provide a homogeneous interfaces. This was also a limitation in the previous state of things.
* fix(input): fix macro recording with ALT and special key (#18917)zeertzjq2022-06-10
|
* fix(input): allow Ctrl-C to interrupt a recursive mapping even if mapped ↵zeertzjq2022-06-07
| | | | (#18885)
* refactor!: delete insertmode (#18547)Gregory Anders2022-05-22
| | | | | | | Neovim already removed `evim` (or any similar flags). The 'insertmode' option is a weird remnant, so get rid of it. The 'insertmode' option is replaced with a script that closely emulates the option. This script is documented at :help 'insertmode'
* fix(cmd): make :-tabmove work with modifiers (#18447)Marco Hinz2022-05-12
| | | | | | | | | `:tabmove` takes either an argument (`:tabmove -`) or an address (`:-tabmove`). The code assumed that `:tabmove` is the first command on the cmdline, but that is not the case when using additional modifiers like `:silent`. Make the addr parsing more robust by searching the command first, then going back to check for a potential address `-`.
* vim-patch:8.2.0867: using \{xxx} for encoding a modifier is not nicezeertzjq2022-04-29
| | | | | | | | | Problem: Using \{xxx} for encoding a modifier is not nice. Solution: Use \<*xxx> instead, since it's the same as \<xxx> but producing a different code. https://github.com/vim/vim/commit/fccd93f0917234b962ce07d1df3adf9d7105936f Use this notation in langmap_spec.
* feat(edit): insert an unsimplified key using CTRL-SHIFT-Vzeertzjq2022-04-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This marks the following Vim patches as ported: vim-patch:8.1.2333: with modifyOtherKeys CTRL-^ doesn't work Problem: With modifyOtherKeys CTRL-^ doesn't work. Solution: Handle the exception. https://github.com/vim/vim/commit/828ffd596394f714270a01a55fc3f949a8bd9b35 vim-patch:8.1.2350: other text for CTRL-V in Insert mode with modifyOtherKeys Problem: Other text for CTRL-V in Insert mode with modifyOtherKeys. Solution: Convert the Escape sequence back to key as if modifyOtherKeys is not set, and use CTRL-SHIFT-V to get the Escape sequence itself. (closes vim/vim#5254) https://github.com/vim/vim/commit/fc4ea2a72d36de1196a3ce17352e72f8fe90f4bb vim-patch:8.2.2084: CTRL-V U doesn't work to enter a Unicode character Problem: CTRL-V U doesn't work to enter a Unicode character when modifyOtherKeys is effective. (Ken Takata) Solution: Add a flag to get_literal() for the shift key. (closes vim/vim#7413) https://github.com/vim/vim/commit/0684e36a7ee0743f2889698fb8e0e14f7acae423 Omit getcmdkeycmd() change as it depends on Vim patch 8.2.2062, which may introduce a potential breakage.
* test: correct order of arguments to eq() and neq()zeertzjq2022-04-26
|
* feat: add `undo!`Famiu Haque2022-04-20
| | | | Allows using `undo!` to undo changes and remove them from the undo-tree. Can only be used for moving backwards in the same undo branch.
* test: add a test for #16823zeertzjq2022-04-08
|
* fix(event-loop): check if executed register has endedzeertzjq2022-04-07
|
* fix(input): fix clearing of reg_executingzeertzjq2022-04-07
| | | | vim-patch:8.2.4705
* test: move completion :stopinsert test to completion_spec.lua (#17992)zeertzjq2022-04-04
|
* fix(tabpage): correct check for failure to close windowzeertzjq2022-03-27
| | | | Avoid closing window 999 times.
* test: add a test for #17489zeertzjq2022-03-10
|
* chore: fix typos (#17331)dundargoc2022-03-10
| | | | | | Co-authored-by: Hongyi Lyu <hongyi.lyu95@gmail.com> Co-authored-by: Gregory Anders <greg@gpanders.com> Co-authored-by: notomo <notomo.motono@gmail.com> Co-authored-by: zeertzjq <zeertzjq@outlook.com>
* vim-patch:8.2.4242: put in Visual mode cannot be repeatedzeertzjq2022-02-09
| | | | | | | | | | Problem: Put in Visual mode cannot be repeated. Solution: Use "P" to put without yanking the deleted text into the unnamed register. (Shougo Matsushita, closes vim/vim#9591) https://github.com/vim/vim/commit/fb55207ed17918c8a2a6cadf5ad9d5fcf686a7ab Cherry-pick get_y_previous() and set_y_previous() from patch 8.1.1736. Nvim has removed y_current, so code related to it is N/A.
* fix(input): remove reinterpreted ALT/META chords from recorded macrozeertzjq2022-01-29
|
* test: add more tests for Insert mode Ctrl-Vzeertzjq2022-01-25
|
* test(input): add more tests for K_SPECIAL escaping in ins_char_typebuf()zeertzjq2022-01-23
|
* test(put_spec): correctly order parameters to eq() (#17134)zeertzjq2022-01-19
| | | | The first parameter to eq() should be the expected value, and the second parameter should be the actual value.
* fix(keywordprg): retain terminal buffer after K (#17046)Daniel Steinberg2022-01-12
|
* fix: do not save K_EVENT as lastc in Insert modezeertzjq2021-12-26
| | | | I'm also gonna move some other K_EVENT-related tests to vim_spec.lua
* feat(autocmd): add Recording autocmdsThomas Vigouroux2021-12-18
| | | | | | | | | | | | | | feat(eval): add reg_recorded() This function is used the get the last recorded register. style(Recording): rename handler to match suggestions fix(RecordingLeave): send autocommand earlier This makes the autocommand fire just before setting reg_recorded to reg_recording, this way we clearly show that we are actually just before actually quitting the recording mode.
* fix(input): never reinterpret unmapped ALT- chrods in Terminal mode (#16222)zeertzjq2021-11-04
|
* fix(input): resolve isolated (non-ALT/META) mappings #13109erw72021-10-02
| | | | | | | | | | | | | | Problem: Since 2f06413dfb36 #13042, "ESC+c" sequence is treated as "ESC c" instead of "M-c" (ALT/META+c) when not mapped, aka "fallthrough" behavior. But "isolated" (non-ALT/META) mappings to ESC and c were not resolved. This behavior is especially confusing for the TUI. Solution: Resolve isolated ESC, c mappings when there is no M-c mapping. Change ins_char_typebuf() to escape CSI, K_SPECIAL. fixes #13086 fixes #15869
* test(normal): CA_COMMAND_BUSY in visual select mode #15292Thomas Vigouroux2021-09-24
| | | | | | | | Fix was already applied in 5f144efefa66c9694123b679bab52992279a6015 #15688, but this commit adds another dimension to the test. Test correctly fails after reverting 5f144efefa66c9694123b679bab52992279a6015. ref #15288
* refactor(tests): remove redir_exec #15718Justin M. Keyes2021-09-19
| | | | | | | | | | | Problem - `redir_exec` is obsolete, but it keeps getting used in new tests because people copy existing tests. - Disadvantages of `redir_exec`: - Captures extra junk before the actual error/message that we _want_ to test. - Does not fail on error, unlike e.g. `command()`. Solution - Use new functions like `nvim_exec` and `pcall_err`.
* test: reorg #15698Justin M. Keyes2021-09-17
Problem: Subdirectories like "visual", "insert", "normal" encourage people to separate *related* tests for no good reason. Typically the _mode_ is not the relevant topic of a test (and when it is, _then_ create an appropriate describe() or it()). Solution: - Delete the various `test/functional/<mode>/` subdirectories, move their tests to more meaningful topics. - Rename `…/normal/` to `…/editor/`. - Move or merge `…/visual/*` and `…/insert/*` tests into here where appropriate. - Rename `…/eval/` to `…/vimscript/`. - Move `…/viml/*` into here also. * test(reorg): insert/* => editor/mode_insert_spec.lua * test(reorg): cmdline/* => editor/mode_cmdline_spec.lua * test(reorg): eval core tests => eval_spec.lua