Problem: Restoring directory after using another window is inefficient.
Solution: Only restore the directory for win_execute(). Apply 'autochdir'
only when needed.
90c317f224
Problem: In wrong directory when using win_execute() with 'acd' set.
Solution: Restore the directory when returning to the window. (closesvim/vim#9276)
dea4a61637
There are some places that mess with the window layout in preparation for moving
a window to a different split (win_split_ins called with new_wp != NULL).
This means the window layout can change slightly even if win_split_ins fails.
This is why it was still needed to restore the window layout in
aucmd_{prep,rest}buf even if we disallow win_split_ins from making aucmd_win
non-floating by moving it into a split.
We can just skip messing with the layout in such places if we're dealing with
the aucmd_win.
Nvim uses a floating window for the autocmd window, but in certain situations,
it can be made non-floating (`:wincmd J`), which can cause issues due to the
previous setup and cleanup logic for a non-floating aucmd_win being removed from
aucmd_prepbuf and aucmd_restbuf.
This can cause glitchiness and crashes due to the aucmd_win's frame being
invalid after closing its tabpage, for example.
Ensure aucmd_win cannot be made non-floating. The only place this happens is in
win_split_ins if new_wp != NULL.
Problem: Window size wrong if 'ea' is off and 'splitright' is on and
splitting then closing a window.
Solution: Put abandoned window space in the right place. (Mark Waggoner)
edd327cc07
Problem: When editing a buffer 'colorcolumn' may not work.
Solution: Set the buffer before copying option values. Call
check_colorcolumn() after copying window options.
010ee9657a
In Nvim, like DirChanged, this also triggers when switching windows.
This marks Vim patch 8.2.4335 as ported.
vim-patch:8.2.4335: no autocommand event triggered before changing directory
Problem: No autocommand event triggered before changing directory. (Ronnie
Magatti)
Solution: Add DirChangedPre. (closesvim/vim#9721)
28e8f73ae2
Problem: ml_get error when win_execute redraws with Visual selection.
Solution: Disable Visual area temporarily. (closesvim/vim#9479)
18f4740f04
{switch_to/restore}_win_for_buf is N/A (marked as such in v8.0.0860; currently
only used in Vim's if_py).
Add a modeline to test_execute_func.vim.
Problem: No proper test for moving the window separator.
Solution: Add a test. Add comment in code. (closesvim/vim#9656)
a0c4e2f2d7
Remove the assertion as it is now possible for `fr` to be `NULL`.
The test fails without clearing messages. Not sure if this is a bug.
* vim-patch:8.2.3914: various spelling mistakes in comments
Problem: Various spelling mistakes in comments.
Solution: Fix the mistakes. (Dominique Pellé, closesvim/vim#9416)
af4a61a85d
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Problem: Restarting Insert mode in prompt buffer too often when a callback
switches windows and comes back. (Sean Dewar)
Solution: Do not set "restart_edit" when already in Insert mode.
34c20ff85b
As Test_prompt_switch_windows is skipped, implement it in prompt_buffer_spec.
Replace the 50ms term_wait calls with poke_eventloop (test seems to work anyway
without them, so maybe they're not required?)
The new test does include a duplicate screen test that may generate a "screen
test succeeded immediately" warning, but this is done to match the Vim test.
Problem: Try-catch test fails.
Solution: Don't call win_enter(), only call enterering_window().
bdf931c25b
v8.2.1781 caused Test_reload_in_try_catch() from v8.2.0004 to fail in Vim, but
it has not been ported yet.
Problem: Typing CTRL-W in a prompt buffer shows mode "-- --".
Solution: Set restart_edit to 'A' and check for it.
942b4541a2
Nvim already checked for 'i' in showmode(), so this bug was fixed with <C-W>
(though this patch now changes <C-W> to use 'A').
However, the missing changes I ported for v8.1.0036 use 'A' when a callback
leaves the window in insert mode and edit gets restarted, so this bug was
possible there.
Modify showmode() restart_edit condition to match v8.2.1978:
957cf67d50
Problem: If omni completion opens a window Insert mode is stopped.
(Hirohito Higashi)
Solution: Only set stop_insert_mode in a prompt buffer window.
f98b845dd1
popupmenu_spec.lua fails without this.
Problem: Not easy to switch between prompt buffer and other windows.
Solution: Accept CTRL-W commands in Insert mode. Start and stop Insert mode
as one would expect.
6d41c78e35
Cherry-pick channel.txt change from:
d2f3a8b878
b_prompt_insert was already ported.
Problem: using freed memory with autocmd from fuzzer. (Dhiraj Mishra,
Dominique Pelle)
Solution: Avoid using "wp" after autocommands. (closesvim/vim#5041)
ec66c41d84
Nvim doesn't use Vim's terminal implementation.
Despite this, Nvim has its own *exclusive* way of crashing here.
Requires 'winwidth' > winwidth() and 'nowinfixwidth' to crash; adjust
the test ('nowfw' is the default, but ensure its disabled anyway).
Problem: ":verbose pwd" does not mention 'autochdir' was applied.
Solution: Remember the last chdir was done by 'autochdir'. (issue vim/vim#9142)
0526815c15
Problem: Directory is wrong after executing "lcd" with win_execute().
Solution: Correct the directory when going back to the original window.
(closesvim/vim#9132)
7f13b24ab6
Problem: Giving error messages is not flexible.
Solution: Add semsg(). Change argument from "char_u *" to "char *", also
for msg() and get rid of most MSG macros. (Ozaki Kiichi, closes
vim/vim#3302) Also make emsg() accept a "char *" argument. Get rid of
an enormous number of type casts.
f9e3e09fdc
Problem: Cannot handle change of directory.
Solution: Add the DirChanged autocommand event. (Andy Massimino,
closesvim/vim#888) Avoid changing directory for 'autochdir' too often.
b7407d3fc9
Only add "auto" pattern. "window" and "global" are already implemented.
Skip `Test_dirchanged_auto` using `CheckFunction test_autochdir`.
Part of PR #15952. More information can be found there.
N/A patches for version.c:
vim-patch:8.0.1460: missing file in patch
Problem: Missing file in patch.
Solution: Add changes to missing file.
b5cb65ba2b
vim-patch:8.0.1461: missing another file in patch
Problem: Missing another file in patch.
Solution: Add changes to missing file.
15833239a4
N, W, S, E are all inclusive, i.e., always anchor to the exact corner of the
window (including border). This line may also need change in this case (change
0 to -1):
This is most consistent and easiest to reason about, especially with GUIs whose
border do not need to have width/height of 1/1 in cell units.
Fix#15789
* refactor: format with uncrustify
* fixup(dundar): fix functions comments
* fixup(dundar): remove space between variable and ++/--
* fixup(dundar): better workaround for macro attributes
This is done to be able to better use uncrustify rules for macros
* fixup(justin): make preprocessors follow neovim style guide
Problem: win_enter_ext() has too many boolean arguments.
Solution: use one flags argument with defined values.
d61f2f772a
Include some style changes to appease the linter.
N/A patches for version.c:
vim-patch:8.2.3289: compiler warning for unused variable with small features
Problem: Compiler warning for unused variable with small features.
Solution: Rearrange #ifdefs.
f18e8a969a
vim-patch:8.2.3298: build failure with small features
Problem: Build failure with small features.
Solution: Add #ifdef.
6f6d58c380
vim-patch:8.2.3331: Coverity warns for using value without boundary check
Problem: Coverity warns for using value without boundary check.
Solution: Add a boundary check.
ed7cb2df35
vim-patch:8.2.3354: build failure with +byte_offset but without +textprop
Problem: Build failure with +byte_offset but without +textprop. (John
Marriott)
Solution: Adjust the #ifdef.
92755bba30
vim-patch:8.2.3355: MS-Windows: compiler warning for 64-32 bit conversion
Problem: MS-Windows: compiler warning for 64-32 bit conversion.
Solution: Add type casts.
434df7a401