aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua
Commit message (Collapse)AuthorAge
...
* fix(lua): no omni/cmdline completion for vim.env (#33044)Phạm Bình An2025-03-26
| | | | | | | | Problem: - `:lua vim.env.<Tab>` does not show completion of environment variables - Meanwhile, `:let $<Tab>` does show completion of environment variables Solution: - Fix it
* fix(cmdline): cmdline completion of _defer_require() modules #33007phanium2025-03-24
| | | | | | | | | | | Problem: `:lua vim.lsp.c<tab>` does not list vim.lsp.completion in the completion list after 24cea4c7f7417c7fe99a98a0487f51dd68c4f409. Solution: - Always include `vim.lsp._submodule` keys in candidates. - Fixes `vim.lsp.c<tab>` -> `vim.lsp.completion`. - Eager-load `vim.lsp.completion` to get its completion. - Fixes `vim.lsp.completion.g<tab>` -> `vim.lsp.completion.get`.
* fix(paste): wrong '[ mark after pasting a big string (streamed chunks) #33025Au.2025-03-23
| | | | | | | | | | | | | Problem Pasting a big string ("streamed paste" with multiple chunks) sets the '[ mark to the edit from the last chunk, instead of the start of the paste. Solution: Set the '[ mark where the paste started, not where the last chunk was inserted. Note: `startpos == nil` is not equal to `phase == 1` because there may be some empty chunks pasted which won't arrive here (returned at code before).
* vim-patch:9.1.1231: filetype: SPA JSON files are not recognizedChristian Clason2025-03-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: filetype: SPA (single page application) JSON files are not recognized (used by pipewire and wireplumber) Solution: detect pipewire and wireplumber configuration files as spajson filetype, include filetype, indent and syntax scripts for this new filetype (David Mandelberg). I looked at all the files found by this command to see if the syntax highlighting looked reasonable: ``` find {~/.config,/etc,/usr/share}/{pipewire,wireplumber} -type f -name \*.conf ``` References: * pipewire config files: https://docs.pipewire.org/page_config.html * wireplumber config files: https://pipewire.pages.freedesktop.org/wireplumber/daemon/configuration/conf_file.html and * https://pipewire.pages.freedesktop.org/wireplumber/daemon/locations.html closes: vim/vim#16950 https://github.com/vim/vim/commit/4e7b4308fb92628434bd7e07ab92910c33051431 Co-authored-by: David Mandelberg <david@mandelberg.org>
* feat(provider/python)!: add python 3.13, drop 3.7 and 3.8 (EOL) #33022Eisuke Kawashima2025-03-22
| | | | | https://devguide.python.org/versions/ Co-authored-by: Eisuke Kawashima <e-kwsm@users.noreply.github.com>
* fix(lsp): handle using array as open_floating_preview title (#33016)Au.2025-03-22
|
* docs: misc (#32928)dundargoc2025-03-21
| | | | Co-authored-by: James Trew <j.trew10@gmail.com> Co-authored-by: przepompownia <przepompownia@users.noreply.github.com>
* docs: LSP completion #33006Justin M. Keyes2025-03-21
|
* docs(treesitter): document TSNode:named_children()Riley Bruins2025-03-21
| | | | | This commit also gives an internal documentation description for `TSNode:__has_ancestor()`.
* fix(checkhealth): module not found when `&rtp` has nested paths #32988phanium2025-03-19
| | | | | | | | | | | Problem: `:checkhealth` fail to find the module when `&rtp` have nested paths. Solution: find in order all existed `&rtp/lua` path rather than `&rtp` to ensure prefix exist before trim `&rtp`. In this case one module can be searched out from two different `&rtp/lua`, we use the first `&rtp/lua` contain the module (like how require() works).
* fix(snippet): wrong indentation when snippet contains "^" #32970Avinash Thakur2025-03-19
| | | | | | | | | | | | | | | | | | | | | | | ## Problem The pattern used to match indentation is wrong as can be seen in ```lua -- current pattern doesn't match starting space print(vim.inspect((" xyz"):match("(^%s+)%S"))) -- nil -- instead, it matches characters `^ ` in text print(vim.inspect(("x^ yz"):match("(^%s+)%S"))) -- "^ " -- indentation could've been matched by, however not required print(vim.inspect((" xyz"):match("^(%s+)%S"))) -- " " ``` ## Solution We don't even need to modify `base_indent` at every line. If every line's indentation is calculated by the previous line's indentation (which already has starting indentation) added to the starting indentation, we see that indentation is multiplied on every line. Hence, we only add the starting line indentation to every line.
* fix(filetype): normalize full path before matching #32227markstegeman2025-03-19
| | | | | | | | | | | | | Problem: On Windows, treesitter query files are not recognized as such when opened from inside their directory, because the full path returned from fnamemodify(_, ':p') contains backslashes, while the filetype patterns expect forward slashes. Solution: Normalize the result of fnamemodify(_, ':p') before trying to match it to filetype patterns. Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
* fix(diagnostic): clear virtual_lines autocmd only for valid buf #32979Mars Peng2025-03-19
|
* fix(runtime): gO always says "Help TOC" #32971Justin M. Keyes2025-03-19
| | | | | | | Problem: gO always says "Help TOC". Solution: Use a generic title instead.
* vim-patch:9.1.1220: filetype: uv.lock file not recognized (#32955)Acaibrid2025-03-18
| | | | | | | | | Problem: filetype: uv.lock file not recognized Solution: detect uv.lock file as toml filetype (Acaibird) closes: vim/vim#16924 https://github.com/vim/vim/commit/18a6853a7627de231f0128237665112a0c8aaaf0
* feat(float): add winborder option (#31074)glepnir2025-03-18
| | | | | | | | | Problem: There is currently no global option to define the default border style for floating windows. This leads to repetitive code when developers need consistent styling across multiple floating windows. Solution: Introduce a global option winborder to specify the default border style for floating windows. When a floating window is created without explicitly specifying a border style, the value of the winborder option will be used. This simplifies configuration and ensures consistency in floating window appearance. Co-authored-by: Gregory Anders <greg@gpanders.com>
* docs: misc #32959Justin M. Keyes2025-03-18
|
* fix(lua): ensure inspect_pos() only shows visible highlight extmarksLuuk van Baal2025-03-18
| | | | | | | | | | | | | | | Problem: Unpaired marks are shown with `filter.extmarks == true`, which should only return visible highlights. Misleading `end_col` included in `inspect_pos()` for unpaired mark; it is set to `start_col + 1` which would be a visible highlight, which it is not. Custom "is_here" filter used to get extmarks overlapping a position. Solution: Exclude unpaired highlight extmarks with `filter.extmarks == true`. Set `end_col` to `start_col` for an unpaired mark. Supply appropriate arguments to nvim_buf_get_extmarks() to return overlapping extmarks; exclude marks whose end is at `{row, col}` with `filter.extmarks == true`.
* test: cleanup ftplugin_spec.lua #32948Justin M. Keyes2025-03-17
| | | | | | | | Problem: - cannot run ftplugin_spec.lua by itself - test leaves foo/ dir Solution: - fix setup and teardown
* fix(diagnostic): remove deprecated `severity_limit` optionChristian Clason2025-03-17
| | | | Deprecated to be removed in 0.11
* feat(runtime): Lua ftplugin 'includeexpr' #32719Phạm Bình An2025-03-17
| | | | | | | | | Problem: Current `'includeexpr'` in runtime/ftplugin/lua.vim doesn't work with Nvim Lua. Solution: Provide an improved 'includeexpr' for Lua in "ftplugin/lua.lua". Closes: https://github.com/neovim/neovim/issues/32490
* docs: miscJustin M. Keyes2025-03-17
|
* docs(api): rename "handle" => "id"Justin M. Keyes2025-03-17
|
* perf(lsp): don't construct potentially expensive stringsRiley Bruins2025-03-16
|
* refactor(lsp)!: rename lsp.completion.trigger() to get() (#32911)Mathias Fußenegger2025-03-16
| | | | | | | | | | | | Problem: `trigger` is a custom word not yet used in APIs. Solution: Use `get` instead because the main effect is that the completion candidates will be collected (and shown by default, but follow-up commits are planned to add an `on_result` callback that allows more general handling). --------- Co-authored-by: Christian Clason <c.clason@uni-graz.at>
* fix(checkhealth): handle nested lua/ directory #32918phanium2025-03-16
| | | | | | Problem: :checkhealth fails if plugin has nested "lua/" directory Solution: trim `{runtimepath}/lua` from fullpath to get subpath (`./**/{health, health/init.lua}`)
* fix(diagnostic): virtual lines should scroll horizontallyxzb2025-03-16
|
* docs(lsp): simplify example of enabling LSP foldingYi Ming2025-03-16
|
* fix(lsp): correctly check for "codeAction/resolve" supportTobias Schmitz2025-03-15
|
* docs: miscdundargoc2025-03-15
| | | | | | | | | | | | | Co-authored-by: Au. <acehinnnqru@gmail.com> Co-authored-by: Daniel Rainer <daniel.rainer@localhost> Co-authored-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com> Co-authored-by: Lewis Russell <lewis6991@gmail.com> Co-authored-by: Luuk van Baal <luukvbaal@gmail.com> Co-authored-by: Pierre Barbin <pierre@heitzsystem.com> Co-authored-by: Riley Bruins <ribru17@hotmail.com> Co-authored-by: Yinzuo Jiang <jiangyinzuo@foxmail.com> Co-authored-by: phanium <91544758+phanen@users.noreply.github.com> Co-authored-by: zeertzjq <zeertzjq@outlook.com>
* fix(lsp): autocmds to close lsp preview windows not clearedbekaboo2025-03-15
| | | | | | | | Problem: Augroup to close lsp preview hover window is not cleared after the window is closed because of unmatched group name. Solution: Delete the augroup before closing the preview window with correct group name.
* feat(defaults): completeopt=popup #32909Justin M. Keyes2025-03-15
| | | | Assuming that completeopt=popup does what its documentation claims, it is more appropriate that completeopt=preview as a default.
* feat(snippet): set snippet keymaps permanent instead of dynamic (#31887)Mathias Fußenegger2025-03-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Given that `vim.snippet.expand()` sets temporary `<tab>`/`<s-tab>` keymaps there is no way to build "smart-tab" functionality where `<tab>` chooses the next completion candidate if the popup menu is visible. Solution: Set the keymap permanent in `_defaults`. The downside of this approach is that users of multiple snippet engine's need to adapt their keymaps to handle all their engines that are in use. For example: vim.keymap.set({ 'i', 's' }, "<Tab>", function() if foreign_snippet.active() then return "<Cmd>lua require('foreign_snippet').jump()<CR>" elseif vim.snippet.active({ direction = 1 }) then return "<Cmd>lua vim.snippet.jump(1)<CR>" else return key end end, { expr = true }) Upside is that using `vim.keymap.set` to override keymaps is a well established pattern and `vim.snippet.expand` calls made by nvim itself or plugins have working keymaps out of the box. Co-authored-by: Maria José Solano <majosolano99@gmail.com>
* fix(vim.fs): default to follow=false #32859Mike2025-03-14
| | | | | | | Problem: Following symlinks can have surprising behavior and slow performance. Solution: Do not set it by default.
* vim-patch:9.1.1196: filetype: config files for container tools are not ↵zeertzjq2025-03-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | recognized (#32873) Problem: filetype: config files for container tools are not recognized Solution: detect the ones that aren't detected yet as toml filetype (David Mandelberg) The .containerignore format doesn't look exactly the same as gitignore, but very close. And .dockerignore is already using gitignore. References: https://github.com/containers/common/blob/main/docs/containerignore.5.md https://github.com/containers/common/blob/main/docs/containers.conf.5.md https://github.com/containers/storage/blob/main/docs/containers-storage.conf.5.md https://github.com/containers/image/blob/main/docs/containers-registries.conf.5.md https://github.com/containers/image/blob/main/docs/containers-registries.conf.d.5.md I wasn't sure exactly how to interpret what containers.conf(5) was saying about modules, so I looked at https://github.com/containers/common/tree/main/pkg/config/testdata/modules to get examples, and based the detection off those. closes: vim/vim#16852 https://github.com/vim/vim/commit/7546afbf525861f586ea2deabf71e3a2940abd4d Co-authored-by: David Mandelberg <david@mandelberg.org>
* fix(lua): vim.hl.on_yank highlights wrong region with yi' (#32850)phanium2025-03-13
| | | | | | | Problem: yi' don't highlight last character since https://github.com/neovim/neovim/commit/8ce504820af04194a41acbe1f4c61cf12bd5feb5. Solution: Always use `opts.inclusive=true`, since calculation of `"]` (`b_op_end`) have taken `inclusive` into account.
* vim-patch:c1c3b5d: runtime(doc): remove unnecessary "an" (#32865)zeertzjq2025-03-13
| | | | | | | | | | | | "umask" is pronounce like "youmask", so having an "an" before it is a bit strange. In other places in the help, "umask" is not preceded by either "a" or "an", and sometimes preceded by "the". Also, "Note" is usually followed either by ":" or "that" in builtin.txt, so add a ":" after "Note". closes: 16860 https://github.com/vim/vim/commit/c1c3b5d6a0a3032057bf6de8672cc79100bb73c9
* fix(diagnostic): clear autocmd only for valid buf (#32861)Jaehwang Jung2025-03-12
|
* fix(lsp): handle non-existent configs in lsp.config/enableLewis Russell2025-03-12
|
* feat(treesitter): allow `iter_captures` to accept `opts`Riley Bruins2025-03-12
| | | | | | This matches the `iter_captures` functionality to the `iter_matches` functionality, allowing it to specify a match limit and start depth for the query iterator.
* feat(treesitter): allow passing lang to InspectTreeMaria José Solano2025-03-12
|
* vim-patch:0a336cc: runtime(doc): clarify that a umask is applied to mkdir() ↵zeertzjq2025-03-11
| | | | | | | | | (#32845) fixes: vim/vim#16849 https://github.com/vim/vim/commit/0a336ccb57003c44ba303ccc50cf50cb640c2309 Co-authored-by: Christian Brabandt <cb@256bit.org>
* refactor(lsp): rename `on_publish_diagnostics` parameter #32776Will Lillis2025-03-11
| | | | * fix(lsp): rename `on_publish_diagnostics` parameter: result->params * fix(colors): specify local var type to address lint failure
* feat(treesitter): allow disabling captures and patterns on TSQuery (#32790)Ian Chamberlain2025-03-11
| | | | | | | | | Problem: Cannot disable individual captures and patterns in treesitter queries. Solution: * Expose the corresponding tree-sitter API functions for `TSQuery` object. * Add documentation for `TSQuery`. * Return the pattern ID from `get_captures_at_pos()` (and hence `:Inspect!`).
* fix: warn when :InspectTree on buffer with no parser #32783phanium2025-03-11
| | | | | Problem: `InspectTree` error on buffer without ts parser attached. Solution: show a more correct warning.
* fix(lsp): improve LSP floating preview window cleanup #31353glepnir2025-03-11
| | | | | Problem: The current implementation creates a unique autocommand group for each floating preview window, which is inefficient and can lead to numerous autocommand groups. Solution: Use a single shared autocommand group with improved window validation to properly clean up LSP floating preview windows.
* fix(lsp): wrapped ctx in opts before passed to vim.lsp.completion.trigger #32837glepnir2025-03-11
| | | | | Problem: ctx is passed directly to M.trigger. In fact, it is a field of opts. Solution: wrapped in a table and passed to M.trigger.
* vim-patch:9.1.1194: filetype: false positive help filetype detectionzeertzjq2025-03-11
| | | | | | | | | | Problem: filetype: false positive help filetype detection Solution: Only detect a file as help if modeline appears either at start of line or is preceded by whitespace (zeertzjq). closes: vim/vim#16845 https://github.com/vim/vim/commit/6763b0ee95e7e66ab7992653fbba48691e803e70
* vim-patch:9.1.1186: filetype: help files in git repos are not detectedzeertzjq2025-03-11
| | | | | | | | | | | | | | | | | | | | | | | | Problem: filetype: help files in git repos are not detected Solution: detect */doc/*.txt files as help if they end with a help modeline, even if 'modeline' is off Here's how I checked that this would still detect vim's own help files correctly: $ find . -type f -path '*/doc/*.txt' \ > -exec awk '{ } ENDFILE { print FILENAME ":" $0; }' '{}' + | > grep -v 'vim:.*\<\(ft\|filetype\)=help\>' ./src/libvterm/doc/seqs.txt: 23 DECSM 42 = DECNRCM, national/multinational character closes: vim/vim#16817 https://github.com/vim/vim/commit/16d6fff98ed3a9dfd34a41696b005b0c4c7800f8 Split the pattern into a Lua pattern for the first part and a Vim regex pattern for the second part, so that if the first part doesn't match there is no need to use the Vim regex. Co-authored-by: David Mandelberg <david@mandelberg.org>
* feat(checkhealth): group parsers by name and path in outputEike2025-03-10
| | | | | | | | | Problem: :checkhealth vim.treesitter sorts parser entries solely by path, splitting duplicates and reducing clarity. Solution: Sort entries first by name, then by path, so that duplicates are grouped.