Commit Graph

687 Commits

Author SHA1 Message Date
zeertzjq
1dcaa75a65 fix(events): triggered WinScrolled when only skipcol changed (#19972)
fix(events): trigger WinScrolled when only skipcol changed

vim-patch:9.0.0304: WinScrolled is not triggered when only skipcol changes

Problem:    WinScrolled is not triggered when only skipcol changes.
Solution:   Add w_last_skipcol and use it. (closes vim/vim#10998)
670ab0334b
2022-08-29 06:16:20 +08:00
Lewis Russell
2498e9feb0 refactor: change FALSE/TRUE to false/true
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2022-08-26 09:36:55 +01:00
Dundar Goc
40855b0143 refactor: replace char_u with char
Work on https://github.com/neovim/neovim/issues/459
2022-08-25 18:59:12 +02:00
Lewis Russell
93f24403f8 refactor: pre-incr to post-incr 2022-08-25 13:10:41 +01:00
sigmaSd
a4e4609d62 fix(path): path_is_url returns false for "foo:/" #19797
Problem:
path_to_url() returns false for single-slash URIs ("foo:/" vs "foo://").
This is not compliant with the URI spec. https://url.spec.whatwg.org/#url-representation
LSP in particular allows single-slash URIs.

Solution:
Relax path_to_url() to accept single-slash URIs. This is not fully
compliant (only ":" is required by the spec), but it is hopefully good
enough without causing false-positives in typical text files.

ref https://url.spec.whatwg.org/#windows-drive-letter
ref https://github.com/neovim/neovim/pull/19773
ref https://github.com/neovim/neovim/pull/19773#issuecomment-1214763769
2022-08-23 23:38:06 -07:00
zeertzjq
6cc6e11929 vim-patch:9.0.0206: redraw flags are not named specifically (#19913)
Problem:    Redraw flags are not named specifically.
Solution:   Prefix "UPD_" to the flags, for UPDate_screen().
a4d158b3c8
2022-08-23 22:00:19 +08:00
zeertzjq
ff5cfcdeab vim-patch:8.1.2045: the option.c file is too big (#19854)
Problem:    The option.c file is too big.
Solution:   Split off the code dealing with strings. (Yegappan Lakshmanan,
            closes vim/vim#4937)
dac1347b4d

Cherry-pick set_string_option_direct_in_win() from patch 8.1.1405.
Cherry-pick shift_line() comment change from patch 8.1.2096.
Move 'clipboard' default parsing to didset_string_options().
Reorder option flags to put Nvim-only flags at the end.
2022-08-20 17:26:44 +08:00
zeertzjq
2af9be3db5 vim-patch:8.1.1966: some code in options.c fits better elsewhere (#19840)
Problem:    Some code in options.c fits better elsewhere.
Solution:   Move functions from options.c to other files. (Yegappan
            Lakshmanan, closes vim/vim#4889)
e677df8d93
2022-08-19 19:20:39 +08:00
Lewis Russell
51063a90df vim-patch:8.1.2057: the screen.c file is much too big
Problem:    The screen.c file is much too big.
Solution:   Split it in three parts. (Yegappan Lakshmanan, closes vim/vim#4943)
7528d1f6b5

This is an approximation vim-patch 8.1.2057. Applying the patch directly
isn't feasible since our version of screen.c has diverged too much,
however we still introduce drawscreen.c and drawline.c:
- screen.c is now a much smaller file used for low level screen functions
- drawline.c contains everything needed for win_line()
- drawscreen.c contains everything needed for update_screen()

Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2022-08-19 10:01:40 +01:00
bfredl
d879331b0d feat(ui): allow to set the highlight namespace per window
- reimplement 'winhl' in terms of highlight namespaces
- check for EOF in screen tests (to indicate a likely crash)
2022-08-17 16:20:39 +02:00
zeertzjq
f7cfca49d6 refactor: remove some unused includes (#19820)
Replace grid.h in screen.h and screen.h in buffer.h with grid_defs.h
2022-08-17 22:18:34 +08:00
Shougo Matsushita
9a6d3bd76e vim-patch:9.0.0191: messages test fails; window size incorrect
Problem:    Messages test fails; window size incorrect when 'cmdheight' is
            made smaller.
Solution:   Properly cleanup after test with cmdheight zero.  Resize windows
            correctly when 'cmdheight' gets smaller.
d4cf9fc53e

N/A patches for version.c:

vim-patch:9.0.0192: possible invalid memory access when 'cmdheight' is zero

Problem:    Possible invalid memory access when 'cmdheight' is zero. (Martin
            Tournoij)
Solution:   Avoid going over the end of w_lines[] when w_height is Rows.
            (closes vim/vim#10882)
fdc5d17d58
2022-08-17 09:35:07 +08:00
Shougo Matsushita
5977a96b3f vim-patch:9.0.0190: the way 'cmdheight' can be made zero is inconsistent
Problem:    The way 'cmdheight' can be made zero is inconsistent.
Solution:   Only make 'cmdheight' zero when setting it explicitly, not when
            resizing windows. (closes vim/vim#10890)
f797e309ca
2022-08-17 09:34:13 +08:00
Lewis Russell
542fa8a9cc refactor: change pre-decrement/increment to post (#19799)
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
2022-08-16 12:26:08 +01:00
zeertzjq
5e98a41872 vim-patch:8.1.1869: code for the argument list is spread out (#19791)
Problem:    Code for the argument list is spread out.
Solution:   Put argument list code in arglist.c. (Yegappan Lakshmanan,
            closes vim/vim#4819)
4ad62155a1
2022-08-16 14:16:03 +08:00
bfredl
33f4ba7379 fix(winbar): do not always assume cursor is valid. fixes #19458 2022-08-13 10:45:21 +02:00
Dundar Goc
094cdf2d69 refactor: replace char_u with char
Work on https://github.com/neovim/neovim/issues/459
2022-08-12 14:22:02 +02:00
zeertzjq
94c3176478 refactor: use CLEAR_FIELD and CLEAR_POINTER macros (#19709)
vim-patch:8.2.0559: clearing a struct is verbose

Problem:    Clearing a struct is verbose.
Solution:   Define and use CLEAR_FIELD() and CLEAR_POINTER().
a80faa8930
2022-08-11 15:44:55 +08:00
zeertzjq
c57e133e50 fix(ui): set redraw_cmdline when setting window height (#19630) 2022-08-03 19:25:03 +08:00
zeertzjq
def0ced4c7 fix(tabpage): check if ROWS_AVAIL changed for resize (#19620)
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)
0b0ccbbfb0
2022-08-02 20:48:41 +08:00
zeertzjq
c9ca90229b vim-patch:9.0.0124: code has more indent than needed
Problem:    Code has more indent than needed.
Solution:   Use continue and return statements. (closes vim/vim#10824)
101d57b34b
2022-08-01 06:18:52 +08:00
bfredl
68ec497d52 Merge pull request #19437 from dundargoc/refactor/char_u-to-char
refactor: replace char_u with char
2022-07-31 15:55:01 +02:00
Shougo Matsushita
63244f68e7 vim-patch:9.0.0115: when 'cmdheight' is zero pressing ':' may scroll a window
Problem:    When 'cmdheight' is zero pressing ':' may scroll a window.
Solution:   Add the made_cmdheight_nonzero flag and set 'scrolloff' to zero.
6747cf1671
2022-07-31 17:15:36 +08:00
Shougo Matsushita
81a1d26c3e vim-patch:9.0.0114: the command line takes up space even when not used
Problem:    The command line takes up space even when not used.
Solution:   Allow for 'cmdheight' to be set to zero. (Shougo Matsushita,
            closes vim/vim#10675, closes vim/vim#940)
f39cfb7262

Omit win_redr_ruler() change: winbar may still need redraw.
Omit win_update() changes: Nvim doesn't use `Rows` there.
Omit redraw_asap(): removed.
2022-07-31 17:15:36 +08:00
Shougo
c1652bdcb5 cmdheight=0: fix bugs part2 (#19185) 2022-07-31 13:13:19 +08:00
Dundar Goc
824a729628 refactor: replace char_u with char
Work on https://github.com/neovim/neovim/issues/459
2022-07-31 00:52:59 +02:00
zeertzjq
0134a2cb3e vim-patch:9.0.0094: cursor restored unexpected with nested autocommand
Problem:    Cursor restored unexpected with nested autocommand.
Solution:   Do not restore the cursor when it was moved intentionally.
            (closes vim/vim#10780)
3d6ee8bda0
2022-07-28 11:40:35 +08:00
zeertzjq
394d65494a vim-patch:partial:9.0.0077: wrong restored cursor position when switching window in autocmd
Problem:    When switching window in autocmd the restored cursor position may
            be wrong.
Solution:   Do not restore the cursor if it was not set. (closes vim/vim#10775)
b03950fafa

This patch cannot be fully ported because it depends on patch 8.2.3518.
2022-07-28 11:38:02 +08:00
zeertzjq
8e67af1b20 vim-patch:9.0.0061: ml_get error with nested autocommand
Problem:    ml_get error with nested autocommand.
Solution:   Also check line numbers for a nested autocommand. (closes vim/vim#10761)
5fa9f23a63
2022-07-28 11:38:02 +08:00
dundargoc
e0eebe3087 refactor: enable -Wconversion warning for window.c (#19537)
Work on https://github.com/neovim/neovim/issues/567
2022-07-27 23:39:52 +01:00
zeertzjq
79872f3770 fix(options): properly free string options (#19510) 2022-07-27 07:26:32 +08:00
zeertzjq
1a07044c1c revert: "vim-patch:9.0.0061: ml_get error with nested autocommand" (#19509)
This reverts commit 6cee15da72.

Port this again when https://github.com/vim/vim/issues/10780 is fixed.
2022-07-26 11:53:17 +08:00
zeertzjq
6cee15da72 vim-patch:9.0.0061: ml_get error with nested autocommand
Problem:    ml_get error with nested autocommand.
Solution:   Also check line numbers for a nested autocommand. (closes vim/vim#10761)
5fa9f23a63
2022-07-23 17:50:25 +08:00
zeertzjq
9d556fc81f vim-patch:8.2.5035: when splitting a window the changelist position moves
Problem:    When splitting a window the changelist position moves.
Solution:   Set the changelist index a bit later. (closes vim/vim#10493)
e6f13b473c

Cherry-pick Test_nv_hat_count() change from patch 8.2.1593.
2022-07-23 09:48:24 +08:00
zeertzjq
9d4a4f49ef vim-patch:8.1.1933: the eval.c file is too big (#19462)
Problem:    The eval.c file is too big.
Solution:   Move code related to variables to evalvars.c. (Yegappan
            Lakshmanan, closes vim/vim#4868)
0522ba0359

Name the new file eval/vars.c instead.
2022-07-22 21:14:17 +08:00
Famiu Haque
9879fd5d08 fix: local winbar with tabs
Closes #19396
2022-07-20 20:32:22 +06:00
zeertzjq
591765c915 vim-patch:8.2.1061: insufficient testing for src/window.c (#19384)
Problem:    Insufficient testing for src/window.c.
Solution:   Add more tests. (Yegappan Lakshmanan, closes vim/vim#6345)
5d3c9f8c2a

Cherry-pick test_tagjump.vim changes from patch 8.1.2373.
2022-07-16 11:34:19 +08:00
zeertzjq
08235b6f2a vim-patch:8.2.0921: CTRL-W T in cmdline window causes trouble
Problem:    CTRL-W T in cmdline window causes trouble.
Solution:   Disallow CTRL-W T in the cmdline window.  Add more tests.
            (Naruhiko Nishino, closes vim/vim#6219)
4fdb8bd054

Test already passes in Nvim because of later patches.
Move Test_cmdwin_jump_to_win() to the right place.
2022-07-14 20:34:05 +08:00
zeertzjq
63f6ecd419 fix(float): fix mouse drag position if float window turned to a split 2022-07-10 17:24:29 +08:00
zeertzjq
63f63dd2b7 fix(float): fix glitch when making float window with border a split 2022-07-10 17:24:29 +08:00
zeertzjq
99e8298711 fix(float): fix float window with winbar cannot have screen height 2022-07-10 17:24:29 +08:00
zeertzjq
0612101c92 vim-patch:8.2.5043: can open a cmdline window from a substitute expression
Problem:    Can open a cmdline window from a substitute expression.
Solution:   Disallow opening a command line window when text or buffer is
            locked.
71223e2db8
2022-07-07 07:00:11 +08:00
Dundar Goc
3b8804571c refactor: replace char_u
Work on https://github.com/neovim/neovim/issues/459
2022-07-02 16:01:27 +02:00
zeertzjq
0b15c01912 vim-patch:9.0.0017: accessing memory beyond the end of the line
Problem:    Accessing memory beyond the end of the line.
Solution:   Stop Visual mode when closing a window.
3d51ce18ab
2022-07-02 06:55:23 +08:00
Shougo
5a490d838e cmdheight=0: fix bugs #18961
Continue of #16251

Fix #18953
Fix #18960
Fix #18958
Fix #18955
Fix #18970
Fix #18983
Fix #18995
Fix #19112
2022-06-30 18:59:50 -07:00
zeertzjq
7718b75846 refactor: move some mapping-related code to a separate file (#19061)
This marks the following Vim patches as ported:

vim-patch:8.1.1785: map functionality mixed with character input

Problem:    Map functionality mixed with character input.
Solution:   Move the map functionality to a separate file. (Yegappan
            Lakshmanan, closes vim/vim#4740)  Graduate the +localmap feature.
b66bab381c

vim-patch:8.2.3643: header for source file is outdated

Problem:    Header for source file is outdated.
Solution:   Make the header more accurate. (closes vim/vim#9186)
a3f83feb63

Also cherry-pick a change for <unique> mappings from patch 8.2.0807.
Rename map_clear_mode() to do_mapclear().
2022-06-23 21:17:11 +08:00
bfredl
5d69872105 perf(ui): reduce allocation overhead when encoding "redraw" events
Note for external UIs: Nvim can now emit multiple "redraw" event batches
before a final "flush" event is received. To retain existing behavior,
clients should make sure to update visible state at an explicit "flush"
event, not just the end of a "redraw" batch of event.

* Get rid of copy_object() blizzard in the auto-generated ui_event layer
* Special case "grid_line" by encoding screen state directly to
  msgpack events with no intermediate API events.
* Get rid of the arcane notion of referring to the screen as the "shell"
* Array and Dictionary are kvec_t:s, so define them as such.
* Allow kvec_t:s, such as Arrays and Dictionaries, to be allocated with
  a predetermined size within an arena.
* Eliminate redundant capacity checking when filling such kvec_t:s
  with values.
2022-06-20 12:44:56 +02:00
zeertzjq
0c6ad03c3f fix(ui): do not call showmode() when setting window height (#18969) 2022-06-15 19:41:58 +08:00
zeertzjq
6130b4a84b vim-patch:8.2.1898: command modifier parsing always uses global cmdmod
Problem:    Command modifier parsing always uses global cmdmod.
Solution:   Pass in cmdmod_T to use.  Rename struct fields consistently.
e100440158
2022-06-14 20:58:34 +08:00
Shougo
663cbe2620 feat: cmdheight=0 #16251
Fix https://github.com/neovim/neovim/issues/1004

Limitation: All outputs need hit-enter prompt.

Related:
https://github.com/neovim/neovim/pull/6732
https://github.com/neovim/neovim/pull/4382
2022-06-13 02:40:51 -07:00