Commit Graph

19624 Commits

Author SHA1 Message Date
James McCoy
cc2e16f4e0 Merge pull request #17067 from neovim/backport-17046-to-release-0.6
[Backport release-0.6] fix(keywordprg): retain terminal buffer after K
2022-01-17 13:41:49 -05:00
James McCoy
33284615fe Merge pull request #16916 from neovim/backport-16911-to-release-0.6
[Backport release-0.6] test: make test for #14040 more stable
2022-01-17 13:41:25 -05:00
James McCoy
239e549d23 Merge pull request #16907 from neovim/backport-16906-to-release-0.6
[Backport release-0.6] fix(lsp): explicitly pass bufnr in didSave handler
2022-01-17 13:41:06 -05:00
James McCoy
f0101d696c Merge pull request #16896 from neovim/backport-16886-to-release-0.6
[Backport release-0.6] docs(usr_05): fix section numbers
2022-01-17 13:40:45 -05:00
James McCoy
315f8b92d0 Merge pull request #16483 from neovim/marvim/api-doc-update/release-0.6
docs: regenerate
2022-01-17 13:40:04 -05:00
Daniel Steinberg
f1ab73cf6c fix(keywordprg): retain terminal buffer after K
(cherry picked from commit ef7425fe0c)
2022-01-13 05:05:05 +00:00
marvim
a6a6f7ba16 docs: regenerate 2022-01-09 17:43:35 +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
github-actions[bot]
11dafcaf05 fix(runtime): check markdownError before syn-clear (#17009)
Avoids `E28: No such highlight group name: markdownError` when using a
foreign markdown syntax.
2022-01-09 10:25:04 -07:00
github-actions[bot]
dd0d4fc666 fix(lsp): only send command and args in executeCommand (#17002)
(cherry picked from commit 2045479416)

Co-authored-by: Michael Lingelbach <m.j.lbach@gmail.com>
2022-01-08 11:25:44 -08:00
github-actions[bot]
e44f88bbe7 fix(lsp): resolve bufnr for get_lines (#16997)
Closes https://github.com/neovim/neovim/issues/16985

* get_lines checks if buf_loaded using bufnr 0, which is
  typically used as a sentinel value, but here must be resolved
  to the true bufnr

(cherry picked from commit 5ebb1951bc)

Co-authored-by: Michael Lingelbach <m.j.lbach@gmail.com>
2022-01-08 13:31:39 +01:00
Daniel Steinberg
5901b4c624 test: make test for #14040 more stable
(cherry picked from commit 1d4f51553d)
2022-01-04 16:27:16 +00:00
Michael Lingelbach
01cb4d8846 fix(lsp): explicitly pass bufnr in didSave handler
Addresses a regression introduced by the stricter type checking
in lua api functions from https://github.com/neovim/neovim/pull/16745

(cherry picked from commit 62ae12dc8c)
2022-01-04 02:03:49 +00:00
Sean Dewar
bdd92e46b3 docs(usr_05): fix section numbers
Other refs to 05.3 don't need to be updated as they refer to the simple mappings
section anyway. Seems they weren't updated when the defaults.vim section was
added as 05.3 instead.

(cherry picked from commit 11e64f26a5)
2022-01-03 13:56:44 +00:00
James McCoy
11f18a8adf Merge pull request #16888 from jamessan/backport-16853-to-release-0.6
[Backport release-0.6] ci: run lint only on master branch
2022-01-02 14:21:12 -05:00
James McCoy
ede410ae3d ci: run lint only on master branch
The list of known lint issues is only updated for the master branch, so
other branches report lots of false positive issues.
2022-01-02 14:11:42 -05:00
github-actions[bot]
cebda91abb fix(lsp): always use target bufnr in location handler (#16880)
(cherry picked from commit ab8c22ab87)

Co-authored-by: Michael Lingelbach <m.j.lbach@gmail.com>
2022-01-02 09:42:50 -05:00
Björn Linse
6177030e4a version bump 2021-12-31 18:04:21 +01:00
Björn Linse
5b839ced69 NVIM 0.6.1 (2021-12-31)
Bug Fixes

  * api: allow nvim_buf_set_extmark to accept end_row key #16686 1b54344
  * diagnostic: assert that diagnostics have line number and column #16687 9dae939
  * diagnostic: clamp diagnostics on negative line numbers #16497 096f841
  * diagnostic: escape special chars in file names #16588 beac24d
  * diagnostic: respect "if_many" source option for virtual text #16697 060eeaa
  * diagnostic: set effective buffer number for DiagnosticChanged autocmd #16485 84784a8
  * diagnostic: set effective buffer number in autocmd (again) #16590 08ddfa9, closes #16474
  * lua: do not cast offset to char_u 93f1ec0
  * lsp: avoid attaching to unloaded buffers #16726 0088994
  * lsp: call config on_exit handler before context is cleared #16781 571609f
  * lsp: fix `nil`-index behavior for UTF-8 in `_str_*index_enc` methods #16785 03bd914
  * lsp: handle offset encoding #16783 7b60ec7
  * lsp: progress handlers should return vim.NIL on error #16476 fb11ef0
  * options: disallow empty 'fdc' and 'scl' #16776 37a00be
  * quickfix: avoid O(N^2) when filling from string typval #16663 aa0ddc6
  * screenpos, float: add top and left border adjustment 8f68548
  * terminal: fix resize crash with pending scrollback #16665 ae249d8
  * ui: close floating window on BufLeave event #16664 785bace
  * uri: change scheme pattern to not include the comma character #16798 0e96f7d

Features

  * lsp,diagnostic: open folds in jump-related functions #16784 ee9e342
  * lsp: add buf_detach_client #16741 ec101b9
  * lsp: use `vim.ui.select` for selecting lsp client #16782 14357c8
  * runtime: new checkhealth filetype #16708 09306f0
v0.6.1
2021-12-31 18:02:21 +01: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
github-actions[bot]
0e96f7d04c fix(uri): change scheme pattern to not include the comma character (#16798)
(cherry picked from commit efbe306d2d)

Co-authored-by: Dmytro Meleshko <dmytro.meleshko@gmail.com>
2021-12-26 16:39:03 -05: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
Michael Lingelbach
857678c2ec refactor(lsp): remove usage of deprecated function (#16787)
(cherry picked from commit bb31d3f21a)

Co-authored-by: Gregory Anders <greg@gpanders.com>
2021-12-25 11:42:29 -05:00
github-actions[bot]
03bd9147f0 fix(lsp): fix nil-index behavior for UTF-8 in _str_*index_enc methods (#16785)
Previously, the `_str_utfindex_enc` and `_str_byteindex_enc` helper functions would return `nil` when `offset_encoding == "utf-8"` and `index == nil`. Clearly, this doesn't reflect the expected behavior of the functions they're wrapping which would return the length of the line in this case. This should fix behavior with servers that use UTF-8 `offset_encoding` when applying text edits, formatting a range, and doing range code actions (though this isn't tested currently).

(cherry picked from commit 5f4c501cf1)

Co-authored-by: Rishikesh Vaishnav <rishhvaishnav@gmail.com>
2021-12-25 10:52:45 -05:00
github-actions[bot]
ee9e3420fd feat(lsp,diagnostic): open folds in jump-related functions (#16784)
(cherry picked from commit ddf545c152)

Co-authored-by: Dmytro Meleshko <dmytro.meleshko@gmail.com>
2021-12-25 10:43:28 -05:00
github-actions[bot]
7b60ec79ea fix(lsp): handle offset encoding (#16783)
Co-authored-by: black-desk <clx814727823@gmail.com>
Co-authored-by: Mathias Fußenegger <mfussenegger@users.noreply.github.com>
(cherry picked from commit 4687d853a5)

Co-authored-by: Rishikesh Vaishnav <rishhvaishnav@gmail.com>
2021-12-25 10:27:55 -05:00
github-actions[bot]
14357c83c5 feat(lsp): use vim.ui.select for selecting lsp client (#16782)
(cherry picked from commit 43cdcba476)

Co-authored-by: Anshuman <amedhi@connect.ust.hk>
2021-12-25 10:17:57 -05:00
github-actions[bot]
571609fb89 fix(lsp): call config on_exit handler before context is cleared (#16781)
The on_exit handler provided to the client configuration is called after
the client's context is cleared (e.g. which buffers the client was
attached to). Calling the handler sooner allows these handlers to access
the client object and do their own cleanup with the full context.

(cherry picked from commit 5ab49430ee)

Co-authored-by: Gregory Anders <greg@gpanders.com>
2021-12-25 10:10:18 -05: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
github-actions[bot]
09306f07c4 feat(runtime): new checkhealth filetype (#16708) 2021-12-23 08:38:56 -07:00
github-actions[bot]
ec101b9fd9 feat(lsp): add buf_detach_client (#16741)
This allows the user to detach an active buffer from the language
client. If no clients remain attached to a buffer, the on_lines callback
is used to cancel nvim_buf_attach.

(cherry picked from commit 6db2155032)

Co-authored-by: Michael Lingelbach <m.j.lbach@gmail.com>
2021-12-21 11:12:58 -08:00
github-actions[bot]
222d1414dc fix(lsp): correctly align start and end range to codepoints during incremental sync (#16670)
Closes #16624

Fixes two issues with aligning the start position and end position to
codepoints when calculating the start and end range.

When aligning the start position:
* use aligned byte index to calculate character index rather than 
  the unadjusted byte

When aligning the end position:
* do not adjust the end byte if it falls on a UTF-8 codepoint
* align byte to the first byte of the next codepoint rather than the
  last byte of the current codepoint
* compute character character end range on the aligned byte index

This commit also adds additional test coverage, including multibyte operations
that previously failed before this commit.
2021-12-21 09:24:50 -08: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]
00889948dd fix(lsp): avoid attaching to unloaded buffers (#16726)
Closes https://github.com/neovim/neovim/issues/16562 https://github.com/neovim/neovim/issues/16249 https://github.com/neovim/neovim/issues/16297

* buf_attach_client can be called on an unloaded buffer
* on_attach will prematurely fail, while the language server client
  tracks this buffer as attached
* The language server client will track this buffer as attached despite
  textDocument/didChange notifications not being sent to the server
* Instead, check if the buffer is loaded and return early, warning via
  the lsp logger that buf_attach_client was called on an invalid buffer

(cherry picked from commit 6d63cb8f6a)

Co-authored-by: Michael Lingelbach <m.j.lbach@gmail.com>
2021-12-19 13:24:08 -08:00
James McCoy
1bb861c7a1 Merge pull request #16713 from neovim/backport-16707-to-release-0.6
[Backport release-0.6] test: allow excluding functional/unti tests using TEST_FILTER_OUT
2021-12-18 13:39:00 -05:00
James McCoy
d547d874af test: allow excluding functional/unit tests using TEST_FILTER_OUT
Although this can already be done using `BUSTED_ARGS`, it complements
our existing shortcut of `TEST_FILTER.`

[skip ci]

(cherry picked from commit 267ec67fab)
2021-12-18 18:16:03 +00:00
github-actions[bot]
060eeaa14c fix(diagnostic): respect "if_many" source option for virtual text (#16697)
The `prefix_source` function only evaluates the sources from the
diagnostics passed to it; however, because each namespace draws its own
virtual text, its diagnostics will never contain more than a single
source (by definition). This requires changing the semantics of what
"if_many" means from "multiple sources in a single 'batch' of
diagnostics" to "multiple sources of all diagnostics within a buffer".
2021-12-17 19:44:16 -07:00
github-actions[bot]
9dae939b1f fix(diagnostic): assert that diagnostics have line number and column (#16687)
Line number and column are required and much of the diagnostic API
assumes that these are both present. When one of the two is missing,
cryptic errors pop up in other parts of the diagnostic subsystem.
Instead, assert that diagnostics are well formed when they are entered
into the cache, which provides a clearer error.
2021-12-17 12:55:39 -07:00
github-actions[bot]
8c6a4fab66 refactor(diagnostic): remove hack (#16689)
No longer required since #16548.
2021-12-16 12:18:45 -07: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
github-actions[bot]
5c8e5432c0 docs(options): mention how to disable inccommand preview (#16671)
Co-authored-by: Hitarth Thummar <47787284+gtlsgamr@users.noreply.github.com>
2021-12-15 22:43:45 +01: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]
785baceaee fix(ui): close floating window on BufLeave event (#16664)
When buffer is visible in two splits simultaneously, BufHidden event is
not triggered, causing the floating window to remain on screen after
switching to another buffer.

Remove BufHidden event from close_events defaults, and close the window
if we changed the buffer to something other than the buffer that spawned
the floating window or the floating window buffer itself.
2021-12-15 08:12:35 -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