)]}'
{
  "log": [
    {
      "commit": "5a18ccf49007481b1fffcf101e4ce0b36a2db241",
      "tree": "bc8bfd8f1f1e74922bf256cbdb40ab06700af648",
      "parents": [
        "d4110e06952be7d06ba39cf0434626bbd7301a9d"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Sun May 11 13:48:33 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun May 11 13:48:33 2025 +0200"
      },
      "message": "patch 9.1.1381: completion: cannot return to original text\n\nProblem:  Cannot return to the original text after selecting the next\n          item when the currently selected item is the last one.\nSolution: When continuing to move down past the last item, locate the\n          original completion at the head/tail nodes of the completed\n          linked list (glepnir).\n\ncloses: #17300\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "d4110e06952be7d06ba39cf0434626bbd7301a9d",
      "tree": "abca14a0b3c4d598e31c0fa61d080c92cffba8f0",
      "parents": [
        "73440245361f3399b88c872236830da3086ad942"
      ],
      "author": {
        "name": "Sean Dewar",
        "email": "6256228+seandewar@users.noreply.github.com",
        "time": "Sun May 11 13:45:21 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun May 11 13:45:21 2025 +0200"
      },
      "message": "patch 9.1.1380: \u0027eventignorewin\u0027 only checked for current buffer\n\nProblem:  When an autocommand executes for a non-current buffer,\n          \u0027eventignorewin\u0027 is only checked from the buffer\u0027s last\n          wininfo (overwrites win_ignore in the loop), not from the\n          value of \u0027eventignorewin\u0027 in all windows showing the buffer as\n          described (after v9.1.1084)\n\nSolution: Fix the check and don\u0027t use wininfo, as that may only contain\n          windows that recently showed the buffer. Consider all the\n          buffer\u0027s windows in all tabpages (Sean Dewar).\n\ncloses: #17294\n\nSigned-off-by: Sean Dewar \u003c6256228+seandewar@users.noreply.github.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "cf488ebf6c87d8abc1e2b09885d3767511db87a3",
      "tree": "6034360984ea4610a5b2a77987dd1bf78cc831a8",
      "parents": [
        "1b186833c1cabeb4da3c855596b9161ff982bcfc"
      ],
      "author": {
        "name": "GuyBrush",
        "email": "miguel.barro@live.com",
        "time": "Sat May 10 20:44:33 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat May 10 20:44:33 2025 +0200"
      },
      "message": "patch 9.1.1379: MS-Windows: error when running evim when space in path\n\nProblem:  MS-Windows: error when running evim when space in path of Vim\nSolution: properly parse quoted strings (Miguel Barro)\n\nWhen vim is installed in a path with whitespaces (like\n`C:\\Program Files (x86)\\Vim\\vim91\\vim.exe`). Launching `evim` or\n`vim -d` will try to open the file ` (x86)\\Vim\\vim91\\vim.exe`.\n\nModern versions of vim simplify shell operation by parsing its own\ncommand line. For example on Linux all vim flavours like `evim`, `rvim`,\netc are symlinks to vim. Then vim uses the `parse_command_name()`\nfunction to identify which version of vim it should launch.\nFor `evim` if a GUI is available `gvim` is launched for better user\nexperience. In order to launch `gvim` the original command line is\nparsed to be passed *verbatim* to the new instance.\nThis parsing did not properly handle quoted command lines with\nwhitespaces such as\n```\n\"C:\\Program Files (x86)\\Vim\\vim91\\vim.exe\" -y myfile.txt\n```\n\ncloses: #17295\n\nSigned-off-by: Miguel Barro \u003cmiguel.barro@live.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "1b186833c1cabeb4da3c855596b9161ff982bcfc",
      "tree": "dedc922547bd26d25ab2084e74fc43a6eb128c60",
      "parents": [
        "0553f2ff0d170db3f4649a7aaa74b635b1101eed"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Sat May 10 14:59:08 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat May 10 14:59:08 2025 +0200"
      },
      "message": "patch 9.1.1378: sign without text overwrites number option\n\nProblem:  When \u0027signcolumn\u0027 is set to `number` but a line has a sign\n          without text, the line number disappears (finite-state-machine)\nSolution: Verify that a sign actually contains text before rendering the\n          line number (glepnir)\n\nfixes: #17169\ncloses: #17282\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "d8ebccbb10623f7d73b27f77dedc47158a0e7110",
      "tree": "d57f731fb1afe5120561909d47d01276fc2a3af6",
      "parents": [
        "6b7637e6bb3c231b8198e3eb9a3f7f558eb67188"
      ],
      "author": {
        "name": "Drew Vogel",
        "email": "dvogel@github",
        "time": "Sat May 10 14:46:28 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat May 10 14:46:28 2025 +0200"
      },
      "message": "patch 9.1.1377: patch v9.1.1370 causes some GTK warning messages\n\nProblem:  Some GTK3 users experienced unexpectedly small windows at\n          startup (after v9.1.1368, @berggeist, Tony Mechelynck)\nSolution: Update window manager hints in gui_mch_open, partly revert\n          v9.1.1370 (Drew Vogel)\n\nfixes: #17279\ncloses: #17288\n\nSigned-off-by: Drew Vogel \u003cdvogel@github\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "270124f46ae6266ac7eee871e28d3072dd7d5a92",
      "tree": "77a4877548b1913bde550980eba799fec4942f9e",
      "parents": [
        "b4074ead5cd8751f0460e157471028dbb77ca1e9"
      ],
      "author": {
        "name": "Sean Dewar",
        "email": "6256228+seandewar@users.noreply.github.com",
        "time": "Sat May 10 14:33:28 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat May 10 14:33:28 2025 +0200"
      },
      "message": "patch 9.1.1376: quickfix dummy buffer may remain as dummy buffer\n\nProblem:  when failing to wipeout a quickfix dummy buffer, it will\n          remain as a dummy buffer, despite being kept.\nSolution: clear its dummy BF_DUMMY flag in this case (Sean Dewar).\n\ncloses: #17283\n\nSigned-off-by: Sean Dewar \u003c6256228+seandewar@users.noreply.github.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "b4074ead5cd8751f0460e157471028dbb77ca1e9",
      "tree": "d242de77149f09fb65a8c2bef372594f1b26f44f",
      "parents": [
        "9955c125fa1ef4273faa5760c3bb957aabdbfc28"
      ],
      "author": {
        "name": "Sean Dewar",
        "email": "6256228+seandewar@users.noreply.github.com",
        "time": "Sat May 10 14:30:36 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat May 10 14:30:36 2025 +0200"
      },
      "message": "patch 9.1.1375: [security]: possible heap UAF with quickfix dummy buffer\n\nProblem:  heap use-after-free possible when autocommands switch away from the\n          quickfix dummy buffer, but leave it open in a window.\nSolution: close its windows first before attempting the wipe.\n          (Sean Dewar)\n\nrelated: #17283\n\nSigned-off-by: Sean Dewar \u003c6256228+seandewar@users.noreply.github.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "314150912eea35e9791d92fbb06cadde111c1b19",
      "tree": "f75ab0526769c51da94fa48b1454b67d3479e0e4",
      "parents": [
        "17ad852a62b6e2cf25207292ebca7a748e529d59"
      ],
      "author": {
        "name": "Christ van Willegen",
        "email": "cvwillegen@gmail.com",
        "time": "Fri May 09 00:08:01 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri May 09 00:08:01 2025 +0200"
      },
      "message": "typo in comment in gui.c\n\nProblem:  typo in comment in gui.c (after v9.1.1367)\nSolution: fix the typo  (Christ van Willegen)\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "dc314053e121b0a995bdfbcdd2f03ce228e14eb3",
      "tree": "0462be3ecc090b03d010eb0dde42d03f9edc9c18",
      "parents": [
        "c3fbaa086e338486673d4cffbcbd18466ad2ac09"
      ],
      "author": {
        "name": "Girish Palya",
        "email": "girishji@gmail.com",
        "time": "Thu May 08 23:28:52 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu May 08 23:28:52 2025 +0200"
      },
      "message": "patch 9.1.1374: completion: \u0027smartcase\u0027 not respected when filtering matches\n\nProblem:  Currently, \u0027smartcase\u0027 is respected when completing keywords\n          using \u003cC-N\u003e, \u003cC-P\u003e, \u003cC-X\u003e\u003cC-N\u003e, and \u003cC-X\u003e\u003cC-P\u003e. However, when\n          a user continues typing and the completion menu is filtered\n          using cached matches, \u0027smartcase\u0027 is not applied. This leads\n          to poor-quality or irrelevant completion suggestions, as shown\n          in the example below.\nSolution: When filtering cached completion items after typing additional\n          characters, apply case-sensitive comparison if \u0027smartcase\u0027 is\n          enabled and the typed pattern includes uppercase characters.\n          This ensures consistent and expected completion behavior.\n          (Girish Palya)\n\ncloses: #17271\n\nSigned-off-by: Girish Palya \u003cgirishji@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "c3fbaa086e338486673d4cffbcbd18466ad2ac09",
      "tree": "ca8d9243c0967d1133b30cfab1d5444398db3746",
      "parents": [
        "1eb8d0873891ec1e6b458a30194c7bbc7d90d26e"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Thu May 08 23:05:10 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu May 08 23:05:10 2025 +0200"
      },
      "message": "patch 9.1.1373: \u0027completeopt\u0027 checking logic can be simplified\n\nProblem:  Flag checking logic uses a temporary variable and multiple\n          bitwise operations in insexpand.c\nSolution: Consolidate into a single equality check using bitwise OR and\n          comparison (glepnir)\n\ncloses: #17276\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "a4a00a7ad0cfa26685c057c11a09bec2c962346a",
      "tree": "88846057d36493359bda8bef43423e5e17eb4378",
      "parents": [
        "19e1dd6b6aeb96d64122332a8c3d17b9d5ca007b"
      ],
      "author": {
        "name": "Hirohito Higashi",
        "email": "h.east.727@gmail.com",
        "time": "Thu May 08 22:58:31 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu May 08 22:58:31 2025 +0200"
      },
      "message": "patch 9.1.1372: style: braces issues in various files\n\nProblem:  style: braces issues in various files\nSolution: fix style (Hirohito Higashi)\n\ncloses: #17277\n\nSigned-off-by: Hirohito Higashi \u003ch.east.727@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "19e1dd6b6aeb96d64122332a8c3d17b9d5ca007b",
      "tree": "a34bc5cea354adfc6cbc669b95db2db7004370f6",
      "parents": [
        "ea67ba718d8af10cb7aa3b91379203f5dd7e50d7"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Thu May 08 22:50:38 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu May 08 22:50:38 2025 +0200"
      },
      "message": "patch 9.1.1371: style: indentation and brace issues in insexpand.c\n\nProblem:  style: indentation issue in insexpand.c\nSolution: update style (glepnir)\n\ncloses: #17278\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "ea67ba718d8af10cb7aa3b91379203f5dd7e50d7",
      "tree": "7a206131b7f0bcc4a90e800ba7ab1a14c9189f88",
      "parents": [
        "9670f61d4680bd54f5e055b75b00b56c119f9ae6"
      ],
      "author": {
        "name": "Drew Vogel",
        "email": "dvogel@github",
        "time": "Wed May 07 22:05:17 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed May 07 22:05:17 2025 +0200"
      },
      "message": "patch 9.1.1370: CI Tests favor GTK2 over GTK3\n\nProblem:  CI Tests favor GTK2 over GTK3\nSolution: Install GTK3 dependencies and debug packages for CI workflows,\n          update ASAN suppression list, update required dependency\n          checks for the tests (Drew Vogel)\n\ncloses: #17253\n\nSigned-off-by: Drew Vogel \u003cdvogel@github\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "9670f61d4680bd54f5e055b75b00b56c119f9ae6",
      "tree": "efbd865fa53ef87e4bacabf46a80259b7bee42c1",
      "parents": [
        "48b19b29eef4a05df6d0f87e7f87b5d4db5e87df"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed May 07 21:44:33 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed May 07 21:44:33 2025 +0200"
      },
      "message": "patch 9.1.1369: configure still using autoconf 2.71\n\nProblem:  configure still using autoconf 2.71\nSolution: regenerate with autoconf 2.72\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "48b19b29eef4a05df6d0f87e7f87b5d4db5e87df",
      "tree": "f911b818e3dbc19403275b3619ce3aa481379647",
      "parents": [
        "d2fcbb465d354029e9b085f7fbadc9c0a791b155"
      ],
      "author": {
        "name": "Drew Vogel",
        "email": "dvogel@github",
        "time": "Wed May 07 21:32:03 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed May 07 21:36:03 2025 +0200"
      },
      "message": "patch 9.1.1368: GTK3 and GTK4 will drop numeric cursor support.\n\nProblem:  GTK3 and GTK4 will drop numeric cursor support.\nSolution: Adopt GTK3 code and use CSS cursor convention (Drew Vogel).\n\ncloses: #14610\n\nSigned-off-by: Drew Vogel \u003cdvogel@github\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "d2fcbb465d354029e9b085f7fbadc9c0a791b155",
      "tree": "b332af80ed44c35640b830c91b3dfa7c4711a00c",
      "parents": [
        "38972d8b1ae2be48e63b9cbe086084a52198c9aa"
      ],
      "author": {
        "name": "John Marriott",
        "email": "basilisk@internode.on.net",
        "time": "Wed May 07 19:59:42 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed May 07 19:59:42 2025 +0200"
      },
      "message": "patch 9.1.1367: too many strlen() calls in gui.c\n\nProblem:  too many strlen() calls in gui.c\nSolution: refactor gui.c slightly (John Marriott)\n\nThis does the following changes:\n- use macro STRCMP() instead of strcmp().\n- refactor gui_outstr_nowrap() to remove call to STRLEN().\n- refactor get_tabline_label() in attempt to simply it. At the same time\n  use standard looping construct for iterating over windows in a tab.\n  Move variables closer to where they are used. Add check that we don\u0027t\n  exceed size of NameBuff.\n- small optimisation in get_find_dialog_text() to measure the string\n  length once.\n\ncloses: #17269\n\nSigned-off-by: John Marriott \u003cbasilisk@internode.on.net\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "38972d8b1ae2be48e63b9cbe086084a52198c9aa",
      "tree": "8cd129c4a0b3893ab7e2155119d487e6137f388d",
      "parents": [
        "0fb6ceac4ce6c2360a1c45d41ca72779af9f6b2f"
      ],
      "author": {
        "name": "Hirohito Higashi",
        "email": "h.east.727@gmail.com",
        "time": "Tue May 06 18:13:29 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue May 06 18:13:29 2025 +0200"
      },
      "message": "patch 9.1.1366: v9.1.1364 unintentionally changed sign.c and sound.c\n\nProblem:  v9.1.1364 unintentionally changed sign.c and sound.c\nSolution: revert those parts, adjust the test (Hirohito Higashi)\n\ncloses: #17264\n\nSigned-off-by: Hirohito Higashi \u003ch.east.727@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "51f6a78ce250f133b29b0e5aabafa9826fd15e4f",
      "tree": "e755bea4745cf85b07468c3cbe86005df529c465",
      "parents": [
        "8ac3f5dd3a47792779e6041cf13b9cac18044008"
      ],
      "author": {
        "name": "John Marriott",
        "email": "basilisk@internode.on.net",
        "time": "Sun May 04 21:35:36 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun May 04 21:35:36 2025 +0200"
      },
      "message": "patch 9.1.1365: MS-Windows: compile warnings and too many strlen() calls\n\nProblem:  MS-Windows: compile warnings and too many strlen() calls  in\n          os_mswin.c\nSolution: refactor os_mswin.c and fix the warning (John Marriott)\n\nThis change does the following:\n\n- Fix compile warnings (clang 20.1.3) in `mch_libcall()`:\n```\nos_mswin.c:902:21: warning: cast from \u0027MYSTRPROCSTR\u0027 (aka \u0027char *(*)(char *)\u0027) to \u0027MYSTRPROCINT\u0027 (aka \u0027int (*)(char *)\u0027) converts to incompatible function type [-Wcast-function-type-mismatch]`\n  902 |                     retval_int \u003d ((MYSTRPROCINT)ProcAdd)((LPSTR)argstring);`\n      |                                   ^~~~~~~~~~~~~~~~~~~~~`\nos_mswin.c:914:21: warning: cast from \u0027MYINTPROCSTR\u0027 (aka \u0027char *(*)(int)\u0027) to \u0027MYINTPROCINT\u0027 (aka \u0027int (*)(int)\u0027) converts to incompatible function type [-Wcast-function-type-mismatch]`\n  914 |                     retval_int \u003d ((MYINTPROCINT)ProcAddI)(argint);`\n      |                                   ^~~~~~~~~~~~~~~~~~~~~~`\n2 warnings generated.\n```\n\n- Refactor `stat_impl()` to remove call to `STRLEN()` (via `STRCAT()`).\n\n- Refactor `Messaging_WndProc()`, `enumWindowsGetServer()` and\n  `serverSendToVim()` to remove calls to `STRLEN()`.\n\n- Use `string_T` to store field `name` in `struct charset_pair` and\n  `struct quality_pair`. This means we can dispense with some calls to\n  `STRLEN()`.\n\n- Use `ARRAY_LENGTH()` macro to determine end of array in\n  `charset_id2name()` and `quality_id2name()` to be consistent with the\n  rest of the code base.\n\ncloses: #17222\n\nSigned-off-by: John Marriott \u003cbasilisk@internode.on.net\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "562610cfa327c8ebff12a1700525e17a070d5e2c",
      "tree": "b5e4940ae61718ae2f5aad48d21b211ae243b4c0",
      "parents": [
        "e957cba081d75bc9054230a26ebeeb0f43d901bd"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Sun May 04 21:05:51 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun May 04 21:10:06 2025 +0200"
      },
      "message": "patch 9.1.1364: style: more indentation issues\n\nProblem:  style: more indentation issues\nSolution: fix indentation style\n          (Yegappan Lakshmanan)\n\ncloses: #17256\n\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "c2a9000bc1b4a2cbcfeef55450c184b16906d910",
      "tree": "da4d2ac828d42d5005272335670ebbc368b3f7dd",
      "parents": [
        "41cddfa177096168ea7f7c4f2a2857c0d76ce5d8"
      ],
      "author": {
        "name": "Naruhiko Nishino",
        "email": "naru123456789@gmail.com",
        "time": "Sun May 04 20:05:47 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun May 04 20:05:47 2025 +0200"
      },
      "message": "patch 9.1.1363: style: inconsistent indentation in various files\n\nProblem:  style: inconsistent indentation in various files\nSolution: fix style, updated codestyle test\n          (Naruhiko Nishino)\n\ncloses: #17254\n\nSigned-off-by: Naruhiko Nishino \u003cnaru123456789@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "41cddfa177096168ea7f7c4f2a2857c0d76ce5d8",
      "tree": "bd2164439d863eb15f072dd67e23748495ccd44e",
      "parents": [
        "951d025af13516be1dd182b8d0798a78bf93b33c"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Sat May 03 19:11:45 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat May 03 19:11:45 2025 +0200"
      },
      "message": "patch 9.1.1362: Vim9: type ignored when adding tuple to instance list var\n\nProblem:  Vim9: type ignored when adding tuple to instance list var\n          (Lifepillar)\nSolution: When getting the typval of class and object member variables,\n          set the variable type (Yegappan Lakshmanan)\n\nfixes: #17236\ncloses: #17244\n\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "6cb1c828406dcbb9b67ee788501b94f3a0bac88a",
      "tree": "43e4889b00b2adc95b10f93bb8b1df38d289500a",
      "parents": [
        "c3f48e3a76c61884d7801171ced327b76965bf29"
      ],
      "author": {
        "name": "Sean Dewar",
        "email": "6256228+seandewar@users.noreply.github.com",
        "time": "Sat May 03 18:37:27 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat May 03 18:37:27 2025 +0200"
      },
      "message": "patch 9.1.1361: [security]: possible use-after-free when closing a buffer\n\nProblem:  [security]: Possible to open more windows into a closing\n          buffer without splitting, bypassing existing \"b_locked_split\"\n          checks and triggering use-after-free\nSolution: Disallow switching to a closing buffer. Editing a closing\n          buffer (via \":edit\", etc.) was fixed in v9.1.0764, but add an\n          error message and check just \"b_locked_split\", as \"b_locked\"\n          is necessary only when the buffer shouldn\u0027t be wiped, and may\n          be set for buffers that are in-use but not actually closing.\n          (Sean Dewar)\n\ncloses: #17246\n\nSigned-off-by: Sean Dewar \u003c6256228+seandewar@users.noreply.github.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "af4a5d6e2ae57a44edab48c8b012d2afa743998f",
      "tree": "de04a3487ef5664a1de2026f4e8f29058875fbaa",
      "parents": [
        "9c9200d1eafe50077222a38bfad6cba7156a6487"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Fri May 02 15:35:58 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri May 02 15:35:58 2025 +0200"
      },
      "message": "patch 9.1.1360: filetype: GNU Radio companion files are not recognized\n\nProblem:  filetype: GNU Radio companion files are not recognized\nSolution: detect *.grc files as xml or yaml filetype depending on the\n          first line (zeertzjq).\n\nRef:\n- https://wiki.gnuradio.org/index.php/XML_GRC\n- https://wiki.gnuradio.org/index.php/YAML_GRC\n\ncloses: #17241\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "9c9200d1eafe50077222a38bfad6cba7156a6487",
      "tree": "9beb0c3e7dcfba6bb08c7f9be136b7cc64e5b572",
      "parents": [
        "7292c0cb157621d6c0552a19a41b691ccd5b9ed4"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Fri May 02 15:32:23 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri May 02 15:32:23 2025 +0200"
      },
      "message": "patch 9.1.1359: filetype: GNU Radio config files are not recognized\n\nProblem:  filetype: GNU Radio config files are not recognized.\nSolution: detect GNU Radio config files as confini filetype.  Only\n          allow \u0027#\u0027 as start of comment in confini syntax (zeertzjq).\n\nRef:\n- https://wiki.gnuradio.org/index.php/Configuration_Files\n\ncloses: #17242\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "7292c0cb157621d6c0552a19a41b691ccd5b9ed4",
      "tree": "8da67c5c75e3895474c7ca94336ebe3dcf207256",
      "parents": [
        "1c58019a827120de5dace0030af3cd62db0e2282"
      ],
      "author": {
        "name": "lilydjwg",
        "email": "lilydjwg@gmail.com",
        "time": "Fri May 02 15:17:14 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri May 02 15:17:14 2025 +0200"
      },
      "message": "patch 9.1.1358: if_lua: compile warnings with gcc15\n\nProblem:  if_lua: compile warnings with gcc15\nSolution: update function prototypes (lilydjwg)\n\nsee also https://github.com/ruby/ruby/pull/13202.\n\ncloses: #17243\n\nSigned-off-by: lilydjwg \u003clilydjwg@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "6af20a9be3312045c38ca24b93f2d5d0d70da0b1",
      "tree": "3d069275ea4ad6e2d370f376d846d392e2b15cbb",
      "parents": [
        "f5bfc48c0596aead6dd30438930d2cb621b18a35"
      ],
      "author": {
        "name": "Phạm Bình An",
        "email": "phambinhanctb2004@gmail.com",
        "time": "Thu May 01 17:30:58 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu May 01 17:30:58 2025 +0200"
      },
      "message": "patch 9.1.1357: Vim incorrectly escapes tags with \"[\" in a help buffer\n\nProblem:  Vim incorrectly escapes tags containing \"[\" in a help buffer\nSolution: check if the buffer has the \"help\" filetype set, instead of\n          already being a help buffer (Phạm Bình An)\n\nfixes: #17224\ncloses: #17232\n\nCo-authored-by: Christian Brabandt \u003ccb@256bit.org\u003e\nCo-authored-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Phạm Bình An \u003cphambinhanctb2004@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "f5bfc48c0596aead6dd30438930d2cb621b18a35",
      "tree": "0f88bd458b4830db5ca7aa45bdfccabc7e6c4b13",
      "parents": [
        "f57c065e7572beb2b551d1278bf794f4af0fb0c0"
      ],
      "author": {
        "name": "Hirohito Higashi",
        "email": "h.east.727@gmail.com",
        "time": "Thu May 01 08:56:39 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu May 01 08:56:39 2025 +0200"
      },
      "message": "patch 9.1.1356: Vim9: crash when unletting variable\n\nProblem:  Vim9: crash when unletting variable\nSolution: fix crash, allow to use :unlet\n          (Hirohito Higashi)\n\ncloses: #17226\n\nSigned-off-by: Hirohito Higashi \u003ch.east.727@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "fb08192ca75344d6467f9e7f9b9e6d4509df308a",
      "tree": "135938cbcafcaa64231e0cb23245828c87fcaf05",
      "parents": [
        "fa8b7db99afad9074e4e1f89b49046836ac61d5b"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Apr 30 19:31:58 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Apr 30 19:35:09 2025 +0200"
      },
      "message": "runtime(doc): clarify the use of \u0027tagfunc\u0027, update a comment in tags.c\n\nrelated: #17228\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "c3e71d4da6633f2804ef3212dcd6ac615580417c",
      "tree": "e3651dce0e2cc98213ca09f5fd9c26f6ca96f4c8",
      "parents": [
        "a74d5503d5ba865d5ef17b77d449613fde02cb02"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Tue Apr 29 18:27:05 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 29 18:27:05 2025 +0200"
      },
      "message": "patch 9.1.1355: The pum_redraw() function is too complex\n\nProblem:  The pum_redraw function is too complex and difficult to\n          maintain with nested loops and mixed responsibilities handling\n          both RTL and LTR text rendering.\nSolution: Extracted core rendering logic into dedicated helper functions\n          (pum_display_rtl_text, pum_display_ltr_text, pum_draw_scrollbar,\n          pum_process_item) while preserving the original behavior. This\n          improves code readability and maintainability (glepnir).\n\ncloses: #17204\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "a74d5503d5ba865d5ef17b77d449613fde02cb02",
      "tree": "6948cef88945842c825b16df44044b69c8d9e5cd",
      "parents": [
        "612f63bf81b180c9886483188f7a2814967d4a95"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 29 18:21:31 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 29 18:21:31 2025 +0200"
      },
      "message": "patch 9.1.1354: tests: Test_terminalwinscroll_topline() fails on Windows\n\nProblem:  tests: Test_terminalwinscroll_topline() fails on Windows\n          (after v9.1.1348)\nSolution: instead of disabling it in Github Actions runners, disable it\n          for all Windows runs\n\nrelated: #17196\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "612f63bf81b180c9886483188f7a2814967d4a95",
      "tree": "0619b8d81d0a5b7cfed5d40e8735b2b41bb37ecd",
      "parents": [
        "be51e90497c3e4cd7dd9332d28a72eeabe55d082"
      ],
      "author": {
        "name": "Girish Palya",
        "email": "girishji@gmail.com",
        "time": "Mon Apr 28 18:29:52 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Apr 28 18:29:52 2025 +0200"
      },
      "message": "patch 9.1.1353: missing change from v9.1.1350\n\nProblem:  missing change from v9.1.1350\nSolution: update the test Test_CmdlineTrigger() (Girish Palya)\n\nrelated: #17217\n\nSigned-off-by: Girish Palya \u003cgirishji@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "355db99d12a89f05765948b33eecd6d9733e16bb",
      "tree": "f1ee2fdb9150f8afa39275dce7174a7638d22b0d",
      "parents": [
        "92403697746a3ebaeb4ad267da2c7eb9c0e7b0bb"
      ],
      "author": {
        "name": "Hirohito Higashi",
        "email": "h.east.727@gmail.com",
        "time": "Mon Apr 28 18:07:02 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Apr 28 18:07:02 2025 +0200"
      },
      "message": "patch 9.1.1352: style: inconsistent indent in insexpand.c\n\nProblem:  style: inconsistent indent in insexpand.c\nSolution: fix indentation (Hirohito Higashi)\n\ncloses: #17219\n\nSigned-off-by: Hirohito Higashi \u003ch.east.727@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "92403697746a3ebaeb4ad267da2c7eb9c0e7b0bb",
      "tree": "5c564338a9921605d87e951905ed2b0676621cd5",
      "parents": [
        "6220bbad4ee4f41398680fcfad6119398477eaa6"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Mon Apr 28 18:04:00 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Apr 28 18:04:00 2025 +0200"
      },
      "message": "patch 9.1.1351: Return value of getcmdline() inconsistent in CmdlineLeavePre\n\nProblem:  Return value of getcmdline() inconsistent in CmdlineLeavePre\n          when leaving cmdline in different ways (after v9.1.1329).\nSolution: Trigger CmdlineLeavePre before calling abandon_cmdline() so\n          that getcmdline() can return the command line (zeertzjq).\n\ncloses: #17218\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Girish Palya \u003cgirishji@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "6220bbad4ee4f41398680fcfad6119398477eaa6",
      "tree": "5b628864fa44174e1b4fdb86e63cb8c30f175012",
      "parents": [
        "910bfd5d38812079bf31cc91eb6978415f29b725"
      ],
      "author": {
        "name": "Girish Palya",
        "email": "girishji@gmail.com",
        "time": "Mon Apr 28 18:00:40 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Apr 28 18:00:40 2025 +0200"
      },
      "message": "patch 9.1.1350: tests: typo in Test_CmdlineLeavePre_cabbr()\n\nProblem:  tests: typo in Test_CmdlineLeavePre_cabbr()\n          (after v9.1.1349)\nSolution: fix typo, disable failing test on Windows for now\n          (Girish Palya)\n\ncloses: #17217\n\nSigned-off-by: Girish Palya \u003cgirishji@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "46755e6b52b0c4346c1c7eaa311c204fdd9185df",
      "tree": "db3a6726557e69161b5aef6758f8e202ce896998",
      "parents": [
        "b9ffbf57f86e7b78021e2c8899ee0aa06966ddf5"
      ],
      "author": {
        "name": "Girish Palya",
        "email": "girishji@gmail.com",
        "time": "Sun Apr 27 19:28:06 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Apr 27 19:28:06 2025 +0200"
      },
      "message": "patch 9.1.1349: CmdlineLeavePre may trigger twice\n\nProblem:  CmdlineLeavePre may trigger twice\n          (after v9.1.1329)\nSolution: check that the key was typed, trigger it when it wasn\u0027t before\n          (Girish Palya)\n\nThere are two problems:\n- CmdlineLeavePre may be triggered twice when a cabbr is present.\n- CmdlineLeavePre fails to trigger when exiting the command-line via\n  \u003cBackspace\u003e.\n\nCheck if the Carriage Return (Enter) key was actually typed.\nTrigger the event when the command-line is exited using Backspace and\nother keys.\n\ncloses: #17214\n\nSigned-off-by: Girish Palya \u003cgirishji@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "fa9753a721c6ea2d30f666aada0689d6ec2f2fd6",
      "tree": "971a2cf1a63b0bbcee8a5f7f1ebae89a5bf3b3a4",
      "parents": [
        "fbe4a8f5c0fbaa99ffa5b67081c10c85bc88a91a"
      ],
      "author": {
        "name": "Hirohito Higashi",
        "email": "h.east.727@gmail.com",
        "time": "Sun Apr 27 15:36:43 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Apr 27 15:36:43 2025 +0200"
      },
      "message": "patch 9.1.1348: still E315 with the terminal feature\n\nProblem:  still E315 with the terminal feature\n          (user202729)\nSolution: call update_topline() in limit_scrollback()\n          (Hirohito Higashi)\n\nfixes: #17195\ncloses: #17196\n\nSigned-off-by: Hirohito Higashi \u003ch.east.727@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "fbe4a8f5c0fbaa99ffa5b67081c10c85bc88a91a",
      "tree": "5e5c63f61a47aef4ec2109f329f1bb1e75ccce48",
      "parents": [
        "411ae580a9149072be29756d3a654b78c96add0b"
      ],
      "author": {
        "name": "Hirohito Higashi",
        "email": "h.east.727@gmail.com",
        "time": "Sun Apr 27 15:28:30 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Apr 27 15:28:30 2025 +0200"
      },
      "message": "runtime(doc): Fix notation of \"Vim script\" and \"Vim9 script\"\n\ncloses: #17213\n\nSigned-off-by: Hirohito Higashi \u003ch.east.727@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "411ae580a9149072be29756d3a654b78c96add0b",
      "tree": "f34248e63a5f97359f13a93fb5f17ff609dc8d23",
      "parents": [
        "ffc89e47d014178bcd0a681ff2c8e18470cc972b"
      ],
      "author": {
        "name": "John Marriott",
        "email": "basilisk@internode.on.net",
        "time": "Sun Apr 27 15:05:06 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Apr 27 15:05:06 2025 +0200"
      },
      "message": "patch 9.1.1347: small problems with gui_w32.c\n\nProblem:  small problems with gui_w32.c\nSolution: fix compile warnings and refactor code (John Marriott)\n\nCompiler (clang v20.1.3) warnings on `_OnMenuSelect()` and\n`_OnGetDpiScaledSize()`:\n```\nclang -c -I. -Iproto -DWIN32 -DWINVER\u003d0x0601 -D_WIN32_WINNT\u003d0x0601\n-DHAVE_PATHDEF -DFEAT_HUGE -DHAVE_STDINT_H -D__USE_MINGW_ANSI_STDIO\n-pipe -Wall -Wno-deprecated-declarations -D_REENTRANT -U_FORTIFY_SOURCE\n-D_FORTIFY_SOURCE\u003d1 -Wall -Wextra -Wshadow -Wstrict-prototypes\n-Wmissing-prototypes -Wno-deprecated-declarations\n-Wno-error\u003dmissing-field-initializers -Werror\u003duninitialized\n-Wunused-but-set-variable -DEXITFREE -DFEAT_GUI_MSWIN -DFEAT_CLIPBOARD\ngui_w32.c -o gobjx86-64/gui_w32.o\ngui_w32.c:5038:55: warning: comparison of integers of different signs:\n\u0027UINT\u0027 (aka \u0027unsigned int\u0027) and \u0027int\u0027 [-Wsign-compare]\n 5038 |                 \u0026\u0026 GetMenuState(s_menuBar, pMenu-\u003eid, MF_BYCOMMAND) !\u003d -1)\n      | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~\ngui_w32.c:5054:26: warning: unused parameter \u0027hwnd\u0027 [-Wunused-parameter]\n 5054 | _OnGetDpiScaledSize(HWND hwnd, UINT dpi, SIZE *size)\n      |                          ^\n2 warnings generated.\n```\n\nThis commit contains the following changes:\n- Fixes Warning 1:\n  The prototype of `GetMenuState()` says that it returns a UINT, but\n  returns -1 on failure. Huh?!?\n\n  Also, Microsoft says that this function has been superseded (see\n  https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getmenustate)\n  and replaced by `GetMenuItemInfo()`. Both of these functions have a\n  minimum support of Windows 2000.\n  Therefore in `_OnMenuSelect()`, replace the call to `GetMenuState()`\n  with `GetMenuItemInfo()`.\n\n- Fixes Warning 2:\n  Add `UNUSED` to the definition of `_OnGetDpiScaledSize()`.\n\n- Simplify `logfont2name()`.\n- Add small optimisations in `_OnNotify()` and `gui_mch_do_spawn()`.\n- Add out-of-memory check in `gui_mch_do_spawn()`.\n- Code cosmetics (see definitions of `process_message_usual_key_classic()`\n  and `process_message()`).\n\ncloses: #17208\n\nSigned-off-by: John Marriott \u003cbasilisk@internode.on.net\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "c25368ba14a7135b685ba3d6941f26bc630a2501",
      "tree": "8898964cb6565be00646e5dfab371769e96a25c6",
      "parents": [
        "cf2642fc72be6da0db56f81b58af66b6835e277b"
      ],
      "author": {
        "name": "John Marriott",
        "email": "basilisk@internode.on.net",
        "time": "Fri Apr 25 19:14:38 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Apr 25 19:14:38 2025 +0200"
      },
      "message": "patch 9.1.1346: missing out-of-memory check in textformat.c\n\nProblem:  missing out-of-memory check in textformat.c\nSolution: add out-of-memory check, add small optimizations to\n          internal_format() and same_leader() (John Marriott)\n\ncloses: #17200\n\nSigned-off-by: John Marriott \u003cbasilisk@internode.on.net\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "cf2642fc72be6da0db56f81b58af66b6835e277b",
      "tree": "5ca5a6828a23b1e1d2ab751a045fdd172312af2b",
      "parents": [
        "35cfc3d3c449eaee97ba2c32cca76134136de5ec"
      ],
      "author": {
        "name": "Drew Vogel",
        "email": "dvogel@github",
        "time": "Fri Apr 25 19:06:53 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Apr 25 19:06:53 2025 +0200"
      },
      "message": "patch 9.1.1345: tests: Test_xxd_color2() test failure dump diff is misleading\n\nProblem:  tests: Test_xxd_color2() test failure dump diff is misleading\nSolution: Ensure the reference dump and the test dump are both processed the\n          same (Drew Vogel).\n\nBackground:\n\nCommit b6dc76b6fd23e571d309064b795847ee9ffc7689 sought to make the xxd\nscreendump tests compatible with non-standard `XXD` overrides. It provides a\nvim script that matches a very general `xxd` command pattern but then also\nremoved the matching line from the reference dump. This second step was\nunnecessary because `VerifyScreenDump()` runs the associated vim script against\nboth the reference dump and the test dump.\n\nProblem Details:\n\nAs part of some unrelated work, the GUI tests were failing with a window size 1\ncolumn too narrow. The screendumps in `Test_xxd_color2` were failing as a\nresult. When I loaded the diff using `term_dumpdiff()` the associated vim\nscripts are not run. As a result, the test dump contained the `xxd` invocation\non line 1 while reference dump did not. This throws the diff off, obscuring the\ntrue issue of the GUI window being too narrow.\n\nVerification:\n\nIn addition to the test suite, locally I\u0027ve tried to recreate the issue being\nfixed in b6dc76b6fd23e571d309064b795847ee9ffc7689. Setting a very non-standard\n`XXD` path, this test still passes:\n\n```\nXXD\u003d/home/dvogel/opt/vim/bin/xxd TEST_FILTER\u003dTest_xxd_color2 TERM\u003dxterm-color make test_xxd\nrm -f test_xxd.res test.log messages starttime\nif test -n \"${ASAN_OPTIONS}\"; then \\\n   XXD\u003d../xxd/xxd; export XXD; ASAN_OPTIONS\u003d\"${ASAN_OPTIONS}_test_xxd\" \\\nUBSAN_OPTIONS\u003d\"${UBSAN_OPTIONS}_test_xxd\" VIMRUNTIME\u003d../../runtime  ../vim -f \\\n-u unix.vim --gui-dialog-file guidialog -U NONE --noplugin --not-a-term -S \\\nruntest.vim test_xxd.vim ; \\\nfi\n\nFrom test_xxd.vim:\nExecuted Test_xxd_color2()               in   0.066049 seconds\nFiltered 17 tests with $TEST_FILTER and $TEST_SKIP_PAT\nExecuted 1 test                          in   0.096862 seconds\n```\n\ncloses: #17202\n\nSigned-off-by: Drew Vogel \u003cdvogel@github\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "3accf046ec3d0ee4a762d15452ae46596e1a0540",
      "tree": "d544545413e557b59519d334f6e40b5b8ba40cb1",
      "parents": [
        "e380b5cbba23869b07e17cfc7f4602e2fe681945"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Apr 25 19:01:06 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Apr 25 19:01:06 2025 +0200"
      },
      "message": "patch 9.1.1344: double free in f_complete_match() (after v9.1.1341)\n\nProblem:  double free in f_complete_match() (after v9.1.1341)\nSolution: remove additional free of trig pointer, correctly free\n          regmatch.regprog and before_cursor in the error case\n\ncloses: #17203\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "e380b5cbba23869b07e17cfc7f4602e2fe681945",
      "tree": "a705d89d4e4a9992c9c2496bbb4fcd886f191ef5",
      "parents": [
        "e36a931d9b67110b918604d4e2ebe8aa643ecc03"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Apr 24 22:34:46 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Apr 24 22:34:46 2025 +0200"
      },
      "message": "patch 9.1.1343: filetype: IPython files are not recognized\n\nProblem:  filetype: IPython files are not recognized\n          (user202729)\nSolution: detect *.ipy files as python filetype\n\nfixes: #17163\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "f102f4c2e80f5493a02a7b1130f11615d60b6295",
      "tree": "6f915c903726b3c6f8d682b0fae6a54c38b90c68",
      "parents": [
        "bcd5995b40a1c26e735bc326feb2e3ac4b05426b"
      ],
      "author": {
        "name": "Eisuke Kawashima",
        "email": "e-kwsm@users.noreply.github.com",
        "time": "Thu Apr 24 22:03:21 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Apr 24 22:03:21 2025 +0200"
      },
      "message": "patch 9.1.1342: Shebang filetype detection can be improved\n\nProblem:  Shebang filetype detection can be improved\nSolution: Improve detection logic (Eisuke Kawashima)\n\nVim does not correctly detect filetype from\n  - `#!/usr/bin/env --split-string\u003dawk -f`\n  - `#!/usr/bin/env -S -i awk -f`\n  - `#!/usr/bin/env -S VAR\u003d awk -f`\nSo update the current detection logic to detect those cases.\n\ncloses: #17199\n\nSigned-off-by: Eisuke Kawashima \u003ce-kwsm@users.noreply.github.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": "a3422aa3170d49a7c3d1e6cd4242b86e42ef3945",
      "tree": "f82aa21f2089f8cb6da656002cac5fe321befef6",
      "parents": [
        "031f2273cb8c19aeb4f40bd56362cff0b338b84f"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Apr 23 21:04:24 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Apr 23 21:12:26 2025 +0200"
      },
      "message": "patch 9.1.1340: cannot complete :filetype arguments\n\nProblem:  cannot complete :filetype arguments (Phạm Bình An)\nSolution: add :filetype ex command completion, add \"filetypecmd\"\n          completion type for getcompletion()\n\nfixes: #17165\ncloses: #17167\n\nCo-authored-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "031f2273cb8c19aeb4f40bd56362cff0b338b84f",
      "tree": "5b73a4e6d81c5c81e434b3765de338ea0280339e",
      "parents": [
        "ec270a5f5554c62517246281afb547b5c2fe65af"
      ],
      "author": {
        "name": "John Marriott",
        "email": "basilisk@internode.on.net",
        "time": "Wed Apr 23 20:56:08 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Apr 23 20:56:08 2025 +0200"
      },
      "message": "patch 9.1.1339: missing out-of-memory checks for enc_to_utf16()/utf16_to_enc()\n\nProblem:  missing out-of-memory checks for enc_to_utf16() and\n          utf16_to_enc()\nSolution: Add out-of-memory checks and fix a few other minor issues\n          (John Marriott)\n\nThis change does:\n-  add missing out-of-memory checks for enc_to_utf16() and\n   utf16_to_enc()\n-  add a small optimisation in mch_errmsg_c() and mch_msg_c() (in\n   message.c) to only call STRLEN() if needed.\n-  fix a memory leak in winpty_term_and_job_init() (in terminal.c).\n\ncloses: #17191\n\nSigned-off-by: John Marriott \u003cbasilisk@internode.on.net\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "ec270a5f5554c62517246281afb547b5c2fe65af",
      "tree": "270c0b7f911911fa463d7df1927bd04505feaf50",
      "parents": [
        "1343681aba56d49c16d3070615b8ece7f8b0d1bd"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Wed Apr 23 20:50:23 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Apr 23 20:50:23 2025 +0200"
      },
      "message": "patch 9.1.1338: Calling expand() interferes with cmdcomplete_info()\n\nProblem:  Calling expand() interferes with cmdcomplete_info()\n          (after 9.1.1329).\nSolution: Only clear cmdline_orig when starting/ending cmdline mode\n          (zeertzjq).\n\ncloses: #17192\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "1343681aba56d49c16d3070615b8ece7f8b0d1bd",
      "tree": "3cd3014c2fdad89d3735c425e1f02631423104db",
      "parents": [
        "229f79c1683fa52159e692ff8b53449e117a38b2"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Wed Apr 23 20:46:35 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Apr 23 20:46:35 2025 +0200"
      },
      "message": "patch 9.1.1337: Undo corrupted with \u0027completeopt\u0027 \"preinsert\" when switching buffer\n\nProblem:  Undo corrupted with \u0027completeopt\u0027 \"preinsert\" when switching\n          buffer or window.\nSolution: Do not delete preinsert text when switching buffer or window.\n          (zeertzjq)\n\nrelated: neovim/neovim#33581\ncloses: #17193\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "dd776dd5f0e114d59c9e309f9026c69a1243b895",
      "tree": "363dcdae0feeefbf51da2faaf816f74b75a876df",
      "parents": [
        "362be6ba2700e864f3c755d2366a8088bead21fa"
      ],
      "author": {
        "name": "Maxim Kim",
        "email": "habamax@gmail.com",
        "time": "Tue Apr 22 20:11:05 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 22 20:14:30 2025 +0200"
      },
      "message": "patch 9.1.1336: comment plugin does not support case-insensitive \u0027commentstring\u0027\n\nProblem:  comment plugin does not support case-insensitive\n          \u0027commentstring\u0027 (char101)\nSolution: Use pattern \u0027\\c\u0027 to make the regex case-insensitive\n          (Maxim Kim)\n\nfixes: #17184\ncloses: #17186\n\nSigned-off-by: Maxim Kim \u003chabamax@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "362be6ba2700e864f3c755d2366a8088bead21fa",
      "tree": "5d3a2f7cd0f37463b315eba81b42a3278b977ae9",
      "parents": [
        "d847b241f5472477db8b76a4a630ae66bd33f8f2"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 22 20:06:53 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 22 20:06:53 2025 +0200"
      },
      "message": "patch 9.1.1335: Coverity complains about Null pointer dereferences\n\nProblem:  Coverity complains about Null pointer dereferences\nSolution: before accessing ccline-\u003ecmdbuff check that ccline is not NULL\n\nFixes: Coverity issue 1646601\ncloses: #17189\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "d847b241f5472477db8b76a4a630ae66bd33f8f2",
      "tree": "4112f9f8bd8cb3b9303bc99a8bc8ef346092344c",
      "parents": [
        "7dfc9e6121e85084fc428e915c717cbe0c8b2acd"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 22 20:04:28 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 22 20:05:46 2025 +0200"
      },
      "message": "patch 9.1.1334: Coverity complains about unchecked return value\n\nProblem:  Coverity complains about unchecked return value\nSolution: cast return value to (void)\n\nFixes: Coverity issue 1646574\nrelated: #17189\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "7dfc9e6121e85084fc428e915c717cbe0c8b2acd",
      "tree": "5285e90e3361a785f0da091f50c2d74c4c23968f",
      "parents": [
        "69e6ab6db3709d137508fec34d1fcadc69cef375"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 22 20:01:04 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 22 20:01:04 2025 +0200"
      },
      "message": "patch 9.1.1333: Coverity: complains about unutilized variable\n\nProblem:  Coverity: complains about unutilized variable\nSolution: initialize typval properly\n          (author)\n\nFixes: Coverity issue: 1646573\n       tmp.v_lock is left unitialized\nrelated: #17189\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "69e6ab6db3709d137508fec34d1fcadc69cef375",
      "tree": "e301690efd37431794244e51bc256112ef4678f4",
      "parents": [
        "5c3d1e3258872381831f419765f2969f45caaa11"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Tue Apr 22 19:55:38 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 22 19:55:38 2025 +0200"
      },
      "message": "patch 9.1.1332: Vim9: segfault when using super within a lambda\n\nProblem:  Vim9: segfault when using super within a lambda\n          (lifepillar)\nSolution: inherit the class from the current function\n          (Yegappan Lakshmanan)\n\nfixes: #17166\ncloses: #17185\n\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "5c3d1e3258872381831f419765f2969f45caaa11",
      "tree": "c13484bd022e56d75dfbfb47d524656f1d930e37",
      "parents": [
        "fa3b1043c6ac38df5e58f7444f478e1ddd4000a6"
      ],
      "author": {
        "name": "Girish Palya",
        "email": "girishji@gmail.com",
        "time": "Tue Apr 22 19:52:16 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 22 19:52:16 2025 +0200"
      },
      "message": "patch 9.1.1331: Leaking memory with cmdcomplete()\n\nProblem:  Leaking memory with cmdcomplete()\n          (zeertzjq, after v9.1.1329)\nSolution: free the memory (Girish Palya)\n\ncloses: #17190\n\nSigned-off-by: Girish Palya \u003cgirishji@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "926e2af42e922a89731b99e7c8e2261d50edadb1",
      "tree": "cd143b6b3208a707b64b79c42cccfc916ae09dc1",
      "parents": [
        "16341e70904c03eb810b3be223ab732c3f21e8ab"
      ],
      "author": {
        "name": "Hirohito Higashi",
        "email": "h.east.727@gmail.com",
        "time": "Mon Apr 21 11:23:12 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Apr 21 11:23:12 2025 +0200"
      },
      "message": "patch 9.1.1330: may receive E315 in terminal\n\nProblem:  may receive E315 in terminal\nSolution: call check_cursor() (Hirohito Higashi)\n\nfixes: #16024\nfixes: #16211\nfixes: #17099\ncloses: #17170\n\nSigned-off-by: Hirohito Higashi \u003ch.east.727@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "92f68e26ec36f2c263db5bea4f39d8503e0b741c",
      "tree": "b2e06b24f834d59de1b3fb502fbc8c45416b4da2",
      "parents": [
        "eac45c558e3585ada79bb24a86e8cd343e2807cf"
      ],
      "author": {
        "name": "Girish Palya",
        "email": "girishji@gmail.com",
        "time": "Mon Apr 21 11:12:41 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Apr 21 11:12:41 2025 +0200"
      },
      "message": "patch 9.1.1329: cannot get information about command line completion\n\nProblem:  cannot get information about command line completion\nSolution: add CmdlineLeavePre autocommand and cmdcomplete_info() Vim\n          script function (Girish Palya)\n\nThis commit introduces two features to improve introspection and control\nover command-line completion in Vim:\n\n- Add CmdlineLeavePre autocmd event:\n\n  A new event triggered just before leaving the command line and before\n  CmdlineLeave. It allows capturing completion-related state that is\n  otherwise cleared by the time CmdlineLeave fires.\n\n- Add cmdcomplete_info() Vim script function:\n\n  Returns a Dictionary with details about the current command-line\n  completion state.\n\nThese are similar in spirit to InsertLeavePre and complete_info(),\nbut focused on command-line mode.\n\n**Use case:**\n\nIn [[PR #16759](https://github.com/vim/vim/pull/16759)], two examples\ndemonstrate command-line completion: one for live grep, and another for\nfuzzy file finding. However, both examples share two key limitations:\n\n1. **Broken history recall (`\u003cUp\u003e`)**\n   When selecting a completion item via `\u003cTab\u003e` or `\u003cC-n\u003e`, the original\npattern used for searching (e.g., a regex or fuzzy string) is\noverwritten in the command-line history. This makes it impossible to\nrecall the original query later.\n   This is especially problematic for interactive grep workflows, where\nit’s useful to recall a previous search and simply select a different\nmatch from the menu.\n\n2. **Lack of default selection on `\u003cCR\u003e`**\n   Often, it’s helpful to allow `\u003cCR\u003e` (Enter) to accept the first match\nin the completion list, even when no item is explicitly selected. This\nbehavior is particularly useful in fuzzy file finding.\n\n----\nBelow are the updated examples incorporating these improvements:\n\n**Live grep, fuzzy find file, fuzzy find buffer:**\n\n```vim\ncommand! -nargs\u003d+ -complete\u003dcustomlist,GrepComplete Grep VisitFile()\ndef GrepComplete(arglead: string, cmdline: string, cursorpos: number):\nlist\u003cany\u003e\n    return arglead-\u003elen() \u003e 1 ? systemlist($\u0027grep -REIHns \"{arglead}\"\u0027 ..\n       \u0027 --exclude-dir\u003d.git --exclude\u003d\".*\" --exclude\u003d\"tags\" --exclude\u003d\"*.swp\"\u0027) : []\nenddef\ndef VisitFile()\n    if (selected_match !\u003d null_string)\n        var qfitem \u003d getqflist({lines: [selected_match]}).items[0]\n        if qfitem-\u003ehas_key(\u0027bufnr\u0027) \u0026\u0026 qfitem.lnum \u003e 0\n            var pos \u003d qfitem.vcol \u003e 0 ? \u0027setcharpos\u0027 : \u0027setpos\u0027\n            exec $\u0027:b +call\\ {pos}(\".\",\\ [0,\\ {qfitem.lnum},\\ {qfitem.col},\\ 0]) {qfitem.bufnr}\u0027\n            setbufvar(qfitem.bufnr, \u0027\u0026buflisted\u0027, 1)\n        endif\n    endif\nenddef\nnnoremap \u003cleader\u003eg :Grep\u003cspace\u003e\nnnoremap \u003cleader\u003eG :Grep \u003cc-r\u003e\u003dexpand(\"\u003ccword\u003e\")\u003ccr\u003e\ncommand! -nargs\u003d* -complete\u003dcustomlist,FuzzyFind Find\nexecute(selected_match !\u003d \u0027\u0027 ? $\u0027edit {selected_match}\u0027 : \u0027\u0027)\nvar allfiles: list\u003cstring\u003e\nautocmd CmdlineEnter : allfiles \u003d null_list\ndef FuzzyFind(arglead: string, _: string, _: number): list\u003cstring\u003e\n    if allfiles \u003d\u003d null_list\n        allfiles \u003d systemlist($\u0027find {get(g:, \"fzfind_root\", \".\")} \\! \\(\n-path \"*/.git\" -prune -o -name \"*.swp\" \\) -type f -follow\u0027)\n    endif\n    return arglead \u003d\u003d \u0027\u0027 ? allfiles : allfiles-\u003ematchfuzzy(arglead)\nenddef\nnnoremap \u003cleader\u003e\u003cspace\u003e :\u003cc-r\u003e\u003dexecute(\u0027let\nfzfind_root\u003d\".\"\u0027)\\|\u0027\u0027\u003ccr\u003eFind\u003cspace\u003e\u003cc-@\u003e\nnnoremap \u003cleader\u003efv :\u003cc-r\u003e\u003dexecute(\u0027let\nfzfind_root\u003d\"$HOME/.vim\"\u0027)\\|\u0027\u0027\u003ccr\u003eFind\u003cspace\u003e\u003cc-@\u003e\nnnoremap \u003cleader\u003efV :\u003cc-r\u003e\u003dexecute(\u0027let\nfzfind_root\u003d\"$VIMRUNTIME\"\u0027)\\|\u0027\u0027\u003ccr\u003eFind\u003cspace\u003e\u003cc-@\u003e\ncommand! -nargs\u003d* -complete\u003dcustomlist,FuzzyBuffer Buffer execute(\u0027b \u0027\n.. selected_match-\u003ematchstr(\u0027\\d\\+\u0027))\ndef FuzzyBuffer(arglead: string, _: string, _: number): list\u003cstring\u003e\n    var bufs \u003d execute(\u0027buffers\u0027, \u0027silent!\u0027)-\u003esplit(\"\\n\")\n    var altbuf \u003d bufs-\u003eindexof((_, v) \u003d\u003e v \u003d~ \u0027^\\s*\\d\\+\\s\\+#\u0027)\n    if altbuf !\u003d -1\n        [bufs[0], bufs[altbuf]] \u003d [bufs[altbuf], bufs[0]]\n    endif\n    return arglead \u003d\u003d \u0027\u0027 ? bufs : bufs-\u003ematchfuzzy(arglead)\nenddef\nnnoremap \u003cleader\u003e\u003cbs\u003e :Buffer \u003cc-@\u003e\nvar selected_match \u003d null_string\nautocmd CmdlineLeavePre : SelectItem()\ndef SelectItem()\n    selected_match \u003d \u0027\u0027\n    if getcmdline() \u003d~ \u0027^\\s*\\%(Grep\\|Find\\|Buffer\\)\\s\u0027\n        var info \u003d cmdcomplete_info()\n        if info !\u003d {} \u0026\u0026 info.pum_visible \u0026\u0026 !info.matches-\u003eempty()\n            selected_match \u003d info.selected !\u003d -1 ? info.matches[info.selected] : info.matches[0]\n            setcmdline(info.cmdline_orig). # Preserve search pattern in history\n        endif\n    endif\nenddef\n```\n\n**Auto-completion snippet:**\n\n```vim\nset wim\u003dnoselect:lastused,full wop\u003dpum wcm\u003d\u003cC-@\u003e wmnu\nautocmd CmdlineChanged : CmdComplete()\ndef CmdComplete()\n    var [cmdline, curpos] \u003d [getcmdline(), getcmdpos()]\n    if getchar(1, {number: true}) \u003d\u003d 0  # Typehead is empty (no more pasted input)\n            \u0026\u0026 !pumvisible() \u0026\u0026 curpos \u003d\u003d cmdline-\u003elen() + 1\n            \u0026\u0026 cmdline \u003d~ \u0027\\%(\\w\\|[*/:.-]\\)$\u0027 \u0026\u0026 cmdline !~ \u0027^\\d\\+$\u0027  # Reduce noise\n        feedkeys(\"\\\u003cC-@\u003e\", \"ti\")\n        SkipCmdlineChanged()  # Suppress redundant completion attempts\n        # Remove \u003cC-@\u003e that get inserted when no items are available\n        timer_start(0, (_) \u003d\u003e getcmdline()-\u003esubstitute(\u0027\\%x00\u0027, \u0027\u0027, \u0027g\u0027)-\u003esetcmdline())\n    endif\nenddef\ncnoremap \u003cexpr\u003e \u003cup\u003e SkipCmdlineChanged(\"\\\u003cup\u003e\")\ncnoremap \u003cexpr\u003e \u003cdown\u003e SkipCmdlineChanged(\"\\\u003cdown\u003e\")\nautocmd CmdlineEnter : set bo+\u003derror\nautocmd CmdlineLeave : set bo-\u003derror\ndef SkipCmdlineChanged(key \u003d \u0027\u0027): string\n    set ei+\u003dCmdlineChanged\n    timer_start(0, (_) \u003d\u003e execute(\u0027set ei-\u003dCmdlineChanged\u0027))\n    return key !\u003d \u0027\u0027 ? ((pumvisible() ? \"\\\u003cc-e\u003e\" : \u0027\u0027) .. key) : \u0027\u0027\nenddef\n```\n\nThese customizable snippets can serve as *lightweight* and *native*\nalternatives to picker plugins like **FZF** or **Telescope** for common,\neveryday workflows. Also, live grep snippet can replace **cscope**\nwithout the overhead of building its database.\n\ncloses: #17115\n\nSigned-off-by: Girish Palya \u003cgirishji@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "eac45c558e3585ada79bb24a86e8cd343e2807cf",
      "tree": "1d9bba07aec87723375746d8104264c0721d97f3",
      "parents": [
        "2cb42efc18e46402ac84fd51afe54bb48be8aea7"
      ],
      "author": {
        "name": "John Marriott",
        "email": "basilisk@internode.on.net",
        "time": "Mon Apr 21 11:01:53 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Apr 21 11:03:21 2025 +0200"
      },
      "message": "patch 9.1.1328: too many strlen() calls in indent.c\n\nProblem:  too many strlen() calls in indent.c\nSolution: refactor indent.c slightly and remove strlen() calls\n          (John Marriott)\n\ncloses: #17156\n\nSigned-off-by: John Marriott \u003cbasilisk@internode.on.net\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "2cb42efc18e46402ac84fd51afe54bb48be8aea7",
      "tree": "d3365bf99b4c579aa11f272bd4b020d4d00e8e89",
      "parents": [
        "187df69fd1563535773b8ddb2de1b0f5dd3dd2e9"
      ],
      "author": {
        "name": "Eisuke Kawashima",
        "email": "e-kwsm@users.noreply.github.com",
        "time": "Mon Apr 21 10:51:05 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Apr 21 10:51:05 2025 +0200"
      },
      "message": "patch 9.1.1327: filetype: nroff detection can be improved\n\nProblem:  filetype: nroff detection can be improved\nSolution: improve nroff detection (Eisuke Kawashima)\n\n- explicitly check roff comments and macros typically found in manpages\n- do not try to detect alphabetically-sectioned files, except for n, as\n  nroff\n    - l: \u003e \u0027l\u0027 happens to be a section for historical reasons\n         \u003chttps://bugs.debian.org/cgi-bin/bugreport.cgi?bug\u003d391977\u003e\n    - n: e.g. /usr/share/man/mann/Tcl.n.gz\n    - o: unsure (perhaps fedora-specific)\n    - p: unsure (perhaps fedora-specific)\n\ncloses: #17160\n\nSigned-off-by: Eisuke Kawashima \u003ce-kwsm@users.noreply.github.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "9919085491c5ce47091710fce5af13e3379f17fc",
      "tree": "2d631c80902e8672e11b73a560e36b1035eafb5f",
      "parents": [
        "7938c40b34a870d704294a3384df4b58a0eabf8e"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Apr 20 18:21:35 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Apr 20 19:35:49 2025 +0200"
      },
      "message": "patch 9.1.1326: invalid cursor position after \u0027tagfunc\u0027\n\nProblem:  invalid cursor position after \u0027tagfunc\u0027\n          (gandalf4a)\nSolution: call check_cursor() after executing the \u0027tagfunc\u0027\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "67fe77d2724ec2041baef73edf20e828b43adcd2",
      "tree": "6e9e6a4fbf6bb3c79df4db80d6966ce79fae3f57",
      "parents": [
        "23984602327600b7ef28dcedc772949d5c66b57f"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Sun Apr 20 10:21:18 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Apr 20 10:21:18 2025 +0200"
      },
      "message": "patch 9.1.1325: tests: not checking error numbers properly\n\nProblem:  tests: not checking error numbers properly.\nSolution: Add a trailing comma to avoid matching a different error\n          number with the same prefix (zeertzjq)\n\ncloses: #17159\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "6924eb81f4e69726f59eaa0c121b7442343d770d",
      "tree": "16fd7533e3540960b269cc9fc210624236e70476",
      "parents": [
        "baa8c90cc0d214e036a3a7980d5cf95cae88a68d"
      ],
      "author": {
        "name": "Foxe Chen",
        "email": "chen.foxe@gmail.com",
        "time": "Sat Apr 19 11:25:18 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Apr 19 11:25:18 2025 +0200"
      },
      "message": "patch 9.1.1324: undefined behaviour if X11 connection dies\n\nProblem:  undefined behaviour if X11 connection dies\nSolution: call setjmp() before the main_loop() and restore x11 state\n          if the X11 connection dies (Foxe Chen)\n\nfixes: #698\ncloses: #17142\n\nSigned-off-by: Foxe Chen \u003cchen.foxe@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "baa8c90cc0d214e036a3a7980d5cf95cae88a68d",
      "tree": "88a0b5e2514b6e78527dcc7431d1221f8821e5c6",
      "parents": [
        "81677996513e8f186acc93122673e6741c563477"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Apr 19 11:14:11 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Apr 19 11:14:11 2025 +0200"
      },
      "message": "patch 9.1.1323: b:undo_ftplugin not executed when re-using buffer\n\nProblem:  b:undo_ftplugin not executed when re-using buffer\n          (archy3)\nSolution: explicitly execute b:undo_ftplugin in buflist_new() when\n          re-using the current buffer\n\nfixes: #17113\ncloses: #17133\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "7e93d4c617784e03f539d139f3475bd72c04a6e5",
      "tree": "48fd3768b8decb6f945fc5a9e9a7ade9407c98ab",
      "parents": [
        "aee34ef23e08a944f87d6bb4f972c56ba88dc6dd"
      ],
      "author": {
        "name": "phanium",
        "email": "91544758+phanen@users.noreply.github.com",
        "time": "Fri Apr 18 18:32:52 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Apr 18 18:32:52 2025 +0200"
      },
      "message": "patch 9.1.1322: small delete register cannot paste multi-line correctly\n\nProblem:  small delete register cannot paste multi-line correctly\n          (after v8.2.2189)\nSolution: caused by 032a2d050b82b146d70d6ff714838ee62c07d8ad, so make\n          this logic handle charwise only (phanium)\n\ncloses: #17151\n\nSigned-off-by: phanium \u003c91544758+phanen@users.noreply.github.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "aee34ef23e08a944f87d6bb4f972c56ba88dc6dd",
      "tree": "3bac5871d46a2d0a86ade47cb9951b143060480a",
      "parents": [
        "1d96caaa4b195043f84a0c83277b2038af4a7b50"
      ],
      "author": {
        "name": "Hampus Avekvist",
        "email": "hampus.avekvist@hey.com",
        "time": "Fri Apr 18 18:18:06 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Apr 18 18:21:34 2025 +0200"
      },
      "message": "patch 9.1.1321: filetype: MS ixx and mpp files are not recognized\n\nProblem:  filetype: MS ixx and mpp files are not recognized\nSolution: detect *.mpp and *.ixx files as c++ filetype\n          (Hampus Avekvist)\n\ncloses: #17155\n\nSigned-off-by: Hampus Avekvist \u003champus.avekvist@hey.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "1d96caaa4b195043f84a0c83277b2038af4a7b50",
      "tree": "c7bb44f9f27056177862cdf9414bcebfa6f4734c",
      "parents": [
        "98800979dc109e03f390a0472b14ed89189e02fe"
      ],
      "author": {
        "name": "David Mandelberg",
        "email": "david@mandelberg.org",
        "time": "Fri Apr 18 11:41:44 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Apr 18 11:41:44 2025 +0200"
      },
      "message": "patch 9.1.1320: filetype: alsoft config files are not recognized\n\nProblem:  filetype: alsoft config files are not recognized\nSolution: detect alsoft config files as dosini filetype\n          (David Mandelberg)\n\nReferences:\n* code with paths to config: ReadALConfig() in\n  https://github.com/kcat/openal-soft/blob/master/alc/alconfig.cpp\n* example config:\n  https://github.com/kcat/openal-soft/blob/master/alsoftrc.sample\n\ncloses: #17140\n\nSigned-off-by: David Mandelberg \u003cdavid@mandelberg.org\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "98800979dc109e03f390a0472b14ed89189e02fe",
      "tree": "851b43a7e842fd42e9bd97eebfdcbbba9157c36e",
      "parents": [
        "e9a27ef37395a0130f99e21b288b7765f0e38236"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Fri Apr 18 10:57:33 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Apr 18 10:57:33 2025 +0200"
      },
      "message": "patch 9.1.1319: Various typos in the code, issue with test_inst_complete.vim\n\nProblem:  Various typos in the code, redundant and strange use of\n          :execute in test_ins_complete.vim (after 9.1.1315).\nSolution: Fix typos in the code and in the documentation, use the\n          executed command directly (zeertzjq).\n\ncloses: #17143\n\nCo-authored-by: Christ van Willegen \u003ccvwillegen@gmail.com\u003e\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "e9a27ef37395a0130f99e21b288b7765f0e38236",
      "tree": "d5575040f4e14d0dc30fe4d0a2fb086732bfa735",
      "parents": [
        "8f096845693fc7a170283ca5dcf8e13aea3ec273"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Fri Apr 18 10:45:45 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri Apr 18 10:47:58 2025 +0200"
      },
      "message": "patch 9.1.1318: tests: test_format fails\n\nProblem:  tests: test_format fails (after 9.1.1314).\nSolution: Increase the string size.  Add missing test_format.res in\n          NEW_TESTS_RES (zeertzjq).\n\ncloses: #17144\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "cca5dea76e5bfa8369ae9d54b35fd140bb9159b4",
      "tree": "a190c1dc05929361c62e07521eaa21a1d67b3af4",
      "parents": [
        "7ddba51635abdacb2bf8b96bff2ddfdefa0c985b"
      ],
      "author": {
        "name": "Igor Lacerda",
        "email": "igorlfs@ufmg.br",
        "time": "Thu Apr 17 20:41:31 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Apr 17 20:43:25 2025 +0200"
      },
      "message": "patch 9.1.1317: noisy error when restoring folds from session fails\n\nProblem:  noisy error when restoring folds from session fails\nSolution: ignore errors silently when sourcing session file.\n          (Igor Lacerda)\n\nfixes: #15813\ncloses: #17127\n\nSigned-off-by: Igor Lacerda \u003cigorlfs@ufmg.br\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "7ddba51635abdacb2bf8b96bff2ddfdefa0c985b",
      "tree": "79ac546dcf7980144da0793dbfaef3530866589e",
      "parents": [
        "cfe502c5753cce2080ddabdfdcacb8e4b3092721"
      ],
      "author": {
        "name": "John Marriott",
        "email": "basilisk@internode.on.net",
        "time": "Thu Apr 17 20:35:42 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Apr 17 20:35:42 2025 +0200"
      },
      "message": "patch 9.1.1316: missing memory allocation failure in os_mswin.c\n\nProblem:  missing memory allocation failure in os_mswin.c\nSolution: check for memory allocation failure and return early.\n          (John Marriott)\n\ncloses: #17134\n\nSigned-off-by: John Marriott \u003cbasilisk@internode.on.net\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "cfe502c5753cce2080ddabdfdcacb8e4b3092721",
      "tree": "b57f61b17f9723f7e536485dfda2cb8c992eb654",
      "parents": [
        "06fdfa11c565599ac13ad5c077d1dabbbfde03ac"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Thu Apr 17 20:17:53 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Apr 17 20:17:53 2025 +0200"
      },
      "message": "patch 9.1.1315: completion: issue with fuzzy completion and \u0027completefuzzycollect\u0027\n\nProblem:  chain complete does not work when \u0027cot\u0027 includes fuzzy\n          and \u0027completefuzzycollect\u0027 collects wrong next word.\n          (Konfekt)\nSolution: compl_startpos is not set correctly, remove next word check\n          in search_for_fuzzy_match (glepnir).\n\nfixes #17131\nfixes #16942\ncloses: #17136\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "06fdfa11c565599ac13ad5c077d1dabbbfde03ac",
      "tree": "774aae3d092b25de834c671a37c1bf6f5e8164ca",
      "parents": [
        "b53d4fb63e0d4d36033d47ec35f2f302931f77ae"
      ],
      "author": {
        "name": "Hirohito Higashi",
        "email": "h.east.727@gmail.com",
        "time": "Thu Apr 17 20:13:05 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Apr 17 20:13:05 2025 +0200"
      },
      "message": "patch 9.1.1314: max allowed string width too small\n\nProblem:  max allowed string width too small\nSolution: increased MAX_ALLOWED_STRING_WIDTH from 6400 to 1MiB\n          (Hirohito Higashi)\n\ncloses: #17138\n\nCo-authored-by: John Marriott \u003cbasilisk@internode.on.net\u003e\nSigned-off-by: Hirohito Higashi \u003ch.east.727@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "b53d4fb63e0d4d36033d47ec35f2f302931f77ae",
      "tree": "e3444681717386f83a645f3c0ed596299c925dfa",
      "parents": [
        "ad503fe92772cb37d6f8601f48ff2bdb34cdbe96"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Apr 16 21:12:30 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Apr 16 21:12:30 2025 +0200"
      },
      "message": "patch 9.1.1313: compile warning about uninitialized value\n\nProblem:  compile warning about uninitialized value\n          (Tony Mechelynck, after v9.1.1311)\nSolution: initialize variable on declaration\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "ad503fe92772cb37d6f8601f48ff2bdb34cdbe96",
      "tree": "738cbd04c65b172923b34c807063473a229f035c",
      "parents": [
        "0ac1eb3555445f4c458c06cef7c411de1c8d1020"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Apr 16 20:25:47 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Apr 16 20:25:47 2025 +0200"
      },
      "message": "patch 9.1.1312: tests: Test_backupskip() fails when HOME is defined\n\nProblem:  tests: Test_backupskip() fails when HOME is defined\nSolution: unset $HOME temporarily\n\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": "1c2b25825037bf83862f7af71ce9177cf949daca",
      "tree": "d47ae66395cf2d6c07eacdc4485b12369679c0ac",
      "parents": [
        "40daa1358cf46cd155b733ffb1e5a3f9f591dedb"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Wed Apr 16 19:41:19 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Apr 16 19:41:19 2025 +0200"
      },
      "message": "patch 9.1.1310: completion: redundant check for preinsert effect\n\nProblem:  Duplicate check for preinsert effect, particularly for Ctrl_w\n          and Ctrl_U.\nSolution: Remove the specific check for Ctrl_w and Ctrl_U to eliminate\n          redundancy (glepnir).\n\ncloses: #17129\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "031919c7ac66c4fcff3719b4f4158887b68d3315",
      "tree": "6e89d38816e8c70b37f54eb59276ea24bd731ce8",
      "parents": [
        "fbbaa6ebe92b938f1f9ef008571c330a8d29166a"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Wed Apr 16 18:23:23 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Apr 16 18:23:23 2025 +0200"
      },
      "message": "patch 9.1.1309: tests: no test for \u0027pummaxwidth\u0027 with non-truncated \"kind\"\n\nProblem:  tests: no test for \u0027pummaxwidth\u0027 with non-truncated \"kind\".\nSolution: Add a test with \"kind\" and larger \u0027pummaxwidth\u0027 (zeertzjq).\n\ncloses: #17126\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.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": "f35bd76b31e6cd62bcc47e401887059b8503c5cc",
      "tree": "db2873b977b6809501293a0488d6e98c2d0d5bec",
      "parents": [
        "32f2bb6e1e672f52d736579d9752473b14a5744d"
      ],
      "author": {
        "name": "Eisuke Kawashima",
        "email": "e-kwsm@users.noreply.github.com",
        "time": "Tue Apr 15 19:20:06 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 15 19:20:06 2025 +0200"
      },
      "message": "patch 9.1.1307: make syntax does not reliably detect different flavors\n\nProblem:  GNU extensions, such as `ifeq` and `wildcard` function, are\n          highlighted in BSDmakefile\nSolution: detect BSD, GNU, or Microsoft implementation according to\n\t  filename, user-defined global variables, or file contents\n\ncloses: #17089\n\nCo-authored-by: Roland Hieber \u003crohieb@users.noreply.github.com\u003e\nSigned-off-by: Eisuke Kawashima \u003ce-kwsm@users.noreply.github.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "32f2bb6e1e672f52d736579d9752473b14a5744d",
      "tree": "9436702219bf0a81f766515625ae384b37fe48a4",
      "parents": [
        "cf7f01252f00061876f7eb14dbf74342a55a13a1"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Tue Apr 15 19:06:58 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 15 19:06:58 2025 +0200"
      },
      "message": "patch 9.1.1306: completion menu rendering can be improved\n\nProblem:  Parts of the popup menu were rendered twice when the popup was\n          at maximum width because the truncation flag was being set too\n          liberally.\nSolution: Make the truncation condition more precise by only setting it\n          when there\u0027s exactly one character of space remaining\n          (glepnir).\n\ncloses: #17108\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "cf7f01252f00061876f7eb14dbf74342a55a13a1",
      "tree": "1621939248f34f9707c5a9f4172c1153ed97b743",
      "parents": [
        "babdb0554a44a5e406a499bf8c315e660b2a028e"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Tue Apr 15 19:02:00 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 15 19:02:00 2025 +0200"
      },
      "message": "patch 9.1.1305: completion menu active after switching windows/tabs\n\nProblem:  When switching to another window or tab page while the\n          completion menu is active, the menu stays visible, although it\n          belongs to the previous window/tab page context (Evgeni\n          Chasnovski).\nSolution: Track the window and tab page where completion started. Detect\n          changes in the main editing loop and cancel completion mode if\n          the current window or tab page differs from where completion\n          started.\n\nfixes: #17090\ncloses: #17101\n\nCo-authored-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "babdb0554a44a5e406a499bf8c315e660b2a028e",
      "tree": "68be0c82fe07c7d177098b040fd312df36115e34",
      "parents": [
        "d62377386c92e500365009412efd3b1232a02c82"
      ],
      "author": {
        "name": "Eisuke Kawashima",
        "email": "e-kwsm@users.noreply.github.com",
        "time": "Tue Apr 15 18:30:05 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 15 18:30:05 2025 +0200"
      },
      "message": "patch 9.1.1304: filetype: some man files are not recognized\n\nProblem:  filetype: some man files are not recognized\n          (e.g. 1p (POSIX commands))\nSolution: update the filetype detection pattern and detect more man\n          files as nroff (Eisuke Kawashima)\n\n- sections are revised referring to\n    - debian-12:/etc/manpath.config\n    - fedora-41:/etc/man_db.conf\n- detection logic is improved\n- detection test is implemented\n\ncloses: #17117\n\nSigned-off-by: Eisuke Kawashima \u003ce-kwsm@users.noreply.github.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "2137710b436e481168382c50aa4838a4b9730163",
      "tree": "ee19c31fd94f494a92d936207c52a2127b25146e",
      "parents": [
        "d2079cff48117b121cd4afcc91fc14a696bdb142"
      ],
      "author": {
        "name": "John Marriott",
        "email": "basilisk@internode.on.net",
        "time": "Tue Apr 15 18:15:24 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 15 18:15:24 2025 +0200"
      },
      "message": "patch 9.1.1303: missing out-of-memory check in linematch.c\n\nProblem:  missing out-of-memory check in linematch.c\nSolution: return early in case of memory allocation failure, move the\n          pow() calculation ouside of the for() loop\n          (John Marriott)\n\ncloses: #17118\n\nSigned-off-by: John Marriott \u003cbasilisk@internode.on.net\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "d2079cff48117b121cd4afcc91fc14a696bdb142",
      "tree": "e11bb4bc75ca0fa6153e5828303c4c81080c94e3",
      "parents": [
        "cbe53191d01926c045a39198b3a9517e3c5077d2"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 15 18:10:26 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 15 18:10:26 2025 +0200"
      },
      "message": "patch 9.1.1302: Coverity warns about using uninitialized value\n\nProblem:  Coverity warns about using uninitialized value\n          (Coverity, Tony Mechelynck, after v9.1.1301)\nSolution: initialize callback pointer to NULL\n\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": "10f69298b4577b3712eedeb49b4d9ad1a69111f8",
      "tree": "8cda62cb14ddb2014e277850bc585b00a8c7c718",
      "parents": [
        "4ec93fec125b2743a7f63b4fd3087fa5895eab8b"
      ],
      "author": {
        "name": "John Marriott",
        "email": "basilisk@internode.on.net",
        "time": "Mon Apr 14 21:19:34 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Apr 14 21:19:34 2025 +0200"
      },
      "message": "patch 9.1.1300: wrong detection of -inf\n\nProblem:  wrong detection of -inf\nSolution: correctly compare 4 characters and not 3\n          (John Marriott)\n\ncloses: #17109\n\nSigned-off-by: John Marriott \u003cbasilisk@internode.on.net\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "836b87d6998a1f18783afdc41c90ae1f38c9c3e9",
      "tree": "c420fdb7ec05dccbaf1696e3499ef914fc43272b",
      "parents": [
        "906f3068127c694d568c096a81d5e952341464fe"
      ],
      "author": {
        "name": "Pierrick Guillaume",
        "email": "pguillaume@fymyte.com",
        "time": "Sun Apr 13 18:25:33 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Apr 13 18:25:33 2025 +0200"
      },
      "message": "patch 9.1.1299: filetype: mbsyncrc files are not recognized\n\nProblem:  filetype: mbsyncrc files are not recognized\nSolution: detect isyncrc and \"*.mbsyncrc\" files as mbsync filetype,\n          include filetype and syntax plugin (Pierrick Guillaume)\n\nmbsync is a command line application which synchronizes mailboxes;\ncurrently Maildir and IMAP4 mailboxes are supported.\nNew messages, message deletions and flag changes can be propagated both ways;\nthe operation set can be selected in a fine-grained manner.\n\nReferences:\nmbsync syntax overview: mbsync manual (isync v1.4.4)\nhttps://isync.sourceforge.io/mbsync.html\n\nUpstream support for the mbsync filetype.\nOriginal plugin: https://github.com/Fymyte/mbsync.vim\n\ncloses: #17103\n\nSigned-off-by: Pierrick Guillaume \u003cpguillaume@fymyte.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "3956c5b53c671b8b3df50758be0093f5699db0e7",
      "tree": "6bb310a2cc01908cd541fa94232474b6e515d89a",
      "parents": [
        "c98250377d32007490da46b3334771ba3b2667fe"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Sun Apr 13 17:49:50 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Apr 13 17:49:50 2025 +0200"
      },
      "message": "patch 9.1.1298: define_function() is too long\n\nProblem:  define_function() is too long\nSolution: refactor and split up into smaller functions\n          (Yegappan Lakshmanan)\n\ncloses: #17105\n\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "c98250377d32007490da46b3334771ba3b2667fe",
      "tree": "9e49f40f204f7150c2492a93b437c89fb560dc0d",
      "parents": [
        "829eda7d381e5f635169c927103568b335cd599d"
      ],
      "author": {
        "name": "Luuk van Baal",
        "email": "luukvbaal@gmail.com",
        "time": "Sun Apr 13 17:45:34 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Apr 13 17:45:34 2025 +0200"
      },
      "message": "patch 9.1.1297: Ctrl-D scrolling can get stuck\n\nProblem:  cursor_correct() calculates a valid cursor position which\n\t  is later changed by update_topline() and causes Ctrl-D\n          scrolling to be stuck (Daniel Steinberg, after v9.1.0258).\nSolution: Update the valid cursor position before validating topline\n          (Luuk van Baal).\n\nfixes: #17106\ncloses: #17110\n\nSigned-off-by: Luuk van Baal \u003cluukvbaal@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "d4dbf822dcb9fd95379bebab85def391e1179b21",
      "tree": "afa470736d68cfa9be53dcdef4cab46210126dff",
      "parents": [
        "cf665ccd3771d59584f2f44a7c644c017a2ad84f"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Sat Apr 12 18:35:34 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Apr 12 18:39:16 2025 +0200"
      },
      "message": "patch 9.1.1296: completion: incorrect truncation logic\n\nProblem:  completion: incorrect truncation logic (after: v9.1.1284)\nSolution: replace string allocation with direct screen rendering and\n          fixe RTL/LTR truncation calculations (glepnir)\n\ncloses: #17081\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "cf665ccd3771d59584f2f44a7c644c017a2ad84f",
      "tree": "908ffcb62bdc4dbf2f6f1216443eff080f40f4c2",
      "parents": [
        "6f6c0dba9f578787af0f259a832c972807a884cd"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Apr 12 18:09:28 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Apr 12 18:09:28 2025 +0200"
      },
      "message": "patch 9.1.1295: clientserver: does not handle :stopinsert correctly\n\nProblem:  clientserver: When in insert mode, a :stopinsert command\n          is not correctly processed (user202729)\nSolution: If the :stopinsert command is received while waiting for\n          input, stuff the NOP key into the type-ahead buffer and\n          detect that :stopinsert was used in edit() so that the\n          cursor position is decremented.\n\nfixes: #17016\ncloses: #17024\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "bc27b6e34fa9228ac468973e1b1b80506fdc177a",
      "tree": "7b539ec9a15899149b96c963f9da5c52ba950884",
      "parents": [
        "ab2fe65fbf2680af5f23112da9f8a83167e234bb"
      ],
      "author": {
        "name": "JMcKiern",
        "email": "jmckiern@tcd.ie",
        "time": "Sat Apr 12 11:51:00 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Apr 12 11:51:00 2025 +0200"
      },
      "message": "patch 9.1.1294: gui tabline menu does not use confirm when closing tabs\n\nProblem:  gui tabline menu does not use confirm when closing tabs\nSolution: use \":confirm tabclose\" explicitly (JMcKiern)\n\ncloses: #17093\n\nSigned-off-by: JMcKiern \u003cjmckiern@tcd.ie\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "0e59e67a63ed4abe0627a5ccf74763bdaece74ab",
      "tree": "be39c35181d01a6f720c1024c52425cc8bbd1ec5",
      "parents": [
        "c8ce81b0dcaddefc65e3d445c92c9e0253bd9173"
      ],
      "author": {
        "name": "Maxim Kim",
        "email": "habamax@gmail.com",
        "time": "Sat Apr 12 11:34:08 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Apr 12 11:34:08 2025 +0200"
      },
      "message": "patch 9.1.1293: comment plugin does not handle \u0027exclusive\u0027 selection for comment object\n\nProblem:  comment plugin does not handle \u0027exclusive\u0027 selection for\n          comment object (@mawkish)\nSolution: handle special case selection\u003d\u0027exclusive\u0027 for inline comment\n          object (Maxim Kim)\n\nfixes: #17023\ncloses: #17098\n\nSigned-off-by: Maxim Kim \u003chabamax@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "c8ce81b0dcaddefc65e3d445c92c9e0253bd9173",
      "tree": "6c58de0387fbe4b904173f5ef582547dc732b76d",
      "parents": [
        "d82f3cae396710b61bca78eb559393ed420959b3"
      ],
      "author": {
        "name": "Hirohito Higashi",
        "email": "h.east.727@gmail.com",
        "time": "Sat Apr 12 11:28:18 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat Apr 12 11:28:18 2025 +0200"
      },
      "message": "patch 9.1.1292: statusline not correctly evaluated\n\nProblem:  statusline not correctly evaluated\n          (Peter Kenny, after v9.1.1291)\nSolution: revert part of patch v9.1.1291\n          (Hirohito Higashi)\n\nfixes: #17095\ncloses: #17094\n\nSigned-off-by: Hirohito Higashi \u003ch.east.727@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "ec032de6465f159bd57c22d464e0f4815f3aefc7",
      "tree": "d25156a4e253245d1699ac2c23734c6502a5d980",
      "parents": [
        "06a41ad084109ae67b949276f16e388fd4d9350a"
      ],
      "author": {
        "name": "John Marriott",
        "email": "basilisk@internode.on.net",
        "time": "Thu Apr 10 21:34:19 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Apr 10 21:34:19 2025 +0200"
      },
      "message": "patch 9.1.1291: too many strlen() calls in buffer.c\n\nProblem:  too many strlen() calls in buffer.c\nSolution: refactor buffer.c and remove strlen() calls\n          (John Marriott)\n\ncloses: #17063\n\nSigned-off-by: John Marriott \u003cbasilisk@internode.on.net\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "b0e19f9e1b43328158784ad2429880e0370b5e7b",
      "tree": "5bd75c7ddbf680f20e663f0d7a5a4afed01666bd",
      "parents": [
        "96a0b2a6d5107580398435e263bd529d4ba3df49"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Thu Apr 10 19:54:16 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu Apr 10 19:54:16 2025 +0200"
      },
      "message": "patch 9.1.1290: tests: missing cleanup in test_filetype.vim\n\nProblem:  tests: missing cleanup in test_filetype.vim, wrong name in\n          test_plugin_matchparen\nSolution: Add :bwipe corresponding to :split, rename test case\n\ncloses: #17088\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "96a0b2a6d5107580398435e263bd529d4ba3df49",
      "tree": "21744da1c72d69f66988473c3fa9a1e7b7df2e76",
      "parents": [
        "f9f53f5a8f4c7b3da548914a4552a0c0c572364a"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Apr 09 19:29:18 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Apr 09 19:29:18 2025 +0200"
      },
      "message": "patch 9.1.1289: tests: no test for matchparen plugin with WinScrolled event\n\nProblem:  tests: no test for matchparen plugin with WinScrolled event\nSolution: add missing test\n\ncloses: #10942\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "b71f1309a210bf8f61a24f4eda336de64c6f0a07",
      "tree": "c93b2c116b5fa9731e14dcfdc05499c2f28945d7",
      "parents": [
        "2525573de71a432d73247366c6e6bf0b9567ce22"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Tue Apr 08 20:29:40 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Apr 08 20:31:21 2025 +0200"
      },
      "message": "patch 9.1.1288: Using wrong window in ll_resize_stack()\n\nProblem:  Using wrong window in ll_resize_stack()\n          (after v9.1.1287)\nSolution: Use \"wp\" instead of \"curwin\", even though they are always the\n          same value.  Fix typos in documentation (zeertzjq).\n\ncloses: #17080\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "adcfb6caeb1c9c54448fff8d5812c3dca2ba0d03",
      "tree": "380877d9329f1c0882abe6e98e873b6b308044ce",
      "parents": [
        "e370141bf41919642061ee2e78340dca84678712"
      ],
      "author": {
        "name": "Hirohito Higashi",
        "email": "h.east.727@gmail.com",
        "time": "Mon Apr 07 21:19:07 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Apr 07 21:19:07 2025 +0200"
      },
      "message": "patch 9.1.1287: quickfix code can be further improved\n\nProblem:  quickfix code can be further improved (after v9.1.1283)\nSolution: slightly refactor quickfix.c (Hirohito Higashi)\n\n- remove error message output\n- adjust comments\n- rename functions:\n  - qf_init_quickfix_stack() --\u003e qf_init_stack()\n  - qf_resize_quickfix_stack() --\u003e qf_resize_stack()\n  - qf_resize_stack() --\u003e qf_resize_stack_base()\n\nNow qf_alloc_stack() can handle both quickfix/location lists.\n\ncloses: #17068\n\nSigned-off-by: Hirohito Higashi \u003ch.east.727@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "e370141bf41919642061ee2e78340dca84678712",
      "tree": "e80550c62c7da2fbecdcb16782c55d309e623650",
      "parents": [
        "5ce1e4ad4aaad243de03f29b0b341532bc6c8866"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Mon Apr 07 21:14:41 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Apr 07 21:14:41 2025 +0200"
      },
      "message": "patch 9.1.1286: filetype: help files not detected when \u0027iskeyword\u0027 includes \":\"\n\nProblem:  Help files not detected when \u0027iskeyword\u0027 includes \":\".\nSolution: Do not use \\\u003c and \\\u003e in the pattern (zeertzjq).\n\nfixes: #17069\ncloses: #17071\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "5ce1e4ad4aaad243de03f29b0b341532bc6c8866",
      "tree": "8baaaba31c73710918d1c1ed1825a59fa5e7abac",
      "parents": [
        "b87620466c6500fb37fd9be1016a27fa9626749a"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Mon Apr 07 21:09:18 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Apr 07 21:09:18 2025 +0200"
      },
      "message": "patch 9.1.1285: Vim9: no error message for missing method after \"super.\"\n\nProblem:  Vim9: no error message for missing method after \"super.\"\nSolution: output an error message, add a few more tests\n          (Yegappan Lakshmanan).\n\ncloses: #17070\n\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    }
  ],
  "next": "b87620466c6500fb37fd9be1016a27fa9626749a"
}
