{"action":"created","issue":{"url":"https://api.github.com/repos/neovim/neovim/issues/3413","labels_url":"https://api.github.com/repos/neovim/neovim/issues/3413/labels{/name}","comments_url":"https://api.github.com/repos/neovim/neovim/issues/3413/comments","events_url":"https://api.github.com/repos/neovim/neovim/issues/3413/events","html_url":"https://github.com/neovim/neovim/pull/3413","id":109504669,"number":3413,"title":"[RFC] Refactor Neovim to remove the side effects of `K_EVENT`","user":{"login":"tarruda","id":842846,"avatar_url":"https://avatars.githubusercontent.com/u/842846?v=3","gravatar_id":"","url":"https://api.github.com/users/tarruda","html_url":"https://github.com/tarruda","followers_url":"https://api.github.com/users/tarruda/followers","following_url":"https://api.github.com/users/tarruda/following{/other_user}","gists_url":"https://api.github.com/users/tarruda/gists{/gist_id}","starred_url":"https://api.github.com/users/tarruda/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tarruda/subscriptions","organizations_url":"https://api.github.com/users/tarruda/orgs","repos_url":"https://api.github.com/users/tarruda/repos","events_url":"https://api.github.com/users/tarruda/events{/privacy}","received_events_url":"https://api.github.com/users/tarruda/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/neovim/neovim/labels/RFC","name":"RFC","color":"dfdfdf"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/neovim/neovim/milestones/5","html_url":"https://github.com/neovim/neovim/milestones/0.1-first-public-release","labels_url":"https://api.github.com/repos/neovim/neovim/milestones/5/labels","id":652241,"number":5,"title":"0.1-first-public-release","description":"beta release, codename: \"whoa\"","creator":{"login":"justinmk","id":1359421,"avatar_url":"https://avatars.githubusercontent.com/u/1359421?v=3","gravatar_id":"","url":"https://api.github.com/users/justinmk","html_url":"https://github.com/justinmk","followers_url":"https://api.github.com/users/justinmk/followers","following_url":"https://api.github.com/users/justinmk/following{/other_user}","gists_url":"https://api.github.com/users/justinmk/gists{/gist_id}","starred_url":"https://api.github.com/users/justinmk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/justinmk/subscriptions","organizations_url":"https://api.github.com/users/justinmk/orgs","repos_url":"https://api.github.com/users/justinmk/repos","events_url":"https://api.github.com/users/justinmk/events{/privacy}","received_events_url":"https://api.github.com/users/justinmk/received_events","type":"User","site_admin":false},"open_issues":6,"closed_issues":111,"state":"open","created_at":"2014-05-07T21:37:18Z","updated_at":"2015-10-26T02:42:38Z","due_on":"2015-10-31T04:00:00Z","closed_at":null},"comments":26,"created_at":"2015-10-02T14:42:49Z","updated_at":"2015-10-26T14:09:43Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/neovim/neovim/pulls/3413","html_url":"https://github.com/neovim/neovim/pull/3413","diff_url":"https://github.com/neovim/neovim/pull/3413.diff","patch_url":"https://github.com/neovim/neovim/pull/3413.patch"},"body":"This PR is my new attempt to remove the effects of the internal `K_EVENT` key code, which is used to represent events in various modes that explicitly declare the ability to do so. While using a special key to signal events is relatively safe(because Vim is a state machine that only deals with keys), it has a couple of disadvantages:\r\n\r\n- Some operators can be interrupted\r\n- Mappings are affected\r\n\r\nPreviously I have attempted to remove this key by always handling events in the most inner place of Neovim loops: the input.c module, which created instability since we can't handle events in every state.\r\n\r\nFixing this issue is a bigger deal now because terminal redrawing is now handled as deferred events: https://github.com/neovim/neovim/commit/47cbbc0b8c864bdb1aaa572f0396642e2c66deae\r\n\r\nClose #3382 (and possibly many other issues I can't find right now)"},"comment":{"url":"https://api.github.com/repos/neovim/neovim/issues/comments/151144924","html_url":"https://github.com/neovim/neovim/pull/3413#issuecomment-151144924","issue_url":"https://api.github.com/repos/neovim/neovim/issues/3413","id":151144924,"user":{"login":"tarruda","id":842846,"avatar_url":"https://avatars.githubusercontent.com/u/842846?v=3","gravatar_id":"","url":"https://api.github.com/users/tarruda","html_url":"https://github.com/tarruda","followers_url":"https://api.github.com/users/tarruda/followers","following_url":"https://api.github.com/users/tarruda/following{/other_user}","gists_url":"https://api.github.com/users/tarruda/gists{/gist_id}","starred_url":"https://api.github.com/users/tarruda/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tarruda/subscriptions","organizations_url":"https://api.github.com/users/tarruda/orgs","repos_url":"https://api.github.com/users/tarruda/repos","events_url":"https://api.github.com/users/tarruda/events{/privacy}","received_events_url":"https://api.github.com/users/tarruda/received_events","type":"User","site_admin":false},"created_at":"2015-10-26T14:09:43Z","updated_at":"2015-10-26T14:09:43Z","body":"In any case, it's not like we want to have platform-specific code in core functions. This translation should happen in the TUI(if it should happen at all)"}}