summaryrefslogtreecommitdiffstatshomepage
path: root/src/nvim/options.lua
AgeCommit message (Collapse)AuthorFiles
2026-04-24feat(tui): restore 'ttyfast' to control tty requests #38699Kyle1
Problem: When running nvim on a remote machine over SSH, if there is high ping, then bg detection may not complete in time. This results in a warning every time nvim is started. #38648 Solution: Restore 'ttyfast' option and allow it to control whether or not bg detection is performed. Because this is during startup and before any user config or commands, we use the environment variable `NVIM_NOTTYFAST` to allow disabling `ttyfast` during initialization.
2026-04-22fix(options): default 'titlestring' shows CWD #39233Nick Krichevsky1
Problem: In the default 'titlestring', if the containing directory is the CWD, it renders as "." Solution: Add `:p` to the titlestring.
2026-04-22vim-patch:3918f32: runtime(doc): fix incorrect description of 'scrolloffpad'zeertzjq1
closes: vim/vim#20029 https://github.com/vim/vim/commit/3918f3232f874b3c96f8bfccc5049711f16c252e
2026-04-22vim-patch:9.2.0356: Cannot apply 'scrolloff' context lines at end of filezeertzjq1
Problem: Cannot apply 'scrolloff' context lines at end of file Solution: Add the 'scrolloffpad' option to keep 'scrolloff' context even when at the end of the file (McAuley Penney). closes: vim/vim#19040 https://github.com/vim/vim/commit/a414630393f81c9a5b8fa4d0fcc1287155f67751 Co-authored-by: McAuley Penney <jacobmpenney@gmail.com>
2026-04-20docs: misc #39207Justin M. Keyes1
2026-04-19feat(options): add 'winpinned' to pin a window #39157luukvbaal1
Problem: - Unable to "pin" a window to prevent closing without specifically being targeted. - :fclose closes hidden windows (even before visible windows). Solution: - Add 'winpinned' window-local option. When set, window is skipped by :fclose and :only. Pin the ui2 cmdline window (which should always be visible), so that it is not closed by :only/fclose. - Skip over hidden (and pinned) windows with :fclose. Co-authored-by: glepnir <glephunter@gmail.com>
2026-04-18docs: misc #39045Justin M. Keyes1
2026-04-17vim-patch:8.2.2440: documentation based on patches is outdated (#39144)zeertzjq1
Problem: Documentation based on patches is outdated. Solution: Add changes to documentation in a patch. https://github.com/vim/vim/commit/853886722c051ecaef6d818ce32a822e4f43dc2b Trailing space was removed in later patches. Also fix a few more misplaced error numbers from #8155. Co-authored-by: Bram Moolenaar <Bram@vim.org>
2026-04-16test: lint EXX error codes #8155Justin M. Keyes1
Problem: - Choosing a new EXX error code is tedious. - It's possible to accidentally use an EXX error code for different purposes. Solution: Add a lint check which requires EXX error codes to have a :help tag. This also avoids duplicates because `make doc` does `:helptags ++t doc` which fails if duplicates are found.
2026-04-14docs: lsp, options, api #38980Justin M. Keyes1
docs: lsp, options - revert bogus change to `_meta/builtin_types.lua` from 3a4a66017b74 Close #38991 Co-authored-by: David Mejorado <david.mejorado@gmail.com>
2026-04-14refactor(options): generate "modeline disallowed" doc text #39019Justin M. Keyes1
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`).
2026-04-13feat(completion): completeopt=preselect, LSP CompletionItem.preselect #36613glepnir1
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.
2026-04-12Merge #38882 docsJustin M. Keyes1
2026-04-12fix(normal): pass count to 'keywordprg' as arg1 #38965Barrett Ruth1
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'`.
2026-04-12docs: miscJustin M. Keyes1
Close #38748 Close #38866 Co-authored-by: Mario Loriedo <mario.loriedo@gmail.com> Co-authored-by: Anakin Childerhose <anakin@childerhose.ca>
2026-04-07vim-patch:794c304: runtime(doc): clarify incsearch feature and typed chars ↵zeertzjq1
(#38830) fixes: vim/vim#19886 https://github.com/vim/vim/commit/794c3044794330d8d0eadf71635d3892c187794c Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-04-06docs: statuslineJustin M. Keyes1
fix https://github.com/neovim/neovim/issues/38670
2026-04-04vim-patch:af58a9f: runtime(doc): adjust :h 'autowrite' and :h 'autowriteall'zeertzjq1
- 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
2026-04-04vim-patch:9.2.0267: 'autowrite' not triggered for :termzeertzjq1
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>
2026-04-01vim-patch:9.2.0277: tests: test_modeline.vim fails (#38672)zeertzjq1
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
2026-04-01vim-patch:9.2.0276: [security]: modeline security bypass (#38657)zeertzjq1
Problem: [security]: modeline security bypass Solution: disallow mapset() from secure mode, set the P_MLE flag for the 'complete', 'guitabtooltip' and 'printheader' options. Github Advisory: https://github.com/vim/vim/security/advisories/GHSA-8h6p-m6gr-mpw9 https://github.com/vim/vim/commit/75661a66a1db1e1f3f1245c615f13a7de44c0587 Co-authored-by: Christian Brabandt <cb@256bit.org>
2026-03-24fix(progress): show progress-status only in curwin #38458Shadman1
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})
2026-03-24docs: api, plugins, ui2Justin M. Keyes1
2026-03-23vim-patch:9.2.0223: Option handling for key:value suboptions is limited (#38426)zeertzjq1
Problem: Option handling for key:value suboptions is limited Solution: Improve :set+=, :set-= and :set^= for options that use "key:value" pairs (Hirohito Higashi) For comma-separated options with P_COLON (e.g., diffopt, listchars, fillchars), :set += -= ^= now processes each comma-separated item individually instead of treating the whole value as a single string. For :set += and :set ^=: - A "key:value" item where the key already exists with a different value: the old item is replaced. - An exact duplicate item is left unchanged. - A new item is appended (+=) or prepended (^=). For :set -=: - A "key:value" or "key:" item removes by key match regardless of value. - A non-colon item removes by exact match. This also handles multiple non-colon items (e.g., :set diffopt-=filler,internal) by processing each item individually, making the behavior order-independent. Previously, :set += simply appended the value, causing duplicate keys to accumulate. fixes: vim/vim#18495 closes: vim/vim#19783 https://github.com/vim/vim/commit/e2f4e18437074868d89ed5c368af8c55ddc394e1 Co-authored-by: Hirohito Higashi <h.east.727@gmail.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20feat(progress): status api, 'statusline' integration #35428Shadman1
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%"
2026-03-19fix(ui): apply 'pumborder' to mouse menu, fix overflow #36193glepnir1
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.
2026-03-17docs: api, lsp, messages, intro #38327Justin M. Keyes1
2026-03-17feat(diff): merge adjacent blocks using inline:word (#37085)Harsh Kapse1
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
2026-03-16feat(progress): disable cmdline progress msg via messagesopt' #36730Shadman1
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.
2026-03-16docs: miscJustin M. Keyes1
2026-03-15feat(help): super K (":help!") guesses tag at cursor #36205Justin M. Keyes1
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.
2026-03-15fix(statusline): missing info/hint diagnostics #38307phanium1
Problem: default stl treat vim.diagnostics.count() return as array Solution: next() tell if a dict is empty
2026-03-12docs: miscJustin M. Keyes1
2026-03-11fix(prompt): don't implicitly set 'modified' #38118Willaaaaaaa1
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.
2026-03-11docs: api, messages, lsp, trustJustin M. Keyes1
gen_vimdoc.lua: In prepare for the upcoming release, comment-out the "Experimental" warning for prerelease features.
2026-03-10feat(terminal): surface exit code via virttext + nvim_get_chan_info #37987Ayaan1
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.
2026-03-03vim-patch:73f4162: runtime(doc): Tweak doc style in options.txtzeertzjq1
https://github.com/vim/vim/commit/73f41626df1f1764007f073088048ffea4f970c4 Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
2026-03-03vim-patch:9.2.0088: cannot display tabs for indentationzeertzjq1
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>
2026-02-23fix(statusline): broken statusline on error #38000Sean Dewar1
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.
2026-02-21vim-patch:9.2.0036: completion: thesaurus completion incorrect with ↵zeertzjq1
"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>
2026-02-18fix(defaults): 'guifont' "monospace" fallback, trim spaces #37930Rahul Yedida1
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.
2026-02-16feat(defaults): per-platform 'guifont' default #37175Rahul Yedida1
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
2026-02-15feat(statusline): option to specify stacking highlight groups #37153Riley Bruins1
**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.
2026-02-10vim-patch:9e456e5: runtime(doc): clarify the use of 'iskeyword' option valuezeertzjq1
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>
2026-02-03feat(defaults): exclude temp dirs from 'shada' oldfiles #37631Pavel Pisetski1
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.
2026-02-01vim-patch:dd9f7e6: runtime(doc): Fix some overlength lineszeertzjq1
closes: vim/vim#19286 https://github.com/vim/vim/commit/dd9f7e6cbbba6d8e63cca3b4c537dc9b8cc1837a Co-authored-by: Doug Kearns <dougkearns@gmail.com>
2026-01-12docs: misc (#37281)zeertzjq1
Close #37289 Close #37348 Co-authored-by: Marc Jakobi <marc@jakobi.dev> Co-authored-by: Anton Kesy <anton@kesy.de>
2026-01-12vim-patch:9.1.2079: use-after-free with 'qftf' wiping buffer (#37364)zeertzjq1
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>
2025-12-28vim-patch:9.1.2024: 'fsync' option cannot be set per buffer (#37129)zeertzjq1
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>
2025-12-24vim-patch:2006415: runtime(doc): add reference to searchcount() functionzeertzjq1
https://github.com/vim/vim/commit/20064150169a94380abef37d3966c864531d1d92 Co-authored-by: Christian Brabandt <cb@256bit.org>