Skip to content

Instantly share code, notes, and snippets.

@cljoly
Last active December 10, 2021 15:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cljoly/6cd4ec596370514ed1608f1c59024b72 to your computer and use it in GitHub Desktop.
Save cljoly/6cd4ec596370514ed1608f1c59024b72 to your computer and use it in GitHub Desktop.
Test Lua performance msgpack vs json
-- Initial JSON created with
-- gh pr list --json additions,assignees,author,baseRefName,body,changedFiles,closed,closedAt,comments,commits,createdAt,deletions,files,headRefName,headRepository,headRepositoryOwner,id,isCrossRepository,isDraft,labels,maintainerCanModify,mergeCommit,mergeStateStatus,mergeable,mergedAt,mergedBy,milestone,number,potentialMergeCommit,projectCards,reactionGroups,reviewDecision,reviewRequests,reviews,state,statusCheckRollup,title,updatedAt,url
-- JSON data are on the first line
local data_json = vim.fn.readfile('/tmp/neovim-prs.json')[1]
local iterations = 10000
local x = os.clock()
local t = os.time()
for i=1,iterations do
local j = vim.json.decode(data_json)
end
print(string.format("elapsed clock: %.2f\n", (os.clock() - x)/iterations))
print(string.format("elapsed time: %.2f\n", os.difftime(t, os.time())/iterations))
print(j)
[{"additions":18,"assignees":[],"author":{"login":"dm1try"},"baseRefName":"master","body":"the alternative solution for the issues below (supersedes #16596)\r\nproposed in [this comment](https://github.com/neovim/neovim/issues/9483#issuecomment-461996053) by @justinmk \r\n> Mouse-click in a normal buffer places the cursor without leaving insert-mode. I don't see why clicking in a terminal-buffer in terminal-mode (insert-mode) should exit terminal-mode. \r\n\r\nbut this one is more like a \"feature\" but not a \"fix\" :) the behavior is similar to Vim now(though, the terminal scrolling still leads to exit from Terminal mode).\r\n\r\ncloses #9483\r\ncloses #8691","changedFiles":2,"closed":false,"closedAt":null,"comments":[],"commits":[{"authoredDate":"2021-12-10T10:43:43Z","authors":[{"email":"me@dmitry.it","id":"MDQ6VXNlcjQ4NjgwNw==","login":"dm1try","name":"dm1try"}],"committedDate":"2021-12-10T11:07:49Z","messageBody":"closes #9483\ncloses #8691","messageHeadline":"feat(terminal): do not leave Terminal mode on mouse clicks","oid":"c72823dc378e12f0dcdeeb446f8d3cfd2d50b8d5"}],"createdAt":"2021-12-10T10:53:33Z","deletions":0,"files":[{"path":"src/nvim/terminal.c","additions":6,"deletions":0},{"path":"test/functional/terminal/mouse_spec.lua","additions":12,"deletions":0}],"headRefName":"do_not_leave_terminal_mode_on_mouse_clicks","headRepository":{"id":"MDEwOlJlcG9zaXRvcnkxNDY5MTExMjA=","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjQ4NjgwNw==","login":"dm1try"},"id":"PR_kwDOAPphoM4vrAmm","isCrossRepository":true,"isDraft":false,"labels":[{"id":"MDU6TGFiZWwyMTI2OTY4MjI=","name":"terminal","description":"related to Neovim's built-in `:terminal`","color":"c5def5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"BLOCKED","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16604,"potentialMergeCommit":{"oid":"508fcc30c79b97739857b5698398e86bf70762d6"},"projectCards":[],"reactionGroups":[],"reviewDecision":"","reviewRequests":[],"reviews":[],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"ubuntu-20.04 asan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T11:08:47Z","completedAt":"2021-12-10T11:31:53Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482646461?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T11:08:47Z","completedAt":"2021-12-10T11:09:06Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482646291?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 lint (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T11:08:46Z","completedAt":"2021-12-10T11:12:31Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482646508?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 tsan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T11:08:47Z","completedAt":"2021-12-10T11:19:39Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482646549?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-10.15 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T11:08:51Z","completedAt":"2021-12-10T11:23:14Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482646591?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-11.0 (cc=clang)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-10T11:08:54Z","completedAt":"2021-12-10T11:26:58Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482646635?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MINGW_64-gcov)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-10T11:08:48Z","completedAt":"2021-12-10T11:27:39Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482646713?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MSVC_64)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-10T11:08:48Z","completedAt":"2021-12-10T11:24:30Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482646785?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T11:08:46Z","completedAt":"2021-12-10T11:18:36Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482646294?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T11:08:36Z","completedAt":"2021-12-10T11:09:18Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-fca86c79f97f7b8ba7983fb39355300fb0e6a6ad"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T11:08:36Z","completedAt":"2021-12-10T11:36:01Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-fca86c79f97f7b8ba7983fb39355300fb0e6a6ad"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/646282"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/646283"}],"title":"feat(terminal): do not leave Terminal mode on mouse clicks","updatedAt":"2021-12-10T11:08:35Z","url":"https://github.com/neovim/neovim/pull/16604"},{"additions":2,"assignees":[],"author":{"login":"dundargoc"},"baseRefName":"master","body":"Calling vim.lsp.buf.definition() sometimes gives a deprecation warning.\nThis will likely solve that.\n","changedFiles":1,"closed":false,"closedAt":null,"comments":[{"author":{"login":"gpanders"},"authorAssociation":"MEMBER","body":"Good catch, but just use `vim.fn.setqflist` rather than vim.diagnostic.","createdAt":"2021-12-10T13:55:01Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":1}}]},{"author":{"login":"dundargoc"},"authorAssociation":"MEMBER","body":"> Good catch, but just use `vim.fn.setqflist` rather than vim.diagnostic.\r\n\r\nSure, but I need to know why so I don't repeat the mistake again.","createdAt":"2021-12-10T13:57:15Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"No need for the indirection; the `util.locations_to_items` already formats everything so you can feed it directly into the core API function.","createdAt":"2021-12-10T13:59:12Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":1}}]},{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"Alternatively, pass an option table with a suitable `title`?\r\n\r\n","createdAt":"2021-12-10T14:05:25Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":1}}]}],"commits":[{"authoredDate":"2021-12-10T09:51:05Z","authors":[{"email":"gocdundar@gmail.com","id":"MDQ6VXNlcjMzOTUzOTM2","login":"dundargoc","name":"Dundar Göc"}],"committedDate":"2021-12-10T14:29:55Z","messageBody":"Calling vim.lsp.buf.definition() sometimes gives a deprecation warning.\nThis will likely solve that.","messageHeadline":"refactor: replace deprecated lua functions with their new versions","oid":"27cb2f6c2e08bae881763353a0ab872abf2a7916"},{"authoredDate":"2021-12-10T14:16:58Z","authors":[{"email":"33953936+dundargoc@users.noreply.github.com","id":"MDQ6VXNlcjMzOTUzOTM2","login":"dundargoc","name":"dundargoc"},{"email":"christian.clason@uni-due.de","id":"MDQ6VXNlcjIzNjEyMTQ=","login":"clason","name":"Christian Clason"}],"committedDate":"2021-12-10T14:29:55Z","messageBody":"Co-authored-by: Christian Clason <christian.clason@uni-due.de>","messageHeadline":"fixup!: replace diag with vim.fn and add a title","oid":"cfd7ff235f5cf6c544bf90b6a2a6b16fbde9725c"},{"authoredDate":"2021-12-10T14:18:02Z","authors":[{"email":"gocdundar@gmail.com","id":"MDQ6VXNlcjMzOTUzOTM2","login":"dundargoc","name":"Dundar Göc"}],"committedDate":"2021-12-10T14:29:55Z","messageBody":"…ions","messageHeadline":"fixup! refactor: replace deprecated lua functions with their new vers…","oid":"aa02eaf115e85b393c56a3399807e6abe74e9f42"}],"createdAt":"2021-12-10T09:52:47Z","deletions":2,"files":[{"path":"runtime/lua/vim/lsp/handlers.lua","additions":2,"deletions":2}],"headRefName":"refactor/replace-deprecated-functions","headRepository":{"id":"MDEwOlJlcG9zaXRvcnkzNzg2MTQ4OTk=","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjMzOTUzOTM2","login":"dundargoc"},"id":"PR_kwDOAPphoM4vq0QW","isCrossRepository":true,"isDraft":true,"labels":[{"id":"MDU6TGFiZWwxMDY5NDkxNTU=","name":"refactor","description":"changes that are not features or bugfixes","color":"C2E0C6"},{"id":"MDU6TGFiZWw1NzMyMjI2OTM=","name":"lua","description":"","color":"c5def5"},{"id":"MDU6TGFiZWw2NjI1NjYzNzA=","name":"lsp","description":"","color":"c5def5"},{"id":"LA_kwDOAPphoM7WiEKd","name":"backport release-0.6","description":"automation: backport PR to release branch when merged","color":"4CD5CF"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"DRAFT","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16603,"potentialMergeCommit":{"oid":"cc75f4ee8e8b2e72300466dc14f6ce588610a122"},"projectCards":[],"reactionGroups":[],"reviewDecision":"","reviewRequests":[],"reviews":[{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-12-10T14:10:10Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-12-10T14:11:31Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-12-10T14:33:07Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"}],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"${{ matrix.runner }} ${{ matrix.flavor }} (cc=${{ matrix.cc }})","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T14:30:12Z","completedAt":"2021-12-10T14:30:12Z","detailsUrl":"https://github.com/neovim/neovim/runs/4484660219?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T14:30:12Z","completedAt":"2021-12-10T14:30:12Z","detailsUrl":"https://github.com/neovim/neovim/runs/4484660218?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (${{ matrix.config }})","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T14:30:13Z","completedAt":"2021-12-10T14:30:13Z","detailsUrl":"https://github.com/neovim/neovim/runs/4484660448?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"IN_PROGRESS","conclusion":"","startedAt":"2021-12-10T14:30:20Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"https://github.com/neovim/neovim/runs/4484660350?check_suite_focus=true"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"PENDING","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/646424"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"PENDING","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/646425"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T14:30:10Z","completedAt":"2021-12-10T14:31:04Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-b43f5a633d951ea8706dffb0aeaf01d52583c9f9"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T14:30:10Z","completedAt":"2021-12-10T14:31:04Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-b43f5a633d951ea8706dffb0aeaf01d52583c9f9"}],"title":"refactor: replace deprecated lua functions with their new versions","updatedAt":"2021-12-10T14:33:07Z","url":"https://github.com/neovim/neovim/pull/16603"},{"additions":44,"assignees":[],"author":{"login":"zeertzjq"},"baseRefName":"master","body":"Tests fails if the changes are reverted:\r\n```\r\n[ ERROR ] test/functional/terminal/tui_spec.lua @ 768: TUI paste: streamed paste with isolated \"stop paste\" code\r\ntest/helpers.lua:73: Expected objects to be the same.\r\nPassed in:\r\n(table: 0x7f7ce69c1d78) {\r\n [1] = 1\r\n [2] = 2 }\r\nExpected:\r\n(table: 0x7f7ce69c1e10) {\r\n [1] = 1\r\n [2] = 2\r\n *[3] = 3 }\r\n\r\nstack traceback:\r\n\ttest/helpers.lua:73: in function 'eq'\r\n\ttest/functional/terminal/tui_spec.lua:803: in function <test/functional/terminal/tui_spec.lua:768>\r\n```","changedFiles":2,"closed":false,"closedAt":null,"comments":[{"author":{"login":"zeertzjq"},"authorAssociation":"MEMBER","body":"It appears too much delay between parts of a split escape sequence will cause flakiness. I'll undo the changes to split sequence tests later.","createdAt":"2021-12-10T09:40:51Z","includesCreatedEdit":false,"isMinimized":true,"minimizedReason":"resolved","reactionGroups":[]}],"commits":[{"authoredDate":"2021-12-10T10:09:55Z","authors":[{"email":"zeertzjq@outlook.com","id":"MDQ6VXNlcjM1NzY4MTcx","login":"zeertzjq","name":"zeertzjq"}],"committedDate":"2021-12-10T10:09:55Z","messageBody":"","messageHeadline":"fix(tui): end streamed paste correctly when key buffer is empty","oid":"40ed2b51cb02cf1d50c67aaf4638da9ca134d59f"}],"createdAt":"2021-12-10T03:56:48Z","deletions":0,"files":[{"path":"src/nvim/tui/input.c","additions":6,"deletions":0},{"path":"test/functional/terminal/tui_spec.lua","additions":38,"deletions":0}],"headRefName":"tui-end-streamed-paste","headRepository":{"id":"R_kgDOGHsHCw","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjM1NzY4MTcx","login":"zeertzjq"},"id":"PR_kwDOAPphoM4vp_F_","isCrossRepository":true,"isDraft":false,"labels":[{"id":"MDU6TGFiZWwxODYxOTI0MDk=","name":"clipboard","description":"","color":"c5def5"},{"id":"MDU6TGFiZWwxOTcyNTQ1NDU=","name":"tui","description":"","color":"c5def5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"BLOCKED","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16602,"potentialMergeCommit":{"oid":"ffd09e49fd9d2ad5414fccabb90ce31bd29cc926"},"projectCards":[],"reactionGroups":[],"reviewDecision":"","reviewRequests":[],"reviews":[],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"ubuntu-20.04 asan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T10:10:18Z","completedAt":"2021-12-10T10:33:51Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482065045?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T10:10:19Z","completedAt":"2021-12-10T10:10:38Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482064910?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 lint (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T10:10:18Z","completedAt":"2021-12-10T10:12:43Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482065101?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 tsan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T10:10:22Z","completedAt":"2021-12-10T10:22:06Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482065170?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-10.15 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T10:10:22Z","completedAt":"2021-12-10T10:24:00Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482065215?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-11.0 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T10:11:20Z","completedAt":"2021-12-10T10:25:55Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482065270?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MINGW_64-gcov)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T10:10:17Z","completedAt":"2021-12-10T10:33:31Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482065333?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MSVC_64)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T10:10:17Z","completedAt":"2021-12-10T10:30:01Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482065388?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T10:10:17Z","completedAt":"2021-12-10T10:20:04Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482064909?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T10:10:07Z","completedAt":"2021-12-10T10:10:50Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-55eccb7ca7d61e694af689cd78cc30f62e1cc547"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T10:10:07Z","completedAt":"2021-12-10T10:38:07Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-55eccb7ca7d61e694af689cd78cc30f62e1cc547"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/646261"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/646262"}],"title":"fix(tui): end streamed paste correctly when key buffer is empty","updatedAt":"2021-12-10T10:11:54Z","url":"https://github.com/neovim/neovim/pull/16602"},{"additions":1185,"assignees":[],"author":{"login":"gpanders"},"baseRefName":"master","body":"This is a first (rough) draft of what a `filetype.lua` might look like. Some notes:\r\n\r\n1. ~~This (currently) only supports filetypes based off of file extension~~\r\n2. The`vim.cmd` is ugly, but is only necessary until Lua autocommands are supported\r\n3. ~~I don't like the `vim.tbl_extend`, but it's necessary because the `filetype.lua` in the Neovim runtime runs *after* `filetype.lua` in the user's runtime. The user may have already created a `vim.filetype` table, and we don't want to clobber it. Maybe there is a better way to do this.~~\r\n4. There is no way to define priority with this method. The existing method (autocommands) can create an ordering by modifying the order which autocommands are defined, but we can't do that here. This implementation always defaults to using the file extension first and only falls back to the other methods if file extension doesn't work. This is best for performance, but could (maybe?) have some undesirable side effects (we'll see).\r\n\r\nRelated: #16512\r\n\r\nThis is intended as an *extension* of standard filetype detection from `filetype.vim`, **not** a replacement. For example, with this PR users can create their own filetype detection by creating `~/.config/nvim/filetype.lua` with the contents (example):\r\n\r\n```lua\r\nvim.filetype.add({\r\n extension = {\r\n foo = \"fooscript\",\r\n },\r\n})\r\n```\r\n\r\nThe value in the filetype table can also be a function:\r\n\r\n```lua\r\nvim.filetype.add({\r\n extension = {\r\n h = function(path, bufnr)\r\n local first_line = vim.api.nvim_buf_get_lines(bufnr, 0, 1, true);\r\n if first_line:match('<iostream>') then\r\n return \"cpp\"\r\n end\r\n return \"c\"\r\n end,\r\n }\r\n})\r\n```\r\n\r\nMore examples [here](https://github.com/neovim/neovim/pull/16600#issuecomment-990409210).\r\n\r\n`filetype.lua` is sourced before `filetype.vim` so any filetypes defined in `filetype.lua` will take precedence.","changedFiles":10,"closed":false,"closedAt":null,"comments":[{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"I think the convention has been so far \"vim first, then lua\" when both files were sourced from a location?","createdAt":"2021-12-09T22:09:38Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":1}}]},{"author":{"login":"gpanders"},"authorAssociation":"MEMBER","body":"> I think the convention has been so far \"vim first, then lua\" when both files were sourced from a location?\r\n\r\nThis is true, but if we want the catch-all autocommand to fire before the ones in `filetype.vim`, we need to source `filetype.lua` first.","createdAt":"2021-12-09T22:11:37Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"To be perfectly honest, I never fully understood the rationale behind this choice -- I would have picked the other way around, too.\r\n\r\nBut there's a difference between the \"core\" runtime files and the user's runtime path -- would it be possible for the core to come first while still loading user's `filetype.vim` before `filetype.lua`? (In particular, we probably _don't_ want a `filetype.vim` in the default runtime anymore?)\r\n","createdAt":"2021-12-09T22:13:36Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"gpanders"},"authorAssociation":"MEMBER","body":"> But there's a difference between the \"core\" runtime files and the user's runtime path -- would it be possible for the core to come first while still loading user's filetype.vim before filetype.lua?\r\n\r\nI don't think so, since it just looks it up using the runtimepath mechanism, which is always going to use the user's runtime before the core one.\r\n\r\n>(In particular, we probably don't want a filetype.vim in the default runtime anymore?)\r\n\r\nDown the road perhaps, but adding this as an extension mechanism (a way to define *new* filetype detection) first means we can ship it sooner and we can work out the kinks/ergonomics before going in full bore.\r\n\r\n","createdAt":"2021-12-09T22:19:37Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":1}}]},{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"That all makes sense. Maybe add a comment to the code about the rationale for the divergence?","createdAt":"2021-12-09T22:31:12Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"bfredl"},"authorAssociation":"MEMBER","body":"> I don't think so, since it just looks it up using the runtimepath mechanism, which is always going to use the user's runtime before the core one.\r\n\r\nIf this is a concern, we should replace\r\n\r\n source_runtime(FILETYPE_FILE_LUA, DIP_ALL);\r\n source_runtime(FILETYPE_FILE_VIM, DIP_ALL);\r\n\r\nwith a pattern that sources _both_ `filetype.lua` and `filetype.vim` for each rtp entry in turn (similar to how `mod.lua` and `mod/init.lua` are considered for first rtp entry, and then the next, and so forth). ","createdAt":"2021-12-09T22:33:26Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":2}}]},{"author":{"login":"gpanders"},"authorAssociation":"MEMBER","body":"That's good point @bfredl, as this stands now the current source order is\r\n\r\n$USER/filetype.lua\r\n$VIMRUNTIME/filetype.lua\r\n$USER/filetype.vim\r\n$VIMRUNTIME/filetype.vim\r\n\r\nwhen it should (probably) be\r\n\r\n$USER/filetype.lua\r\n$USER/filetype.vim\r\n$VIMRUNTIME/filetype.lua\r\n$VIMRUNTIME/filetype.vim","createdAt":"2021-12-09T22:35:09Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":1}}]},{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"The default filetype scripts have two more possible resolvers:\r\n1. full name, like `README`;\r\n2. complex path regex, like `.git/config`.\r\n\r\nDo we want to support those as well as first-class citizens, or just say \"use a function\" (possibly offering some convenience functions for standard patterns)?","createdAt":"2021-12-09T22:48:16Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"gpanders"},"authorAssociation":"MEMBER","body":"> The default filetype scripts have two more possible resolvers:\r\n> \r\n> 1. full name, like `README`;\r\n> \r\n> 2. complex path regex, like `.git/config`.\r\n> \r\n> \r\n> Do we want to support those as well as first-class citizens, or just say \"use a function\" (possibly offering some convenience functions for standard patterns)?\r\n\r\nWe already pass the full file path as the first argument of the function, so I want to say that (2) is already possible. We should support files without an extension as well. I'll think about what that API might look like.","createdAt":"2021-12-09T23:10:20Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"gpanders"},"authorAssociation":"MEMBER","body":"I added filename (and pattern matching) in the latest commit.\r\n\r\nExample:\r\n\r\n```lua\r\nvim.filetype.add({\r\n filename = {\r\n [\"foo.(%a+)\"] = function(path, bufnr, ext)\r\n -- The 'ext' argument is the captured match from the filename pattern\r\n return ext\r\n end,\r\n },\r\n})\r\n```\r\n\r\nOpening `foo.xyz` sets filetype `xyz`; opening `foo.awesome` sets filetype to `awesome`. This is a contrived example, but hopefully it demonstrates the power of the interface.\r\n\r\nMore realistic examples:\r\n\r\n```lua\r\nvim.filetype.add({\r\n filename = {\r\n [\".git/config\"] = \"gitconfig\",\r\n [\"~/.config/mutt/muttrc\"] = \"muttrc\",\r\n [\"README$\"] = function(path, bufnr)\r\n if string.find(\"#\", vim.api.nvim_buf_get_lines(bufnr, 0, 1, true)) then\r\n return \"markdown\"\r\n end\r\n\r\n -- no return means the filetype won't be set and to try the next method\r\n end,\r\n },\r\n})\r\n```","createdAt":"2021-12-09T23:46:41Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"muniter"},"authorAssociation":"MEMBER","body":"This looks great!.\r\n\r\nConsidering that one of the motivations for this is to make things more performant we should consider some more strategies that at the same time makes things not too complex.\r\n\r\nProviding the ability to use functions seems great, but a 100 function checks that are going to make one API call each to retrieve the same information first, second, last line, etc., could be avoided. If we go by the more generic route of providing a table to the function and we fill this table previously with the usual information a filetype needs.\r\n\r\nFor example providing a table with the following fields:\r\n\r\n- extension\r\n- path\r\n- path tail\r\n- path pieces (maybe)\r\n- first 4 lines (or less)\r\n- last 4 lines (or less)\r\n\r\nNow filetypes only need a simple table lookup to get the information they need. Has the added benefit of being able to add even more things later as new pattern might emerge, the table can also be lazy loaded, or just filled when starting to match filetypes that provide a function, etc.\r\n\r\nA disadvantage of this approach is the mutability of the table, but we could think of making a read-only table for this use case.\r\n\r\nJust my thoughts on taking advantage of the redesign to make it a design that scales really well.\r\n","createdAt":"2021-12-10T00:04:25Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"gpanders"},"authorAssociation":"MEMBER","body":">Providing the ability to use functions seems great, but a 100 function checks that are going to make one API call each to retrieve the same information first, second, last line, etc., could be avoided\r\n\r\nReading buffer contents is pretty rare in filetype detection, so I don't think this is an issue in practice.\r\n\r\nThe vast majority of detection happens by file detection. Another huge chunk happens based on path/filename. Only a small minority actually read the buffer or do something more complex.\r\n\r\nI just did a quick manual count of `filetype.vim` and found fewer than 40 autocommands that call `getline()` out of 736 currently defined in that file.","createdAt":"2021-12-10T01:38:32Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":1}}]},{"author":{"login":"gpanders"},"authorAssociation":"MEMBER","body":"The `gen_filetype.lua` script autogenerates all of the (simple) extension mappings for us. Extensions that call a function (e.g. `c`) are not included.\r\n\r\nI also (manually) ported some of the filename based matches. I did not do all of them: there are quite a bit. But the good thing is that we don't *need* all of them, since we still fall back to `filetype.vim` for now. So we can port those over time.\r\n\r\nI did not intend for this PR to be a replacement of `filetype.vim`, so maybe we can back the `filename` matches out of this PR. Open to hear what others think.","createdAt":"2021-12-10T03:13:43Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":1}}]},{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"I think we should not greedily extract information, but at the same time having to compute the same multiple times is also bad.\r\n\r\nOne compromise that the separate table approach allows is to do them in sequence, and compute and store information at the beginning:\r\n\r\n1. Check literal filename (only needs the filename)\r\n2. Check extension (only needs the extension)\r\n3. Check path (only needs the full path, possibly segmented)\r\n4. Check contents (needs contents; could use a cache that is grown, so each time a check asks for more lines, add them to the cache)?\r\n\r\nFor that reason, I'm not 100% happy with lumping the literal filename and the more complex regex into the same category.\r\n\r\n(And -- but this should be benchmarked -- the biggest improvement is reducing the creation of 800 autocommand to just one, followed by making the extension-based check a simple lookup rather than a regex match. So it's maybe not as critical to optimize the remaining parts at any cost?)","createdAt":"2021-12-10T07:55:11Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]}],"commits":[{"authoredDate":"2021-12-09T22:04:56Z","authors":[{"email":"greg@gpanders.com","id":"MDQ6VXNlcjg5NjUyMDI=","login":"gpanders","name":"Gregory Anders"}],"committedDate":"2021-12-10T05:32:33Z","messageBody":"","messageHeadline":"feat: filetype.lua","oid":"4b54546bf9d5d8255669e5c653c05dfa0a06c241"},{"authoredDate":"2021-12-09T22:13:46Z","authors":[{"email":"greg@gpanders.com","id":"MDQ6VXNlcjg5NjUyMDI=","login":"gpanders","name":"Gregory Anders"}],"committedDate":"2021-12-10T05:32:33Z","messageBody":"","messageHeadline":"Define empty vim.filetype table in core","oid":"079ec0a70450a6b802ddba618aa12233b952eb12"},{"authoredDate":"2021-12-09T22:24:52Z","authors":[{"email":"greg@gpanders.com","id":"MDQ6VXNlcjg5NjUyMDI=","login":"gpanders","name":"Gregory Anders"}],"committedDate":"2021-12-10T05:32:33Z","messageBody":"","messageHeadline":"Move vim.filetype to separate module under runtime","oid":"83d0285f2520a44c9f891ca4ca80846a3af9030b"},{"authoredDate":"2021-12-09T22:31:36Z","authors":[{"email":"greg@gpanders.com","id":"MDQ6VXNlcjg5NjUyMDI=","login":"gpanders","name":"Gregory Anders"}],"committedDate":"2021-12-10T05:32:33Z","messageBody":"","messageHeadline":"Respect buffer number in autocommand","oid":"a5c7985bd8c1275e55b0d3914a52d5261c1c5d33"},{"authoredDate":"2021-12-09T22:32:39Z","authors":[{"email":"greg@gpanders.com","id":"MDQ6VXNlcjg5NjUyMDI=","login":"gpanders","name":"Gregory Anders"}],"committedDate":"2021-12-10T05:32:33Z","messageBody":"","messageHeadline":"Add explanatory comment","oid":"ac3c51e9f73c63e097c5b91733a264990a112472"},{"authoredDate":"2021-12-09T23:06:47Z","authors":[{"email":"greg@gpanders.com","id":"MDQ6VXNlcjg5NjUyMDI=","login":"gpanders","name":"Gregory Anders"}],"committedDate":"2021-12-10T05:32:33Z","messageBody":"","messageHeadline":"Update very minorly","oid":"666e23710a185ae79491027390470de4c0991b6f"},{"authoredDate":"2021-12-09T23:42:53Z","authors":[{"email":"greg@gpanders.com","id":"MDQ6VXNlcjg5NjUyMDI=","login":"gpanders","name":"Gregory Anders"}],"committedDate":"2021-12-10T05:32:33Z","messageBody":"","messageHeadline":"Implement filename pattern matching","oid":"2695f90299f6b9ee71648c544d67334645e10be0"},{"authoredDate":"2021-12-10T02:00:04Z","authors":[{"email":"greg@gpanders.com","id":"MDQ6VXNlcjg5NjUyMDI=","login":"gpanders","name":"Gregory Anders"}],"committedDate":"2021-12-10T05:33:58Z","messageBody":"Include a script to do this conversion automatically","messageHeadline":"Convert extensions from filetype.vim","oid":"e51b4feeca8c647670b16887b15acaeda140726f"},{"authoredDate":"2021-12-10T02:10:59Z","authors":[{"email":"greg@gpanders.com","id":"MDQ6VXNlcjg5NjUyMDI=","login":"gpanders","name":"Gregory Anders"}],"committedDate":"2021-12-10T05:34:38Z","messageBody":"","messageHeadline":"Sort table from gen_filetype.lua","oid":"1680bc1fae833472aac1f85281fc50b03e45215f"},{"authoredDate":"2021-12-10T02:11:22Z","authors":[{"email":"greg@gpanders.com","id":"MDQ6VXNlcjg5NjUyMDI=","login":"gpanders","name":"Gregory Anders"}],"committedDate":"2021-12-10T05:34:39Z","messageBody":"","messageHeadline":"Only pass bufnr to vim.filetype.match","oid":"92a90f7526545daa46b96eaa3ede21578fa1457b"},{"authoredDate":"2021-12-10T02:17:33Z","authors":[{"email":"greg@gpanders.com","id":"MDQ6VXNlcjg5NjUyMDI=","login":"gpanders","name":"Gregory Anders"}],"committedDate":"2021-12-10T05:34:39Z","messageBody":"","messageHeadline":"Write output from gen_filetype.lua directly to file","oid":"926a9b0141bf49ee931aefeb88cf0d6fca59e037"},{"authoredDate":"2021-12-10T03:11:17Z","authors":[{"email":"greg@gpanders.com","id":"MDQ6VXNlcjg5NjUyMDI=","login":"gpanders","name":"Gregory Anders"}],"committedDate":"2021-12-10T05:34:39Z","messageBody":"","messageHeadline":"Add default filename patterns","oid":"ea36d52fdc6ba59edcdb0d7fe2fd948ac54e67c3"},{"authoredDate":"2021-12-10T03:15:27Z","authors":[{"email":"greg@gpanders.com","id":"MDQ6VXNlcjg5NjUyMDI=","login":"gpanders","name":"Gregory Anders"}],"committedDate":"2021-12-10T05:34:39Z","messageBody":"","messageHeadline":"Source all user filetype files before $VIMRUNTIME ones","oid":"bacbc73943fffdc033bd320e97b95c494cf40eda"},{"authoredDate":"2021-12-10T03:24:29Z","authors":[{"email":"greg@gpanders.com","id":"MDQ6VXNlcjg5NjUyMDI=","login":"gpanders","name":"Gregory Anders"}],"committedDate":"2021-12-10T05:34:39Z","messageBody":"There's no reason to defer loading since we are *always* going to need\nit.","messageHeadline":"Always load vim.filetype","oid":"5d195e35ddf3f66d9fd4215b2ecb7f2027f3fc4c"},{"authoredDate":"2021-12-10T03:46:37Z","authors":[{"email":"greg@gpanders.com","id":"MDQ6VXNlcjg5NjUyMDI=","login":"gpanders","name":"Gregory Anders"}],"committedDate":"2021-12-10T05:34:39Z","messageBody":"","messageHeadline":"Update documentation","oid":"3c186cc82c1b98c6de3e1999ce43c641d89ee01f"},{"authoredDate":"2021-12-10T03:51:52Z","authors":[{"email":"greg@gpanders.com","id":"MDQ6VXNlcjg5NjUyMDI=","login":"gpanders","name":"Gregory Anders"}],"committedDate":"2021-12-10T05:34:39Z","messageBody":"","messageHeadline":"Fixup some comments","oid":"6d63c7ddc851276ca12b9706a0cf771f300f3250"},{"authoredDate":"2021-12-10T04:39:57Z","authors":[{"email":"greg@gpanders.com","id":"MDQ6VXNlcjg5NjUyMDI=","login":"gpanders","name":"Gregory Anders"}],"committedDate":"2021-12-10T05:34:39Z","messageBody":"","messageHeadline":"Add filetype_spec.lua","oid":"446ffd530d1c9e1bba4b7fd05786d8ddf19e6812"}],"createdAt":"2021-12-09T22:07:26Z","deletions":18,"files":[{"path":"runtime/doc/filetype.txt","additions":53,"deletions":14},{"path":"runtime/doc/lua.txt","additions":53,"deletions":0},{"path":"runtime/filetype.lua","additions":9,"deletions":0},{"path":"runtime/lua/vim/filetype.lua","additions":885,"deletions":0},{"path":"scripts/gen_filetype.lua","additions":70,"deletions":0},{"path":"scripts/gen_vimdoc.py","additions":3,"deletions":0},{"path":"src/nvim/ex_docmd.c","additions":6,"deletions":3},{"path":"src/nvim/globals.h","additions":1,"deletions":1},{"path":"src/nvim/lua/vim.lua","additions":2,"deletions":0},{"path":"test/functional/lua/filetype_spec.lua","additions":103,"deletions":0}],"headRefName":"filetype-lua","headRepository":{"id":"MDEwOlJlcG9zaXRvcnkzNzU4OTkwNTI=","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjg5NjUyMDI=","name":"Gregory Anders","login":"gpanders"},"id":"PR_kwDOAPphoM4vpCMF","isCrossRepository":true,"isDraft":true,"labels":[],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"DRAFT","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16600,"potentialMergeCommit":{"oid":"20bb047f4cff115a1329d276a5f8f7e5f5119b89"},"projectCards":[],"reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":5}},{"content":"HOORAY","users":{"totalCount":3}},{"content":"HEART","users":{"totalCount":2}},{"content":"ROCKET","users":{"totalCount":6}}],"reviewDecision":"","reviewRequests":[],"reviews":[],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"${{ matrix.runner }} ${{ matrix.flavor }} (cc=${{ matrix.cc }})","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T05:34:52Z","completedAt":"2021-12-10T05:34:52Z","detailsUrl":"https://github.com/neovim/neovim/runs/4479905173?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T05:34:52Z","completedAt":"2021-12-10T05:34:52Z","detailsUrl":"https://github.com/neovim/neovim/runs/4479905122?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (${{ matrix.config }})","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T05:34:53Z","completedAt":"2021-12-10T05:34:53Z","detailsUrl":"https://github.com/neovim/neovim/runs/4479905219?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-10T05:34:58Z","completedAt":"2021-12-10T05:38:23Z","detailsUrl":"https://github.com/neovim/neovim/runs/4479905131?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-10T05:34:50Z","completedAt":"2021-12-10T05:42:26Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-99f8fee77d019c311543d46270fb70780e5bc14c"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"FAILURE","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/646148"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"FAILURE","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/646149"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T05:34:50Z","completedAt":"2021-12-10T05:41:02Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-99f8fee77d019c311543d46270fb70780e5bc14c"}],"title":"feat: filetype.lua","updatedAt":"2021-12-10T07:55:11Z","url":"https://github.com/neovim/neovim/pull/16600"},{"additions":12,"assignees":[],"author":{"login":"dm1try"},"baseRefName":"master","body":"there is a useful helper `au WinEnter term://* startinsert` for Terminal mode activation but it does not work when the window is entered using a mouse.\r\n\r\nafter [entering using a mouse](https://github.com/neovim/neovim/blob/master/src/nvim/mouse.c#L188-L190) the terminal still receives `left release` mouse action and the default behavior for the \"unprocessed\" action is leaving Terminal mode([1](https://github.com/neovim/neovim/blob/master/src/nvim/terminal.c#L1231-L1232), [2](https://github.com/neovim/neovim/blob/master/src/nvim/terminal.c#L1299-L1302)).\r\n\r\nso the fix is about ignoring \"left release\" in such situation. it feels a little hacky, not sure if we can somehow to \"eat\" the left release action and do not propagate it in `mouse.c` on window activation.\r\n\r\ncloses #9483\r\ncloses #8691\r\n\r\n","changedFiles":2,"closed":false,"closedAt":null,"comments":[],"commits":[{"authoredDate":"2021-12-09T16:44:09Z","authors":[{"email":"me@dmitry.it","id":"MDQ6VXNlcjQ4NjgwNw==","login":"dm1try","name":"dm1try"}],"committedDate":"2021-12-09T21:53:30Z","messageBody":"if it is not proccesed by the terminal program\nto prevent leaving Terminal mode after using\na mouse for window switching\n\ncloses #9483\ncloses #8691","messageHeadline":"fix(terminal): ignore left-release mouse action","oid":"c96f7e29dc69976c2f5efa0a59710ef8416bb982"}],"createdAt":"2021-12-09T17:11:07Z","deletions":0,"files":[{"path":"src/nvim/terminal.c","additions":6,"deletions":0},{"path":"test/functional/terminal/mouse_spec.lua","additions":6,"deletions":0}],"headRefName":"do_not_leave_terminal_mode_after_mouse_activation","headRepository":{"id":"MDEwOlJlcG9zaXRvcnkxNDY5MTExMjA=","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjQ4NjgwNw==","login":"dm1try"},"id":"PR_kwDOAPphoM4voDbJ","isCrossRepository":true,"isDraft":false,"labels":[{"id":"MDU6TGFiZWwyMTI2OTY4MjI=","name":"terminal","description":"related to Neovim's built-in `:terminal`","color":"c5def5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"BLOCKED","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16596,"potentialMergeCommit":{"oid":"139c3bd8cded535f1f99814c3d0b7e237342c8f9"},"projectCards":[],"reactionGroups":[],"reviewDecision":"","reviewRequests":[],"reviews":[],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"ubuntu-20.04 asan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T21:53:59Z","completedAt":"2021-12-09T22:15:25Z","detailsUrl":"https://github.com/neovim/neovim/runs/4476671404?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T21:53:58Z","completedAt":"2021-12-09T21:54:19Z","detailsUrl":"https://github.com/neovim/neovim/runs/4476671419?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 lint (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T21:53:59Z","completedAt":"2021-12-09T21:56:22Z","detailsUrl":"https://github.com/neovim/neovim/runs/4476671442?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 tsan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T21:54:00Z","completedAt":"2021-12-09T22:04:50Z","detailsUrl":"https://github.com/neovim/neovim/runs/4476671474?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-10.15 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T21:54:04Z","completedAt":"2021-12-09T22:11:19Z","detailsUrl":"https://github.com/neovim/neovim/runs/4476671503?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-11.0 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T21:54:07Z","completedAt":"2021-12-09T22:12:39Z","detailsUrl":"https://github.com/neovim/neovim/runs/4476671549?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MINGW_64-gcov)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T21:53:59Z","completedAt":"2021-12-09T22:18:38Z","detailsUrl":"https://github.com/neovim/neovim/runs/4476671652?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MSVC_64)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T21:53:59Z","completedAt":"2021-12-09T22:13:50Z","detailsUrl":"https://github.com/neovim/neovim/runs/4476671689?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T21:53:59Z","completedAt":"2021-12-09T22:03:53Z","detailsUrl":"https://github.com/neovim/neovim/runs/4476671593?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-09T21:53:49Z","completedAt":"2021-12-09T21:55:04Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-c33dbde2831f8479c2a35d82846a1cb044a7efb2"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T21:53:49Z","completedAt":"2021-12-09T22:22:05Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-c33dbde2831f8479c2a35d82846a1cb044a7efb2"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/645889"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/645890"}],"title":"do not leave Terminal mode after entering to it using a mouse","updatedAt":"2021-12-09T21:53:48Z","url":"https://github.com/neovim/neovim/pull/16596"},{"additions":286,"assignees":[],"author":{"login":"shadmansaleh"},"baseRefName":"master","body":"Adds `func` option in opt table for\r\n- nvim_set_keymaps\r\n- nvim_buf_set_keymaps\r\n\r\nfunc option takes a lua function, when given it's used in place of rhs and rhs string is ignored.\r\n\r\nmissing\r\n- nvim_get_keymaps\r\n- nvim_buf_get_keymaps\r\n\r\nCurrently `map lhs` displays lua keymaps rhs as `<function-luaref_no>`\r\nWhat should `maparg()` do with luaref ? Is there a way to repesent luaref in viml other then a number ?","changedFiles":11,"closed":false,"closedAt":null,"comments":[{"author":{"login":"numToStr"},"authorAssociation":"NONE","body":"> * nvim_set_keymaps\r\n> * nvim_buf_set_keymaps\r\n>\r\n> * nvim_get_keymaps\r\n> * nvim_buf_get_keymaps\r\n\r\n@shadmansaleh I suppose these should be singular i.e `nvim_set_keymap`?","createdAt":"2021-12-09T16:38:14Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"shadmansaleh"},"authorAssociation":"CONTRIBUTOR","body":"> @shadmansaleh I suppose these should be singular i.e nvim_set_keymap?\r\n\r\nThese are already existing api functions. I'm just extending their functionality .","createdAt":"2021-12-09T16:42:06Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":1}}]}],"commits":[{"authoredDate":"2021-12-08T13:00:01Z","authors":[{"email":"13149513+shadmansaleh@users.noreply.github.com","id":"MDQ6VXNlcjEzMTQ5NTEz","login":"shadmansaleh","name":"shadmansaleh"}],"committedDate":"2021-12-09T15:07:45Z","messageBody":"adds func option in opt table for\n\n- nvim_set_keymaps\n\n- nvim_buf_set_keymaps","messageHeadline":"feat: support for lua functions for keymap","oid":"ebf7984f9792e45e65c8f76307fdb5092a3547cb"},{"authoredDate":"2021-12-09T15:56:59Z","authors":[{"email":"13149513+shadmansaleh@users.noreply.github.com","id":"MDQ6VXNlcjEzMTQ5NTEz","login":"shadmansaleh","name":"shadmansaleh"}],"committedDate":"2021-12-09T15:56:59Z","messageBody":"","messageHeadline":"chore: remove unnecessary channel_id check","oid":"b6e9dec10d50b8971723f4067e52d0c7bf11a7b2"},{"authoredDate":"2021-12-09T18:12:35Z","authors":[{"email":"13149513+shadmansaleh@users.noreply.github.com","id":"MDQ6VXNlcjEzMTQ5NTEz","login":"shadmansaleh","name":"shadmansaleh"}],"committedDate":"2021-12-09T18:12:35Z","messageBody":"","messageHeadline":"chore: address code-review:1","oid":"190197669f908700c23d1f7cc9ab029f2abbb9a0"},{"authoredDate":"2021-12-10T10:50:20Z","authors":[{"email":"13149513+shadmansaleh@users.noreply.github.com","id":"MDQ6VXNlcjEzMTQ5NTEz","login":"shadmansaleh","name":"shadmansaleh"}],"committedDate":"2021-12-10T11:36:12Z","messageBody":"- adds support for mapcheck() maparg()\n- support for nvim_get_keymap nvim_buf_get_keymap (currently broken)\n+ more fixes.","messageHeadline":"feat: improve lua keymap support","oid":"6a16d1b14be22412c4e05d2743c89f7578e2598e"}],"createdAt":"2021-12-09T15:11:21Z","deletions":67,"files":[{"path":"src/nvim/api/buffer.c","additions":2,"deletions":2},{"path":"src/nvim/api/keysets.lua","additions":1,"deletions":0},{"path":"src/nvim/api/private/helpers.c","additions":33,"deletions":9},{"path":"src/nvim/api/vim.c","additions":4,"deletions":2},{"path":"src/nvim/buffer_defs.h","additions":1,"deletions":0},{"path":"src/nvim/eval.c","additions":9,"deletions":5},{"path":"src/nvim/eval/funcs.c","additions":7,"deletions":2},{"path":"src/nvim/getchar.c","additions":100,"deletions":45},{"path":"src/nvim/getchar.h","additions":2,"deletions":1},{"path":"src/nvim/lua/stdlib.c","additions":0,"deletions":1},{"path":"test/functional/api/keymap_spec.lua","additions":127,"deletions":0}],"headRefName":"feat/api/lua_keymaps","headRepository":{"id":"MDEwOlJlcG9zaXRvcnkzNDgzOTE5NDE=","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjEzMTQ5NTEz","name":"Shadman","login":"shadmansaleh"},"id":"PR_kwDOAPphoM4vnpLc","isCrossRepository":true,"isDraft":false,"labels":[{"id":"MDU6TGFiZWwxMDM4MTk2NzE=","name":"api","description":"related to Neovim API (C, Vim script, or Lua)","color":"c5def5"},{"id":"MDU6TGFiZWw1NzMyMjI2OTM=","name":"lua","description":"","color":"c5def5"},{"id":"MDU6TGFiZWwzMzA0OTM4NzE4","name":"mappings","description":"","color":"C5DEF5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"BLOCKED","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16594,"potentialMergeCommit":{"oid":"7dd245157cf81c6b34e0c6c2882d07ecfda4c1d7"},"projectCards":[],"reactionGroups":[{"content":"HOORAY","users":{"totalCount":3}}],"reviewDecision":"","reviewRequests":[],"reviews":[{"author":{"login":"bfredl"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-12-09T15:33:55Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"shadmansaleh"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-09T15:41:50Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"gpanders"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-12-09T17:05:40Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"shadmansaleh"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-09T17:27:27Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"gpanders"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-12-09T17:45:27Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"shadmansaleh"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-09T18:11:42Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"gpanders"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-12-09T18:12:50Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"shadmansaleh"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-10T03:13:30Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"shadmansaleh"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-10T11:41:45Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"}],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"ubuntu-20.04 asan (cc=clang-12)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-10T11:37:22Z","completedAt":"2021-12-10T12:01:22Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482919408?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T11:37:22Z","completedAt":"2021-12-10T11:37:49Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482919107?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 lint (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T11:37:20Z","completedAt":"2021-12-10T11:40:55Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482919453?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 tsan (cc=clang-12)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-10T11:37:22Z","completedAt":"2021-12-10T11:44:46Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482919504?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-10.15 (cc=clang)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-10T11:37:26Z","completedAt":"2021-12-10T11:46:15Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482919545?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-11.0 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T11:37:27Z","completedAt":"2021-12-10T11:55:09Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482919577?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MINGW_64-gcov)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-10T11:37:22Z","completedAt":"2021-12-10T11:59:53Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482919634?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MSVC_64)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-10T11:37:22Z","completedAt":"2021-12-10T11:56:17Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482919678?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-10T11:37:22Z","completedAt":"2021-12-10T11:43:01Z","detailsUrl":"https://github.com/neovim/neovim/runs/4482919263?check_suite_focus=true"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"FAILURE","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/646310"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"FAILURE","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/646311"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T11:37:11Z","completedAt":"2021-12-10T11:37:56Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-512ee7328da63339397f1d7d6eb5a0fa5933593d"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T11:37:11Z","completedAt":"2021-12-10T12:02:07Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-512ee7328da63339397f1d7d6eb5a0fa5933593d"}],"title":"feat: support for lua functions for keymap","updatedAt":"2021-12-10T11:41:45Z","url":"https://github.com/neovim/neovim/pull/16594"},{"additions":22,"assignees":[],"author":{"login":"erw7"},"baseRefName":"master","body":"- [x] write test.\r\n\r\nfixes #16040.","changedFiles":2,"closed":false,"closedAt":null,"comments":[],"commits":[{"authoredDate":"2021-12-09T14:48:56Z","authors":[{"email":"erw7.github@gmail.com","id":"MDQ6VXNlcjExNjgyMjg1","login":"erw7","name":"erw7"}],"committedDate":"2021-12-09T15:26:57Z","messageBody":"fixes #16040.","messageHeadline":"fix(terminal): fix stack overflow in libvterm","oid":"05016530a4600acc247f82e9f8605235786dc54d"}],"createdAt":"2021-12-09T14:52:57Z","deletions":1,"files":[{"path":"src/nvim/terminal.c","additions":11,"deletions":1},{"path":"test/functional/terminal/channel_spec.lua","additions":11,"deletions":0}],"headRefName":"fix-libvterm-stack-overflow","headRepository":{"id":"MDEwOlJlcG9zaXRvcnk4MjM3NDU0MA==","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjExNjgyMjg1","login":"erw7"},"id":"PR_kwDOAPphoM4vnk4W","isCrossRepository":true,"isDraft":false,"labels":[{"id":"MDU6TGFiZWwyMTI2OTY4MjI=","name":"terminal","description":"related to Neovim's built-in `:terminal`","color":"c5def5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"BLOCKED","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16593,"potentialMergeCommit":{"oid":"4c72eec35755980d548032da28fa9eff89299bda"},"projectCards":[],"reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":1}}],"reviewDecision":"","reviewRequests":[],"reviews":[{"author":{"login":"jvoisin"},"authorAssociation":"NONE","body":"","submittedAt":"2021-12-09T22:07:23Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"}],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"ubuntu-20.04 asan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T15:35:29Z","completedAt":"2021-12-09T15:54:12Z","detailsUrl":"https://github.com/neovim/neovim/runs/4472568327?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T15:35:30Z","completedAt":"2021-12-09T15:35:53Z","detailsUrl":"https://github.com/neovim/neovim/runs/4472567995?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 lint (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T15:35:31Z","completedAt":"2021-12-09T15:38:27Z","detailsUrl":"https://github.com/neovim/neovim/runs/4472568422?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 tsan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T15:35:30Z","completedAt":"2021-12-09T15:46:09Z","detailsUrl":"https://github.com/neovim/neovim/runs/4472568507?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-10.15 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T15:35:33Z","completedAt":"2021-12-09T15:50:14Z","detailsUrl":"https://github.com/neovim/neovim/runs/4472568596?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-11.0 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T15:35:37Z","completedAt":"2021-12-09T15:54:29Z","detailsUrl":"https://github.com/neovim/neovim/runs/4472568683?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MINGW_64-gcov)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T15:35:31Z","completedAt":"2021-12-09T16:01:13Z","detailsUrl":"https://github.com/neovim/neovim/runs/4472567991?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MSVC_64)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T15:35:30Z","completedAt":"2021-12-09T15:58:25Z","detailsUrl":"https://github.com/neovim/neovim/runs/4472568069?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T15:35:31Z","completedAt":"2021-12-09T15:46:04Z","detailsUrl":"https://github.com/neovim/neovim/runs/4472568212?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-09T15:35:18Z","completedAt":"2021-12-09T15:36:02Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-f896ec81276d33865b37b5d9d8c6e107d38ed633"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T15:35:18Z","completedAt":"2021-12-09T15:59:21Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-f896ec81276d33865b37b5d9d8c6e107d38ed633"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/645703"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/645704"}],"title":"fix(terminal): fix stack overflow in libvterm","updatedAt":"2021-12-09T22:07:23Z","url":"https://github.com/neovim/neovim/pull/16593"},{"additions":31,"assignees":[],"author":{"login":"erw7"},"baseRefName":"master","body":"This should solve the problem when you `set tgc`.\r\n\r\n- [ ] Implement the `set notgc` case\r\n\r\nfixes #16572.","changedFiles":4,"closed":false,"closedAt":null,"comments":[],"commits":[{"authoredDate":"2021-12-09T11:20:54Z","authors":[{"email":"erw7.github@gmail.com","id":"MDQ6VXNlcjExNjgyMjg1","login":"erw7","name":"erw7"}],"committedDate":"2021-12-09T11:20:54Z","messageBody":"fixes #16572.","messageHeadline":"fix(tui): change to set background color","oid":"7e04d69f31cad32502ff6807f35599a8ac855590"}],"createdAt":"2021-12-09T11:34:36Z","deletions":1,"files":[{"path":"src/nvim/macros.h","additions":1,"deletions":1},{"path":"src/nvim/tui/input.c","additions":2,"deletions":0},{"path":"src/nvim/tui/input.h","additions":2,"deletions":0},{"path":"src/nvim/tui/tui.c","additions":26,"deletions":0}],"headRefName":"fix-tui-bg","headRepository":{"id":"MDEwOlJlcG9zaXRvcnk4MjM3NDU0MA==","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjExNjgyMjg1","login":"erw7"},"id":"PR_kwDOAPphoM4vm7wK","isCrossRepository":true,"isDraft":false,"labels":[{"id":"MDU6TGFiZWwxOTcyNTQ1NDU=","name":"tui","description":"","color":"c5def5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"BLOCKED","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16592,"potentialMergeCommit":{"oid":"9b6a1ecde8c888ead2aef96ee4a34666ca255d0c"},"projectCards":[],"reactionGroups":[{"content":"HOORAY","users":{"totalCount":1}}],"reviewDecision":"","reviewRequests":[],"reviews":[],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"ubuntu-20.04 asan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:34:48Z","completedAt":"2021-12-09T11:55:54Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469865091?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:34:45Z","completedAt":"2021-12-09T11:35:05Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469865031?check_suite_focus=true"},{"__typename":"CheckRun","name":"triage","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:34:48Z","completedAt":"2021-12-09T11:34:52Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469864847?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 lint (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:34:47Z","completedAt":"2021-12-09T11:38:46Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469865146?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 tsan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:34:48Z","completedAt":"2021-12-09T11:47:41Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469865213?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-10.15 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:34:53Z","completedAt":"2021-12-09T11:50:57Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469865259?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-11.0 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:34:53Z","completedAt":"2021-12-09T11:52:27Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469865308?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MINGW_64-gcov)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:34:48Z","completedAt":"2021-12-09T11:58:24Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469865440?check_suite_focus=true"},{"__typename":"CheckRun","name":"type-scope","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:34:47Z","completedAt":"2021-12-09T11:34:53Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469864892?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MSVC_64)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:34:48Z","completedAt":"2021-12-09T11:56:26Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469865485?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:34:48Z","completedAt":"2021-12-09T11:46:32Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469865365?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-09T11:34:38Z","completedAt":"2021-12-09T11:35:17Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-2cfd2f7f45a4f9da8f8d51001fad37c0d00092dc"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:34:38Z","completedAt":"2021-12-09T11:58:54Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-2cfd2f7f45a4f9da8f8d51001fad37c0d00092dc"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/645610"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/645611"}],"title":"[WIP] fix(tui): change to set background color","updatedAt":"2021-12-09T11:34:51Z","url":"https://github.com/neovim/neovim/pull/16592"},{"additions":747,"assignees":[],"author":{"login":"shadmansaleh"},"baseRefName":"master","body":"Supersedes #13823\r\n\r\ncurrently `vim.keymap` interface is same as #13823 . Except I've added unmap functions too.\r\n\r\nThe discussion there about the interface didn't seem to come conclusion . So do let me know what changes to the interface is wanted . The interface is in lua so should be easy to turn it into anything :)\r\n\r\n### Waiting for #16594 to be resolved","changedFiles":13,"closed":false,"closedAt":null,"comments":[{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"Repeating my comments from the original PR, I have to 👎🏻 on the API. (Although I of course appreciate the PR itself!)\r\n\r\nIn my opinion, mimicking the ex command API is an anti-goal; I'd much prefer the actual Neovim API (`nvim_set_keymap`) where the mode is an argument and the rest goes into an option table. I'd say we should only have two functions: `map` and `unmap` (plus their `buf` variant)!\r\n\r\nOne thing I would love to see in a new API is the possibility to map multiple modes in a single call -- either via a composite `'cnx'` string, or a proper table `{ 'c', 'n', 'x' }`. (The latter is probably easier to reason about.)\r\n\r\nI also strongly believe that this is an opportunity to get rid of the `nnoremap` nonsense by turning this into a `remap` option that is false by default.\r\n\r\n","createdAt":"2021-12-09T11:14:02Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":6}}]},{"author":{"login":"bfredl"},"authorAssociation":"MEMBER","body":"I'd suggest splitting this into two parts in separate PRs, which are relatively independent: (1) the support for luaref:s stored in a mapping. This can be accessed with a `func` option key to `nvim_{buf_}set_keymap` or something. (2) the new high-level interface for defining mappings in init.lua.","createdAt":"2021-12-09T11:24:59Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":1}}]},{"author":{"login":"shadmansaleh"},"authorAssociation":"CONTRIBUTOR","body":"> Repeating my comments from the original PR, I have to 👎🏻 on the API. \r\n\r\nI'm no fan of this api either 😆. I've just copied the interface from older pr so we can decuss on common basis . And it's in lua so easy to turn it into anything once decision is made by core team 😉\r\n\r\n> the support for luaref:s stored in a mapping. This can be accessed with a func option key to nvim_{buf_}set_keymap or something\r\n\r\nnvim_{buf_}set_keymap is rpc api right ? Does luaref make any sence in that context . For example what can you do with luaref from python/js ? \r\n","createdAt":"2021-12-09T11:38:53Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"bfredl"},"authorAssociation":"MEMBER","body":"> nvim_{buf_}set_keymap is rpc api right ? Does luaref make any sence in that context . For example what can you do with luaref from python/js ?\r\n\r\nluaref arg will only work when called from lua, it's the same as any other API func (like nvim_buf_attach, nvim_open_term, etc).","createdAt":"2021-12-09T12:16:39Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"shadmansaleh"},"authorAssociation":"CONTRIBUTOR","body":"@bfredl like #16594 ?","createdAt":"2021-12-09T15:13:44Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]}],"commits":[{"authoredDate":"2021-12-08T13:00:01Z","authors":[{"email":"13149513+shadmansaleh@users.noreply.github.com","id":"MDQ6VXNlcjEzMTQ5NTEz","login":"shadmansaleh","name":"shadmansaleh"}],"committedDate":"2021-12-09T10:18:23Z","messageBody":"","messageHeadline":"feat(lua): support for lua functions in keymap","oid":"6dca91f57550a291080b82249946ea14c6993777"},{"authoredDate":"2021-12-09T08:09:03Z","authors":[{"email":"13149513+shadmansaleh@users.noreply.github.com","id":"MDQ6VXNlcjEzMTQ5NTEz","login":"shadmansaleh","name":"shadmansaleh"},{"email":"devries.timothyj@gmail.com","id":"MDQ6VXNlcjQ0NjY4OTk=","login":"tjdevries","name":"tjdevries"}],"committedDate":"2021-12-09T10:18:23Z","messageBody":"Co-authored-by: tjdevries <devries.timothyj@gmail.com>","messageHeadline":"feat(lua): add vim.keymap","oid":"afdde873b3b639f47c05c2be588fc53e33c884c4"},{"authoredDate":"2021-12-09T09:03:54Z","authors":[{"email":"13149513+shadmansaleh@users.noreply.github.com","id":"MDQ6VXNlcjEzMTQ5NTEz","login":"shadmansaleh","name":"shadmansaleh"}],"committedDate":"2021-12-09T10:18:23Z","messageBody":"","messageHeadline":"chore(test): add more tests","oid":"d959b8d44e54499086f391953b72822658dcec88"}],"createdAt":"2021-12-09T11:07:24Z","deletions":53,"files":[{"path":"runtime/doc/lua.txt","additions":201,"deletions":0},{"path":"runtime/lua/vim/keymap.lua","additions":281,"deletions":0},{"path":"scripts/gen_vimdoc.py","additions":3,"deletions":0},{"path":"src/nvim/api/buffer.c","additions":2,"deletions":2},{"path":"src/nvim/api/private/helpers.c","additions":15,"deletions":7},{"path":"src/nvim/api/vim.c","additions":1,"deletions":1},{"path":"src/nvim/buffer_defs.h","additions":1,"deletions":0},{"path":"src/nvim/getchar.c","additions":95,"deletions":41},{"path":"src/nvim/getchar.h","additions":2,"deletions":1},{"path":"src/nvim/lua/stdlib.c","additions":77,"deletions":0},{"path":"src/nvim/lua/vim.lua","additions":3,"deletions":0},{"path":"test/functional/lua/vim_spec.lua","additions":65,"deletions":0},{"path":"test/functional/terminal/tui_spec.lua","additions":1,"deletions":1}],"headRefName":"feat/lua_keymaps2","headRepository":{"id":"MDEwOlJlcG9zaXRvcnkzNDgzOTE5NDE=","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjEzMTQ5NTEz","name":"Shadman","login":"shadmansaleh"},"id":"PR_kwDOAPphoM4vm2ca","isCrossRepository":true,"isDraft":true,"labels":[{"id":"MDU6TGFiZWw1NzMyMjI2OTM=","name":"lua","description":"","color":"c5def5"},{"id":"MDU6TGFiZWwzMzA0OTM4NzE4","name":"mappings","description":"","color":"C5DEF5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"DRAFT","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16591,"potentialMergeCommit":{"oid":"198da1d7994de63c95002e33eeaa58fae0b10ba3"},"projectCards":[],"reactionGroups":[{"content":"HEART","users":{"totalCount":3}}],"reviewDecision":"","reviewRequests":[],"reviews":[],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"Backport Pull Request","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-09T11:20:17Z","completedAt":"2021-12-09T11:20:17Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469725310?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 asan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:07:38Z","completedAt":"2021-12-09T11:32:11Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469592280?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:07:37Z","completedAt":"2021-12-09T11:07:56Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469592107?check_suite_focus=true"},{"__typename":"CheckRun","name":"triage","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:07:34Z","completedAt":"2021-12-09T11:07:42Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469591926?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 lint (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:07:39Z","completedAt":"2021-12-09T11:11:22Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469592324?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 tsan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:07:37Z","completedAt":"2021-12-09T11:18:30Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469592372?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-10.15 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:07:42Z","completedAt":"2021-12-09T11:26:14Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469592410?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-11.0 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:07:45Z","completedAt":"2021-12-09T11:25:33Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469592466?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MINGW_64-gcov)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:07:37Z","completedAt":"2021-12-09T11:35:18Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469592114?check_suite_focus=true"},{"__typename":"CheckRun","name":"type-scope","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:07:37Z","completedAt":"2021-12-09T11:07:46Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469592004?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MSVC_64)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:07:38Z","completedAt":"2021-12-09T11:28:40Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469592166?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:07:37Z","completedAt":"2021-12-09T11:17:53Z","detailsUrl":"https://github.com/neovim/neovim/runs/4469592237?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:07:26Z","completedAt":"2021-12-09T11:36:54Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-d76b7de1e46218a9af1970005fa3f19827c755b2"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T11:07:26Z","completedAt":"2021-12-09T11:16:27Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-d76b7de1e46218a9af1970005fa3f19827c755b2"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/645600"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/645601"}],"title":"feat(lua): add support for lua keymaps","updatedAt":"2021-12-10T11:40:12Z","url":"https://github.com/neovim/neovim/pull/16591"},{"additions":243,"assignees":[],"author":{"login":"zeertzjq"},"baseRefName":"master","body":"Fix #13431 \r\n\r\nSupersedes #12465\r\n\r\n- [x] Correct streamed pasting at both middle and end of line in Normal and Visual mode\r\n- [x] Add tests for the first one\r\n- [x] Deal with multi-line Visual selection case\r\n- [x] Make final cursor placement match Vim's\r\n- [x] Fix Replace mode streamed pasting\r\n- [ ] Fix Replace mode multibyte characters\r\n- [ ] Support Virtual Replace mode\r\n- [ ] Deal with some other modes\r\n\r\nConflicts with #16499 and #16600","changedFiles":4,"closed":false,"closedAt":null,"comments":[{"author":{"login":"zeertzjq"},"authorAssociation":"MEMBER","body":"I feel using `nvim_put()` is really hacky in Normal mode because of its inconsistent cursor placement, although it works well in Insert and Terminal mode. Will using `nvim_buf_set_text()` and `nvim_win_set_cursor()` instead cause problems?","createdAt":"2021-12-10T02:55:02Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[]}],"commits":[{"authoredDate":"2021-12-09T23:11:07Z","authors":[{"email":"zeertzjq@outlook.com","id":"MDQ6VXNlcjM1NzY4MTcx","login":"zeertzjq","name":"zeertzjq"}],"committedDate":"2021-12-10T02:16:01Z","messageBody":"","messageHeadline":"fix(paste): correctly paste at eol","oid":"4a41b2271c9ddeaf0e0cbe804aeac09a5518727b"},{"authoredDate":"2021-12-10T00:26:07Z","authors":[{"email":"zeertzjq@outlook.com","id":"MDQ6VXNlcjM1NzY4MTcx","login":"zeertzjq","name":"zeertzjq"}],"committedDate":"2021-12-10T02:16:01Z","messageBody":"","messageHeadline":"fix(paste): match Vim's cursor placement in Normal mode","oid":"d22d2078f06244c1ec8233ba8628ae4fb0bacc58"},{"authoredDate":"2021-12-10T00:43:30Z","authors":[{"email":"zeertzjq@outlook.com","id":"MDQ6VXNlcjM1NzY4MTcx","login":"zeertzjq","name":"zeertzjq"}],"committedDate":"2021-12-10T02:16:01Z","messageBody":"","messageHeadline":"fix(tui): end streamed paste correctly when key buffer is empty","oid":"1b8dbe74e651d3fb5a7f70d7be4ce4c5c21c89bc"},{"authoredDate":"2021-12-10T02:43:16Z","authors":[{"email":"zeertzjq@outlook.com","id":"MDQ6VXNlcjM1NzY4MTcx","login":"zeertzjq","name":"zeertzjq"}],"committedDate":"2021-12-10T02:43:16Z","messageBody":"","messageHeadline":"fix(paste): correct Replace mode streamed pasting","oid":"86a10fdb66357fd5d8510b311b6c149552141acc"}],"createdAt":"2021-12-08T23:19:25Z","deletions":39,"files":[{"path":"src/nvim/lua/vim.lua","additions":45,"deletions":19},{"path":"src/nvim/tui/input.c","additions":6,"deletions":0},{"path":"test/functional/api/vim_spec.lua","additions":182,"deletions":11},{"path":"test/functional/terminal/tui_spec.lua","additions":10,"deletions":9}],"headRefName":"lua-paste-eol","headRepository":{"id":"R_kgDOGHsHCw","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjM1NzY4MTcx","login":"zeertzjq"},"id":"PR_kwDOAPphoM4vlITD","isCrossRepository":true,"isDraft":true,"labels":[{"id":"MDU6TGFiZWwxODYxOTI0MDk=","name":"clipboard","description":"","color":"c5def5"},{"id":"MDU6TGFiZWw1NzMyMjI2OTM=","name":"lua","description":"","color":"c5def5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"DRAFT","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16585,"potentialMergeCommit":{"oid":"0472e8e9067b16079a2a7c10ec3dd59d331ba761"},"projectCards":[],"reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":1}}],"reviewDecision":"","reviewRequests":[],"reviews":[],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"${{ matrix.runner }} ${{ matrix.flavor }} (cc=${{ matrix.cc }})","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T02:44:54Z","completedAt":"2021-12-10T02:44:54Z","detailsUrl":"https://github.com/neovim/neovim/runs/4478936365?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T02:44:53Z","completedAt":"2021-12-10T02:44:53Z","detailsUrl":"https://github.com/neovim/neovim/runs/4478936292?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (${{ matrix.config }})","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T02:44:53Z","completedAt":"2021-12-10T02:44:53Z","detailsUrl":"https://github.com/neovim/neovim/runs/4478936325?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T02:44:59Z","completedAt":"2021-12-10T02:55:48Z","detailsUrl":"https://github.com/neovim/neovim/runs/4478936297?check_suite_focus=true"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"FAILURE","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/646065"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T02:44:51Z","completedAt":"2021-12-10T02:45:44Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-0afbd4a8c3b67ed4bfbe4518dd5ba9b4c305f47d"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T02:44:51Z","completedAt":"2021-12-10T03:14:07Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-0afbd4a8c3b67ed4bfbe4518dd5ba9b4c305f47d"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/646066"}],"title":"vim.paste() fixes","updatedAt":"2021-12-10T03:55:22Z","url":"https://github.com/neovim/neovim/pull/16585"},{"additions":1,"assignees":[],"author":{"login":"alefpereira"},"baseRefName":"master","body":"When checkhealth detects an ambiguous virtualenv, usually when running\r\nneovim with pyenv or virtualenvwrapper virtualenvs it show a link on its\r\nhints redirecting to an answer on stackexchange related to that problem.\r\nAlthough the marked answer works solving `!python`, it does not entirely\r\nfix the venv problem, as checkhealth still detects the ambiguity and tools\r\nlike pyright language server will still run with the wrong python.\r\n\r\nBecause of that I posted a new answer (https://vi.stackexchange.com/a/34996),\r\nadapted from the original, to fix not only the `!python` problem for vim and\r\nneovim, but also fixing neovim venv, lsp problems. The solution is well\r\ndetailed and I included a bash, zsh and also fish versions.","changedFiles":1,"closed":false,"closedAt":null,"comments":[],"commits":[{"authoredDate":"2021-12-08T21:43:23Z","authors":[{"email":"ealefpereira@gmail.com","id":"MDQ6VXNlcjYzNzk3NTI=","login":"alefpereira","name":"Alef Pereira"}],"committedDate":"2021-12-08T21:43:23Z","messageBody":"When checkhealth detects an ambiguous virtualenv, usually when running\nneovim with pyenv or virtualenvwrapper virtualenvs it show a link on its\nhints redirecting to an answer on stackexchange related to that problem.\nAlthough the marked answer works solving `!python`, it does not entirely\nfix the venv problem, as checkhealth still detects the ambiguity and tools\nlike pyright language server will still run with the wrong python.\n\nBecause of that I posted a new answer (https://vi.stackexchange.com/a/34996),\nadapted from the original, to fix not only the `!python` problem for vim and\nneovim, but also fixing neovim venv, lsp problems. The solution is well\ndetailed and I included a bash, zsh and also fish versions.","messageHeadline":"Change checkhealth help link for ambiguous venv","oid":"2fda31716cd7353c9dc986b4f181ce3fa35bd042"}],"createdAt":"2021-12-08T22:07:24Z","deletions":1,"files":[{"path":"runtime/autoload/health/provider.vim","additions":1,"deletions":1}],"headRefName":"change-ambiguous-python-venv-help-link","headRepository":{"id":"R_kgDOGgME0w","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjYzNzk3NTI=","name":"Alef Pereira","login":"alefpereira"},"id":"PR_kwDOAPphoM4vk_KV","isCrossRepository":true,"isDraft":false,"labels":[{"id":"MDU6TGFiZWwyOTczNzk4ODMz","name":"typo","description":"automation: collect in one PR and then merge automatically on a schedule","color":"4CD5CF"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"BLOCKED","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16584,"potentialMergeCommit":{"oid":"3e55c26bba9041e6272c433b42c265ccd59057ea"},"projectCards":[],"reactionGroups":[],"reviewDecision":"","reviewRequests":[],"reviews":[],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"Backport Pull Request","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-08T23:17:15Z","completedAt":"2021-12-08T23:17:15Z","detailsUrl":"https://github.com/neovim/neovim/runs/4464179296?check_suite_focus=true"},{"__typename":"CheckRun","name":"triage","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-08T22:07:37Z","completedAt":"2021-12-08T22:07:40Z","detailsUrl":"https://github.com/neovim/neovim/runs/4463556428?check_suite_focus=true"},{"__typename":"CheckRun","name":"type-scope","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-08T22:07:36Z","completedAt":"2021-12-08T22:07:40Z","detailsUrl":"https://github.com/neovim/neovim/runs/4463556367?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-08T22:07:26Z","completedAt":"2021-12-08T22:08:03Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-3b475c0b28d3dc836480958beaa0a05bb317d70c"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-08T22:07:26Z","completedAt":"2021-12-08T22:08:03Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-3b475c0b28d3dc836480958beaa0a05bb317d70c"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/645181"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/645182"}],"title":"Change checkhealth help link for ambiguous venv","updatedAt":"2021-12-08T23:17:12Z","url":"https://github.com/neovim/neovim/pull/16584"},{"additions":471,"assignees":[],"author":{"login":"erw7"},"baseRefName":"master","body":"I just tried to implement it out of curiosity. I don't have a keyboard with keys such as media play-keys, and I don't need command key mapping, so I don't plan to complete this. If you need them and are interested, please try to complete this. I think the remaining work is as follows.\r\n\r\n- [ ] add all keys.\r\n- [ ] write document.\r\n- [ ] fix some broken keys (`ctrl+2` etc).\r\n\r\nRef. #14400.","changedFiles":17,"closed":false,"closedAt":null,"comments":[],"commits":[{"authoredDate":"2021-11-23T17:05:35Z","authors":[{"email":"erw7.github@gmail.com","id":"MDQ6VXNlcjExNjgyMjg1","login":"erw7","name":"erw7"}],"committedDate":"2021-11-24T16:59:02Z","messageBody":"","messageHeadline":"feat(tui): add support for kitty keyboard protocol","oid":"8be03229c01bd85a93a071ed379999cda53dd96c"},{"authoredDate":"2021-11-25T12:15:16Z","authors":[{"email":"erw7.github@gmail.com","id":"MDQ6VXNlcjExNjgyMjg1","login":"erw7","name":"erw7"}],"committedDate":"2021-11-26T11:30:13Z","messageBody":"It's a bit tricky, but since there are not enough bits for the key\nmodifiers, the lower three bits of KS_MODIFIER(0b1110 0000) are used\nfor the key modifiers. Also, add 1 to the key modifiers so that it is\nnot zero.","messageHeadline":"feat(keymap,tui): add key modifiers","oid":"f16a271ea63428245e44d1da2d0baed25cbddee3"},{"authoredDate":"2021-11-26T17:10:53Z","authors":[{"email":"erw7.github@gmail.com","id":"MDQ6VXNlcjExNjgyMjg1","login":"erw7","name":"erw7"}],"committedDate":"2021-11-26T17:13:37Z","messageBody":"How to define a key.\n\n1. Look for the termcap name in the terminfo manual. If there is, define\n K_XXX by giving the termcap name as the argument of TERMCAP2KEY.\n2. If there is none, create KE_XXX in enum key_extra. Then, define K_XXX\n by giving KS_EXTRA and KE_XXX as arguments of TERMCAP2KEY.\n3. Create an entry for the new key in key_names_table.","messageHeadline":"feat(keymap,tui): add some key definition","oid":"a846bc0a8b03ac5449d50175c85b438913deb362"},{"authoredDate":"2021-12-08T10:01:14Z","authors":[{"email":"erw7.github@gmail.com","id":"MDQ6VXNlcjExNjgyMjg1","login":"erw7","name":"erw7"}],"committedDate":"2021-12-08T10:23:47Z","messageBody":"","messageHeadline":"feat(option): add innermapping option","oid":"525e3c225c822d81bc90f96b8df62bd64d6c3a39"},{"authoredDate":"2021-12-08T06:57:59Z","authors":[{"email":"erw7.github@gmail.com","id":"MDQ6VXNlcjExNjgyMjg1","login":"erw7","name":"erw7"}],"committedDate":"2021-12-08T10:43:46Z","messageBody":"If the kitty keyboard protocol is enabled, set inmp to false, since\nAlt/Meta+c cannot be ESC+c.","messageHeadline":"feat(tui): change to disable inmp by status of kitty","oid":"080befc2604743085d0037227a156c4b3261d006"}],"createdAt":"2021-12-08T11:07:43Z","deletions":61,"files":[{"path":"runtime/doc/eval.txt","additions":3,"deletions":0},{"path":"src/nvim/api/vim.c","additions":1,"deletions":1},{"path":"src/nvim/edit.c","additions":3,"deletions":2},{"path":"src/nvim/eval/funcs.c","additions":2,"deletions":2},{"path":"src/nvim/getchar.c","additions":11,"deletions":11},{"path":"src/nvim/keymap.c","additions":9,"deletions":2},{"path":"src/nvim/keymap.h","additions":23,"deletions":14},{"path":"src/nvim/map.c","additions":5,"deletions":0},{"path":"src/nvim/map.h","additions":4,"deletions":0},{"path":"src/nvim/message.c","additions":2,"deletions":2},{"path":"src/nvim/misc1.c","additions":3,"deletions":3},{"path":"src/nvim/option_defs.h","additions":1,"deletions":0},{"path":"src/nvim/options.lua","additions":7,"deletions":0},{"path":"src/nvim/os/input.c","additions":5,"deletions":5},{"path":"src/nvim/tui/input.c","additions":128,"deletions":19},{"path":"src/nvim/tui/input.h","additions":241,"deletions":0},{"path":"src/nvim/tui/tui.c","additions":23,"deletions":0}],"headRefName":"feat-kitty-keyboard-protocol","headRepository":{"id":"MDEwOlJlcG9zaXRvcnk4MjM3NDU0MA==","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjExNjgyMjg1","login":"erw7"},"id":"PR_kwDOAPphoM4vjFW0","isCrossRepository":true,"isDraft":true,"labels":[{"id":"MDU6TGFiZWwxOTcyNTQ1NDU=","name":"tui","description":"","color":"c5def5"},{"id":"MDU6TGFiZWwzOTY2MjYzNDk=","name":"input","description":"","color":"c5def5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"DRAFT","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16570,"potentialMergeCommit":{"oid":"332846170dd12c9d1f481836566a728b94e7abb0"},"projectCards":[],"reactionGroups":[{"content":"HEART","users":{"totalCount":4}}],"reviewDecision":"","reviewRequests":[],"reviews":[],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"Backport Pull Request","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-08T11:14:53Z","completedAt":"2021-12-08T11:14:53Z","detailsUrl":"https://github.com/neovim/neovim/runs/4456336494?check_suite_focus=true"},{"__typename":"CheckRun","name":"${{ matrix.runner }} ${{ matrix.flavor }} (cc=${{ matrix.cc }})","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-08T11:07:48Z","completedAt":"2021-12-08T11:07:48Z","detailsUrl":"https://github.com/neovim/neovim/runs/4456258162?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-08T11:07:47Z","completedAt":"2021-12-08T11:07:47Z","detailsUrl":"https://github.com/neovim/neovim/runs/4456257968?check_suite_focus=true"},{"__typename":"CheckRun","name":"triage","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-08T11:07:55Z","completedAt":"2021-12-08T11:07:59Z","detailsUrl":"https://github.com/neovim/neovim/runs/4456257814?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (${{ matrix.config }})","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-08T11:07:48Z","completedAt":"2021-12-08T11:07:48Z","detailsUrl":"https://github.com/neovim/neovim/runs/4456258041?check_suite_focus=true"},{"__typename":"CheckRun","name":"type-scope","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-08T11:07:54Z","completedAt":"2021-12-08T11:07:58Z","detailsUrl":"https://github.com/neovim/neovim/runs/4456257703?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-08T11:07:56Z","completedAt":"2021-12-08T11:10:27Z","detailsUrl":"https://github.com/neovim/neovim/runs/4456257975?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-08T11:07:44Z","completedAt":"2021-12-08T11:31:45Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-dc1056fb5c6c1b4a3f76ddbf46cb0b323db74aad"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"FAILURE","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/644798"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"FAILURE","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/644799"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-08T11:07:44Z","completedAt":"2021-12-08T11:08:24Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-dc1056fb5c6c1b4a3f76ddbf46cb0b323db74aad"}],"title":"feat kitty keyboard protocol","updatedAt":"2021-12-08T11:14:51Z","url":"https://github.com/neovim/neovim/pull/16570"},{"additions":7,"assignees":[],"author":{"login":"JoeyGrajciar"},"baseRefName":"master","body":"when using cland.exe as LSP for VC++ projects with compile_commands.json\r\ngenerated via MSBuild from inside WSL2 go to definition was failing when\r\ntrying to find requested symbol in file using windows path\r\n\r\nIssue:\r\n![wsl_gotodefintion_issue](https://user-images.githubusercontent.com/5606370/145079415-985e7447-a97e-44ae-bf4d-7d8c1374c76d.gif)\r\n\r\nFixed:\r\n![wsl_gotodefintion_fixed](https://user-images.githubusercontent.com/5606370/145079492-a3ddc9a0-fa8d-4655-8dc1-d2240d160c4b.gif)\r\n\r\n\r\n","changedFiles":1,"closed":false,"closedAt":null,"comments":[{"author":{"login":"mjlbach"},"authorAssociation":"MEMBER","body":"I don't like adding WSL specific workarounds in core, it feels extremely hacky.","createdAt":"2021-12-07T18:09:19Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":1}}]},{"author":{"login":"JoeyGrajciar"},"authorAssociation":"NONE","body":"Do you suggest using custom handler for definition command sending corrected uri to original implementation?","createdAt":"2021-12-07T18:25:15Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]}],"commits":[{"authoredDate":"2021-12-07T17:22:59Z","authors":[{"email":"jozef.grajciar@gmail.com","id":"MDQ6VXNlcjU2MDYzNzA=","login":"JoeyGrajciar","name":"Joey Grajciar"}],"committedDate":"2021-12-07T17:22:59Z","messageBody":"when using cland.exe as LSP for VC++ projects with compile_commands.json\ngenerated via MSBuild from inside WSL2 go to definition was failing when\ntrying to find requested symbol in file using windows path","messageHeadline":"runtime: fix uri_to_fname on WSL","oid":"9cded2ba45c5b7afef657676a84f5f6d01b06567"}],"createdAt":"2021-12-07T17:40:24Z","deletions":1,"files":[{"path":"runtime/lua/vim/uri.lua","additions":7,"deletions":1}],"headRefName":"fix_lsp_uri_in_wsl","headRepository":{"id":"R_kgDOGfwSCA","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjU2MDYzNzA=","name":"Jozef Grajciar","login":"JoeyGrajciar"},"id":"PR_kwDOAPphoM4vg33q","isCrossRepository":true,"isDraft":false,"labels":[{"id":"MDU6TGFiZWwxMDk0NjEyMTk=","name":"platform:windows","description":"","color":"d4c5f9"},{"id":"MDU6TGFiZWwxMjAyNTEzNzA=","name":"runtime","description":"funtime","color":"c5def5"},{"id":"MDU6TGFiZWw1NzMyMjI2OTM=","name":"lua","description":"","color":"c5def5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"BLOCKED","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16560,"potentialMergeCommit":{"oid":"f192b683ef5f9472c14b0d68427c9fec022910b7"},"projectCards":[],"reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":3}},{"content":"HEART","users":{"totalCount":1}}],"reviewDecision":"","reviewRequests":[],"reviews":[],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"Backport Pull Request","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-07T21:37:54Z","completedAt":"2021-12-07T21:37:54Z","detailsUrl":"https://github.com/neovim/neovim/runs/4449680577?check_suite_focus=true"},{"__typename":"CheckRun","name":"Backport Pull Request","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-07T21:38:18Z","completedAt":"2021-12-07T21:38:18Z","detailsUrl":"https://github.com/neovim/neovim/runs/4449684110?check_suite_focus=true"},{"__typename":"CheckRun","name":"triage","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-07T17:40:36Z","completedAt":"2021-12-07T17:40:39Z","detailsUrl":"https://github.com/neovim/neovim/runs/4447478738?check_suite_focus=true"},{"__typename":"CheckRun","name":"type-scope","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-07T17:40:36Z","completedAt":"2021-12-07T17:40:41Z","detailsUrl":"https://github.com/neovim/neovim/runs/4447478816?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-07T17:40:26Z","completedAt":"2021-12-07T17:41:20Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-09dd9eda48332224cff04d135d0fce8e623d1c23"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-07T17:40:26Z","completedAt":"2021-12-07T17:41:20Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-09dd9eda48332224cff04d135d0fce8e623d1c23"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/644165"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/644166"}],"title":"runtime: fix uri_to_fname on WSL","updatedAt":"2021-12-07T21:38:15Z","url":"https://github.com/neovim/neovim/pull/16560"},{"additions":46,"assignees":[],"author":{"login":"ii14"},"baseRefName":"master","body":"When buffer is visible in two splits simultaneously, BufHidden event is\r\nnot triggered, causing the floating window to remain on screen after\r\nswitching to another buffer.\r\n\r\nRemove BufHidden event from close_events defaults, and close the window\r\nif we changed the buffer to something other than the buffer that spawned\r\nthe floating window or the floating window buffer itself.","changedFiles":2,"closed":false,"closedAt":null,"comments":[{"author":{"login":"ii14"},"authorAssociation":"CONTRIBUTOR","body":"This is kinda problematic, mainly because events are configurable by user and this requires special handling. Solving this might require some changes to the API. Or is vim.lsp.util considered private and I shouldn't be bothered by this too much?","createdAt":"2021-12-07T17:54:19Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"ii14"},"authorAssociation":"CONTRIBUTOR","body":"I managed to do it without changing `vim.lsp.util.open_floating_preview` and it works, but because of the special handling that is necessary, I'm replacing `BufLeave` event with `BufEnter`, and I'm not sure if this is the best way to go about it. I think the behavior of closing the floating window on leaving the buffer could be a separate option, on top of close_events.\r\n\r\nAlso autocmds were leaking, so I fixed it with augroups.","createdAt":"2021-12-07T19:41:43Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"gpanders"},"authorAssociation":"MEMBER","body":"@ii14 and I discussed on Matrix making the behavior of \"close the preview window when the buffer that opened it closes\" the default and non-configurable. This seems like a sane default to me (and we can always put it behind an option one day if necessary), but if anyone feels differently drop a comment.","createdAt":"2021-12-07T21:07:28Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]}],"commits":[{"authoredDate":"2021-12-07T14:40:10Z","authors":[{"email":"ii14@users.noreply.github.com","id":"MDQ6VXNlcjU5MjQzMjAx","login":"ii14","name":"ii14"}],"committedDate":"2021-12-07T14:40:10Z","messageBody":"When buffer is visible in two splits simultaneously, BufHidden event is\nnot triggered, causing the floating window to remain on screen after\nswitching to another buffer. Replace BufHidden event with BufLeave.","messageHeadline":"fix(ui): close floating window on BufLeave event","oid":"7d38f617bbe9dd83fb4851135e8c4bf081f21278"},{"authoredDate":"2021-12-07T19:21:11Z","authors":[{"email":"ii14@users.noreply.github.com","id":"MDQ6VXNlcjU5MjQzMjAx","login":"ii14","name":"ii14"}],"committedDate":"2021-12-07T19:21:11Z","messageBody":"","messageHeadline":"Fix entering the window, group autocmds","oid":"9544e7a8eedca5a9f78a446faef89c135c498d9e"},{"authoredDate":"2021-12-07T20:52:25Z","authors":[{"email":"ii14@users.noreply.github.com","id":"MDQ6VXNlcjU5MjQzMjAx","login":"ii14","name":"ii14"}],"committedDate":"2021-12-07T20:52:25Z","messageBody":"","messageHeadline":"Close the window when leaving the buffer unconditionally","oid":"2b4300219bf8d00f367eec8e56c303cf96dad819"},{"authoredDate":"2021-12-07T20:59:50Z","authors":[{"email":"ii14@users.noreply.github.com","id":"MDQ6VXNlcjU5MjQzMjAx","login":"ii14","name":"ii14"}],"committedDate":"2021-12-07T20:59:50Z","messageBody":"","messageHeadline":"Remove vim.lsp.util.close_preview_autocmd() docs","oid":"b4603acdb26f9d6b1581d470e903eead961ec6b3"}],"createdAt":"2021-12-07T14:46:23Z","deletions":18,"files":[{"path":"runtime/doc/lsp.txt","additions":0,"deletions":12},{"path":"runtime/lua/vim/lsp/util.lua","additions":46,"deletions":6}],"headRefName":"floating_window_bufleave","headRepository":{"id":"MDEwOlJlcG9zaXRvcnkzOTg5Mjg4Njc=","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjU5MjQzMjAx","login":"ii14"},"id":"PR_kwDOAPphoM4vgUZ5","isCrossRepository":true,"isDraft":false,"labels":[{"id":"MDU6TGFiZWwxMTMwMjY5Nzk=","name":"ui","description":"","color":"c5def5"},{"id":"MDU6TGFiZWw1NzMyMjI2OTM=","name":"lua","description":"","color":"c5def5"},{"id":"MDU6TGFiZWw2NjI1NjYzNzA=","name":"lsp","description":"","color":"c5def5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"BLOCKED","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16557,"potentialMergeCommit":{"oid":"611aded1f7506beffb3cbb271461630cb00467e8"},"projectCards":[],"reactionGroups":[],"reviewDecision":"","reviewRequests":[{"__typename":"User","login":"mfussenegger"}],"reviews":[{"author":{"login":"gpanders"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-12-07T14:48:23Z","includesCreatedEdit":false,"reactionGroups":[],"state":"DISMISSED"},{"author":{"login":"mfussenegger"},"authorAssociation":"CONTRIBUTOR","body":"I think this breaks entering the window. E.g. try `vim.lsp.buf.hover()` followed by `CTRL-W w`\r\n\r\n","submittedAt":"2021-12-07T17:19:13Z","includesCreatedEdit":false,"reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":3}}],"state":"COMMENTED"},{"author":{"login":"gpanders"},"authorAssociation":"MEMBER","body":"Can you add some comments explaining the motivation and the (high-level) implementation? I imagine future readers not named ii14 will wonder why this exists the way it does.","submittedAt":"2021-12-07T19:57:08Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"}],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-07T21:01:31Z","completedAt":"2021-12-07T21:01:51Z","detailsUrl":"https://github.com/neovim/neovim/runs/4449350574?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 asan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-07T21:00:59Z","completedAt":"2021-12-07T21:19:02Z","detailsUrl":"https://github.com/neovim/neovim/runs/4449350672?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 lint (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-07T21:01:01Z","completedAt":"2021-12-07T21:03:33Z","detailsUrl":"https://github.com/neovim/neovim/runs/4449350727?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 tsan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-07T21:01:00Z","completedAt":"2021-12-07T21:10:33Z","detailsUrl":"https://github.com/neovim/neovim/runs/4449350780?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-10.15 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-07T21:01:06Z","completedAt":"2021-12-07T21:22:08Z","detailsUrl":"https://github.com/neovim/neovim/runs/4449350872?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-11.0 (cc=clang)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-07T21:01:07Z","completedAt":"2021-12-07T21:24:35Z","detailsUrl":"https://github.com/neovim/neovim/runs/4449350996?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MINGW_64-gcov)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-07T21:01:00Z","completedAt":"2021-12-07T21:20:15Z","detailsUrl":"https://github.com/neovim/neovim/runs/4449351108?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MSVC_64)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-07T21:01:01Z","completedAt":"2021-12-07T21:21:52Z","detailsUrl":"https://github.com/neovim/neovim/runs/4449351173?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-07T21:00:59Z","completedAt":"2021-12-07T21:11:19Z","detailsUrl":"https://github.com/neovim/neovim/runs/4449350572?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-07T21:00:48Z","completedAt":"2021-12-07T21:01:28Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-ac81d6bcdf531dfad8b1ad228ac0f5e51af926f0"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-07T21:00:48Z","completedAt":"2021-12-07T21:01:28Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-ac81d6bcdf531dfad8b1ad228ac0f5e51af926f0"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/644264"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/644265"}],"title":"fix(ui): close floating window on BufLeave event","updatedAt":"2021-12-08T16:57:25Z","url":"https://github.com/neovim/neovim/pull/16557"},{"additions":162,"assignees":[],"author":{"login":"seandewar"},"baseRefName":"master","body":"For now I've settled on a partial port of v8.2.0878, as we don't have `CHECK_LIST_MATERIALIZE` yet. Unsure if it's something we'll want to port.\r\n\r\nThe lazy materialization is an optimization for the list returned by `range()` in places that only need range info, and don't need an entire list of all numbers in the range to be allocated (e.g: `:for`).","changedFiles":4,"closed":false,"closedAt":null,"comments":[],"commits":[{"authoredDate":"2021-12-06T20:50:29Z","authors":[{"email":"seandewar@users.noreply.github.com","id":"MDQ6VXNlcjYyNTYyMjg=","login":"seandewar","name":"Sean Dewar"}],"committedDate":"2021-12-07T00:00:55Z","messageBody":"Problem: No reduce() function.\nSolution: Add a reduce() function. (closes vim/vim#5481)\nhttps://github.com/vim/vim/commit/85629985b71035608a37ba3bde86968481490d46\n\nNeeds CHECK_LIST_MATERIALIZE from v8.2.0751 (and range_list_materialize from\n8.2.0149).\n\nMove e_reduceempty to funcs.c, as it's only used there. Make it static.\nUse tv_blob_len, tv_list_len == 0 for empty checks.\nReplace vim_memset(&funcexe, 0, ...) with FUNCEXE_INIT.\nLeave li initially undefined (tv_list_first returns NULL if list is NULL).\n\nThis patch has a memory leak fixed by v8.2.0882.","messageHeadline":"feat(eval): partially port v8.2.0878","oid":"7c385f48b6162e14333fe04657c8fce958ab1faf"},{"authoredDate":"2021-12-06T22:34:02Z","authors":[{"email":"seandewar@users.noreply.github.com","id":"MDQ6VXNlcjYyNTYyMjg=","login":"seandewar","name":"Sean Dewar"}],"committedDate":"2021-12-07T00:08:05Z","messageBody":"Problem: Leaking memory when using reduce().\nSolution: Free the intermediate value.\nhttps://github.com/vim/vim/commit/48b1c21809553d3463b5ed6c2b3bc6d335663bb6","messageHeadline":"vim-patch:8.2.0882: leaking memory when using reduce()","oid":"6af20114bd6f556abf32620f410c63c2306547e5"},{"authoredDate":"2021-12-06T22:43:59Z","authors":[{"email":"seandewar@users.noreply.github.com","id":"MDQ6VXNlcjYyNTYyMjg=","login":"seandewar","name":"Sean Dewar"}],"committedDate":"2021-12-07T00:08:05Z","messageBody":"…n it\n\nProblem: Crash when changing a list while using reduce() on it.\nSolution: Lock the list. (closes vim/vim#6330)\nhttps://github.com/vim/vim/commit/ca275a05d8b79f6a9101604fdede2373d0dea44e","messageHeadline":"vim-patch:8.2.1051: crash when changing a list while using reduce() o…","oid":"1d37e11e4d3cc3413f6a134bd951fe218e4ab30f"},{"authoredDate":"2021-12-06T22:51:08Z","authors":[{"email":"seandewar@users.noreply.github.com","id":"MDQ6VXNlcjYyNTYyMjg=","login":"seandewar","name":"Sean Dewar"}],"committedDate":"2021-12-07T00:11:08Z","messageBody":"Problem: Crash when using reduce() on a NULL list.\nSolution: Only access the list when not NULL.\nhttps://github.com/vim/vim/commit/fda20c4cc59008264676a6deb6a3095ed0c248e0\n\nCHECK_LIST_MATERIALIZE hasn't been ported yet, but presumably if it is ported\nit'll use tv_list_first to check for range_list_item, which already checks for\nNULL, so this should need no extra changes and can be a full port.\n\nWe didn't actually crash here due to the use of Nvim's tv_list functions\nchecking for NULL, but apply these changes to match Vim better anyway.","messageHeadline":"vim-patch:8.2.1083: crash when using reduce() on a NULL list","oid":"2a393d709caf46650612f676123cd6875777effc"}],"createdAt":"2021-12-06T23:12:58Z","deletions":0,"files":[{"path":"runtime/doc/eval.txt","additions":21,"deletions":0},{"path":"src/nvim/eval.lua","additions":1,"deletions":0},{"path":"src/nvim/eval/funcs.c","additions":97,"deletions":0},{"path":"src/nvim/testdir/test_listdict.vim","additions":43,"deletions":0}],"headRefName":"vim-8.2.0878","headRepository":{"id":"MDEwOlJlcG9zaXRvcnkzMDU3NzMzNTM=","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjYyNTYyMjg=","name":"Sean Dewar","login":"seandewar"},"id":"PR_kwDOAPphoM4vd7iS","isCrossRepository":true,"isDraft":false,"labels":[{"id":"MDU6TGFiZWw4NDMxODQ0MzA=","name":"vim-patch","description":"See https://github.com/neovim/neovim/wiki/Merging-patches-from-upstream-Vim","color":"e6e6e6"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"BLOCKED","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16553,"potentialMergeCommit":{"oid":"11bce95539ed0888e20390d5ed885dd9c80025c5"},"projectCards":[],"reactionGroups":[],"reviewDecision":"","reviewRequests":[],"reviews":[],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"ubuntu-20.04 asan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-07T00:11:35Z","completedAt":"2021-12-07T00:31:12Z","detailsUrl":"https://github.com/neovim/neovim/runs/4437870131?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-07T00:11:34Z","completedAt":"2021-12-07T00:11:59Z","detailsUrl":"https://github.com/neovim/neovim/runs/4437870042?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 lint (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-07T00:11:35Z","completedAt":"2021-12-07T00:13:54Z","detailsUrl":"https://github.com/neovim/neovim/runs/4437870183?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 tsan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-07T00:11:37Z","completedAt":"2021-12-07T00:21:14Z","detailsUrl":"https://github.com/neovim/neovim/runs/4437870273?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-10.15 (cc=clang)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-07T00:11:38Z","completedAt":"2021-12-07T00:28:08Z","detailsUrl":"https://github.com/neovim/neovim/runs/4437870372?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-11.0 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-07T00:11:41Z","completedAt":"2021-12-07T00:34:27Z","detailsUrl":"https://github.com/neovim/neovim/runs/4437870448?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MINGW_64-gcov)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-07T00:11:35Z","completedAt":"2021-12-07T00:30:37Z","detailsUrl":"https://github.com/neovim/neovim/runs/4437870621?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MSVC_64)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-07T00:11:36Z","completedAt":"2021-12-07T00:36:43Z","detailsUrl":"https://github.com/neovim/neovim/runs/4437870664?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-07T00:11:36Z","completedAt":"2021-12-07T00:22:58Z","detailsUrl":"https://github.com/neovim/neovim/runs/4437870551?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-07T00:11:24Z","completedAt":"2021-12-07T00:12:06Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-17c4703abbef23baf0d0f3107110c57eff073620"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-07T00:11:24Z","completedAt":"2021-12-07T00:33:04Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-17c4703abbef23baf0d0f3107110c57eff073620"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/643700"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/643701"}],"title":"vim-patch:8.2.{0882,1051,1083}: port `reduce()` function","updatedAt":"2021-12-07T00:31:14Z","url":"https://github.com/neovim/neovim/pull/16553"},{"additions":1,"assignees":[],"author":{"login":"gtlsgamr"},"baseRefName":"master","body":"Added blank option for inccommand in case the user wants to disable the incremental command preview.","changedFiles":1,"closed":false,"closedAt":null,"comments":[{"author":{"login":"gpanders"},"authorAssociation":"MEMBER","body":"I think this is a good opportunity to redo the docs for `'inccommand'` completely. Compare it to e.g. `'switchbuf'` (another option that takes an (optional) string). The latter is more in line with traditional Vim option documentation, and I would support rewriting the inccommand docs to follow that style.\r\n\r\nMy suggestion:\r\n\r\n```\r\n\t\t\t\t\t\t*'inccommand'* *'icm'*\r\n'inccommand' 'icm'\tstring\t(default \"nosplit\")\r\n\t\t\tglobal\r\n\r\n\tWhen nonempty, shows the effects of |:substitute|, |:smagic|, and\r\n\t|:snomagic| as you type.\r\n\r\n\tPossible values:\r\n\t nosplit\tShows the effects of a command incrementally in the\r\n\t\t\tbuffer.\r\n\t split\tLike \"nosplit\", but also shows partial off-screen\r\n\t\t\tresults in a preview window.\r\n\r\n\r\n\tIf the preview is too slow (exceeds 'redrawtime') then 'inccommand' is\r\n\tautomatically disabled until |Command-line-mode| is done.\r\n```\r\n\r\nThis has the added benefit of implying that setting it to empty disables the option. No other options explicitly state that using an empty string disables the option, so adding it specifically for `'inccommand'` feels awkward.","createdAt":"2021-12-06T02:52:42Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":1}}]}],"commits":[{"authoredDate":"2021-12-05T16:49:05Z","authors":[{"email":"47787284+gtlsgamr@users.noreply.github.com","id":"MDQ6VXNlcjQ3Nzg3Mjg0","login":"gtlsgamr","name":"Hitarth Thummar"}],"committedDate":"2021-12-05T16:49:05Z","messageBody":"Added blank option for inccommand in case the user wants to disable the incremental command preview.","messageHeadline":"Update options.txt","oid":"3baf5824dd8ff276b7ad813459f34081c1f896f9"},{"authoredDate":"2021-12-05T16:54:30Z","authors":[{"email":"47787284+gtlsgamr@users.noreply.github.com","id":"MDQ6VXNlcjQ3Nzg3Mjg0","login":"gtlsgamr","name":"Hitarth Thummar"},{"email":"christian.clason@uni-due.de","id":"MDQ6VXNlcjIzNjEyMTQ=","login":"clason","name":"Christian Clason"}],"committedDate":"2021-12-05T16:54:30Z","messageBody":"Co-authored-by: Christian Clason <christian.clason@uni-due.de>","messageHeadline":"Update runtime/doc/options.txt","oid":"6880d2f731d27806918540218003007ca6dc3e43"}],"createdAt":"2021-12-05T16:49:56Z","deletions":0,"files":[{"path":"runtime/doc/options.txt","additions":1,"deletions":0}],"headRefName":"patch-1","headRepository":{"id":"R_kgDOGfD5Ww","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjQ3Nzg3Mjg0","name":"Hitarth Thummar","login":"gtlsgamr"},"id":"PR_kwDOAPphoM4vZ8wJ","isCrossRepository":true,"isDraft":false,"labels":[{"id":"MDU6TGFiZWw4NDc0NDAzOA==","name":"documentation","description":"","color":"c5def5"},{"id":"LA_kwDOAPphoM7WiEKd","name":"backport release-0.6","description":"automation: backport PR to release branch when merged","color":"4CD5CF"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"BLOCKED","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16534,"potentialMergeCommit":{"oid":"f0c1d0d6fd201a7bdda410a0704af5b29e25b367"},"projectCards":[],"reactionGroups":[],"reviewDecision":"","reviewRequests":[],"reviews":[{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-12-05T16:52:14Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"}],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"Backport Pull Request","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-05T22:23:30Z","completedAt":"2021-12-05T22:23:30Z","detailsUrl":"https://github.com/neovim/neovim/runs/4424368644?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-05T16:54:32Z","completedAt":"2021-12-05T16:55:05Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-f4c3f4cc691cfefadb223225452f65831a9a9b55"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-05T16:54:32Z","completedAt":"2021-12-05T16:55:05Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-f4c3f4cc691cfefadb223225452f65831a9a9b55"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/642535"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/642536"}],"title":"docs(options): mention how to disable `inccommand` preview","updatedAt":"2021-12-06T02:55:46Z","url":"https://github.com/neovim/neovim/pull/16534"},{"additions":6,"assignees":[],"author":{"login":"zeertzjq"},"baseRefName":"master","body":"Fix #15280\r\n\r\nI initially proposed to Vim restoring autochdir in `aucmd_restbuf()` (<https://github.com/vim/vim/issues/9276>), but Bram rejected that.","changedFiles":1,"closed":false,"closedAt":null,"comments":[],"commits":[{"authoredDate":"2021-12-04T23:18:32Z","authors":[{"email":"zeertzjq@outlook.com","id":"MDQ6VXNlcjM1NzY4MTcx","login":"zeertzjq","name":"zeertzjq"}],"committedDate":"2021-12-04T23:18:32Z","messageBody":"","messageHeadline":"fix(api): restore autochdir in nvim_buf_call and nvim_buf_set_name","oid":"6dd2ebd95978047a57ce4548852b0159012d6bfe"}],"createdAt":"2021-12-04T23:19:08Z","deletions":0,"files":[{"path":"src/nvim/api/buffer.c","additions":6,"deletions":0}],"headRefName":"buf-api-restore-acd","headRepository":{"id":"R_kgDOGHsHCw","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjM1NzY4MTcx","login":"zeertzjq"},"id":"PR_kwDOAPphoM4vZa-7","isCrossRepository":true,"isDraft":true,"labels":[{"id":"MDU6TGFiZWwxMDM4MTk2NzE=","name":"api","description":"related to Neovim API (C, Vim script, or Lua)","color":"c5def5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"DRAFT","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16525,"potentialMergeCommit":{"oid":"397c8763b001dbc09d7fb70cd625aa2fbd993b3b"},"projectCards":[],"reactionGroups":[],"reviewDecision":"","reviewRequests":[],"reviews":[],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"${{ matrix.runner }} ${{ matrix.flavor }} (cc=${{ matrix.cc }})","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-04T23:19:12Z","completedAt":"2021-12-04T23:19:12Z","detailsUrl":"https://github.com/neovim/neovim/runs/4419512106?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-04T23:19:12Z","completedAt":"2021-12-04T23:19:12Z","detailsUrl":"https://github.com/neovim/neovim/runs/4419512104?check_suite_focus=true"},{"__typename":"CheckRun","name":"triage","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-04T23:19:19Z","completedAt":"2021-12-04T23:19:22Z","detailsUrl":"https://github.com/neovim/neovim/runs/4419512027?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (${{ matrix.config }})","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-04T23:19:12Z","completedAt":"2021-12-04T23:19:12Z","detailsUrl":"https://github.com/neovim/neovim/runs/4419512087?check_suite_focus=true"},{"__typename":"CheckRun","name":"type-scope","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-04T23:19:17Z","completedAt":"2021-12-04T23:19:21Z","detailsUrl":"https://github.com/neovim/neovim/runs/4419512049?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-04T23:19:20Z","completedAt":"2021-12-04T23:30:33Z","detailsUrl":"https://github.com/neovim/neovim/runs/4419512123?check_suite_focus=true"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"FAILURE","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/642040"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-04T23:19:09Z","completedAt":"2021-12-04T23:20:42Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-b5b6ae6cfcf77202e6ada141d32be9881b006856"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-04T23:19:09Z","completedAt":"2021-12-04T23:44:33Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-b5b6ae6cfcf77202e6ada141d32be9881b006856"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/642041"}],"title":"fix(api): restore autochdir in nvim_buf_call and nvim_buf_set_name","updatedAt":"2021-12-04T23:44:10Z","url":"https://github.com/neovim/neovim/pull/16525"},{"additions":201,"assignees":[],"author":{"login":"muniter"},"baseRefName":"master","body":"This is an attempt [WIP] to refactor the `:help` system to be a simple Lua plugin.\r\n\r\nReasons:\r\n- Hard to extend: recently there's been a lot of talk about changing the format for the help files, perhaps something like markdown, but ideally something that can leverage treesitter and be able to have language injection. \r\n - Recently we needed a hack in [lspconfig](https://github.com/neovim/nvim-lspconfig/pull/1512) to have a tag point to the server configurations since it's written in markdown.\r\n - A lot of plugins nowdays are not shipping with help files and instead document on the README, something could be implemented after extracting the current functionality.\r\n- A lot of special handling of help buffers in many places of the codebase\r\n- Improves maintainability, I believe more people might be willing to improve it once it's in Lua.\r\n\r\nCurrent status:\r\n\r\nWhat's implemented is finding the tags in the tag files and scoring them according to how the current implementation does it, meaning getting the same results. This has been successful with one caveat:\r\n\r\nWhen two tags score are equal `table.sort` does not always return the same order (with the same input). This behavior is [documented](https://www.lua.org/manual/5.1/manual.html#pdf-table.sort). So running a query like `:h z?` sometimes returns as a first match `z%` sometimes, other times `z.`, because they are scored the same.\r\n\r\nThis is only a minor inconvenience when using the 'wildcard' behavior of helptags, since it's when it encounters this very similar matches that are scored the same by the algorithm. The C implementation uses `qsort` which seems to always return the same order for the same input.\r\n\r\nThe current code alone is the tagsearching, which removes about 300 lines of code from [ex_cmds.c](https://github.com/neovim/neovim/blob/76af219e3e481222e6fece34c7c022d6a58998e1/src/nvim/ex_cmds.c#L4937) and around 100 from [tag.c](https://github.com/neovim/neovim/blob/76af219e3e481222e6fece34c7c022d6a58998e1/src/nvim/tag.c#L1549)\r\n\r\n**This is still a prove of concept**: will like comments from the maintainers, if this is not desired I'm happy leaving it as is.","changedFiles":1,"closed":false,"closedAt":null,"comments":[{"author":{"login":"gpanders"},"authorAssociation":"MEMBER","body":"Love the concept of making the help system extensible. I'm not aware of any compelling argument for keeping it in C (other than maintaining Vim patches, but how often does the help system change these days?).\r\n\r\nWe already have quite a bit of built-in capability for tag searching and handling of tag files, even apart from the help system. Is it possible to leverage that functionality (e.g. `taglist()`) rather than re-inventing the wheel? I imagine that most of the benefits from making this extensible/customizable will come at the \"input/output\" layers (e.g. different input formats and different output displays), but the nuts and bolts of finding and parsing tags shouldn't change.","createdAt":"2021-12-04T19:05:30Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":1}}]}],"commits":[{"authoredDate":"2021-12-04T16:27:36Z","authors":[{"email":"graulopezjavier@gmail.com","id":"MDQ6VXNlcjk2OTk4MDQ=","login":"muniter","name":"Javier López"}],"committedDate":"2021-12-04T16:27:36Z","messageBody":"","messageHeadline":"refactor(help): move it to Lua","oid":"71fa9d4e93dda17fc66dbeed4d5c9c6e3fa6b7c6"}],"createdAt":"2021-12-04T16:53:58Z","deletions":0,"files":[{"path":"runtime/lua/vim/help.lua","additions":201,"deletions":0}],"headRefName":"muniter/help_plugin","headRepository":{"id":"MDEwOlJlcG9zaXRvcnkzOTE3NzM3ODg=","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjk2OTk4MDQ=","name":"Javier Lopez","login":"muniter"},"id":"PR_kwDOAPphoM4vZLr7","isCrossRepository":true,"isDraft":true,"labels":[{"id":"MDU6TGFiZWwxMDY5NDkxNTU=","name":"refactor","description":"changes that are not features or bugfixes","color":"C2E0C6"},{"id":"MDU6TGFiZWwyMTI2ODA5ODM=","name":"status:needs-discussion","description":"For PRs that propose significant changes to some part of the architecture or API","color":"FBCA04"},{"id":"MDU6TGFiZWw1NzMyMjI2OTM=","name":"lua","description":"","color":"c5def5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"DRAFT","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16522,"potentialMergeCommit":{"oid":"a9105188891cc4590a1e2a2de0de1a9036e7454e"},"projectCards":[],"reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":7}}],"reviewDecision":"","reviewRequests":[],"reviews":[],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"Backport Pull Request","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-04T16:55:02Z","completedAt":"2021-12-04T16:55:02Z","detailsUrl":"https://github.com/neovim/neovim/runs/4418135856?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 asan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-04T16:54:12Z","completedAt":"2021-12-04T17:16:21Z","detailsUrl":"https://github.com/neovim/neovim/runs/4418133317?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-04T16:54:11Z","completedAt":"2021-12-04T16:54:32Z","detailsUrl":"https://github.com/neovim/neovim/runs/4418133256?check_suite_focus=true"},{"__typename":"CheckRun","name":"triage","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-04T16:54:10Z","completedAt":"2021-12-04T16:54:14Z","detailsUrl":"https://github.com/neovim/neovim/runs/4418133169?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 lint (cc=gcc)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-04T16:54:11Z","completedAt":"2021-12-04T16:57:14Z","detailsUrl":"https://github.com/neovim/neovim/runs/4418133338?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 tsan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-04T16:54:11Z","completedAt":"2021-12-04T17:05:32Z","detailsUrl":"https://github.com/neovim/neovim/runs/4418133356?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-10.15 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-04T16:54:14Z","completedAt":"2021-12-04T17:12:15Z","detailsUrl":"https://github.com/neovim/neovim/runs/4418133370?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-11.0 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-04T16:54:13Z","completedAt":"2021-12-04T17:18:20Z","detailsUrl":"https://github.com/neovim/neovim/runs/4418133412?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MINGW_64-gcov)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-04T16:54:11Z","completedAt":"2021-12-04T17:11:12Z","detailsUrl":"https://github.com/neovim/neovim/runs/4418133458?check_suite_focus=true"},{"__typename":"CheckRun","name":"type-scope","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-04T16:54:09Z","completedAt":"2021-12-04T16:54:14Z","detailsUrl":"https://github.com/neovim/neovim/runs/4418133229?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MSVC_64)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-04T16:54:12Z","completedAt":"2021-12-04T17:12:48Z","detailsUrl":"https://github.com/neovim/neovim/runs/4418133470?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-04T16:54:10Z","completedAt":"2021-12-04T17:04:20Z","detailsUrl":"https://github.com/neovim/neovim/runs/4418133266?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-04T16:54:00Z","completedAt":"2021-12-04T16:54:40Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-32003543b864c0da2b7ce0445c4fe4fa35de500e"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-04T16:54:00Z","completedAt":"2021-12-04T16:54:40Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-32003543b864c0da2b7ce0445c4fe4fa35de500e"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/641797"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/641798"}],"title":"refactor(help): move it to Lua","updatedAt":"2021-12-04T19:05:31Z","url":"https://github.com/neovim/neovim/pull/16522"},{"additions":5,"assignees":[],"author":{"login":"dundargoc"},"baseRefName":"master","body":"This is where typo fixes are collected.","changedFiles":2,"closed":false,"closedAt":null,"comments":[{"author":{"login":"pedro757"},"authorAssociation":"NONE","body":"Maybe it's possible to add missing \"prefix\" option to the diagnostic docs\r\n![image](https://user-images.githubusercontent.com/30637426/144722879-03f4a8de-be28-47df-8748-929ee55deb5d.png)\r\n![image](https://user-images.githubusercontent.com/30637426/144722893-762496f4-a3e6-446f-a68c-a8c42184e3e5.png)\r\n","createdAt":"2021-12-04T19:55:12Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"dundargoc"},"authorAssociation":"MEMBER","body":"I don't use diagnostics so I wouldn't know where to start. If you have an idea on what it should say you could send a PR maybe?","createdAt":"2021-12-04T20:36:39Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]}],"commits":[{"authoredDate":"2021-12-02T09:51:16Z","authors":[{"email":"evgeni.chasnovski@gmail.com","id":"MDQ6VXNlcjI0ODU0MjQ4","login":"echasnovski","name":"Evgeni Chasnovski"},{"email":"8965202+gpanders@users.noreply.github.com","id":"MDQ6VXNlcjg5NjUyMDI=","login":"gpanders","name":"Gregory Anders"},{"email":"zeertzjq@outlook.com","id":"MDQ6VXNlcjM1NzY4MTcx","login":"zeertzjq","name":"zeertzjq"}],"committedDate":"2021-12-10T08:11:10Z","messageBody":"Co-authored-by: Gregory Anders <8965202+gpanders@users.noreply.github.com>\nCo-authored-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>\nCo-authored-by: zeertzjq <zeertzjq@outlook.com>","messageHeadline":"chore: fix typos","oid":"0e1a0f73bf238ce1d61af976f563b07a15bb948a"}],"createdAt":"2021-12-03T11:50:01Z","deletions":5,"files":[{"path":"runtime/doc/diagnostic.txt","additions":3,"deletions":3},{"path":"runtime/doc/eval.txt","additions":2,"deletions":2}],"headRefName":"chore/typos","headRepository":{"id":"MDEwOlJlcG9zaXRvcnkzNzg2MTQ4OTk=","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjMzOTUzOTM2","login":"dundargoc"},"id":"PR_kwDOAPphoM4vW29-","isCrossRepository":true,"isDraft":true,"labels":[{"id":"MDU6TGFiZWwyOTczNzk4ODMz","name":"typo","description":"automation: collect in one PR and then merge automatically on a schedule","color":"4CD5CF"},{"id":"LA_kwDOAPphoM7WiEKd","name":"backport release-0.6","description":"automation: backport PR to release branch when merged","color":"4CD5CF"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"DRAFT","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16506,"potentialMergeCommit":{"oid":"578f31f8921d70df3456cd4ac1cc534f108b01e4"},"projectCards":[],"reactionGroups":[],"reviewDecision":"","reviewRequests":[],"reviews":[],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"${{ matrix.runner }} ${{ matrix.flavor }} (cc=${{ matrix.cc }})","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T08:11:31Z","completedAt":"2021-12-10T08:11:31Z","detailsUrl":"https://github.com/neovim/neovim/runs/4480951519?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T08:11:31Z","completedAt":"2021-12-10T08:11:31Z","detailsUrl":"https://github.com/neovim/neovim/runs/4480951517?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (${{ matrix.config }})","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T08:11:32Z","completedAt":"2021-12-10T08:11:32Z","detailsUrl":"https://github.com/neovim/neovim/runs/4480951602?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T08:11:38Z","completedAt":"2021-12-10T08:22:10Z","detailsUrl":"https://github.com/neovim/neovim/runs/4480951682?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T08:11:29Z","completedAt":"2021-12-10T08:12:19Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-824f0dc51e63d440082bd59634788767f0c505c0"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T08:11:29Z","completedAt":"2021-12-10T08:12:19Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-824f0dc51e63d440082bd59634788767f0c505c0"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/646202"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/646203"}],"title":"chore: fix typos","updatedAt":"2021-12-10T08:11:28Z","url":"https://github.com/neovim/neovim/pull/16506"},{"additions":908,"assignees":[],"author":{"login":"hrsh7th"},"baseRefName":"master","body":"This is a minimal snippet implementation PoC in case neovim has a snippet API at its core.\r\nFirst of all, I would like to hear your impressions.\r\n\r\n- [ ] lsp variables\r\n- [x] dispose with edits outside the range\r\n- [ ] nested snippet expantion\r\n- [x] jump-next/jump-prev\r\n- [x] nested placeholders\r\n - [x] extmark focus/blur\r\n - [x] dispose if parent was edited\r\n- [x] choice\r\n- [x] write tests\r\n\r\n#### Limitation-\r\n- Does not support transform feature. (There is no ECMAScript regular expression)\r\n- Cannot be edited properly if the adjacent tab stop is not the current tab stop\r\n\r\nhttps://user-images.githubusercontent.com/629908/144743299-95c0d6b4-9a65-4d78-837f-4e266b60f6cc.mp4\r\n\r\n\r\n","changedFiles":4,"closed":false,"closedAt":null,"comments":[{"author":{"login":"hrsh7th"},"authorAssociation":"CONTRIBUTOR","body":"the `adjacent placeholder` is difficult to support via extmarks API, I guess.\r\n\r\nI don't think the core needs to support such difficult cases. How about that?","createdAt":"2021-12-02T17:39:25Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":2}}]},{"author":{"login":"hrsh7th"},"authorAssociation":"CONTRIBUTOR","body":"Hm... the gravity management is bit hard. I'll investigate it...","createdAt":"2021-12-05T15:03:15Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"hrsh7th"},"authorAssociation":"CONTRIBUTOR","body":"Hmm ... undo complex extmarks don't restore state correctly, I guess","createdAt":"2021-12-06T15:47:09Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]}],"commits":[{"authoredDate":"2021-12-02T14:31:29Z","authors":[{"email":"hrsh7th@gmail.com","id":"MDQ6VXNlcjYyOTkwOA==","login":"hrsh7th","name":"hrsh7th"}],"committedDate":"2021-12-02T14:31:29Z","messageBody":"","messageHeadline":"feat(snippet): Initial implementation","oid":"046ee8bdc51946db33f6e81e1e010ed8353c6467"},{"authoredDate":"2021-12-02T17:07:59Z","authors":[{"email":"hrsh7th@gmail.com","id":"MDQ6VXNlcjYyOTkwOA==","login":"hrsh7th","name":"hrsh7th"}],"committedDate":"2021-12-02T17:22:44Z","messageBody":"","messageHeadline":"feat(snippet): jump-next and jump-prev","oid":"ab59ab92cc44e75be2876067ec4f6cb19d56a554"},{"authoredDate":"2021-12-03T02:53:18Z","authors":[{"email":"hrsh7th@gmail.com","id":"MDQ6VXNlcjYyOTkwOA==","login":"hrsh7th","name":"hrsh7th"}],"committedDate":"2021-12-03T02:53:18Z","messageBody":"","messageHeadline":"feat(snippet): Add SnippetMark class","oid":"505a6c94aa11158e37a1667344366ebc57e70d73"},{"authoredDate":"2021-12-03T12:17:13Z","authors":[{"email":"hrsh7th@gmail.com","id":"MDQ6VXNlcjYyOTkwOA==","login":"hrsh7th","name":"hrsh7th"}],"committedDate":"2021-12-03T12:17:13Z","messageBody":"","messageHeadline":"feat(snippet): implement synchronization","oid":"882a3b22f86de454c7ff9b42dcbf1a5665499c91"},{"authoredDate":"2021-12-03T12:29:14Z","authors":[{"email":"hrsh7th@gmail.com","id":"MDQ6VXNlcjYyOTkwOA==","login":"hrsh7th","name":"hrsh7th"}],"committedDate":"2021-12-03T12:29:14Z","messageBody":"","messageHeadline":"feat(snippet): Add vim.snippet.dispose","oid":"5cac731a69bd3c602c569d04449a9e955fdf029a"},{"authoredDate":"2021-12-05T08:57:33Z","authors":[{"email":"hrsh7th@gmail.com","id":"MDQ6VXNlcjYyOTkwOA==","login":"hrsh7th","name":"hrsh7th"}],"committedDate":"2021-12-05T08:57:33Z","messageBody":"","messageHeadline":"feat(snippet): support undo changes","oid":"6456b3058b5c41dec5aaab8269ea3e0bd71ce1d4"},{"authoredDate":"2021-12-05T10:39:52Z","authors":[{"email":"hrsh7th@gmail.com","id":"MDQ6VXNlcjYyOTkwOA==","login":"hrsh7th","name":"hrsh7th"}],"committedDate":"2021-12-05T10:39:52Z","messageBody":"","messageHeadline":"feat(snippet): jump & nested support","oid":"8e85b55ce2bf4307e98cf385d406414e643c12b3"},{"authoredDate":"2021-12-05T12:19:40Z","authors":[{"email":"hrsh7th@gmail.com","id":"MDQ6VXNlcjYyOTkwOA==","login":"hrsh7th","name":"hrsh7th"}],"committedDate":"2021-12-05T12:19:40Z","messageBody":"","messageHeadline":"feat(snippet): cosmetic changes","oid":"d7dece7f2569214005a30f7732eae83c050c770c"},{"authoredDate":"2021-12-07T08:42:06Z","authors":[{"email":"hrsh7th@gmail.com","id":"MDQ6VXNlcjYyOTkwOA==","login":"hrsh7th","name":"hrsh7th"}],"committedDate":"2021-12-07T08:42:06Z","messageBody":"","messageHeadline":"feat(snippet): support nested placeholders & undo","oid":"9f3de77cec418d0ba0bff662b8da81e8940887eb"},{"authoredDate":"2021-12-07T11:15:53Z","authors":[{"email":"hrsh7th@gmail.com","id":"MDQ6VXNlcjYyOTkwOA==","login":"hrsh7th","name":"hrsh7th"}],"committedDate":"2021-12-07T11:15:53Z","messageBody":"","messageHeadline":"feat(snippet): support choice","oid":"5f1e1fa6122d28a5fde32d0fd6bec669b4004600"},{"authoredDate":"2021-12-07T11:19:34Z","authors":[{"email":"hrsh7th@gmail.com","id":"MDQ6VXNlcjYyOTkwOA==","login":"hrsh7th","name":"hrsh7th"}],"committedDate":"2021-12-07T11:19:34Z","messageBody":"","messageHeadline":"feat(snippet): add tests","oid":"11b51f879d1da0d100668725d9df8921b1335022"},{"authoredDate":"2021-12-07T16:44:33Z","authors":[{"email":"hrsh7th@gmail.com","id":"MDQ6VXNlcjYyOTkwOA==","login":"hrsh7th","name":"hrsh7th"}],"committedDate":"2021-12-07T16:44:33Z","messageBody":"","messageHeadline":"feat(snippet): Add complext tests","oid":"ff184968f6a1f6658b260b66751334c303f95811"},{"authoredDate":"2021-12-08T11:31:00Z","authors":[{"email":"hrsh7th@gmail.com","id":"MDQ6VXNlcjYyOTkwOA==","login":"hrsh7th","name":"hrsh7th"}],"committedDate":"2021-12-08T11:31:00Z","messageBody":"","messageHeadline":"feat(snippet): Add tests","oid":"dc37de6a7ecdb2cda59ef1a68285cd393246afe8"},{"authoredDate":"2021-12-10T13:13:32Z","authors":[{"email":"hrsh7th@gmail.com","id":"MDQ6VXNlcjYyOTkwOA==","login":"hrsh7th","name":"hrsh7th"}],"committedDate":"2021-12-10T13:13:32Z","messageBody":"","messageHeadline":"feat(snippet): refactor","oid":"9d9c8a9bb7899b6c979357d0c72dd009a29072c8"},{"authoredDate":"2021-12-10T14:12:06Z","authors":[{"email":"hrsh7th@gmail.com","id":"MDQ6VXNlcjYyOTkwOA==","login":"hrsh7th","name":"hrsh7th"}],"committedDate":"2021-12-10T14:12:06Z","messageBody":"","messageHeadline":"feat(snippet): dispose snippet if edit outside of range","oid":"613b3636be6d810c796acc5ea593addb9daf0585"}],"createdAt":"2021-12-02T17:09:35Z","deletions":1,"files":[{"path":"runtime/lua/vim/lsp/_snippet.lua","additions":6,"deletions":1},{"path":"runtime/lua/vim/snippet.lua","additions":650,"deletions":0},{"path":"src/nvim/lua/vim.lua","additions":3,"deletions":0},{"path":"test/functional/lua/snippet_spec.lua","additions":249,"deletions":0}],"headRefName":"minimal-snippet","headRepository":{"id":"MDEwOlJlcG9zaXRvcnkyNDMyMzg2NzQ=","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjYyOTkwOA==","name":"hrsh7th","login":"hrsh7th"},"id":"PR_kwDOAPphoM4vUgrj","isCrossRepository":true,"isDraft":true,"labels":[{"id":"MDU6TGFiZWw1NzMyMjI2OTM=","name":"lua","description":"","color":"c5def5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"DRAFT","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16499,"potentialMergeCommit":{"oid":"d7fb74c961f17f7ddc210d9a156c277e25d6c187"},"projectCards":[],"reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":5}},{"content":"HOORAY","users":{"totalCount":9}},{"content":"ROCKET","users":{"totalCount":8}},{"content":"EYES","users":{"totalCount":2}}],"reviewDecision":"","reviewRequests":[],"reviews":[{"author":{"login":"hrsh7th"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-02T17:17:51Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"hrsh7th"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-02T17:23:13Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"hrsh7th"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-02T17:32:42Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"hrsh7th"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-02T17:34:34Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"hrsh7th"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-02T17:36:17Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"hrsh7th"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-07T11:20:05Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"}],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"${{ matrix.runner }} ${{ matrix.flavor }} (cc=${{ matrix.cc }})","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T14:12:16Z","completedAt":"2021-12-10T14:12:16Z","detailsUrl":"https://github.com/neovim/neovim/runs/4484460628?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T14:12:15Z","completedAt":"2021-12-10T14:12:15Z","detailsUrl":"https://github.com/neovim/neovim/runs/4484460435?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (${{ matrix.config }})","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T14:12:17Z","completedAt":"2021-12-10T14:12:17Z","detailsUrl":"https://github.com/neovim/neovim/runs/4484460687?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-10T14:12:27Z","completedAt":"2021-12-10T14:23:03Z","detailsUrl":"https://github.com/neovim/neovim/runs/4484460532?check_suite_focus=true"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"FAILURE","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/646407"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"FAILURE","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/646408"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T14:12:13Z","completedAt":"2021-12-10T14:13:53Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-b357c61df07fb3d01ae2a720f76e0fe661af25ac"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T14:12:13Z","completedAt":"2021-12-10T14:13:53Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-b357c61df07fb3d01ae2a720f76e0fe661af25ac"}],"title":"feat(snippet): Minimal snippet API","updatedAt":"2021-12-10T14:13:44Z","url":"https://github.com/neovim/neovim/pull/16499"},{"additions":9,"assignees":[],"author":{"login":"github-actions"},"baseRefName":"release-0.6","body":"","changedFiles":2,"closed":false,"closedAt":null,"comments":[],"commits":[{"authoredDate":"2021-12-09T04:16:26Z","authors":[{"email":"marvim@users.noreply.github.com","id":"MDQ6VXNlcjc5ODA4NjA=","login":"marvim","name":"marvim"}],"committedDate":"2021-12-09T04:16:26Z","messageBody":"","messageHeadline":"docs: regenerate","oid":"eb1064a0527f2828543425830b064fe30f03bddf"}],"createdAt":"2021-12-01T12:18:15Z","deletions":5,"files":[{"path":"runtime/doc/lsp.txt","additions":6,"deletions":0},{"path":"runtime/doc/treesitter.txt","additions":3,"deletions":5}],"headRefName":"marvim/api-doc-update/release-0.6","headRepository":{"id":"MDEwOlJlcG9zaXRvcnkxNjQwODk5Mg==","name":"neovim"},"headRepositoryOwner":{"id":"MDEyOk9yZ2FuaXphdGlvbjY0NzE0ODU=","login":"neovim"},"id":"PR_kwDOAPphoM4vPs7Y","isCrossRepository":false,"isDraft":false,"labels":[],"maintainerCanModify":false,"mergeCommit":null,"mergeStateStatus":"CLEAN","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16483,"potentialMergeCommit":{"oid":"6b8752181eba5bffc692178eea60592ee5a0fe99"},"projectCards":[],"reactionGroups":[],"reviewDecision":"","reviewRequests":[],"reviews":[],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-09T04:16:31Z","completedAt":"2021-12-09T04:17:17Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-9e4741b3e6e3912e1b32d3b73d131675f9cca060"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-09T04:16:31Z","completedAt":"2021-12-09T04:17:17Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-9e4741b3e6e3912e1b32d3b73d131675f9cca060"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/645406"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/645407"}],"title":"docs: regenerate","updatedAt":"2021-12-09T04:16:30Z","url":"https://github.com/neovim/neovim/pull/16483"},{"additions":274,"assignees":[],"author":{"login":"Shougo"},"baseRefName":"master","body":"Continue of https://github.com/neovim/neovim/pull/16383\r\n\r\nRelated: #16251 #5189 #1029\r\n\r\nIt adds `msgfunc` option. It can overwrite standard messages feature like `ext_messages` UI.\r\n\r\nExample:\r\n\r\n```vim\r\nset msgfunc=Func\r\n\r\nfunction! Func(method, kind, chunks, overwrite) abort\r\n echomsg a:method\r\n if a:kind !=# ''\r\n echomsg a:kind\r\n endif\r\n if !empty(a:chunks)\r\n echomsg a:chunks\r\n endif\r\nendfunction\r\n```\r\n\r\n**Limitation**\r\n\r\n* The feature is disabled if your neovim GUI enabled `ext_messages` feature\r\n* It does not support set cmdheight=0 now. Because it is not merged yet\r\n~~* It cannot work for hit-enter prompts needed commands like `:map` or `:!` etc.~~\r\n~~* It cannot work for error messages.~~\r\n* It cannot work for startup messages.\r\n\r\nNote: It based on neovim `ext_messages` feature. It is not easy to port to Vim...","changedFiles":15,"closed":false,"closedAt":null,"comments":[{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"Can you review it again?\r\nI think the feature is stable.","createdAt":"2021-12-01T10:21:39Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":2}},{"content":"HOORAY","users":{"totalCount":2}},{"content":"HEART","users":{"totalCount":2}}]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"```\r\n src/nvim/option.c:4816: Missing space before asterisk in long)* [whitespace/operators] [2]\r\n Total errors found: 1\r\n ninja: build stopped: subcommand failed.\r\n Failed: F /clint|clint :: Test clint failed\r\n Suite /clint failed, summary:\r\n ```\r\n\r\nThe CI fail is not related to the changes.","createdAt":"2021-12-05T06:20:35Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"I have added the check for `/{something} [1/1]` message.","createdAt":"2021-12-05T13:40:10Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"Please try the following with 57ba84fd5735c4416ba0148109e420b5595a9ef5\r\n\r\n```vim\r\nfunction! Func(...)\r\n let g:args = deepcopy(a:)\r\nendfun\r\nset msgfunc=Func\r\n\r\nnnoremap <silent> g <cmd>call Foo()<CR>\r\nnnoremap <silent> <buffer> g <cmd>call Bar()<CR>\r\nnmap g\r\n```\r\n\r\nThe UI will be stuck on \"Press ENTER to continue\" and only one of the mappings is shown.","createdAt":"2021-12-05T23:45:42Z","includesCreatedEdit":false,"isMinimized":true,"minimizedReason":"resolved","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"Hm... The partial output is passed to `msgfunc`.","createdAt":"2021-12-05T23:57:55Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"https://github.com/neovim/neovim/pull/16480#issuecomment-986325385\r\n\r\nI have fixed the problem.\r\n`msgfunc` does not work for startup messages.","createdAt":"2021-12-06T13:59:07Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"This is a weird one and contrived, but might showcase a problem with how the chunks are delivered.\r\n\r\n```vim\r\nlet g:args = []\r\nfun! Func(...)\r\n call add(g:args, deepcopy(a:000))\r\nendfun\r\nset msgfunc=Func\r\n\r\nfun! OnCmdlineLeave(...)\r\n echo g:args\r\nendfun\r\n\r\nfun! OnVimEnter(...)\r\n autocmd CmdlineLeave * ++once call timer_start(0, function(\"OnCmdlineLeave\"))\r\n let name = input(\"What is your name? \")\r\n let value = foo()\r\n set msgfunc=\r\nendfun\r\n\r\nautocmd VimEnter * call timer_start(0, function(\"OnVimEnter\"))\r\n```\r\n\r\nThis is the \"normal\" error\r\n\r\n```\r\nError detected while processing function OnVimEnter:\r\nline 3:\r\nE117: Unknown function: foo\r\n```\r\n\r\nIn comparison, I get the following chunks with the script above\r\n\r\n`[['msg_show', 'emsg', [[4, 'Error detected while processing function OnVimEnter:']], v:false], ['msg_clear', 'return_prompt', [], v:false]]`\r\n\r\nThe \"Error detected while processing function OnVimEnter:\" chunk got sent to the msgfunc, while \"E117: Unknown function: foo\" was printed to the output buffer, so the message got disjointed between two different places.","createdAt":"2021-12-06T23:00:37Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"@resolritter I have fixed the problem. Please update it.","createdAt":"2021-12-07T00:13:16Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"```diff\r\ndiff --git a/src/nvim/message.c b/src/nvim/message.c\r\nindex 1643dba31..dda32830a 100644\r\n--- a/src/nvim/message.c\r\n+++ b/src/nvim/message.c\r\n@@ -3182,8 +3182,7 @@ bool msg_enable_msgfunc(void)\r\n // Note: msgfunc is disabled in command line mode\r\n // Because default echo is used for command line redraw\r\n return *p_msgfunc != NUL && !msg_check_loop\r\n- && !redir_off && !need_wait_return && !starting && !called_emsg\r\n- && !(State & (CMDLINE | CONFIRM | ASKMORE));\r\n+ && !starting && !(State & (CMDLINE | CONFIRM));\r\n }\r\n\r\n static void msg_call_msgfunc_event(void **argv)\r\n```\r\n\r\nI can bypass all error messages like this. But if confusing. Please test it.\r\nIt needs press return, but any messages are not printed until press enter.","createdAt":"2021-12-07T02:01:46Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"Some error messages are needs wait_return, but some message are not.\r\nIt confusing, so all error messages should not bypassed to `msgfunc`.","createdAt":"2021-12-07T02:12:45Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"> It confusing, so all error messages should not bypassed to `msgfunc`.\r\n\r\nSounds reasonable for a first implementation of this feature.\r\n\r\nThe inconvenience I see is that, by not forwarding everything to msgfunc, you end up with separate message histories. e.g. The user will not be able to paginate and manage the error message history with a plugin if they want, because it's not tracked.\r\n\r\nWe could roll with that decision and handle error forwarding in a future PR. Something like\r\n\r\n```\r\nset msgfunckinds=error,info\r\n```\r\n\r\nPersonally I would want to have everything sent to msgfunc and avoid \"Press ENTER to continue\" as much as possible. I think it is valuable to have the *possibility* of this behavior if the user wants but, regardless, it sounds reasonable to avoid dealing with errors on this first iteration if it's inviable.","createdAt":"2021-12-07T03:15:19Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"I have tested to bypass error messages. But it is very difficult.","createdAt":"2021-12-07T03:46:49Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"> I have tested to bypass error messages. But it is very difficult.\r\n\r\nI've been trying a patch locally in on top of a7ce11beafb3be39a8edeece817ece75b6ea57a7.\r\n\r\n```diff\r\ndiff --git a/src/nvim/message.c b/src/nvim/message.c\r\nindex 0832f9dfd..21e075802 100644\r\n--- a/src/nvim/message.c\r\n+++ b/src/nvim/message.c\r\n@@ -1104,7 +1104,7 @@ void wait_return(int redraw)\r\n \r\n // If using \":silent cmd\", don't wait for a return. Also don't set\r\n // need_wait_return to do it later.\r\n- if (msg_silent != 0) {\r\n+ if (msg_silent != 0 || (*p_msgfunc != NUL && !msg_check_loop)) {\r\n return;\r\n }\r\n \r\n@@ -3182,8 +3182,8 @@ bool msg_enable_msgfunc(void)\r\n // msgfunc is disabled in command line mode\r\n // Because default echo is used for command line redraw\r\n return *p_msgfunc != NUL && !msg_check_loop\r\n- && !redir_off && !need_wait_return\r\n- && State & CMDLINE && State != CONFIRM && State != ASKMORE;\r\n+ && !redir_off && !msg_hist_off && !starting\r\n+ && !(State & (CMDLINE | CONFIRM | ASKMORE));\r\n }\r\n \r\n static void msg_call_msgfunc_event(void **argv)\r\n```\r\n\r\n- It avoids the \"Press ENTER to return\" due to that change in `wait_return`\r\n- It forwards all the messages, including errors","createdAt":"2021-12-07T04:23:59Z","includesCreatedEdit":false,"isMinimized":true,"minimizedReason":"outdated","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"Hi, I have tested your patch.\r\nBut it does not work well for your example.\r\n\r\nYou should test your example.\r\n\r\nNote: And please create patch for the HEAD instead the old version","createdAt":"2021-12-07T04:33:44Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"In your example with your patch\r\n\r\n* Press return exists\r\n* You cannot get all error messages\r\n\r\nOther example, works.","createdAt":"2021-12-07T04:37:40Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"This is a patch for 394481377140d3173337a9bddb207d40713f63cc which achieves \"Show messages to the message buffer while Vim is starting\". It should work for any message.\r\n\r\nThis patch does not solve the problem I mentioned before about the `:` command line first being hidden until you type a character (video in https://github.com/neovim/neovim/pull/16480#discussion_r762398972).\r\n\r\n```patch\r\ndiff --git a/src/nvim/message.c b/src/nvim/message.c\r\nindex 1643dba31..58379498d 100644\r\n--- a/src/nvim/message.c\r\n+++ b/src/nvim/message.c\r\n@@ -1104,7 +1104,9 @@ void wait_return(int redraw)\r\n \r\n // If using \":silent cmd\", don't wait for a return. Also don't set\r\n // need_wait_return to do it later.\r\n- if (msg_silent != 0) {\r\n+ // wait_return can be skipped when msgfunc is enabled because messages are not\r\n+ // drawn to the message buffer, therefore hitting enter is not necessary\r\n+ if (msg_silent != 0 || msg_enable_msgfunc()) {\r\n return;\r\n }\r\n \r\n@@ -3179,10 +3181,21 @@ bool msg_enable_ext(void)\r\n \r\n bool msg_enable_msgfunc(void)\r\n {\r\n- // Note: msgfunc is disabled in command line mode\r\n- // Because default echo is used for command line redraw\r\n+ static bool starting_hitreturn = false;\r\n+ if (starting) {\r\n+ // this code assumes we're interested in outputting something if this\r\n+ // function has been called while the editor is starting; for any message\r\n+ // being output during this period, we assume a \"Press ENTER to continue\"\r\n+ // prompt will come up in the future\r\n+ starting_hitreturn = true;\r\n+ } else if (starting_hitreturn && !need_wait_return) {\r\n+ starting_hitreturn = false;\r\n+ }\r\n+\r\n+ // msgfunc is disabled in command line mode\r\n+ // Because default echo is used for command line redraw\r\n return *p_msgfunc != NUL && !msg_check_loop\r\n- && !redir_off && !need_wait_return && !starting && !called_emsg\r\n+ && !starting_hitreturn\r\n && !(State & (CMDLINE | CONFIRM | ASKMORE));\r\n }\r\n```\r\n\r\nReproduction\r\n\r\n```vim\r\nfun! Func(...)\r\nendfun\r\nset msgfunc=Func\r\n\r\necho \"foo\"\r\ncall foo()\r\n```\r\n\r\nOutput\r\n\r\n```\r\nfoo\r\nError detected while processing /home/user/test.vim:\r\nline 6:\r\nE117: Unknown function: foo\r\nPress ENTER or type command to continue\r\n```","createdAt":"2021-12-07T10:49:13Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"It does not fix https://github.com/neovim/neovim/pull/16480#issuecomment-987334632.","createdAt":"2021-12-07T11:04:43Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"`redir_off` check is needed. So I have added.\r\n\r\n* It does not work for specific error messages.\r\n\r\nThe issue must be fixed. Because it is confusing.","createdAt":"2021-12-07T11:09:20Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"`Some messages are work, but some messages are work` is not OK.\r\nIt must be `all error messages can be captured` or `all error messages cannot be captured`.","createdAt":"2021-12-07T11:11:57Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"```vim\r\nlet g:args = []\r\nfun! Func(...)\r\n call add(g:args, deepcopy(a:000))\r\nendfun\r\nset msgfunc=Func\r\n\r\nfun! OnCmdlineLeave(...)\r\n echo g:args\r\nendfun\r\n\r\nfun! OnVimEnter(...)\r\n let name = input(\"What is your name? \")\r\n let value = foo()\r\n \"set msgfunc=\r\nendfun\r\n\r\nautocmd VimEnter * call timer_start(10, function(\"OnVimEnter\"))\r\n```\r\n\r\nIt is broken. `g:args` is not set until `set msgfunc=`. It is unexpected behavior.","createdAt":"2021-12-07T11:30:13Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"Well, it is better to test the behavior.\r\n\r\n```vim\r\nlet g:args = []\r\nfun! Func(...)\r\n call add(g:args, deepcopy(a:000))\r\nendfun\r\nset msgfunc=Func\r\n\r\nfun! OnVimEnter(...)\r\n let name = input(\"What is your name? \")\r\n let value = foo()\r\n \"set msgfunc=\r\nendfun\r\n\r\nautocmd VimEnter * call timer_start(10, function(\"OnVimEnter\"))\r\n```\r\n\r\nHm.. It is better. The previous example is confusing.","createdAt":"2021-12-07T11:36:56Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"I don't know why but if I add `set msgfunc=` in `OnVimEnter()` it breaks.","createdAt":"2021-12-07T11:43:52Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"I get it. `abort` is needed!\r\n\r\n```vim\r\nlet g:args = []\r\nfun! Func(...)\r\n call add(g:args, deepcopy(a:000))\r\nendfun\r\nset msgfunc=Func\r\n\r\nfun! OnVimEnter(...) abort\r\n let name = input(\"What is your name? \")\r\n let value = foo()\r\n set msgfunc=\r\nendfun\r\n\r\nautocmd VimEnter * call timer_start(10, function(\"OnVimEnter\"))\r\n```\r\n\r\nSo current code has not problems.","createdAt":"2021-12-07T11:47:47Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":1}}]},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"This is a patch for fdb2445c5 which achieves\r\n\r\n- Send all messages to msgfunc while it is active\r\n- Prevent \"Press Enter to continue\" for messages sent while msgfunc was active (`need_wait_return = false;`)\r\n\r\n```diff\r\ndiff --git a/src/nvim/message.c b/src/nvim/message.c\r\nindex 007a27bd4..7a0374d40 100644\r\n--- a/src/nvim/message.c\r\n+++ b/src/nvim/message.c\r\n@@ -303,13 +303,16 @@ bool msg_attr_keep(const char *s, int attr, bool keep, bool multiline)\r\n }\r\n ++entered;\r\n \r\n- // Add message to history (unless it's a repeated kept message or a\r\n- // truncated message)\r\n- if ((const char_u *)s != keep_msg\r\n- || (*s != '<'\r\n+ // Add message to history (unless it's a repeated kept message or a truncated\r\n+ // message). Avoid doing so while msgfunc is active because then the recording\r\n+ // of messages is managed by the msgfunc's implementation, which is a separate\r\n+ // thing from the native history.\r\n+ if (!msg_enable_msgfunc() &&\r\n+ ((const char_u *)s != keep_msg ||\r\n+ (*s != '<'\r\n && last_msg_hist != NULL\r\n && last_msg_hist->msg != NULL\r\n- && STRCMP(s, last_msg_hist->msg))) {\r\n+ && STRCMP(s, last_msg_hist->msg)))) {\r\n add_msg_hist(s, -1, attr, multiline);\r\n }\r\n \r\n@@ -1304,7 +1307,9 @@ static void hit_return_msg(void)\r\n void set_keep_msg(char *s, int attr)\r\n {\r\n xfree(keep_msg);\r\n- if (s != NULL && msg_silent == 0) {\r\n+ // Do not \"keep\" anything while msgfunc is active because the messages are\r\n+ // flushed immediately\r\n+ if (!msg_enable_msgfunc() && s != NULL && msg_silent == 0) {\r\n keep_msg = vim_strsave((char_u *)s);\r\n } else {\r\n keep_msg = NULL;\r\n@@ -3062,7 +3067,9 @@ int msg_end(void)\r\n * we have to redraw the window.\r\n * Do not do this if we are abandoning the file or editing the command line.\r\n */\r\n- if (!exiting && need_wait_return && !(State & CMDLINE)) {\r\n+ if (msg_enable_ext()) {\r\n+ need_wait_return = false;\r\n+ } else if (!exiting && need_wait_return && !(State & CMDLINE)) {\r\n wait_return(FALSE);\r\n return FALSE;\r\n }\r\n```\r\n\r\nReproduction\r\n\r\n```vim\r\nlet g:args = []\r\nfun! Func(...)\r\n call add(g:args, deepcopy(a:000))\r\nendfun\r\nset msgfunc=Func\r\n\r\nfun! OnVimEnter(...)\r\n let value = foo()\r\n set msgfunc=\r\nendfun\r\n\r\nautocmd VimEnter * call timer_start(0, function(\"OnVimEnter\"))\r\n```\r\n\r\nResult:\r\n\r\n- All messages are sent to `msgfunc`\r\n- Messages are not repeated to the native history","createdAt":"2021-12-07T22:24:54Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"I'm still noticing one problem with this feature. In the reproduction for https://github.com/neovim/neovim/pull/16480#issuecomment-988305365\r\n\r\n```vim\r\nlet g:args = []\r\nfun! Func(...)\r\n call add(g:args, deepcopy(a:000))\r\nendfun\r\nset msgfunc=Func\r\n\r\nfun! OnVimEnter(...)\r\n let value = foo()\r\n set msgfunc=\r\nendfun\r\n\r\nautocmd VimEnter * call timer_start(0, function(\"OnVimEnter\"))\r\n```\r\n\r\nThe `set msgfunc=` part causes an error the next time you open the command line: `E117: Unknown function: `\r\n\r\nSolution:\r\n\r\n```diff\r\n void msg_call_msgfunc(const char *method, Array *entries)\r\n {\r\n+ if (*p_msgfunc == NUL) {\r\n+ return;\r\n+ }\r\n+\r\n // call msgfunc(method, kind, chunks, overwrite)\r\n typval_T *args = xmalloc(sizeof(*args) * 5);\r\n```","createdAt":"2021-12-07T22:29:18Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":1}}]},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"Found another problem: the feature does not work reasonably while getting user input with multiline prompts.\r\n\r\nSolution: Introduce INPUT state and disable msgfunc while INPUT is active.\r\n\r\n```patch\r\ndiff --git a/src/nvim/eval.c b/src/nvim/eval.c\r\nindex 2faae08fc..f78a52ad4 100644\r\n--- a/src/nvim/eval.c\r\n+++ b/src/nvim/eval.c\r\n@@ -6999,6 +6999,9 @@ void get_user_input(const typval_T *const argvars, typval_T *const rettv, const\r\n const bool secret)\r\n FUNC_ATTR_NONNULL_ALL\r\n {\r\n+ int saved_state = State;\r\n+ State = INPUT;\r\n+\r\n rettv->v_type = VAR_STRING;\r\n rettv->vval.v_string = NULL;\r\n \r\n@@ -7015,21 +7018,21 @@ void get_user_input(const typval_T *const argvars, typval_T *const rettv, const\r\n if (argvars[0].v_type == VAR_DICT) {\r\n if (argvars[1].v_type != VAR_UNKNOWN) {\r\n emsg(_(\"E5050: {opts} must be the only argument\"));\r\n- return;\r\n+ goto end;\r\n }\r\n dict_T *const dict = argvars[0].vval.v_dict;\r\n prompt = tv_dict_get_string_buf_chk(dict, S_LEN(\"prompt\"), prompt_buf, \"\");\r\n if (prompt == NULL) {\r\n- return;\r\n+ goto end;\r\n }\r\n defstr = tv_dict_get_string_buf_chk(dict, S_LEN(\"default\"), defstr_buf, \"\");\r\n if (defstr == NULL) {\r\n- return;\r\n+ goto end;\r\n }\r\n cancelreturn = tv_dict_get_string_buf_chk(dict, S_LEN(\"cancelreturn\"),\r\n cancelreturn_buf, def);\r\n if (cancelreturn == NULL) { // error\r\n- return;\r\n+ goto end;\r\n }\r\n if (*cancelreturn == NUL) {\r\n cancelreturn = NULL;\r\n@@ -7037,29 +7040,29 @@ void get_user_input(const typval_T *const argvars, typval_T *const rettv, const\r\n xp_name = tv_dict_get_string_buf_chk(dict, S_LEN(\"completion\"),\r\n xp_name_buf, def);\r\n if (xp_name == NULL) { // error\r\n- return;\r\n+ goto end;\r\n }\r\n if (xp_name == def) { // default to NULL\r\n xp_name = NULL;\r\n }\r\n if (!tv_dict_get_callback(dict, S_LEN(\"highlight\"), &input_callback)) {\r\n- return;\r\n+ goto end;\r\n }\r\n } else {\r\n prompt = tv_get_string_buf_chk(&argvars[0], prompt_buf);\r\n if (prompt == NULL) {\r\n- return;\r\n+ goto end;\r\n }\r\n if (argvars[1].v_type != VAR_UNKNOWN) {\r\n defstr = tv_get_string_buf_chk(&argvars[1], defstr_buf);\r\n if (defstr == NULL) {\r\n- return;\r\n+ goto end;\r\n }\r\n if (argvars[2].v_type != VAR_UNKNOWN) {\r\n const char *const arg2 = tv_get_string_buf_chk(&argvars[2],\r\n cancelreturn_buf);\r\n if (arg2 == NULL) {\r\n- return;\r\n+ goto end;\r\n }\r\n if (inputdialog) {\r\n cancelreturn = arg2;\r\n@@ -7079,7 +7082,7 @@ void get_user_input(const typval_T *const argvars, typval_T *const rettv, const\r\n uint32_t argt;\r\n if (parse_compl_arg((char_u *)xp_name, xp_namelen, &xp_type,\r\n &argt, (char_u **)&xp_arg) == FAIL) {\r\n- return;\r\n+ goto end;\r\n }\r\n }\r\n \r\n@@ -7122,6 +7125,9 @@ void get_user_input(const typval_T *const argvars, typval_T *const rettv, const\r\n need_wait_return = false;\r\n msg_didout = false;\r\n cmd_silent = cmd_silent_save;\r\n+\r\n+end:\r\n+ State = saved_state;\r\n }\r\n \r\n /// Turn a dictionary into a list\r\ndiff --git a/src/nvim/message.c b/src/nvim/message.c\r\nindex 0e1052169..1172c06b8 100644\r\n--- a/src/nvim/message.c\r\n+++ b/src/nvim/message.c\r\n@@ -3201,7 +3201,7 @@ bool msg_enable_msgfunc(void)\r\n // Because default echo is used for command line redraw\r\n return *p_msgfunc != NUL && !msg_check_loop\r\n && !redir_off && !starting_hitreturn\r\n- && !(State & (CMDLINE | CONFIRM | ASKMORE));\r\n+ && !(State & (CMDLINE | CONFIRM | ASKMORE | INPUT));\r\n }\r\n \r\n static void msg_call_msgfunc_event(void **argv)\r\ndiff --git a/src/nvim/vim.h b/src/nvim/vim.h\r\nindex e3539c1a5..9ab13e277 100644\r\n--- a/src/nvim/vim.h\r\n+++ b/src/nvim/vim.h\r\n@@ -71,6 +71,7 @@ enum { NUMBUFLEN = 65, };\r\n #define SELECTMODE 0x1000 // Select mode, only for mappings\r\n #define TERM_FOCUS 0x2000 // Terminal focus mode\r\n #define CMDPREVIEW 0x4000 // Showing 'inccommand' command \"live\" preview.\r\n+#define INPUT 0x8000 // Getting user input\r\n \r\n #define MODE_MAX_LENGTH 4 // max mode length returned in mode()\r\n```\r\n\r\nReproduction\r\n\r\n```vim\r\nfun! Func(...)\r\nendfun\r\nset msgfunc=Func\r\n\r\nfun! OnVimEnter(...)\r\n call input(\"Multiline prompt\\nWhat is your name?: \")\r\nendfun\r\n\r\nautocmd VimEnter * call timer_start(0, function(\"OnVimEnter\"))\r\n```","createdAt":"2021-12-08T00:01:30Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"zeertzjq"},"authorAssociation":"MEMBER","body":"Did you `git add` an extra file?","createdAt":"2021-12-08T00:48:26Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"Thanks. Fixed.","createdAt":"2021-12-08T00:50:31Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"Hm.\r\n\r\n```\r\n [ RUN ] ui/ext_messages msg_show kind=confirm,confirm_sub,emsg,wmsg,quickfix: 10533.41 ms FAIL\r\n test/functional/ui/messages_spec.lua:80: test/helpers.lua:73: messages\r\n Expected objects to be the same.\r\n Passed in:\r\n (table: 0x7f2ad8885e70) { }\r\n Expected:\r\n (table: 0x7f2aea89f178) {\r\n *[1] = {\r\n [content] = {\r\n [1] = {\r\n [1] = '\r\n test\r\n [O]k: '\r\n [2] = 4 } }\r\n [kind] = 'confirm' }\r\n [2] = {\r\n [content] = {\r\n [1] = {\r\n [1] = '1' } }\r\n [kind] = 'echo' }\r\n [3] = {\r\n [content] = {\r\n [1] = {\r\n [1] = 'Press ENTER or type command to continue'\r\n [2] = 4 } }\r\n [kind] = 'return_prompt' } }\r\n ------------------------------------------------------------------------------\r\n```\r\n\r\n`message_spec.lua` must be fixed.","createdAt":"2021-12-08T01:16:53Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"```\r\n[ FAILED ] test/functional/ui/messages_spec.lua @ 197: ui/ext_messages :echoerr\r\ntest/functional/ui/messages_spec.lua:226: test/helpers.lua:73: messages\r\nExpected objects to be the same.\r\nPassed in:\r\n(table: 0x7fc11db2e620) {\r\n [1] = {\r\n [content] = {\r\n [1] = {\r\n [1] = 'bork'\r\n [2] = 2 } }\r\n [kind] = 'echoerr' }\r\n [2] = {\r\n [content] = {\r\n [1] = {\r\n [1] = 'fail'\r\n [2] = 2 } }\r\n [kind] = 'echoerr' } }\r\nExpected:\r\n(table: 0x7fc11db0dae8) {\r\n [1] = {\r\n [content] = {\r\n [1] = {\r\n [1] = 'bork'\r\n [2] = 2 } }\r\n [kind] = 'echoerr' }\r\n [2] = {\r\n [content] = {\r\n [1] = {\r\n [1] = 'fail'\r\n [2] = 2 } }\r\n [kind] = 'echoerr' }\r\n *[3] = {\r\n [content] = {\r\n [1] = {\r\n [1] = 'Press ENTER or type command to continue'\r\n [2] = 4 } }\r\n [kind] = 'return_prompt' } }\r\n------------------------------------------------------------------------------\r\n```\r\n\r\nAnother fail exists.","createdAt":"2021-12-08T01:24:01Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"```diff\r\ndiff --git a/src/nvim/message.c b/src/nvim/message.c\r\nindex 417753e87..de0170134 100644\r\n--- a/src/nvim/message.c\r\n+++ b/src/nvim/message.c\r\n@@ -3069,7 +3069,7 @@ int msg_end(void)\r\n * we have to redraw the window.\r\n * Do not do this if we are abandoning the file or editing the command line.\r\n */\r\n- if (msg_enable_ext()) {\r\n+ if (msg_enable_msgfunc()) {\r\n need_wait_return = false;\r\n } else if (!exiting && need_wait_return && !(State & CMDLINE)) {\r\n wait_return(false);\r\n```\r\n\r\nThe patch fixes the errors.","createdAt":"2021-12-08T01:27:42Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"Fixed.","createdAt":"2021-12-08T05:27:08Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]}],"commits":[{"authoredDate":"2021-11-20T12:26:12Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-05T05:21:03Z","messageBody":"","messageHeadline":"feat: add 'msgfunc' option","oid":"8ba06dab3d5b6e1359b7dce97c05142913e497c9"},{"authoredDate":"2021-11-21T02:24:48Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-05T05:21:03Z","messageBody":"","messageHeadline":"docs: add 'msgfunc'","oid":"937071cfd1ddfbd9ffee55f4f61dd8c426c042e6"},{"authoredDate":"2021-11-21T02:56:33Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-05T05:21:04Z","messageBody":"","messageHeadline":"docs: update","oid":"1ece9e1e57418e00c945d449a387f1263511fc8b"},{"authoredDate":"2021-11-21T02:56:44Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-05T05:21:04Z","messageBody":"","messageHeadline":"test: add 'msgfunc' tests","oid":"2e9681e98dfaca44cdc28006059694b4b0928b7e"},{"authoredDate":"2021-11-21T03:43:31Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-05T05:21:04Z","messageBody":"","messageHeadline":"fix: change method names","oid":"7fff28da46737ff4361e4269afe601dfa636adc2"},{"authoredDate":"2021-11-21T03:43:43Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-05T05:21:04Z","messageBody":"","messageHeadline":"fix: doc","oid":"d73a664650691c7358c395dd41dc1d564639efd5"},{"authoredDate":"2021-11-21T03:44:27Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo"},{"email":"zeertzjq@outlook.com","id":"MDQ6VXNlcjM1NzY4MTcx","login":"zeertzjq","name":"zeertzjq"}],"committedDate":"2021-12-05T05:21:04Z","messageBody":"Co-authored-by: zeertzjq <zeertzjq@outlook.com>","messageHeadline":"fix: src/nvim/message.c","oid":"af8acd93521532e75d3eabdc8b82ca6dcc4d7c5a"},{"authoredDate":"2021-11-21T03:44:34Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo"},{"email":"zeertzjq@outlook.com","id":"MDQ6VXNlcjM1NzY4MTcx","login":"zeertzjq","name":"zeertzjq"}],"committedDate":"2021-12-05T05:21:04Z","messageBody":"Co-authored-by: zeertzjq <zeertzjq@outlook.com>","messageHeadline":"fix: src/nvim/message.c","oid":"bb31c8e3f039837f8a4268113dbec73941707e1d"},{"authoredDate":"2021-11-21T03:44:42Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo"},{"email":"zeertzjq@outlook.com","id":"MDQ6VXNlcjM1NzY4MTcx","login":"zeertzjq","name":"zeertzjq"}],"committedDate":"2021-12-05T05:21:04Z","messageBody":"Co-authored-by: zeertzjq <zeertzjq@outlook.com>","messageHeadline":"fix: src/nvim/message.c","oid":"8caa8b14b6d86ad24bd7540c8d3aebd16fa4dc87"},{"authoredDate":"2021-11-21T04:01:02Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-05T05:21:04Z","messageBody":"","messageHeadline":"fix: free memory is needed after msgfunc call","oid":"68befec0350a42b8c606d6f644448aa2db1337b1"},{"authoredDate":"2021-11-22T00:25:37Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-05T05:21:04Z","messageBody":"","messageHeadline":"fix: test error","oid":"be537ecde48a99db63add9916df43658ad082d40"},{"authoredDate":"2021-11-22T00:45:25Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-05T05:21:04Z","messageBody":"","messageHeadline":"fix: should check no_wait_return and disable showmode","oid":"71ec70f75748ef6897403005fbeb51de5e8ccc6a"},{"authoredDate":"2021-11-22T05:24:31Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-05T05:21:04Z","messageBody":"","messageHeadline":"fix: documentation","oid":"8a75114ebd8fff2738e3fece79918dc6547f435b"},{"authoredDate":"2021-11-22T05:24:57Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-05T05:21:04Z","messageBody":"","messageHeadline":"fix: check confirm mode","oid":"65b5a4993092f385da6485cc3c393a77d7c21141"},{"authoredDate":"2021-11-22T05:25:14Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-05T05:21:04Z","messageBody":"","messageHeadline":"fix: for UI test warnings","oid":"dbd621a411247a5464d30ad51e3c839959aed4c3"},{"authoredDate":"2021-11-23T04:42:05Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-05T05:21:04Z","messageBody":"","messageHeadline":"feat: support hit-enter prompt","oid":"6249d19108be3d50a1458e5b32a1009934bba579"},{"authoredDate":"2021-11-24T00:48:28Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-05T05:21:04Z","messageBody":"","messageHeadline":"fix: fix crash problem","oid":"130f1559b667f4bae3618da5d1e205c7c4c4fef0"},{"authoredDate":"2021-11-25T10:41:13Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-05T05:21:04Z","messageBody":"","messageHeadline":"fix: use multiqueue from @erw7 patch","oid":"121c552a08219ac583167256acf9d22ff5b595d9"},{"authoredDate":"2021-11-27T03:25:36Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-05T05:21:04Z","messageBody":"","messageHeadline":"fix: use multiqueue from @erw7 patch","oid":"67a83384e0e935ec45142f47da326529160b310f"},{"authoredDate":"2021-12-05T01:23:56Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-05T05:21:04Z","messageBody":"","messageHeadline":"fix: fix for @resolritter reviews","oid":"66d49945a51511d303770699f56249e9d7939c40"},{"authoredDate":"2021-12-05T01:28:18Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-05T05:21:04Z","messageBody":"","messageHeadline":"docs: improve","oid":"ee7846f0c8e6ba4b5ae8ac46edca65c88557f92e"},{"authoredDate":"2021-12-05T08:27:43Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-05T08:27:43Z","messageBody":"","messageHeadline":"fix: fix for @resolritter reviews","oid":"a7ce11beafb3be39a8edeece817ece75b6ea57a7"},{"authoredDate":"2021-12-05T12:50:51Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo"},{"email":"zeertzjq@outlook.com","id":"MDQ6VXNlcjM1NzY4MTcx","login":"zeertzjq","name":"zeertzjq"}],"committedDate":"2021-12-05T12:50:51Z","messageBody":"Co-authored-by: zeertzjq <zeertzjq@outlook.com>","messageHeadline":"fix: by @zeertzjq suggestion","oid":"4cab76aef36c1c2678d76cb2261c7296b3c46762"},{"authoredDate":"2021-12-05T13:35:52Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-05T13:35:52Z","messageBody":"","messageHeadline":"fix: msgfunc is disabled if msg_hist_off","oid":"57ba84fd5735c4416ba0148109e420b5595a9ef5"},{"authoredDate":"2021-12-06T13:55:12Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-06T13:55:12Z","messageBody":"","messageHeadline":"fix: msgfunc disables in startup","oid":"f5dc1806b0d360784cb5b55ac5031279f7d33228"},{"authoredDate":"2021-12-06T13:57:34Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-06T13:57:34Z","messageBody":"","messageHeadline":"fix: add \"search\" ext kind","oid":"8c8a02d71084aee2c1c7020dc24f584d37bade8e"},{"authoredDate":"2021-12-06T14:00:53Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-06T14:00:53Z","messageBody":"","messageHeadline":"docs: fix","oid":"478db33857e769f3525f93ecfc9d4e40643d485a"},{"authoredDate":"2021-12-07T00:12:37Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-07T00:12:37Z","messageBody":"","messageHeadline":"fix: check emsg()","oid":"394481377140d3173337a9bddb207d40713f63cc"},{"authoredDate":"2021-12-07T11:06:28Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-07T11:12:13Z","messageBody":"","messageHeadline":"fix: import @resolritter patch","oid":"fdb2445c54c214591c3b291acb3fa3b9e258bfcd"},{"authoredDate":"2021-12-08T00:44:30Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-08T00:44:30Z","messageBody":"Improve message sent behavior","messageHeadline":"fix: import @resolritter patch","oid":"8b70e5c99e9e9b30dfa2eff1c5e8ad42c9d02139"},{"authoredDate":"2021-12-08T00:47:30Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-08T00:47:30Z","messageBody":"","messageHeadline":"fix: import @resolritter patch","oid":"c1f01e67d62c7fe662cd618f873d16ae966167c3"},{"authoredDate":"2021-12-08T00:49:02Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-08T00:49:02Z","messageBody":"","messageHeadline":"fix: lint","oid":"5136c9eaaa474fb009bbbbb928bbb0f376684967"},{"authoredDate":"2021-12-08T00:49:59Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-08T00:49:59Z","messageBody":"","messageHeadline":"fix: remove unnecessary file","oid":"bcea16808f35dbdfc9c6b5c0b5d07aa09e70299d"},{"authoredDate":"2021-12-08T00:52:10Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-08T00:52:10Z","messageBody":"","messageHeadline":"fix: add p_msgfunc check","oid":"b7bb5a6b0295a2919cf2702dde57eca5b31b77a1"},{"authoredDate":"2021-12-08T00:57:36Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-08T00:57:36Z","messageBody":"","messageHeadline":"fix: lint","oid":"88bfeb4fde2157d944136babd32999d5bfee95d2"},{"authoredDate":"2021-12-08T05:26:37Z","authors":[{"email":"Shougo.Matsu@gmail.com","id":"MDQ6VXNlcjQxNDk1","login":"Shougo","name":"Shougo Matsushita"}],"committedDate":"2021-12-08T05:26:37Z","messageBody":"","messageHeadline":"fix: functional test errors","oid":"80ae39be9cec8210668a329a4781eb11272bf8ed"}],"createdAt":"2021-12-01T05:57:06Z","deletions":45,"files":[{"path":"runtime/doc/message.txt","additions":31,"deletions":0},{"path":"runtime/doc/options.txt","additions":16,"deletions":0},{"path":"runtime/doc/ui.txt","additions":1,"deletions":0},{"path":"src/nvim/eval.c","additions":16,"deletions":10},{"path":"src/nvim/message.c","additions":138,"deletions":27},{"path":"src/nvim/normal.c","additions":2,"deletions":2},{"path":"src/nvim/ops.c","additions":1,"deletions":1},{"path":"src/nvim/option_defs.h","additions":1,"deletions":0},{"path":"src/nvim/options.lua","additions":9,"deletions":0},{"path":"src/nvim/screen.c","additions":2,"deletions":1},{"path":"src/nvim/search.c","additions":3,"deletions":1},{"path":"src/nvim/spell.c","additions":6,"deletions":2},{"path":"src/nvim/syntax.c","additions":1,"deletions":1},{"path":"src/nvim/vim.h","additions":1,"deletions":0},{"path":"test/functional/ui/messages_spec.lua","additions":46,"deletions":0}],"headRefName":"msgfunc","headRepository":{"id":"MDEwOlJlcG9zaXRvcnkyMzgzMjk4MA==","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjQxNDk1","name":"Shougo","login":"Shougo"},"id":"PR_kwDOAPphoM4vOjfW","isCrossRepository":true,"isDraft":false,"labels":[{"id":"MDU6TGFiZWwxMTMwMjY5Nzk=","name":"ui","description":"","color":"c5def5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"BLOCKED","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16480,"potentialMergeCommit":{"oid":"33fd184e4a83910eecfcd32e387421b1db5926b5"},"projectCards":[],"reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":6}}],"reviewDecision":"","reviewRequests":[{"__typename":"User","login":"bfredl"}],"reviews":[{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"","submittedAt":"2021-12-03T18:22:43Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"","submittedAt":"2021-12-03T18:50:17Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"","submittedAt":"2021-12-03T19:43:42Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"zeertzjq"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-12-03T22:47:21Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"","submittedAt":"2021-12-04T03:03:19Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"","submittedAt":"2021-12-04T03:47:34Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"","submittedAt":"2021-12-04T07:51:54Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"","submittedAt":"2021-12-04T07:56:13Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-05T01:09:46Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-05T01:26:10Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-05T01:26:27Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-05T01:26:48Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"erw7"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-05T06:11:57Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"","submittedAt":"2021-12-05T07:26:11Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"","submittedAt":"2021-12-05T07:32:12Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"","submittedAt":"2021-12-05T07:34:37Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-05T08:28:20Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-05T08:29:22Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"zeertzjq"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-12-05T09:01:28Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"","submittedAt":"2021-12-05T09:14:18Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"zeertzjq"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-12-05T09:16:53Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"","submittedAt":"2021-12-05T09:23:55Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-05T13:14:47Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-05T13:39:42Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"","submittedAt":"2021-12-05T22:20:17Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-05T23:15:52Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-05T23:26:55Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-05T23:29:53Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-05T23:37:41Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"","submittedAt":"2021-12-05T23:50:10Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-06T13:58:24Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"","submittedAt":"2021-12-07T01:10:25Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-07T01:39:06Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"","submittedAt":"2021-12-07T02:30:04Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"","submittedAt":"2021-12-07T02:49:56Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-07T02:53:53Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"","submittedAt":"2021-12-07T03:43:26Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"resolritter"},"authorAssociation":"NONE","body":"","submittedAt":"2021-12-08T01:20:42Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"Shougo"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-12-08T01:25:27Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"}],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"ubuntu-20.04 asan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-08T05:27:10Z","completedAt":"2021-12-08T05:51:15Z","detailsUrl":"https://github.com/neovim/neovim/runs/4453253078?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-08T05:27:10Z","completedAt":"2021-12-08T05:27:36Z","detailsUrl":"https://github.com/neovim/neovim/runs/4453252955?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 lint (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-08T05:27:12Z","completedAt":"2021-12-08T05:29:47Z","detailsUrl":"https://github.com/neovim/neovim/runs/4453253099?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 tsan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-08T05:27:10Z","completedAt":"2021-12-08T05:36:09Z","detailsUrl":"https://github.com/neovim/neovim/runs/4453253121?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-10.15 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-08T05:27:15Z","completedAt":"2021-12-08T05:45:16Z","detailsUrl":"https://github.com/neovim/neovim/runs/4453253154?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-11.0 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-08T05:27:15Z","completedAt":"2021-12-08T05:50:39Z","detailsUrl":"https://github.com/neovim/neovim/runs/4453253178?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MINGW_64-gcov)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-08T05:27:08Z","completedAt":"2021-12-08T05:39:59Z","detailsUrl":"https://github.com/neovim/neovim/runs/4453253008?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MSVC_64)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-08T05:27:08Z","completedAt":"2021-12-08T05:47:49Z","detailsUrl":"https://github.com/neovim/neovim/runs/4453253037?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-08T05:27:11Z","completedAt":"2021-12-08T05:36:51Z","detailsUrl":"https://github.com/neovim/neovim/runs/4453252929?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-08T05:27:00Z","completedAt":"2021-12-08T05:30:31Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-f7b9bf6bd209912930c93ee990385c4e18964a5c"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-08T05:27:00Z","completedAt":"2021-12-08T05:27:46Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-f7b9bf6bd209912930c93ee990385c4e18964a5c"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/644589"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/644590"}],"title":"[RFC] feat: msgfunc","updatedAt":"2021-12-08T05:27:08Z","url":"https://github.com/neovim/neovim/pull/16480"},{"additions":3,"assignees":[],"author":{"login":"zeertzjq"},"baseRefName":"master","body":"This only changes comments, as these two functions are currently undocumented in `runtime/doc/lua.txt`.\r\n\r\nOr maybe they should be changed to treat composing characters as a part of base characters instead?\r\n\r\nRelated: <https://github.com/vim/vim/issues/9222>","changedFiles":1,"closed":false,"closedAt":null,"comments":[],"commits":[{"authoredDate":"2021-12-01T00:33:04Z","authors":[{"email":"zeertzjq@outlook.com","id":"MDQ6VXNlcjM1NzY4MTcx","login":"zeertzjq","name":"zeertzjq"}],"committedDate":"2021-12-01T01:05:18Z","messageBody":"","messageHeadline":"docs(lua): mention how vim.str_utf_{start,end} treat composing chars","oid":"243223d0e00edabc3c7ba22f3922136e19bed52c"}],"createdAt":"2021-12-01T00:43:13Z","deletions":3,"files":[{"path":"src/nvim/lua/stdlib.c","additions":3,"deletions":3}],"headRefName":"docs-str-utf-composing","headRepository":{"id":"R_kgDOGHsHCw","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjM1NzY4MTcx","login":"zeertzjq"},"id":"PR_kwDOAPphoM4vN-eB","isCrossRepository":true,"isDraft":false,"labels":[{"id":"MDU6TGFiZWw4NDc0NDAzOA==","name":"documentation","description":"","color":"c5def5"},{"id":"MDU6TGFiZWwyMTI2ODA5ODM=","name":"status:needs-discussion","description":"For PRs that propose significant changes to some part of the architecture or API","color":"FBCA04"},{"id":"MDU6TGFiZWw1NzMyMjI2OTM=","name":"lua","description":"","color":"c5def5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"BLOCKED","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16475,"potentialMergeCommit":{"oid":"5775704a338614a9d934a9c0a1f09ee404c07ce9"},"projectCards":[],"reactionGroups":[],"reviewDecision":"","reviewRequests":[],"reviews":[],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"ubuntu-20.04 asan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-01T01:08:11Z","completedAt":"2021-12-01T01:29:59Z","detailsUrl":"https://github.com/neovim/neovim/runs/4375512016?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-01T01:08:12Z","completedAt":"2021-12-01T01:08:33Z","detailsUrl":"https://github.com/neovim/neovim/runs/4375511791?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 lint (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-01T01:08:12Z","completedAt":"2021-12-01T01:11:13Z","detailsUrl":"https://github.com/neovim/neovim/runs/4375512089?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 tsan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-01T01:08:12Z","completedAt":"2021-12-01T01:16:41Z","detailsUrl":"https://github.com/neovim/neovim/runs/4375512130?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-10.15 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-01T01:08:15Z","completedAt":"2021-12-01T01:40:25Z","detailsUrl":"https://github.com/neovim/neovim/runs/4375512165?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-11.0 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-01T01:08:15Z","completedAt":"2021-12-01T01:26:28Z","detailsUrl":"https://github.com/neovim/neovim/runs/4375512202?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MINGW_64-gcov)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-01T01:08:12Z","completedAt":"2021-12-01T01:25:57Z","detailsUrl":"https://github.com/neovim/neovim/runs/4375511903?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MSVC_64)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-01T01:08:12Z","completedAt":"2021-12-01T01:32:38Z","detailsUrl":"https://github.com/neovim/neovim/runs/4375511951?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-01T01:08:09Z","completedAt":"2021-12-01T01:19:29Z","detailsUrl":"https://github.com/neovim/neovim/runs/4375511793?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-01T01:08:02Z","completedAt":"2021-12-01T01:08:40Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-85e274e50f04f1fc084868093880dc7c5e796424"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-01T01:08:02Z","completedAt":"2021-12-01T01:30:14Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-85e274e50f04f1fc084868093880dc7c5e796424"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/639663"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/639664"}],"title":"docs(lua): mention how vim.str_utf_{start,end} treat composing chars","updatedAt":"2021-12-05T02:22:00Z","url":"https://github.com/neovim/neovim/pull/16475"},{"additions":95,"assignees":[],"author":{"login":"github-actions"},"baseRefName":"master","body":"","changedFiles":3,"closed":false,"closedAt":null,"comments":[],"commits":[{"authoredDate":"2021-12-10T14:19:17Z","authors":[{"email":"marvim@users.noreply.github.com","id":"MDQ6VXNlcjc5ODA4NjA=","login":"marvim","name":"marvim"}],"committedDate":"2021-12-10T14:19:17Z","messageBody":"","messageHeadline":"docs: regenerate","oid":"ab7583c9a9450dea5c0653d9caa203a95936dbfb"}],"createdAt":"2021-11-30T08:29:47Z","deletions":26,"files":[{"path":"runtime/doc/api.txt","additions":34,"deletions":2},{"path":"runtime/doc/lsp.txt","additions":58,"deletions":19},{"path":"runtime/doc/treesitter.txt","additions":3,"deletions":5}],"headRefName":"marvim/api-doc-update/master","headRepository":{"id":"MDEwOlJlcG9zaXRvcnkxNjQwODk5Mg==","name":"neovim"},"headRepositoryOwner":{"id":"MDEyOk9yZ2FuaXphdGlvbjY0NzE0ODU=","login":"neovim"},"id":"PR_kwDOAPphoM4vLFkm","isCrossRepository":false,"isDraft":false,"labels":[],"maintainerCanModify":false,"mergeCommit":null,"mergeStateStatus":"BLOCKED","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16468,"potentialMergeCommit":{"oid":"c1c6b25088e8760d6f5ca094528cc93742c56fc6"},"projectCards":[],"reactionGroups":[],"reviewDecision":"","reviewRequests":[],"reviews":[],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T14:19:20Z","completedAt":"2021-12-10T14:20:53Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-d2907d61fc2039544cf1ce2ac6825516db9e8039"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T14:19:20Z","completedAt":"2021-12-10T14:20:53Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-d2907d61fc2039544cf1ce2ac6825516db9e8039"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/646415"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/646416"}],"title":"docs: regenerate","updatedAt":"2021-12-10T14:19:19Z","url":"https://github.com/neovim/neovim/pull/16468"},{"additions":5,"assignees":[],"author":{"login":"zchee"},"baseRefName":"master","body":"Support `once` on `s:GetAutocmdPrefix`.\r\n\r\nI want to use the `++once` autocmd feature to remote plugin. (I'm neovim/go-client maintainer)\r\n\r\nRegarding the test, it seems autocmd has not been tested yet on `test/functional/provider/define_spec.lua`, so I don't know how to write it.","changedFiles":1,"closed":false,"closedAt":null,"comments":[{"author":{"login":"zchee"},"authorAssociation":"MEMBER","body":"failed tsan...?","createdAt":"2021-11-28T11:33:50Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"Looks like a flaky test; I've triggered a re-run.","createdAt":"2021-11-28T11:37:38Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":1}}]},{"author":{"login":"zchee"},"authorAssociation":"MEMBER","body":"@clason ping for failed mingw","createdAt":"2021-12-01T11:33:49Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"That CI is known to be flaky, so I'm not worried about that. I'll ask @bfredl for opinions, then it's good to merge.","createdAt":"2021-12-01T11:37:40Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"HEART","users":{"totalCount":1}}]},{"author":{"login":"zchee"},"authorAssociation":"MEMBER","body":"@gpanders PTAL.","createdAt":"2021-12-10T12:55:00Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]}],"commits":[{"authoredDate":"2021-11-28T02:20:44Z","authors":[{"email":"zchee.io@gmail.com","id":"MDQ6VXNlcjYzNjYyNzA=","login":"zchee","name":"Koichi Shiraishi"}],"committedDate":"2021-11-28T02:27:04Z","messageBody":"Signed-off-by: Koichi Shiraishi <zchee.io@gmail.com>","messageHeadline":"feat(runtime): support once on s:GetAutocmdPrefix","oid":"159f9a61ae600fab8a4a82d32df9f8622eaddc69"},{"authoredDate":"2021-12-10T12:53:12Z","authors":[{"email":"zchee.io@gmail.com","id":"MDQ6VXNlcjYzNjYyNzA=","login":"zchee","name":"Koichi Shiraishi"}],"committedDate":"2021-12-10T12:53:12Z","messageBody":"Signed-off-by: Koichi Shiraishi <zchee.io@gmail.com>","messageHeadline":"feat(runtime): add '++' to nested and once","oid":"d6fe4c28269872ad36e842a9c3199225e219f161"}],"createdAt":"2021-11-28T02:26:04Z","deletions":1,"files":[{"path":"runtime/autoload/remote/define.vim","additions":5,"deletions":1}],"headRefName":"remote-autocmd-once","headRepository":{"id":"MDEwOlJlcG9zaXRvcnk4Mjg3MTU2OQ==","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjYzNjYyNzA=","name":"Koichi Shiraishi","login":"zchee"},"id":"PR_kwDOAPphoM4vFro3","isCrossRepository":true,"isDraft":false,"labels":[{"id":"MDU6TGFiZWwxMjAyNTEzNzA=","name":"runtime","description":"funtime","color":"c5def5"},{"id":"MDU6TGFiZWwyMjY5MTM3MTMx","name":"remote","description":"Related to Nvim remote capabilities","color":"c5def5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"BLOCKED","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16457,"potentialMergeCommit":{"oid":"f85c82b08e97d84a271173cd2f9dab2e6ac7c964"},"projectCards":[],"reactionGroups":[],"reviewDecision":"APPROVED","reviewRequests":[{"__typename":"User","login":"bfredl"}],"reviews":[{"author":{"login":"gpanders"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-12-08T15:39:28Z","includesCreatedEdit":false,"reactionGroups":[],"state":"CHANGES_REQUESTED"},{"author":{"login":"zchee"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-12-08T17:56:32Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"zchee"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-12-08T17:58:02Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"gpanders"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-12-10T13:59:01Z","includesCreatedEdit":false,"reactionGroups":[],"state":"APPROVED"}],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"ubuntu-20.04 asan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T12:54:16Z","completedAt":"2021-12-10T13:15:21Z","detailsUrl":"https://github.com/neovim/neovim/runs/4483650127?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T12:54:18Z","completedAt":"2021-12-10T12:54:39Z","detailsUrl":"https://github.com/neovim/neovim/runs/4483649890?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 lint (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T12:54:17Z","completedAt":"2021-12-10T12:57:44Z","detailsUrl":"https://github.com/neovim/neovim/runs/4483650173?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 tsan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T12:54:18Z","completedAt":"2021-12-10T13:04:38Z","detailsUrl":"https://github.com/neovim/neovim/runs/4483650216?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-10.15 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T12:54:20Z","completedAt":"2021-12-10T13:10:00Z","detailsUrl":"https://github.com/neovim/neovim/runs/4483650263?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-11.0 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T12:54:22Z","completedAt":"2021-12-10T13:12:12Z","detailsUrl":"https://github.com/neovim/neovim/runs/4483650324?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MINGW_64-gcov)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T12:54:15Z","completedAt":"2021-12-10T13:20:19Z","detailsUrl":"https://github.com/neovim/neovim/runs/4483650008?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MSVC_64)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T12:54:16Z","completedAt":"2021-12-10T13:15:37Z","detailsUrl":"https://github.com/neovim/neovim/runs/4483650063?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-10T12:54:16Z","completedAt":"2021-12-10T13:05:37Z","detailsUrl":"https://github.com/neovim/neovim/runs/4483649911?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T12:54:06Z","completedAt":"2021-12-10T12:55:01Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-3cbd6b61f78f8097aae106e935dc19b44d26d251"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-10T12:54:06Z","completedAt":"2021-12-10T12:55:01Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-3cbd6b61f78f8097aae106e935dc19b44d26d251"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/646347"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/646348"}],"title":"runtime: support once on s:GetAutocmdPrefix","updatedAt":"2021-12-10T13:59:01Z","url":"https://github.com/neovim/neovim/pull/16457"},{"additions":1,"assignees":[],"author":{"login":"andrey-mishchenko"},"baseRefName":"master","body":"Resolves GitHub issue #14610.\r\n\r\nCorresponding Vim change: https://github.com/vim/vim/commit/ee8188fc7#diff-044c1fb49b65ed4f32c8f526333ceba6e2aa59b618e0b18b1b97c87975636a9aR4029\r\n\r\nCurrent corresponding Vim code: https://github.com/vim/vim/blob/3d14c0f2b964195d08b34bb43f89ec5f99255194/src/quickfix.c#L4146\r\n\r\nThe corresponding Vim patch had been merged, but was reverted in https://github.com/neovim/neovim/commit/dff3a0d4495df7de085d442fd0ad15b5a8b9355d to fix https://github.com/neovim/neovim/issues/13104.\r\n\r\nIncidentally, it looks like Vim patches that get merged and later reverted don't show up in `scripts/vim-patch.sh -l`.","changedFiles":1,"closed":false,"closedAt":null,"comments":[{"author":{"login":"janlazo"},"authorAssociation":"CONTRIBUTOR","body":"I won't merge this without tests because `test_quickfix.vim` tests that test this new behavior are disabled to prevent a crash in the CI.","createdAt":"2021-12-01T02:29:25Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]}],"commits":[{"authoredDate":"2021-11-27T18:08:57Z","authors":[{"email":"mishchea@gmail.com","id":"MDQ6VXNlcjUzMDgwMjQ=","login":"andrey-mishchenko","name":"Andrey Mishchenko"}],"committedDate":"2021-11-27T18:08:57Z","messageBody":"Resolves GitHub issue #14610.\n\nCorresponding Vim change: https://github.com/vim/vim/commit/ee8188fc7#diff-044c1fb49b65ed4f32c8f526333ceba6e2aa59b618e0b18b1b97c87975636a9aR4029\n\nCurrent corresponding Vim code: https://github.com/vim/vim/blob/3d14c0f2b964195d08b34bb43f89ec5f99255194/src/quickfix.c#L4146","messageHeadline":"Set bufhidden=hide for quickfix window","oid":"4d1d99d9722364ad1ba50ded65d9f3ea29d7844c"}],"createdAt":"2021-11-27T19:16:42Z","deletions":1,"files":[{"path":"src/nvim/quickfix.c","additions":1,"deletions":1}],"headRefName":"master","headRepository":{"id":"R_kgDOGcf4LA","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjUzMDgwMjQ=","name":"Andrey Mishchenko","login":"andrey-mishchenko"},"id":"PR_kwDOAPphoM4vFilJ","isCrossRepository":true,"isDraft":false,"labels":[{"id":"MDU6TGFiZWwyNDgyMjk0Mzk=","name":"status:needs-response","description":"issue or PR needs further information from author","color":"FBCA04"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"BLOCKED","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16454,"potentialMergeCommit":{"oid":"9475ea100d4d615137f49dd172d391675dcd9518"},"projectCards":[],"reactionGroups":[],"reviewDecision":"","reviewRequests":[{"__typename":"User","login":"janlazo"}],"reviews":[],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-01T02:32:34Z","completedAt":"2021-12-01T02:32:57Z","detailsUrl":"https://github.com/neovim/neovim/runs/4376115537?check_suite_focus=true"},{"__typename":"CheckRun","name":"Backport Pull Request","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-11-27T22:56:36Z","completedAt":"2021-11-27T22:56:36Z","detailsUrl":"https://github.com/neovim/neovim/runs/4342736108?check_suite_focus=true"},{"__typename":"CheckRun","name":"Backport Pull Request","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-03T23:38:16Z","completedAt":"2021-12-03T23:38:16Z","detailsUrl":"https://github.com/neovim/neovim/runs/4414216140?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 asan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-01T02:29:41Z","completedAt":"2021-12-01T02:52:59Z","detailsUrl":"https://github.com/neovim/neovim/runs/4376114287?check_suite_focus=true"},{"__typename":"CheckRun","name":"triage","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-11-27T19:16:50Z","completedAt":"2021-11-27T19:16:54Z","detailsUrl":"https://github.com/neovim/neovim/runs/4342360289?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 lint (cc=gcc)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-01T02:29:39Z","completedAt":"2021-12-01T02:32:43Z","detailsUrl":"https://github.com/neovim/neovim/runs/4376114321?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 tsan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-01T02:29:41Z","completedAt":"2021-12-01T02:41:37Z","detailsUrl":"https://github.com/neovim/neovim/runs/4376114356?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-10.15 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-01T02:29:46Z","completedAt":"2021-12-01T02:53:28Z","detailsUrl":"https://github.com/neovim/neovim/runs/4376114400?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-11.0 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-01T02:44:42Z","completedAt":"2021-12-01T03:08:19Z","detailsUrl":"https://github.com/neovim/neovim/runs/4376114439?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MINGW_64-gcov)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-01T02:29:39Z","completedAt":"2021-12-01T02:47:56Z","detailsUrl":"https://github.com/neovim/neovim/runs/4376114132?check_suite_focus=true"},{"__typename":"CheckRun","name":"type-scope","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-11-27T19:16:52Z","completedAt":"2021-11-27T19:16:56Z","detailsUrl":"https://github.com/neovim/neovim/runs/4342360308?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MSVC_64)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-01T02:32:01Z","completedAt":"2021-12-01T02:52:30Z","detailsUrl":"https://github.com/neovim/neovim/runs/4376114168?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-01T02:29:40Z","completedAt":"2021-12-01T02:41:06Z","detailsUrl":"https://github.com/neovim/neovim/runs/4376114237?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-11-27T19:16:43Z","completedAt":"2021-11-27T19:17:22Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-ac67a023e47ec1a4280b0d8ad9496b6e639b48c1"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-11-27T19:16:43Z","completedAt":"2021-11-27T19:39:35Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-ac67a023e47ec1a4280b0d8ad9496b6e639b48c1"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/637152"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/637153"}],"title":"Set bufhidden=hide for quickfix window","updatedAt":"2021-12-03T23:38:14Z","url":"https://github.com/neovim/neovim/pull/16454"},{"additions":44,"assignees":[],"author":{"login":"uga-rosa"},"baseRefName":"master","body":"This b is determined to be true by tbl_islist, but since it is not sequentially numbered, ipairs will not work.\r\n```lua\r\nlocal b = { 'foo', 'bar', 'baz' }\r\nb[1] = nil\r\nfor i, v in ipairs(b) do\r\n print('b:ipairs', i, v)\r\nend\r\n```","changedFiles":1,"closed":false,"closedAt":null,"comments":[{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"After a bit of thinking, I am in favor of this. While `tbl_islist` is not (and should not) be used as a guard for `ipairs` in our code, arguably that is how you would expect a list to behave.\r\n\r\nIn addition, this also distinguishes it from OpenResty's [`table.isarray`](https://github.com/openresty/luajit2#tableisarray), which does not care about holes (correctly in my view, since \"sparse arrays\" are a thing both in Lua and in practice).","createdAt":"2021-11-29T08:58:12Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"uga-rosa"},"authorAssociation":"NONE","body":"I think the fact that this throws an error is also a criterion for whether it is an \"array\" or not.\r\n```lua\r\nvim.g.hoge = { [2] = \"b\", [3] = \"c\" }\r\n```\r\n`E5100: Cannot convert given lua table: table should either have a sequence of positive integer keys or contain only string keys`","createdAt":"2021-11-29T09:32:17Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"`array` != `list`, and I think we should be consistent in the terminology (I _hate_ that the documentation for `tbl_islist` only talks about \"arrays\" -- why is it not called `isarray` then?)\r\n\r\n(The error message can be made even more explicit, of course, although it should be obvious what is meant here.)","createdAt":"2021-11-29T09:34:21Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"On a related note, please add a definition of list to the docstring (table indexed with sequential integers starting from 1).\r\n\r\nNote that in Lua, an [array is simply an integer-indexed table](https://www.lua.org/pil/11.1.html); in particular, it can start at _any_ index! ","createdAt":"2021-11-29T09:40:47Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"Continuing on from this (sorry for the comment spam), I think it would make sense to \r\n\r\n1. rename the current function to `tbl_isarray` (because it corresponds fully to the definition of \"array\" in the Lua documentation);\r\n2. add a _new_ `tbl_islist` that implements your changed check;\r\n3. give an explicit definition of \"array\" and \"list\" in each docstring to make the difference obvious.\r\n\r\n(Reminder to me: This is technically a breaking change either way, so don't forget to add this to the Following HEAD issue.)","createdAt":"2021-11-29T09:45:42Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":2}}]},{"author":{"login":"uga-rosa"},"authorAssociation":"NONE","body":"Should the tbl_islist in line 242 (in can_merge) be tbl_isarray?","createdAt":"2021-11-29T09:59:37Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"> Should the tbl_islist in line 242 (in can_merge) be tbl_isarray?\r\n\r\nI'd say test it with an array that is not a list (starts from 2 or has holes), and if it works, change it to `tbl_isarray`.","createdAt":"2021-11-29T10:03:28Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"If we go down that route, we should also check the other occurrences of `tbl_islist` in the codebase (lsp, `_meta.lua`, and especially the tests).","createdAt":"2021-11-29T10:12:34Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"Documentation is auto-generated, don't (need to) change `lua.txt`. (But wait for the checks to finish before pushing again; this'll give us a first idea what tests need to be adapted.)","createdAt":"2021-11-29T10:25:11Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"zeertzjq"},"authorAssociation":"MEMBER","body":"This PR may need a better commit message. Maybe `feat(lua)!: add stricter vim.tbl_islist() and rename old one to vim.tbl_isarray()`.","createdAt":"2021-11-30T02:08:56Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":1}}]},{"author":{"login":"uga-rosa"},"authorAssociation":"NONE","body":"Is the first line of the commit message too long?","createdAt":"2021-12-01T04:44:19Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"neovim-discourse"},"authorAssociation":"NONE","body":"This pull request has been mentioned on **Neovim Discourse**. There might be relevant details there:\n\nhttps://neovim.discourse.group/t/confusion-between-array-and-list/1485/2\n","createdAt":"2021-12-09T12:59:07Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]}],"commits":[{"authoredDate":"2021-11-25T16:07:00Z","authors":[{"email":"uga6603@gmail.com","id":"MDQ6VXNlcjgyMjY3Njg0","login":"uga-rosa","name":"uga-rosa"}],"committedDate":"2021-12-09T10:09:24Z","messageBody":"rename old one to vim.tbl_isarray()\n\nBREAKING CHANGE: array in lua and list that can be passed to vim are different.","messageHeadline":"feat(lua)!: add stricter vim.tbl_islist() and rename old one","oid":"662d6d3e438c9a3ad4f40f42c994291f8fd80122"}],"createdAt":"2021-11-25T16:10:01Z","deletions":5,"files":[{"path":"runtime/lua/vim/shared.lua","additions":44,"deletions":5}],"headRefName":"fix-islist","headRepository":{"id":"R_kgDOGbYmzw","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjgyMjY3Njg0","login":"uga-rosa"},"id":"PR_kwDOAPphoM4vBtTN","isCrossRepository":true,"isDraft":false,"labels":[{"id":"MDU6TGFiZWwxMDM4MTk2NzE=","name":"api","description":"related to Neovim API (C, Vim script, or Lua)","color":"c5def5"},{"id":"MDU6TGFiZWwyMTI2ODA5ODM=","name":"status:needs-discussion","description":"For PRs that propose significant changes to some part of the architecture or API","color":"FBCA04"},{"id":"MDU6TGFiZWw1NzMyMjI2OTM=","name":"lua","description":"","color":"c5def5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"BLOCKED","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":{"number":28,"title":"0.7","description":"","dueOn":null},"number":16440,"potentialMergeCommit":{"oid":"92eac910421bb21f2647e57d96275c9f565bb51e"},"projectCards":[],"reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":4}}],"reviewDecision":"","reviewRequests":[],"reviews":[{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-11-29T09:46:33Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-11-29T10:10:46Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-11-29T10:11:30Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"}],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-09T10:14:54Z","completedAt":"2021-12-09T10:15:36Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-413872b34b1d249b2221621657ddc26ff6318744"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-09T10:14:54Z","completedAt":"2021-12-09T10:15:36Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-413872b34b1d249b2221621657ddc26ff6318744"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/645581"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/645582"}],"title":"feat(lua)!: add stricter vim.tbl_islist() and rename old one to vim.tbl_isarray()","updatedAt":"2021-12-09T12:59:07Z","url":"https://github.com/neovim/neovim/pull/16440"},{"additions":7,"assignees":[],"author":{"login":"mjlbach"},"baseRefName":"master","body":"Diagnostics are not sorted by severity by default. If there is a single\r\ndiagnostic position, conventionally the first diagnostic is the most\r\nsevere. Default to showing the first diagnostic instead of the last.\r\n\r\ncc @ii14 ","changedFiles":2,"closed":false,"closedAt":null,"comments":[{"author":{"login":"mjlbach"},"authorAssociation":"MEMBER","body":"Need to fix something.","createdAt":"2021-11-25T01:56:31Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"clason"},"authorAssociation":"MEMBER","body":"With that change (which is good!), I'd suggest just showing dots for _all_ diagnostics -- even if there is one (in which case the prefix serves as an additional separator from the actual buffer text).\r\n\r\nJust to make sure: does this also apply to signs? Or are those already sorted correctly?","createdAt":"2021-11-29T09:32:32Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]}],"commits":[{"authoredDate":"2021-11-25T01:39:13Z","authors":[{"email":"m.j.lbach@gmail.com","id":"MDQ6VXNlcjEzMzE2MjYy","login":"mjlbach","name":"Michael Lingelbach"}],"committedDate":"2021-11-25T02:47:13Z","messageBody":"Diagnostics are not sorted by severity by default. If there is a single\ndiagnostic position, conventionally the first diagnostic is the most\nsevere. Default to showing the first diagnostic instead of the last.","messageHeadline":"feat(diagnostic): show first diagnostic per line in virtual text","oid":"199c3f8855b6bd90f39da869bdd58cfd55d92c97"}],"createdAt":"2021-11-25T01:40:50Z","deletions":7,"files":[{"path":"runtime/lua/vim/diagnostic.lua","additions":6,"deletions":6},{"path":"test/functional/lua/diagnostic_spec.lua","additions":1,"deletions":1}],"headRefName":"feat/diagnostic","headRepository":{"id":"MDEwOlJlcG9zaXRvcnkyMjQ5MjI3NjQ=","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjEzMzE2MjYy","name":"Michael Lingelbach","login":"mjlbach"},"id":"PR_kwDOAPphoM4u_nuf","isCrossRepository":true,"isDraft":true,"labels":[{"id":"MDU6TGFiZWw1NzMyMjI2OTM=","name":"lua","description":"","color":"c5def5"},{"id":"MDU6TGFiZWwzMzYxNjQ1MTA1","name":"diagnostic","description":"","color":"C5DEF5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"DRAFT","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":{"number":28,"title":"0.7","description":"","dueOn":null},"number":16432,"potentialMergeCommit":{"oid":"3c12a0ba2661882c44ee8b1c00a89088a81466cb"},"projectCards":[],"reactionGroups":[{"content":"THUMBS_UP","users":{"totalCount":3}}],"reviewDecision":"","reviewRequests":[],"reviews":[{"author":{"login":"gpanders"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-11-30T03:42:18Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"mjlbach"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-11-30T03:47:40Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"gpanders"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-11-30T03:52:41Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"mjlbach"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-11-30T03:54:56Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"}],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"${{ matrix.runner }} ${{ matrix.flavor }} (cc=${{ matrix.cc }})","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-11-25T02:47:28Z","completedAt":"2021-11-25T02:47:28Z","detailsUrl":"https://github.com/neovim/neovim/runs/4319390788?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-11-25T02:47:27Z","completedAt":"2021-11-25T02:47:27Z","detailsUrl":"https://github.com/neovim/neovim/runs/4319390715?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (${{ matrix.config }})","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-11-25T02:47:27Z","completedAt":"2021-11-25T02:47:27Z","detailsUrl":"https://github.com/neovim/neovim/runs/4319390753?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-11-25T02:47:33Z","completedAt":"2021-11-25T02:57:29Z","detailsUrl":"https://github.com/neovim/neovim/runs/4319390699?check_suite_focus=true"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"FAILURE","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/635041"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"FAILURE","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/635042"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-11-25T02:47:24Z","completedAt":"2021-11-25T02:50:53Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-99c564e2508f5b4e74f2b1f09cd02ad70262ac48"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-11-25T02:47:24Z","completedAt":"2021-11-25T02:50:53Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-99c564e2508f5b4e74f2b1f09cd02ad70262ac48"}],"title":"feat(diagnostic): show first diagnostic per line in virtual text","updatedAt":"2021-11-30T20:46:04Z","url":"https://github.com/neovim/neovim/pull/16432"},{"additions":75,"assignees":[],"author":{"login":"zeertzjq"},"baseRefName":"master","body":"Fix #16234","changedFiles":4,"closed":false,"closedAt":null,"comments":[{"author":{"login":"zeertzjq"},"authorAssociation":"MEMBER","body":"All three tests fail if the changes are reverted:\r\n```\r\n[ FAILED ] 1 test, listed below:\r\n[ FAILED ] test/functional/terminal/buffer_spec.lua @ 324: terminal buffer whose output has trailing space cursor can be placed on trailing space in Normal mode\r\ntest/functional/terminal/buffer_spec.lua:326: Row 1 did not match.\r\nExpected:\r\n |*interact $^ |\r\n | |\r\n | |\r\n |:terminal |\r\nActual:\r\n |*interact ^$ |\r\n | |\r\n | |\r\n |:terminal |\r\n\r\nTo print the expect() call that would assert the current screen state, use\r\nscreen:snapshot_util(). In case of non-deterministic failures, use\r\nscreen:redraw_debug() to show all intermediate screen states. \r\n\r\nstack traceback:\r\n\ttest/functional/ui/screen.lua:595: in function '_wait'\r\n\ttest/functional/ui/screen.lua:362: in function 'expect'\r\n\ttest/functional/terminal/buffer_spec.lua:326: in function <test/functional/terminal/buffer_spec.lua:324>\r\n\r\n[ ERROR ] 2 errors, listed below:\r\n[ ERROR ] test/functional/terminal/buffer_spec.lua @ 320: terminal buffer whose output has trailing space nvim_get_current_line() includes trailing space\r\ntest/helpers.lua:73: Expected objects to be the same.\r\nPassed in:\r\n(string) 'interact $'\r\nExpected:\r\n(string) 'interact $ '\r\n\r\nstack traceback:\r\n\ttest/helpers.lua:73: in function 'eq'\r\n\ttest/functional/terminal/buffer_spec.lua:321: in function <test/functional/terminal/buffer_spec.lua:320>\r\n\r\n[ ERROR ] test/functional/terminal/buffer_spec.lua @ 334: terminal buffer whose output has trailing space nvim_win_get_cursor() includes trailing space in Terminal and Normal mode\r\ntest/helpers.lua:73: Expected objects to be the same.\r\nPassed in:\r\n(table: 0x7fe2524e6120) {\r\n [1] = 1\r\n *[2] = 9 }\r\nExpected:\r\n(table: 0x7fe252721350) {\r\n [1] = 1\r\n *[2] = 10 }\r\n\r\nstack traceback:\r\n\ttest/helpers.lua:73: in function 'eq'\r\n\ttest/functional/terminal/buffer_spec.lua:336: in function <test/functional/terminal/buffer_spec.lua:334>\r\n\r\n\r\n 1 FAILED TEST\r\n 2 ERRORS\r\n```","createdAt":"2021-11-24T13:02:54Z","includesCreatedEdit":true,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"hrsh7th"},"authorAssociation":"CONTRIBUTOR","body":"Thank you! I will try it in my environment.","createdAt":"2021-11-24T13:08:17Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"zeertzjq"},"authorAssociation":"MEMBER","body":"Seems not working on Windows...","createdAt":"2021-11-24T13:47:59Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"hrsh7th"},"authorAssociation":"CONTRIBUTOR","body":"I'm sorry I can't contribute because I don't understand C language.\r\nI checked the operation, but it seems to behave strangely.\r\n\r\n_google translated_\r\n\r\nhttps://user-images.githubusercontent.com/629908/143252536-7d5301fd-3500-4cf6-8843-090cb8509a60.mp4\r\n\r\n\r\n\r\n","createdAt":"2021-11-24T14:02:02Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"zeertzjq"},"authorAssociation":"MEMBER","body":"Are you sure there isn't something else interfering?","createdAt":"2021-11-24T14:47:20Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"zeertzjq"},"authorAssociation":"MEMBER","body":"Changing `tty-test` to `shell-test` still fails, so this is not `tty-test`'s problem. It is indeed not working on Windows...","createdAt":"2021-11-24T14:54:44Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"hrsh7th"},"authorAssociation":"CONTRIBUTOR","body":"Yes. I don't meet other problems. (it seems to have the `<BS>` and `<Left>` both have the same problem.","createdAt":"2021-11-24T16:00:00Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"zeertzjq"},"authorAssociation":"MEMBER","body":"@hrsh7th Does it work properly if you disable `'signcolumn'`?","createdAt":"2021-11-24T23:13:05Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"zeertzjq"},"authorAssociation":"MEMBER","body":"`nvim_win_get_cursor()` indeed has problem when `'signcolumn'` or `'number'` is present, even in non-whitespace characters. I'll fix that for non-whitespace characters in #16418.","createdAt":"2021-11-24T23:30:42Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"hrsh7th"},"authorAssociation":"CONTRIBUTOR","body":"Oh. You are right. If I disabled the `signcolumn` and `number`, this problem does not occur.","createdAt":"2021-11-25T02:04:02Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]}],"commits":[{"authoredDate":"2021-12-09T03:48:36Z","authors":[{"email":"zeertzjq@outlook.com","id":"MDQ6VXNlcjM1NzY4MTcx","login":"zeertzjq","name":"zeertzjq"}],"committedDate":"2021-12-09T03:48:36Z","messageBody":"","messageHeadline":"fix(terminal): do not trim whitespace that is actually in the terminal","oid":"144f64f2b12b5a1c8a30000fb88ef8aa4f8aa03b"}],"createdAt":"2021-11-24T09:21:57Z","deletions":13,"files":[{"path":"src/nvim/terminal.c","additions":6,"deletions":11},{"path":"test/functional/api/buffer_updates_spec.lua","additions":2,"deletions":1},{"path":"test/functional/core/startup_spec.lua","additions":3,"deletions":1},{"path":"test/functional/terminal/cursor_spec.lua","additions":64,"deletions":0}],"headRefName":"terminal-no-trim-whitespace","headRepository":{"id":"R_kgDOGHsHCw","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjM1NzY4MTcx","login":"zeertzjq"},"id":"PR_kwDOAPphoM4u8__h","isCrossRepository":true,"isDraft":true,"labels":[{"id":"MDU6TGFiZWwyMTI2OTY4MjI=","name":"terminal","description":"related to Neovim's built-in `:terminal`","color":"c5def5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"DRAFT","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16423,"potentialMergeCommit":{"oid":"28e211e6e3212988ec887393d8e703d24d0f1bc7"},"projectCards":[],"reactionGroups":[{"content":"ROCKET","users":{"totalCount":1}}],"reviewDecision":"","reviewRequests":[],"reviews":[],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"ubuntu-20.04 asan (cc=clang-12)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-09T03:50:10Z","completedAt":"2021-12-09T04:19:28Z","detailsUrl":"https://github.com/neovim/neovim/runs/4466103918?check_suite_focus=true"},{"__typename":"CheckRun","name":"${{ matrix.runner }} ${{ matrix.flavor }} (cc=${{ matrix.cc }})","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-09T03:48:49Z","completedAt":"2021-12-09T03:48:49Z","detailsUrl":"https://github.com/neovim/neovim/runs/4466097297?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-09T03:48:48Z","completedAt":"2021-12-09T03:48:48Z","detailsUrl":"https://github.com/neovim/neovim/runs/4466097234?check_suite_focus=true"},{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T03:50:08Z","completedAt":"2021-12-09T03:50:29Z","detailsUrl":"https://github.com/neovim/neovim/runs/4466103817?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 lint (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T03:50:08Z","completedAt":"2021-12-09T03:53:49Z","detailsUrl":"https://github.com/neovim/neovim/runs/4466103960?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 tsan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T03:50:07Z","completedAt":"2021-12-09T04:00:58Z","detailsUrl":"https://github.com/neovim/neovim/runs/4466103994?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-10.15 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T03:50:12Z","completedAt":"2021-12-09T04:14:23Z","detailsUrl":"https://github.com/neovim/neovim/runs/4466104031?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-11.0 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T03:50:13Z","completedAt":"2021-12-09T04:17:29Z","detailsUrl":"https://github.com/neovim/neovim/runs/4466104083?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MINGW_64-gcov)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-09T03:50:08Z","completedAt":"2021-12-09T04:05:26Z","detailsUrl":"https://github.com/neovim/neovim/runs/4466104131?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (${{ matrix.config }})","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-09T03:48:48Z","completedAt":"2021-12-09T03:48:48Z","detailsUrl":"https://github.com/neovim/neovim/runs/4466097235?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MSVC_64)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-12-09T03:50:08Z","completedAt":"2021-12-09T04:07:53Z","detailsUrl":"https://github.com/neovim/neovim/runs/4466104170?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T03:48:57Z","completedAt":"2021-12-09T04:00:23Z","detailsUrl":"https://github.com/neovim/neovim/runs/4466097327?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T03:50:08Z","completedAt":"2021-12-09T03:59:25Z","detailsUrl":"https://github.com/neovim/neovim/runs/4466103867?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-12-09T03:48:46Z","completedAt":"2021-12-09T03:50:08Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-3e4721288b890ab9fcf0cea250d7c35380648b73"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-12-09T03:48:46Z","completedAt":"2021-12-09T04:13:26Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-3e4721288b890ab9fcf0cea250d7c35380648b73"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/645387"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/645388"}],"title":"fix(terminal): do not trim whitespace that is actually in the terminal","updatedAt":"2021-12-09T04:08:17Z","url":"https://github.com/neovim/neovim/pull/16423"},{"additions":56,"assignees":[],"author":{"login":"uga-rosa"},"baseRefName":"master","body":"","changedFiles":1,"closed":false,"closedAt":null,"comments":[{"author":{"login":"uga-rosa"},"authorAssociation":"NONE","body":"What should I do with runtime/doc/lua.txt?","createdAt":"2021-11-24T07:59:07Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"uga-rosa"},"authorAssociation":"NONE","body":"I think being an array-like table is more than just saying that the keys are all numbers.","createdAt":"2021-11-24T14:29:04Z","includesCreatedEdit":false,"isMinimized":true,"minimizedReason":"off-topic","reactionGroups":[]},{"author":{"login":"zeertzjq"},"authorAssociation":"MEMBER","body":"It seems your second commit broke something:\r\n```\r\n[ ERROR ] 1 error, listed below:\r\n[ ERROR ] test/functional/lua/vim_spec.lua @ 556: lua stdlib vim.tbl_deep_extend\r\ntest/helpers.lua:73: Expected objects to be the same.\r\nPassed in:\r\n(boolean) false\r\nExpected:\r\n(boolean) true\r\n\r\nstack traceback:\r\n\ttest/helpers.lua:73: in function 'ok'\r\n\ttest/functional/lua/vim_spec.lua:637: in function <test/functional/lua/vim_spec.lua:556>\r\n\r\n\r\n 31 SKIPPED TESTS\r\n 1 ERROR\r\n```","createdAt":"2021-11-25T05:05:08Z","includesCreatedEdit":false,"isMinimized":true,"minimizedReason":"off-topic","reactionGroups":[]},{"author":{"login":"uga-rosa"},"authorAssociation":"NONE","body":"@zeertzjq This is the intended change, but can I rewrite test?\r\nThe reason is that the original test treats `{[2] = 3}` and `{[3] = 3}` as an array.\r\nI think an array in Lua is a table with only sequential integer keys starting from 1.","createdAt":"2021-11-25T06:46:03Z","includesCreatedEdit":true,"isMinimized":true,"minimizedReason":"off-topic","reactionGroups":[]},{"author":{"login":"zeertzjq"},"authorAssociation":"MEMBER","body":"Really? I don't think so.","createdAt":"2021-11-25T06:54:01Z","includesCreatedEdit":false,"isMinimized":true,"minimizedReason":"off-topic","reactionGroups":[]},{"author":{"login":"uga-rosa"},"authorAssociation":"NONE","body":"These are functions that expect an array-like table, so they will not work with such a fake array (sort will throw an error).\r\n```lua\r\nlocal list = {[2] = 2, [5] = 5, [10] = 10}\r\n\r\nfor i, v in ipairs(list) do\r\n print(i, v)\r\nend\r\n\r\nprint(\"#:\", #list)\r\n\r\ntable.sort(list)\r\n```","createdAt":"2021-11-25T07:05:09Z","includesCreatedEdit":false,"isMinimized":true,"minimizedReason":"off-topic","reactionGroups":[]},{"author":{"login":"zeertzjq"},"authorAssociation":"MEMBER","body":"But I think there can also be functions that allow `nil` in an array.","createdAt":"2021-11-25T07:11:29Z","includesCreatedEdit":false,"isMinimized":true,"minimizedReason":"off-topic","reactionGroups":[]},{"author":{"login":"uga-rosa"},"authorAssociation":"NONE","body":"I assume that array keys are supposed to be treated as array indexs. `table.remove`, which removes elements from an array, handles nil by packing the numbers so that nil is not in the middle.","createdAt":"2021-11-25T07:16:26Z","includesCreatedEdit":true,"isMinimized":true,"minimizedReason":"off-topic","reactionGroups":[]},{"author":{"login":"uga-rosa"},"authorAssociation":"NONE","body":"If you're worried about v:null, that's vim.NIL, not nil.","createdAt":"2021-11-25T14:24:44Z","includesCreatedEdit":false,"isMinimized":true,"minimizedReason":"off-topic","reactionGroups":[]},{"author":{"login":"uga-rosa"},"authorAssociation":"NONE","body":"I hope this snippet makes sense to you, ipairs doesn't work (body is never executed).\r\n```lua\r\nlocal b = { 'foo', 'bar', 'baz' }\r\nb[1] = nil\r\nfor i, v in ipairs(b) do\r\n print('b:ipairs', i, v)\r\nend\r\n```\r\nIt would be strange if ipairs does not pass even though it is checked in islist.","createdAt":"2021-11-25T15:07:23Z","includesCreatedEdit":true,"isMinimized":true,"minimizedReason":"off-topic","reactionGroups":[]},{"author":{"login":"muniter"},"authorAssociation":"MEMBER","body":"I'd be better to have the changes to list checking/handling in another PR and this one only for the emmylua annotations. ","createdAt":"2021-11-25T15:59:18Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"uga-rosa"},"authorAssociation":"NONE","body":"Yes, it is. I cut corners because it was just a small change. I'm sorry.","createdAt":"2021-11-25T16:11:13Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]},{"author":{"login":"muniter"},"authorAssociation":"MEMBER","body":"> Yes, it is. I cut corners because it was just a small change. I'm sorry.\r\n\r\nNo worries :) just makes it easier to understand and manage. ","createdAt":"2021-11-25T16:14:40Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[]}],"commits":[{"authoredDate":"2021-11-24T07:45:30Z","authors":[{"email":"uga6603@gmail.com","id":"MDQ6VXNlcjgyMjY3Njg0","login":"uga-rosa","name":"uga-rosa"}],"committedDate":"2021-11-27T13:21:42Z","messageBody":"","messageHeadline":"fix(shared): use valid EmmyLua annotations","oid":"82d0cb690adcae490ebf9d3a81b3578cbe85a3d6"},{"authoredDate":"2021-11-27T13:23:02Z","authors":[{"email":"82267684+uga-rosa@users.noreply.github.com","id":"MDQ6VXNlcjgyMjY3Njg0","login":"uga-rosa","name":"uga-rosa"}],"committedDate":"2021-11-27T13:23:02Z","messageBody":"","messageHeadline":"Merge branch 'master' into shared-annotations","oid":"2e325920f0938c14ac563861bab671d1ad0e9a50"}],"createdAt":"2021-11-24T07:47:05Z","deletions":50,"files":[{"path":"runtime/lua/vim/shared.lua","additions":56,"deletions":50}],"headRefName":"shared-annotations","headRepository":{"id":"R_kgDOGbYmzw","name":"neovim"},"headRepositoryOwner":{"id":"MDQ6VXNlcjgyMjY3Njg0","login":"uga-rosa"},"id":"PR_kwDOAPphoM4u8u-_","isCrossRepository":true,"isDraft":false,"labels":[{"id":"MDU6TGFiZWw4NDc0NDAzOA==","name":"documentation","description":"","color":"c5def5"},{"id":"MDU6TGFiZWwxNjUwOTY5MDU=","name":"code-standards","description":"related to code style and other project standards","color":"e6e6e6"},{"id":"MDU6TGFiZWw1NzMyMjI2OTM=","name":"lua","description":"","color":"c5def5"}],"maintainerCanModify":true,"mergeCommit":null,"mergeStateStatus":"BLOCKED","mergeable":"MERGEABLE","mergedAt":null,"mergedBy":null,"milestone":null,"number":16422,"potentialMergeCommit":{"oid":"3ebc947abc2016d6d8ffc817bf6fe85f82438fe1"},"projectCards":[],"reactionGroups":[],"reviewDecision":"","reviewRequests":[],"reviews":[{"author":{"login":"mjlbach"},"authorAssociation":"MEMBER","body":"","submittedAt":"2021-11-25T01:51:13Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"uga-rosa"},"authorAssociation":"NONE","body":"","submittedAt":"2021-11-25T04:54:06Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"uga-rosa"},"authorAssociation":"NONE","body":"","submittedAt":"2021-11-25T06:49:13Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"},{"author":{"login":"mfussenegger"},"authorAssociation":"CONTRIBUTOR","body":"","submittedAt":"2021-11-26T10:10:46Z","includesCreatedEdit":false,"reactionGroups":[],"state":"COMMENTED"}],"state":"OPEN","statusCheckRollup":[{"__typename":"CheckRun","name":"lint-commits","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-11-29T22:35:57Z","completedAt":"2021-11-29T22:36:19Z","detailsUrl":"https://github.com/neovim/neovim/runs/4360204551?check_suite_focus=true"},{"__typename":"CheckRun","name":"Backport Pull Request","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-11-29T10:39:02Z","completedAt":"2021-11-29T10:39:02Z","detailsUrl":"https://github.com/neovim/neovim/runs/4352302094?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 asan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-11-29T22:35:56Z","completedAt":"2021-11-29T22:54:55Z","detailsUrl":"https://github.com/neovim/neovim/runs/4360204721?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 lint (cc=gcc)","status":"COMPLETED","conclusion":"FAILURE","startedAt":"2021-11-29T22:35:59Z","completedAt":"2021-11-29T22:39:41Z","detailsUrl":"https://github.com/neovim/neovim/runs/4360204799?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 tsan (cc=clang-12)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-11-29T22:35:59Z","completedAt":"2021-11-29T22:47:46Z","detailsUrl":"https://github.com/neovim/neovim/runs/4360204848?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-10.15 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-11-29T22:36:01Z","completedAt":"2021-11-29T22:54:33Z","detailsUrl":"https://github.com/neovim/neovim/runs/4360204890?check_suite_focus=true"},{"__typename":"CheckRun","name":"macos-11.0 (cc=clang)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-11-29T22:36:05Z","completedAt":"2021-11-29T23:00:17Z","detailsUrl":"https://github.com/neovim/neovim/runs/4360204977?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MINGW_64-gcov)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-11-29T22:35:59Z","completedAt":"2021-11-29T22:56:17Z","detailsUrl":"https://github.com/neovim/neovim/runs/4360205048?check_suite_focus=true"},{"__typename":"CheckRun","name":"windows (MSVC_64)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-11-29T22:35:58Z","completedAt":"2021-11-29T22:58:48Z","detailsUrl":"https://github.com/neovim/neovim/runs/4360205089?check_suite_focus=true"},{"__typename":"CheckRun","name":"ubuntu-20.04 functionaltest-lua (cc=gcc)","status":"COMPLETED","conclusion":"SUCCESS","startedAt":"2021-11-29T22:35:58Z","completedAt":"2021-11-29T22:47:26Z","detailsUrl":"https://github.com/neovim/neovim/runs/4360204625?check_suite_focus=true"},{"__typename":"CheckRun","name":"LGTM analysis: C/C++","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-11-27T13:23:04Z","completedAt":"2021-11-27T13:23:42Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-92c485ef2f814d729795a39b5b46cadf8fe2fd31"},{"__typename":"CheckRun","name":"LGTM analysis: Python","status":"COMPLETED","conclusion":"NEUTRAL","startedAt":"2021-11-27T13:23:04Z","completedAt":"2021-11-27T13:23:42Z","detailsUrl":"https://lgtm.com/projects/g/neovim/neovim/rev/pr-92c485ef2f814d729795a39b5b46cadf8fe2fd31"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: freebsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/636861"},{"__typename":"StatusContext","name":"","context":"builds.sr.ht: openbsd.yml","state":"SUCCESS","status":"","conclusion":"","startedAt":"0001-01-01T00:00:00Z","completedAt":"0001-01-01T00:00:00Z","detailsUrl":"","targetUrl":"https://builds.sr.ht/~jmk/job/636862"}],"title":"fix(shared): use valid EmmyLua annotations","updatedAt":"2021-11-29T10:39:00Z","url":"https://github.com/neovim/neovim/pull/16422"}]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment