aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim
Commit message (Collapse)AuthorAge
* fix(treesitter): lint top-level anonymous nodesRiley Bruins2024-09-20
| | | | | | | | | | **Problem:** Top-level anonymous nodes are not being checked by the query linter **Solution:** Check them by adding them to the top-level query This commit also moves a table construction out of the match iterator so it is run less frequently.
* docs(lsp): hover window controls #30347Tristan Knight2024-09-19
|
* fix(health): check more "old" files #30421Justin M. Keyes2024-09-19
| | | | | | | | | | | | | | | | | | | | | | | | Problem: Node.js provider (optional) ~ - ERROR Failed to run healthcheck for "provider.node" plugin. Exception: …/runtime/lua/provider/node/health.lua:9: attempt to call field 'provider_disabled' (a nil value) Perl provider (optional) ~ - ERROR Failed to run healthcheck for "provider.perl" plugin. Exception: …/runtime/lua/provider/perl/health.lua:8: attempt to call field 'provider_disabled' (a nil value) Python 3 provider (optional) ~ - ERROR Failed to run healthcheck for "provider.python" plugin. Exception: …/runtime/lua/provider/python/health.lua:226: attempt to call field 'provider_disabled' (a nil value) Ruby provider (optional) ~ - ERROR Failed to run healthcheck for "provider.ruby" plugin. Exception: …/runtime/lua/provider/ruby/health.lua:9: attempt to call field 'provider_disabled' (a nil value) Solution: Add these files to the runtime sanity check. fix #29302
* refactor!: rename 'jumpoptions' flag "unload" to "clean" (#30418)zeertzjq2024-09-19
| | | Follow-up to #29347
* vim-patch:9.1.0735: filetype: salt files are not recognizedGregory Anders2024-09-17
| | | | | | | | | | | | Problem: filetype: salt files are not recognized Solution: Detect '*.sls' files as filetype salt, include a syntax script (Gregory Anders) closes: vim/vim#15689 https://github.com/vim/vim/commit/89b9bb4ac8ceb701ebecb8c02aca3d047dff9991 Co-authored-by: Gregory Anders <greg@gpanders.com>
* vim-patch:9.1.0734: filetype: jinja files are not recognizedGregory Anders2024-09-17
| | | | | | | | | | | | Problem: filetype: jinja files are not recognized Solution: detect '*.jinja' files a jinja filetype, include jinja syntax script (Gregory Anders) related: vim/vim#15689 https://github.com/vim/vim/commit/202c467bb37b894ada6377d3f2621c103f324757 Co-authored-by: Gregory Anders <greg@gpanders.com>
* docs(eval): update param types of prompt-buffer functions (#30392)glepnir2024-09-16
|
* feat(vim.ui): configurable "gx" / vim.ui.open() toolMatěj Cepl2024-09-16
| | | | | | | | | | | | | | Problem: User cannot configure the tool used by `vim.ui.open` (or `gx`). With netrw this was supported by `g:netrw_browsex_viewer`. Solution: Introduce `opts.cmd`. Users that want to set this globally can monkey-patch `vim.ui.open` in the same way described at `:help vim.paste()`. Fixes https://github.com/neovim/neovim/issues/29488 Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
* vim-patch:9.1.0731: inconsistent case sensitive extension matchingChristian Clason2024-09-16
| | | | | | | | | | | | | | | | | | | | | Problem: inconsistent case sensitive extension matching Solution: unify case sensitive extension matching (Evgeni Chasnovski). There are different approaches of how extensions are matched with respect to case sensitivity. In particular, '\c' flag is used in pattern whereas in most places case sensitive matching is guarded behind `has("fname_case")` condition. Replace all instances of '\c' with an explicit case sensitive pattern variants guarded by `has("fname_case")`. Strictly speaking, this is a breaking change because only two (most common and prevailingly tested) variants are now matched: upper first letter and upper all letters. closes: vim/vim#15672 https://github.com/vim/vim/commit/59b089c9df238ce940b3c593295bc511e201399a Co-authored-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>
* fix(defaults): cannot remove "How-to disable mouse" menu item #30375Jaehwang Jung2024-09-14
|
* fix(lsp): handle nil bytes in stringsMathias Fussenegger2024-09-13
| | | | | | | | | | | | | | | | | | | | | Problem: The LSP omnifunc can insert nil bytes, which when read in other places (like semantic token) could cause an error: semantic_tokens.lua:304: Vim:E976: Using a Blob as a String Solution: Use `#line` instead of `vim.fn.strlen(line)`. Both return UTF-8 bytes but the latter can't handle nil bytes. Completion candidates can currently insert nil bytes, if other parts of Alternative fix to https://github.com/neovim/neovim/pull/30359 Note that https://github.com/neovim/neovim/pull/30315 will avoid the insertion of nil bytes from the LSP omnifunc, but the change of this PR can more easily be backported.
* feat(treesitter): start moving get_parser to return nil #30313Riley Bruins2024-09-13
| | | | | | | | | | | | | | | | | | | **Problem:** `vim.treesitter.get_parser` will throw an error if no parser can be found. - This means the caller is responsible for wrapping it in a `pcall`, which is easy to forget - It also makes it slightly harder to potentially memoize `get_parser` in the future - It's a bit unintuitive since many other `get_*` style functions conventionally return `nil` if no object is found (e.g. `get_node`, `get_lang`, `query.get`, etc.) **Solution:** Return `nil` if no parser can be found or created - This requires a function signature change, and some new assertions in places where the parser will always (or should always) be found. - This commit starts by making this change internally, since it is breaking. Eventually it will be rolled out to the public API.
* fix(lsp): handle empty call hierarchy items #30349James Trew2024-09-13
| | | | | Ensure that the function `pick_call_hierarchy_item` correctly handles the case where `call_hierarchy_items` is nil or an empty table. This prevents potential errors when the function is called with no items.
* vim-patch:9.1.0725: filetype: swiftinterface files are not recognized (#30350)zeertzjq2024-09-12
| | | | | | | | | | | Problem: filetype: swiftinterface files are not recognized Solution: Detect '*.swiftinterface' files as swift filetype (LosFarmosCTL) closes: vim/vim#15658 https://github.com/vim/vim/commit/03cac4b70d819148f4b4404701b8f331a3af0fb6 Co-authored-by: LosFarmosCTL <80157503+LosFarmosCTL@users.noreply.github.com>
* fix: replace NVIM with Nvim in default titlestring (#30348)Gregory Anders2024-09-11
|
* fix(lsp): check buffer is loaded and valid #30330glepnir2024-09-11
| | | | | Problem: buffer mabye not valid when callback handler invoke. Soliton: check buffer is valid and loaded in handler.
* fix(health): return correct name from 'path2name()'monkoose2024-09-11
| | | `path2name()` function doesn't process `'pluginname/health/init.lua'` correctly. Instead of retruning `'pluginname'` it returns `'pluginname.health'`
* vim-patch:d657d3d: runtime(doc): clarify the effect of the timeout for ↵zeertzjq2024-09-11
| | | | | | | | | | search()-functions (#30337) related: vim/vim#15657 related: vim/vim#15404 https://github.com/vim/vim/commit/d657d3d8fd635dbd78402358788dc58a96d04117 Co-authored-by: Christian Brabandt <cb@256bit.org>
* fix(lsp): handle encoding bounds in str_utfindex_enctris2032024-09-10
| | | | | | | | | | Problem: str_utfindex_enc could return an error if the index was longer than the line length. This was handled in each of the calls to it individually Solution: * Fix the call at the source level so that if the index is higher than the line length, utf length is returned
* fix(lua): revert vim.tbl_extend behavior change and document itChristian Clason2024-09-08
| | | | | | | | | | | | | | Problem: vim.tbl_deep_extend had an undocumented feature where arrays (integer-indexed tables) were not merged but compared literally (used for merging default and user config, where one list should overwrite the other completely). Turns out this behavior was relied on in quite a number of plugins (even though it wasn't a robust solution even for that use case, since lists of tables (e.g., plugin specs) can be array-like as well). Solution: Revert the removal of this special feature. Check for list-like (contiguous integer indices) instead, as this is closer to the intent. Document this behavior.
* fix(lsp): handle out-of-bounds character positions #30288Tristan Knight2024-09-08
| | | | | | | | | | | Problem: str_byteindex_enc could return an error if the index was longer than the lline length. This was handled in each of the calls to it individually Solution: * Fix the call at the source level so that if the index is higher than the line length, line length is returned as per LSP specification * Remove pcalls on str_byteindex_enc calls. No longer needed now that str_byteindex_enc has a bounds check.
* fix(vim.ui.open): prefer xdg-open on WSL #30302Yi Ming2024-09-07
| | | | xdg-open is usually not installed in WSL. But if the user deliberately installs it, presumably they want to prioritize it.
* vim-patch:9.1.0720: Wrong breakindentopt=list:-1 with multibyte or TABs (#30293)zeertzjq2024-09-07
| | | | | | | | | | Problem: Wrong breakindentopt=list:-1 with multibyte chars or TABs in text matched by 'formatlistpat' (John M Devin) Solution: Use the width of the match text (zeertzjq) fixes: vim/vim#15634 closes: vim/vim#15635 https://github.com/vim/vim/commit/61a6ac4d0066317131528f1b3ecc3b3a2599a75c
* feat(defaults): popupmenu "Open in browser", "Go to definition" #30261Justin M. Keyes2024-09-05
| | | | - Use the popup to expose more features such as LSP and gx. - Move the copy/paste items lower in the menu, they are lower priority.
* fix(lsp): handle locations exceeding line length #30253Tristan Knight2024-09-05
| | | | | | | | | | | Problem: LSP spec [states](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#position) that "if the character value is greater than the line length it defaults back to the line length", but `locations_to_items` fails in that case. Solution: Adjust locations_to_items to follow the spec. closes #28281
* fix(lua): allows tables with integer keys to be merged in tbl_deep_extendLewis Russell2024-09-04
| | | | | | | | | - The exclusion of lists was never justified in the commit history and is the wrong thing to do for a function that deals with tables. - Move the error checks out of the recursive path. Fixes #23654
* feat(lsp): support hostname in rpc.connect #30238Tristan Knight2024-09-03
| | | | | | | | | | | | | | | Updated the `rpc.connect` function to support connecting to LSP servers using hostnames, not just IP addresses. This change includes updates to the documentation and additional test cases to verify the new functionality. - Modified `connect` function to resolve hostnames. - Updated documentation to reflect the change. - Added test case for connecting using hostname. Added a TCP echo server utility function to the LSP test suite. This server echoes the first message it receives and is used in tests to verify LSP server connections via both IP address and hostname. Refactored existing tests to use the new utility function.
* docs: vim.lsp.rpc.connect() TCP requires IP address #30219Tristan Knight2024-09-01
| | | | | | "localhost" would work if we used [tcp_connect](https://github.com/luvit/luv/blob/ae0387742b460bc89ebddce33214ad65fffddba2/examples/echo-server-client.lua#L42), but that will require changes to [vim.lsp.rpc.connect](https://github.com/neovim/neovim/blob/318c0415d5b10b44fee4afa06994734f1beb7e71/runtime/lua/vim/lsp/rpc.lua#L638).
* docs: misc #28970Justin M. Keyes2024-09-01
|
* feat(treesitter)!: default to correct behavior for quantified captures (#30193)Gregory Anders2024-09-01
| | | | | | | | | | | | For context, see https://github.com/neovim/neovim/pull/24738. Before that PR, Nvim did not correctly handle captures with quantifiers. That PR made the correct behavior opt-in to minimize breaking changes, with the intention that the correct behavior would eventually become the default. Users can still opt-in to the old (incorrect) behavior for now, but this option will eventually be removed completely. BREAKING CHANGE: Any plugin which uses `Query:iter_matches()` must update their call sites to expect an array of nodes in the `match` table, rather than a single node.
* fix(ui): correctly pass metadata to get_node_text #30222Gregory Anders2024-09-01
| | | Fixes: #30220
* docs(treesitter): annotate some tables as `TSMetadata`Yi Ming2024-09-01
|
* feat(ui): gx: use url extmark attribute and tree-sitter directive (#30192)Gregory Anders2024-08-31
| | | | | Use the "url" extmark attribute as well as the "url" tree-sitter metadata key to determine if the cursor is over something Nvim considers a URL.
* fix(lsp): when prefix is non word add all result into matches (#30044)glepnir2024-08-30
| | | | | | | Problem: prefix can be a symbol like period, the fuzzy matching can't handle it correctly. Solution: when prefix is empty or a symbol add all lsp completion result into matches.
* feat(mbyte): support extended grapheme clusters including more emojibfredl2024-08-30
| | | | | | | | | Use the grapheme break algorithm from utf8proc to support grapheme clusters from recent unicode versions. Handle variant selector VS16 turning some codepoints into double-width emoji. This means we need to use ptr2cells rather than char2cells when possible.
* docs(eval): fix wrong return type of getcharsearch() (#30176)glepnir2024-08-29
|
* docs: misc (#29719)dundargoc2024-08-29
| | | | | | | | | Co-authored-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com> Co-authored-by: Lauri Heiskanen <lauri.heiskanen@nimble.fi> Co-authored-by: Piotr Doroszewski <5605596+Doroszewski@users.noreply.github.com> Co-authored-by: Tobiasz Laskowski <tobil4sk@outlook.com> Co-authored-by: ariel-lindemann <41641978+ariel-lindemann@users.noreply.github.com> Co-authored-by: glepnir <glephunter@gmail.com> Co-authored-by: zeertzjq <zeertzjq@outlook.com>
* feat(lsp): export diagnostic conversion functions (#30064)Maria José Solano2024-08-27
|
* fix(treesitter): escape things like `"` in omnifunc resultsRiley Bruins2024-08-27
|
* fix(lsp): return call hierarchy item, not the index (#30145)Maria José Solano2024-08-26
|
* fix(lsp): log when receiving markup messages (#30065)Maria José Solano2024-08-26
|
* fix(lsp): fix isIncomplete condition in completion trigger (#30130)Mathias Fußenegger2024-08-26
| | | Follow up to https://github.com/neovim/neovim/pull/30028#discussion_r1726539370
* feat(treesitter): add support for wasm parsersLewis Russell2024-08-26
| | | | | | | | | | | | | | | | | | | | Problem: Installing treesitter parser is hard (harder than climbing to heaven). Solution: Add optional support for wasm parsers with `wasmtime`. Notes: * Needs to be enabled by setting `ENABLE_WASMTIME` for tree-sitter and Neovim. Build with `make CMAKE_EXTRA_FLAGS=-DENABLE_WASMTIME=ON DEPS_CMAKE_FLAGS=-DENABLE_WASMTIME=ON` * Adds optional Rust (obviously) and C11 dependencies. * Wasmtime comes with a lot of features that can negatively affect Neovim performance due to library and symbol table size. Make sure to build with minimal features and full LTO. * To reduce re-compilation times, install `sccache` and build with `RUSTC_WRAPPER=<path/to/sccache> make ...`
* fix(docs): wrong return value annotation for `nvim_buf_get_extmarks`JonnyKong2024-08-25
|
* feat(lsp): completion opts support custom item conversion (#30060)glepnir2024-08-22
| | | | | | | Problem: Some items of completion results include function signatures that can cause the pum to be very long when a function has many params, because pum scales with the longest word/abbr. Solution: add custom covert function that can customise abbr to remove params.
* fix(lsp): suppress completion request if completion is active (#30028)glepnir2024-08-22
| | | | | | | Problem: the autotrigger mechanism could fire completion requests despite completion already being active from another completion mechanism or manual trigger Solution: add a condition to avoid an additional request.
* fix(lsp): update request name to capability map #30098atusy2024-08-20
| | | | | | | | | | Add items based on specifications (<https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocumentClientCapabilities>) - textDocument/documentColor - textDocument/inlineValue - textDocument/linkedEditingRange - textDocument/moniker - textDocument/onTypeFormatting - textDocument/selectionRange
* docs(lsp): annotate with `vim.lsp.protocol.Methods` enum #29521Ricardo Casía2024-08-20
| | | Added the enum type annotation `vim.lsp.protocol.Methods` to provide some intellisense support.
* fix(vim.text): handle very long strings (#30075)Gregory Anders2024-08-17
| | | | | | | | Lua's string.byte has a maximum (undocumented) allowable length, so vim.text.hencode fails on large strings with the error "string slice too long". Instead of converting the string to an array of bytes up front, convert each character to a byte one at a time.
* fix(docs): add missing properties to hl_info #30032Maria José Solano2024-08-16
|