Commit Graph

11591 Commits

Author SHA1 Message Date
zeertzjq
71294e6430 vim-patch:8.2.4427: getchar() may return modifiers if no character is available
Problem:    getchar() may return modifiers if no character is available.
Solution:   Do not process modifiers when there is no character. (closes vim/vim#9806)
ad6c45f625
(cherry picked from commit 3828fb7ea4)
2022-02-21 02:54:57 +00:00
zeertzjq
0ad89969e1 vim-patch:8.2.4166: undo synced when switching buffer in another window
Problem:    Undo synced when switching buffer in another window.
Solution:   Do not sync undo when not needed. (closes vim/vim#9575)
e615db0604
(cherry picked from commit 2fa1b4cbff)
2022-02-13 10:22:51 +00:00
zeertzjq
6d2e0ab621 fix: set RedrawingDisabled before entering aucmd_win
(cherry picked from commit dd21e21e97)
2022-02-12 18:03:08 +00:00
Quentin Minster
37b78620db build(win): don't try to package a PDB if not building with MSVC…
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
(cherry picked from commit 5fe6bbae2d)
2022-02-06 14:32:45 +00:00
quentin
74cbddf6e1 build(win): package the debug symbols (PDB file) along with nvim.exe
(cherry picked from commit f70d1442be)
2022-02-06 14:32:45 +00:00
zeertzjq
cee2de23ab fix(screen): do not draw filler lines post eof if already at last row
(cherry picked from commit b326bf5f41)
2022-02-05 00:00:25 +00:00
Daniel Steinberg
f1ab73cf6c fix(keywordprg): retain terminal buffer after K
(cherry picked from commit ef7425fe0c)
2022-01-13 05:05:05 +00:00
github-actions[bot]
f365e68293 feat(lua): add notify_once() (#17010)
Like vim.notify(), but only displays the notification once.

This function prints a warning message to the user only once per Nvim
session. This is useful for things we want the user to see without being
overwhelmed with warning messages (for example, the deprecation messages
in LSP diagnostics).
2022-01-09 10:42:30 -07:00
dundargoc
844872cc0a chore: fix typos in doc and Lua files
Co-authored-by: Gregory Anders <8965202+gpanders@users.noreply.github.com>
Co-authored-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Co-authored-by: Christoph Hasse <hassec@users.noreply.github.com>
Co-authored-by: Alef Pereira <ealefpereira@gmail.com>
Co-authored-by: AusCyber <willp@outlook.com.au>
Co-authored-by: kylo252 <59826753+kylo252@users.noreply.github.com>
2021-12-29 17:02:46 +01:00
Björn Linse
1cc63abf4a Merge pull request #16667 from neovim/backport-16420-to-release-0.6
[Backport release-0.6] vim-patch:8.1.2136,8.2.2465
2021-12-26 18:36:04 +01:00
Björn Linse
9f51da3442 Merge pull request #16679 from neovim/backport-16134-to-release-0.6
[Backport release-0.6] fix(screenpos, float): add top and left border adjustment
2021-12-26 18:35:25 +01:00
github-actions[bot]
37a00be7c0 fix(options): disallow empty 'fdc' and 'scl' (#16776)
Empty string values for these options aren't actually allowed, but
check_opt_strings allows empty string options.

It so happens that 'scl' handles empty string like "auto", but empty 'fdc'
causes glitchiness (win_fdccol_count returns an incorrect value).

Just disallow empty string values for these options completely.
2021-12-24 22:38:15 -07:00
Michael Lingelbach
7f4fa077cd fix: do not cast offset to char_u (#16672)
[Backport release-0.6] fix: do not cast offset to char_u
2021-12-19 13:26:59 -08:00
github-actions[bot]
1b54344c11 fix(api): allow nvim_buf_set_extmark to accept end_row key (#16686)
nvim_buf_get_extmark uses "end_row" rather than "end_line" in its
'details' dict, which means callers must modify the key names if they
want to re-use the information. Allow nvim_buf_set_extmark to take
"end_row" as an alias to "end_line" to make this more compatible.

See [1].

[1]: https://github.com/neovim/neovim/pull/15011#discussion_r665336968
2021-12-16 11:05:58 -07:00
zeertzjq
8f68548384 fix(screenpos, float): add top and left border adjustment
(cherry picked from commit ffe3003e02)
2021-12-16 11:42:14 +00:00
Michael Lingelbach
25da2430f9 chore: improve naming consistency in str_utf_start
(cherry picked from commit fcbffcd92a)
2021-12-15 21:57:11 +00:00
Michael Lingelbach
93f1ec0a59 fix: do not cast offset to char_u
* str_utf_start/end both cast the offset into the utf string
to a char_u, a pointer + long is well-defined and the cast is
unnecessary. This previously resulted in issues for offsets greater than
256.

(cherry picked from commit 1a887293ef)
2021-12-15 21:57:10 +00:00
Sean Dewar
e86997a812 vim-patch:8.2.2465: using freed memory in :psearch
Problem:    Using freed memory in :psearch. (houyunsong)
Solution:   Check the current window is still valid.  Fix flaky test.
92bb83e41c

Test_cursorhold_insert timer's 100ms delay was already LoadAdjusted, but change
to 200ms (still LoadAdjust) to match Vim anyway.

(cherry picked from commit dac52e6d04)
2021-12-15 17:27:32 +00:00
Sean Dewar
a0ebba7052 vim-patch:8.1.2136: using freed memory with autocmd from fuzzer
Problem:    using freed memory with autocmd from fuzzer. (Dhiraj Mishra,
            Dominique Pelle)
Solution:   Avoid using "wp" after autocommands. (closes vim/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).

(cherry picked from commit c366c944c2)
2021-12-15 17:27:32 +00:00
github-actions[bot]
ae249d81fb fix(terminal): fix resize crash with pending scrollback (#16665)
refresh_scrollback assumes pending scrollback rows exist only if the
terminal window height decreased (or the screen was full).

However, after accumulating scrollback, it's possible in some cases for
the terminal height to increase before refresh_scrollback is called via
invalidation (especially when the terminal buffer isn't initially
displayed in a window before nvim_open_term), which may crash.

As we'll have enough room for some scrollback rows, just append them to
the top of the buffer until it fills the window, then continue with the
previous logic for any remaining scrollback rows if necessary.
2021-12-15 08:29:26 -07:00
github-actions[bot]
aa0ddc6690 fix(quickfix): avoid O(N^2) when filling from string typval (#16663)
When filling a quickfix/loclist from a string-typed VimL variable, the
complexity is O(N^2) in the number of lines in the variable.

The problem is caused by using `xstrlcpy(3)` to copy the characters from
the current position up to the next newline into the quickfix/loclist
buffer in a loop.

strlcpy(3) returns the length of `src`, so by necessity it has to
compute `strlen(src)`. This means scanning the full rest of the typval
on every iteration while only copying a small fraction (up to the next
'\n').

This is not a problem whenever the srclen-to-copylen ratio is close to
1, which it usually is. But not in this case. Since we already
calculated exactly how many bytes we want to copy, we should be using
memcpy(3).

This problem is not present in Vim, as it uses `vim_strncpy`, a
`strncpy(3)`-alike, which stops at either `\0` or `n`, whichever comes
first.

The quickfix/loclist window can be filled using a:

  1. File (used by commands like :grep/:make/... to source directly
     from their errorfile)
  2. Buffer (used by :cbuffer and its variants)
  3. Typval
   a. String (used by :cexpr and its variants)
   b. List of strings (used by setqflist(), setloclist(), :cepxr and its
   variants)

This commit optimizes case (3a), especially when the typval is a long
string.

The pathological path is triggered by (e.g.) :grep enhancements as found
in https://gist.github.com/romainl/56f0c28ef953ffc157f36cc495947ab3:

    function! Grep(...)
        return system(join([&grepprg] + a:000), ' '))
    endfunction
    :cgetexpr Grep('foo')

It would've been better for Neovim to use `systemlist` here, before this
commit.
2021-12-15 08:08:53 -07:00
zeertzjq
caf41a7ac9 vim-patch:8.2.3703: most people call F# "fsharp" and not "fs" (#16469)
Problem:    Most people call F# "fsharp" and not "fs".
Solution:   Rename filetype "fs" to "fsharp".
53ba95e4f0
2021-11-30 14:51:17 +01:00
Gregory Anders
b6e531c1d9 docs(lsp): add annotations for private functions 2021-11-30 09:03:41 +01:00
ii14
bc1d13bb36 chore: fix typos
Co-authored-by: ii14 <ii14@users.noreply.github.com>
2021-11-30 09:03:41 +01:00
Christian Clason
e4976cbd26 Merge pull request #16452 from clason/vim-8.2.3685
vim-patch:8.2.{3451,3458,3452,3685,3686}: some filetypes are not recognized correctly
2021-11-28 11:57:07 +01:00
Christian Clason
1840c82b42 Merge pull request #16451 from clason/vim-8.2.3684
vim-patch:8.2.{3684,3687}: blockwise insert does not handle autoindent properly
2021-11-28 11:47:07 +01:00
Christian Clason
2f8ed7b822 vim-patch:8.2.3687: blockwise insert does not handle autoindent properly
Problem:    Blockwise insert does not handle autoindent properly when tab is
            inserted.
Solution:   Adjust text column for indent before computing column.
            (closes vim/vim#9229)
59f4f9505a
2021-11-28 00:47:14 +01:00
Christian Clason
ea5699399e vim-patch:8.2.3686: filetype detection often mixes up Forth and F#
Problem:    Filetype detection often mixes up Forth and F#.
Solution:   Add a function to inspect the file contents. (Doug Kearns)
3d14c0f2b9
2021-11-27 19:21:57 +01:00
dundargoc
caa6992a10 chore: fix typos (#16361)
Co-authored-by: Brede Yabo Sherling Kristensen <bredeyabo@hotmail.com>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Co-authored-by: István Donkó <istvan.donko@gmail.com>
Co-authored-by: Julian Berman <Julian@GrayVines.com>
Co-authored-by: bryant <bryant@users.noreply.github.com>
Co-authored-by: Michael Lingelbach <m.j.lbach@gmail.com>
Co-authored-by: nlueb <9465658+nlueb@users.noreply.github.com>
Co-authored-by: Leonhard Saam <leonhard.saam@yahoo.com>
Co-authored-by: Jesse Wertheim <jaawerth@gmail.com>
Co-authored-by: dm1try <me@dmitry.it>
Co-authored-by: Jakub Łuczyński <doubleloop@o2.pl>
Co-authored-by: Louis Lebrault <louis.lebrault@gmail.com>
Co-authored-by: Brede Yabo Sherling Kristensen <bredeyabo@hotmail.com>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
Co-authored-by: István Donkó <istvan.donko@gmail.com>
Co-authored-by: Julian Berman <Julian@GrayVines.com>
Co-authored-by: bryant <bryant@users.noreply.github.com>
Co-authored-by: Michael Lingelbach <m.j.lbach@gmail.com>
Co-authored-by: nlueb <9465658+nlueb@users.noreply.github.com>
Co-authored-by: Leonhard Saam <leonhard.saam@yahoo.com>
Co-authored-by: Jesse Wertheim <jaawerth@gmail.com>
Co-authored-by: dm1try <me@dmitry.it>
Co-authored-by: Jakub Łuczyński <doubleloop@o2.pl>
Co-authored-by: Louis Lebrault <louis.lebrault@gmail.com>
2021-11-27 11:10:48 -05:00
Christian Clason
b339cb5aca vim-patch:8.2.3451: not all apache files are recognized
Problem:    Not all apache files are recognized.
Solution:   Adjust the filetype pattern. (Zdenek Dohnal, closes vim/vim#8882)
770ddbe159
2021-11-27 16:26:33 +01:00
Christian Clason
47ad1a3584 vim-patch:8.2.3458: not all dictdconf files are recognized
Problem:    Not all dictdconf files are recognized.
Solution:   Adjust the pattern. (Doug Kearns)
be01090efa
2021-11-27 16:26:20 +01:00
Christian Clason
b156ffedb6 vim-patch:8.2.3685: Visual studio project files are not recognized
Problem:    Visual studio project files are not recognized.
Solution:   Use the xml file type. (Doug Kearns)
c07f11e42f
2021-11-27 16:23:19 +01:00
Michael Lingelbach
512ec4632f fix: allow str_utfindex second argument to be an explicit nil (#16448)
* str_utfindex checks number of arguments only, but ignores the case in
  which the second argument is an explicit nil. Previously this required
  dropping the second argument entirely.
* Modify the C binding to explicitly check if the second argument is nil
2021-11-27 10:07:58 -05:00
Christian Clason
a8dd1ea011 vim-patch:8.2.3684: blockwise insert does not handle autoindent properly
Problem:    Blockwise insert does not handle autoindent properly.
Solution:   Adjust text column for indent. (closes vim/vim#9229)
e9b0b40b79
2021-11-27 14:55:40 +01:00
Christian Clason
afbf89dc01 vim-patch:8.2.3679: objc file detected as Octave (#16446)
Problem:    objc file detected as Octave. (Antony Lee)
Solution:   Detect objc by preprocessor lines. (Doug Kearns, closes vim/vim#9223,
            closes vim/vim#9220)
7329cfab36
2021-11-26 17:34:45 +01:00
Christian Clason
a31e7523f4 vim-patch:8.2.3677: after a put the '] mark is on the last byte (#16442)
Problem:    After a put the '] mark is on the last byte of a multi-byte
            character.
Solution:   Move it to the first byte. (closes vim/vim#9047)
4d07253a48
2021-11-26 12:16:04 +01:00
Mathias Fußenegger
72d62aa6aa chore(docs): clarify vim.notify log_level parameter (#16436) 2021-11-25 20:06:42 +01:00
Gregory Anders
150a5922aa feat(diagnostic)!: make DiagnosticChanged a first class autocmd (#16098)
This allows users to hook into diagnostic events with finer granularity
(e.g. per-buffer or file).

BREAKING CHANGE: DiagnosticsChanged and LspDiagnosticsChanged user
autocommands are removed.
2021-11-25 11:55:11 -07:00
Javier Lopez
a2e5c2f7c8 fix(fileio): replace characters over INT_MAX with U+FFFD (#16354)
fixes #11877
credit: @zubairabid https://github.com/neovim/neovim/pull/12010
2021-11-23 21:07:47 -07:00
Jan Edmund Lazo
64abd7be79 Merge pull request #16341 from zeertzjq/vim-8.2.2518
vim-patch:8.2.{2518,2520,3572,3588}: 'listchars' (and 'fillchars'?) fixes
2021-11-21 22:21:32 -05:00
zeertzjq
e05db65d2a vim-patch:8.2.3627: difficult to know where the text starts in a window (#16377)
vim-patch:8.2.3627: difficult to know where the text starts in a window

Problem:    difficult to know where the text starts in a window. (Sergey
            Vlasov)
Solution:   Add the "textoff" entry in the result of getwininfo().
            (closes vim/vim#9163)
cdf5fdb294

Fix indent in Test_getbufwintabinfo().
2021-11-21 21:10:03 -05:00
Jan Edmund Lazo
f45b2f313e Merge pull request #16386 from VVKot/vim-8.2.2922
vim-patch:8.2.2922,8.2.3639
2021-11-21 20:41:56 -05:00
Jan Edmund Lazo
0d967f0298 Merge pull request #16362 from zeertzjq/vim-8.2.3617
vim-patch:8.2.{3468,3617,3618,3622}: some other CWD related patches
2021-11-21 17:47:09 -05:00
Michal Liszcz
85707a3395 vim-patch:8.2.3255: ci" finds following string but ci< and others don't (#16324)
Problem:    ci" finds following string but ci< and others don't.
Solution:   When not inside an object find the start. (Connor Lane Smit,
            closes vim/vim#8670)
b9115da4be
2021-11-21 14:00:50 -05:00
Volodymyr Kot
9d0726f6d8 vim-patch:8.1.1606: on a narrow screen ":hi" output is confusing (#16388)
Problem:    On a narrow screen ":hi" output is confusing.
Solution:   Insert a space between highlight group name and "xxx". (Masato
            Nishihaga, closes vim/vim#4599)
548be7f126
2021-11-21 13:10:24 -05:00
ii14
9d868317f9 vim-patch:8.2.3638: getcompletion() always passes zero as position (#16387)
Problem:    getcompletion() always passes zero as position to custom
            completion function.
Solution:   Pass the pattern length. (closes vim/vim#9173)
4785fe02bb

Co-authored-by: ii14 <ii14@users.noreply.github.com>
2021-11-21 13:00:51 -05:00
VVKot
ad71ecb49b vim-patch:8.2.3639: line commented out accidentally
Problem:    Line commented out accidentally.
Solution:   Uncomment. (Volodymyr Kot, closes vim/vim#9172)
7f0c4b418e
2021-11-21 13:53:50 +00:00
VVKot
ddc401a91c vim-patch:8.2.2922: computing array length is done in various ways
Problem:    Computing array length is done in various ways.
Solution:   Use ARRAY_LENGTH everywhere. (Ken Takata, closes vim/vim#8305)
eeec254878
2021-11-21 08:20:38 +00:00
Jan Edmund Lazo
120a881630 Merge pull request #14540 from Shougo/fix_vim8.1.1378
[RFC] Improve tests
2021-11-20 22:46:34 -05:00
Volodymyr Kot
2bd8f2fb5e vim-patch:8.1.0753: printf format not checked for semsg() (#16378)
Problem:    printf format not checked for semsg().
Solution:   Add GNUC attribute and fix reported problems. (Dominique Pelle,
            closes vim/vim#3805)
b5443cc46d

(Most of the changes do not apply because Neovim already uses PRId64 and other spelling mistakes were already fixed.)
2021-11-20 13:26:16 +01:00