)]}'
{
  "log": [
    {
      "commit": "08896dd330c6dc8324618fde482db968e6f71088",
      "tree": "9ff8d2db88ff505bcaf746edf847da2b1a9d0718",
      "parents": [
        "d6c9ac97a009f7099b7d3636548aa3a4fabb5f1a"
      ],
      "author": {
        "name": "SUN Haitao",
        "email": "sunhaitao@devtaste.com",
        "time": "Wed Jun 04 21:25:31 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed Jun 04 21:25:31 2025 +0200"
      },
      "message": "patch 9.1.1432: GTK GUI: Buffer menu does not handle unicode correctly\n\nProblem:  GTK GUI: Buffer menu does not handle unicode correctly\nSolution: Get rid of the BMHash() function (SUN Haitao)\n\nfixes: #17403\ncloses: #17405\n\nSigned-off-by: SUN Haitao \u003csunhaitao@devtaste.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "a1522f7c0daeddf91cdb7313bdcccd3b3774e39e",
      "tree": "da43b6866729dc393111a05f0f4f8ce9110a80fa",
      "parents": [
        "86d46a7018bb648fb27372329e6ddc274051067c"
      ],
      "author": {
        "name": "Hirohito Higashi",
        "email": "h.east.727@gmail.com",
        "time": "Tue Jun 03 21:07:25 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue Jun 03 21:09:06 2025 +0200"
      },
      "message": "patch 9.1.1429: dragging outside the tabpanel changes tabpagenr\n\nProblem:  dragging outside the tabpanel changes tabpagenr (char101)\nSolution: set in_tab_line and in_tabpanel variables (Hirohito Higashi)\n\nfixes: #17385\ncloses: #17431\n\nSigned-off-by: Hirohito Higashi \u003ch.east.727@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "d5fdfa5c9cf00790cf720e15c580a591a09fa906",
      "tree": "b83b9cc624f647c9b4d90afe1a053cdd44a9e230",
      "parents": [
        "3993cd619a8148c4942d7b9d418af73909403a87"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Mon Jun 02 19:45:41 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon Jun 02 19:45:41 2025 +0200"
      },
      "message": "patch 9.1.1426: completion: register contents not completed\n\nProblem:  CTRL-X CTRL-R only completes individual words from registers,\n          making it difficult to insert complete register content.\nSolution: Add consecutive CTRL-X CTRL-R support - first press completes\n          words, second press completes full register lines, similar to\n          CTRL-X CTRL-L and CTRL-X CTRL-P behavior (glepnir).\n\ncloses: #17395\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "3b9b95dc63c9db85ae827e66a1f2d7830264ccf3",
      "tree": "b30d5523b1c3ec1a6aef17d639f86916146f3886",
      "parents": [
        "6c40df09e07dced75010be2d7a8e4831f6b9f796"
      ],
      "author": {
        "name": "Hirohito Higashi",
        "email": "h.east.727@gmail.com",
        "time": "Sun Jun 01 20:22:55 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Jun 01 20:22:55 2025 +0200"
      },
      "message": "patch 9.1.1425: tabpanel: there are still some problems with the tabpanel\n\nProblem:  tabpanel: there are still some problems with the tabpanel with\n          column handling\nSolution: fix the problems and refactor Tabpanel feature (Hirohito\n          Higashi).\n\nfixes: #17423\nfixes: #17332\ncloses: #17336\n\nSigned-off-by: Hirohito Higashi \u003ch.east.727@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "6c40df09e07dced75010be2d7a8e4831f6b9f796",
      "tree": "6c1bccc53abed0f135812fe37e191f98dea638c0",
      "parents": [
        "cba66cf894645e1a16e926be75c5ab12cbf3b35a"
      ],
      "author": {
        "name": "Girish Palya",
        "email": "girishji@gmail.com",
        "time": "Sun Jun 01 20:11:59 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Jun 01 20:11:59 2025 +0200"
      },
      "message": "patch 9.1.1424: PMenu selection broken with multi-line selection and limits\n\nProblem:  PMenu selection broken with multi-line selection and limits\n          (Maxim Kim)\nSolution: update completion match index when limiting the completion\n          sources (Girish Palya)\n\nfixes: #17394\ncloses: #17401\n\nSigned-off-by: Girish Palya \u003cgirishji@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "cba66cf894645e1a16e926be75c5ab12cbf3b35a",
      "tree": "31cc7abc4fb3d8405281bec2bbf48c4c287bc3ca",
      "parents": [
        "98c29dbfd1c0765cbe5a2fce71072a33ad629f34"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Jun 01 19:47:03 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Jun 01 19:47:03 2025 +0200"
      },
      "message": "patch 9.1.1423: :tag command not working correctly using Vim9 Script\n\nProblem:  :tag command not working correctly using Vim9 Script\nSolution: inject a \u0027:\u0027 before the numeric address, to make the command\n          valid in Vim9 context\n\nfixes: #17415\ncloses: #17418\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "a541f1de2bfdd18d927974bc13fe5d4ee3cb5698",
      "tree": "859d9dbaae7c14d88bd743e233634e2b605b76c5",
      "parents": [
        "b577ad50d0fcc9588a73a93a64e7f34f4e74cdff"
      ],
      "author": {
        "name": "Phạm Bình An",
        "email": "phambinhanctb2004@gmail.com",
        "time": "Sun Jun 01 18:58:09 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun Jun 01 18:58:09 2025 +0200"
      },
      "message": "patch 9.1.1421: tests: need a test for the new-style tutor.tutor\n\nProblem:  tests: need a test for the new-style tutor.tutor, patch\n          9.1.1384 broke the expected positions for the signs\nSolution: Update all number keys in tutor.tutor.json to match the\n          correct line numbers in tutor.tutor, replace tabs by spaces,\n          add a screen-dump test to verify it does not regress\n          (Pham Bình An)\n\ncloses: #17416\n\nSigned-off-by: Phạm Bình An \u003cphambinhanctb2004@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "54a09e7e861f314965cb1492ee6754c6d5daf653",
      "tree": "a088a1a12046664cd657dd3d75f88fedf2e4cfb8",
      "parents": [
        "055cca88c45099073424b69074678bceadebbe09"
      ],
      "author": {
        "name": "Eisuke Kawashima",
        "email": "e-kwsm@users.noreply.github.com",
        "time": "Sat May 31 12:30:59 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat May 31 12:30:59 2025 +0200"
      },
      "message": "patch 9.1.1420: tests: could need some more tests for shebang lines\n\nProblem:  tests: could need some more tests for shebang lines\nSolution: add more shebang patterns to test_filetype.vim\n          (Eisuke Kawashima)\n\ncloses: #17409\n\nSigned-off-by: Eisuke Kawashima \u003ce-kwsm@users.noreply.github.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "8cc6d8b187d53c70c5fdc8fb83d4d3cef35e6d44",
      "tree": "8586f2497837123fefd1cc28af521e262df860c1",
      "parents": [
        "647d7f738954c87666a182afbaf24af17402a064"
      ],
      "author": {
        "name": "Luuk van Baal",
        "email": "luukvbaal@gmail.com",
        "time": "Sat May 31 12:10:31 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat May 31 12:10:31 2025 +0200"
      },
      "message": "patch 9.1.1419: It is difficult to ignore all but some events\n\nProblem:  It is difficult to ignore all but some events.\nSolution: Add support for a \"-\" prefix syntax in \u0027(win)eventignore\u0027 that\n          subtracts an event from the ignored set if present\n          (Luuk van Baal).\n\ncloses: #17392\n\nSigned-off-by: Luuk van Baal \u003cluukvbaal@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "49864aecd0d23676e202b30bc8705c78ae52d680",
      "tree": "34cca968af8182c4b794abfe6c30ccfaf7e2c802",
      "parents": [
        "19ef6b0b4b11a9775f9c90edc68c896034fd2a9d"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Wed May 28 20:39:34 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed May 28 20:42:42 2025 +0200"
      },
      "message": "patch 9.1.1417: missing info about register completion in complete_info()\n\nProblem:  missing info about register completion in complete_info()\n          (after v9.1.1408)\nSolution: update documentation and mention that register is used as\n          source, add a test (glepnir)\n\ncloses: #17389\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "19ef6b0b4b11a9775f9c90edc68c896034fd2a9d",
      "tree": "dc9ea2662b376dda7b6460949c7b1858b01199b6",
      "parents": [
        "0bc8709a634ff2ae4024a59aa3b9873efa9c7453"
      ],
      "author": {
        "name": "Girish Palya",
        "email": "girishji@gmail.com",
        "time": "Wed May 28 20:28:21 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed May 28 20:33:12 2025 +0200"
      },
      "message": "patch 9.1.1416: completion limits not respected for fuzzy completions\n\nProblem:  completion limits not respected when using fuzzy completion\n          (Maxim Kim)\nSolution: trim completion array (Girish Palya)\n\nfixes: #17379\ncloses: #17386\n\nSigned-off-by: Girish Palya \u003cgirishji@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "ac83b3c373985080eda3a07a76a556b168da4abe",
      "tree": "7132367315926bee4d907274a7850f75d6984bb1",
      "parents": [
        "f0c7090a3833f1c85b242a858e7d95a34456674c"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue May 27 20:49:34 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Tue May 27 20:49:34 2025 +0200"
      },
      "message": "patch 9.1.1415: potential use-after free when there is an error in \u0027tabpanel\u0027\n\nProblem:  potential use-after free when there is an error in \u0027tabpanel\u0027\n          option (@char101, after v9.1.1391)\nSolution: check if p_tpl has been set to null before accessing it again.\n\nWhile at it slightly change starts_with_percent_and_bang() and use the\nexisting opt_name and opt_scope variables.\n\nfixes: #17364\ncloses: #17388\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "318ff9c3627f595905064d11b0d66b63bfe89ff1",
      "tree": "8e01c4ce8cf784d94abfa680caf299d9854f7b97",
      "parents": [
        "a004e5108c5620e9f831f96d2c584ba4d675b22b"
      ],
      "author": {
        "name": "Gary Johnson",
        "email": "garyjohn@spocom.com",
        "time": "Mon May 26 20:10:25 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon May 26 20:10:25 2025 +0200"
      },
      "message": "patch 9.1.1413: spurious CursorHold triggered in GUI on startup\n\nProblem:  spurious CursorHold triggered in GUI on startup\nSolution: init global did_cursorhold flag to true\n          (Gary Johnson)\n\nWhen Vim is started in GUI mode, the CursorHold autocommand event is\ntriggered \u0027updatetime\u0027 milliseconds later, even when the user has not\npressed a key.  This is different from the behavior of Vim in terminal\nmode, which does not trigger a CursorHold autocommand event at startup,\nand contradicts the description of the CursorHold event in \":help\nCursorHold\", which states that the event is \"[n]ot triggered until the\nuser has pressed a key\".\n\nThe fix is to change the initial value of did_cursorhold from FALSE to\nTRUE.  While it is true that the CursorDone event has not been done yet\nat startup, it should appear to have been done until the user presses\na key.\n\nfixes #17350\ncloses: #17382\n\nSigned-off-by: Gary Johnson \u003cgaryjohn@spocom.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "a004e5108c5620e9f831f96d2c584ba4d675b22b",
      "tree": "283f710aa593fc568820cbc6984aad8cff6b4ffd",
      "parents": [
        "a88c5bdcce2a3b603018149f02af94e392d2924f"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon May 26 19:54:07 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon May 26 19:54:07 2025 +0200"
      },
      "message": "patch 9.1.1412: tests: Test_tabpanel_tabonly() fails on larger screens\n\nProblem:  tests: Test_tabpanel_tabonly() fails on larger screens\nSolution: re-generate screendump file for 78 column large terminal\n\ncloses: #17376\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "a88c5bdcce2a3b603018149f02af94e392d2924f",
      "tree": "e73f8835d45bb37248f4aa703524e85ae0a591a5",
      "parents": [
        "7c621052c3f180c1ef70fb7abfdad18245f47fcc"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon May 26 19:51:03 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon May 26 19:51:03 2025 +0200"
      },
      "message": "patch 9.1.1411: crash when calling non-existing function for tabpanel\n\nProblem:  crash when calling non-existing function for tabpanel (Yamagi,\n          after v9.1.1391)\nSolution: check if there was an error and if there was, set tabpanel\n          option to empty to prevent showing errors on every redraw\n\nfixes: #17364\ncloses: #17375\ncloses: #17371\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "7c621052c3f180c1ef70fb7abfdad18245f47fcc",
      "tree": "088998e3d7248347090ea51127e3e1cd117f36b7",
      "parents": [
        "14f6da5ba8d602263fc7bf6cb899c8520f4c3060"
      ],
      "author": {
        "name": "Girish Palya",
        "email": "girishji@gmail.com",
        "time": "Mon May 26 19:41:59 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon May 26 19:41:59 2025 +0200"
      },
      "message": "patch 9.1.1410: out-of-bounds access with \u0027completefunc\u0027\n\nProblem:  out-of-bounds access with \u0027completefunc\u0027 (csetc)\nSolution: check if it is safe to advance cpt_sources_index\n          (Girish Palya)\n\nfixes: #17363\ncloses: #17374\n\nCo-authored-by: @csetc\nSigned-off-by: Girish Palya \u003cgirishji@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "14f6da5ba8d602263fc7bf6cb899c8520f4c3060",
      "tree": "d0b00e7cd53122216200967bcdd6301b1301c7ee",
      "parents": [
        "0546068aaef2b1a40faa2945ef7eba249739f219"
      ],
      "author": {
        "name": "Girish Palya",
        "email": "girishji@gmail.com",
        "time": "Mon May 26 19:04:25 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon May 26 19:04:25 2025 +0200"
      },
      "message": "patch 9.1.1409: using f-flag in \u0027complete\u0027 conflicts with Neovim\n\nProblem:  using f-flag in \u0027complete\u0027 conflicts with Neovims filename\n          completion (glepnir, after v9.1.1301).\nSolution: use upper-case \"F\" flag for completion functions\n          (Girish Palya).\n\nfixes: #17347\ncloses: #17378\n\nSigned-off-by: Girish Palya \u003cgirishji@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "0546068aaef2b1a40faa2945ef7eba249739f219",
      "tree": "ca56122ca5e2c98e0c66c84f5b5f90c928a91f94",
      "parents": [
        "69c3493adc4db162447893ca5b7f224f9432a19a"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Mon May 26 18:23:27 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon May 26 18:25:57 2025 +0200"
      },
      "message": "patch 9.1.1408: not easily possible to complete from register content\n\nProblem:  not easily possible to complete from register content\nSolution: add register-completion submode using i_CTRL-X_CTRL-R\n          (glepnir)\n\ncloses: #17354\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "5717ee33db0048a496e8bed0b0cb20133b3f76ca",
      "tree": "08f4e4e27e1683f74496f04b45325084e1474686",
      "parents": [
        "9772025d24e939fd84b85748ce35c26874c05775"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Sun May 25 16:59:50 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun May 25 16:59:50 2025 +0200"
      },
      "message": "patch 9.1.1407: Can\u0027t use getpos(\u0027v\u0027) in OptionSet when using setbufvar()\n\nProblem:  Can\u0027t use getpos(\u0027v\u0027) in OptionSet when using setbufvar().\nSolution: Don\u0027t reset Visual selection when switching to the same\n          buffer (zeertzjq).\n\ncloses: #17373\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "9772025d24e939fd84b85748ce35c26874c05775",
      "tree": "240d05f5e7e18fdfc76a482135f6b0601e73f958",
      "parents": [
        "9ff1e598e8ee373b5623219ed38ad49470ec7938"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Fri May 23 17:39:44 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri May 23 17:39:44 2025 +0200"
      },
      "message": "patch 9.1.1406: crash when importing invalid tuple\n\nProblem:  crash when importing invalid tuple\n          (Yang LUO, Yanju Chen)\nSolution: set type to VAR_UNKNOWN, so that it isn\u0027t freed\n          (Yegappan Lakshmanan)\n\ncloses: #17362\n\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "9ff1e598e8ee373b5623219ed38ad49470ec7938",
      "tree": "579b9ba4ddc3e243459089fce5c227212600c504",
      "parents": [
        "e8302da74aee55fe8f6496b5b711fed7d92318c5"
      ],
      "author": {
        "name": "zeertzjq",
        "email": "zeertzjq@outlook.com",
        "time": "Fri May 23 17:16:17 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri May 23 17:16:17 2025 +0200"
      },
      "message": "patch 9.1.1405: tests: no test for mapping with special keys in session file\n\nProblem:  tests: no test for mapping with special keys in session file.\nSolution: Add a special keys to an existing test.  Also test with UTF-8\n          characters containing 0x80 or 0x9b bytes (zeertzjq).\n\ncloses: #17360\n\nSigned-off-by: zeertzjq \u003czeertzjq@outlook.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "e8302da74aee55fe8f6496b5b711fed7d92318c5",
      "tree": "c7a12880c2693faa9b3d252111d952df26bbed28",
      "parents": [
        "f4b2fce71c3b5a4f1cada0e852393efbd493e331"
      ],
      "author": {
        "name": "Phạm Bình An",
        "email": "111893501+brianhuster@users.noreply.github.com",
        "time": "Thu May 22 22:53:28 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu May 22 22:53:28 2025 +0200"
      },
      "message": "patch 9.1.1404: wrong link to Chapter 2 in new-tutor\n\nProblem:  wrong link to Chapter 2 in vim-01-beginner.tutor\nSolution: Fix the link to Chapter 2, add test for links in tutor files\n          (Phạm Bình An)\n\nIn order to write the test, I expose the function `s:GlobTutorials` as\n`tutor#GlobTutorials` and make it also accept a `locale` argument.\n\ncloses: #17356\n\nSigned-off-by: Phạm Bình An \u003c111893501+brianhuster@users.noreply.github.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "5b07aff2f665f290f2ec4a5e6bcf9873a178149a",
      "tree": "bedb9f9b91bc3fb0a1f2c4791493827c5474af93",
      "parents": [
        "1a8be6b4478648c971517e23c65e975b90ab37b4"
      ],
      "author": {
        "name": "GuyBrush",
        "email": "miguel.barro@live.com",
        "time": "Thu May 22 22:19:25 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu May 22 22:34:31 2025 +0200"
      },
      "message": "patch 9.1.1402: multi-byte mappings not properly stored in session file\n\nProblem:  multi-byte mappings not properly stored in session file\nSolution: unescape the mapping before writing out the mapping, prefer\n          single-byte mapping name if possible (Miguel Barro)\n\ncloses: #17355\n\nSigned-off-by: GuyBrush \u003cmiguel.barro@live.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "56b1207e66d8db82dabf3f36aadf24caea61aa71",
      "tree": "a1ce9f8541cfd4d72c9d56572ee04275fd7c5cf0",
      "parents": [
        "1307743697bbc46e1518abfea7f89caa95bcaf97"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed May 21 21:01:40 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed May 21 21:01:40 2025 +0200"
      },
      "message": "patch 9.1.1401: list not materialized in prop_list()\n\nProblem:  list not materialized in prop_list()\n          (Nickwiz)\nSolution: materialize list before accessing it\n\nfixes: #17298\ncloses: #17349\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "1307743697bbc46e1518abfea7f89caa95bcaf97",
      "tree": "1d64d251d330f2dde124074d23a6f492b5e3cdf3",
      "parents": [
        "681f1c914f8b4a1b53b838d5d6d8d0b931ea1ee0"
      ],
      "author": {
        "name": "Yegappan Lakshmanan",
        "email": "yegappan@yahoo.com",
        "time": "Wed May 21 20:52:44 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed May 21 20:54:27 2025 +0200"
      },
      "message": "patch 9.1.1400: [security]: use-after-free when evaluating tuple fails\n\nProblem:  [security]: use-after-free when evaluating tuple fails\nSolution: return early in case of an error (Yegappan Lakshmanan)\n\ncloses: #17351\n\nSigned-off-by: Yegappan Lakshmanan \u003cyegappan@yahoo.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "681f1c914f8b4a1b53b838d5d6d8d0b931ea1ee0",
      "tree": "2f2ee6587d202fc70c90fb8121dcc2d5799c5c37",
      "parents": [
        "719ec0fe154e321bf7cf2cb2f93e8aa30036b87e"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed May 21 20:50:11 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed May 21 20:50:11 2025 +0200"
      },
      "message": "patch 9.1.1399: tests: test_codestyle fails for auto-generated files\n\nProblem:  tests: test_codestyle fails for auto-generated files.\n          While those files are already ignored in Test_source_Files(),\n          the newly added Test_indent_of_source_files() does not filter\n          those out and causes test failures on appveyor.\nSolution: factor out the generation of all c files into a common function\n          and filter out auto-generated files if_ole.h, iid_ole.c and\n          dlldata.c\n\ncloses: #17352\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "0816f17e9a2ba2d1e132497b03905878c7340a78",
      "tree": "620a71186adcf6027c47952dd6e8f9d698ea97f3",
      "parents": [
        "a577e4289c3177309880592b85f225e487552f17"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Sun May 18 20:14:53 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sun May 18 20:14:53 2025 +0200"
      },
      "message": "patch 9.1.1398: completion: trunc does not follow Pmenu highlighting attributes\n\nProblem:  When items are combined with user-defined highlight attributes\n          (e.g., strikethrough), trunc inherits these attributes, making\n          the text difficult to read.\nSolution: trunc now uses the original Pmenu and PmenuSel highlight\n          attributes (glepnir)\n\ncloses: #17340\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "2a1e253e266b62445e0087508109c41c41052a87",
      "tree": "0dc8a8ed2e6dd1ac3c932b72a9dba34a92d567f2",
      "parents": [
        "7b9eb6389d693dafcd502cda2ffc62564a2dbba9"
      ],
      "author": {
        "name": "Naruhiko Nishino",
        "email": "naru123456789@gmail.com",
        "time": "Sat May 17 16:19:24 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Sat May 17 16:19:24 2025 +0200"
      },
      "message": "patch 9.1.1397: tabpanel not correctly updated on :tabonly\n\nProblem:  tabpanel not correctly updated on :tabonly\n          (Maxim Kim)\nSolution: force a redraw, take \u0027equalalways\u0027 into account\n          (Naruhiko Nishino)\n\nrelated: https://github.com/vim/vim/pull/17330#issuecomment-2888146370\ncloses: #17337\n\nSigned-off-by: Naruhiko Nishino \u003cnaru123456789@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "7b9eb6389d693dafcd502cda2ffc62564a2dbba9",
      "tree": "9bd235226ee20fb8878d96c3b6cd25330670edb2",
      "parents": [
        "670d0c1468b7ece958acf3b03de9e202e612804a"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Fri May 16 19:49:23 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri May 16 19:49:23 2025 +0200"
      },
      "message": "patch 9.1.1396: \u0027errorformat\u0027 is a global option\n\nProblem:  The \u0027grepformat\u0027 option is global option, but it would be\n          useful to have it buffer-local, similar to \u0027errorformat\u0027 and\n          other quickfix related options (Dani Dickstein)\nSolution: Add the necessary code to support global-local \u0027grepformat\u0027,\n          allowing different buffers to parse different grep output\n          formats (glepnir)\n\nfixes: #17316\ncloses: #17315\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "670d0c1468b7ece958acf3b03de9e202e612804a",
      "tree": "07cafd7b4e9ea8da541c4ec8b78cd5b3c551fdd8",
      "parents": [
        "c659e4a51663db6955dd5f690dff536576430374"
      ],
      "author": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri May 16 19:38:50 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri May 16 19:38:50 2025 +0200"
      },
      "message": "patch 9.1.1395: search_stat not reset when pattern differs in case\n\nProblem:  search_stat not reset when pattern differs in case\n          (tahzibijafar)\nSolution: use STRNCMP instead of MB_STRNICMP macro\n\nThere was a long standing todo comment, that using MB_STRNICMP is wrong.\nSo let\u0027s change it to STRNCMP() instead. Even if it not handle\nmulti-byte characters correctly, then Vim will rather recompute the\nsearch stat, instead of re-using the old (and possibly wrong) value.\n\nfixes: #17312\ncloses: #17314\n\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "c659e4a51663db6955dd5f690dff536576430374",
      "tree": "19731f1c033772a8851937b21461edf41dad3262",
      "parents": [
        "ba19b658998e5bfa9456fde00ae98759af6dde6d"
      ],
      "author": {
        "name": "Hirohito Higashi",
        "email": "h.east.727@gmail.com",
        "time": "Fri May 16 19:34:34 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Fri May 16 19:36:56 2025 +0200"
      },
      "message": "patch 9.1.1394: tabpanel not correctly redrawn on tabonly\n\nProblem:  tabpanel not correctly redrawn on tabonly\n          (Maxim Kim, after v9.1.1391)\nSolution: force redraw of the tabpanel, tweak style\n          (Hirohito Higashi)\n\nfixes: #17322\ncloses: #17330\n\nSigned-off-by: Hirohito Higashi \u003ch.east.727@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "31be82e66d412000f1d964a36bb8a03d40eaaeac",
      "tree": "ace5f96e9197f51927175cd94e993c983ef2f7bf",
      "parents": [
        "c49cb93a86216eb3a9e5816227e242d54b72bdf8"
      ],
      "author": {
        "name": "Sean Dewar",
        "email": "6256228+seandewar@users.noreply.github.com",
        "time": "Thu May 15 19:59:37 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Thu May 15 19:59:37 2025 +0200"
      },
      "message": "patch 9.1.1393: missing test for switching buffers and reusing curbuf\n\nProblem:  The check in buf_freeall that restores curwin subtly prevents\n          leaving an unloaded buffer in a window when reusing curbuf, if\n          autocommands switch to a different buffer.\nSolution: Add a test case that covers this. Also ensure splitting isn\u0027t\n          possible, as that could do the same (Sean Dewar)\n\ncloses: #17325\n\nSigned-off-by: Sean Dewar \u003c6256228+seandewar@users.noreply.github.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "be5bd4d6292fddcc103091407792730aaa48cc48",
      "tree": "1b0b08fb9351e68a60912ea595502368360fa7d3",
      "parents": [
        "7200eae2126afd4518244c2d70638a7d8d64b26f"
      ],
      "author": {
        "name": "Naruhiko Nishino",
        "email": "naru123456789@gmail.com",
        "time": "Wed May 14 21:20:28 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed May 14 21:20:28 2025 +0200"
      },
      "message": "patch 9.1.1391: Vim does not have a vertical tabpanel\n\nProblem:  Vim does not have a tabpanel\nSolution: include the tabpanel feature\n          (Naruhiko Nishino, thinca)\n\ncloses: #17263\n\nCo-authored-by: thinca \u003cthinca@gmail.com\u003e\nSigned-off-by: Naruhiko Nishino \u003cnaru123456789@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "08db2f4f287722d8fcdc00ab6ca9a1b07ec5faaa",
      "tree": "fd892250777012605b7b0569a6ff3deec9c33a6f",
      "parents": [
        "c6c72d165c90e94eee1d9107d82fb180ed138190"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Wed May 14 20:26:19 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed May 14 20:26:19 2025 +0200"
      },
      "message": "patch 9.1.1389: completion: still some issue when \u0027isexpand\u0027 contains a space\n\nProblem:  Cannot get completion startcol when space is not the first\n          trigger character (after v9.1.1383)\nSolution: Detect the next comma followed by a space in the option string\n          and use in next compare loop (glepnir)\n\ncloses: #17311\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "c6c72d165c90e94eee1d9107d82fb180ed138190",
      "tree": "22128adc93e8d411a6bfe3a4228cf4012b774f01",
      "parents": [
        "0077282c8209e5a3893d74a0176ab21895c5de4e"
      ],
      "author": {
        "name": "Luuk van Baal",
        "email": "luukvbaal@gmail.com",
        "time": "Wed May 14 20:21:55 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed May 14 20:21:55 2025 +0200"
      },
      "message": "patch 9.1.1388: Scrolling one line too far with \u0027nosmoothscroll\u0027 page scrolling\n\nProblem:  One-off error in \"count\" to make \"w_skipcol\" zero with\n          \u0027nosmoothscroll\u0027 page scrolling when last virtual line\n          in a buffer line is exactly the entire window width.\n          (Hirohito Higashi)\nSolution: Properly compute the smallest integer value necessary\n          to make \"w_skipcol\" zero (Luuk van Baal)\n\nfixes: #17317\ncloses: #17318\n\nSigned-off-by: Luuk van Baal \u003cluukvbaal@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "0077282c8209e5a3893d74a0176ab21895c5de4e",
      "tree": "cfe902de2c61d107de47f8475ca706fd3f7f834f",
      "parents": [
        "c952fd1b24fed70093009dbf53214431149a6d53"
      ],
      "author": {
        "name": "Sean Dewar",
        "email": "6256228+seandewar@users.noreply.github.com",
        "time": "Wed May 14 20:16:52 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Wed May 14 20:16:52 2025 +0200"
      },
      "message": "patch 9.1.1387: memory leak when buflist_new() fails to reuse curbuf\n\nProblem:  buflist_new() leaks ffname and fails to reuse curbuf when\n          autocommands from buf_freeall change curbuf. Plus, a new\n          buffer is not allocated in this case, despite what the comment\n          above claims.\nSolution: Remove the condition so ffname is not leaked and so a new\n          buffer is allocated like before v8.2.4791. It should not be\n          possible for undo_ftplugin or buf_freeall autocommands to\n          delete the buffer as they set b_locked, but to stay consistent\n          with other uses of buf_freeall, guard against that anyway\n          (Sean Dewar).\n\nNote that buf is set to NULL if it was deleted to guard against the (rare)\npossibility of messing up the \"buf !\u003d curbuf\" condition below if a new buffer\nhappens to be allocated at the same address.\n\ncloses: #17319\n\nSigned-off-by: Sean Dewar \u003c6256228+seandewar@users.noreply.github.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "acf0ebe8a8f4dd389a8fe8cea52ff43bc8bfe1be",
      "tree": "68a5919f4b49ecf7b721edb8b9cac782151caf04",
      "parents": [
        "13bea589a25707c8f9e29b2920410bdcccd79bc5"
      ],
      "author": {
        "name": "Luuk van Baal",
        "email": "luukvbaal@gmail.com",
        "time": "Mon May 12 20:45:41 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon May 12 20:47:00 2025 +0200"
      },
      "message": "patch 9.1.1385: inefficient loop for \u0027nosmoothscroll\u0027 scrolling\n\nProblem:  Loop that ensures \"w_skipcol\" is zero with \u0027nosmoothscroll\u0027\n\t  for (half)-page scrolling is inefficient.\nSolution: Calculate the required \"count\" instead of looping until\n\t  \"w_skipcol\" is zero (Luuk van Baal).\n\nfixes: #17301\ncloses: #17306\n\nSigned-off-by: Luuk van Baal \u003cluukvbaal@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "13bea589a25707c8f9e29b2920410bdcccd79bc5",
      "tree": "b33347b771a193498ac1d09c7ffcacb80fb257e8",
      "parents": [
        "8d0e42b71023144e6db17534da41ffecbd0b655f"
      ],
      "author": {
        "name": "Phạm Bình An",
        "email": "phambinhanctb2004@gmail.com",
        "time": "Mon May 12 20:39:24 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon May 12 20:39:24 2025 +0200"
      },
      "message": "patch 9.1.1384: still some problem with the new tutors filetype plugin\n\nProblem:  still some problem with the new tutors filetype plugin\nSolution: refactor code to enable/disable tutor mode into\n          tutor#EnableInteractive() function, include a test\n          (Phạm Bình An)\n\nI find it annoying that Tutor\u0027s interactive mode is always on (or debug\nmode is off) even when I open a tutor file with :edit command.\nI think it makes more sense to make this \"interactive mode\":\n\n- Always on when it is opened with :Tutor command\n- Off otherwise\n\nFor more references, see `:help` feature, it is a much better than\n:Tutor, since I don\u0027t have to run `:let g:help_debug \u003d 1` just to be able\nto edit and save a help file\n\nTherefore, I remove `g:tutor_debug`\n\ncloses: #17299\n\nSigned-off-by: Phạm Bình An \u003cphambinhanctb2004@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "commit": "8d0e42b71023144e6db17534da41ffecbd0b655f",
      "tree": "84fb8f1c401541f3ebdc0da56c66b2df32f925a4",
      "parents": [
        "e62244f22dc81b86f76c6cf2f10a6aa3c8f1dd00"
      ],
      "author": {
        "name": "glepnir",
        "email": "glephunter@gmail.com",
        "time": "Mon May 12 20:28:28 2025 +0200"
      },
      "committer": {
        "name": "Christian Brabandt",
        "email": "cb@256bit.org",
        "time": "Mon May 12 20:28:28 2025 +0200"
      },
      "message": "patch 9.1.1383: completion: \u0027isexpand\u0027 option does not handle space char correct\n\nProblem:  When a space character is used as a trigger in \u0027isexpand\u0027 option\n          it doesn\u0027t get recognized because skip_to_option_part() skips\n          spaces after a comma, treating them as option separators\n          rather than option value (after v9.1.1341)\nSolution: manually set the part to a space character (glepnir).\n\ncloses: #17305\n\nSigned-off-by: glepnir \u003cglephunter@gmail.com\u003e\nSigned-off-by: Christian Brabandt \u003ccb@256bit.org\u003e\n"
    },
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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"
    }
  ],
  "next": "5ce1e4ad4aaad243de03f29b0b341532bc6c8866"
}
