aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/_meta/options.lua
Commit message (Collapse)AuthorAge
* fix(lua): not obvious which _meta/ files are generated #39035Justin M. Keyes2026-04-14
| | | | | | | | | | | | Problem: - Not obvious which _meta/ are generated and which should be edited manually. - The require guard (`error('Cannot require a meta file')`) is not consistently present in all meta files. Solution: - Update headers. - Add require() guard to all meta files. - Rename generated meta files with `.gen.lua`.
* refactor(options): generate "modeline disallowed" doc text #39019Justin M. Keyes2026-04-14
| | | | | | | | | | | Problem: - Lots of redundant text in options docs for "not allowed in a modeline", even though we already have a flag that indicates that. - `deny_in_modelines` is an old vestigial flag only used by 'encoding' (which never changes). Solution: - Generate docs based on the `secure` flag. - Remove the `deny_in_modelines` flag (`kOptFlagNoML`).
* feat(completion): completeopt=preselect, LSP CompletionItem.preselect #36613glepnir2026-04-13
| | | | | | | | | | Problem: LSP CompletionItem.preselect is not supported. https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#completionClientCapabilities Solution: - Add "preselect" field to complete-items and "preselect" flag to 'completeopt'. - Set preselectSupport=true in LSP client capabilities.
* Merge #38882 docsJustin M. Keyes2026-04-12
|\
| * docs: miscJustin M. Keyes2026-04-12
| | | | | | | | | | | | | | | | Close #38748 Close #38866 Co-authored-by: Mario Loriedo <mario.loriedo@gmail.com> Co-authored-by: Anakin Childerhose <anakin@childerhose.ca>
* | fix(normal): pass count to 'keywordprg' as arg1 #38965Barrett Ruth2026-04-12
|/ | | | | | | | | Problem: If `'keywordprg'` begins with `:`, `3K` turns the count into an Ex range. Commands that don't support that then fail. Vim passes the count as the first arg (see #19436, vim/vim#10745). Solution: Pass `[count]` as the first arg for `'keywordprg'`.
* vim-patch:794c304: runtime(doc): clarify incsearch feature and typed chars ↵zeertzjq2026-04-07
| | | | | | | | | (#38830) fixes: vim/vim#19886 https://github.com/vim/vim/commit/794c3044794330d8d0eadf71635d3892c187794c Co-authored-by: Christian Brabandt <cb@256bit.org>
* docs: statuslineJustin M. Keyes2026-04-06
| | | | fix https://github.com/neovim/neovim/issues/38670
* vim-patch:af58a9f: runtime(doc): adjust :h 'autowrite' and :h 'autowriteall'zeertzjq2026-04-04
| | | | | | | | | | | | - Don't go over 78 columns. - Change the first "and" to "or", as "or" is used below. - Change "takes one" to "switches", as "one" may be mistaken as referring to the command instead of the user. - Use backticks in :h 'autowriteall' like in :h 'autowrite'. closes: vim/vim#19859 https://github.com/vim/vim/commit/af58a9f5e9e0bf748700645d07c6262eb281d737
* vim-patch:9.2.0267: 'autowrite' not triggered for :termzeertzjq2026-04-04
| | | | | | | | | | | | Problem: 'autowrite' not triggered for :term Solution: Trigger autowrite for :term command (rendcrx) closes: vim/vim#19855 https://github.com/vim/vim/commit/466b5f531a9818d4fa834126d64e8b771e4a497f Co-authored-by: rendcrx <974449413@qq.com>
* vim-patch:9.2.0277: tests: test_modeline.vim fails (#38672)zeertzjq2026-04-01
| | | | | | | Problem: tests: test_modeline.vim fails (after v9.2.0276) Solution: Rewrite the tests to use the existing s:modeline_fails() function, update documentation (zeertzjq). https://github.com/vim/vim/commit/8c8772c6b321d4955c8f09926e3eda2b4cd83680
* fix(progress): show progress-status only in curwin #38458Shadman2026-03-24
| | | | | | | | | | | | | | | | Problem: Currently same progress stat get's displayed on statusline of all windows. This is repeatitive and noisy. Solultion: Only display progress-status on the focused window Problem: Currently, when multiple progress are on going we show it as Progress: {N} items {percent}% format. It can be simplified sinnce items doesn't really add enough value for the valuable space it takes in statusline Solution: Change format to Progress: {percent}%({N})
* docs: api, plugins, ui2Justin M. Keyes2026-03-24
|
* feat(progress): status api, 'statusline' integration #35428Shadman2026-03-20
| | | | | | | | | | | | | | Problem: Default statusline doesn't show progress status. Solution: - Provide `vim.ui.progress_status()`. - Include it in the default 'statusline'. How it works: Status text summarizes "running" progress messages. - If none: returns empty string - If one running item: "title: percent%" - If multiple running items: "Progress: N items avg-percent%"
* fix(ui): apply 'pumborder' to mouse menu, fix overflow #36193glepnir2026-03-19
| | | | | | | | | | | Problem: Mouse popup menus (right-click context menus) do not respect the 'pumborder' option and could overflow screen boundaries when borders were enabled near the edge. Solution: - Remove the mouse menu exclusion from border rendering. - Add boundary check to shift menu left when border would exceed screen width, ensuring complete visibility of menu content and borders.
* docs: api, lsp, messages, intro #38327Justin M. Keyes2026-03-17
|
* feat(diff): merge adjacent blocks using inline:word (#37085)Harsh Kapse2026-03-17
| | | | | | | | | | | | | | | | | | | | | vim-patch:9.2.0174: diff: inline word-diffs can be fragmented Problem: When using 'diffopt=inline:word', lines were excessively fragmented with punctuation creating separate highlight blocks, making it harder to read the diffs. Solution: Added 'diff_refine_inline_word_highlight()' to merge adjacent diff blocks that are separated by small gaps of non-word characters (up to 5 bytes by default) (HarshK97). When using inline:word diff mode, adjacent changed words separated by punctuation or whitespace are now merged into a single highlight block if the gap between them contains fewer than 5 non-word characters. This creates more readable diffs and closely matches GitHub's own diff display. closes: vim/vim#19098 https://github.com/vim/vim/commit/42c6686c78d39843f71dba989a8ea59bc6975132
* feat(progress): disable cmdline progress msg via messagesopt' #36730Shadman2026-03-16
| | | | | | | | | Problem: No way to disable progress messages in cmdline message area. If a third-party plugin handles Progress events + messages, the user may not want the "redundant" progress displayed in the cmdline message area. Solution: Support "progress:c" entry in 'messageopts' option.
* docs: miscJustin M. Keyes2026-03-16
|
* feat(help): super K (":help!") guesses tag at cursor #36205Justin M. Keyes2026-03-15
| | | | | | | | | | | | | Problem: `K` in help files may fail in some noisy text. Example: (`fun(config: vim.lsp.ClientConfig): boolean`) ^cursor Solution: - `:help!` (bang, no args) activates DWIM behavior: tries `<cWORD>`, then trims punctuation until a valid tag is found. - Set `keywordprg=:help!` by default. - Does not affect `CTRL-]`, that is still fully "tags" based.
* fix(statusline): missing info/hint diagnostics #38307phanium2026-03-15
| | | | | Problem: default stl treat vim.diagnostics.count() return as array Solution: next() tell if a dict is empty
* docs: vimfn descriptionsJustin M. Keyes2026-03-12
|
* fix(prompt): don't implicitly set 'modified' #38118Willaaaaaaa2026-03-11
| | | | | | | | | | | | | Problem: In aec3d7915c55fc0b7dc73f6186cf0ae45d416d33 Vim changed prompt-buffers to respect 'modified' so the termdebug plugin can "control closing the window". But for most use-cases (REPL, shell, AI "chat", …), prompt-buffers are in practice always "modified", and no way to "save" them, so *implicitly* setting 'modified' is noisy and annoying. Solution: Don't implicitly set 'modified' when a prompt-buffer is updated. Plugins/users can still explicitly set 'modified', which will then trigger the "E37: No write since last change" warning.
* docs: api, messages, lsp, trustJustin M. Keyes2026-03-11
| | | | | gen_vimdoc.lua: In prepare for the upcoming release, comment-out the "Experimental" warning for prerelease features.
* feat(terminal): surface exit code via virttext + nvim_get_chan_info #37987Ayaan2026-03-10
| | | | | | | | | | Problem: When a terminal process exits, "[Process Exited]" text is added to the buffer contents. Solution: - Return `exitcode` field from `nvim_get_chan_info`. - Show it in the default 'statusline'. - Show exitcode as virtual text in the terminal buffer.
* vim-patch:73f4162: runtime(doc): Tweak doc style in options.txtzeertzjq2026-03-03
| | | | | | https://github.com/vim/vim/commit/73f41626df1f1764007f073088048ffea4f970c4 Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
* vim-patch:9.2.0088: cannot display tabs for indentationzeertzjq2026-03-03
| | | | | | | | | | | | | Problem: cannot display tabs for indentation Solution: Add the "leadtab" value to the 'listchars' option to distinguish between tabs used for indentation and tabs used for alignment (HarshK97). closes: vim/vim#19094 https://github.com/vim/vim/commit/8526d32647245b3b623986949e7807b4b353e624 Co-authored-by: HarshK97 <harshkapse1234@gmail.com>
* vim-patch:9.2.0061: Not possible to know when a session will be loaded (#38071)zeertzjq2026-02-26
| | | | | | | | | | | Problem: Not possible to know when a session will be loaded. Solution: Add the SessionLoadPre autocommand (Colin Kennedy). fixes: vim/vim#19084 closes: vim/vim#19306 https://github.com/vim/vim/commit/1c0d468d72e0220d4cb25936043ac35439a981b5 Co-authored-by: Colin Kennedy <colinvfx@gmail.com>
* fix(statusline): broken statusline on error #38000Sean Dewar2026-02-23
| | | | | | | | | | Problem: after #33036, an error from evaluating 'statusline' clears it and doesn't draw the statusline. (causing glitchy redraws) Solution: use the default value instead. If 'stl' is somehow ever empty, still call redraw_custom_statusline to at least draw an empty statusline. Ideally our default 'stl' shouldn't itself error too! :-) Also adjust some prior screen:expect()s to avoid immediate success warnings.
* vim-patch:9.2.0036: completion: thesaurus completion incorrect with ↵zeertzjq2026-02-21
| | | | | | | | | | | | | | | "longest/fuzzy" (#37996) Problem: completion: thesaurus completion incorrect with "longest/fuzzy" (Mao-Yining) Solution: Disable fuzzy matching and longest-match insertion specifically for thesaurus completion (Girish Palya). fixes: vim/vim#19356 closes: vim/vim#19475 https://github.com/vim/vim/commit/26a3f486cc708b285b20e92c206f1615d20b23b6 Co-authored-by: Girish Palya <girishji@gmail.com>
* fix(defaults): 'guifont' "monospace" fallback, trim spaces #37930Rahul Yedida2026-02-18
| | | | | | | | | Problem: Some UI clients break if space follows the comma in 'guifont' items. Also the new 'guifont' default may cause problems if none of the fonts are found. Solution: Remove trailing whitespace. Add a "monospace" fallback which `fontconfig` can resolve on *nix systems.
* feat(defaults): per-platform 'guifont' default #37175Rahul Yedida2026-02-16
| | | | | | | | Problem: Font rendering and kerning are subpar in GUIs. Solution: Set default 'guifont' based on common CSS fonts per: https://github.com/system-fonts/modern-font-stacks#monospace-code
* feat(statusline): option to specify stacking highlight groups #37153Riley Bruins2026-02-15
| | | | | | | | **Problem:** No easy way to stack highlight groups #35806. **Solution:** Add a way to specify a new statusline chunk with a highlight group that inherits from previous highlight attributes. Also applies to tabline, etc.
* vim-patch:9e456e5: runtime(doc): clarify the use of 'iskeyword' option valuezeertzjq2026-02-10
| | | | | | | | | | | In particular, also mention the difference between the regex atom \k and what Vim considers for a word character. closes: vim/vim#18688 https://github.com/vim/vim/commit/9e456e52df83f64075ce94c9a5adc43e221a6d3c Co-authored-by: Christian Brabandt <cb@256bit.org>
* feat(defaults): exclude temp dirs from 'shada' oldfiles #37631Pavel Pisetski2026-02-03
| | | | | | | | | | Problem: Temporary files from /tmp/ and /private/ paths clutter :oldfiles list. Additionally, the documented Windows default (rA:,rB:) was never applied due to a missing platform condition. Solution: Drop platform-specific shada differences and default to excluding /tmp/ and /private/ paths.
* vim-patch:dd9f7e6: runtime(doc): Fix some overlength lineszeertzjq2026-02-01
| | | | | | | | closes: vim/vim#19286 https://github.com/vim/vim/commit/dd9f7e6cbbba6d8e63cca3b4c537dc9b8cc1837a Co-authored-by: Doug Kearns <dougkearns@gmail.com>
* vim-patch:9.1.1202: Missing TabClosedPre autocommandzeertzjq2026-01-20
| | | | | | | | | | | | | Problem: Missing TabClosedPre autocommand (zoumi) Solution: Add the TabClosedPre autcommand (Jim Zhou). fixes: vim/vim#16518 closes: vim/vim#16855 https://github.com/vim/vim/commit/5606ca5349982fe53cc6a2ec6345aa66f0613d40 Co-authored-by: Jim Zhou <jimzhouzzy@gmail.com>
* vim-patch:9.1.0059: No event triggered before creating a windowzeertzjq2026-01-16
| | | | | | | | | | | | | | | | Problem: No event is triggered before creating a window. (Sergey Vlasov) Solution: Add the WinNewPre event (Sergey Vlasov) fixes: vim/vim#10635 closes: vim/vim#12761 https://github.com/vim/vim/commit/1f47db75fdc8c53c5c778b26ecfa0942ac801f22 Not sure if this should be triggered before creating a floating window, as its use case is related to window layout. Co-authored-by: Sergey Vlasov <sergey@vlasov.me>
* docs: misc (#37281)zeertzjq2026-01-12
| | | | | | | Close #37289 Close #37348 Co-authored-by: Marc Jakobi <marc@jakobi.dev> Co-authored-by: Anton Kesy <anton@kesy.de>
* vim-patch:9.1.2079: use-after-free with 'qftf' wiping buffer (#37364)zeertzjq2026-01-12
| | | | | | | | | | | Problem: use-after-free with 'quickfixtextfunc' wiping buffer (henices) Solution: Evaluate 'quickfixtextfunc' with textlock enabled. closes: vim/vim#19142 https://github.com/vim/vim/commit/300ea1133fba310ae8acd7fadc3ab3cc24e8402f Co-authored-by: Christian Brabandt <cb@256bit.org>
* vim-patch:9.1.2024: 'fsync' option cannot be set per buffer (#37129)zeertzjq2025-12-28
| | | | | | | | | | | Problem: 'fsync' option cannot be set per buffer Solution: Make 'fsync' option global-local (glepnir) closes: vim/vim#19019 https://github.com/vim/vim/commit/4d5b30372663e8ea356b25fe94334558c6ae283f Co-authored-by: glepnir <glephunter@gmail.com>
* vim-patch:2006415: runtime(doc): add reference to searchcount() functionzeertzjq2025-12-24
| | | | | | https://github.com/vim/vim/commit/20064150169a94380abef37d3966c864531d1d92 Co-authored-by: Christian Brabandt <cb@256bit.org>
* Merge #37057 docsJustin M. Keyes2025-12-21
|\
| * fix(options): deprecate 'gdefault', 'magic'Justin M. Keyes2025-12-20
| |
* | fix(statusline): diagnostics spacing #36897Olivia Kinnear2025-12-20
|/
* feat(tag): respect jumpoptions=view when popping tagstack (#37021)Sean Dewar2025-12-19
| | | | Problem: jumpoptions=view has no effect when popping from the tagstack. Solution: make it work.
* docs(options): shell-powershell #36881ymich99632025-12-10
| | | | | | | | | | Problem: Current options for powershell and pwsh had mistakes and rationale behind them was not clear. Solution: Update the suggested options by splitting up powershell and pwsh, as well as ensuring that all options work and rationale is documented and discussed.
* vim-patch:9.1.1963: diff: missing diff size limit for xdiff (#36877)zeertzjq2025-12-09
| | | | | | | | | | | | | | | | | | | | | | | Problem: diff: missing diff size limit for xdiff Solution: Impose file size limit for internal diff (xdiff) (Yee Cheng Chin). Git imposes a hard cap on file size for content that it passes to xdiff (added to Git in dcd1742e56e, defined in xdiff-interface.h), due to integer overflow concerns in xdiff. Vim doesn't specify such a limit right now, which means it's possible for a user to diff a large file (1GB+) and trigger these overflow issues. Add the same size limit (1GB minus 1MB) to Vim and simply throws an error when Vim encounters files larger than said limit. For now, reuse the same error message regarding internal diff failures. There is no need to add the same limit for external diff as it's up to each tool to error check their input to decide what is appropriate or not. closes: vim/vim#18891 https://github.com/vim/vim/commit/4af6d9755cba0dd07e881172f2a6e0efe9986ddc Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
* feat(events): MarkSet event, aucmd_defer() #35793Nathan Smith2025-12-07
| | | | | | | | | | | | Problem: - Can't subscribe to "mark" events. - Executing events is risky because they can't be deferred. Solution: - Introduce `MarkSet` event. - Introduce `aucmd_defer()`. Helped-by: zeertzjq <zeertzjq@outlook.com> Co-authored-by: Justin M. Keyes <justinkz@gmail.com>
* docs: miscJustin M. Keyes2025-12-06
| | | | | | fix https://github.com/neovim/neovim.github.io/issues/419 Co-authored-by: Rob Pilling <robpilling@gmail.com>