)]}'
{
  "log": [
    {
      "commit": "a9657c895277fe7231f5b7d9e1c755f804fddc1c",
      "tree": "1fe2af6589e5770d121ddb52064d6a8e645d51ba",
      "parents": [
        "532a5fb13121fe849b83f77a3c1d62c95af4cdce"
      ],
      "author": {
        "name": "John Marriott",
        "email": "basilisk@internode.on.net",
        "time": "Thu Jun 12 21:37:18 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Jun 12 21:37:18 2025 +0200"
      },
      "message": "patch 9.1.1457: compile warning with tabpanelopt\n\nProblem:  compile warning with tabpanelopt\nSolution: declare arg as UNUSED (John Marriott)\n\ncloses: #17528\n\nSigned-off-by: John Marriott \u003cbasilisk@internode.on.net\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "8cc6d8b187d53c70c5fdc8fb83d4d3cef35e6d44",
      "tree": "8586f2497837123fefd1cc28af521e262df860c1",
      "parents": [
        "647d7f738954c87666a182afbaf24af17402a064"
      ],
      "author": {
        "name": "Luuk van Baal",
        "email": "luukvbaal@gmail.com",
        "time": "Sat May 31 12:10:31 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat May 31 12:10:31 2025 +0200"
      },
      "message": "patch 9.1.1419: It is difficult to ignore all but some events\n\nProblem:  It is difficult to ignore all but some events.\nSolution: Add support for a \"-\" prefix syntax in \u0027(win)eventignore\u0027 that\n          subtracts an event from the ignored set if present\n          (Luuk van Baal).\n\ncloses: #17392\n\nSigned-off-by: Luuk van Baal \u003cluukvbaal@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "14f6da5ba8d602263fc7bf6cb899c8520f4c3060",
      "tree": "d0b00e7cd53122216200967bcdd6301b1301c7ee",
      "parents": [
        "0546068aaef2b1a40faa2945ef7eba249739f219"
      ],
      "author": {
        "name": "Girish Palya",
        "email": "girishji@gmail.com",
        "time": "Mon May 26 19:04:25 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon May 26 19:04:25 2025 +0200"
      },
      "message": "patch 9.1.1409: using f-flag in \u0027complete\u0027 conflicts with Neovim\n\nProblem:  using f-flag in \u0027complete\u0027 conflicts with Neovims filename\n          completion (glepnir, after v9.1.1301).\nSolution: use upper-case \"F\" flag for completion functions\n          (Girish Palya).\n\nfixes: #17347\ncloses: #17378\n\nSigned-off-by: Girish Palya \u003cgirishji@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "598bbb194163931914c45ae1fa4268e589ef3763",
      "tree": "f4422325287de6c72e824e4fe05d36606222d381",
      "parents": [
        "5b07aff2f665f290f2ec4a5e6bcf9873a178149a"
      ],
      "author": {
        "name": "Hirohito Higashi",
        "email": "h.east.727@gmail.com",
        "time": "Thu May 22 22:41:05 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu May 22 22:41:05 2025 +0200"
      },
      "message": "patch 9.1.1403: expansion of \u0027tabpanelopt\u0027 value adds wrong values\n\nProblem:  expansion of \u0027tabpanelopt\u0027 value adds wrong values\n          (Shane-XB-Qian, after v9.1.1391)\nSolution: update tabpanelopt expansion function and expand only valid\n          values (Hirohito Higashi)\n\nrelated: #17263\ncloses: #17359\n\nSigned-off-by: Hirohito Higashi \u003ch.east.727@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "2a1e253e266b62445e0087508109c41c41052a87",
      "tree": "0dc8a8ed2e6dd1ac3c932b72a9dba34a92d567f2",
      "parents": [
        "7b9eb6389d693dafcd502cda2ffc62564a2dbba9"
      ],
      "author": {
        "name": "Naruhiko Nishino",
        "email": "naru123456789@gmail.com",
        "time": "Sat May 17 16:19:24 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat May 17 16:19:24 2025 +0200"
      },
      "message": "patch 9.1.1397: tabpanel not correctly updated on :tabonly\n\nProblem:  tabpanel not correctly updated on :tabonly\n          (Maxim Kim)\nSolution: force a redraw, take \u0027equalalways\u0027 into account\n          (Naruhiko Nishino)\n\nrelated: https://github.com/vim/vim/pull/17330#issuecomment-2888146370\ncloses: #17337\n\nSigned-off-by: Naruhiko Nishino \u003cnaru123456789@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "7b9eb6389d693dafcd502cda2ffc62564a2dbba9",
      "tree": "9bd235226ee20fb8878d96c3b6cd25330670edb2",
      "parents": [
        "670d0c1468b7ece958acf3b03de9e202e612804a"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Fri May 16 19:49:23 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri May 16 19:49:23 2025 +0200"
      },
      "message": "patch 9.1.1396: \u0027errorformat\u0027 is a global option\n\nProblem:  The \u0027grepformat\u0027 option is global option, but it would be\n          useful to have it buffer-local, similar to \u0027errorformat\u0027 and\n          other quickfix related options (Dani Dickstein)\nSolution: Add the necessary code to support global-local \u0027grepformat\u0027,\n          allowing different buffers to parse different grep output\n          formats (glepnir)\n\nfixes: #17316\ncloses: #17315\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "be5bd4d6292fddcc103091407792730aaa48cc48",
      "tree": "1b0b08fb9351e68a60912ea595502368360fa7d3",
      "parents": [
        "7200eae2126afd4518244c2d70638a7d8d64b26f"
      ],
      "author": {
        "name": "Naruhiko Nishino",
        "email": "naru123456789@gmail.com",
        "time": "Wed May 14 21:20:28 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed May 14 21:20:28 2025 +0200"
      },
      "message": "patch 9.1.1391: Vim does not have a vertical tabpanel\n\nProblem:  Vim does not have a tabpanel\nSolution: include the tabpanel feature\n          (Naruhiko Nishino, thinca)\n\ncloses: #17263\n\nCo-authored-by: thinca \u003cthinca@gmail.com\u003e\nSigned-off-by: Naruhiko Nishino \u003cnaru123456789@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "e89aef3f65388a8b627c77f250525f2a264716c5",
      "tree": "6d97861e60b1e2bb2ee127d73ca10ed3b294d922",
      "parents": [
        "08db2f4f287722d8fcdc00ab6ca9a1b07ec5faaa"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Wed May 14 20:31:55 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed May 14 20:31:55 2025 +0200"
      },
      "message": "patch 9.1.1390: style: more wrong indentation\n\nProblem:  style: more wrong indentation\nSolution: reformat a few more places\n          (Yegappan Lakshmanan)\n\ncloses: #17309\n\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "bcd5995b40a1c26e735bc326feb2e3ac4b05426b",
      "tree": "9f330cbf18b1a36c69695b77b4f2d005559900e1",
      "parents": [
        "32f49738d1807b1553d1fbd2f5d1b0b4849dbcb5"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Thu Apr 24 21:48:35 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Apr 24 21:48:35 2025 +0200"
      },
      "message": "patch 9.1.1341: cannot define completion triggers\n\nProblem:  Cannot define completion triggers and act upon it\nSolution: add the new option \u0027isexpand\u0027 and add the complete_match()\n          function to return the completion matches according to the\n          \u0027isexpand\u0027 setting (glepnir)\n\nCurrently, completion trigger position is determined solely by the\n\u0027iskeyword\u0027 pattern (\\k\\+$), which causes issues when users need\ndifferent completion behaviors - such as triggering after \u0027/\u0027 for\ncomments or \u0027.\u0027 for methods. Modifying \u0027iskeyword\u0027 to include these\ncharacters has undesirable side effects on other Vim functionality that\nrelies on keyword definitions.\n\nIntroduce a new buffer-local option \u0027isexpand\u0027 that allows specifying\ndifferent completion triggers and add the complete_match() function that\nfinds the appropriate start column for completion based on these\ntriggers, scanning backwards from cursor position.\n\nThis separation of concerns allows customized completion behavior\nwithout affecting iskeyword-dependent features. The option\u0027s\nbuffer-local nature enables per-filetype completion triggers.\n\ncloses: #16716\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "0ac1eb3555445f4c458c06cef7c411de1c8d1020",
      "tree": "634a38537fa64fef07cee982f44f886e400f5345",
      "parents": [
        "1c2b25825037bf83862f7af71ce9177cf949daca"
      ],
      "author": {
        "name": "Girish Palya",
        "email": "girishji@gmail.com",
        "time": "Wed Apr 16 20:18:33 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Apr 16 20:18:33 2025 +0200"
      },
      "message": "patch 9.1.1311: completion: not possible to limit number of matches\n\nProblem:  completion: not possible to limit number of matches\nSolution: allow to limit the matches for \u0027complete\u0027 sources by using the\n          \"{flag}^{limit}\" notation (Girish Palya)\n\nThis change extends the \u0027complete\u0027  option to support limiting the\nnumber of matches returned from individual completion sources.\n\n**Rationale:** In large files, certain sources (such as the current\nbuffer) can generate an overwhelming number of matches, which may cause\nmore relevant results from other sources (e.g., LSP or tags) to be\npushed out of view. By specifying per-source match limits, the\ncompletion menu remains balanced and diverse, improving visibility and\nrelevance of suggestions.\n\nA caret (`^`) followed by a number can be appended to a source flag to\nspecify the maximum number of matches for that source. For example:\n```\n  :set complete\u003d.^9,w,u,t^5\n```\nIn this configuration:\n- The current buffer (`.`) will return up to 9 matches.\n- The tag completion (`t`) will return up to 5 matches.\n- Other sources (`w`, `u`) are not limited.\n\nThis feature is fully backward-compatible and does not affect behavior\nwhen the `^count` suffix is not used.\n\nThe caret (`^`) was chosen as the delimiter because it is least likely\nto appear in file names.\n\ncloses: #17087\n\nSigned-off-by: Girish Palya \u003cgirishji@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "b156588eb707a084bbff8685953a8892e1e45bca",
      "tree": "8496f8a641a9d64667b9500504334e13fde585ea",
      "parents": [
        "f35bd76b31e6cd62bcc47e401887059b8503c5cc"
      ],
      "author": {
        "name": "Girish Palya",
        "email": "girishji@gmail.com",
        "time": "Tue Apr 15 20:16:00 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 15 20:16:00 2025 +0200"
      },
      "message": "patch 9.1.1308: completion: cannot order matches by distance to cursor\n\nProblem:  During insert-mode completion, the most relevant match is often\n          the one closest to the cursor—frequently just above the current line.\n          However, both `\u003cC-N\u003e` and `\u003cC-P\u003e` tend to rank candidates from the\n          current buffer that appear above the cursor near the bottom of the\n          completion menu, rather than near the top. This ordering can feel\n          unintuitive, especially when `noselect` is active, as it doesn\u0027t\n          prioritize the most contextually relevant suggestions.\n\nSolution: This change introduces a new sub-option value \"nearest\" for the\n          \u0027completeopt\u0027 setting. When enabled, matches from the current buffer\n          are prioritized based on their proximity to the cursor position,\n          improving the relevance of suggestions during completion\n          (Girish Palya).\n\nKey Details:\n- Option: \"nearest\" added to \u0027completeopt\u0027\n- Applies to: Matches from the current buffer only\n- Effect: Sorts completion candidates by their distance from the cursor\n- Interaction with other options:\n  - Has no effect if the `fuzzy` option is also present\n\nThis feature is helpful especially when working within large buffers where\nmultiple similar matches may exist at different locations.\n\nYou can test this feature with auto-completion using the snippet below. Try it\nin a large file like `vim/src/insexpand.c`, where you\u0027ll encounter many\npotential matches. You\u0027ll notice that the popup menu now typically surfaces the\nmost relevant matches—those closest to the cursor—at the top. Sorting by\nspatial proximity (i.e., contextual relevance) often produces more useful\nmatches than sorting purely by lexical distance (\"fuzzy\").\n\nAnother way to sort matches is by recency, using an LRU (Least Recently Used)\ncache—essentially ranking candidates based on how recently they were used.\nHowever, this is often overkill in practice, as spatial proximity (as provided\nby the \"nearest\" option) is usually sufficient to surface the most relevant\nmatches.\n\n```vim\nset cot\u003dmenuone,popup,noselect,nearest inf\n\ndef SkipTextChangedIEvent(): string\n    # Suppress next event caused by \u003cc-e\u003e (or \u003cc-n\u003e when no matches found)\n    set eventignore+\u003dTextChangedI\n    timer_start(1, (_) \u003d\u003e {\n        set eventignore-\u003dTextChangedI\n    })\n    return \u0027\u0027\nenddef\n\nautocmd TextChangedI * InsComplete()\n\ndef InsComplete()\n    if getcharstr(1) \u003d\u003d \u0027\u0027 \u0026\u0026 getline(\u0027.\u0027)-\u003estrpart(0, col(\u0027.\u0027) - 1) \u003d~ \u0027\\k$\u0027\n        SkipTextChangedIEvent()\n        feedkeys(\"\\\u003cc-n\u003e\", \"n\")\n    endif\nenddef\n\ninoremap \u003csilent\u003e \u003cc-e\u003e \u003cc-r\u003e\u003d\u003cSID\u003eSkipTextChangedIEvent()\u003ccr\u003e\u003cc-e\u003e\n\ninoremap \u003csilent\u003e\u003cexpr\u003e \u003ctab\u003e   pumvisible() ? \"\\\u003cc-n\u003e\" : \"\\\u003ctab\u003e\"\ninoremap \u003csilent\u003e\u003cexpr\u003e \u003cs-tab\u003e pumvisible() ? \"\\\u003cc-p\u003e\" : \"\\\u003cs-tab\u003e\"\n```\n\ncloses: #17076\n\nSigned-off-by: Girish Palya \u003cgirishji@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "cbe53191d01926c045a39198b3a9517e3c5077d2",
      "tree": "94d68db50465b3a99024111fc1f2d185b4ce32a7",
      "parents": [
        "10f69298b4577b3712eedeb49b4d9ad1a69111f8"
      ],
      "author": {
        "name": "Girish Palya",
        "email": "girishji@gmail.com",
        "time": "Mon Apr 14 22:13:15 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Apr 14 22:13:15 2025 +0200"
      },
      "message": "patch 9.1.1301: completion: cannot configure completion functions with \u0027complete\u0027\n\nProblem:  completion: cannot configure completion functions with\n          \u0027complete\u0027\nSolution: add support for setting completion functions using the f and o\n          flag for \u0027complete\u0027 (Girish Palya)\n\nThis change adds two new values to the `\u0027complete\u0027` (`\u0027cpt\u0027`) option:\n- `f` – invokes the function specified by the `\u0027completefunc\u0027` option\n- `f{func}` – invokes a specific function `{func}` (can be a string or `Funcref`)\n\nThese new flags extend keyword completion behavior (e.g., via `\u003cC-N\u003e` /\n`\u003cC-P\u003e`) by allowing function-based sources to participate in standard keyword\ncompletion.\n\n**Key behaviors:**\n\n- Multiple `f{func}` values can be specified, and all will be called in order.\n- Functions should follow the interface defined in `:help complete-functions`.\n- When using `f{func}`, escaping is required for spaces (with `\\`) and commas\n  (with `\\\\`) in `Funcref` names.\n- If a function sets `\u0027refresh\u0027` to `\u0027always\u0027`, it will be re-invoked on every\n  change to the input text. Otherwise, Vim will attempt to reuse and filter\n  existing matches as the input changes, which matches the default behavior of\n  other completion sources.\n- Matches are inserted at the keyword boundary for consistency with other completion methods.\n- If finding matches is time-consuming, `complete_check()` can be used to\n  maintain responsiveness.\n- Completion matches are gathered in the sequence defined by the `\u0027cpt\u0027`\n  option, preserving source priority.\n\nThis feature increases flexibility of standard completion mechanism and may\nreduce the need for external completion plugins for many users.\n\n**Examples:**\n\nComplete matches from [LSP](https://github.com/yegappan/lsp) client. Notice the use of `refresh: always` and `function()`.\n\n```vim\nset cpt+\u003dffunction(\"g:LspCompletor\"\\\\,\\ [5]). # maxitems \u003d 5\n\ndef! g:LspCompletor(maxitems: number, findstart: number, base: string): any\n    if findstart \u003d\u003d 1\n        return g:LspOmniFunc(findstart, base)\n    endif\n    return {words: g:LspOmniFunc(findstart, base)-\u003eslice(0, maxitems), refresh: \u0027always\u0027}\nenddef\nautocmd VimEnter * g:LspOptionsSet({ autoComplete: false, omniComplete: true })\n```\n\nComplete matches from `:iabbrev`.\n\n```vim\nset cpt+\u003dfAbbrevCompletor\n\ndef! g:AbbrevCompletor(findstart: number, base: string): any\n    if findstart \u003e 0\n        var prefix \u003d getline(\u0027.\u0027)-\u003estrpart(0, col(\u0027.\u0027) - 1)-\u003ematchstr(\u0027\\S\\+$\u0027)\n        if prefix-\u003eempty()\n            return -2\n        endif\n        return col(\u0027.\u0027) - prefix-\u003elen() - 1\n    endif\n    var lines \u003d execute(\u0027ia\u0027, \u0027silent!\u0027)\n    if lines \u003d~? gettext(\u0027No abbreviation found\u0027)\n        return v:none  # Suppresses warning message\n    endif\n    var items \u003d []\n    for line in lines-\u003esplit(\"\\n\")\n        var m \u003d line-\u003ematchlist(\u0027\\v^i\\s+\\zs(\\S+)\\s+(.*)$\u0027)\n        if m-\u003elen() \u003e 2 \u0026\u0026 m[1]-\u003estridx(base) \u003d\u003d 0\n            items-\u003eadd({ word: m[1], info: m[2], dup: 1 })\n        endif\n    endfor\n    return items-\u003eempty() ? v:none :\n        items-\u003esort((v1, v2) \u003d\u003e v1.word \u003c v2.word ? -1 : v1.word \u003d\u003d# v2.word ? 0 : 1)\nenddef\n```\n\n**Auto-completion:**\n\nVim\u0027s standard completion frequently checks for user input while searching for\nnew matches. It is responsive irrespective of file size. This makes it\nwell-suited for smooth auto-completion. You can try with above examples:\n\n```vim\nset cot\u003dmenuone,popup,noselect inf\n\nautocmd TextChangedI * InsComplete()\n\ndef InsComplete()\n    if getcharstr(1) \u003d\u003d \u0027\u0027 \u0026\u0026 getline(\u0027.\u0027)-\u003estrpart(0, col(\u0027.\u0027) - 1) \u003d~ \u0027\\k$\u0027\n        SkipTextChangedIEvent()\n        feedkeys(\"\\\u003cc-n\u003e\", \"n\")\n    endif\nenddef\n\ninoremap \u003csilent\u003e \u003cc-e\u003e \u003cc-r\u003e\u003d\u003cSID\u003eSkipTextChangedIEvent()\u003ccr\u003e\u003cc-e\u003e\n\ndef SkipTextChangedIEvent(): string\n    # Suppress next event caused by \u003cc-e\u003e (or \u003cc-n\u003e when no matches found)\n    set eventignore+\u003dTextChangedI\n    timer_start(1, (_) \u003d\u003e {\n        set eventignore-\u003dTextChangedI\n    })\n    return \u0027\u0027\nenddef\n```\n\ncloses: #17065\n\nCo-authored-by: Christian Brabandt \u003ccb@256bit.org\u003e\nCo-authored-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nCo-authored-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Girish Palya \u003cgirishji@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "9943d4790e42721a6777da9e12637aa595ba4965",
      "tree": "39f6663c2b7850949dd2d74a19b3a37412229947",
      "parents": [
        "06774a271a7d728f188175340154361255d6b0a4"
      ],
      "author": {
        "name": "Yee Cheng Chin",
        "email": "ychin.git@gmail.com",
        "time": "Wed Mar 26 19:41:02 2025 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Mar 26 19:46:09 2025 +0100"
      },
      "message": "patch 9.1.1243: diff mode is lacking for changes within lines\n\nProblem:  Diff mode\u0027s inline highlighting is lackluster. It only\n          performs a line-by-line comparison, and calculates a single\n          shortest range within a line that could encompass all the\n          changes. In lines with multiple changes, or those that span\n          multiple lines, this approach tends to end up highlighting\n          much more than necessary.\n\nSolution: Implement new inline highlighting modes by doing per-character\n          or per-word diff within the diff block, and highlight only the\n          relevant parts, add \"inline:simple\" to the defaults (which is\n          the old behaviour)\n\nThis change introduces a new diffopt option \"inline:\u003ctype\u003e\". Setting to\n\"none\" will disable all inline highlighting, \"simple\" (the default) will\nuse the old behavior, \"char\" / \"word\" will perform a character/word-wise\ndiff of the texts within each diff block and only highlight the\ndifferences.\n\nThe new char/word inline diff only use the internal xdiff, and will\nrespect diff options such as algorithm choice, icase, and misc iwhite\noptions. indent-heuristics is always on to perform better sliding.\n\nFor character highlight, a post-process of the diff results is first\napplied before we show the highlight. This is because a naive diff will\ncreate a result with a lot of small diff chunks and gaps, due to the\nrepetitive nature of individual characters. The post-process is a\nheuristic-based refinement that attempts to merge adjacent diff blocks\nif they are separated by a short gap (1-3 characters), and can be\nfurther tuned in the future for better results. This process results in\nmore characters than necessary being highlighted but overall less visual\nnoise.\n\nFor word highlight, always use first buffer\u0027s iskeyword definition.\nOtherwise if each buffer has different iskeyword settings we would not\nbe able to group words properly.\n\nThe char/word diffing is always per-diff block, not per line, meaning\nthat changes that span multiple lines will show up correctly.\nAdded/removed newlines are not shown by default, but if the user has\n\u0027list\u0027 set (with \"eol\" listchar defined), the eol character will be be\nhighlighted correctly for the specific newline characters.\n\nAlso, add a new \"DiffTextAdd\" highlight group linked to \"DiffText\" by\ndefault. It allows color schemes to use different colors for texts that\nhave been added within a line versus modified.\n\nThis doesn\u0027t interact with linematch perfectly currently. The linematch\nfeature splits up diff blocks into multiple smaller blocks for better\nvisual matching, which makes inline highlight less useful especially for\nmulti-line change (e.g. a line is broken into two lines). This could be\naddressed in the future.\n\nAs a side change, this also removes the bounds checking introduced to\ndiff_read() as they were added to mask existing logic bugs that were\nproperly fixed in #16768.\n\ncloses: #16881\n\nSigned-off-by: Yee Cheng Chin \u003cychin.git@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "53d59ecc1d93ce3a3f6d0182479d825852018ceb",
      "tree": "0250bec4c8e1acc8bd6bd210068d8c0b5256ad74",
      "parents": [
        "4422de6316b544c282e6c74afd3df3ee3a4b1cfd"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Fri Mar 07 19:09:09 2025 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Mar 07 19:09:09 2025 +0100"
      },
      "message": "patch 9.1.1182: No cmdline completion for \u0027completefuzzycollect\u0027\n\nProblem:  No cmdline completion for the \u0027completefuzzycollect\u0027 option\n          (after v9.1.1178)\nSolution: Add cmdline completion for the \u0027completefuzzycollect\u0027 option,\n          improve its description in optwin.vim (zeertzjq).\n\ncloses: #16813\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "f31cfa29bf72b0cdf6fa1b60346ea4e187bcafd1",
      "tree": "3a90995491ec525337ab81e08080bf3a587fddfa",
      "parents": [
        "25e833f4ec3de8e7286cd5a43d031ba7064c9f9a"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Thu Mar 06 21:59:13 2025 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Mar 06 21:59:13 2025 +0100"
      },
      "message": "patch 9.1.1178: not possible to generate completion candidates using fuzzy matching\n\nProblem:  not possible to generate completion candidates using fuzzy\n          matching\nSolution: add the \u0027completefuzzycollect\u0027 option for (some) ins-completion\n          modes (glepnir)\n\nfixes #15296\nfixes #15295\nfixes #15294\ncloses: #16032\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "2bacc3e5fb3569e0fd98e129cb1e422ca18b80a6",
      "tree": "9fbccf80d4f977be4cf2739a1e1b744e2470ad19",
      "parents": [
        "a250738303f85132335d69fd1936501b189eebce"
      ],
      "author": {
        "name": "Girish Palya",
        "email": "girishji@gmail.com",
        "time": "Sun Mar 02 22:55:57 2025 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Mar 02 23:02:42 2025 +0100"
      },
      "message": "patch 9.1.1166: command-line auto-completion hard with wildmenu\n\nProblem:  command-line auto-completion hard with wildmenu\nSolution: implement \"noselect\" wildoption value (Girish Palya)\n\nWhen `noselect` is present in `wildmode` and \u0027wildmenu\u0027 is enabled, the\ncompletion menu appears without pre-selecting the first item.\n\nThis change makes it easier to implement command-line auto-completion,\nwhere the menu dynamically appears as characters are typed, and `\u003cTab\u003e`\ncan be used to manually select an item. This can be achieved by\nleveraging the `CmdlineChanged` event to insert `wildchar(m)`,\ntriggering completion menu.\n\nWithout this change, auto-completion using the \u0027wildmenu\u0027 mechanism is\nnot feasible, as it automatically inserts the first match, preventing\ndynamic selection.\n\nThe following Vimscript snippet demonstrates how to configure\nauto-completion using `noselect`:\n\n```vim\nvim9script\nset wim\u003dnoselect:lastused,full wop\u003dpum wcm\u003d\u003cC-@\u003e wmnu\nautocmd CmdlineChanged : timer_start(0, function(CmdComplete, [getcmdline()]))\n\ndef CmdComplete(cur_cmdline: string, timer: number)\n  var [cmdline, curpos] \u003d [getcmdline(), getcmdpos()]\n  if cur_cmdline \u003d\u003d# cmdline  # Avoid completing each character in keymaps and pasted text\n    \u0026\u0026 !pumvisible() \u0026\u0026 curpos \u003d\u003d cmdline-\u003elen() + 1\n\n    if cmdline[curpos - 2] \u003d~ \u0027[\\w*/:]\u0027  # Reduce noise by completing only selected characters\n      feedkeys(\"\\\u003cC-@\u003e\", \"ti\")\n      set eventignore+\u003dCmdlineChanged  # Suppress redundant completion attempts\n      timer_start(0, (_) \u003d\u003e {\n        getcmdline()-\u003esubstitute(\u0027\\%x00$\u0027, \u0027\u0027, \u0027\u0027)-\u003esetcmdline()  # Remove \u003cC-@\u003e if no completion items exist\n        set eventignore-\u003dCmdlineChanged\n      })\n    endif\n  endif\nenddef\n```\n\nfixes: #16551\ncloses: #16759\n\nSigned-off-by: Girish Palya \u003cgirishji@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "1a741d3cb8ff3bf1a7097a63bc70c537655d190d",
      "tree": "866c5828cae39edc39e272a47e3328839be916a4",
      "parents": [
        "7003a5d63f099671886c235a83b3e4fb36fb6370"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Mar 01 16:30:33 2025 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Mar 01 16:30:33 2025 +0100"
      },
      "message": "patch 9.1.1163: $MYVIMDIR is set too late\n\nProblem:  $MYVIMDIR is set too late and not available while sourcing\n          runtime files (Maxim Kim, after v9.1.1159)\nSolution: Also set it when $MYVIMRC file is found\n\nfixes: #16764\ncloses: #16767\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "3e2affc324034085a98356003b226bd4a6f6c1ad",
      "tree": "e6c4b53f2c0460dd52a3d687dc8f75903b7936e5",
      "parents": [
        "5e8b2268e180cbf5079ea6dbe9c8fd29c3e3133c"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Feb 28 17:34:46 2025 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Feb 28 17:34:46 2025 +0100"
      },
      "message": "patch 9.1.1159: $MYVIMDIR may not always be set\n\nProblem:  $MYVIMDIR may not always be set (after 9.1.0718)\n          (sandwm)\nSolution: always set $MYVIMDIR to first item in runtimepath\n          (except when using --clean), update it when changing \u0026rtp\n\nfixes: #16609\ncloses: #16709\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "b7147f8236c962cd74d1ce028d9106f1c449ea6c",
      "tree": "bb956aec8d2570740e6d727edf9f632f8cdb55a9",
      "parents": [
        "a35040f795fbf217b0a1e21b6b3a94ad56c2298b"
      ],
      "author": {
        "name": "Luuk van Baal",
        "email": "luukvbaal@gmail.com",
        "time": "Sat Feb 08 18:52:39 2025 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Feb 08 18:52:39 2025 +0100"
      },
      "message": "patch 9.1.1084: Unable to persistently ignore events in a window and its buffers\n\nProblem:  Unable to persistently ignore events in a window and its buffers.\nSolution: Add \u0027eventignorewin\u0027 option to ignore events in a window and buffer\n          (Luuk van Baal)\n\nAdd the window-local \u0027eventignorewin\u0027 option that is analogous to\n\u0027eventignore\u0027, but applies to a certain window and its buffers. Identify\nevents that should be allowed in \u0027eventignorewin\u0027, adapt \"auto_event\"\nand \"event_tab\" to encode this information. Window context is not passed\nonto apply_autocmds_group(), and when to ignore an event is a bit\nambiguous when \"buf\" is not \"curbuf\", rather than a large refactor, only\nignore an event when all windows into \"buf\" are ignoring the event.\n\ncloses: #16530\n\nSigned-off-by: Luuk van Baal \u003cluukvbaal@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "edd4ac3e895ce16034c7e098f1d68e0155d97886",
      "tree": "8001ae9e6e06e1ea3d81face47cf06cc3419142c",
      "parents": [
        "ec961b05dcc1efb0a234f6d0b31a0945517e75d2"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Wed Jan 29 18:53:51 2025 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Jan 29 18:58:04 2025 +0100"
      },
      "message": "patch 9.1.1056: Vim doesn\u0027t highlight to be inserted text when completing\n\nProblem:  Vim doesn\u0027t highlight to be inserted text when completing\nSolution: Add support for the \"preinsert\" \u0027completeopt\u0027 value\n          (glepnir)\n\nSupport automatically inserting the currently selected candidate word\nthat does not belong to the latter part of the leader.\n\nfixes: #3433\ncloses: #16403\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "f400a0cc41113eb75516bdd7f38aeaa15208ba2c",
      "tree": "3e5cb9fac67a4c79decf26ea8a91e1769108453a",
      "parents": [
        "df098fedbc2c481e91ea7e6207dab90359a92cc3"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Thu Jan 23 19:55:14 2025 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Jan 23 19:59:28 2025 +0100"
      },
      "message": "patch 9.1.1049: insert-completed items are always sorted\n\nProblem:  insert-completed items are always sorted, although the LSP\n          spec[1] standard defines sortText in the returned\n          completionitem list. This means that the server has sorted the\n          results. When fuzzy is enabled, this will break the server\u0027s\n          sorting results.\nSolution: disable sorting of candidates when \"nosort\" is set in\n          \u0027completeopt\u0027\n\n[1]\nhttps://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#completionItem\n\ncloses: #16501\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "9162e636b31dcac57876cbdec15a683cedd9760e",
      "tree": "0b5902d2c7221590a5b848aed4abf4095ec1b55f",
      "parents": [
        "70dfc374ec72634a0a61aea8344178779675d516"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Jan 16 19:03:40 2025 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Jan 16 19:03:40 2025 +0100"
      },
      "message": "patch 9.1.1022: linematch option value not completed\n\nProblem:  linematch option value not completed\n          (after v9.1.1009)\nSolution: Update diffoption completion values\n\nrelated: #9661\ncloses: #16437\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "8cc43daee1f485c9abf1de3c638cce7835b9f861",
      "tree": "92d6cf1f0dea6e6f050e32673524faa9810babc1",
      "parents": [
        "d9e9f89e0ffd6e7ce5e2a7f8f1ace5471e37c210"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Sat Dec 07 16:09:08 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Dec 07 16:09:08 2024 +0100"
      },
      "message": "patch 9.1.0911: Variable name for \u0027messagesopt\u0027 doesn\u0027t match short name\n\nProblem:  Variable name for \u0027messagesopt\u0027 doesn\u0027t match short name\n          (after v9.1.0908)\nSolution: Change p_meo to p_mopt.  Add more details to docs.\n          (zeertzjq)\n\ncloses: #16182\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "51d4d84d6a7159c6ce9e04b36f8edc105ca3794b",
      "tree": "c0e39a00f278e75af462d1307b70d936ce909aa1",
      "parents": [
        "ee9bc68f03877b2ebffed53b89222b2e4d74a723"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Dec 06 17:26:25 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Dec 06 17:26:25 2024 +0100"
      },
      "message": "patch 9.1.0908: not possible to configure :messages\n\nProblem:  not possible to configure :messages\nSolution: add the \u0027messagesopt\u0027 option (Shougo Matsushita)\n\ncloses: #16068\n\nCo-authored-by: h_east \u003ch.east.727@gmail.com\u003e\nSigned-off-by: Shougo Matsushita \u003cShougo.Matsu@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "ac023e8baae65584537aa3c11494dad6f71770af",
      "tree": "ca4fb561e51fe918a94b862466fb27347ed66958",
      "parents": [
        "7e501f4d9986866382888e67d8f11faf5767c8f4"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Wed Nov 27 20:55:45 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Nov 27 20:55:45 2024 +0100"
      },
      "message": "patch 9.1.0890: %! item not allowed for \u0027rulerformat\u0027\n\nProblem:  %! item not allowed for \u0027rulerformat\u0027\n          (yatinlala)\nSolution: also allow to use %! for rulerformat option\n          (Yegappan Lakshmanan)\n\nfixes: #16091\ncloses: #16118\n\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "46dcd84d242db6b053cb5b777c896cede9ad9b27",
      "tree": "9529b9738d6ba24ffba2f0f600038d9f8b4706d8",
      "parents": [
        "6081c17890fefd9cb9a009beaace3d7f7b8d1605"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Sun Nov 03 09:10:50 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Nov 03 09:10:50 2024 +0100"
      },
      "message": "patch 9.1.0832: :set doesn\u0027t work for \u0027cot\u0027 and \u0027bkc\u0027 after :setlocal\n\nProblem:  :set doesn\u0027t work for \u0027cot\u0027 and \u0027bkc\u0027 after :setlocal.\nSolution: clear the local flags when using :set (zeertzjq).\n\ncloses: #15981\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "a13f3a4f5de9c150f70298850e34747838904995",
      "tree": "a6ed380325af51e922e3a57d48b902fbd625716b",
      "parents": [
        "0b8176dff2dada4be1c8d3ca5e1dd1a7a536b4ca"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Sat Nov 02 18:40:10 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Nov 02 18:43:42 2024 +0100"
      },
      "message": "patch 9.1.0831: \u0027findexpr\u0027 can\u0027t be used as lambad or Funcref\n\nProblem:  \u0027findexpr\u0027 can\u0027t be used for lambads\n          (Justin Keyes)\nSolution: Replace the findexpr option with the findfunc option\n          (Yegappan Lakshmanan)\n\nrelated: #15905\ncloses: #15976\n\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "aeb1c97db5b9de4f4903e7f288f2aa5ad6c49440",
      "tree": "c26a21866f1fbf7d6f1ead889cb9cd652aca75cb",
      "parents": [
        "626b6ab48682b211c22ede5a6e63513c85f93e58"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Tue Oct 22 23:42:20 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Oct 22 23:42:20 2024 +0200"
      },
      "message": "patch 9.1.0810: cannot easily adjust the |:find| command\n\nProblem:  cannot easily adjust the |:find| command\nSolution: Add support for the \u0027findexpr\u0027 option (Yegappan Lakshmanan)\n\ncloses: #15901\ncloses: #15905\n\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "b38700ac81d90a652e5c8495056dd78df5babdde",
      "tree": "070d6df3a74e8ac888d24d89b7ea1d641e9f39f2",
      "parents": [
        "231480f9753fa3fb28e17b670550ce43172c0eba"
      ],
      "author": {
        "name": "Milly",
        "email": "milly.ca@gmail.com",
        "time": "Tue Oct 22 22:59:39 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Oct 22 22:59:39 2024 +0200"
      },
      "message": "patch 9.1.0806: tests: no error check when setting global \u0027briopt\u0027\n\nProblem:  tests: no error check when setting global \u0027briopt\u0027\nSolution: also parse and check global \u0027briopt\u0027 value (Milly)\n\ncloses: #15911\n\nSigned-off-by: Milly \u003cmilly.ca@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "a441a3eaabbfc14b4772e07ecbecaaff3bd06a58",
      "tree": "3e20dbeb47a03922cc788b2efd97f42c3d457b89",
      "parents": [
        "5e7a6a4a106923e45c67dae6810e4c9753f88025"
      ],
      "author": {
        "name": "Milly",
        "email": "milly.ca@gmail.com",
        "time": "Tue Oct 22 22:43:01 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Oct 22 22:43:01 2024 +0200"
      },
      "message": "patch 9.1.0804: tests: no error check when setting global \u0027cc\u0027\n\nProblem:  tests: no error check when setting global \u0027cc\u0027\nSolution: also parse and check global \u0027cc\u0027 value (Milly)\n\ncloses: #15914\n\nSigned-off-by: Milly \u003cmilly.ca@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "5e7a6a4a106923e45c67dae6810e4c9753f88025",
      "tree": "c6040a7ef0c747840525c0d1a3de094307de4e28",
      "parents": [
        "142cad1f88d1d3aa34b6050151e620b66185112e"
      ],
      "author": {
        "name": "Milly",
        "email": "milly.ca@gmail.com",
        "time": "Tue Oct 22 22:27:19 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Oct 22 22:27:19 2024 +0200"
      },
      "message": "patch 9.1.0803: tests: no error check when setting global \u0027isk\u0027\n\nProblem:  tests: no error check when setting global \u0027isk\u0027\nSolution: also parse and check global \u0027isk\u0027 value (Milly)\n\ncloses: #15915\n\nSigned-off-by: Milly \u003cmilly.ca@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "142cad1f88d1d3aa34b6050151e620b66185112e",
      "tree": "fcc0b9f00bb02b2d16b8ebfb08b9cbdd48a5be8b",
      "parents": [
        "94606f70e2e5889feff86f0e8beacdfb88867516"
      ],
      "author": {
        "name": "Milly",
        "email": "milly.ca@gmail.com",
        "time": "Tue Oct 22 22:11:51 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Oct 22 22:11:51 2024 +0200"
      },
      "message": "patch 9.1.0802: tests: no error check when setting global \u0027fdm\u0027 to empty value\n\nProblem:  tests: no error check when setting global \u0027fdm\u0027 to empty value\nSolution: Also check global \u0027fdm\u0027 value for being empty (Milly).\n\ncloses: #15916\n\nSigned-off-by: Milly \u003cmilly.ca@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "94606f70e2e5889feff86f0e8beacdfb88867516",
      "tree": "daf05f56a12c5ae181f977beef86eb064f6fe19b",
      "parents": [
        "8be10aa9e4f88d9cc3d0a556cb259635145a8575"
      ],
      "author": {
        "name": "Milly",
        "email": "milly.ca@gmail.com",
        "time": "Tue Oct 22 22:07:52 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Oct 22 22:07:52 2024 +0200"
      },
      "message": "patch 9.1.0801: tests: no error check when setting global \u0027termwinkey\u0027\n\nProblem:  tests: no error check when setting global \u0027termwinkey\u0027\nSolution: Also validate when using setglobal (Milly).\n\ncloses: #15917\n\nSigned-off-by: Milly \u003cmilly.ca@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "8be10aa9e4f88d9cc3d0a556cb259635145a8575",
      "tree": "ab164d8841f5d0852f3b42833c637f1e3734f5ee",
      "parents": [
        "19be0eb7f0c5877fef927a22457fdd7b3ec0ea9b"
      ],
      "author": {
        "name": "Milly",
        "email": "milly.ca@gmail.com",
        "time": "Tue Oct 22 22:01:46 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Oct 22 22:01:46 2024 +0200"
      },
      "message": "patch 9.1.0800: tests: no error check when setting global \u0027termwinsize\u0027\n\nProblem:  tests: no error check when setting global \u0027termwinsize\u0027\nSolution: Also validate when using setglobal (Milly).\n\ncloses: #15918\n\nSigned-off-by: Milly \u003cmilly.ca@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "322ad0c953b7a3023cd2a65db61d05e180a5d682",
      "tree": "c2d722ec31a2561138f73977f8f57ef3ca7beda8",
      "parents": [
        "0c59c3027199ce593f6612d7cd418f375933c7cb"
      ],
      "author": {
        "name": "Milly",
        "email": "milly.ca@gmail.com",
        "time": "Mon Oct 14 20:21:48 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Oct 14 20:21:48 2024 +0200"
      },
      "message": "patch 9.1.0783: \u0027spell\u0027 option setting has problems\n\nProblem:  \u0027spell\u0027 option setting has problems\nSolution: correctly check for comma for \u0027spellfile\u0027 option,\n          remove unnecessary checks, refactor slightly (Milly)\n\ncloses: #15873\n\nSigned-off-by: Milly \u003cmilly.ca@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "6a89c94a9eeee53481ced1a1260a177bffde4c0f",
      "tree": "e239e366dc63c217793df16e7ab563970923d1da",
      "parents": [
        "e021f39b79339385d6f70001cb35a79c611456ff"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Tue Oct 01 20:32:12 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Oct 01 20:32:12 2024 +0200"
      },
      "message": "patch 9.1.0754: fixed order of items in insert-mode completion menu\n\nProblem:  fixed order of items in insert-mode completion menu\nSolution: Introduce the \u0027completeitemalign\u0027 option with default\n          value \"abbr,kind,menu\" (glepnir).\n\nAdding an new option `completeitemalign` abbr is `cia` to custom\nthe complete-item order in popupmenu.\n\ncloses: #14006\ncloses: #15760\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "5247b0b92e191a046b034171a3b34031e317735f",
      "tree": "cedcbae8ce173ce4006262f069d3ce81ed26f877",
      "parents": [
        "74703f1086e7815f356123736666d9930db8683a"
      ],
      "author": {
        "name": "LemonBoy",
        "email": "thatlemon@gmail.com",
        "time": "Fri Jul 12 19:30:58 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Jul 12 19:36:53 2024 +0200"
      },
      "message": "patch 9.1.0572: cannot specify tab page closing behaviour\n\nProblem:  cannot specify tab page closing behaviour\n          (Gianluca Pacchiella)\nSolution: Add the \u0027tabclose\u0027 option (LemonBoy).\n\nfixes: #5967\ncloses: #15204\n\nSigned-off-by: LemonBoy \u003cthatlemon@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "600a12d08e7aeb95a6b02382bfee310aef9801dd",
      "tree": "00394eae2f4a8cdbd2bb92de5c384d611ab936ab",
      "parents": [
        "7298565c85b8c32dce73d782aa44581419e1fa3f"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Tue Jul 09 18:51:29 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Jul 09 18:51:29 2024 +0200"
      },
      "message": "patch 9.1.0549: fuzzycollect regex based completion not working as expected\n\nProblem:  fuzzycollect regex based completion not working as expected\nSolution: Revert Patch v9.1.0503 (glepnir)\n\ncloses: #15192\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "25ac6d67d92e0adda53b8d44b81c15031643ca1e",
      "tree": "62b04fe76807209b46bbab09a9c8eba8a688afa3",
      "parents": [
        "f095539b3900d76f5eeaaa0897c6abf970829b31"
      ],
      "author": {
        "name": "distobs",
        "email": "cuppotatocake@gmail.com",
        "time": "Sat Jul 06 17:50:09 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Jul 06 17:55:26 2024 +0200"
      },
      "message": "patch 9.1.0537: signed number detection for CTRL-X/A can be improved\n\nProblem:  signed number detection for CTRL-X/A can be improved\n          (Chris Patuzzo)\nSolution: Add the new \"blank\" value for the \u0027nrformat\u0027 setting. This\n          will make Vim assume a signed number only if there is a blank\n          in front of the sign.\n          (distobs)\n\nfixes: #15033\ncloses: #15110\n\nSigned-off-by: distobs \u003ccuppotatocake@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "43eef882ff42e673af1e753892801ba20c5d002a",
      "tree": "9af6e3ac6997ee065d8863553bc57a1f49c1fd73",
      "parents": [
        "94c5d8a5e20e1dd8c9e8434ee14e368276644f61"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Wed Jun 19 20:20:48 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Jun 19 20:25:01 2024 +0200"
      },
      "message": "patch 9.1.0503: cannot use fuzzy keyword completion\n\nProblem:  cannot use fuzzy keyword completion\n          (Maxim Kim)\nSolution: add the \"fuzzycollect\" value for the \u0027completeopt\u0027\n          setting, to gather matches using fuzzy logic (glepnir)\n\nfixes: #14912\ncloses: #14976\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "529b9ad62a0e843ee56ef609aef7e51b7dc8a4c8",
      "tree": "d7831186f577859f65e02e53f1300ea66ad65d00",
      "parents": [
        "84d9611b673230a0e1e8fd57423976d30ef36308"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Wed Jun 05 20:27:06 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Jun 05 20:27:06 2024 +0200"
      },
      "message": "patch 9.1.0469: Cannot have buffer-local value for \u0027completeopt\u0027\n\nProblem:  Cannot have buffer-local value for \u0027completeopt\u0027\n          (Nick Jensen).\nSolution: Make \u0027completeopt\u0027 global-local (zeertzjq).\n\nAlso for some reason test Test_ColonEight_MultiByte seems to be failing\nsporadically now. Let\u0027s mark it as flaky.\n\nfixes: #5487\ncloses: #14922\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "a218cc6cdabae1113647b817c4eefc2b60a6902f",
      "tree": "d99170b71192a1175086ac5061b77a4c24e25c03",
      "parents": [
        "734286e4c626f80ace27eeb252a5e384e798aebf"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Mon Jun 03 19:32:39 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Jun 03 19:46:13 2024 +0200"
      },
      "message": "patch 9.1.0463: no fuzzy-matching support for insert-completion\n\nProblem:  no fuzzy-matching support for insert-completion\nSolution: enable insert-mode completion with fuzzy-matching\n          using :set completopt+\u003dfuzzy (glepnir).\n\ncloses: #14878\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "5bf6c2117fcef85fcf046c098dd3eb72a0147859",
      "tree": "32804af25b55ac2859188f9bc0771a38d078862c",
      "parents": [
        "86032702932995db74fed265ba99ae0c823cb75d"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Sun Mar 31 18:41:27 2024 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Mar 31 18:41:27 2024 +0200"
      },
      "message": "patch 9.1.0231: Filetype may be undetected when SwapExists sets ft in other buf\n\nProblem:  Filetype may be undetected when a SwapExists autocommand sets\n          filetype in another buffer.\nSolution: Make filetype detection state buffer-specific.  Also fix a\n          similar problem for \u0027modified\u0027 (zeertzjq).\n\ncloses: #14344\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "c27fcf4857228bc650943246ffbba444a085b3e7",
      "tree": "f8ce623823843474e1f489e857a4b38a2312d5cc",
      "parents": [
        "87410ab3f556121dfb3b30515f40c5f079edd004"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Fri Mar 01 23:01:43 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Mar 01 23:03:16 2024 +0100"
      },
      "message": "patch 9.1.0146: v:echospace wrong with invalid value of \u0027showcmdloc\u0027\n\nProblem:  v:echospace wrong after setting invalid value to \u0027showcmdloc\u0027.\nSolution: Only call comp_col() if value is valid.\n          (zeertzjq)\n\ncloses: #14119\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "062141b1a70cf5364e6983ec901282e0111745c1",
      "tree": "91c31448bb213ca46b554e2b9e50931848f20dbc",
      "parents": [
        "4d55c54e307c27600c644c6631ff673ed89dd53a"
      ],
      "author": {
        "name": "Sam-programs",
        "email": "130783534+Sam-programs@users.noreply.github.com",
        "time": "Thu Feb 29 17:40:29 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Feb 29 17:40:29 2024 +0100"
      },
      "message": "patch 9.1.0145: v:echospace not correct when \u0027showcmdloc\u0027 !\u003d last\n\nProblem:  the amount of available space (v:echospace) on the command\n          line is not correct when showcmdloc is drawn into the\n          statusline or tabline.\nSolution: only add SHOWCMD_COLS to the shown command column when\n          \u0027showcmdloc\u0027 is set to last (Sam-programs)\n\ncloses: #14108\n\nCo-authored-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Sam-programs \u003c130783534+Sam-programs@users.noreply.github.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "2f02638aa8f737786551c92e78ce13def3d098b2",
      "tree": "37a0517c55ebc4cdfa9145ad5cb502b8e254b875",
      "parents": [
        "02d7a6c6cfceb3faf9c98fcb7c458760cd50d269"
      ],
      "author": {
        "name": "Erik S. V. Jansson",
        "email": "caffeineviking@gmail.com",
        "time": "Mon Feb 26 22:23:05 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Feb 26 22:23:05 2024 +0100"
      },
      "message": "patch 9.1.0139: MS-Windows: ligatures map cleared on startup\n\nProblem:  MS-Windows: ligatures map cleared on startup\nSolution: Don\u0027t clear the ligatures_map, if the guiligatures\n          option has already been set (Erik S. V. Jansson)\n\nIf guiligatures is set from a .vimrc it\u0027s possible\nthat it will be cleared on start-up (e.g. in Win32\nthat\u0027s what happens).\n\nSo don\u0027t clear the ligatures map if gui_set_ligatures()\nhas already been called (e.g. after setting \u0027ligatures\u0027\nfrom .vimrc)\n\ncloses: #14094\n\nSigned-off-by: Erik S. V. Jansson \u003ccaffeineviking@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "8b1e749ca6ca6d09a174c57de6999f69393ee567",
      "tree": "63e1d835d7753947d548af6b744fa674164dae5e",
      "parents": [
        "048761bcd40ec630fd3e039f0066cf4e484ceabd"
      ],
      "author": {
        "name": "Erik S. V. Jansson",
        "email": "caffeineviking@gmail.com",
        "time": "Sat Feb 24 14:26:52 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Feb 24 14:26:52 2024 +0100"
      },
      "message": "patch 9.1.0133: MS-Windows: ligatures not rendering correctly\n\nProblem:  font ligatures don\u0027t render correctly in the Win32 GUI-version\n          of gvim even when set rop\u003dtype:directx is used. Setting\n          guiligatures also doesn\u0027t make any difference. This leads to\n          broken font ligatures when the cursor passes through them. It\n          does not recover from this, and they remain broken until you\n          re-render the whole buffer (e.g. by using Ctrl+L).\n\nSolution: the problem is that we only re-draw the current and previous\n          character in gui_undraw_cursor() and only have the special case\n          for GTK when it comes to rendering ligatures. So let\u0027s enable\n          gui_adjust_undraw_cursor_for_ligatures() to also happen for\n          Win32 GUI if guiligatures is setup correctly (all this does is\n          expand the range of gui_undraw_cursor() with ligature characters).\n\nrelated: #9181\nrelated: #12901\ncloses: #14084\n\nSigned-off-by: Erik S. V. Jansson \u003ccaffeineviking@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "fcaed6a70faf73bff3e5405ada556d726024f866",
      "tree": "5dae7674b1115ae5298940a54e54d9f97975b1d9",
      "parents": [
        "79230f027a25ff12eb7c7b64e1c063297876aae2"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Sun Feb 18 09:33:54 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Feb 18 09:33:54 2024 +0100"
      },
      "message": "patch 9.1.0114: Setting some options may change curswant\n\nProblem:  Setting some options changes curswant unnecessarily.\nSolution: Add a P_HLONLY flag that prevents changing curswant.\n          (zeertzjq)\n\ncloses: #14044\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "eac3fdcfa0b54281c37ffb66b4d4e8d1072cca1c",
      "tree": "5cae81a11d47036ff5759494686d3aee646eb331",
      "parents": [
        "0c989e4a3ae50085aa8c6bed5d6701760191bc1d"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Sat Feb 03 18:08:09 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Feb 03 18:08:09 2024 +0100"
      },
      "message": "patch 9.1.0074: did_set_breakat() should be in optionstr.c\n\nProblem:  did_set_breakat() should be in optionstr.c as \u0027breakat\u0027 is a\n          string option.\nSolution: Move did_set_breakat() to optionstr.c.\n          (zeertzjq)\n\ncloses: #13958\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "6a8d2e1634f8f0d7463a2786dbcbe0f38dd287a7",
      "tree": "47681288dc7fd7efe9b1ade01e157f10d48e0d6f",
      "parents": [
        "4ea37f88e8345ca830271636a2e197a1a46114d2"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Wed Jan 17 20:54:49 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Jan 17 21:07:08 2024 +0100"
      },
      "message": "patch 9.1.0039: too vague errors for \u0027listchars\u0027/\u0027fillchars\u0027\n\nProblem:  too vague errors for \u0027listchars\u0027/\u0027fillchars\u0027\nSolution: Include the field name in error message.\n          (zeertzjq)\n\nrelated: neovim/neovim#27050\ncloses: #13877\n\nCo-authored-by: Cole Frankenhoff \u003ccole.nhf@gmail.com\u003e\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "83ad2726ff56db70cb2da78e1e4ea0e09941c73b",
      "tree": "6e44818e2a9b2ee86b100ea888e7d4c99f136f3c",
      "parents": [
        "443657b32becb2318ae40e30a849bbe5cc1a153c"
      ],
      "author": {
        "name": "Gregory Anders",
        "email": "greg@gpanders.com",
        "time": "Wed Jan 03 19:48:51 2024 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Jan 03 19:53:59 2024 +0100"
      },
      "message": "patch 9.1.0004: reloading colorscheme when not changing \u0027background\u0027\n\nProblem:  reloading colorscheme when not changing \u0027background\u0027\nSolution: Check, if the background option value actually changed,\n          if not, return early.\n\nOnly reload colorscheme when bg is changed\n\nCurrently the highlight groups are re-initialized and the colorscheme\n(if any) is reloaded anytime \u0027background\u0027 is set, even if it is not\nchanged. This is unnecessary, because if the value was not changed then\nthere is no need to change highlight groups or do anything with the\ncolorscheme. Instead, only reload the colorscheme if the value of\n\u0027background\u0027 was actually changed.\n\ncloses: #13700\n\nSigned-off-by: Gregory Anders \u003cgreg@gpanders.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "18d0d29b420543efd4938619d821df7b67988de5",
      "tree": "90e2167079ce1fdb9c89e2485ea4ee083421f8bf",
      "parents": [
        "5872bcb6e8dfc15d7a5c0aaaf94d8029f3a1fa3f"
      ],
      "author": {
        "name": "Ken Takata",
        "email": "kentkt@csc.jp",
        "time": "Tue Dec 19 20:12:29 2023 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Dec 19 20:12:29 2023 +0100"
      },
      "message": "patch 9.0.2175: Compile error with Motif UI + mouse support\n\nProblem:  Compile error with Motif UI + mouse support (after v9.0.1262)\nSolution: Use correct oldval option pointer\n\nFix compilation error introduced by 9.0.1262 and found in #13704.\n\ncloses: #13726\n\nSigned-off-by: Ken Takata \u003ckentkt@csc.jp\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "1c8e233cb8357b4f218bfa777f6d81456d0b43a2",
      "tree": "ef890f7e574316dae810da55080bb58b4fbe328f",
      "parents": [
        "668971958c126d5e105fd44b60a4efcaf2c4b55c"
      ],
      "author": {
        "name": "Zoltan Arpadffy",
        "email": "zoltan.arpadffy@gmail.com",
        "time": "Tue Dec 05 16:04:23 2023 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Dec 05 16:04:23 2023 +0100"
      },
      "message": "patch 9.0.2153: no support to build on OpenVMS\n\nProblem:  no support to build on OpenVMS\nSolution: Add OpenVMS X86_64 platform port\n\ncloses: #13623\n\nCo-authored-by: errael \u003cerrael@raelity.com\u003e\nCo-authored-by: K.Takata \u003ckentkt@csc.jp\u003e\nSigned-off-by: Zoltan Arpadffy \u003czoltan.arpadffy@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "620f0116948ddd9f1900f067ed8bb6bab548f825",
      "tree": "d1bf6c20abf35ff366b061bb0ed5bbced6433f4c",
      "parents": [
        "5dd41d4b6370b7b7d09d691f9252b3899c66102a"
      ],
      "author": {
        "name": "Mike Williams",
        "email": "mikew@globalgraphics.com",
        "time": "Tue Dec 05 15:36:06 2023 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Dec 05 15:38:33 2023 +0100"
      },
      "message": "patch 9.0.2150: Using int for errbuflen in option funcs\n\nProblem:  Using int for errbuflen in option funcs\nSolution: Use size_t for errbuflen in string option functions\n\nUse size_t for errbuflen in string option functions\n\nThis started as size_t to int warning on Windows in\ndo_set_option_string().  Other option setting functions are using size_t\nfor errbuflen so I changed the type in the argument list and then chased\nfurther compiler warnings into the string option functions in\noptionstr.c changing ints to size_t as I went.\n\nI also changed the type of os_errbuflen in optset_T to size_t and\nupdated related argument lists in optionstr.c, as well as updating\nset_string_option() to also use size_t for errbuflen for consistency\nwith other string option setting functions.\n\ncloses: #13628\n\nSigned-off-by: Mike Williams \u003cmikew@globalgraphics.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "b39b240c386a5a29241415541f1c99e2e6b8ce47",
      "tree": "25ac23d0f18efb91f00bc053d326fa8549e9d484",
      "parents": [
        "0fb375aae608d7306b4baf9c1f906961f32e2abf"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Nov 29 11:34:05 2023 +0100"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Dec 01 18:58:51 2023 +0100"
      },
      "message": "patch 9.0.2142: [security]: stack-buffer-overflow in option callback functions\n\nProblem:  [security]: stack-buffer-overflow in option callback functions\nSolution: pass size of errbuf down the call stack, use snprintf()\n          instead of sprintf()\n\nWe pass the error buffer down to the option callback functions, but in\nsome parts of the code, we simply use sprintf(buf) to write into the error\nbuffer, which can overflow.\n\nSo let\u0027s pass down the length of the error buffer and use sprintf(buf, size)\ninstead.\n\nReported by @henices, thanks!\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "209ec90b9b9bd948d76511c9cd2b17f47a97afe6",
      "tree": "5a74b51ad3571a32852a7348b77c3637cf8fb8ce",
      "parents": [
        "396058acd0cc66e5071d052e03d2067b134952af"
      ],
      "author": {
        "name": "Yee Cheng Chin",
        "email": "ychin.git@gmail.com",
        "time": "Tue Oct 17 10:56:25 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Oct 17 10:56:25 2023 +0200"
      },
      "message": "patch 9.0.2037: A few remaining cmdline completion issues with C-E/Y\n\nProblem:  A few remaining cmdline completion issues with C-E/Y\nSolution: Fix cmdline completion fuzzy/Ctrl-E/Ctrl-Y/options when not\n          used at the end\n\nFix cmdline completion fuzzy/Ctrl-E/Ctrl-Y/options when not used at the end\n\nA few places in the cmdline completion code only works properly when the\nuser hits Tab (or \u0027wildchar\u0027) at the end of the cmdline, even though\nit\u0027s supposed to work even in the middle of the line.\n\nFor fuzzy search, `:e ++ff`, and `:set hl\u003d`, fix completion code to make\nsure to use `xp_pattern_len` instead of assuming the entire `xp_pattern`\nis the search pattern (since it contains texts after the cursor).\n\nFix Ctrl-E / Ctrl-Y to not jump to the end when canceling/accepting a\nwildmenu completion. Also, make them work even when not using\n`set wildoptions+\u003dpum` as there is no drawback to doing so.\n(Related issue where this was brought up: #13331)\n\ncloses: #13362\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\nCo-authored-by: Yee Cheng Chin \u003cychin.git@gmail.com\u003e\n"
    },
    {
      "commit": "989426be6e9ae23d2413943890206cbe15d9df38",
      "tree": "3931aedc70ed18a7e3ea0f735359995fb26d1ef5",
      "parents": [
        "bd734c3bead9e167eb6875f62cc06fab2379c422"
      ],
      "author": {
        "name": "Yee Cheng Chin",
        "email": "ychin.git@gmail.com",
        "time": "Sat Oct 14 11:46:51 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Oct 14 11:46:51 2023 +0200"
      },
      "message": "patch 9.0.2025: no cmdline completion for ++opt args\n\nProblem:  no cmdline completion for ++opt args\nSolution: Add cmdline completion for :e ++opt\u003darg and :terminal\n          [++options]\n\ncloses: #13319\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\nCo-authored-by: Yee Cheng Chin \u003cychin.git@gmail.com\u003e\n"
    },
    {
      "commit": "9960ebcacee5f430d61735991a0563858168ef2c",
      "tree": "e3d8afbb394b56ce20baed8dacd60f091b4a8820",
      "parents": [
        "20d161ace307e28690229b68584f2d84556f8960"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Oct 05 22:17:09 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Oct 05 22:17:09 2023 +0200"
      },
      "message": "patch 9.0.1993: warning about unused function definition\n\nProblem:  warning about unused function definition\nSolution: add ifdefs\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "290b887e8cc2c0d3dfc7f315b2052472c7c589cc",
      "tree": "1b5285384cc6ed9e3a0bce9051d1e4b201196161",
      "parents": [
        "ea746f9e862092aef3d4e95c64d116759b9fabe0"
      ],
      "author": {
        "name": "Yee Cheng Chin",
        "email": "ychin.git@gmail.com",
        "time": "Thu Oct 05 20:54:21 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Oct 05 20:54:21 2023 +0200"
      },
      "message": "patch 9.0.1991: no cmdline completion for setting the font\n\nProblem:  no cmdline completion for setting the font\nSolution: enable it on Win32 and GTK builds\n\nAdd guifont cmdline completion (for Windows and GTK)\n\nFor Windows, auto-complete will only suggest monospace fonts as that\u0027s\nthe only types allowed. Will also suggest font options after the colon,\nincluding suggesting the current font size for convenience, and misc\ncharset and quality options like `cANSI` and `qCLEARTYPE`.\n\nFor GTK, auto-complete will suggest only monospace fonts for `guifont`\nbut will include all fonts for `guifontwide`. The completion code\ndoesn\u0027t currently suggest the current font size, as the GTK guifont\nformat does not have a clear delimiter (\u0027:\u0027 for other platforms).\n\ncloses: #13264\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\nCo-authored-by: Yee Cheng Chin \u003cychin.git@gmail.com\u003e\n"
    },
    {
      "commit": "3f168ec8ae8fa2609d87d2f65f0de7227066b57a",
      "tree": "6ad9ca95d144fd72efda5c2d11fca58036ea494a",
      "parents": [
        "993b17569b5acffe2d8941d1709a55da4e439755"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Oct 02 23:21:11 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Oct 02 23:21:11 2023 +0200"
      },
      "message": "patch 9.0.1976: style: space before tab in optionstr.c\n\nProblem:  style: space before tab in optionstr.c\nSolution: remove the space\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "6d113472601fa6f3a444a95ef7b11d4309215117",
      "tree": "054b1c6276bd690339784083c19f27eb0a605123",
      "parents": [
        "4a1ad5556423dca5f5b7ee39f143579e67569ae1"
      ],
      "author": {
        "name": "Yee Cheng Chin",
        "email": "ychin.git@gmail.com",
        "time": "Mon Oct 02 21:38:39 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Oct 02 21:38:39 2023 +0200"
      },
      "message": "patch 9.0.1973: Clean up cmdline option completion code\n\nProblem:  Clean up cmdline option completion code\nSolution: Fix various minor problems\n\n- Fix manual array size calculations to just use `ARRAY_LENGTH()`.\n- Fix unintentional typo in comments due to copy-paste error.\n- Fix assert_equal() usages to pass the expected value to first\n  parameter instead of 2nd one to avoid confusion.\n- Fix signed vs unsigned warnings\n- Correct misplaced comments about set_op_T and set_prefix_T\n  and fix a typo in another comment\n\ncloses: #13249\ncloses: #13237\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\nCo-authored-by: Yee Cheng Chin \u003cychin.git@gmail.com\u003e\nCo-authored-by: zeertzjq \u003czeertzjq@outlook.com\u003e\n"
    },
    {
      "commit": "6ee7b521fa7531ef356ececc8be7575c3800f872",
      "tree": "0837915c4a965902d369e8f2a0b0748b94f9dc41",
      "parents": [
        "7ece036d72cf639b05d3936183220bec7179bf63"
      ],
      "author": {
        "name": "Yee Cheng Chin",
        "email": "ychin.git@gmail.com",
        "time": "Sun Oct 01 09:13:22 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Oct 01 09:19:18 2023 +0200"
      },
      "message": "patch 9.0.1968: cmdline completion should consider key option\n\nProblem:  cmdline completion should consider key option\nSolution: Disable cmdline completion for key option, slightly\n          refactor how P_NO_CMD_EXPAND is handled\n\nHarden crypto \u0027key\u0027 option: turn off cmdline completion, disable set-\u003d\n\n\"set-\u003d\" can be used maliciously with a crypto key, as it allows an\nattacker (who either has access to the computer or a plugin author) to\nguess a substring by observing the modified state. Simply turn off\nset+\u003d/-\u003d/^\u003d for this option as there is no good reason for them to be\nused.\n\nUpdate docs to make that clear as well.\n\nAlso, don\u0027t allow cmdline completion for \u0027key\u0027 as it just shows *****\nwhich is not useful and confusing to the user what it means (if the user\naccidentally hits enter they will have replaced their key with \"*****\"\ninstead).\n\nMove logic to better location, don\u0027t use above 32-bit for flags\n\nMove P_NO_CMD_EXPAND to use the unused 0x20 instead of going above\n32-bits, as currently the flags parameter is only 32-bits on some\nsystems. Left a comment to warn that future additions will need to\nchange how the flags work either by making it 64-bit or split into two\nmember vars.\n\nAlso, move the logic for detecting P_NO_CMD_EXPAND earlier so it\u0027s not\nup to each handler to decide, and you won\u0027t see the temporary \"...\" that\nVim shows while waiting for completion handler to complete.\n\ncloses: #13224\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\nCo-authored-by: Yee Cheng Chin \u003cychin.git@gmail.com\u003e\n"
    },
    {
      "commit": "f7f746b1672909ae57d2eec97253d6627f6c0887",
      "tree": "2f121d81a2c47cad103b793e81c5259daa727f8d",
      "parents": [
        "f3b68d4759a040ed0c4844c279ea3c779b3863ff"
      ],
      "author": {
        "name": "Yee Cheng Chin",
        "email": "ychin.git@gmail.com",
        "time": "Sat Sep 30 12:28:50 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Sep 30 12:32:37 2023 +0200"
      },
      "message": "patch 9.0.1960: Make CI checks more strict\n\nProblem:  Make CI checks more strict\nSolution: Add -Wstrict-prototypes -Wmissing-prototypes to CI,\n          fix uncovered problems\n\nAdd -Wstrict-prototypes -Wmissing-prototypes warnings check to CI\n\nAdd two new warnings to CI, silence some Perl related build-warnings:\n\n- `strict-prototypes` helps prevent declaring a function with an empty\n  argument list, e.g. `int func()`. In C++, that\u0027s equivalent to `int\n  func(void)`, but in C, that means a function that can take any number\n  of arguments which is rarely what we want.\n\n- `missing-prototypes` makes sure we use `static` for file-only internal\n  functions. Non-static functions should have been declared on a\n  prototype file.\n\n- Add `no-compound-token-split-by-macro` to the perl cflags, since it\n  throws out a bunch of perl-related warnings that make the CI log\n  unnecessary verbose and hard to read. This seems to happen only with\n  clang 12 and above.\n\nWhen applying those changes, it already uncovered a few warnings, so fix\nup the code as well (fix prototypes, make the code static, remove\nshadowed var declaration)\n\nGTK header needs to have #pragma warning suppressiong because GTK2\nheaders will warn on `-Wstrict-prototypes`, and it\u0027s included by gui.h\nand so we can\u0027t just turn off the warning in a couple files.\n\ncloses: #13223\ncloses: #13226\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\nCo-authored-by: Yee Cheng Chin \u003cychin.git@gmail.com\u003e\n"
    },
    {
      "commit": "900894b09a95398dfc75599e9f0aa2ea25723384",
      "tree": "62d287cb3235349c75c60884f280e3c5f47beb5e",
      "parents": [
        "3695d0e41ba26db074dd5680564a6f87d522fb61"
      ],
      "author": {
        "name": "Yee Cheng Chin",
        "email": "ychin.git@gmail.com",
        "time": "Fri Sep 29 20:42:32 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Sep 29 20:42:32 2023 +0200"
      },
      "message": "patch 9.0.1958: cannot complete option values\n\nProblem:  cannot complete option values\nSolution: Add completion functions for several options\n\nAdd cmdline tab-completion for setting string options\n\nAdd tab-completion for setting string options on the cmdline using\n`:set\u003d` (along with `:set+\u003d` and `:set-\u003d`).\n\nThe existing tab completion for setting options currently only works\nwhen nothing is typed yet, and it only fills in with the existing value,\ne.g. when the user does `:set diffopt\u003d\u003cTab\u003e` it will be completed to\n`set diffopt\u003dinternal,filler,closeoff` and nothing else. This isn\u0027t too\nuseful as a user usually wants auto-complete to suggest all the possible\nvalues, such as \u0027iblank\u0027, or \u0027algorithm:patience\u0027.\n\nFor set\u003d and set+\u003d, this adds a new optional callback function for each\noption that can be invoked when doing completion. This allows for each\noption to have control over how completion works. For example, in\n\u0027diffopt\u0027, it will suggest the default enumeration, but if `algorithm:`\nis selected, it will further suggest different algorithm types like\n\u0027meyers\u0027 and \u0027patience\u0027. When using set\u003d, the existing option value will\nbe filled in as the first choice to preserve the existing behavior. When\nusing set+\u003d this won\u0027t happen as it doesn\u0027t make sense.\n\nFor flag list options (e.g. \u0027mouse\u0027 and \u0027guioptions\u0027), completion will\ntake into account existing typed values (and in the case of set+\u003d, the\nexisting option value) to make sure it doesn\u0027t suggest duplicates.\n\nFor set-\u003d, there is a new `ExpandSettingSubtract` function which will\nhandle flag list and comma-separated options smartly, by only suggesting\nvalues that currently exist in the option.\n\nNote that Vim has some existing code that adds special handling for\n\u0027filetype\u0027, \u0027syntax\u0027, and misc dir options like \u0027backupdir\u0027. This change\npreserves them as they already work, instead of converting to the new\ncallback API for each option.\n\ncloses: #13182\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\nCo-authored-by: Yee Cheng Chin \u003cychin.git@gmail.com\u003e\n"
    },
    {
      "commit": "3695d0e41ba26db074dd5680564a6f87d522fb61",
      "tree": "4e7a0cc8868eda94d01428a7d4bf0be4aa0b7d5b",
      "parents": [
        "28a23602e8f88937645b8506b7915ecea6e09b18"
      ],
      "author": {
        "name": "Gregory Anders",
        "email": "greg@gpanders.com",
        "time": "Fri Sep 29 20:17:20 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Sep 29 20:17:20 2023 +0200"
      },
      "message": "patch 9.0.1957: termcap options should change when setting keyprotocol\n\nProblem:  termcap options should change on keyprotocol setting\nSolution: Apply termcap entries when \u0027keyprotocol\u0027 changes\n\nWhen the \u0027keyprotocol\u0027 option was set after startup (including in a\nuser\u0027s .vimrc) the termcap entries associated with the matching protocol\nwere not applied. Thus, setting the option has no affect.\n\nWhen \u0027keyprotocol\u0027 is changed it should also update the termcap entries.\n\ncloses: #13211\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\nCo-authored-by: Gregory Anders \u003cgreg@gpanders.com\u003e\n"
    },
    {
      "commit": "1926ae41845c3b6e2045b29225365c8a2e4eb1da",
      "tree": "4244ed2884cc22c4cbc7383c91f4d3fc3283ee46",
      "parents": [
        "db54e989b5cff3cc6442dfc500e3962cc1c0b6d0"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Thu Sep 21 16:36:28 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Sep 21 16:36:28 2023 +0200"
      },
      "message": "patch 9.0.1924: LSP server message still wrongly handled (after 9.0.1922)\n\nProblem:  LSP server message still wrongly handled (after 9.0.1922)\nSolution: Handle \u0027method\u0027 messages properly, don\u0027t discard them, add\n          tests.\n\ncloses: #13141\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\nCo-authored-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\n"
    },
    {
      "commit": "87018255e3ad0f4dfa03e20318836d24af721caf",
      "tree": "132b551bd3ecddf43ae2d81ac23bfbbbe0e2177f",
      "parents": [
        "98e68c07ce229148c994a42ead9f010b0d0a1be4"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Wed Sep 20 20:20:04 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Sep 20 20:25:17 2023 +0200"
      },
      "message": "patch 9.0.1921: not possible to use the jumplist like a stack\n\nProblem:  not possible to use the jumplist like a stack\nSolution: Add the \u0027jumpoptions\u0027 setting to make the jumplist\n          a stack.\n\nAdd an option for using jumplist like tag stack\n\nrelated: #7738\ncloses: #13134\n\nported from NeoVim:\n\n- https://neovim.io/doc/user/motion.html#jumplist-stack\n- neovim/neovim@39094b3\n- neovim/neovim#11530\n- https://vi.stackexchange.com/questions/18344/how-to-change-jumplist-behavior\n\nBased on the feedback in the previous PR, it looks like many people like\nthis option.\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\nCo-authored-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nCo-authored-by: butwerenotthereyet \u003c58348703+butwerenotthereyet@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "7e0bae024d4c1673cff31763227ad52b936fa56f",
      "tree": "f76335fcdc8bd03dc55fbefe671dd5729021320d",
      "parents": [
        "cd4e4e169ab3ff0b9315e5bc16d5ba490ee251ff"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Fri Aug 11 23:15:38 2023 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Aug 11 23:16:10 2023 +0200"
      },
      "message": "patch 9.0.1687: mapset() not properly handling script ID\n\nProblem: mapset() not properly handling script ID\nSolution: replace_termcodes() may accept a script ID\n\ncloses: #12699\ncloses: #12697\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\nCo-authored-by: zeertzjq \u003czeertzjq@outlook.com\u003e\n"
    },
    {
      "commit": "19e6c4fd2d262075d39cb802ea5b85f5ec92f153",
      "tree": "a550dc395cbf1f136c384e0fddfe12dbcd4831e3",
      "parents": [
        "0256d76a3392aef270b38d1cf7633008e45c2003"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Jun 27 18:57:10 2023 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Jun 27 18:57:10 2023 +0100"
      },
      "message": "patch 9.0.1669: Crash syncing swapfile in new buffer when using sodium crypt\n\nProblem:    Crash syncing swapfile in new buffer when using sodium crypt.\n            (James McCoy)\nSolution:   Add checks for sodium encryption. (Christian Brabandt,\n            closes #12591, closes #12585)\n"
    },
    {
      "commit": "68ebcee0237d927dd5386073499162389d4d708a",
      "tree": "ce198c27bc9d743c31fed87bb5c1076b4445fcf8",
      "parents": [
        "3c240f608c38ef1af67e112e0e689751c003f946"
      ],
      "author": {
        "name": "RestorerZ",
        "email": "restorer@mail2k.ru",
        "time": "Wed May 31 17:12:14 2023 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed May 31 17:12:14 2023 +0100"
      },
      "message": "patch 9.0.1594: some internal error messages are translated\n\nProblem:    Some internal error messages are translated.\nSolution:   Consistently do not translate internal error messages.\n            (closes #12459)\n"
    },
    {
      "commit": "f9dc278946d52235a0025fd347bd9ff571258470",
      "tree": "e070d19d15b319f8f154cb0d24db48f00e49aaad",
      "parents": [
        "4ce1bda869e4ec0152d7dcbe1e491ceac5341d5e"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Thu May 11 15:02:56 2023 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu May 11 15:02:56 2023 +0100"
      },
      "message": "patch 9.0.1540: reverse() on string doesn\u0027t work in compiled function\n\nProblem:    reverse() on string doesn\u0027t work in compiled function.\nSolution:   Accept string in argument type check. (Yegappan Lakshmanan,\n            closes #12377)\n"
    },
    {
      "commit": "aae583441bcdbb0bfef3b8a1d193e04ae09ca95d",
      "tree": "e3cf7c27fc02e1232fe5ab8f8da32581e9782718",
      "parents": [
        "dcd40cfca0fe0e65d405ce9711745a8ec846c30c"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Apr 23 17:50:22 2023 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Apr 23 17:50:22 2023 +0100"
      },
      "message": "patch 9.0.1481: decrypting with libsodium may fail if the library changes\n\nProblem:    Decrypting with libsodium may fail if the library changes.\nSolution:   Add parameters used to the encrypted file header. (Christian\n            Brabandt, closes #12279)\n"
    },
    {
      "commit": "e764d1b4219e6615a04df1c3a6a5c0210a0a7dac",
      "tree": "547326cc9cf10d5de85ba975470b076aafe02d89",
      "parents": [
        "d13dd30240e32071210f55b587182ff48757ea46"
      ],
      "author": {
        "name": "Dominique Pelle",
        "email": "dominique.pelle@gmail.com",
        "time": "Sun Mar 12 21:20:59 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Mar 12 21:20:59 2023 +0000"
      },
      "message": "patch 9.0.1403: unused variables and functions\n\nProblem:    Unused variables and functions.\nSolution:   Delete items and adjust #ifdefs. (Dominique Pellé, closes #12145)\n"
    },
    {
      "commit": "960dcbd098c761dd623bec9492d5391ff6e8dceb",
      "tree": "df2abb6d73be0c31de679fa00251e133a0e99ab6",
      "parents": [
        "14113fdf9cb3d588c0d1c3a210246b981cf5aad3"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Tue Mar 07 17:45:11 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Mar 07 17:45:11 2023 +0000"
      },
      "message": "patch 9.0.1391: \"clear\" macros are not always used\n\nProblem:    \"clear\" macros are not always used.\nSolution:   Use ALLOC_ONE, VIM_CLEAR, CLEAR_POINTER and CLEAR_FIELD in more\n            places. (Yegappan Lakshmanan, closes #12104)\n"
    },
    {
      "commit": "5284b23e148063648be0ff46c730ca574e3ca9fa",
      "tree": "ac68e9687c7415912f09db726e6ad8a670964164",
      "parents": [
        "c99cbf8f289bdda5d4a77d7ec415850a520330ba"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Sat Mar 04 19:57:32 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Mar 04 19:57:32 2023 +0000"
      },
      "message": "patch 9.0.1379: functions for handling options are not ordered\n\nProblem:    Functions for handling options are not ordered.\nSolution:   Put functions in alphabetical order. (Yegappan Lakshmanan,\n            closes #12101)\n"
    },
    {
      "commit": "c727b19e9f1df36e44321d933334c7b4961daa54",
      "tree": "75926980b51849aa2571aed033e81541a8c0c939",
      "parents": [
        "194555c001f2b8576483ef34511450b6e9b5e3fd"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Fri Mar 03 12:26:15 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Mar 03 12:26:15 2023 +0000"
      },
      "message": "patch 9.0.1374: function for setting options not used consistently\n\nProblem:    Function for setting options not used consistently.\nSolution:   Use a function for \u0027encoding\u0027 and terminal options. (Yegappan\n            Lakshmanan, closes #12099)\n"
    },
    {
      "commit": "c6ff21e876af0e3ad59664dd0f69359c4b6e9f1d",
      "tree": "ef51d81e472c4addb48ec3e3ccc6a42a659e5be9",
      "parents": [
        "4ed914b18a47192f79f342bea5e8f59e120d5260"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Thu Mar 02 14:46:48 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Mar 02 14:46:48 2023 +0000"
      },
      "message": "patch 9.0.1369: still some \"else if\" constructs for setting options\n\nProblem:    Still some \"else if\" constructs for setting options.\nSolution:   Add a few more functions for handling options. (Yegappan\n            Lakshmanan, closes #12090)\n"
    },
    {
      "commit": "ad60898aa47b44fdece12d28c471fb50df27fb50",
      "tree": "fc3c4ba26c91368d1fae0417128fd63e811a3b4d",
      "parents": [
        "f0300fc7b81e63c2584dc3a763dedea4184d17e5"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Wed Mar 01 12:44:06 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Mar 01 12:44:06 2023 +0000"
      },
      "message": "patch 9.0.1366: functions for setting options are in random order\n\nProblem:    Functions for setting options are in random order.\nSolution:   Sort functions alphabetically. (Yegappan Lakshmanan,\n            closes #12082)\n"
    },
    {
      "commit": "5da901bb68717b2baff6e971c1517219b6ee3a67",
      "tree": "b19c5bcb38e3c5f523f37b787e8375d5402fc78f",
      "parents": [
        "30a844771554d28f1a88a256e6088dbb252228c1"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Mon Feb 27 12:47:47 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Feb 27 12:47:47 2023 +0000"
      },
      "message": "patch 9.0.1359: too many \"else if\" statements in handling options\n\nProblem:    Too many \"else if\" statements in handling options.\nSolution:   Add more functions for handling option changes. (Yegappan\n            Lakshmanan, closes #12060)\n"
    },
    {
      "commit": "6d611de58c8e324491415da8e79c6bd3faa3e848",
      "tree": "df9157b48308e8685ae667ceaa24dca27deec72b",
      "parents": [
        "a63fd8232895bbf6751087d90fd15c8ea45f1cf0"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Sat Feb 25 11:59:33 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Feb 25 11:59:33 2023 +0000"
      },
      "message": "patch 9.0.1353: too many \"else if\" statements to handle option values\n\nProblem:    Too many \"else if\" statements to handle option values.\nSolution:   Add more functions to handle option value changes. (Yegappan\n            Lakshmanan, closes #12058)\n"
    },
    {
      "commit": "8ad862a1f9d6f4128de856ccfabbeb7546d33b98",
      "tree": "ca5f75f327d37d8693f76ab5003db3fa035e4275",
      "parents": [
        "a8f0835a6b5af5bf099dc9831bdc68edb8b69ba8"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Thu Feb 23 15:05:22 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Feb 23 15:05:22 2023 +0000"
      },
      "message": "patch 9.0.1345: too many \"else if\" statements for handling options\n\nProblem:    Too many \"else if\" statements for handling options.\nSolution:   Add more functions to handle options. (Yegappan Lakshmanan,\n            closes #12051)\n"
    },
    {
      "commit": "a23a11b5bf03454b71fdb5deac0d5f641e222160",
      "tree": "5ce9eb5b9668eb891072ee7e03823b1c68214656",
      "parents": [
        "d950984489e50b12d87c85f0cce1d672c880aa23"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Tue Feb 21 14:27:41 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Feb 21 14:27:41 2023 +0000"
      },
      "message": "patch 9.0.1336: functions without arguments are not always declared properly\n\nProblem:    Functions without arguments are not always declared properly.\nSolution:   Use \"(void)\" instead of \"()\". (Yegappan Lakshmanan, closes #12031)\n"
    },
    {
      "commit": "af93691b53f38784efce0b93fe7644c44a7e382e",
      "tree": "74e8f31e222aed907e80c4dc5b0bded5f7400537",
      "parents": [
        "997b8a015cd39141866e953651d55c705275cbd6"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Mon Feb 20 12:16:39 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Feb 20 12:16:39 2023 +0000"
      },
      "message": "patch 9.0.1330: handling new value of an option has a long \"else if\" chain\n\nProblem:    Handling new value of an option has a long \"else if\" chain.\nSolution:   Use a function pointer. (Yegappan Lakshmanan, closes #12015)\n"
    },
    {
      "commit": "ce3189d56e867a2ffc077893b62f530d5b09150f",
      "tree": "52d7934c1c7c1a85fe3c1a62c24ad0ceb1d2b5b9",
      "parents": [
        "bc3dc298b37820a8212e7d839e882e07d6cc98c8"
      ],
      "author": {
        "name": "K.Takata",
        "email": "kentkt@csc.jp",
        "time": "Wed Feb 15 19:13:43 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Feb 15 19:13:43 2023 +0000"
      },
      "message": "patch 9.0.1313: some settings use the current codepage instead of \u0027encoding\u0027\n\nProblem:    Some settings use the current codepage instead of \u0027encoding\u0027.\nSolution:   Adjust how options are initialized. (Ken Takata, closes #11992)\n"
    },
    {
      "commit": "32ff96ef018eb1a5bea0953648b4892a6ee71658",
      "tree": "c3a1a5383526dccb92ce5b9289f0a8f42c0f748b",
      "parents": [
        "5ceb8157bc4608eeff4b7453da31ebe65f08a862"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Mon Feb 13 16:10:04 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Feb 13 16:10:04 2023 +0000"
      },
      "message": "patch 9.0.1307: setting \u0027formatoptions\u0027 with :let doesn\u0027t check for errors\n\nProblem:    Setting \u0027formatoptions\u0027 with :let doesn\u0027t check for errors.\nSolution:   Pass \"errbuf\" to set_string_option(). (Yegappan Lakshmanan,\n            closes #11974, closes #11972)\n"
    },
    {
      "commit": "3ec78f973fdaec2cea8e036ed38037b2fe40670b",
      "tree": "1c2f85b5d0b762bbd0e8f943017e0a2e1c240aae",
      "parents": [
        "412e0e4ed903682f352d8ea58ded480930cc664f"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Sat Feb 11 11:15:25 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Feb 11 11:15:25 2023 +0000"
      },
      "message": "patch 9.0.1300: \u0027statusline\u0027 only supports one \"%\u003d\" item\n\nProblem:    \u0027statusline\u0027 only supports one \"%\u003d\" item.\nSolution:   Add support for multiple \"%\u003d\" items. (TJ DeVries, Yegappan\n            Lakshmanan, closes #11970, closes #11965)\n"
    },
    {
      "commit": "78012f55faf7444e554c0a97a589d99fa215bea9",
      "tree": "1be0c2873a9fe80dbd806eba1167501c3eb351fa",
      "parents": [
        "be4e01637e71c8d5095c33b9861fd70b41476732"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Thu Feb 02 16:34:11 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Feb 02 16:34:11 2023 +0000"
      },
      "message": "patch 9.0.1275: the code for setting options is too complicated\n\nProblem:    The code for setting options is too complicated.\nSolution:   Refactor the do_set() function. (Yegappan Lakshmanan, Lewis\n            Russell, closes #11932)\n"
    },
    {
      "commit": "d6e4c75af2d6435794f1a9259141d6d7c1923b4c",
      "tree": "09576513c410b594615bc2a73433226a678e728a",
      "parents": [
        "ce93d162da8de2419c15b63286e2f72a8fe3bf2d"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Tue Jan 31 13:25:58 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Jan 31 13:25:58 2023 +0000"
      },
      "message": "patch 9.0.1267: the did_set_string_option function is too long\n\nProblem:    The did_set_string_option function is too long.\nSolution:   Further cleanup of handling string options.  (Yegappan Lakshmanan,\n            Lewis Russell, closes #11920)\n"
    },
    {
      "commit": "eb45ad25ab5022e5bead0dbb19fe5704924f918a",
      "tree": "b98482eb546d0a41df24a288462d3638150f2997",
      "parents": [
        "907349a74331fc1bc48cf43c1e7d54cb9e0e4fc9"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jan 30 19:26:24 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jan 30 19:26:24 2023 +0000"
      },
      "message": "patch 9.0.1264: Motif: compiler warning for unused argument\n\nProblem:    Motif: compiler warning for unused argument.\nSolution:   Add \"UNUSED\".\n"
    },
    {
      "commit": "f2e30d0c448b9754d0d4daa901b51fbbf4c30747",
      "tree": "06e9f4c86a67ae8004ce6527cc0c7e2841e04c1a",
      "parents": [
        "2a99fe6c41efcd5d1eb47823e7e73cf391e230ba"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Mon Jan 30 13:04:42 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jan 30 13:04:42 2023 +0000"
      },
      "message": "patch 9.0.1262: the did_set_string_option function is too long\n\nProblem:    The did_set_string_option function is too long.\nSolution:   Split off functionality to individual functions.  (Yegappan\n            Lakshmanan, Lewis Russell, closes #11904)\n"
    },
    {
      "commit": "8fe5b9c8c1223861cec0484ccc031858ae08d107",
      "tree": "6b267236c05d21fbdfcd0b7ec5400acca4a38249",
      "parents": [
        "d0200c8631582bbb16a9b585e2ca7adccc84ccdd"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jan 28 16:37:37 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jan 28 16:37:37 2023 +0000"
      },
      "message": "patch 9.0.1255: changing \u0027virtualedit\u0027 does not have immediate effect\n\nProblem:    Changing \u0027virtualedit\u0027 does not have immediate effect.\nSolution:   Correct how is checked for a changed value. (closes #11878)\n"
    },
    {
      "commit": "01d4efe2e87632aa085897d3d64e27585908f977",
      "tree": "caf031d3bcea34473aa163f6e7b878add52ba92e",
      "parents": [
        "b0d45ec67f4976318f199a7929ad3bcf93686fd0"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Wed Jan 25 15:31:28 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jan 25 15:31:28 2023 +0000"
      },
      "message": "patch 9.0.1243: :setglobal cannot use script-local function for \"expr\" option\n\nProblem:    :setglobal cannot use script-local function for \"expr\" option.\nSolution:   Use the pointer to the option value properly. (closes #11883)\n"
    },
    {
      "commit": "a41e221935edab62672a15123af48f4f14ac1c7d",
      "tree": "318664da494793bc3edfd6ffafc9d9ed53971dd5",
      "parents": [
        "450c7a97d1a28f715acaf562298112b9b932adc3"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Mon Jan 16 18:19:05 2023 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Jan 16 18:19:05 2023 +0000"
      },
      "message": "patch 9.0.1208: code is indented more than necessary\n\nProblem:    Code is indented more than necessary.\nSolution:   Use an early return where it makes sense. (Yegappan Lakshmanan,\n            closes #11819)\n"
    },
    {
      "commit": "9aee8ec400fe617f6d82441c46a22d0cef6fa3e6",
      "tree": "d8ef22c2177d59f1196dc7d82c540612eff3813c",
      "parents": [
        "4ab1f4a32f7e0fcafa8f542429f1f6c47dcd5d2c"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Dec 16 16:41:23 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri Dec 16 16:41:23 2022 +0000"
      },
      "message": "patch 9.0.1064: code for making \u0027shortmess\u0027 temporarily empty is repeated\n\nProblem:    Code for making \u0027shortmess\u0027 temporarily empty is repeated.\nSolution:   Add functions for making \u0027shortmess\u0027 empty and restoring it.\n            (Christian Brabandt, closes #11709)\n"
    },
    {
      "commit": "ba936f6f4e85cc1408bc3967f9fd7665d948909b",
      "tree": "5c3d87dd658a5c5de01db33af82103dbb96714cc",
      "parents": [
        "3d473ee1a6aed7cb9eae458bbd8d42dffdc754f9"
      ],
      "author": {
        "name": "Luuk van Baal",
        "email": "luukvbaal@gmail.com",
        "time": "Thu Dec 15 13:15:39 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Dec 15 13:15:39 2022 +0000"
      },
      "message": "patch 9.0.1061: cannot display \u0027showcmd\u0027 somewhere else\n\nProblem:    Cannot display \u0027showcmd\u0027 somewhere else.\nSolution:   Add the \u0027showcmdloc\u0027 option. (Luuk van Baal, closes #11684)\n"
    },
    {
      "commit": "269aa2b29ac3e4c0083d929e2477c95e7bd1177a",
      "tree": "2a88ce79a687143de47e66194c37ad70fa3496bb",
      "parents": [
        "38854b565acba39eff36cf3c6396c911bf072bdc"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Mon Nov 28 11:36:50 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Nov 28 11:36:50 2022 +0000"
      },
      "message": "patch 9.0.0963: function name does not match autocmd event name\n\nProblem:    Function name does not match autocmd event name.\nSolution:   Rename \"optionsset\" to \"optionset\". (closes #11630)\n"
    },
    {
      "commit": "63a2e360cca2c70ab0a85d14771d3259d4b3aafa",
      "tree": "9f0d9131e530cf658c2b7bf05e16539a1ebb0a28",
      "parents": [
        "0b6d6a186e961faa5b9058406234ffd93a7e6688"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Nov 23 20:20:18 2022 +0000"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Nov 23 20:20:18 2022 +0000"
      },
      "message": "patch 9.0.0930: cannot debug the Kitty keyboard protocol with TermDebug\n\nProblem:    Cannot debug the Kitty keyboard protocol with TermDebug.\nSolution:   Add Kitty keyboard protocol support to the libvterm fork.\n            Recognize the escape sequences that the protocol generates.  Add\n            the \u0027keyprotocol\u0027 option to allow the user to specify for which\n            terminal what protocol is to be used, instead of hard-coding this.\n            Add recognizing the kitty keyboard protocol status.\n"
    },
    {
      "commit": "49846fb1a31de99f49d6a7e70efe685197423c84",
      "tree": "98b3debbaafbd79b05fe941382086792c1aab8ba",
      "parents": [
        "297164cb7972beff35e375ccac4fbad8196ccbd7"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Oct 15 16:05:33 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Oct 15 16:05:33 2022 +0100"
      },
      "message": "patch 9.0.0761: cannot use \u0027indentexpr\u0027 for Lisp indenting\n\nProblem:    Cannot use \u0027indentexpr\u0027 for Lisp indenting.\nSolution:   Add the \u0027lispoptions\u0027 option.\n"
    },
    {
      "commit": "7904fa420eb577274c4c3711295240100167d495",
      "tree": "a38ab30cb4c947c2ebba45cd7ed711ffd2e719a7",
      "parents": [
        "4ba5f1dab656103e8f4a4505452d1816b9e83c1e"
      ],
      "author": {
        "name": "Martin Tournoij",
        "email": "martin@arp242.net",
        "time": "Tue Oct 04 16:28:45 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Oct 04 16:28:45 2022 +0100"
      },
      "message": "patch 9.0.0657: too many #ifdefs\n\nProblem:    Too many #ifdefs.\nSolution:   Graduate the +cmdwin feature.  Now the tiny and small builds are\n            equal, drop the small build.  (Martin Tournoij, closes #11268)\n"
    },
    {
      "commit": "13ece2ae1d09009d3fb8acf858c288e7848ecdac",
      "tree": "8c157431840de281782b06d8572adf41085f617e",
      "parents": [
        "6b2d4ff7148e0b416ba745d20d061e6f7bb53ee7"
      ],
      "author": {
        "name": "Luuk van Baal",
        "email": "luukvbaal@gmail.com",
        "time": "Mon Oct 03 15:28:08 2022 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Mon Oct 03 15:28:08 2022 +0100"
      },
      "message": "patch 9.0.0647: the \u0027splitscroll\u0027 option is not a good name\n\nProblem:    The \u0027splitscroll\u0027 option is not a good name.\nSolution:   Rename \u0027splitscroll\u0027 to \u0027splitkeep\u0027 and make it a string option,\n            also supporting \"topline\". (Luuk van Baal, closes #11258)\n"
    }
  ],
  "next": "f80f40a55ccff0a4331c5fbd1ac446511f622ed0"
}
