aboutsummaryrefslogtreecommitdiff
path: root/runtime/doc/pattern.txt
Commit message (Collapse)AuthorAge
* docs(help): specify h4 "function signature" format #42434masterJustin M. Keyes2 days
| | | | | | | | | | | | | | | | | | | | | Work towards enabling ["flow" layout](https://github.com/neovim/neovim/blob/9244da12e400ec0291450a5e9400d995e7a29b83/src/gen/gen_help_html.lua#L86-L88) in all `:help` files. Problem: The final boss of vimdoc pseudo-structure: Vim's quasi-headings on function signatures and excmd docs is visually distinctive but too inconsistent for a nice parse rule. Solution: - Define the quasi-heading format as an "h4" variant, specified at `:help help-tag-heading`. - For simplicity and predictability, it is defined as any line that ends with a help tag(s) preceded by 2 or more spaces (or 1 tab). - Update existing docs. - This one-time update has a lot of changes, but is very unlikely to conflict with ported Vim-patches because (1) Vim rarely adds new *excmds* that we want, and (2) *function* docs are auto-generated. ref https://github.com/neovim/tree-sitter-vimdoc/issues/110
* docs: flow layoutJustin M. Keyes3 days
| | | | | | | | | | Work towards enabling "flow" layout in most `:help` files. Since [tables are supported in help](https://github.com/neovim/tree-sitter-vimdoc#tables), it's now possible to render most help files as ["flow" layout](https://github.com/neovim/neovim/blob/9244da12e400ec0291450a5e9400d995e7a29b83/src/gen/gen_help_html.lua#L86-L88) instead of the legacy fixed-width layout. Besides [improved HTML rendering](https://github.com/neovim/neovim/pull/42381#discussion_r4285705739), flow layout will allow `:help` presentation-mode to un-hardwrap text blocks.
* docs: cleanup invalid help sourceJustin M. Keyes3 days
| | | | | | | | | | Work towards enabling "flow" layout in most `:help` files. Since [tables are supported in help](https://github.com/neovim/tree-sitter-vimdoc#tables), it's now possible to render most help files as ["flow" layout](https://github.com/neovim/neovim/blob/9244da12e400ec0291450a5e9400d995e7a29b83/src/gen/gen_help_html.lua#L86-L88) instead of the legacy fixed-width layout. Besides [improved HTML rendering](https://github.com/neovim/neovim/pull/42381#discussion_r4285705739), flow layout will allow `:help` presentation-mode to un-hardwrap text blocks.
* docs: cleanup tables, highlights.scm #42381Justin M. Keyes4 days
| | | highlights.scm: `#match` is slow, prefer `#lua-match`.
* refactor(charset)!: delete 'isprint' and cleanup 'iskeyword' and friendsbfredl2026-09-22
| | | | | | | | | | | | | In the `enc=utf-8` only world, the 'isprint' option is quite obsolete. The function is only consulted for decoded U+0080 to U+00FF chars whose printability is defined by the unicode charset, just like higher codepoints. Meanwhile, invalid `\x80` to `\xFF` bytes are always unprintable. Disentangle 'iskeyword', 'isfname' and 'isident' from each other by giving them all separate bitsets. Now these can be updated individually. These updaters can back out of errors gracefully, no need for extra panic logic in option[str].c to restore partially updated chartabs.
* fix(lua): vim.wait(0) does not call loop_poll #39679Justin M. Keyes2026-05-10
| | | | | | | | | | | Problem: Regression from c822a2657c78: `vim.wait(0)` does not call `loop_poll`, so `vim.wait(1)` is needed to "yield" from Lua. Solution: - Ensure that `vim._core.loop_poll()` is always called, even when `time=0`. - Document how to interrupt Lua code (ctrl-c). ref https://github.com/neovim/neovim/issues/6800
* vim-patch:8.2.2440: documentation based on patches is outdated (#39144)zeertzjq2026-04-17
| | | | | | | | | | | 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>
* test: lint EXX error codes #8155Justin M. Keyes2026-04-16
| | | | | | | | | | | 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.
* vim-patch:427fa3e: runtime(doc): 'ignorecase' affects character classes in ↵zeertzjq2026-01-29
| | | | | | | | | | the old engine fixes: vim/vim#19230 https://github.com/vim/vim/commit/427fa3e1e4b44eb780f3ddae51b49a514530ee64 Co-authored-by: Christian Brabandt <cb@256bit.org>
* fix(options): deprecate 'gdefault', 'magic'Justin M. Keyes2025-12-20
|
* docs: misc, editorconfigJustin M. Keyes2025-12-15
| | | | fix https://github.com/neovim/neovim/issues/36858
* docs: miscJustin M. Keyes2025-12-06
| | | | | | fix https://github.com/neovim/neovim.github.io/issues/419 Co-authored-by: Rob Pilling <robpilling@gmail.com>
* vim-patch:5427465: runtime(doc): Clean up file header whitespacezeertzjq2025-11-10
| | | | | | | | | | | | | - :retab! line 1 and line 4 (main page heading). - Use four columns whitespace before "by [Author]" in the user manual heading to match the reference manual formatting. - double space headings. closes: vim/vim#18648 https://github.com/vim/vim/commit/542746521ff8d111f33c3c8ff298ba58966c9acc Co-authored-by: Doug Kearns <dougkearns@gmail.com>
* vim-patch:partial:c58f91c: runtime(doc): Whitespace updates (#36160)zeertzjq2025-10-13
| | | | | | | | | | | | | | Use double sentence spacing and wrap lines at 'textwidth'. Code examples and tables were not wrapped unless this had already been done locally. closes: vim/vim#18453 https://github.com/vim/vim/commit/c58f91c035db09358c282f2a908e2aea4287785e Fix incorrect docs in :h ModeChanged. Cherry-pick :h bufnr() changes from patch 8.1.2080. Co-authored-by: Doug Kearns <dougkearns@gmail.com>
* vim-patch:1388fa6: runtime(doc): Add reference to 'wildoptions' in ↵zeertzjq2025-10-10
| | | | | | | | | | | | | fuzzy-matching docs The docs for fuzzy matching seems to try to list every possible use case, but misses this one. It's a good idea to be consistent. closes: vim/vim#18525 https://github.com/vim/vim/commit/1388fa62d25181df85c4460d6ecdc6c417c016df Co-authored-by: Yee Cheng Chin <ychin.git@gmail.com>
* vim-patch:5ca1ea8: runtime(doc): Tweak documentation stylezeertzjq2025-08-23
| | | | | | | | closes: vim/vim#18078 https://github.com/vim/vim/commit/5ca1ea83ad79c8d1ebd25e61c91f1199c9bc4f09 Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
* vim-patch:c93a2b3: runtime(doc): Adapt fuzzy doc to reflect 'fzy' algorithmzeertzjq2025-08-14
| | | | | | | | closes: vim/vim#17988 https://github.com/vim/vim/commit/c93a2b332734086ef94c4abf407f584e1e41bd55 Co-authored-by: Girish Palya <girishji@gmail.com>
* vim-patch:9.1.1627: fuzzy matching can be improvedzeertzjq2025-08-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: fuzzy-matching can be improved Solution: Implement a better fuzzy matching algorithm (Girish Palya) Replace fuzzy matching algorithm with improved fzy-based implementation The [current](https://www.forrestthewoods.com/blog/reverse_engineering_sublime_texts_fuzzy_match/) fuzzy matching algorithm has several accuracy issues: * It struggles with CamelCase * It fails to prioritize matches at the beginning of strings, often ranking middle matches higher. After evaluating alternatives (see my comments [here](https://github.com/vim/vim/issues/17531#issuecomment-3112046897) and [here](https://github.com/vim/vim/issues/17531#issuecomment-3121593900)), I chose to adopt the [fzy](https://github.com/jhawthorn/fzy) algorithm, which: * Resolves the aforementioned issues. * Performs better. Implementation details This version is based on the original fzy [algorithm](https://github.com/jhawthorn/fzy/blob/master/src/match.c), with one key enhancement: **multibyte character support**. * The original implementation supports only ASCII. * This patch replaces ascii lookup tables with function calls, making it compatible with multibyte character sets. * Core logic (`match_row()` and `match_positions()`) remains faithful to the original, but now operates on codepoints rather than single-byte characters. Performance Tested against a dataset of **90,000 Linux kernel filenames**. Results (in milliseconds) show a **\~2x performance improvement** over the current fuzzy matching algorithm. ``` Search String Current Algo FZY Algo ------------------------------------------------- init 131.759 66.916 main 83.688 40.861 sig 98.348 39.699 index 109.222 30.738 ab 72.222 44.357 cd 83.036 54.739 a 58.94 62.242 b 43.612 43.442 c 64.39 67.442 k 40.585 36.371 z 34.708 22.781 w 38.033 30.109 cpa 82.596 38.116 arz 84.251 23.964 zzzz 35.823 22.75 dimag 110.686 29.646 xa 43.188 29.199 nha 73.953 31.001 nedax 94.775 29.568 dbue 79.846 25.902 fp 46.826 31.641 tr 90.951 55.883 kw 38.875 23.194 rp 101.575 55.775 kkkkkkkkkkkkkkkkkkkkkkkkkkkkk 48.519 30.921 ``` ```vim vim9script var haystack = readfile('/Users/gp/linux.files') var needles = ['init', 'main', 'sig', 'index', 'ab', 'cd', 'a', 'b', 'c', 'k', 'z', 'w', 'cpa', 'arz', 'zzzz', 'dimag', 'xa', 'nha', 'nedax', 'dbue', 'fp', 'tr', 'kw', 'rp', 'kkkkkkkkkkkkkkkkkkkkkkkkkkkkk'] for needle in needles var start = reltime() var tmp = matchfuzzy(haystack, needle) echom $'{needle}' (start->reltime()->reltimefloat() * 1000) endfor ``` Additional changes * Removed the "camelcase" option from both matchfuzzy() and matchfuzzypos(), as it's now obsolete with the improved algorithm. related: neovim/neovim#34101 fixes vim/vim#17531 closes: vim/vim#17900 https://github.com/vim/vim/commit/7e0df5eee9eab872261fd5eb0068cec967a2ba77 Co-authored-by: Girish Palya <girishji@gmail.com>
* vim-patch:85cd509: runtime(doc): Use correct option-name tagszeertzjq2025-08-06
| | | | | | | | | | closes: vim/vim#17857 https://github.com/vim/vim/commit/85cd509885a05c3a6bb029fb378b1295f107f8f6 Omit 'completepopup' and v:colornames. Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
* vim-patch:9.1.1535: the maximum search count uses hard-coded value 99 (#34873)zeertzjq2025-07-11
| | | | | | | | | | | | | Problem: The maximum search count uses a hard-coded value of 99 (Andres Monge, Joschua Kesper) Solution: Make it configurable using the 'maxsearchcount' option. related: vim/vim#8855 fixes: vim/vim#17527 closes: vim/vim#17695 https://github.com/vim/vim/commit/b7b7fa04bf79f2f13ed6e789b76262753da31dde Co-authored-by: Christian Brabandt <cb@256bit.org>
* vim-patch:0ae9e19: runtime(doc): add a section for options influencing ↵zeertzjq2025-07-06
| | | | | | | search (#34810) https://github.com/vim/vim/commit/0ae9e19540dda5d18359013fadf20f7d6b04f1fb Co-authored-by: Christian Brabandt <cb@256bit.org>
* vim-patch:9.1.1258: regexp: max \U and \%U value is limited by INT_MAX (#33156)zeertzjq2025-03-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: regexp: max \U and \%U value is limited by INT_MAX but gives a confusing error message (related: v8.1.0985). Solution: give a better error message when the value reaches INT_MAX When searching Vim allows to get up to 8 hex characters using the /\V and /\%V regex atoms. However, when using "/\UFFFFFFFF" the code point is already above what an integer variable can hold, which is 2,147,483,647. Since patch v8.1.0985, Vim already limited the max codepoint to INT_MAX (otherwise it caused a crash in the nfa regex engine), but instead of error'ing out it silently fell back to parse the number as a backslash value and not as a codepoint value and as such this "/[\UFFFFFFFF]" will happily find a "\" or an literal "F". And this "/[\d127-\UFFFFFFFF]" will error out as "reverse range in character class). Interestingly, the max Unicode codepoint value is U+10FFFF which still fits into an ordinary integer value, which means, that we don't even need to parse 8 hex characters, but 6 should have been enough. However, let's not limit Vim to search for only max 6 hex characters (which would be a backward incompatible change), but instead allow all 8 characters and only if the codepoint reaches INT_MAX, give a more precise error message (about what the max unicode codepoint value is). This allows to search for "[\U7FFFFFFE]" (will likely return "E486 Pattern not found") and "[/\U7FFFFFF]" now errors "E1517: Value too large, max Unicode codepoint is U+10FFFF". While this change is straight forward on architectures where long is 8 bytes, this is not so simple on Windows or 32bit architectures where long is 4 bytes (and therefore the test fails there). To account for that, let's make use of the vimlong_T number type and make a few corresponding changes in the regex engine code and cast the value to the expected data type. This however may not work correctly on systems that doesn't have the long long datatype (e.g. OpenVMS) and probably the test will fail there. fixes: vim/vim#16949 closes: vim/vim#16994 https://github.com/vim/vim/commit/f2b16986a194ab839c5a23bd7fe904f9fae1526f Co-authored-by: Christian Brabandt <cb@256bit.org>
* 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
* vim-patch:partial:624bb83: runtime(doc): Tweak documentation style a bit ↵zeertzjq2024-11-10
| | | | | | | | | | | (#31148) closes: vim/vim#11419 https://github.com/vim/vim/commit/624bb83619cbd685b1902b016ca3ececfc1c135c Skip syncolor.vim and v:colornames Co-authored-by: h-east <h.east.727@gmail.com>
* vim-patch:26de90c: runtime(nohlsearch): include the the simple nohlsearch ↵Christian Clason2024-06-18
| | | | | | | | | | | package fixes: vim/vim#15039 closes: vim/vim#15042 https://github.com/vim/vim/commit/26de90c6312cf16d7a4f2b6942befb4e1f14b960 Co-authored-by: Maxim Kim <habamax@gmail.com>
* vim-patch:9.1.0463: no fuzzy-matching support for insert-completionzeertzjq2024-06-05
| | | | | | | | | | | | Problem: no fuzzy-matching support for insert-completion Solution: enable insert-mode completion with fuzzy-matching using :set completopt+=fuzzy (glepnir). closes: vim/vim#14878 https://github.com/vim/vim/commit/a218cc6cdabae1113647b817c4eefc2b60a6902f Co-authored-by: glepnir <glephunter@gmail.com>
* vim-patch:9525f6213604zeertzjq2024-04-27
| | | | | | | | runtime(doc): fix typo synconcealend -> synconcealed (vim/vim#14644) https://github.com/vim/vim/commit/9525f62136047225f4dca8ba68ab2023600ec522 Co-authored-by: Philip H <47042125+pheiduck@users.noreply.github.com>
* vim-patch:fe1e2b5e2d65zeertzjq2024-04-27
| | | | | | | | | | runtime(doc): clarify syntax vs matching mechanism fixes: vim/vim#14643 https://github.com/vim/vim/commit/fe1e2b5e2d65f05d820f17db935b15454a63be06 Co-authored-by: Christian Brabandt <cb@256bit.org>
* vim-patch:d3e277f279ed (#25734)zeertzjq2023-10-21
| | | | | | | | | | | | | | | | | | matchparen: do not use hard-coded match id (vim/vim#13393) * matchparen: do not use hard-coded match id Instead of using the hard-coded match id 3, which may also be used by other plugins, let the matchparen plugin use whatever ids are automatically returned when calling matchaddpos(). For backwards-compatibility, keep the `:3match` call, which will still use the hard-coded id 3 (as mentioned in :h :3match). closes: vim/vim#13381 https://github.com/vim/vim/commit/d3e277f279ed628809eb6857ea3ebcfca566ca2a Co-authored-by: Christian Brabandt <cb@256bit.org>
* vim-patch:ba77bbb5c775zeertzjq2023-10-03
| | | | | | | | | | | | runtime(doc): fix typos. * Fix typo in document (Related: vim/vim#12516) * Fix E1363 duplication * Fix one more typo. https://github.com/vim/vim/commit/ba77bbb5c775663a8b55871f753d7b1b570bb9ba Co-authored-by: h_east <h.east.727@gmail.com>
* fix(docs): match DocSearch style with site themeJustin M. Keyes2023-07-08
| | | | ref https://github.com/neovim/neovim.github.io/commit/2b4f9e47809c16743f7d31d0dc1f1e3c2f313a56
* fix(docs): vimdoc syntax errorsJustin M. Keyes2023-06-22
| | | | | | Since https://github.com/neovim/tree-sitter-vimdoc/pull/97 the many cases of *.foo cause parser errors. But even before that, these were erroneously highlighted as (argument), so fixing them is good.
* docs #24061Justin M. Keyes2023-06-19
| | | | | | | | | | | | | | - nvim requires rpc responses in reverse order. https://github.com/neovim/neovim/issues/19932 - NVIM_APPNAME: UIs normally should NOT set this. ref #23520 fix #24050 fix #23660 fix #23353 fix #23337 fix #22213 fix #19161 fix #18088 fix #20693
* vim-patch:partial:938ae280c79b (#22356)zeertzjq2023-02-21
| | | | | | | | | | | | Update runtime files. https://github.com/vim/vim/commit/938ae280c79b8cdb0fca60336ec4c090ecd8bb5a Partially skip autocmd.txt: needs patch 8.2.5011. Partially skip builtin.txt: needs patch 9.0.0411. Partially skip eval.txt: needs patch 8.2.3783. Cherry-pick :map-meta-keys from patch 9.0.1276. Co-authored-by: Bram Moolenaar <Bram@vim.org>
* vim-patch:8.2.4978: no error if engine selection atom is not at the startzeertzjq2022-11-05
| | | | | | | | | Problem: No error if engine selection atom is not at the start. Solution: Give an error. (Christian Brabandt, closes vim/vim#10439) https://github.com/vim/vim/commit/360da40b47a84ee8586c3b5d062f8c64a2ac9cc6 Co-authored-by: Christian Brabandt <cb@256bit.org>
* feat(defaults): search selection by * and # in visual mode (#18538)yamatsum2022-05-13
|
* docs(pattern.txt): cherry-pick latests changes from Vim runtime updateszeertzjq2022-03-30
| | | | | | | | | | | | | | Update runtime files https://github.com/vim/vim/commit/53f7fccc9413c9f770694b56f40f242d383b2d5f Update runtime files https://github.com/vim/vim/commit/2286304cdbba53ceb52b3ba2ba4a521b0a2f8d0f Update runtime files https://github.com/vim/vim/commit/2f0936cb9a2eb026acac03e6a8fd0b2a5d97508b Update runtime files. https://github.com/vim/vim/commit/a2baa73d1d33014adea0fd9567949089ca21a782
* vim-patch:8.2.3110: a pattern that matches the cursor position is complicatedzeertzjq2022-03-30
| | | | | | | | | Problem: A pattern that matches the cursor position is bit complicated. Solution: Use a dot to indicate the cursor line and column. (Christian Brabandt, closes vim/vim#8497, closes vim/vim#8179) https://github.com/vim/vim/commit/04db26b36000a4677b95403ec94bd11f6cc73975 Also use `n = ++vcol` in regexp_bt.c as `++vcol` alone fails lint.
* vim-patch:partial 1588bc8ebee2 (#17657)Sean Dewar2022-03-09
| | | | | | | | | | Update runtime files https://github.com/vim/vim/commit/1588bc8ebee22f2855f27273fc2234fff370f86c docs only skip :argdedupe changes (need v8.2.3888) skip sound_playfile changes (need +sound) skip fuzzy-matching changes in *command-attributes* (need #17536)
* vim-patch:c51cf0329809 (#17530)Christian Clason2022-02-27
| | | | Update runtime files. https://github.com/vim/vim/commit/c51cf0329809c7ae946c59d6f56699227efc9d1b
* docs(fuzzy-match): cherry-pick latest changesSean Dewar2022-02-07
| | | | | | | https://github.com/vim/vim/commit/53f7fccc9413c9f770694b56f40f242d383b2d5f https://github.com/vim/vim/commit/1b884a0053982335f644eec6c71027706bf3c522 https://github.com/vim/vim/commit/4c295027a426986566cd7a76c47a6d3a529727e7 https://github.com/vim/vim/commit/3ec3217f0491e9ba8aa8ea02f7e454cd19a287ef
* vim-patch:2f0936cb9a2e (#17007)Christian Clason2022-01-11
| | | | | | * vim-patch:2f0936cb9a2e Update runtime files https://github.com/vim/vim/commit/2f0936cb9a2eb026acac03e6a8fd0b2a5d97508b
* vim-patch:2286304cdbbaChristian Clason2021-10-16
| | | | | Update runtime files https://github.com/vim/vim/commit/2286304cdbba53ceb52b3ba2ba4a521b0a2f8d0f
* vim-patch:partial 2346a6378483 (#15599)Christian Clason2021-09-09
| | | | | | | | | | | | Update runtime files https://github.com/vim/vim/commit/2346a6378483c9871016f9fc821ec5cbea638f13 omit doc/vim.man omit doc/vim9.txt omit doc/vimdiff.txt omit doc/vimdiff.man skip doc/eval.txt (missing patch 8.2.2324) skip doc/help.txt (missing patch 8.2.2344)
* vim-patch:9faec4e3d439Jan Edmund Lazo2021-05-02
| | | | | | | Update runtime files. https://github.com/vim/vim/commit/9faec4e3d439968e21ad74e917aebb289df8f849 Omit vim9.
* vim-patch:82be4849eed0Jan Edmund Lazo2021-05-01
| | | | | Update runtime files. https://github.com/vim/vim/commit/82be4849eed0b8fbee45bc8da99b685ec89af59a
* vim-patch:7e6a515ed14eJan Edmund Lazo2021-05-01
| | | | | | | Update runtime files. https://github.com/vim/vim/commit/7e6a515ed14e204fafb3dd6e98f2fb543e64aedd Omit vim9.
* vim-patch:1b884a005398Jan Edmund Lazo2021-05-01
| | | | | | | | Update runtime files. https://github.com/vim/vim/commit/1b884a0053982335f644eec6c71027706bf3c522 Omit doc/autocmd.txt. Omit tools/emoji_list.vim. Patch v8.2.1540 is not ported.
* vim-patch:1c6737b20a5cJan Edmund Lazo2021-04-29
| | | | | Update runtime files. https://github.com/vim/vim/commit/1c6737b20a5cf71751b180461cea22fc76d8870c
* vim-patch:207f009326c8Jan Edmund Lazo2021-04-29
| | | | | | | Update runtime files. https://github.com/vim/vim/commit/207f009326c8f878defde0e594d7d9ed9860106e Omit nl.po.