{"action":"created","issue":{"url":"https://api.github.com/repos/neovim/neovim/issues/5529","repository_url":"https://api.github.com/repos/neovim/neovim","labels_url":"https://api.github.com/repos/neovim/neovim/issues/5529/labels{/name}","comments_url":"https://api.github.com/repos/neovim/neovim/issues/5529/comments","events_url":"https://api.github.com/repos/neovim/neovim/issues/5529/events","html_url":"https://github.com/neovim/neovim/pull/5529","id":185033342,"number":5529,"title":"[WIP] Port partial patches from vim","user":{"login":"brcolow","id":6589866,"avatar_url":"https://avatars.githubusercontent.com/u/6589866?v=3","gravatar_id":"","url":"https://api.github.com/users/brcolow","html_url":"https://github.com/brcolow","followers_url":"https://api.github.com/users/brcolow/followers","following_url":"https://api.github.com/users/brcolow/following{/other_user}","gists_url":"https://api.github.com/users/brcolow/gists{/gist_id}","starred_url":"https://api.github.com/users/brcolow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brcolow/subscriptions","organizations_url":"https://api.github.com/users/brcolow/orgs","repos_url":"https://api.github.com/users/brcolow/repos","events_url":"https://api.github.com/users/brcolow/events{/privacy}","received_events_url":"https://api.github.com/users/brcolow/received_events","type":"User","site_admin":false},"labels":[{"id":147252669,"url":"https://api.github.com/repos/neovim/neovim/labels/WIP","name":"WIP","color":"e6e6e6","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2016-10-25T06:54:38Z","updated_at":"2016-11-05T09:45:57Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/neovim/neovim/pulls/5529","html_url":"https://github.com/neovim/neovim/pull/5529","diff_url":"https://github.com/neovim/neovim/pull/5529.diff","patch_url":"https://github.com/neovim/neovim/pull/5529.patch"},"body":"This PR ports all applicable patches from upstream vim dealing with partials. No need to review yet, I am still working on porting it.\r\n- [ ] Allow partials to be used by jobs.\r\n- [x] Allow partials to be used with timers.\r\n- [x] 7.4.1559\r\n- [x] 7.4.1563\r\n- [x] 7.4.1564\r\n- [x] 7.4.1577\r\n- [x] 7.4.1580\r\n- [x] 7.4.1581\r\n- [x] 7.4.1582\r\n- [x] 7.4.1585\r\n- [x] 7.4.1586\r\n- [x] 7.4.1589\r\n- [x] 7.4.1590\r\n- [x] 7.4.1605\r\n- [x] 7.4.1606\r\n- [x] 7.4.1607\r\n- [x] 7.4.1608\r\n- [x] 7.4.1638\r\n- [x] 7.4.1639\r\n- [ ] 7.4.1644 (Similar to 1608 but changes the implementation for how the partials are printed..but I don't understand why the implementation is moved from `tv2string` to `echo_string` )\r\n- [x] 7.4.1645\r\n- [x] 7.4.1656\r\n- [x] 7.4.1715\r\n- [x] 7.4.1719\r\n- [x] 7.4.1720 (Marked as N/A)\r\n- [x] 7.4.1731 (Marked as N/A, left note in vim_diff.txt)\r\n- [x] 7.4.1836\r\n- [x] 7.4.1839\r\n- [x] 7.4.1842\r\n- [x] 7.4.1860 (Was previously marked as N/A, but I took a test from it related to timers+ partials)\r\n- [x] 7.4.1875\r\n"},"comment":{"url":"https://api.github.com/repos/neovim/neovim/issues/comments/258601419","html_url":"https://github.com/neovim/neovim/pull/5529#issuecomment-258601419","issue_url":"https://api.github.com/repos/neovim/neovim/issues/5529","id":258601419,"user":{"login":"bfredl","id":1363104,"avatar_url":"https://avatars.githubusercontent.com/u/1363104?v=3","gravatar_id":"","url":"https://api.github.com/users/bfredl","html_url":"https://github.com/bfredl","followers_url":"https://api.github.com/users/bfredl/followers","following_url":"https://api.github.com/users/bfredl/following{/other_user}","gists_url":"https://api.github.com/users/bfredl/gists{/gist_id}","starred_url":"https://api.github.com/users/bfredl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bfredl/subscriptions","organizations_url":"https://api.github.com/users/bfredl/orgs","repos_url":"https://api.github.com/users/bfredl/repos","events_url":"https://api.github.com/users/bfredl/events{/privacy}","received_events_url":"https://api.github.com/users/bfredl/received_events","type":"User","site_admin":false},"created_at":"2016-11-05T09:45:57Z","updated_at":"2016-11-05T09:45:57Z","body":"patch for dictwatchers here https://github.com/bfredl/neovim/commit/bdc220c37b7206e601c2edba85318d4d4ee8f9fe\r\n\r\ntwo open questions:\r\n- failed tests indicate a difference between vim and nvim when registering callbacks. in vim, registering a funcref to a function that doesn't exist is not an error, the error is first when trying to invoke the callback. In nvim this is an error already when defining the callback. I'm not sure which convention to adopt but it would be good to be internally consistent, at least.\r\n\r\n- `dictwatcherdel()` relies on the identity of the callback to identify the watcher to remove. But this is a bit problematic for partials. When compared as viml values, partials are deeply compared by value, but this is not what we want, one could imagine two watchers being registered with the same function but with different self dicts, which for the moment `dictwatcherdel()` is called to remove one of them happens to be value-equal. For the moment `callback_equal` compares by reference to handle this, but it is not really good that it is inconsistent. Arguably, `dictwatcheradd()` should return a watcher id which can be sent to `dictwatcherdel()` as a single argument to remove the argument, in consistency with `timer_stop()`. (we should then deprecate but still support the old form only for funcrefs, for backwards compatibility). \r\n\r\nJobs coming up next...."}}
{"actor":{"display_login":"bfredl"}}