{"action":"created","issue":{"url":"https://api.github.com/repos/emacs-evil/evil-collection/issues/61","repository_url":"https://api.github.com/repos/emacs-evil/evil-collection","labels_url":"https://api.github.com/repos/emacs-evil/evil-collection/issues/61/labels{/name}","comments_url":"https://api.github.com/repos/emacs-evil/evil-collection/issues/61/comments","events_url":"https://api.github.com/repos/emacs-evil/evil-collection/issues/61/events","html_url":"https://github.com/emacs-evil/evil-collection/pull/61","id":282761088,"number":61,"title":"Add key translation functionality","user":{"login":"noctuid","id":4250696,"avatar_url":"https://avatars1.githubusercontent.com/u/4250696?v=4","gravatar_id":"","url":"https://api.github.com/users/noctuid","html_url":"https://github.com/noctuid","followers_url":"https://api.github.com/users/noctuid/followers","following_url":"https://api.github.com/users/noctuid/following{/other_user}","gists_url":"https://api.github.com/users/noctuid/gists{/gist_id}","starred_url":"https://api.github.com/users/noctuid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/noctuid/subscriptions","organizations_url":"https://api.github.com/users/noctuid/orgs","repos_url":"https://api.github.com/users/noctuid/repos","events_url":"https://api.github.com/users/noctuid/events{/privacy}","received_events_url":"https://api.github.com/users/noctuid/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":13,"created_at":"2017-12-18T04:21:34Z","updated_at":"2018-03-20T21:14:16Z","closed_at":null,"author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/emacs-evil/evil-collection/pulls/61","html_url":"https://github.com/emacs-evil/evil-collection/pull/61","diff_url":"https://github.com/emacs-evil/evil-collection/pull/61.diff","patch_url":"https://github.com/emacs-evil/evil-collection/pull/61.patch"},"body":"This commit isn't ready to be merged. Any feedback would be appreciated. Some notes:\r\n\r\n- in the readme, I'll add detailed explanation and an example of defining `evil-collection-user-setup-function` with some example swaps\r\n- `cl-lib` is added as an explicit dependency (already used by evil)\r\n- I added a macro wrapper for swapping keys: `evil-collection-swap-key`\r\n- I've removed the general.el-specific functionality; the general.el versions have tests; I haven't tested the evil-collection versions yet but will do so before finalizing the pull request\r\n\r\nI think that a `evil-collection-mode-map-(p|a)list` should be added (would a plist or alist be preferred?). It would pair each mode with a list of keymap names for that mode (I can add this). This would require more work to maintain, but I think that it's necessary given that a significant number of these modes have multiple keymaps (e.g. elfeed).\r\n\r\nI also think that more may need to be done to make it easy to limit the scope of translations. For example, `hjkl` swaps are only desirable in keymaps that rebind `hjkl` to the mode-specific navigation keys. For this case, it's probably not an issue, since if `hjkl` are all unbound in the keymap, all new definitions will just be nil (those positions will still be bound to the default `evil-next-line`, `evil-previous-line`, etc.). I think the main case where this could be an issue is for keys that can have different meanings (e.g. if `o` happened to be used for something else in modes where there is no sorting and the user only wanted to translate a key to `o` in modes where it is used for sorting). These situations would require users to create their own blacklists/whitelists. I'm not sure about how much of an issue this could be, whether it would make sense to have `evil-collection` provide information about the types of keybindings made in each mode, or whether there is some other solution. I think this can be addressed with a later pull request if necessary."},"comment":{"url":"https://api.github.com/repos/emacs-evil/evil-collection/issues/comments/374758986","html_url":"https://github.com/emacs-evil/evil-collection/pull/61#issuecomment-374758986","issue_url":"https://api.github.com/repos/emacs-evil/evil-collection/issues/61","id":374758986,"user":{"login":"noctuid","id":4250696,"avatar_url":"https://avatars1.githubusercontent.com/u/4250696?v=4","gravatar_id":"","url":"https://api.github.com/users/noctuid","html_url":"https://github.com/noctuid","followers_url":"https://api.github.com/users/noctuid/followers","following_url":"https://api.github.com/users/noctuid/following{/other_user}","gists_url":"https://api.github.com/users/noctuid/gists{/gist_id}","starred_url":"https://api.github.com/users/noctuid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/noctuid/subscriptions","organizations_url":"https://api.github.com/users/noctuid/orgs","repos_url":"https://api.github.com/users/noctuid/repos","events_url":"https://api.github.com/users/noctuid/events{/privacy}","received_events_url":"https://api.github.com/users/noctuid/received_events","type":"User","site_admin":false},"created_at":"2018-03-20T21:14:16Z","updated_at":"2018-03-20T21:14:16Z","author_association":"NONE","body":"I fixed a few documentation issues and rebased. I added a note in the example that an evil version from today or later is required (is that sufficient?).\r\n\r\n> How?\r\n\r\nIt would be fairly simple (but not ideal) to just advise specific setup functions with `:after`. The hook added in this commit is also more convenient since it's automatically called after *every* setup function (meaning it can also easily be used for general configuration/setup not related to single, specific modes)."}}
{"actor":{"display_login":"noctuid"}}