Problem: Manual folds are lost when a session file has the same buffer in
two windows. (Jeansen)
Solution: Use ":edit" only once. (Christian Brabandt, closesvim/vim#1958)
4bebc9a056
Problem: When creating a session when winminheight is 2 or larger and
loading that session gives an error.
Solution: Also set winminheight before setting winheight to 1. (Rafael
Bodill, neovim vim/vim#5717)
36ae89c550
Problem: Argument list is not stored correctly in a session file.
(lgpasquale)
Solution: Use "$argadd" instead of "argadd". (closesvim/vim#1434)
79da563cf9
Signed-off-by: Michael Schupikov <michael@schupikov.de>
vim-patch:8.0.0290: cursor positioning wrong if wide character wraps
Problem: If a wide character doesn't fit at the end of the screen line, and
the line doesn't fit on the screen, then the cursor position may
be wrong. (anliting)
Solution: Don't skip over wide character. (Christian Brabandt, closes vim/1408)
vim-patch:8.0.0394
Problem: Tabs are not aligned when scrolling horizontally and a Tab doesn't
fit. (Axel Bender)
Solution: Handle a Tab as a not fitting character. (Christian Brabandt)
Also fix that ":redraw" does not scroll horizontally to show the
cursor. And fix the test that depended on the old behavior.
abc39ab642
Problem: When 'maxfuncdepth' is set above 200 the nesting is limited to
200. (Brett Stahlman)
Solution: Allow for Ex command recursion depending on 'maxfuncdepth'.
777b30f827
This reverts commit eb40b7ec40.
The change caused this error on QuickBuild:
INFO - # test/functional/core/job_spec.lua @ 668: pty process teardown does not prevent/delay exit. #4798#4900
INFO - not ok 321 - pty process teardown does not prevent/delay exit. #4798#4900
INFO - # test/functional/core/job_spec.lua @ 668
INFO - # Failure message: ./test/functional/ui/screen.lua:302: Row 1 did not match.
INFO - # Expected:
INFO - # |* |
INFO - # |[Process exited 0] |
INFO - # | |
INFO - # | |
INFO - # | |
INFO - # |-- TERMINAL -- |
INFO - # Actual:
INFO - # |*E575: Error while reading ShaD|
INFO - # |a file: mark entry at position|
INFO - # | 92 has invalid line number |
INFO - # |Press ENTER or type command to|
INFO - # | continue |
INFO - # |-- TERMINAL -- |
INFO - #
INFO - # To print the expect() call that would assert the current screen state, use
INFO - # screen:snaphot_util(). In case of non-deterministic failures, use
INFO - # screen:redraw_debug() to show all intermediate screen states.
INFO - # stack traceback:
INFO - # ./test/functional/ui/screen.lua:302: in function 'wait'
INFO - # ./test/functional/ui/screen.lua:216: in function 'expect'
INFO - # test/functional/core/job_spec.lua:677: in function <test/functional/core/job_spec.lua:668>
The ':tcd' command is the first tab-specific command written to the file
and it is wrapped inside an 'if has('nvim')' block to keep the session
file compatible with Vim.
Closes#6678
As part of the refactoring in #5119, some vim_strchr() were changed to
strchr(). However, vim_strchr() behaves differently than strchr() when
c is NUL, returning NULL instead of a pointer to the NUL.
Revert the strchr() calls where it isn't known whether c is NUL, since
this causes a semantic change the surrounding code doesn't expect. In
the case of #6650, this led to a heap overrun.
Closes#6650
Problem: When the pattern of :filter does not have a separator then
completion of the command fails.
Solution: Skip over the pattern. (Ozaki Kiichi, clodes vim/vim#1299)
7069bf18e1
Problem: :filter does not work for many commands. Can only get matching
messages.
Solution: Make :filter work for :command, :map, :list, :number and :print.
Make ":filter!" show non-matching lines.
d29459baa6
Problem: Adding pattern to ":oldfiles" is not a generic solution.
Solution: Add the ":filter /pat/ cmd" command modifier. Only works for some
commands right now.
7b668e83d0
Additional modifications:
- More `const` qualifiers in tested functions.
- `tv_list_find_str()` second argument is more in-line with other
`tv_list_find*()` functions.
Lesser form of include-what-you-use: at least guarantees that header
file did not forget to include something through some other included
file.
Activate run_single_includes_tests on CI.
Fix some IWYU violations.
References #5321
1. Use `char *` for strings.
2. Add `const` qualifiers.
3. Add attributes and documentation.
4. Handle skipping *inside*.
5. Handle non-heredoc argument also inside: deferring this to the caller is
pointless because all callers need the same thing. Though new ex_lua caller
may live without allocations in this case, allocating nevertheless produces
cleaner code.
6. Note that all callers call script_get with `eap` and `eap->arg`. Thus second
argument is useless in practice: it is one and the same always and can be
reached through the first argument.
During free_all_mem, somehow ex_tabonly() may free aucmd_win. But it
isn't fully destroyed (maybe autocmd_busy?). When win_free_all() tries
to free aucmd_win directly, it double-frees the sub-fields.
Tried unnsuccessfully to work around this by invoking `:tabonly!` with
autocmds disabled:
diff --git a/src/nvim/memory.c b/src/nvim/memory.c
index 58c01fbe7a12..91c845e94d22 100644
--- a/src/nvim/memory.c
+++ b/src/nvim/memory.c
@@ -565,9 +565,9 @@ void free_all_mem(void)
/* Close all tabs and windows. Reset 'equalalways' to avoid redraws. */
p_ea = false;
if (first_tabpage->tp_next != NULL)
- do_cmdline_cmd("tabonly!");
+ do_cmdline_cmd("noautocmd tabonly!");
if (firstwin != lastwin)
- do_cmdline_cmd("only!");
+ do_cmdline_cmd("noautocmd only!");
/* Free all spell info. */
spell_free_all();