After cbc8d72fde when editing
the command in the command editing window (q:, q/, q?) it was possible
to switch to the previous tab. Doing so put Nvim in a bad state.
Moreover, switching tabs via the other available mechanisms (gt, gT,
<C-W>gt, <C-W>gT) is not possible when in the command editing window.
Here, the behavior is prevented. It is no longer possible to switch to
the previous tab when editing the command in the command editing window.
The solution is to share code between gt, gT, and g<Tab>. Specifically,
goto_tabpage_lastused now calls through goto_tabpage rather than
directly calling goto_tabpage_tp. Doing so works well because all the
validation enjoyed by gt and gT is present in goto_tabpage.
In a multi-window scenario, it is possible to return focus to the last
accessed window via n_CTRL-W_p. However, in the case of a multi-tab
scenario, there was previously no way to return focus to the last
accessed *tab*. Here, that ability is added via n_g<tab>.
Additionally, the index of the previous tab is exposed via
tabpagenr('#'), mirroring the existing functionality of winnr('#').
Problem: Deleted match highlighting not updated in other window.
Solution: Mark the window for refresh. (closesvim/vim#4720) Also fix that
ambi-width check clears with wrong attributes.
06029a857a
Autocmds may close window while it is being entered, then
win_set_minimal_style(wp) operates on an invalid pointer.
We could silently ignore this instead, but it is unlikely to be
intentional, so it is more useful to show an error.
fix#11383
* Clear 'cc' in nvim_open_win 'minimal' style #11361
Add 'colorcolumn' to the list of options that should be cleared when creating
a 'minimal'-style floating window.
Problem: Unnecessary scroll after horizontal split.
Solution: Don't adjust to fraction if all the text fits in the window.
(Martin Kunev, closesvim/vim#4367)
a9b2535f44
Problem: CTRL-W ^ does not work when alternate buffer has no name.
Solution: Use another method to split and edit the alternate buffer. (Jason
Franklin)
1bbb619483
Problem:
During a refactor long ago, we changed the `getdigits_*` familiy of
functions to abort on overflow. But this is often wrong, because many
of these codepaths are handling user input.
Solution:
Decide at each call-site whether to use "strict" mode.
fix#5555
Problem: Loading a session file fails if 'winheight' is a big number.
Solution: Set 'minwinheight' to zero at first. Don't give an error when
setting 'minwinheight' while 'winheight' is a big number.
Fix using vertical splits. Fix setting 'minwinwidth'.
(closesvim/vim#2970)
1c3c10492a
add proper msg_set_pos event, delet win_scroll_over_*
make compositor click through unfocusable grids
add MsgArea attribute for the message/cmdline area, and add docs and tests
gcc version 8.3.0 (Debian 8.3.0-6)
../src/nvim/ex_docmd.c: In function ‘commands_array’:
../src/nvim/ex_docmd.c:10192:36: warning: ‘%ld’ directive output may be truncated writing between 1 and 19 bytes into a region of size 10 [-Wformat-truncation=]
snprintf(str, sizeof(str), "%" PRId64, (int64_t)cmd->uc_def);
^~~
../src/nvim/ex_docmd.c:10192:37: note: format string is defined here
snprintf(str, sizeof(str), "%" PRId64, (int64_t)cmd->uc_def);
../src/nvim/ex_docmd.c:10192:36: note: directive argument in the range [0, 9223372036854775807]
snprintf(str, sizeof(str), "%" PRId64, (int64_t)cmd->uc_def);
^~~
../src/nvim/ex_docmd.c:10192:9: note: ‘snprintf’ output between 2 and 20 bytes into a destination of size 10
snprintf(str, sizeof(str), "%" PRId64, (int64_t)cmd->uc_def);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/nvim/ex_docmd.c:10205:36: warning: ‘%ld’ directive output may be truncated writing between 1 and 19 bytes into a region of size 10 [-Wformat-truncation=]
snprintf(str, sizeof(str), "%" PRId64, (int64_t)cmd->uc_def);
^~~
../src/nvim/ex_docmd.c:10205:37: note: format string is defined here
snprintf(str, sizeof(str), "%" PRId64, (int64_t)cmd->uc_def);
../src/nvim/ex_docmd.c:10205:36: note: directive argument in the range [0, 9223372036854775807]
snprintf(str, sizeof(str), "%" PRId64, (int64_t)cmd->uc_def);
^~~
../src/nvim/ex_docmd.c:10205:9: note: ‘snprintf’ output between 2 and 20 bytes into a destination of size 10
snprintf(str, sizeof(str), "%" PRId64, (int64_t)cmd->uc_def);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/nvim/spell.c: In function ‘did_set_spelllang’:
../src/nvim/spell.c:1631:61: warning: ‘%s’ directive output may be truncated writing up to 254 bytes into a region of size 84 [-Wformat-truncation=]
"autocmd VimEnter * call spellfile#LoadFile('%s')|set spell",
^~
../src/nvim/spell.c:2063:25:
spell_load_lang(lang);
~~~~
../src/nvim/spell.c:1630:7: note: ‘snprintf’ output between 57 and 311 bytes into a destination of size 128
snprintf(autocmd_buf, sizeof(autocmd_buf),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"autocmd VimEnter * call spellfile#LoadFile('%s')|set spell",
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lang);
~~~~~
../src/nvim/window.c: In function ‘win_rotate’:
../src/nvim/window.c:1780:22: warning: ‘wp2’ may be used uninitialized in this function [-Wmaybe-uninitialized]
wp2->w_pos_changed = true;
^
../src/nvim/window.c:1779:22: warning: ‘wp1’ may be used uninitialized in this function [-Wmaybe-uninitialized]
wp1->w_pos_changed = true;
Problem: Some macros are used without a semicolon, causing auto-indent to be
wrong.
Solution: Use the do-while(0) trick. (Ozaki Kiichi, closesvim/vim#2729)
6f4700233f
- redraw! in an invisible buffer rendered the screen unusable.
- storing the autocmd window handle and using it in API function could lead
to crashes. Unregister the handle when the window is not active.
Problem: A BufReadPre autocommand may cause the cursor to move.
Solution: Restore the cursor position after executing the autocommand,
unless the autocommand moved it. (Christian Brabandt,
closesvim/vim#4302, closesvim/vim#4294)
a68e595909
Problem: No cmdline redraw when tabpages have different 'cmdheight'.
Solution: redraw the command line when 'cmdheight' changes when switching
tabpages. (closesvim/vim#4321)
0fef0aeb1c
- Allow floating windows of width 1. #9846
- For a new floating window the size must be specified. Later on we
might try to calculate a reasonable size by buffer contents
- Remember the configured size of a window, just like its position.
- Make get_config and set_config more consistent. Handle relative='' properly in set_config.
get_config doesn't return keys that don't make sense for a non-floating window.
- Don't use width=0 for non-changed width, just omit the key.
Using `:wincmd j` and friends doesn't make much sense to a floating window. For
convenience though, any direction will simply change to the previous window.
Make sure the previous window is valid, not the current window, and not another
floating window. Change to the first window (which is never a floating window)
otherwise.