aboutsummaryrefslogtreecommitdiff
path: root/runtime/doc
Commit message (Collapse)AuthorAge
...
| | * | refactor: use nvim.foo.bar format for autocommand groupsMaria José Solano2025-01-14
| | | |
| * | | feat(vim.fs): find(), dir() can "follow" symlinks #31551Mike2025-01-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: vim.fs.dir(), vim.fs.find() do not follow symlinks. Solution: - Add "follow" flag. - Enable it by default.
| * | | feat(terminal): support theme update notifications (DEC mode 2031) (#31999)Gregory Anders2025-01-14
| | | |
| * | | feat(api): nvim_open_win() relative to tabline and laststatus #32006luukvbaal2025-01-14
| | |/ | |/| | | | | | | | | | | | | | | | Problem: Anchoring a floating window to the tabline and laststatus is cumbersome; requiring autocommands and looping over all windows/tabpages. Solution: Add new "tabline" and "laststatus" options to the `relative` field of nvim_open_win() to place a window relative to.
| * | perf(treesitter): calculate folds asynchronouslyRiley Bruins2025-01-14
| |/ | | | | | | | | | | | | | | | | **Problem:** The treesitter `foldexpr` runs synchronous parses to calculate fold levels, which eliminates async parsing performance in the highlighter. **Solution:** Migrate the `foldexpr` to also calculate and apply fold levels asynchronously.
| * fix(options): better handling of empty valuesLewis Russell2025-01-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: Whether an option is allowed to be empty isn't well defined and isn't properly checked. Solution: - For non-list string options, explicitly check the option value if it is empty. - Annotate non-list string options that can accept an empty value. - Adjust command completion to ignore the empty value. - Render values in Lua meta files
| * feat(messages): "verbose" message kind #31991luukvbaal2025-01-13
| |
| * feat: add vim.fs.relpathdundargoc2025-01-13
| | | | | | | | | | This is needed to replace the nvim-lspconfig function is_descendant that some lspconfg configurations still use.
| * feat(treesitter)!: don't parse tree in get_parser() or start()Riley Bruins2025-01-12
| | | | | | | | | | | | | | | | | | | | **Problem:** `vim.treesitter.get_parser()` and `vim.treesitter.start()` both parse the tree before returning it. This is problematic because if this is a sync parse, it will stall the editor on large files. If it is an async parse, the functions return stale trees. **Solution:** Remove this parsing side effect and leave it to the user to parse the returned trees, either synchronously or asynchronously.
| * feat(treesitter): async parsingRiley Bruins2025-01-12
| | | | | | | | | | | | | | | | | | | | | | | | **Problem:** Parsing can be slow for large files, and it is a blocking operation which can be disruptive and annoying. **Solution:** Provide a function for asynchronous parsing, which accepts a callback to be run after parsing completes. Co-authored-by: Lewis Russell <lewis6991@gmail.com> Co-authored-by: Luuk van Baal <luukvbaal@gmail.com> Co-authored-by: VanaIgr <vanaigranov@gmail.com>
| * perf(treesitter): cache queries stronglyRiley Bruins2025-01-12
| | | | | | | | | | | | | | | | | | | | **Problem:** Query parsing uses a weak cache which is invalidated frequently **Solution:** Make the cache strong, and invalidate it manually when necessary (that is, when `rtp` is changed or `query.set()` is called) Co-authored-by: Christian Clason <c.clason@uni-graz.at>
| * vim-patch:partial:9598a63: runtime(doc): add package-<name> helptags for ↵zeertzjq2025-01-12
| | | | | | | | | | | | | | | | | | | | | | | | included packages (#31972) Improve how to find the justify package closes: vim/vim#16420 https://github.com/vim/vim/commit/9598a6369bce32d3da831e8968caf4625985ac3c Co-authored-by: Christian Brabandt <cb@256bit.org> Co-authored-by: Peter Benjamin <petermbenjamin@gmail.com>
| * feat(diagnostic)!: filter diagnostics by severity before passing to handlers ↵Gregory Anders2025-01-11
| | | | | | | | | | | | | | | | | | | | | | | | | | (#30070) BREAKING CHANGE: This changes the list of diagnostics that are passed to a diagnostic handler. If a handler is already filtering by severity itself then this won't break anything, since the handler's filtering will become a no-op. But handlers which depend on receiving the full list of diagnostics may break. Note that diagnostics are only filtered if the handler's configuration has the `severity` option set. If `severity` is not set, the handler still receives the full list of diagnostics.
| * docs: miscdundargoc2025-01-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Co-authored-by: Axel <axelhjq@gmail.com> Co-authored-by: Colin Kennedy <colinvfx@gmail.com> Co-authored-by: Daiki Noda <sys9kdr@users.noreply.github.com> Co-authored-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com> Co-authored-by: Jean-Jacq du Plessis <1030058+jj-du-plessis@users.noreply.github.com> Co-authored-by: Juan Giordana <juangiordana@gmail.com> Co-authored-by: Lincoln Wallace <locnnil0@gmail.com> Co-authored-by: Matti Hellström <hellstrom@scm.com> Co-authored-by: Steven Locorotondo <steven.locorotondo@justeattakeaway.com> Co-authored-by: Yochem van Rosmalen <git@yochem.nl> Co-authored-by: glepnir <glephunter@gmail.com> Co-authored-by: ifish <fishioon@live.com>
| * refactor(api): deprecate nvim_notify #31938Justin M. Keyes2025-01-10
| | | | | | | | | | | | | | | | | | | | Problem: The `nvim_notify` API (note: unrelated to `vim.notify()` Lua API) was not given any real motivation in https://github.com/neovim/neovim/pull/13843 There are, and were, idiomatic and ergonomic alternatives already. Solution: Deprecate `nvim_notify`.
| * docs: misc #31867Justin M. Keyes2025-01-09
| |
| * feat(docs): "yxx" runs Lua/Vimscript code examples #31904Riley Bruins2025-01-09
| | | | | | | | | | `yxx` in Normal mode over a Lua or Vimscript code block section will execute the code. Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
| * Merge #31900 from luukvbaal/nvim_echoJustin M. Keyes2025-01-09
| |\
| | * feat(api): deprecate nvim_out/err_write(ln)Luuk van Baal2025-01-09
| | |
| | * feat(api): add err field to nvim_echo() optsLuuk van Baal2025-01-09
| | | | | | | | | | | | | | | | | | | | | | | | Problem: We want to deprecate `nvim_err_write(ln)()` but there is no obvious replacement (from Lua). Meanwhile we already have `nvim_echo()` with an `opts` argument. Solution: Add `err` argument to `nvim_echo()` that directly maps to `:echoerr`.
| * | feat(health): show :checkhealth in floating window #31086glepnir2025-01-07
| | | | | | | | | | | | Problem: health can not shown in a floating window Solution: add g:health variable
| * | perf(treesitter): don't fetch parser for each fold lineRiley Bruins2025-01-07
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | **Problem:** The treesitter `foldexpr` calls `get_parser()` for each line in the buffer when calculating folds. This can be incredibly slow for buffers where a parser cannot be found (because the result is not cached), and exponentially more so when the user has many `runtimepath`s. **Solution:** Only fetch the parser when it is needed; that is, only when initializing fold data for a buffer. Co-authored-by: Jongwook Choi <wookayin@gmail.com> Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
| * vim-patch:9.1.0991: v:stacktrace has wrong type in Vim9 scriptzeertzjq2025-01-07
| | | | | | | | | | | | | | | | | | | | Problem: v:stacktrace has wrong type in Vim9 script. Solution: Change the type to t_list_dict_any. Fix grammar in docs. (zeertzjq) closes: vim/vim#16390 https://github.com/vim/vim/commit/6655bef33047b826e0ccb8c686f3f57e47161b1c
| * vim-patch:9.1.0984: exception handling can be improvedzeertzjq2025-01-07
| | | | | | | | | | | | | | | | | | | | | | | | Problem: exception handling can be improved Solution: add v:stacktrace and getstacktrace() closes: vim/vim#16360 https://github.com/vim/vim/commit/663d18d6102f40d14e36096ec590445e61026ed6 Co-authored-by: ichizok <gclient.gaap@gmail.com> Co-authored-by: Naruhiko Nishino <naru123456789@gmail.com>
| * vim-patch:fd77161: runtime(doc): update doc for :horizontalzeertzjq2025-01-06
| | | | | | | | | | | | | | | | | | | | | | Revert the documentation for :horizontal from commit 0c3e57b403e0e3a1fefc because :horizontal cannot be shortened to :ho closes: vim/vim#16362 https://github.com/vim/vim/commit/fd771613b3e59923b1a82a5ed9036c82899d133b Co-authored-by: h-east <h.east.727@gmail.com>
| * vim-patch:0c3e57b: runtime(doc): update index.txt, windows.txt and version9.txtzeertzjq2025-01-06
| | | | | | | | | | | | | | | | | | closes: vim/vim#16357 https://github.com/vim/vim/commit/0c3e57b403e0e3a1fefca7bbd5ad4cb950eea616 Co-authored-by: h-east <h.east.727@gmail.com> Co-authored-by: Aliaksei Budavei <32549825+zzzyxwvut@users.noreply.github.com>
| * "nvim -es": disable shada #21723Justin M. Keyes2025-01-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: `nvim -es` (and `nvim -Es`) is the recommended way to non-interactively run commands/vimscript. But it enables shada by default, which is usually not wanted. Solution: - Disable shada by default for `nvim -es/-Es`. This can be overridden by `-i foo` if needed. - Do NOT change the 'loadplugins' default. - User config + packages _should_ be enabled by default, for both `nvim -es` and `nvim -l`. Else any Lua packages you have can't be accessed without `-u path/to/config`, which is clumsy. - Use-cases: ``` nvim --headless "+Lazy! sync" +qa would become: nvim -es "+Lazy! sync" nvim --headless +PlugInstall +qall would become: nvim -es +PlugInstall ``` - Opt-out (`--clean` or `-u NONE`) is much easier than opt-in (`-u path/to/config`). - User config/packages are analogous to pip packages, which are expected when doing `python -c ...`. related: 7c94bcd2d77e2e54b8836ab8325460a367b79eae related: ddd0eb6f5120a09b97867d2561ea61309038ccd2
| * docs: cleanup news.txt (#31854)Gregory Anders2025-01-04
| | | | | | Move non-breaking changes out of the breaking changes section
| * docs: misc #31822Justin M. Keyes2025-01-03
| | | | | | | | | | * docs: drop "lua-" prefix from most treesitter tags * docs: move mouse section from tui.txt to gui.txt * docs: misc
| * Merge pull request #31635 from bfredl/vtermpiratesbfredl2025-01-03
| |\ | | | | | | feat(terminal): support grapheme clusters, including emoji
| | * feat(terminal): support grapheme clusters, including emojibfredl2025-01-02
| | |
| * | feat(ui): more intuitive :substitute confirm prompt #31787luukvbaal2025-01-02
| | | | | | | | | | | | Problem: Unknown key mappings listed in substitute confirm message. Solution: Include hints as to what the key mappings do.
| * | feat(ui)!: emit prompt "messages" as cmdline events #31525luukvbaal2025-01-02
| |/ | | | | | | | | | | | | Problem: Prompts are emitted as messages events, where cmdline events are more appropriate. The user input is also emitted as message events in fast context, so cannot be displayed with vim.ui_attach(). Solution: Prompt for user input through cmdline prompts.
| * docs: misc #31479Justin M. Keyes2025-01-01
| |
| * feat(clipboard)!: use OSC 52 as fallback clipboard provider (#31730)Gregory Anders2024-12-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We currently enable the OSC 52 clipboard provider by setting g:clipboard when a list of conditions are met, one of which is that $SSH_TTY must be set. We include this condition because often OSC 52 is not the best clipboard provider, so if there are "local" providers available Nvim should prefer those over OSC 52. However, if no other providers are available, Nvim should use OSC 52 even when $SSH_TTY is not set. When a user is in an SSH session then the checks for the other clipboard providers will still (typically) fail, so OSC 52 continues to be enabled by default in SSH sessions. This is marked as a breaking change because there are some cases where OSC 52 wasn't enabled before and is now (or vice versa).
| * fix(vim.fs): joinpath() does not normalize slashes on Windows #31782Gustav Eikaas2024-12-31
| |
| * vim-patch:9.1.0983: not able to get the displayed items in complete_i… ↵glepnir2024-12-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (#31796) vim-patch:9.1.0983: not able to get the displayed items in complete_info() Problem: not able to get the displayed items in complete_info() (Evgeni Chasnovski) Solution: return the visible items via the "matches" key for complete_info() (glepnir) fixes: vim/vim#10007 closes: vim/vim#16307 https://github.com/vim/vim/commit/d4088edae21659e14ab5f763c820f4eab9d36981
| * vim-patch:f2e08a1: runtime(doc): Fix documentation typos (#31768)zeertzjq2024-12-29
| | | | | | | | | | | | | | | | | | closes: vim/vim#16333 https://github.com/vim/vim/commit/f2e08a1e54e1e6f594edac5cd971ac2e03896a07 Numbers with quotes are N/A. Co-authored-by: h-east <h.east.727@gmail.com>
| * vim-patch:e6ccb64: runtime(doc): fix doc error in :r behaviour (#31755)zeertzjq2024-12-28
| | | | | | | | | | | | | | closes: vim/vim#16316 https://github.com/vim/vim/commit/e6ccb643a63612f20906348f16485d724f8d7f6f Co-authored-by: Martino Ischia <ischiamartino@gmail.com>
| * feat(lua): add `vim.fs.abspath`Famiu Haque2024-12-28
| | | | | | | | | | | | Problem: There is currently no way to check if a given path is absolute or convert a relative path to an absolute path through the Lua stdlib. `vim.fs.joinpath` does not work when the path is absolute. There is also currently no way to resolve `C:foo\bar` style paths in Windows. Solution: Add `vim.fs.abspath`, which allows converting any path to an absolute path. This also allows checking if current path is absolute by doing `vim.fs.abspath(path) == path`. It also has support for `C:foo\bar` style paths in Windows.
| * feat(lsp): support function for client root_dir (#31630)Gregory Anders2024-12-27
| | | | | | | | | | | | | | | | If root_dir is a function it is evaluated when the client is created to determine the root directory. This enables dynamically determining the root directory based on e.g. project or directory structure (example: finding a parent Cargo.toml file that contains "[workspace]" in a Rust project).
| * vim-patch:9.1.0963: fuzzy-matching does not prefer full match (#31741)glepnir2024-12-27
| | | | | | | | | | | | | | | | | | | | | | Problem: fuzzy-matching does not prefer full match (Maxim Kim) Solution: add additional score for a full match (glepnir) fixes: vim/vim#15654 closes: vim/vim#16300 https://github.com/vim/vim/commit/5a04999a7402201cf1b47ff10bc474dd1cdc24f4
| * docs(api): vim.version.range():has() method #31622Lukasz Piepiora2024-12-23
| | | | | | | | | | | | | | | | Problem: The :has() method of the vim.version.range() result is not documented though it's mentioned in examples. Solution: Mention it in the range() result doc.
| * Merge #31661 cmdline_show/hide eventsJustin M. Keyes2024-12-22
| |\
| | * feat(ui): specify whether msg_show event is added to historyLuuk van Baal2024-12-23
| | | | | | | | | | | | | | | Pass along whether message in msg_show event is added to the internal :messages history.
| | * feat(ui): additional arguments for cmdline_show/hide eventsLuuk van Baal2024-12-22
| | | | | | | | | | | | | | | | | | | | | | | | Problem: Unable to tell what highlight the prompt part of a cmdline_show event should have, and whether cmdline_hide was emitted after aborting. Solution: Add additional arguments hl_id to cmdline_show, and abort to cmdline_hide.
| * | feat(lsp): return table from lsp/ files on runtimepath (#31663)Gregory Anders2024-12-21
| |/ | | | | | | | | | | | | | | Problem: LSP configs on the runtimepath must have the same name as the LSP server and must also explicitly set the name in vim.lsp.config. This is redundant and creates a footgun where a user may accidentally use the wrong name when assigning to the vim.lsp.config table. Solution: Return a table from lsp/ runtimepath files instead
| * fix(messages): no message kind for completion menu messages #31646Tomasz N2024-12-20
| |
| * feat(jobs): jobstart(…,{term=true}), deprecate termopen() #31343Justin M. Keyes2024-12-19
| | | | | | | | | | | | | | | | | | | | | | | | Problem: `termopen` has long been a superficial wrapper around `jobstart`, and has no real purpose. Also, `vim.system` and `nvim_open_term` presumably will replace all features of `jobstart` and `termopen`, so centralizing the logic will help with that. Solution: - Introduce `eval/deprecated.c`, where all deprecated eval funcs will live. - Introduce "term" flag of `jobstart`. - Deprecate `termopen`.
| * docs(api): specify when decor provider on_buf is called #31634luukvbaal2024-12-19
| |