)]}'
{
  "log": [
    {
      "commit": "ca70c07b72c24aae3d141e67d08f50361f051af5",
      "tree": "98b26c267d6924c2a7464e08dc9fcacdd94d771f",
      "parents": [
        "d6cd5ffade84a1054fed23079133af3b837033bf"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat May 30 20:30:46 2020 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat May 30 20:30:46 2020 +0200"
      },
      "message": "patch 8.2.0853: ml_delete() often called with FALSE argument\n\nProblem:    ml_delete() often called with FALSE argument.\nSolution:   Use ml_delete_flags(x, ML_DEL_MESSAGE) when argument is TRUE.\n"
    },
    {
      "commit": "6adb9ea0a6ca01414f4b591f379b0f829a8273c0",
      "tree": "8af9e5e5b2ea5d0a76e0fb1b393835c46674b27f",
      "parents": [
        "4e5534fab798ab7c95554da3bc80b08336aedc2b"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Apr 30 22:31:18 2020 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Apr 30 22:31:18 2020 +0200"
      },
      "message": "patch 8.2.0670: cannot change window when evaluating \u0027completefunc\u0027\n\nProblem:    Cannot change window when evaluating \u0027completefunc\u0027.\nSolution:   Make a difference between not changing text or buffers and also\n            not changing window.\n"
    },
    {
      "commit": "aeea72151c31d686bcbb7b06d895006d7363585c",
      "tree": "500d487503a1a82cecc8f2a3e9bf89b50638fe5a",
      "parents": [
        "f10806b25090879fdc1a86cc0da2f4f34fd21921"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Apr 02 18:50:46 2020 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Apr 02 18:50:46 2020 +0200"
      },
      "message": "patch 8.2.0500: using the same loop in many places\n\nProblem:    Using the same loop in many places.\nSolution:   Define more FOR_ALL macros. (Yegappan Lakshmanan, closes #5339)\n"
    },
    {
      "commit": "12f20038714928bfecdeee31ed1f927324542034",
      "tree": "2a621ca1c4a57514ec42c53132f1839a452167e2",
      "parents": [
        "7eeefd4a395fe3d7c7a2a0879467cf7ed4c29fe6"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Feb 26 22:06:00 2020 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Feb 26 22:06:00 2020 +0100"
      },
      "message": "patch 8.2.0324: text property not updated correctly when inserting/deleting\n\nProblem:    Text property not updated correctly when inserting/deleting.\nSolution:   Use the right column when deleting. Make zero-width text\n            properties respect start_incl and end_incl. (Axel Forsman,\n            closes #5696, closes #5679)\n"
    },
    {
      "commit": "4b7cdca23035eacf6cd0e30b90546cf32f7efe9e",
      "tree": "0a79a0d892c24d9fa72a1412bb2dbffb87cedfe7",
      "parents": [
        "ea8b7aecab9cc6d9c2d2845ad53203b26de14f85"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jan 01 16:18:38 2020 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jan 01 16:18:38 2020 +0100"
      },
      "message": "patch 8.2.0074: Python 3 unicode test someitmes fails\n\nProblem:    Python 3 unicode test someitmes fails.\nSolution:   Make \u0027termencoding\u0027 empty.  Correct number of error message.\n"
    },
    {
      "commit": "05ad5ff0ab34ed9a5296dedd420ca81698b8ce22",
      "tree": "7354d352e37ab28988ce26e4f88efd9a9b9f71ec",
      "parents": [
        "0c5c3faef2d54151a8c144539e3e5a3350fb18c7"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Nov 30 22:48:27 2019 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Nov 30 22:48:27 2019 +0100"
      },
      "message": "patch 8.1.2371: FEAT_TEXT_PROP is a confusing name\n\nProblem:    FEAT_TEXT_PROP is a confusing name.\nSolution:   Use FEAT_PROP_POPUP. (Naruhiko Nishino, closes #5291)\n"
    },
    {
      "commit": "c667da5185ce5dce914d2006d62da2be0cedb384",
      "tree": "cd06b08e9fb7d701653850cd33524d3f1f5acaaf",
      "parents": [
        "71136db1bfbc67c2e55f8070cdf0a241c643e45b"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Nov 30 20:52:27 2019 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Nov 30 20:52:27 2019 +0100"
      },
      "message": "patch 8.1.2368: using old C style comments\n\nProblem:    Using old C style comments.\nSolution:   Use // comments where appropriate.\n"
    },
    {
      "commit": "7bae0b1bc84a95d565ffab38cf7f82ad21c656b6",
      "tree": "2d724ddd855892ef212f14924e2cc04feafa5abe",
      "parents": [
        "94d9f4fa65bce6f116cf89bfdabdf5a06509056f"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Nov 21 22:14:18 2019 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Nov 21 22:14:18 2019 +0100"
      },
      "message": "patch 8.1.2331: the option.c file is still very big\n\nProblem:    The option.c file is still very big.\nSolution:   Move a few functions to where they fit better. (Yegappan\n            Lakshmanan, closes #4895)\n"
    },
    {
      "commit": "eda1da0c9a8db1400649629117e7d248c07735f7",
      "tree": "b5357f17e49a2bc1cd71a44895b6d0621124605a",
      "parents": [
        "077b9dd3541339a23ade0cc6a23e804ee39312c5"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Nov 17 17:06:33 2019 +0100"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Nov 17 17:06:33 2019 +0100"
      },
      "message": "patch 8.1.2313: debugging where a delay comes from is not easy\n\nProblem:    Debugging where a delay comes from is not easy.\nSolution:   Use different values when calling ui_delay().\n"
    },
    {
      "commit": "11a58af66fa5c442f0a22c5d59beabf187ed4e89",
      "tree": "19b2b26b7907004365c26f85a667655c45c17d3a",
      "parents": [
        "aa1f04d09286085c4031bc7c4ca9fa672f6f4905"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Oct 24 22:32:31 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Oct 24 22:32:31 2019 +0200"
      },
      "message": "patch 8.1.2214: too much is redrawn when \u0027cursorline\u0027 is set\n\nProblem:    Too much is redrawn when \u0027cursorline\u0027 is set.\nSolution:   Don\u0027t do a complete redraw. (closes #5079)\n"
    },
    {
      "commit": "336bf2b8b269e2591576b9f580e79edb93e23c62",
      "tree": "c2e62950b68cc8a87fd4a888b237d0ffe509191a",
      "parents": [
        "b754b5bf6d9ac1f3654552973aa6f9c11239af3d"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Oct 24 20:07:07 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Oct 24 20:07:07 2019 +0200"
      },
      "message": "patch 8.1.2211: listener callback \"added\" argument is not the total\n\nProblem:    Listener callback \"added\" argument is not the total. (Andy\n            Massimino)\nSolution:   Compute the total. (closes #5105)\n"
    },
    {
      "commit": "14c01f83487d5c53192297a710eda2b8a4ab17c9",
      "tree": "d5c5e8d42ab13b257fd2e17fd7530511a766ba8a",
      "parents": [
        "6bd1d7706766a7899904163e8fd55ea117fb1953"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Oct 09 22:53:08 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Oct 09 22:53:08 2019 +0200"
      },
      "message": "patch 8.1.2127: the indent.c file is a bit big\n\nProblem:    The indent.c file is a bit big.\nSolution:   Move C-indent code a a new cindent.c file.  Move other\n            indent-related code to indent.c. (Yegappan Lakshmanan,\n            closes #5031)\n"
    },
    {
      "commit": "8617348e2110c2c8387ea448a6258f1effa8d249",
      "tree": "fab9e6b710dba337eb5439160f84e2fead1103cf",
      "parents": [
        "b4367b7fb65f6a88f76ef99f79342341af0b1017"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Oct 01 17:02:16 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Oct 01 17:02:16 2019 +0200"
      },
      "message": "patch 8.1.2107: various memory leaks reported by asan\n\nProblem:    Various memory leaks reported by asan.\nSolution:   Free the memory. (Ozaki Kiichi, closes #5003)\n"
    },
    {
      "commit": "8c96af9c05bfcac2d5ae081e098d4863db561511",
      "tree": "aa01cdaf87cf8050334c8cb20014774623614e73",
      "parents": [
        "a893194d91a2942d4d54085d746ed137a9251b69"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Sep 28 19:05:57 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Sep 28 19:05:57 2019 +0200"
      },
      "message": "patch 8.1.2096: too many #ifdefs\n\nProblem:    Too many #ifdefs.\nSolution:   Graduate FEAT_COMMENTS.\n"
    },
    {
      "commit": "017ba07fa2cdc578245618717229444fd50c470d",
      "tree": "d848d329da08cbda1e846d6e7acf1a440f61d667",
      "parents": [
        "d9b0d83b13d2691e4544709abd87eac004715175"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Sep 14 21:01:23 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Sep 14 21:01:23 2019 +0200"
      },
      "message": "patch 8.1.2029: cannot control \u0027cursorline\u0027 highlighting well\n\nProblem:    Cannot control \u0027cursorline\u0027 highlighting well.\nSolution:   Add \"screenline\". (Christian Brabandt, closes #4933)\n"
    },
    {
      "commit": "c2b97643a82bb9fbd202312dac4aa995f92e9e5b",
      "tree": "1b10f0110238b77ab49f4524d9a2ce4139375415",
      "parents": [
        "4c313b13fb7bfa694ec6d2a13175e8650c007b2a"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Aug 25 14:48:37 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun Aug 25 14:48:37 2019 +0200"
      },
      "message": "patch 8.1.1926: cursorline not redrawn when putting a line above the cursor\n\nProblem:    Cursorline not redrawn when putting a line above the cursor.\nSolution:   Redraw when the curor line is below a change. (closes #4862)\n"
    },
    {
      "commit": "e2c453d38f6512ac4cff7cd26aa7780b4e2534d7",
      "tree": "8458a35d59ac43121bfd2d24d5e9f7f54969d0dc",
      "parents": [
        "d933c82ff4e2c910bd533ed9a50377699c3f5ec9"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Aug 21 14:37:09 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Aug 21 14:37:09 2019 +0200"
      },
      "message": "patch 8.1.1901: the +insert_expand feature is not always available\n\nProblem:    The +insert_expand feature is not always available.\nSolution:   Graduate the +insert_expand feature.\n"
    },
    {
      "commit": "5843f5f37b0632e2d706abc9014bfd7d98f7b02e",
      "tree": "2f1af5fd16214dfdf8edc8717e06a8b0aab81c1a",
      "parents": [
        "9a4a8c4d5993c6371486c895a515c2ad351e9aaa"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Aug 20 20:13:45 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue Aug 20 20:13:45 2019 +0200"
      },
      "message": "patch 8.1.1891: functions used in one file are global\n\nProblem:    Functions used in one file are global.\nSolution:   Add \"static\". (Yegappan Lakshmanan, closes #4840)\n"
    },
    {
      "commit": "c6538bcc1cdd1fb83732f22fdc69bd9bb66f968a",
      "tree": "80b89c210388f6e038ccbdc346f72a31bffd8430",
      "parents": [
        "749fa0af85232be1d44b77a09161f71cdbace62c"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Aug 03 18:17:11 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Aug 03 18:17:11 2019 +0200"
      },
      "message": "patch 8.1.1800: function call functions have too many arguments\n\nProblem:    Function call functions have too many arguments.\nSolution:   Pass values in a funcexe_T struct.\n"
    },
    {
      "commit": "4a0a161a9bdc074498b85e1dd6bb2aab62a53aee",
      "tree": "bb238dfc8de754b59de50ce2954d9db7a4e3839b",
      "parents": [
        "403d090e39abdc741c1b2ec0a05361cffd348289"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jul 17 22:00:19 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed Jul 17 22:00:19 2019 +0200"
      },
      "message": "patch 8.1.1710: Coverity found dead code\n\nProblem:    Coverity found dead code.\nSolution:   Remove merging of listener changes.\n"
    },
    {
      "commit": "7b73f914c4fc5a3f7ad97b678cc8137f964e3d62",
      "tree": "241abb8cf378c3157fd818d1c7bd71a91604a345",
      "parents": [
        "4e63f9425e6623aec4cd016af6def0b354b935f1"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jul 13 13:03:02 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jul 13 13:03:02 2019 +0200"
      },
      "message": "patch 8.1.1675: listener list not correctly updated on listener_remove()\n\nProblem:    Listener list not correctly updated on listener_remove().\nSolution:   Only set \"prev\" when not removing a listener.  Return one if the\n            listener was found and removed.\n"
    },
    {
      "commit": "c024b4667875e5bc6fd0ed791530e33c3161bff7",
      "tree": "4b7c358c24cb5f5d6d36a40250afbd44eaf6dda7",
      "parents": [
        "aef5c62a6fff7654bb8df7b9359e811f7a6e428f"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jun 08 18:07:21 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jun 08 18:07:21 2019 +0200"
      },
      "message": "patch 8.1.1498: \":write\" increments b:changedtick even though nothing changed\n\nProblem:    \":write\" increments b:changedtick even though nothing changed.\n            (Daniel Hahler)\nSolution:   Only increment b:changedtick if the modified flag is reset.\n"
    },
    {
      "commit": "125370459178b0ca3acc98edca774c390c9b9fa4",
      "tree": "296eefc52a5cd8cc65b934ef40abafab9ea12653",
      "parents": [
        "773a97c254d02784079fb3b20447620412588850"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jun 06 22:50:35 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu Jun 06 22:50:35 2019 +0200"
      },
      "message": "patch 8.1.1486: a listener change is merged even when it adds a line\n\nProblem:    A listener change is merged even when it adds a line. (Paul Jolly)\nSolution:   Do not merge a change that adds or removes a line. (closes #4490)\n"
    },
    {
      "commit": "3a97bb3f0f8bd118ae23f1c97e55d84ff42eef20",
      "tree": "b7013f43afaaba6ba20b356a7a80fe55add24f1a",
      "parents": [
        "7dd64a3e57d296fdee3b3ffe6d938f634b59848c"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jun 01 13:28:35 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat Jun 01 13:28:35 2019 +0200"
      },
      "message": "patch 8.1.1437: code to handle callbacks is duplicated\n\nProblem:    Code to handle callbacks is duplicated.\nSolution:   Add callback_T and functions to deal with it.\n"
    },
    {
      "commit": "68a4b04a8d2471adf9de595745437c7cf20b98d8",
      "tree": "eafe9c0d11c84ce76950b845a512515b38f58acc",
      "parents": [
        "868b7b6712ea4f2232eeeae18c5cbbbddf2ee84d"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed May 29 22:28:29 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed May 29 22:28:29 2019 +0200"
      },
      "message": "patch 8.1.1419: listener callbacks may be called recursively\n\nProblem:    Listener callbacks may be called recursively.\nSolution:   Set \"updating_screen\" while listener callbacks are invoked.\n"
    },
    {
      "commit": "c799fe206e61f2e2c1231bc46cbe4bb354f3da69",
      "tree": "68b3d2a8bb82519e29fc95f317d2ee02b07f95fa",
      "parents": [
        "b58a4b938c4bc7e0499700859bd7abba9acc5b11"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue May 28 23:08:19 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue May 28 23:08:19 2019 +0200"
      },
      "message": "patch 8.1.1414: alloc() returning \"char_u *\" causes a lot of type casts\n\nProblem:    Alloc() returning \"char_u *\" causes a lot of type casts.\nSolution:   Have it return \"void *\". (Mike Williams)  Define ALLOC_ONE() to\n            check the simple allocations.\n"
    },
    {
      "commit": "7b31a181c84ec6b9050892e80f3132907569f8d8",
      "tree": "1d12931fd5662f6c266b6e7fdcc620d2c82d6437",
      "parents": [
        "f0884c5f3f5a25481d1e16f0979aa978a6690bb1"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri May 24 21:39:27 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri May 24 21:39:27 2019 +0200"
      },
      "message": "patch 8.1.1389: changes are not flushed when end and start overlap\n\nProblem:    Changes are not flushed when end and start overlap. (Paul Jolly)\nSolution:   When end of a previous changes overlaps with start of a new\n            change, first flush listeners.\n"
    },
    {
      "commit": "18a4ba29aeccb9841d5bfdd2eaaffdfae2f15ced",
      "tree": "408ad339f6b34876d2fa481ac61568c7739b1160",
      "parents": [
        "71de720c2c117137185a6fc233b35aab37f0d4bc"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri May 24 19:39:03 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri May 24 19:39:03 2019 +0200"
      },
      "message": "patch 8.1.1386: unessesary type casts for lalloc()\n\nProblem:    Unessesary type casts for lalloc().\nSolution:   Remove type casts.  Change lalloc(size, TRUE) to alloc(size).\n"
    },
    {
      "commit": "964b3746b9c81e65887e2ac9a335f181db2bb592",
      "tree": "9afaaac41a1c4f71b359fd6706b88df00e22e7a1",
      "parents": [
        "d33a764123a8aedb20cd84aeff3b94810ee67c4c"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri May 24 18:54:09 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Fri May 24 18:54:09 2019 +0200"
      },
      "message": "patch 8.1.1384: using \"int\" for alloc() often results in compiler warnings\n\nProblem:    Using \"int\" for alloc() often results in compiler warnings.\nSolution:   Use \"size_t\" and remove type casts.  Remove alloc_check(), Vim\n            only works with 32 bit ints anyway.\n"
    },
    {
      "commit": "f3333b02f34526da46cdae608f7e2d869bb8c654",
      "tree": "be05ce3393cee6644f8755f59dcdf4b3694dbc33",
      "parents": [
        "386b43e59498cc7b52a60f09f74bdb44df99386c"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun May 19 22:53:40 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun May 19 22:53:40 2019 +0200"
      },
      "message": "patch 8.1.1359: text property wrong after :substitute with backslash\n\nProblem:    Text property wrong after :substitute with backslash.\nSolution:   Adjust text property columns when removing backslashes.\n            (closes #4397)\n"
    },
    {
      "commit": "338dfdad3844ebb1ce1d56c421d1f698c086eb0c",
      "tree": "92afa870c4fd44c0de47468149d64c42708c2aa8",
      "parents": [
        "dc6855af974f2ef553aceee619fadcb858e25d39"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun May 19 15:19:57 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sun May 19 15:19:57 2019 +0200"
      },
      "message": "patch 8.1.1351: text property wrong after :substitute\n\nProblem:    Text property wrong after :substitute.\nSolution:   Save for undo before changing any text properties.\n"
    },
    {
      "commit": "0d3cb73012332964e7a81d7afd1c21d393f45566",
      "tree": "f88c8cf7b3b4007b8ba2a064b7b143e8785c39f2",
      "parents": [
        "8055d17388736421d875dd4933c4c93d49a2ab58"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat May 18 13:05:18 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat May 18 13:05:18 2019 +0200"
      },
      "message": "patch 8.1.1344: Coverity complains about possibly using a NULL pointer\n\nProblem:    Coverity complains about possibly using a NULL pointer and copying\n            a string into a fixed size buffer.\nSolution:   Check for NULL, even though it should not happen.  Use\n            vim_strncpy() instead of strcpy().\n"
    },
    {
      "commit": "dda4144d39a9d685b8dda830978e7410bd372c40",
      "tree": "7044aa90183afff7fbf2cb141943c3812d6c2647",
      "parents": [
        "eda652215abf696f86b872888945a2d2dd8c7192"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu May 16 22:11:47 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Thu May 16 22:11:47 2019 +0200"
      },
      "message": "patch 8.1.1335: listener callback is called after inserting text\n\nProblem:    Listener callback is called after inserting text.\nSolution:   Flush the changes before inserting or deleting a line.  Store\n            changes per buffer.\n"
    },
    {
      "commit": "45dd07f10af9bea86f8df77e92788209e209fdab",
      "tree": "f13ed8d114a89aaa99a9ff0ca9a85bde4a62a16c",
      "parents": [
        "fe1ade0a78a70a4c7ddaebb6964497f037f4997a"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed May 15 22:45:37 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Wed May 15 22:45:37 2019 +0200"
      },
      "message": "patch 8.1.1333: text properties don\u0027t always move after changes\n\nProblem:    Text properties don\u0027t always move after changes.\nSolution:   Update properties before reporting changes to listeners. Move text\n            property when splitting a line.\n"
    },
    {
      "commit": "fe1ade0a78a70a4c7ddaebb6964497f037f4997a",
      "tree": "2a19d938a6a5cc48aa729feb4caebd09c8a5a0d1",
      "parents": [
        "fb222df28d5158516104a21cba7141a6240f4817"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue May 14 21:20:36 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Tue May 14 21:20:36 2019 +0200"
      },
      "message": "patch 8.1.1332: cannot flush listeners without redrawing, mix of changes\n\nProblem:    Cannot flush change listeners without also redrawing.  The line\n            numbers in the list of changes may become invalid.\nSolution:   Add listener_flush().  Invoke listeners before adding a change\n            that makes line numbers invalid.\n"
    },
    {
      "commit": "a334772967de25764ed7b11d768e8b977818d0c6",
      "tree": "1f5b7b787eb7b18e2adb6aee66843837d64cdb99",
      "parents": [
        "6d2399bd1053b367e13cc2b8991d3ff0bf724c7c"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat May 11 21:14:24 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat May 11 21:14:24 2019 +0200"
      },
      "message": "patch 8.1.1321: no docs or tests for listener functions\n\nProblem:    No docs or tests for listener functions.\nSolution:   Add help and tests for listener_add() and listener_remove().\n            Invoke the callbacks before redrawing.\n"
    },
    {
      "commit": "6d2399bd1053b367e13cc2b8991d3ff0bf724c7c",
      "tree": "d80ead8330e09e75221c0269235e8a69092634c6",
      "parents": [
        "6ed8819822994512c160006bd1204aa11ae3c494"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat May 11 19:14:16 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat May 11 19:14:16 2019 +0200"
      },
      "message": "patch 8.1.1320: it is not possible to track changes to a buffer\n\nProblem:    It is not possible to track changes to a buffer.\nSolution:   Add listener_add() and listener_remove(). No docs or tests yet.\n"
    },
    {
      "commit": "3f86ca0faa29cb862f876a97f87790f3a46a3858",
      "tree": "43e004798f898ffde8f44fd10c83d2b348cdeb90",
      "parents": [
        "dc9f9e93f5229fd4325472ed62e7b17872d64060"
      ],
      "author": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat May 11 18:30:00 2019 +0200"
      },
      "committer": {
        "name": "Bram Moolenaar",
        "email": "Bram@vim.org",
        "time": "Sat May 11 18:30:00 2019 +0200"
      },
      "message": "Add missing files from patch 8.1.1318\n"
    }
  ]
}
