about summary refs log tree commit diff
path: root/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209
diff options
context:
space:
mode:
Diffstat (limited to 'configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209')
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ace-jump-mode.el148
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ace-jump-mode.elcbin0 -> 9572 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ag.el62
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ag.elcbin0 -> 1190 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-alchemist.el113
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-alchemist.elcbin0 -> 2860 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-anaconda-mode.el63
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-anaconda-mode.elcbin0 -> 1270 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-arc-mode.el76
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-arc-mode.elcbin0 -> 1510 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-autoloads.el118
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-avy.el121
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-avy.elcbin0 -> 17115 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-bookmark.el78
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-bookmark.elcbin0 -> 1832 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-buff-menu.el121
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-buff-menu.elcbin0 -> 3914 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-calc.el173
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-calc.elcbin0 -> 4129 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-calendar.el104
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-calendar.elcbin0 -> 2369 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cider.el213
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cider.elcbin0 -> 7508 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cmake-mode.el43
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cmake-mode.elcbin0 -> 962 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-comint.el54
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-comint.elcbin0 -> 991 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-company.el82
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-company.elcbin0 -> 1902 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-compile.el60
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-compile.elcbin0 -> 1329 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cus-theme.el64
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cus-theme.elcbin0 -> 1221 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-custom.el67
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-custom.elcbin0 -> 1203 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-daemons.el67
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-daemons.elcbin0 -> 1279 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-deadgrep.el50
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-deadgrep.elcbin0 -> 1001 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-debbugs.el80
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-debbugs.elcbin0 -> 1611 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-debug.el69
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-debug.elcbin0 -> 1336 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-diff-mode.el145
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-diff-mode.elcbin0 -> 3266 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-dired.el190
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-dired.elcbin0 -> 5614 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-doc-view.el83
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-doc-view.elcbin0 -> 1877 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-edebug.el124
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-edebug.elcbin0 -> 2757 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ediff.el204
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ediff.elcbin0 -> 6029 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eglot.el42
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eglot.elcbin0 -> 856 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elfeed.el120
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elfeed.elcbin0 -> 2246 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elisp-mode.el78
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elisp-mode.elcbin0 -> 2379 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elisp-refs.el51
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elisp-refs.elcbin0 -> 987 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-emms.el234
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-emms.elcbin0 -> 6128 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-epa.el70
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-epa.elcbin0 -> 1257 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ert.el70
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ert.elcbin0 -> 1747 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eshell.el96
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eshell.elcbin0 -> 2271 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eval-sexp-fu.el60
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eval-sexp-fu.elcbin0 -> 1596 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-evil-mc.el60
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-evil-mc.elcbin0 -> 1164 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eww.el152
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eww.elcbin0 -> 2828 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-flycheck.el55
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-flycheck.elcbin0 -> 1258 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-flymake.el49
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-flymake.elcbin0 -> 981 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-free-keys.el52
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-free-keys.elcbin0 -> 1288 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-geiser.el103
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-geiser.elcbin0 -> 2363 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ggtags.el99
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ggtags.elcbin0 -> 2036 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-git-timemachine.el48
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-git-timemachine.elcbin0 -> 1189 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-go-mode.el46
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-go-mode.elcbin0 -> 909 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-grep.el44
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-grep.elcbin0 -> 834 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-guix.el218
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-guix.elcbin0 -> 7976 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-helm.el211
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-helm.elcbin0 -> 4403 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-help.el74
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-help.elcbin0 -> 1250 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ibuffer.el196
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ibuffer.elcbin0 -> 6354 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image+.el53
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image+.elcbin0 -> 1094 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image-dired.el73
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image-dired.elcbin0 -> 1835 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image.el91
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image.elcbin0 -> 1750 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-imenu-list.el46
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-imenu-list.elcbin0 -> 971 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-indium.el110
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-indium.elcbin0 -> 2591 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-info.el110
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-info.elcbin0 -> 2222 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-integration.el313
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-integration.elcbin0 -> 9134 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ivy.el110
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ivy.elcbin0 -> 2186 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-js2-mode.el45
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-js2-mode.elcbin0 -> 975 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-kotlin-mode.el41
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-kotlin-mode.elcbin0 -> 806 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-lispy.el255
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-log-view.el61
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-log-view.elcbin0 -> 1346 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-lsp-ui-imenu.el46
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-lsp-ui-imenu.elcbin0 -> 1043 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-lua-mode.el49
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-lua-mode.elcbin0 -> 1098 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-macrostep.el51
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-macrostep.elcbin0 -> 1038 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-magit-todos.el52
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-magit-todos.elcbin0 -> 1208 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-magit.el47
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-magit.elcbin0 -> 795 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-man.el67
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-man.elcbin0 -> 1270 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-minibuffer.el75
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-minibuffer.elcbin0 -> 1868 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-mu4e-conversation.el74
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-mu4e-conversation.elcbin0 -> 2022 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-mu4e.el337
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-mu4e.elcbin0 -> 8254 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-neotree.el100
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-notmuch.el178
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-notmuch.elcbin0 -> 5164 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-nov.el66
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-nov.elcbin0 -> 1298 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-occur.el73
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-occur.elcbin0 -> 1388 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-outline.el97
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-outline.elcbin0 -> 2038 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-p4.el57
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-p4.elcbin0 -> 1234 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-package-menu.el56
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-package-menu.elcbin0 -> 1123 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-paren.el76
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-paren.elcbin0 -> 1591 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-pass.el59
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-pass.elcbin0 -> 1192 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-pdf.el282
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-pdf.elcbin0 -> 7273 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-pkg.el14
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-popup.el43
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-popup.elcbin0 -> 809 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-proced.el92
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-proced.elcbin0 -> 1728 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-prodigy.el79
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-prodigy.elcbin0 -> 1618 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-profiler.el70
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-profiler.elcbin0 -> 1463 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-python.el47
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-python.elcbin0 -> 1070 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-quickrun.el41
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-quickrun.elcbin0 -> 802 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-racer.el47
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-racer.elcbin0 -> 923 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-realgud.el102
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-realgud.elcbin0 -> 2311 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-reftex.el141
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-reftex.elcbin0 -> 4485 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-rjsx-mode.el46
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-rjsx-mode.elcbin0 -> 885 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-robe.el44
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-robe.elcbin0 -> 851 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-rtags.el140
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-rtags.elcbin0 -> 2776 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ruby-mode.el44
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ruby-mode.elcbin0 -> 954 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-settings.el45
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-settings.elcbin0 -> 1009 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-simple.el47
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-simple.elcbin0 -> 900 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-slime.el182
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-slime.elcbin0 -> 4789 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-term.el159
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-term.elcbin0 -> 3995 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-tide.el65
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-tide.elcbin0 -> 1302 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-transmission.el172
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-transmission.elcbin0 -> 3090 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-typescript-mode.el45
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-typescript-mode.elcbin0 -> 981 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-annotate.el58
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-annotate.elcbin0 -> 1432 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-dir.el112
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-dir.elcbin0 -> 2222 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-git.el40
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-git.elcbin0 -> 749 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vdiff.el59
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vdiff.elcbin0 -> 1146 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-view.el53
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-view.elcbin0 -> 1025 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vlf.el77
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vlf.elcbin0 -> 1509 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-wdired.el46
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-wdired.elcbin0 -> 891 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-wgrep.el48
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-wgrep.elcbin0 -> 895 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-which-key.el51
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-which-key.elcbin0 -> 939 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-woman.el50
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-woman.elcbin0 -> 930 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-xref.el54
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-xref.elcbin0 -> 1036 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-youtube-dl.el71
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-youtube-dl.elcbin0 -> 1432 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ztree.el72
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ztree.elcbin0 -> 1524 bytes
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection.el531
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection.elcbin0 -> 15025 bytes
228 files changed, 11137 insertions, 0 deletions
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ace-jump-mode.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ace-jump-mode.el
new file mode 100644
index 000000000000..250cac153c8d
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ace-jump-mode.el
@@ -0,0 +1,148 @@
+;;; evil-collection-ace-jump-mode.el --- Bindings for `ace-jump-mode' -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `ace-jump-mode'
+
+;;; Code:
+(require 'evil-collection)
+(require 'ace-jump-mode nil t)
+
+(declare-function 'ace-jump-char-mode "ace-jump-mode")
+(declare-function 'ace-jump-word-mode "ace-jump-mode")
+(declare-function 'ace-jump-line-mode "ace-jump-mode")
+
+(defvar evil-collection-ace-jump-mode-jump-active nil)
+
+(defmacro evil-collection-ace-jump-mode-enclose-ace-jump-for-motion (&rest body)
+  "Enclose ace-jump to make it suitable for motions.
+This includes restricting `ace-jump-mode' to the current window
+in visual and operator state, deactivating visual updates, saving
+the mark and entering `recursive-edit'."
+  (declare (indent defun)
+           (debug t))
+  `(let ((old-mark (mark))
+         (ace-jump-mode-scope
+          (if (and (not (memq evil-state '(visual operator)))
+                   (boundp 'ace-jump-mode-scope))
+              ace-jump-mode-scope
+            'window)))
+     (ignore ace-jump-mode-scope) ;; Make byte compiler happy.
+     (remove-hook 'pre-command-hook #'evil-visual-pre-command t)
+     (remove-hook 'post-command-hook #'evil-visual-post-command t)
+     (unwind-protect
+         (let ((evil-collection-ace-jump-mode-jump-active 'prepare))
+           (add-hook 'ace-jump-mode-end-hook
+                     #'evil-collection-ace-jump-mode-jump-exit-recursive-edit)
+           ,@body
+           (when evil-collection-ace-jump-mode-jump-active
+             (setq evil-collection-ace-jump-mode-jump-active t)
+             (recursive-edit)))
+       (remove-hook 'post-command-hook
+                    #'evil-collection-ace-jump-mode-jump-exit-recursive-edit)
+       (remove-hook 'ace-jump-mode-end-hook
+                    #'evil-collection-ace-jump-mode-jump-exit-recursive-edit)
+       (if (evil-visual-state-p)
+           (progn
+             (add-hook 'pre-command-hook #'evil-visual-pre-command nil t)
+             (add-hook 'post-command-hook #'evil-visual-post-command nil t)
+             (set-mark old-mark))
+         (push-mark old-mark)))))
+
+(defun evil-collection-ace-jump-mode-jump-exit-recursive-edit ()
+  "Exit a recursive edit caused by an evil jump."
+  (cond
+   ((eq evil-collection-ace-jump-mode-jump-active 'prepare)
+    (setq evil-collection-ace-jump-mode-jump-active nil))
+   (evil-collection-ace-jump-mode-jump-active
+    (remove-hook 'post-command-hook
+                 #'evil-collection-ace-jump-mode-jump-exit-recursive-edit)
+    (exit-recursive-edit))))
+
+(evil-define-motion evil-ace-jump-char-mode (_)
+  "Jump visually directly to a char using ace-jump."
+  :type inclusive
+  (evil-without-repeat
+    (let ((pnt (point))
+          (buf (current-buffer)))
+      (evil-collection-ace-jump-mode-enclose-ace-jump-for-motion
+       (call-interactively 'ace-jump-char-mode))
+      ;; if we jump backwards, motion type is exclusive, analogously
+      ;; to `evil-find-char-backward'
+      (when (and (equal buf (current-buffer))
+                 (< (point) pnt))
+        (setq evil-this-type
+              (cond
+               ((eq evil-this-type 'exclusive) 'inclusive)
+               ((eq evil-this-type 'inclusive) 'exclusive)))))))
+
+(evil-define-motion evil-ace-jump-char-to-mode (_)
+  "Jump visually to the char in front of a char using ace-jump."
+  :type inclusive
+  (evil-without-repeat
+    (let ((pnt (point))
+          (buf (current-buffer)))
+      (evil-collection-ace-jump-mode-enclose-ace-jump-for-motion
+       (call-interactively 'ace-jump-char-mode))
+      (if (and (equal buf (current-buffer))
+               (< (point) pnt))
+          (progn
+            (or (eobp) (forward-char))
+            (setq evil-this-type
+                  (cond
+                   ((eq evil-this-type 'exclusive) 'inclusive)
+                   ((eq evil-this-type 'inclusive) 'exclusive))))
+        (backward-char)))))
+
+(evil-define-motion evil-ace-jump-line-mode (_)
+  "Jump visually to the beginning of a line using ace-jump."
+  :type line
+  :repeat abort
+  (evil-without-repeat
+    (evil-collection-ace-jump-mode-enclose-ace-jump-for-motion
+     (call-interactively 'ace-jump-line-mode))))
+
+(evil-define-motion evil-ace-jump-word-mode (_)
+  "Jump visually to the beginning of a word using ace-jump."
+  :type exclusive
+  :repeat abort
+  (evil-without-repeat
+    (evil-collection-ace-jump-mode-enclose-ace-jump-for-motion
+     (call-interactively 'ace-jump-word-mode))))
+
+(defun evil-collection-ace-jump-mode-setup ()
+  "Set up `evil' bindings for `ace-jump-mode'."
+
+  (defadvice ace-jump-done (after evil activate)
+    (when evil-collection-ace-jump-mode-jump-active
+      (add-hook 'post-command-hook #'evil-collection-ace-jump-mode-jump-exit-recursive-edit)))
+
+  (evil-collection-define-key nil 'evil-motion-state-map
+    [remap ace-jump-char-mode] #'evil-ace-jump-char-mode
+    [remap ace-jump-line-mode] #'evil-ace-jump-line-mode
+    [remap ace-jump-word-mode] #'evil-ace-jump-word-mode))
+
+(provide 'evil-collection-ace-jump-mode)
+;;; evil-collection-ace-jump-mode.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ace-jump-mode.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ace-jump-mode.elc
new file mode 100644
index 000000000000..86f218157f6e
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ace-jump-mode.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ag.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ag.el
new file mode 100644
index 000000000000..9890da077dab
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ag.el
@@ -0,0 +1,62 @@
+;;; evil-collection-ag.el --- Evil Bindings for Ag -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, ag, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `ag-mode' from the `wgrep-ag' package.
+
+;;; Code:
+(require 'ag nil t)
+(require 'evil-collection)
+
+(defconst evil-collection-ag-maps '(ag-mode-map))
+
+(defun evil-collection-ag-setup ()
+  "Set up `evil' bindings for `ag'."
+  (evil-collection-define-key '(normal visual) 'ag-mode-map
+    "k" 'evil-previous-line
+    "h" 'evil-backward-char
+
+    ;; refresh
+    "gr" 'recompile
+
+    ;; navigation
+    "gj" 'compilation-next-error
+    "gk" 'compilation-previous-error
+    (kbd "C-j") 'compilation-next-error
+    (kbd "C-k") 'compilation-previous-error
+    "]" 'compilation-next-error
+    "[" 'compilation-previous-error
+
+    ;; search
+    "?" evil-collection-evil-search-backward
+    "/" evil-collection-evil-search-forward
+    "n" evil-collection-evil-search-next
+    "N" evil-collection-evil-search-previous)
+  ;; `ag' is best set in 'normal state because its buffer can be edited.
+  ;; https://github.com/mhayashi1120/Emacs-wgrep
+  (evil-set-initial-state 'ag-mode 'normal))
+
+(provide 'evil-collection-ag)
+;;; evil-collection-ag.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ag.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ag.elc
new file mode 100644
index 000000000000..f49bf0c3f9a5
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ag.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-alchemist.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-alchemist.el
new file mode 100644
index 000000000000..45e619d41e40
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-alchemist.el
@@ -0,0 +1,113 @@
+;;; evil-collection-alchemist.el --- Bindings for `alchemist'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, alchemist, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `alchemist'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'alchemist nil t)
+
+(defconst evil-collection-alchemist-maps '(alchemist-compile-mode-map
+                                           alchemist-eval-mode-map
+                                           alchemist-execute-mode-map
+                                           alchemist-message-mode-map
+                                           alchemist-help-minor-mode-map
+                                           alchemist-macroexpand-mode-map
+                                           alchemist-mix-mode-map
+                                           alchemist-test-report-mode-map
+                                           alchemist-mode-map))
+
+
+(defun evil-collection-alchemist-setup ()
+  "Set up `evil' bindings for `alchemist'."
+  (evil-set-initial-state 'alchemist-compile-mode 'normal)
+  (evil-set-initial-state 'alchemist-eval-mode 'normal)
+  (evil-set-initial-state 'alchemist-execute-mode 'normal)
+  (evil-set-initial-state 'alchemist-message-mode 'normal)
+  (evil-set-initial-state 'alchemist-help-minor-mode 'normal)
+  (evil-set-initial-state 'alchemist-macroexpand-mode 'normal)
+  (evil-set-initial-state 'alchemist-refcard-mode 'normal)
+  (evil-set-initial-state 'alchemist-mix-mode 'normal)
+  (evil-set-initial-state 'alchemist-test-mode 'normal)
+  (evil-set-initial-state 'alchemist-test-report-mode 'normal)
+
+  (evil-collection-define-key 'normal 'alchemist-compile-mode-map
+    "q" 'quit-window)
+
+  (evil-collection-define-key 'normal 'alchemist-eval-mode-map
+    "q" 'quit-window)
+
+  (evil-collection-define-key 'normal 'alchemist-execute-mode-map
+    "q" 'quit-window)
+
+  (evil-collection-define-key 'normal 'alchemist-message-mode-map
+    "q" 'quit-window)
+
+  (evil-collection-define-key 'normal 'alchemist-help-minor-mode-map
+    "q" 'quit-window
+    "K" 'alchemist-help-search-at-point
+    "m" 'alchemist-help-module
+    "s" 'alchemist-help
+    "gh" 'alchemist-help-history
+    "gd" 'alchemist-goto-definition-at-point
+    "g?" 'alchemist-help-minor-mode-key-binding-summary)
+
+  (evil-collection-define-key 'normal 'alchemist-macroexpand-mode-map
+    "q" 'quit-window)
+
+  (evil-collection-define-key 'normal 'alchemist-refcard-mode-map
+    "gd" 'alchemist-refcard--describe-funtion-at-point
+    "g?" 'alchemist-refcard--describe-funtion-at-point
+    "q" 'quit-window)
+
+  (evil-collection-define-key 'normal 'alchemist-mix-mode-map
+    "q" 'quit-window
+    "i" 'alchemist-mix-send-input-to-mix-process
+    "gr" 'alchemist-mix-rerun-last-task)
+
+  (evil-collection-define-key 'normal 'alchemist-test-report-mode-map
+    "q" 'quit-window
+    "t" 'toggle-truncate-lines
+    "gr" 'alchemist-mix-rerun-last-test
+    "gj" 'alchemist-test-next-result
+    "gk" 'alchemist-test-previous-result
+    (kbd "C-j") 'alchemist-test-next-result
+    (kbd "C-k") 'alchemist-test-previous-result
+    "]" 'alchemist-test-next-stacktrace-file
+    "[" 'alchemist-test-previous-stacktrace-file
+    (kbd "C-c C-k") 'alchemist-report-interrupt-current-process)
+
+  (evil-collection-define-key 'normal 'alchemist-mode-map
+    "gz" 'alchemist-iex-run
+    "K" 'alchemist-help-search-at-point
+    "gd" 'alchemist-goto-definition-at-point
+    (kbd "C-t") 'alchemist-goto-jump-back
+    "g?" 'alchemist-help
+    (kbd "C-j") 'alchemist-goto-jump-to-next-def-symbol
+    (kbd "C-k") 'alchemist-goto-jump-to-previous-def-symbol))
+
+(provide 'evil-collection-alchemist)
+;;; evil-collection-alchemist.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-alchemist.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-alchemist.elc
new file mode 100644
index 000000000000..ca75c637b631
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-alchemist.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-anaconda-mode.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-anaconda-mode.el
new file mode 100644
index 000000000000..adc8ef07950a
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-anaconda-mode.el
@@ -0,0 +1,63 @@
+;;; evil-collection-anaconda-mode.el --- Bindings for `anaconda-mode'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, python, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `anaconda-mode'.
+
+;;; Code:
+(require 'anaconda-mode nil t)
+(require 'evil-collection)
+
+(defconst evil-collection-anaconda-mode-maps '(anaconda-view-mode-map
+                                               anaconda-mode-map))
+
+(defun evil-collection-anaconda-mode-setup ()
+  "Set up `evil' bindings for `anaconda-mode'."
+  ;; Bindings don't seem to be set the first time.
+  (add-hook 'anaconda-mode-hook #'evil-normalize-keymaps)
+
+  ;; latest anaconda has replaced view mode by an xref implementation,
+  ;; anaconda stable uses `anaconda-view-mode-map'
+  (when (boundp 'anaconda-view-mode-map)
+    (evil-collection-define-key 'normal 'anaconda-view-mode-map
+      "gj" 'next-error-no-select
+      "gk" 'previous-error-no-select
+      (kbd "C-j") 'next-error-no-select
+      (kbd "C-k") 'previous-error-no-select
+      "]" 'next-error-no-select
+      "[" 'previous-error-no-select
+      "q" 'quit-window))
+
+  (evil-collection-define-key 'normal 'anaconda-mode-map
+    ;; Would be nice to support these too.
+    ;; 'anaconda-mode-find-assignments
+    ;; 'anaconda-mode-find-references
+    "gd" 'anaconda-mode-find-definitions
+    (kbd "C-t") (if (fboundp 'anaconda-mode-go-back)
+                    'anaconda-mode-go-back
+                  'xref-pop-marker-stack)
+    "K" 'anaconda-mode-show-doc))
+
+(provide 'evil-collection-anaconda-mode)
+;;; evil-collection-anaconda-mode.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-anaconda-mode.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-anaconda-mode.elc
new file mode 100644
index 000000000000..3add1e86c8a6
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-anaconda-mode.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-arc-mode.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-arc-mode.el
new file mode 100644
index 000000000000..355f53f12a35
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-arc-mode.el
@@ -0,0 +1,76 @@
+;;; evil-collection-arc-mode.el --- Evil bindings for arc-mode. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, arc-mode, archive, bindings, files
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Evil bindings for arc-mode.
+
+;;; Code:
+(require 'arc-mode)
+(require 'evil-collection)
+
+(defconst evil-collection-arc-mode-maps '(archive-mode-map))
+
+(defun evil-collection-arc-mode-setup ()
+  "Set up `evil' bindings for `arc-mode'."
+  (evil-set-initial-state 'arc-mode 'normal)
+  (evil-set-initial-state 'archive-mode 'normal)
+  (evil-collection-define-key 'normal 'archive-mode-map
+    "j" 'archive-next-line
+    "k" 'archive-previous-line
+    (kbd "C-j") 'archive-next-line
+    (kbd "C-k") 'archive-previous-line
+    "gj" 'archive-next-line
+    "gk" 'archive-previous-line
+
+    "gg" 'beginning-of-buffer
+    "G" 'end-of-buffer
+
+    ;; open
+    (kbd "<return>") 'archive-extract
+    (kbd "S-<return>") 'archive-extract-other-window
+    (kbd "M-<return>") 'archive-view
+    "go" 'archive-extract-other-window
+
+    "a" 'archive-alternate-display
+    "d" 'archive-flag-deleted
+    "r" 'archive-rename-entry
+    "x" 'archive-expunge
+    "M" 'archive-chmod-entry
+    "P" 'archive-chgrp-entry
+    "C" 'archive-chown-entry
+
+    ;; refresh
+    "gr" 'revert-buffer
+
+    ;; mark
+    "m" 'archive-mark
+    "u" 'archive-unflag
+    "U" 'archive-unmark-all-files
+
+    ;; quit
+    "q" 'quit-window))
+
+(provide 'evil-collection-arc-mode)
+;;; evil-collection-arc-mode.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-arc-mode.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-arc-mode.elc
new file mode 100644
index 000000000000..a3e7b0da0e77
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-arc-mode.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-autoloads.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-autoloads.el
new file mode 100644
index 000000000000..3620c7de11d3
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-autoloads.el
@@ -0,0 +1,118 @@
+;;; evil-collection-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
+
+;;;### (autoloads nil "evil-collection" "evil-collection.el" (23450
+;;;;;;  31882 346025 967000))
+;;; Generated autoloads from evil-collection.el
+
+(autoload 'evil-collection-translate-key "evil-collection" "\
+Translate keys in the keymap(s) corresponding to STATES and KEYMAPS.
+STATES should be the name of an evil state, a list of states, or nil. KEYMAPS
+should be a symbol corresponding to the keymap to make the translations in or a
+list of keymap symbols. Like `evil-define-key', when a keymap does not exist,
+the keybindings will be deferred until the keymap is defined, so
+`with-eval-after-load' is not neccessary. TRANSLATIONS corresponds to a list of
+key replacement pairs. For example, specifying \"a\" \"b\" will bind \"a\" to
+\"b\"'s definition in the keymap. Specifying nil as a replacement will unbind a
+key. If DESTRUCTIVE is nil, a backup of the keymap will be stored on the initial
+invocation, and future invocations will always look up keys in the backup
+keymap. When no TRANSLATIONS are given, this function will only create the
+backup keymap without making any translations. On the other hand, if DESTRUCTIVE
+is non-nil, the keymap will be destructively altered without creating a backup.
+For example, calling this function multiple times with \"a\" \"b\" \"b\" \"a\"
+would continue to swap and unswap the definitions of these keys. This means that
+when DESTRUCTIVE is non-nil, all related swaps/cycles should be done in the same
+invocation.
+
+\(fn STATES KEYMAPS &rest TRANSLATIONS &key DESTRUCTIVE &allow-other-keys)" nil nil)
+
+(function-put 'evil-collection-translate-key 'lisp-indent-function 'defun)
+
+(autoload 'evil-collection-swap-key "evil-collection" "\
+Wrapper around `evil-collection-translate-key' for swapping keys.
+STATES, KEYMAPS, and ARGS are passed to `evil-collection-translate-key'. ARGS
+should consist of key swaps (e.g. \"a\" \"b\" is equivalent to \"a\" \"b\" \"b\"
+\"a\" with `evil-collection-translate-key') and optionally keyword arguments for
+`evil-collection-translate-key'.
+
+\(fn STATES KEYMAPS &rest ARGS)" nil t)
+
+(function-put 'evil-collection-swap-key 'lisp-indent-function 'defun)
+
+(autoload 'evil-collection-init "evil-collection" "\
+Register the Evil bindings for all modes in `evil-collection-mode-list'.
+
+Alternatively, you may register select bindings manually, for
+instance:
+
+  (with-eval-after-load 'calendar
+    (require 'evil-collection-calendar)
+    (evil-collection-calendar-setup))
+
+If MODES is specified (as either one mode or a list of modes), use those modes
+instead of the modes in `evil-collection-mode-list'.
+
+\(fn &optional MODES)" t nil)
+
+;;;***
+
+;;;### (autoloads nil nil ("evil-collection-ace-jump-mode.el" "evil-collection-ag.el"
+;;;;;;  "evil-collection-alchemist.el" "evil-collection-anaconda-mode.el"
+;;;;;;  "evil-collection-arc-mode.el" "evil-collection-avy.el" "evil-collection-bookmark.el"
+;;;;;;  "evil-collection-buff-menu.el" "evil-collection-calc.el"
+;;;;;;  "evil-collection-calendar.el" "evil-collection-cider.el"
+;;;;;;  "evil-collection-cmake-mode.el" "evil-collection-comint.el"
+;;;;;;  "evil-collection-company.el" "evil-collection-compile.el"
+;;;;;;  "evil-collection-cus-theme.el" "evil-collection-custom.el"
+;;;;;;  "evil-collection-daemons.el" "evil-collection-deadgrep.el"
+;;;;;;  "evil-collection-debbugs.el" "evil-collection-debug.el" "evil-collection-diff-mode.el"
+;;;;;;  "evil-collection-dired.el" "evil-collection-doc-view.el"
+;;;;;;  "evil-collection-edebug.el" "evil-collection-ediff.el" "evil-collection-eglot.el"
+;;;;;;  "evil-collection-elfeed.el" "evil-collection-elisp-mode.el"
+;;;;;;  "evil-collection-elisp-refs.el" "evil-collection-emms.el"
+;;;;;;  "evil-collection-epa.el" "evil-collection-ert.el" "evil-collection-eshell.el"
+;;;;;;  "evil-collection-eval-sexp-fu.el" "evil-collection-evil-mc.el"
+;;;;;;  "evil-collection-eww.el" "evil-collection-flycheck.el" "evil-collection-flymake.el"
+;;;;;;  "evil-collection-free-keys.el" "evil-collection-geiser.el"
+;;;;;;  "evil-collection-ggtags.el" "evil-collection-git-timemachine.el"
+;;;;;;  "evil-collection-go-mode.el" "evil-collection-grep.el" "evil-collection-guix.el"
+;;;;;;  "evil-collection-helm.el" "evil-collection-help.el" "evil-collection-ibuffer.el"
+;;;;;;  "evil-collection-image+.el" "evil-collection-image-dired.el"
+;;;;;;  "evil-collection-image.el" "evil-collection-imenu-list.el"
+;;;;;;  "evil-collection-indium.el" "evil-collection-info.el" "evil-collection-integration.el"
+;;;;;;  "evil-collection-ivy.el" "evil-collection-js2-mode.el" "evil-collection-kotlin-mode.el"
+;;;;;;  "evil-collection-lispy.el" "evil-collection-log-view.el"
+;;;;;;  "evil-collection-lsp-ui-imenu.el" "evil-collection-lua-mode.el"
+;;;;;;  "evil-collection-macrostep.el" "evil-collection-magit-todos.el"
+;;;;;;  "evil-collection-magit.el" "evil-collection-man.el" "evil-collection-minibuffer.el"
+;;;;;;  "evil-collection-mu4e-conversation.el" "evil-collection-mu4e.el"
+;;;;;;  "evil-collection-neotree.el" "evil-collection-notmuch.el"
+;;;;;;  "evil-collection-nov.el" "evil-collection-occur.el" "evil-collection-outline.el"
+;;;;;;  "evil-collection-p4.el" "evil-collection-package-menu.el"
+;;;;;;  "evil-collection-paren.el" "evil-collection-pass.el" "evil-collection-pdf.el"
+;;;;;;  "evil-collection-pkg.el" "evil-collection-popup.el" "evil-collection-proced.el"
+;;;;;;  "evil-collection-prodigy.el" "evil-collection-profiler.el"
+;;;;;;  "evil-collection-python.el" "evil-collection-quickrun.el"
+;;;;;;  "evil-collection-racer.el" "evil-collection-realgud.el" "evil-collection-reftex.el"
+;;;;;;  "evil-collection-rjsx-mode.el" "evil-collection-robe.el"
+;;;;;;  "evil-collection-rtags.el" "evil-collection-ruby-mode.el"
+;;;;;;  "evil-collection-settings.el" "evil-collection-simple.el"
+;;;;;;  "evil-collection-slime.el" "evil-collection-term.el" "evil-collection-tide.el"
+;;;;;;  "evil-collection-transmission.el" "evil-collection-typescript-mode.el"
+;;;;;;  "evil-collection-vc-annotate.el" "evil-collection-vc-dir.el"
+;;;;;;  "evil-collection-vc-git.el" "evil-collection-vdiff.el" "evil-collection-view.el"
+;;;;;;  "evil-collection-vlf.el" "evil-collection-wdired.el" "evil-collection-wgrep.el"
+;;;;;;  "evil-collection-which-key.el" "evil-collection-woman.el"
+;;;;;;  "evil-collection-xref.el" "evil-collection-youtube-dl.el"
+;;;;;;  "evil-collection-ztree.el") (23450 31882 488275 441000))
+
+;;;***
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; End:
+;;; evil-collection-autoloads.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-avy.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-avy.el
new file mode 100644
index 000000000000..6cc4a8318768
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-avy.el
@@ -0,0 +1,121 @@
+;;; evil-collection-avy.el --- Bindings for `avy' -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `avy'
+
+;;; Code:
+(require 'avy nil t)
+(require 'evil-collection)
+
+(declare-function 'avy-goto-word-or-subword-1 "avy")
+(declare-function 'avy-goto-line "avy")
+(declare-function 'avy-goto-char "avy")
+(declare-function 'avy-goto-char-2 "avy")
+(declare-function 'avy-goto-char-2-above "avy")
+(declare-function 'avy-goto-char-2-below "avy")
+(declare-function 'avy-goto-char-in-line "avy")
+(declare-function 'avy-goto-word-0 "avy")
+(declare-function 'avy-goto-word-1 "avy")
+(declare-function 'avy-goto-word-1-above "avy")
+(declare-function 'avy-goto-word-1-below "avy")
+(declare-function 'avy-goto-subword-0 "avy")
+(declare-function 'avy-goto-subword-1 "avy")
+(declare-function 'avy-goto-char-timer "avy")
+
+(defmacro evil-collection-avy-enclose-avy-for-motion (&rest body)
+  "Enclose avy to make it suitable for motions.
+Based on `evil-collection-ace-jump-mode-enclose-ace-jump-for-motion'."
+  (declare (indent defun)
+           (debug t))
+  `(let ((avy-all-windows
+          (if (and (not (memq evil-state '(visual operator)))
+                   (boundp 'avy-all-windows))
+              avy-all-windows
+            nil)))
+     (ignore avy-all-windows) ;; Make byte compiler happy.
+     ,@body))
+
+(defmacro evil-collection-avy-define-avy-motion (command type)
+  (declare (indent defun)
+           (debug t))
+  (let ((name (intern (format "evil-%s" command))))
+    `(evil-define-motion ,name (_count)
+       ,(format "Evil motion for `%s'." command)
+       :type ,type
+       :jump t
+       :repeat abort
+       (evil-without-repeat
+         (evil-collection-avy-enclose-avy-for-motion
+          (call-interactively ',command))))))
+
+;; define evil-avy-* motion commands for avy-* commands
+(evil-collection-avy-define-avy-motion avy-goto-char inclusive)
+(evil-collection-avy-define-avy-motion avy-goto-char-2 inclusive)
+(evil-collection-avy-define-avy-motion avy-goto-char-2-above inclusive)
+(evil-collection-avy-define-avy-motion avy-goto-char-2-below inclusive)
+(evil-collection-avy-define-avy-motion avy-goto-char-in-line inclusive)
+(evil-collection-avy-define-avy-motion avy-goto-char-timer inclusive)
+(evil-collection-avy-define-avy-motion avy-goto-line line)
+(evil-collection-avy-define-avy-motion avy-goto-line-above line)
+(evil-collection-avy-define-avy-motion avy-goto-line-below line)
+(evil-collection-avy-define-avy-motion avy-goto-subword-0 exclusive)
+(evil-collection-avy-define-avy-motion avy-goto-subword-1 exclusive)
+(evil-collection-avy-define-avy-motion avy-goto-symbol-1 exclusive)
+(evil-collection-avy-define-avy-motion avy-goto-symbol-1-above exclusive)
+(evil-collection-avy-define-avy-motion avy-goto-symbol-1-below exclusive)
+(evil-collection-avy-define-avy-motion avy-goto-word-0 exclusive)
+(evil-collection-avy-define-avy-motion avy-goto-word-1 exclusive)
+(evil-collection-avy-define-avy-motion avy-goto-word-1-above exclusive)
+(evil-collection-avy-define-avy-motion avy-goto-word-1-below exclusive)
+(evil-collection-avy-define-avy-motion avy-goto-word-or-subword-1 exclusive)
+
+(defun evil-collection-avy-setup ()
+  "Set up `evil' bindings for `avy'."
+  ;; remap avy-* commands to evil-avy-* commands
+  (dolist (command '(avy-goto-char
+                     avy-goto-char-2
+                     avy-goto-char-2-above
+                     avy-goto-char-2-below
+                     avy-goto-char-in-line
+                     avy-goto-char-timer
+                     avy-goto-line
+                     avy-goto-line-above
+                     avy-goto-line-below
+                     avy-goto-subword-0
+                     avy-goto-subword-1
+                     avy-goto-symbol-1
+                     avy-goto-symbol-1-above
+                     avy-goto-symbol-1-below
+                     avy-goto-word-0
+                     avy-goto-word-1
+                     avy-goto-word-1-above
+                     avy-goto-word-1-below
+                     avy-goto-word-or-subword-1))
+    (evil-collection-define-key nil 'evil-motion-state-map
+      (vector 'remap command) (intern-soft (format "evil-%s" command)))))
+
+(provide 'evil-collection-avy)
+;;; evil-collection-avy.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-avy.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-avy.elc
new file mode 100644
index 000000000000..561683b4c356
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-avy.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-bookmark.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-bookmark.el
new file mode 100644
index 000000000000..78451b044871
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-bookmark.el
@@ -0,0 +1,78 @@
+;;; evil-collection-bookmark.el --- Evil bindings for bookmarks -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, bookmark, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for bookmarks.
+
+;;; Code:
+(require 'evil-collection)
+(require 'bookmark)
+
+(defconst evil-collection-bookmark-maps '(bookmark-bmenu-mode-map))
+
+(defun evil-collection-bookmark-setup ()
+  "Set up `evil' bindings for `bookmark'."
+  (evil-set-initial-state 'bookmark-bmenu-mode 'normal)
+
+  (evil-collection-define-key 'normal 'bookmark-bmenu-mode-map
+    "q" 'quit-window
+    "gr" 'revert-buffer
+    "g?" 'describe-mode
+
+    "j" 'next-line
+    "p" 'previous-line
+    "J" 'bookmark-bmenu-this-window
+    "2" 'bookmark-bmenu-2-window
+    "1" 'bookmark-bmenu-1-window
+    "x" 'bookmark-bmenu-execute-deletions
+    "d" 'bookmark-bmenu-delete
+    "/" 'bookmark-bmenu-search
+    "r" 'bookmark-bmenu-rename
+    "R" 'bookmark-bmenu-relocate
+    "L" 'bookmark-bmenu-load
+    "t" 'bookmark-bmenu-toggle-filenames
+    "a" 'bookmark-bmenu-show-annotation
+    "A" 'bookmark-bmenu-show-all-annotations
+    "s" 'bookmark-bmenu-save
+    "W" 'bookmark-bmenu-locate
+    "E" 'bookmark-bmenu-edit-annotation
+    "D" 'bookmark-bmenu-delete-backwards
+
+    ;; mark
+    "u" 'bookmark-bmenu-unmark
+    "m" 'bookmark-bmenu-mark
+
+    ;; open
+    "o" 'bookmark-bmenu-select
+    "O" 'bookmark-bmenu-other-window
+    "go" 'bookmark-bmenu-other-window
+    "gO" 'bookmark-bmenu-switch-other-window
+    (kbd "<return>") 'bookmark-bmenu-this-window
+    (kbd "S-<return>") 'bookmark-bmenu-other-window
+    (kbd "M-<return>") 'bookmark-bmenu-switch-other-window))
+
+
+(provide 'evil-collection-bookmark)
+;;; evil-collection-bookmark.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-bookmark.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-bookmark.elc
new file mode 100644
index 000000000000..7711ea6268e1
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-bookmark.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-buff-menu.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-buff-menu.el
new file mode 100644
index 000000000000..384671db9d77
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-buff-menu.el
@@ -0,0 +1,121 @@
+;;; evil-collection-buff-menu.el --- Bindings for `buff-menu'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `buff-menu'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'tabulated-list)
+
+;; `evil-collection-buff-menu-Buffer-menu-unmark-all'
+
+;; Code taken from emacs-26 repository.
+
+(defconst evil-collection-buff-menu-maps '(Buffer-menu-mode-map))
+
+;; This is for `evil-collection-Buffer-menu-unmark-all-buffers.'
+(defsubst evil-collection-buff-menu-tabulated-list-header-overlay-p (&optional pos)
+  "Return non-nil if there is a fake header.
+Optional arg POS is a buffer position where to look for a fake header;
+defaults to `point-min'."
+  (overlays-at (or pos (point-min))))
+
+(defun evil-collection-buff-menu-Buffer-menu-unmark-all ()
+  "Cancel all requested operations on buffers."
+  (interactive)
+  (evil-collection-buff-menu-Buffer-menu-unmark-all-buffers ?\r))
+
+(defun evil-collection-buff-menu-Buffer-menu-unmark-all-buffers (mark)
+  "Cancel a requested operation on all buffers.
+MARK is the character to flag the operation on the buffers.
+When called interactively prompt for MARK;  RET remove all marks."
+  (interactive "cRemove marks (RET means all):")
+  (save-excursion
+    (goto-char (point-min))
+    (when (evil-collection-buff-menu-tabulated-list-header-overlay-p)
+      (forward-line))
+    (while (not (eobp))
+      (let ((xmarks (list (aref (tabulated-list-get-entry) 0)
+                          (aref (tabulated-list-get-entry) 2))))
+        (when (or (char-equal mark ?\r)
+                  (member (char-to-string mark) xmarks))
+          (Buffer-menu--unmark)))
+      (forward-line))))
+
+;; `evil-collection-buff-menu-Buffer-menu-unmark-all'
+
+(defun evil-collection-buff-menu-setup ()
+  "Set up `evil' bindings for `buff-menu'.."
+
+  (evil-set-initial-state 'Buffer-menu-mode 'normal)
+  (evil-add-hjkl-bindings Buffer-menu-mode-map 'normal)
+
+  (evil-collection-define-key 'normal 'Buffer-menu-mode-map
+    "ZQ" 'evil-quit
+    "ZZ" 'quit-window
+    "gr" 'revert-buffer
+    "go" 'Buffer-menu-this-window
+    "gO" 'Buffer-menu-other-window
+    "d" 'Buffer-menu-delete
+    "s" 'Buffer-menu-save
+    [mouse-2] 'Buffer-menu-mouse-select
+    [follow-link] 'mouse-face
+    "x" 'Buffer-menu-execute
+    "o" 'tabulated-list-sort
+    "gv" 'Buffer-menu-select
+    "gV" 'Buffer-menu-view
+    "v" 'evil-visual-char
+
+    ;; mark
+    "u" 'Buffer-menu-unmark
+    "U" (if (< emacs-major-version 26)
+            'evil-collection-buff-menu-Buffer-menu-unmark-all
+          'Buffer-menu-unmark-all)
+    "m" 'Buffer-menu-mark
+
+    "f" 'evil-find-char
+    "e" 'evil-forward-word-end
+    "b" 'evil-backward-word-begin
+
+    "X" 'Buffer-menu-bury
+
+    ;; Default ones, unchanged. Redundant ones commented
+    "2" 'Buffer-menu-2-window
+    "1" 'Buffer-menu-1-window
+    (kbd "C-m") 'Buffer-menu-this-window
+    (kbd "C-k") 'Buffer-menu-delete
+    (kbd "C-d") 'Buffer-menu-delete-backwards
+    (kbd "<delete>") 'Buffer-menu-backup-unmark
+    "~" 'Buffer-menu-not-modified
+    "t" 'Buffer-menu-visit-tags-table
+    "%" 'Buffer-menu-toggle-read-only
+    "T" 'Buffer-menu-toggle-files-only
+    (kbd "M-s a C-s") 'Buffer-menu-isearch-buffers
+    (kbd "M-s a M-C-s") 'Buffer-menu-isearch-buffers-regexp
+    (kbd "M-s a C-o") 'Buffer-menu-multi-occur))
+
+(provide 'evil-collection-buff-menu)
+;;; evil-collection-buff-menu.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-buff-menu.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-buff-menu.elc
new file mode 100644
index 000000000000..0bf2e7f76528
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-buff-menu.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-calc.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-calc.el
new file mode 100644
index 000000000000..b4bb64ee54f1
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-calc.el
@@ -0,0 +1,173 @@
+;;; evil-collection-calc.el --- Evil bindings for calc -*- lexical-binding: t -*-
+
+;; Copyright (C) 2018 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>, Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, calc, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for calc.
+
+;;; Code:
+(require 'evil-collection)
+(require 'calc)
+
+(defconst evil-collection-calc-maps '(calc-mode-map))
+
+(defun evil-collection-calc-setup ()
+  "Set up `evil' bindings for `calc'."
+  (evil-collection-inhibit-insert-state 'calc-mode-map)
+  (evil-set-initial-state 'calc-mode 'normal)
+
+  ;; Calc sets up its bindings just-in-time for its "extensions".  I don't think
+  ;; it's worth copying this clumsy design (for what performance benefit?),
+  ;; while making the bindings much harder to maintain.
+  (require 'calc-ext)
+
+  (evil-collection-define-key 'normal 'calc-mode-map
+    "0" 'calcDigit-start
+    "1" 'calcDigit-start
+    "2" 'calcDigit-start
+    "3" 'calcDigit-start
+    "4" 'calcDigit-start
+    "5" 'calcDigit-start
+    "6" 'calcDigit-start
+    "7" 'calcDigit-start
+    "8" 'calcDigit-start
+    "9" 'calcDigit-start
+
+    (kbd "<tab>") 'calc-roll-down
+    (kbd "S-<return>") 'calc-over
+    (kbd "<return>") 'calc-enter
+    (kbd "SPC") 'calc-enter
+
+    (kbd "C-x C-t") 'calc-transpose-lines
+    (kbd "C-M-d") 'calc-pop-above
+    (kbd "C-M-i") 'calc-roll-up
+    (kbd "M-RET") 'calc-last-args
+    (kbd "C-M-w") 'kill-ring-save
+    (kbd "M-%") 'calc-percent
+    (kbd "M-k") 'calc-copy-as-kill
+    (kbd "M-w") 'calc-copy-region-as-kill
+    (kbd "M-DEL") 'calc-pop-above
+    (kbd "M-m t") 'calc-total-algebraic-mode
+    (kbd "<delete>") 'calc-pop
+    (kbd "<mouse-2>") 'calc-yank
+    "x" 'calc-pop ; was "C-d".  TODO: Conflicts with calc-execute-extended-command.
+    "d" 'calc-kill                      ; was "C-k"
+    "u" 'calc-undo                      ; was "U"
+    "X" 'calc-call-last-kbd-macro       ; "@" is already used.
+    "pp" 'calc-yank                     ; was "C-y"
+    "pP" 'calc-copy-to-buffer           ; was "y"
+
+    (kbd "C-p") 'calc-precision         ; was "p"
+
+    "?" 'calc-help
+    ;; "h" 'calc-help-prefix ; TODO: Rebind?
+    "i" 'calc-info
+
+    "\"" 'calc-auto-algebraic-entry
+    "$" 'calc-auto-algebraic-entry      ; TODO: No need for this one?
+    "'" 'calc-algebraic-entry
+
+    "!" 'calc-factorial
+    "#" 'calcDigit-start
+    "%" 'calc-mod
+    "&" 'calc-inv
+    "(" 'calc-begin-complex
+    ")" 'calc-end-complex
+    "*" 'calc-times
+    "+" 'calc-plus
+    "," 'calc-comma
+    "-" 'calc-minus
+    "." 'calcDigit-start
+    "/" 'calc-divide
+    ":" 'calc-fdiv
+    ";" 'calc-semi         ; TODO: Shall we really override `evil-ex'?
+    "<" 'calc-scroll-left
+    "=" 'calc-evaluate
+    ">" 'calc-scroll-right
+    "@" 'calcDigit-start
+    "A" 'calc-abs
+    "B" 'calc-log
+    "C" 'calc-cos
+    ;; "D" 'calc-redo             ; TODO: What's the purpose of this?  Bind to C-r?
+    "E" 'calc-exp
+    "F" 'calc-floor
+    "G" 'calc-argument
+    "H" 'calc-hyperbolic
+    "I" 'calc-inverse
+    "J" 'calc-conj
+    "K" 'calc-keep-args
+    "L" 'calc-ln
+    "M" 'calc-more-recursion-depth
+    "N" 'calc-eval-num
+    "O" 'calc-option
+    "P" 'calc-pi
+    "Q" 'calc-sqrt
+    "R" 'calc-round
+    "S" 'calc-sin
+    "T" 'calc-tan
+    "[" 'calc-begin-vector
+    "]" 'calc-end-vector
+    "\\" 'calc-idiv
+    "^" 'calc-power
+    "_" 'calcDigit-start
+    "`" 'calc-edit
+    "e" 'calcDigit-start
+    "n" 'calc-change-sign
+    "o" 'calc-realign
+    "w" 'calc-why
+    "x" 'calc-execute-extended-command ; TODO: Conflicts with calc-pop.
+    "|" 'calc-concat
+    "{" 'calc-scroll-down               ; TODO: Not necessary?
+    "}" 'calc-scroll-up                 ; TODO: Not necessary?
+    "~" 'calc-num-prefix
+
+    "V" (lookup-key calc-mode-map (kbd "V"))
+    "Y" (lookup-key calc-mode-map (kbd "Y"))
+    "Z" (lookup-key calc-mode-map (kbd "Z"))
+    "a" (lookup-key calc-mode-map (kbd "a"))
+    "b" (lookup-key calc-mode-map (kbd "b"))
+    "c" (lookup-key calc-mode-map (kbd "c"))
+    "D" (lookup-key calc-mode-map (kbd "d"))
+    "f" (lookup-key calc-mode-map (kbd "f"))
+    "g" (lookup-key calc-mode-map (kbd "g"))
+    "zj" (lookup-key calc-mode-map (kbd "j"))
+    "zk" (lookup-key calc-mode-map (kbd "k"))
+    "zl" (lookup-key calc-mode-map (kbd "l"))
+    "m" (lookup-key calc-mode-map (kbd "m"))
+    "r" (lookup-key calc-mode-map (kbd "r"))
+    "s" (lookup-key calc-mode-map (kbd "s"))
+    "t" (lookup-key calc-mode-map (kbd "t"))
+    "U" (lookup-key calc-mode-map (kbd "u"))
+    "v" (lookup-key calc-mode-map (kbd "v"))
+    "zz" (lookup-key calc-mode-map (kbd "z"))
+
+    ;; quit
+    ;; "ZQ" 'quit-window ; TODO: Rebind "Z"?
+    ;; "ZZ" 'quit-window ; TODO: Rebind "Z"?
+    "q" 'calc-quit)
+
+  (evil-collection-define-key 'visual 'calc-mode-map
+    "d" 'calc-kill-region))
+
+(provide 'evil-collection-calc)
+;;; evil-collection-calc.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-calc.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-calc.elc
new file mode 100644
index 000000000000..34019d281ee6
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-calc.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-calendar.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-calendar.el
new file mode 100644
index 000000000000..1b1e38266254
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-calendar.el
@@ -0,0 +1,104 @@
+;;; evil-collection-calendar.el --- Evil bindings for calendar -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, calendar, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for the calendar.
+
+;;; Code:
+(require 'calendar)
+(require 'evil-collection)
+
+(defconst evil-collection-calendar-maps '(calendar-mode-map))
+
+(defun evil-collection-calendar-setup ()
+  "Set up `evil' bindings for `calendar'."
+  (evil-set-initial-state 'calendar-mode 'normal)
+  (evil-collection-define-key 'normal 'calendar-mode-map
+    ;; motion
+    "h" 'calendar-backward-day
+    "j" 'calendar-forward-week
+    "k" 'calendar-backward-week
+    "l" 'calendar-forward-day
+    "0" 'calendar-beginning-of-week
+    "^" 'calendar-beginning-of-week
+    "$" 'calendar-end-of-week
+    "[" 'calendar-backward-year
+    "]" 'calendar-forward-year
+    (kbd "M-<") 'calendar-beginning-of-year
+    (kbd "M->") 'calendar-end-of-year
+    "(" 'calendar-beginning-of-month
+    ")" 'calendar-end-of-month
+    (kbd "SPC") 'scroll-other-window
+    (kbd "S-SPC") 'scroll-other-window-down
+    (kbd "<delete>") 'scroll-other-window-down
+    "<" 'calendar-scroll-right
+    ">" 'calendar-scroll-left
+    (kbd "C-b") 'calendar-scroll-right-three-months
+    (kbd "C-f") 'calendar-scroll-left-three-months
+    "{" 'calendar-backward-month
+    "}" 'calendar-forward-month
+    (kbd "C-k") 'calendar-backward-month
+    (kbd "C-j") 'calendar-forward-month
+    "gk" 'calendar-backward-month
+    "gj" 'calendar-forward-month
+
+    ;; visual
+    "v" 'calendar-set-mark
+
+    ;; goto
+    "." 'calendar-goto-today
+    "gd" 'calendar-goto-date ; "gd" in evil-org-agenda, "gd" in Emacs.
+    ;; "gD" 'calendar-other-month ; Not very useful if we have `calendar-goto-date'.
+
+    ;; diary
+    "D" 'diary-view-other-diary-entries
+    "d" 'diary-view-entries
+    "m" 'diary-mark-entries
+    "s" 'diary-show-all-entries
+
+    "u" 'calendar-unmark
+    "x" 'calendar-mark-holidays
+
+    ;; show
+    "gm" 'calendar-lunar-phases ; "gm" in evil-org-agenda. TODO: Shadows calendar-mayan.
+    "gs" 'calendar-sunrise-sunset ; "gs" in evil-org-agenda
+    "gh" 'calendar-list-holidays ; "gh" in evil-org-agenda. TODO: Shadows calendar-hebrew.
+    "gc" 'org-calendar-goto-agenda ; "gc" in evil-org-agenda. TODO: Shadows calendar-iso.
+    "r" 'calendar-cursor-holidays
+
+    ;; refresh
+    "gr" 'calendar-redraw
+
+    "g?" 'calendar-goto-info-node
+    "?" 'calendar-goto-info-node ; Search is not very useful.
+    (kbd "M-=") 'calendar-count-days-region
+
+    ;; quit
+    "q" 'calendar-exit
+    "ZQ" 'evil-quit
+    "ZZ" 'calendar-exit))
+
+(provide 'evil-collection-calendar)
+;;; evil-collection-calendar.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-calendar.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-calendar.elc
new file mode 100644
index 000000000000..685bcaec0c33
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-calendar.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cider.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cider.el
new file mode 100644
index 000000000000..fb8d8edb7735
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cider.el
@@ -0,0 +1,213 @@
+;;; evil-collection-cider.el --- Evil bindings for Cider -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, cider, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for Cider.
+
+;;; Code:
+(require 'cl-macs)
+(require 'cider nil t)
+(require 'evil-collection)
+(require 'evil-collection-settings)
+
+(declare-function cider-debug-mode-send-reply "cider-debug")
+
+(defconst evil-collection-cider-maps '(cider-mode-map
+                                       cider-repl-mode-map
+                                       cider-test-report-mode-map
+                                       cider-macroexpansion-mode-map
+                                       cider-connections-buffer-mode-map))
+
+(defun evil-collection-cider-last-sexp (command &rest args)
+  "In normal-state or motion-state, last sexp ends at point."
+  (if (and (not evil-move-beyond-eol)
+           (or (evil-normal-state-p) (evil-motion-state-p)))
+      (save-excursion
+        (unless (or (eobp) (eolp)) (forward-char))
+        (apply command args))
+    (apply command args)))
+
+(defmacro evil-collection-cider-make-debug-command (&rest cider-commands)
+  "Make functions that wrap `cider-debug' commands.
+
+Cider debug commands are sent through `cider-debug-mode-send-reply'.
+
+ex. \(cider-debug-mode-send-reply \":next\"\)"
+  (let ((commands (if (consp cider-commands)
+                      cider-commands
+                    (list cider-commands))))
+    `(progn
+       ,@(cl-loop
+          for command in commands
+          collect
+          (let ((funsymbol
+                 (intern (format "evil-collection-cider-debug-%s" command))))
+            `(defun ,funsymbol ()
+               ,(format
+                 "Send :%s to `cider-debug-mode-send-reply'." command)
+               (interactive)
+               (cider-debug-mode-send-reply ,(format ":%s" command))))))))
+
+(evil-collection-cider-make-debug-command "next"
+                                          "continue"
+                                          "out"
+                                          "quit"
+                                          "eval"
+                                          "inject"
+                                          "inspect"
+                                          "locals")
+
+(defun evil-collection-cider-setup ()
+  "Set up `evil' bindings for `cider'."
+  (unless evil-move-beyond-eol
+    (advice-add 'cider-eval-last-sexp :around 'evil-collection-cider-last-sexp)
+    (advice-add 'cider-eval-last-sexp-and-replace :around 'evil-collection-cider-last-sexp)
+    (advice-add 'cider-eval-last-sexp-to-repl :around 'evil-collection-cider-last-sexp)
+    (with-eval-after-load 'cider-eval-sexp-fu
+      (advice-add 'cider-esf--bounds-of-last-sexp :around 'evil-collection-cider-last-sexp)))
+
+  (when evil-collection-settings-setup-debugger-keys
+    (add-hook 'cider-mode-hook #'evil-normalize-keymaps)
+    (add-hook 'cider--debug-mode-hook #'evil-normalize-keymaps)
+    (evil-collection-define-key 'normal 'cider-mode-map
+      [f6] 'cider-browse-instrumented-defs
+      [f9] 'cider-debug-defun-at-point)
+
+    (evil-collection-define-key 'normal 'cider--debug-mode-map
+      "b" 'cider-debug-defun-at-point
+      "n" 'evil-collection-cider-debug-next
+      "c" 'evil-collection-cider-debug-continue
+      "o" 'evil-collection-cider-debug-out
+      "q" 'evil-collection-cider-debug-quit
+      "e" 'evil-collection-cider-debug-eval
+      "J" 'evil-collection-cider-debug-inject
+      "I" 'evil-collection-cider-debug-inspect
+      "L" 'evil-collection-cider-debug-locals
+      "H" 'cider-debug-move-here))
+
+  (evil-collection-define-key '(normal visual) 'cider-mode-map
+    "gd" 'cider-find-var
+    (kbd "C-t") 'cider-pop-back
+    "gz" 'cider-switch-to-repl-buffer
+    "gf" 'cider-find-resource
+    "K" 'cider-doc)
+
+  (evil-collection-define-key '(normal visual) 'cider-repl-mode-map
+    ;; FIXME: This seems to get overwritten by `cider-switch-to-repl-buffer'.
+    "gz" 'cider-switch-to-last-clojure-buffer
+
+    "gd" 'cider-find-var
+    (kbd "C-t") 'cider-pop-back
+    "gr" 'cider-refresh
+    "gf" 'cider-find-resource
+    "K" 'cider-doc)
+
+  (evil-collection-define-key 'normal 'cider-test-report-mode-map
+    (kbd "C-c ,") 'cider-test-commands-map
+    (kbd "C-c C-t") 'cider-test-commands-map
+    (kbd "M-p") 'cider-test-previous-result
+    (kbd "M-n") 'cider-test-next-result
+
+    ;; goto
+    "gd" 'cider-test-jump
+
+    (kbd "<backtab>") 'cider-test-previous-result
+    (kbd "<tab>") 'cider-test-next-result
+    (kbd "<return>") 'cider-test-jump
+    "t" 'cider-test-jump
+    "d" 'cider-test-ediff
+    "e" 'cider-test-stacktrace
+    "f" 'cider-test-rerun-failed-tests
+    "n" 'cider-test-run-ns-tests
+    "L" 'cider-test-run-loaded-tests
+    "p" 'cider-test-run-project-tests
+    "gr" 'cider-test-run-test
+    "q" 'cider-popup-buffer-quit-function)
+
+  (evil-collection-define-key 'normal 'cider-macroexpansion-mode-map
+    ;; quit
+    "q" 'cider-popup-buffer-quit-function
+
+    "r" 'cider-macroexpand-again
+    "K" 'cider-doc ; Evil has `evil-lookup'.
+    "J" 'cider-javadoc
+    "." 'cider-find-var
+    "m" 'cider-macroexpand-1-inplace
+    "a" 'cider-macroexpand-all-inplace
+    "u" 'cider-macroexpand-undo
+    [remap undo] 'cider-macroexpand-undo)
+
+  (evil-collection-define-key 'normal 'cider-connections-buffer-mode-map
+    "d" 'cider-connections-make-default
+    "c" 'cider-connection-browser
+    "x" 'cider-connections-close-connection
+    (kbd "<return>") 'cider-connections-goto-connection
+    "g?" 'describe-mode)
+
+  (evil-set-initial-state 'cider-stacktrace-mode 'normal)
+  (evil-collection-define-key 'normal 'cider-stacktrace-mode-map
+    (kbd "C-k") 'cider-stacktrace-previous-cause
+    (kbd "C-j") 'cider-stacktrace-next-cause
+    (kbd "gk") 'cider-stacktrace-previous-cause
+    (kbd "gj") 'cider-stacktrace-next-cause
+    (kbd "[") 'cider-stacktrace-previous-cause
+    (kbd "]") 'cider-stacktrace-next-cause
+    "gd" 'cider-stacktrace-jump
+    "q" 'cider-popup-buffer-quit-function
+    "J" 'cider-stacktrace-toggle-java
+    "C" 'cider-stacktrace-toggle-clj
+    "R" 'cider-stacktrace-toggle-repl
+    "T" 'cider-stacktrace-toggle-tooling
+    "D" 'cider-stacktrace-toggle-duplicates
+    "P" 'cider-stacktrace-show-only-project
+    "A" 'cider-stacktrace-toggle-all
+    "1" 'cider-stacktrace-cycle-cause-1
+    "2" 'cider-stacktrace-cycle-cause-2
+    "3" 'cider-stacktrace-cycle-cause-3
+    "4" 'cider-stacktrace-cycle-cause-4
+    "5" 'cider-stacktrace-cycle-cause-5
+    "0" 'cider-stacktrace-cycle-all-causes
+    (kbd "TAB") 'cider-stacktrace-cycle-current-cause
+    [backtab] 'cider-stacktrace-cycle-all-causes)
+
+  (add-hook 'cider-inspector-mode-hook #'evil-normalize-keymaps)
+  (evil-collection-define-key 'normal 'cider-inspector-mode-map
+    "q" 'quit-window
+    (kbd "RET") 'cider-inspector-operate-on-point
+    [mouse-1] 'cider-inspector-operate-on-click
+    "L" 'cider-inspector-pop
+    "gr" 'cider-inspector-refresh
+    ;; Page-up/down
+    (kbd "C-j") 'cider-inspector-next-page
+    (kbd "C-k") 'cider-inspector-prev-page
+    " " 'cider-inspector-next-page
+    "s" 'cider-inspector-set-page-size
+    (kbd "]") 'cider-inspector-next-inspectable-object
+    (kbd "[") 'cider-inspector-previous-inspectable-object
+    "gj" 'cider-inspector-next-inspectable-object
+    "gk" 'cider-inspector-previous-inspectable-object))
+
+(provide 'evil-collection-cider)
+;;; evil-collection-cider.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cider.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cider.elc
new file mode 100644
index 000000000000..7087f4db5f34
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cider.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cmake-mode.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cmake-mode.el
new file mode 100644
index 000000000000..7d0b4556fa1a
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cmake-mode.el
@@ -0,0 +1,43 @@
+;;; evil-collection-cmake-mode.el --- Bindings for `cmake-mode' -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `cmake-mode'
+
+;;; Code:
+(require 'evil-collection)
+(require 'cmake-mode nil t)
+
+(defvar cmake-tab-width)
+(defun evil-collection-cmake-mode-set-evil-shift-width ()
+  "Set `evil-shift-width' according to `cmake-tab-with'."
+  (setq-local evil-shift-width cmake-tab-width))
+
+(defun evil-collection-cmake-mode-setup ()
+  "Set up `evil' bindings for `cmake-mode'."
+  (add-hook 'cmake-mode-hook #'evil-collection-cmake-mode-set-evil-shift-width))
+
+(provide 'evil-collection-cmake-mode)
+;;; evil-collection-cmake-mode.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cmake-mode.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cmake-mode.elc
new file mode 100644
index 000000000000..be4ec93a5176
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cmake-mode.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-comint.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-comint.el
new file mode 100644
index 000000000000..4301fc66fdb0
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-comint.el
@@ -0,0 +1,54 @@
+;;; evil-collection-comint.el --- Bindings for `comint-mode'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, comint, processes
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `comint-mode'.
+
+;;; Code:
+(require 'comint)
+(require 'evil-collection)
+
+(defconst evil-collection-comint-maps '(comint-mode-map))
+
+(defun evil-collection-comint-setup ()
+  "Set up `evil' bindings for `comint'."
+  (when evil-want-C-d-scroll
+    (evil-collection-define-key 'normal 'comint-mode-map
+      (kbd "C-d") #'evil-scroll-down))
+
+  (evil-collection-define-key 'normal 'comint-mode-map
+    (kbd "C-j") #'comint-next-input
+    (kbd "C-k") #'comint-previous-input
+    (kbd "gj") #'comint-next-input
+    (kbd "gk") #'comint-previous-input
+    (kbd "]") #'comint-next-input
+    (kbd "[") #'comint-previous-input)
+
+  (evil-collection-define-key 'insert 'comint-mode-map
+    (kbd "<up>") #'comint-previous-input
+    (kbd "<down>") #'comint-next-input))
+
+(provide 'evil-collection-comint)
+;;; evil-collection-comint.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-comint.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-comint.elc
new file mode 100644
index 000000000000..6ce75455c3f6
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-comint.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-company.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-company.el
new file mode 100644
index 000000000000..0014339316fc
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-company.el
@@ -0,0 +1,82 @@
+;;; evil-collection-company.el --- Bindings for `company-mode'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, company, abbrev, convenience, matching
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `company-mode'.
+
+;;; Code:
+(require 'company nil t)
+(require 'evil-collection)
+
+(declare-function company-tng-configure-default "company-tng")
+
+(defgroup evil-collection-company nil
+  "Evil bindings for `company-mode'."
+  :group 'evil-collection)
+
+(defcustom evil-collection-company-use-tng t
+  "Enable company-tng through `company-tng-configure-default'.
+
+This mirrors ycmd's behavior for a completion experience more
+similar to YouCompleteMe.
+
+Note that for changes to take effect, this variable may have to
+be set through custom or before evil-collection loads."
+  :group 'evil-collection-company
+  :type 'boolean)
+
+(defvar company-active-map)
+(defvar company-search-map)
+
+(defconst evil-collection-company-maps '(company-active-map company-search-map))
+
+(defun evil-collection-company-setup ()
+  "Set up `evil' bindings for `company'."
+  (evil-collection-define-key nil 'company-active-map
+    (kbd "C-n") 'company-select-next-or-abort
+    (kbd "C-p") 'company-select-previous-or-abort
+    (kbd "C-j") 'company-select-next-or-abort
+    (kbd "C-k") 'company-select-previous-or-abort
+    (kbd "M-j") 'company-select-next
+    (kbd "M-k") 'company-select-previous)
+
+  (when evil-want-C-u-scroll
+    (evil-collection-define-key nil 'company-active-map (kbd "C-u") 'company-previous-page))
+
+  (when evil-want-C-d-scroll
+    (evil-collection-define-key nil 'company-active-map (kbd "C-d") 'company-next-page))
+
+  (evil-collection-define-key nil 'company-search-map
+    (kbd "C-j") 'company-select-next-or-abort
+    (kbd "C-k") 'company-select-previous-or-abort
+    (kbd "M-j") 'company-select-next
+    (kbd "M-k") 'company-select-previous
+    (kbd "<escape>") 'company-search-abort)
+
+  ;; Sets up YCMD like behavior.
+  (when evil-collection-company-use-tng (company-tng-configure-default)))
+
+(provide 'evil-collection-company)
+;;; evil-collection-company.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-company.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-company.elc
new file mode 100644
index 000000000000..dfd407aa9336
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-company.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-compile.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-compile.el
new file mode 100644
index 000000000000..de750d4022d5
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-compile.el
@@ -0,0 +1,60 @@
+;;; evil-collection-compile.el --- Evil bindings for `compile' -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, compile, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `compile'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'compile)
+
+(defconst evil-collection-compile-maps '(compilation-mode-map))
+
+(defun evil-collection-compile-setup ()
+  "Set up `evil' bindings for `compile'."
+  (evil-set-initial-state 'compilation-mode 'normal)
+
+  (evil-collection-define-key 'normal 'compilation-mode-map
+    "g?" 'describe-mode
+    "?" evil-collection-evil-search-backward
+    "gg" 'evil-goto-first-line
+    "0" 'evil-digit-argument-or-evil-beginning-of-line
+    [mouse-2] 'compile-goto-error
+    [follow-link] 'mouse-face
+    (kbd "<return>") 'compile-goto-error
+
+    "go" 'compilation-display-error
+    (kbd "S-<return>") 'compilation-display-error
+
+    "gj" 'compilation-next-error
+    "gk" 'compilation-previous-error
+    (kbd "C-j") 'compilation-next-error
+    (kbd "C-k") 'compilation-previous-error
+    "[" 'compilation-previous-file
+    "]" 'compilation-next-file
+    "gr" 'recompile))
+
+(provide 'evil-collection-compile)
+;;; evil-collection-compile.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-compile.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-compile.elc
new file mode 100644
index 000000000000..49938447679b
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-compile.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cus-theme.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cus-theme.el
new file mode 100644
index 000000000000..2c90a17eb3c0
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cus-theme.el
@@ -0,0 +1,64 @@
+;;; evil-collection-cus-theme.el --- Bindings for `cus-theme'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, custom themes, help, faces
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `cus-theme'.
+
+;;; Code:
+(require 'cus-theme)
+(require 'evil-collection)
+
+(defconst evil-collection-cus-theme-maps '(custom-theme-choose-mode-map
+                                           custom-new-theme-mode-map))
+
+(defun evil-collection-cus-theme-setup ()
+  "Set up `evil' bindings for `cus-theme'."
+  (evil-set-initial-state 'custom-new-theme-mode 'normal)
+  (evil-set-initial-state 'custom-theme-choose-mode 'normal)
+
+  (evil-collection-define-key 'normal 'custom-theme-choose-mode-map
+    "gj" 'widget-forward
+    "gk" 'widget-backward
+    (kbd "]") 'widget-forward
+    (kbd "[") 'widget-backward
+    (kbd "C-j") 'widget-forward
+    (kbd "C-k") 'widget-backward
+    "K" 'custom-describe-theme)
+
+  (evil-collection-define-key 'normal 'custom-new-theme-mode-map
+    "gj" 'widget-forward
+    "gk" 'widget-backward
+    (kbd "]") 'widget-forward
+    (kbd "[") 'widget-backward
+    (kbd "C-j") 'widget-forward
+    (kbd "C-k") 'widget-backward
+
+    ;; quit
+    "q" 'Custom-buffer-done
+    "ZQ" 'evil-quit
+    "ZZ" 'Custom-buffer-done))
+
+(provide 'evil-collection-cus-theme)
+;;; evil-collection-cus-theme.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cus-theme.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cus-theme.elc
new file mode 100644
index 000000000000..4b26009910c8
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-cus-theme.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-custom.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-custom.el
new file mode 100644
index 000000000000..c6cc9916a3fb
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-custom.el
@@ -0,0 +1,67 @@
+;;; evil-collection-custom.el --- Evil bindings for Customize -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, custom, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for the Customize interface.
+
+;;; Code:
+(require 'cus-edit)
+(require 'evil-collection)
+
+(defconst evil-collection-custom-maps '(custom-mode-map))
+
+(defun evil-collection-custom-setup ()
+  "Set up `evil' bindings for `Custom-mode'."
+  (evil-set-initial-state 'Custom-mode 'normal)
+
+  (evil-collection-define-key 'normal 'custom-mode-map
+    ;; motion
+    (kbd "<tab>") 'widget-forward
+    (kbd "S-<tab>") 'widget-backward
+    (kbd "<backtab>") 'widget-backward
+    (kbd "SPC") 'scroll-up-command
+    (kbd "S-SPC") 'scroll-down-command
+    (kbd "<delete>") 'scroll-down-command
+    (kbd "<return>") 'Custom-newline
+    (kbd "]") 'widget-forward
+    (kbd "[") 'widget-backward
+    ;; TODO: Should the following be added?
+    (kbd "C-j") 'widget-forward
+    (kbd "C-k") 'widget-backward
+    "gj" 'widget-forward
+    "gk" 'widget-backward
+
+    "^" 'Custom-goto-parent
+    (kbd "C-o") 'Custom-goto-parent
+    ;; TODO: Should the following be added?
+    "<" 'Custom-goto-parent
+
+    ;; quit
+    "q" 'Custom-buffer-done
+    "ZQ" 'evil-quit
+    "ZZ" 'Custom-buffer-done))
+
+(provide 'evil-collection-custom)
+;;; evil-collection-custom.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-custom.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-custom.elc
new file mode 100644
index 000000000000..348bee4b4d65
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-custom.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-daemons.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-daemons.el
new file mode 100644
index 000000000000..61e4b85e839e
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-daemons.el
@@ -0,0 +1,67 @@
+;;; evil-collection-daemons.el --- Evil Bindings for Daemons -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: Jay Kamat <jaygkamat@gmail.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, daemons, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `daemons' from the `daemons.el' package.
+
+;;; Code:
+(require 'daemons nil t)
+(require 'evil-collection)
+
+(defconst evil-collection-daemons-maps '(daemons-mode-map
+                                         daemons-output-mode-map))
+
+(defun evil-collection-daemons-setup ()
+  "Set up `evil' bindings for `daemons'."
+  (evil-collection-define-key '(normal visual) 'daemons-mode-map
+    (kbd "RET") 'daemons-status-at-point
+    "s" 'daemons-start-at-point
+    "S" 'daemons-stop-at-point
+    "r" 'daemons-reload-at-point
+    "R" 'daemons-restart-at-point
+
+    "gr" 'revert-buffer
+
+    "q" 'quit-window
+    "ZZ" 'quit-window
+    "ZQ" 'quit-window)
+
+  ;; Functions are available in daemons-output-mode-map as well
+  (evil-collection-define-key '(normal visual) 'daemons-output-mode-map
+    (kbd "RET") 'daemons-status-at-point
+    "s" 'daemons-start-at-point
+    "S" 'daemons-stop-at-point
+    "r" 'daemons-reload-at-point
+    "R" 'daemons-restart-at-point
+
+    "q" 'quit-window
+    "ZZ" 'quit-window
+    "ZQ" 'quit-window)
+
+  (evil-set-initial-state 'daemons-mode 'normal)
+  (evil-set-initial-state 'daemons-output-mode 'normal))
+
+(provide 'evil-collection-daemons)
+;;; evil-collection-daemons.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-daemons.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-daemons.elc
new file mode 100644
index 000000000000..1cc3385840ef
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-daemons.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-deadgrep.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-deadgrep.el
new file mode 100644
index 000000000000..73f8e8b0ba9d
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-deadgrep.el
@@ -0,0 +1,50 @@
+;;; evil-collection-deadgrep.el --- Bindings for deadgrep. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2018 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for deadgrep.
+
+;;; Code:
+(require 'evil-collection)
+(require 'deadgrep nil t)
+
+(defconst evil-collection-deadgrep-maps '(deadgrep-mode-map))
+
+(defun evil-collection-deadgrep-setup ()
+  "Set up `evil' bindings for deadgrep.."
+  (evil-collection-define-key 'normal 'deadgrep-mode-map
+    (kbd "RET") 'deadgrep-visit-result
+    "gr" 'deadgrep-restart
+    (kbd "C-j") 'deadgrep-forward
+    (kbd "C-k") 'deadgrep-backward
+    (kbd "TAB") 'deadgrep-toggle-file-results
+    ;; Quit
+    "q" 'quit-window
+    "ZZ" 'quit-window
+    "ZQ" 'evil-quit
+    ))
+
+(provide 'evil-collection-deadgrep)
+;;; evil-collection-deadgrep.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-deadgrep.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-deadgrep.elc
new file mode 100644
index 000000000000..46fd0641342d
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-deadgrep.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-debbugs.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-debbugs.el
new file mode 100644
index 000000000000..64a63d9e80fc
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-debbugs.el
@@ -0,0 +1,80 @@
+;;; evil-collection-debbugs.el --- Evil bindings for debbugs -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, debbugs, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for debbugs.
+
+;;; Code:
+(require 'debbugs nil t)
+(require 'evil-collection)
+
+(defconst evil-collection-debbugs-maps '(debbugs-gnu-mode-map))
+
+(defun evil-collection-debbugs-setup ()
+  "Set up `evil' bindings for `debbugs-gnu-mode'."
+  (evil-set-initial-state 'debbugs-gnu-mode 'normal)
+
+  (evil-collection-define-key 'normal 'debbugs-gnu-mode-map
+    ;; motion
+    (kbd "<tab>") 'forward-button
+    (kbd "<backtab>") 'backward-button
+    (kbd "SPC") 'scroll-up-command
+
+    (kbd "<return>") 'debbugs-gnu-select-report
+    "c" 'debbugs-gnu-send-control-message
+    "d" 'debbugs-gnu-display-status
+
+    ;; filter
+    "s" 'debbugs-gnu-narrow-to-status
+    "S" 'debbugs-gnu-search
+    ;; "S" 'debbugs-gnu-widen ; Useless if we can just press "s RET" (empty filter).
+    "x" 'debbugs-gnu-toggle-suppress
+    "r" 'debbugs-gnu-show-all-blocking-reports
+
+    ;; sort
+    "o" 'debbugs-gnu-toggle-sort
+    "O" 'tabulated-list-sort
+
+    ;; show
+    "gB" 'debbugs-gnu-show-blocking-reports
+    "gb" 'debbugs-gnu-show-blocked-by-reports
+
+    ;; mark
+    "m" 'debbugs-gnu-toggle-tag
+
+    ;; refresh
+    "gr" 'debbugs-gnu-rescan
+
+    "g?" 'debbugs-gnu-manual
+    "gt" 'debbugs-gnu-view-bug-triage
+    "g#" 'debbugs-gnu-bugs
+
+    ;; quit
+    "q" 'quit-window
+    "ZQ" 'quit-window
+    "ZZ" 'quit-window))
+
+(provide 'evil-collection-debbugs)
+;;; evil-collection-debbugs.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-debbugs.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-debbugs.elc
new file mode 100644
index 000000000000..f9ea3f357739
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-debbugs.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-debug.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-debug.el
new file mode 100644
index 000000000000..804b7a510971
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-debug.el
@@ -0,0 +1,69 @@
+;;; evil-collection-debug.el --- Evil bindings for the debugger -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, debug, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for the debugger.
+
+;;; Code:
+
+(require 'evil-collection)
+(require 'debug)
+
+(defconst evil-collection-debug-maps '(debugger-mode-map))
+
+(defun evil-collection-debug-setup ()
+  "Set up `evil' bindings for `debug'."
+  (evil-set-initial-state 'debugger-mode 'normal)
+
+  (evil-collection-define-key 'normal 'debugger-mode-map
+    ;; motion
+    (kbd "<tab>") 'forward-button
+    (kbd "S-<tab>") 'backward-button
+    (kbd "<return>") 'debug-help-follow
+    (kbd "SPC") 'next-line
+
+    "R" 'debugger-record-expression
+    "c" 'debugger-continue
+    "d" 'debugger-step-through
+
+    "x" 'debugger-eval-expression
+    "E" 'debugger-eval-expression
+
+    "J" 'debugger-jump
+
+    "gl" 'debugger-list-functions
+    "gb" 'debugger-frame
+    "r" 'debugger-return-value
+    "u" 'debugger-frame-clear
+    "L" 'debugger-toggle-locals
+    "p" 'debugger-toggle-locals
+
+    ;; quit
+    "q" 'top-level
+    "ZQ" 'evil-quit
+    "ZZ" 'top-level))
+
+(provide 'evil-collection-debug)
+;;; evil-collection-debug.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-debug.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-debug.elc
new file mode 100644
index 000000000000..e48e5031534d
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-debug.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-diff-mode.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-diff-mode.el
new file mode 100644
index 000000000000..f0f0bb1acab5
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-diff-mode.el
@@ -0,0 +1,145 @@
+;;; evil-collection-diff-mode.el --- Add Evil bindings to diff-mode -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, diff, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; Evil-Collection-Diff re-uses the read-only particularity of `diff-mode':
+;; When the buffer is read-only, enter motion state
+;; and manipulate the diffs with simple bindings.
+;; When the buffer is writage, use normal/insert states with some Evil-specific
+;; keys to ease navigation.
+;;
+;; See also `evil-collection-diff-toggle-setup'.
+
+;;; Code:
+
+(require 'evil-collection)
+(require 'diff-mode)
+
+(defconst evil-collection-diff-mode-maps '(diff-mode-map))
+
+(defun evil-collection-diff-read-only-state-switch ()
+  "Make read-only in motion state, writable in normal state."
+  (when (eq major-mode 'diff-mode)
+    (if buffer-read-only
+        (evil-motion-state)
+      (evil-normal-state))))
+
+(defun evil-collection-diff-toggle-setup ()
+  "Toggle visiting diff buffers in motion state."
+  (interactive)
+  (when (eq major-mode 'diff-mode)
+    (if (memq 'evil-collection-diff-read-only-state-switch read-only-mode-hook)
+        (remove-hook 'read-only-mode-hook 'evil-collection-diff-read-only-state-switch t)
+      (add-hook 'read-only-mode-hook 'evil-collection-diff-read-only-state-switch nil t))))
+
+;;; TODO: Report toggle function upstream?
+(defun evil-collection-diff-toggle-context-unified (start end)
+  "Toggle between context and unified views.
+
+START and END are either taken from the region (if a prefix arg is given) or
+else cover the whole buffer."
+  (interactive (if (or current-prefix-arg (use-region-p))
+                   (list (region-beginning) (region-end))
+                 (list (point-min) (point-max))))
+  ;; There seems to be no way to know whether we are in context or unified views.
+  ;; Workaround: assume that point-max will change.  This is brittle.
+  (let ((old-point-max (point-max)))
+    (diff-unified->context start end)
+    (when (= old-point-max (point-max))
+      (diff-context->unified start end))))
+
+;;; TODO: Report toggle function upstream?
+(defun evil-collection-diff-toggle-restrict-view (&optional arg)
+  "Toggle the restriction of the view to the current hunk.
+When restricting and if the prefix ARG is given, restrict the view to the
+current file instead."
+  (interactive "P")
+  (if (buffer-narrowed-p)
+      (widen)
+    (diff-restrict-view arg)))
+
+(defun evil-collection-diff-mode-setup ()
+  "Set up `evil' bindings for `diff-mode'."
+
+  ;; Don't switch to read-only/motion state by default as this can interfere
+  ;; with other modes which require a writable buffer, e.g. magit.
+  (evil-set-initial-state 'diff-mode 'normal)
+
+  (evil-collection-define-key 'normal 'diff-mode-map
+    ;; motion
+    (kbd "SPC") 'scroll-up-command
+    (kbd "S-SPC") 'scroll-down-command
+    (kbd "[") 'diff-file-prev
+    (kbd "]") 'diff-file-next
+    (kbd "C-j") 'diff-hunk-next
+    (kbd "C-k") 'diff-hunk-prev
+    "gj" 'diff-hunk-next
+    "gk" 'diff-hunk-prev
+
+    "q" 'quit-window
+
+    "\\" 'read-only-mode) ; magit has "\"
+
+  (evil-collection-define-key 'motion 'diff-mode-map
+    ;; motion
+    (kbd "SPC") 'scroll-up-command
+    (kbd "S-SPC") 'scroll-down-command
+    (kbd "[") 'diff-file-prev
+    (kbd "]") 'diff-file-next
+    (kbd "C-j") 'diff-hunk-next
+    (kbd "C-k") 'diff-hunk-prev
+    "gj" 'diff-hunk-next
+    "gk" 'diff-hunk-prev
+
+    (kbd "<return>") 'diff-goto-source
+    "A" 'diff-add-change-log-entries-other-window
+
+    "a" 'diff-apply-hunk
+    "*" 'diff-refine-hunk
+    "D" 'diff-file-kill
+    "d" 'diff-hunk-kill
+
+    "ge" 'diff-ediff-patch
+    "i" 'next-error-follow-minor-mode
+    "o" 'evil-collection-diff-toggle-restrict-view
+    "~" 'diff-reverse-direction
+    "s" 'diff-split-hunk
+    "c" 'diff-test-hunk
+    "x" 'evil-collection-diff-toggle-context-unified
+    "#" 'diff-ignore-whitespace-hunk
+
+    "\\" 'read-only-mode)) ; magit has "\"
+
+
+
+(add-hook 'diff-mode-hook 'evil-collection-diff-toggle-setup)
+
+(defun evil-collection-diff-unload-function ()
+  "For `unload-feature'."
+  (remove-hook 'diff-mode-hook 'evil-collection-diff-toggle-setup))
+
+(provide 'evil-collection-diff-mode)
+;;; evil-collection-diff-mode.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-diff-mode.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-diff-mode.elc
new file mode 100644
index 000000000000..2048783300b1
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-diff-mode.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-dired.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-dired.el
new file mode 100644
index 000000000000..a3c3d65f9f14
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-dired.el
@@ -0,0 +1,190 @@
+;;; evil-collection-dired.el --- Evil bindings for Dired -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, dired, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for Dired.
+
+;;; Code:
+(require 'dired)
+(require 'evil-collection)
+
+(defconst evil-collection-dired-maps '(dired-mode-map))
+
+(defun evil-collection-dired-setup ()
+  "Set up `evil' bindings for `dired'."
+  (evil-collection-define-key 'normal 'dired-mode-map
+    "q" 'quit-window
+    "j" 'dired-next-line
+    "k" 'dired-previous-line
+    [mouse-2] 'dired-mouse-find-file-other-window
+    [follow-link] 'mouse-face
+    ;; Commands to mark or flag certain categories of files
+    "#" 'dired-flag-auto-save-files
+    "." 'dired-clean-directory
+    "~" 'dired-flag-backup-files
+    ;; Upper case keys (except !) for operating on the marked files
+    "A" 'dired-do-find-regexp
+    "C" 'dired-do-copy
+    "B" 'dired-do-byte-compile
+    "D" 'dired-do-delete
+    "gG" 'dired-do-chgrp ;; FIXME: This can probably live on a better binding.
+    "H" 'dired-do-hardlink
+    "L" 'dired-do-load
+    "M" 'dired-do-chmod
+    "O" 'dired-do-chown
+    "P" 'dired-do-print
+    "Q" 'dired-do-find-regexp-and-replace
+    "R" 'dired-do-rename
+    "S" 'dired-do-symlink
+    "T" 'dired-do-touch
+    "X" 'dired-do-shell-command
+    "Z" 'dired-do-compress
+    "c" 'dired-do-compress-to
+    "!" 'dired-do-shell-command
+    "&" 'dired-do-async-shell-command
+    ;; Comparison commands
+    "=" 'dired-diff
+    ;; Tree Dired commands
+    (kbd "M-C-?") 'dired-unmark-all-files
+    (kbd "M-C-d") 'dired-tree-down
+    (kbd "M-C-u") 'dired-tree-up
+    (kbd "M-C-n") 'dired-next-subdir
+    (kbd "M-C-p") 'dired-prev-subdir
+    ;; move to marked files
+    (kbd "M-{") 'dired-prev-marked-file
+    (kbd "M-}") 'dired-next-marked-file
+    ;; Make all regexp commands share a `%' prefix:
+    ;; We used to get to the submap via a symbol dired-regexp-prefix,
+    ;; but that seems to serve little purpose, and copy-keymap
+    ;; does a better job without it.
+    "%" nil
+    "%u" 'dired-upcase
+    "%l" 'dired-downcase
+    "%d" 'dired-flag-files-regexp
+    "%g" 'dired-mark-files-containing-regexp
+    "%m" 'dired-mark-files-regexp
+    "%r" 'dired-do-rename-regexp
+    "%C" 'dired-do-copy-regexp
+    "%H" 'dired-do-hardlink-regexp
+    "%R" 'dired-do-rename-regexp
+    "%S" 'dired-do-symlink-regexp
+    "%&" 'dired-flag-garbage-files
+    ;; mark
+    "*" nil
+    "**" 'dired-mark-executables
+    "*/" 'dired-mark-directories
+    "*@" 'dired-mark-symlinks
+    "*%" 'dired-mark-files-regexp
+    "*(" 'dired-mark-sexp
+    "*." 'dired-mark-extension
+    "*O" 'dired-mark-omitted
+    "*c" 'dired-change-marks
+    "*s" 'dired-mark-subdir-files
+    "*m" 'dired-mark
+    "*u" 'dired-unmark
+    "*?" 'dired-unmark-all-files
+    "*!" 'dired-unmark-all-marks
+    "U" 'dired-unmark-all-marks
+    (kbd "* <delete>") 'dired-unmark-backward
+    (kbd "* C-n") 'dired-next-marked-file
+    (kbd "* C-p") 'dired-prev-marked-file
+    "*t" 'dired-toggle-marks
+    ;; Lower keys for commands not operating on all the marked files
+    "a" 'dired-find-alternate-file
+    "d" 'dired-flag-file-deletion
+    "gf" 'dired-find-file
+    (kbd "C-m") 'dired-find-file
+    "gr" 'revert-buffer
+    "i" 'dired-toggle-read-only
+    "I" 'dired-maybe-insert-subdir
+    "J" 'dired-goto-file
+    "K" 'dired-do-kill-lines
+    "r" 'dired-do-redisplay
+    "m" 'dired-mark
+    "t" 'dired-toggle-marks
+    "u" 'dired-unmark                   ; also "*u"
+    "W" 'browse-url-of-dired-file
+    "x" 'dired-do-flagged-delete
+    "gy" 'dired-show-file-type ;; FIXME: This could probably go on a better key.
+    "Y" 'dired-copy-filename-as-kill
+    "+" 'dired-create-directory
+    ;; open
+    (kbd "<return>") 'dired-find-file
+    (kbd "S-<return>") 'dired-find-file-other-window
+    (kbd "M-<return>") 'dired-display-file
+    "gO" 'dired-find-file-other-window
+    "go" 'dired-view-file
+    ;; sort
+    "o" 'dired-sort-toggle-or-edit
+    ;; moving
+    "gj" 'dired-next-dirline
+    "gk" 'dired-prev-dirline
+    "[" 'dired-prev-dirline
+    "]" 'dired-next-dirline
+    "<" 'dired-prev-dirline
+    ">" 'dired-next-dirline
+    "^" 'dired-up-directory
+    " " 'dired-next-line
+    [?\S-\ ] 'dired-previous-line
+    [remap next-line] 'dired-next-line
+    [remap previous-line] 'dired-previous-line
+    ;; hiding
+    "g$" 'dired-hide-subdir ;; FIXME: This can probably live on a better binding.
+    (kbd "M-$") 'dired-hide-all
+    "(" 'dired-hide-details-mode
+    ;; isearch
+    (kbd "M-s a C-s")   'dired-do-isearch
+    (kbd "M-s a M-C-s") 'dired-do-isearch-regexp
+    (kbd "M-s f C-s")   'dired-isearch-filenames
+    (kbd "M-s f M-C-s") 'dired-isearch-filenames-regexp
+    ;; misc
+    [remap read-only-mode] 'dired-toggle-read-only
+    ;; `toggle-read-only' is an obsolete alias for `read-only-mode'
+    [remap toggle-read-only] 'dired-toggle-read-only
+    "g?" 'dired-summary
+    (kbd "<delete>") 'dired-unmark-backward
+    [remap undo] 'dired-undo
+    [remap advertised-undo] 'dired-undo
+    ;; thumbnail manipulation (image-dired)
+    (kbd "C-t d") 'image-dired-display-thumbs
+    (kbd "C-t t") 'image-dired-tag-files
+    (kbd "C-t r") 'image-dired-delete-tag
+    (kbd "C-t j") 'image-dired-jump-thumbnail-buffer
+    (kbd "C-t i") 'image-dired-dired-display-image
+    (kbd "C-t x") 'image-dired-dired-display-external
+    (kbd "C-t a") 'image-dired-display-thumbs-append
+    (kbd "C-t .") 'image-dired-display-thumb
+    (kbd "C-t c") 'image-dired-dired-comment-files
+    (kbd "C-t f") 'image-dired-mark-tagged-files
+    (kbd "C-t C-t") 'image-dired-dired-toggle-marked-thumbs
+    (kbd "C-t e") 'image-dired-dired-edit-comment-and-tags
+    ;; encryption and decryption (epa-dired)
+    ";d" 'epa-dired-do-decrypt
+    ";v" 'epa-dired-do-verify
+    ";s" 'epa-dired-do-sign
+    ";e" 'epa-dired-do-encrypt))
+
+(provide 'evil-collection-dired)
+;;; evil-collection-dired.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-dired.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-dired.elc
new file mode 100644
index 000000000000..9f8507be377d
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-dired.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-doc-view.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-doc-view.el
new file mode 100644
index 000000000000..2cd04b31b5f5
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-doc-view.el
@@ -0,0 +1,83 @@
+;;; evil-collection-doc-view.el --- Evil bindings for docview. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, bindings, files, pdf, ps, dvi
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Evil bindings for doc-view.
+
+;;; Code:
+(require 'evil-collection)
+(require 'doc-view)
+
+(defconst evil-collection-doc-view-maps '(doc-view-mode-map))
+
+(defun evil-collection-doc-view-setup ()
+  "Set up `evil' bindings for `doc-view'."
+  (evil-set-initial-state 'doc-view-mode 'normal)
+  (evil-collection-define-key 'normal 'doc-view-mode-map
+    "q" 'quit-window
+    (kbd "C-j") 'doc-view-next-page
+    (kbd "C-k") 'doc-view-previous-page
+    "gj" 'doc-view-next-page
+    "gk" 'doc-view-previous-page
+    (kbd "C-d") 'forward-page
+    "j" 'doc-view-next-line-or-next-page
+    "k" 'doc-view-previous-line-or-previous-page
+    "gg" 'doc-view-first-page
+    "G" 'doc-view-last-page
+    "J" 'doc-view-goto-page
+    (kbd "<return>") 'image-next-line
+
+    ;; zoom
+    "+" 'doc-view-enlarge
+    "=" 'doc-view-enlarge
+    "0" 'doc-view-scale-reset
+    "-" 'doc-view-shrink
+
+    "W" 'doc-view-fit-width-to-window ; Like evil-image.
+    "H" 'doc-view-fit-height-to-window ; Like evil-image.
+    "P" 'doc-view-fit-page-to-window
+    "X" 'doc-view-kill-proc
+
+    (kbd "s s") 'doc-view-set-slice
+    (kbd "s m") 'doc-view-set-slice-using-mouse
+    (kbd "s b") 'doc-view-set-slice-from-bounding-box
+    (kbd "s r") 'doc-view-reset-slice
+
+    (kbd "/") 'doc-view-search
+    (kbd "?") 'doc-view-search-backward
+    (kbd "C-t") 'doc-view-show-tooltip
+    (kbd "C-c C-c") 'doc-view-toggle-display
+    (kbd "C-c C-t") 'doc-view-open-text
+
+    ;; refresh
+    (kbd "gr") 'doc-view-revert-buffer)
+
+  ;; TODO: What if the user changes `evil-want-C-u-scroll' after this is run?
+  (when evil-want-C-u-scroll
+    (evil-collection-define-key 'normal 'doc-view-mode-map
+      (kbd "C-u") 'backward-page)))
+
+(provide 'evil-collection-doc-view)
+;;; evil-collection-doc-view.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-doc-view.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-doc-view.elc
new file mode 100644
index 000000000000..ba2eab19fa15
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-doc-view.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-edebug.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-edebug.el
new file mode 100644
index 000000000000..5a8a307c1f0a
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-edebug.el
@@ -0,0 +1,124 @@
+;;; evil-collection-edebug.el --- Evil bindings for Edebug -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, edebug, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `edebug-mode'.
+
+;;; Code:
+(require 'edebug)
+(require 'evil-collection)
+
+(defconst evil-collection-edebug-maps
+  '(edebug-mode-map
+    edebug-x-instrumented-function-list-mode-map
+    edebug-x-breakpoint-list-mode-map))
+
+(defun evil-collection-edebug-setup ()
+  "Set up `evil' bindings for `edebug'."
+  (evil-set-initial-state 'edebug-mode 'normal)
+
+  (add-hook 'edebug-mode-hook #'evil-normalize-keymaps)
+
+  (evil-collection-define-key nil 'edebug-mode-map
+    "g" nil
+    "G" nil)
+
+  ;; FIXME: Seems like other minor modes will readily clash with `edebug'.
+  ;; `lispyville' and `edebug' 's' key?
+  (evil-collection-define-key 'normal 'edebug-mode-map
+    ;; control
+    "s" 'edebug-step-mode
+    "n" 'edebug-next-mode
+    "go" 'edebug-go-mode
+    "gO" 'edebug-Go-nonstop-mode
+    "t" 'edebug-trace-mode
+    "T" 'edebug-Trace-fast-mode
+    "c" 'edebug-continue-mode
+    "C" 'edebug-Continue-fast-mode
+
+    "f" 'edebug-forward-sexp
+    "H" 'edebug-goto-here
+    "I" 'edebug-instrument-callee
+    "i" 'edebug-step-in
+    "o" 'edebug-step-out
+
+    ;; quit
+    "q" 'top-level
+    "Q" 'edebug-top-level-nonstop
+    "a" 'abort-recursive-edit
+    "S" 'edebug-stop
+
+    ;; breakpoints
+    "b" 'edebug-set-breakpoint
+    "u" 'edebug-unset-breakpoint
+    "B" 'edebug-next-breakpoint
+    "x" 'edebug-set-conditional-breakpoint
+    "X" 'edebug-set-global-break-condition
+
+    ;; evaluation
+    "r" 'edebug-previous-result
+    "e" 'edebug-eval-expression
+    (kbd "C-x C-e") 'edebug-eval-last-sexp
+    "EL" 'edebug-visit-eval-list
+
+    ;; views
+    "WW" 'edebug-where
+    "p" 'edebug-bounce-point
+    "P" 'edebug-view-outside ;; same as v
+    "WS" 'edebug-toggle-save-windows
+
+    ;; misc
+    "g?" 'edebug-help
+    "d" 'edebug-backtrace
+
+    "-" 'negative-argument
+
+    ;; statistics
+    "=" 'edebug-temp-display-freq-count
+
+    ;; GUD bindings
+    (kbd "C-c C-s") 'edebug-step-mode
+    (kbd "C-c C-n") 'edebug-next-mode
+    (kbd "C-c C-c") 'edebug-go-mode
+
+    (kbd "C-x SPC") 'edebug-set-breakpoint
+    (kbd "C-c C-d") 'edebug-unset-breakpoint
+    (kbd "C-c C-t") (lambda () (interactive) (edebug-set-breakpoint t))
+    (kbd "C-c C-l") 'edebug-where)
+
+  (with-eval-after-load 'edebug-x
+    (evil-collection-define-key 'normal 'edebug-x-instrumented-function-list-mode-map
+      "E" 'edebug-x-evaluate-function
+      "Q" 'edebug-x-clear-data
+      (kbd "<return>") 'edebug-x-find-function
+      "q" 'quit-window)
+    (evil-collection-define-key 'normal 'edebug-x-breakpoint-list-mode-map
+      (kbd "<return>") 'edebug-x-visit-breakpoint
+      "x" 'edebug-x-kill-breakpoint
+      "Q" 'edebug-x-clear-data
+      "q" 'quit-window)))
+
+(provide 'evil-collection-edebug)
+;;; evil-collection-edebug.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-edebug.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-edebug.elc
new file mode 100644
index 000000000000..3571f0f3f31c
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-edebug.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ediff.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ediff.el
new file mode 100644
index 000000000000..6e32ecc7258f
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ediff.el
@@ -0,0 +1,204 @@
+;;; evil-collection-ediff.el --- Evil bindings for ediff -*- lexical-binding: t -*-
+;; Copyright (C) 2015 Justin Burkett
+
+;; Author: Justin Burkett <justin@burkett.cc>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Homepage: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1") (evil "1.2.3"))
+;; Keywords: evil, ediff, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Make ediff a little evil. This configures ediff to be friendlier to users
+;; of vim-like keybindings. Consult the help buffer (=?=) for more info.
+
+;; Here's a table describing the bindings
+
+;; | Command                     | Original Binding | Evil-ediff  |
+;; |-----------------------------+------------------+-------------|
+;; | ediff-next-difference       | n,SPC            | C-j,n,SPC   |
+;; | ediff-previous-difference   | p,DEL            | C-k,N,p,DEL |
+;; | ediff-jump-to-difference    | j                | d           |
+;; | jump to first difference    | 1j               | gg (or 1d)  |
+;; | jump to last difference     | N/A              | G           |
+;; | copy region A to region B   | a                | a,l         |
+;; | copy region B to region A   | b                | b,h         |
+;; | scroll down 1 line          | C-u 1 v          | j           |
+;; | scroll up 1 line            | C-u 1 V          | k           |
+;; | scroll down half page       | v,C-v            | C-d,v,C-v   |
+;; | scroll up half page         | V,M-v            | C-u,V,M-v   |
+;; | scroll left                 | >                | zh          |
+;; | scroll right                | <                | zl          |
+;; | toggle highlighting         | h                | H           |
+;; | ediff-suspend               | z                | C-z         |
+
+;; Not implemented yet
+;; | restore old diff            | ra,rb,rc         | u           |
+
+;;; Code:
+
+(require 'evil-collection)
+(require 'ediff nil t)
+
+(defconst evil-collection-ediff-maps '(ediff-mode-map))
+
+(defvar evil-collection-ediff-initial-state-backup (evil-initial-state 'ediff-mode))
+(defvar evil-collection-ediff-long-help-message-compare2-backup ediff-long-help-message-compare2)
+(defvar evil-collection-ediff-long-help-message-compare3-backup  ediff-long-help-message-compare3)
+(defvar evil-collection-ediff-long-help-message-narrow2-backup  ediff-long-help-message-narrow2)
+(defvar evil-collection-ediff-long-help-message-word-backup  ediff-long-help-message-word-mode)
+(defvar evil-collection-ediff-long-help-message-merge-backup  ediff-long-help-message-merge)
+(defvar evil-collection-ediff-long-help-message-head-backup  ediff-long-help-message-head)
+(defvar evil-collection-ediff-long-help-message-tail-backup  ediff-long-help-message-tail)
+
+(defvar evil-collection-ediff-help-changed nil)
+
+(defun evil-collection-ediff-adjust-help ()
+  "Adjust long help messages to reflect evil-ediff bindings."
+  (unless evil-collection-ediff-help-changed
+    (dolist (msg '(ediff-long-help-message-compare2
+                   ediff-long-help-message-compare3
+                   ediff-long-help-message-narrow2
+                   ediff-long-help-message-word-mode
+                   ediff-long-help-message-merge
+                   ediff-long-help-message-head
+                   ediff-long-help-message-tail))
+      (dolist (chng '( ;;("^" . "  ")
+                      ("p,DEL -previous diff " . "k,N,p -previous diff ")
+                      ("n,SPC -next diff     " . "  j,n -next diff     ")
+                      ("    j -jump to diff  " . "    d -jump to diff  ")
+                      ("    h -highlighting  " . "    H -highlighting  ")
+                      ("  v/V -scroll up/dn  " . "C-u/d -scroll up/dn  ")
+                      ("  </> -scroll lt/rt  " . "zh/zl -scroll lt/rt  ")
+                      ("  z/q -suspend/quit"   . "C-z/q -suspend/quit")))
+        (setf (symbol-value msg)
+              (replace-regexp-in-string (car chng) (cdr chng) (symbol-value msg))))))
+  (setq evil-collection-ediff-help-changed t))
+
+(defun evil-collection-ediff-scroll-left (&optional arg)
+  "Scroll left."
+  (interactive "P")
+  (let ((last-command-event ?>))
+    (ediff-scroll-horizontally arg)))
+
+(defun evil-collection-ediff-scroll-right (&optional arg)
+  "Scroll right."
+  (interactive "P")
+  (let ((last-command-event ?<))
+    (ediff-scroll-horizontally arg)))
+
+(defun evil-collection-ediff-scroll-up (&optional arg)
+  "Scroll up by half of a page."
+  (interactive "P")
+  (let ((last-command-event ?V))
+    (ediff-scroll-vertically arg)))
+
+(defun evil-collection-ediff-scroll-down (&optional arg)
+  "Scroll down by half of a page."
+  (interactive "P")
+  (let ((last-command-event ?v))
+    (ediff-scroll-vertically arg)))
+
+(defun evil-collection-ediff-scroll-down-1 ()
+  "Scroll down by a line."
+  (interactive)
+  (let ((last-command-event ?v))
+    (ediff-scroll-vertically 1)))
+
+(defun evil-collection-ediff-scroll-up-1 ()
+  "Scroll down by a line."
+  (interactive)
+  (let ((last-command-event ?V))
+    (ediff-scroll-vertically 1)))
+
+(defun evil-collection-ediff-first-difference ()
+  "Jump to first difference."
+  (interactive)
+  (ediff-jump-to-difference 1))
+
+(defun evil-collection-ediff-last-difference ()
+  "Jump to last difference."
+  (interactive)
+  (ediff-jump-to-difference ediff-number-of-differences))
+
+;; (defun evil-collection-ediff-restore-diff ()
+;;   "Restore the copy of current region."
+;;   (interactive)
+;;   (ediff-restore-diff nil ?a)
+;;   (ediff-restore-diff nil ?b))
+
+(defvar evil-collection-ediff-bindings
+  '(("d"    . ediff-jump-to-difference)
+    ("H"    . ediff-toggle-hilit)
+    ("\C-e" . evil-collection-ediff-scroll-down-1)
+    ("\C-y" . evil-collection-ediff-scroll-up-1)
+    ("j"    . ediff-next-difference)
+    ("k"    . ediff-previous-difference)
+    ("N"    . ediff-previous-difference)
+    ("gg"   . evil-collection-ediff-first-difference)
+    ("G"    . evil-collection-ediff-last-difference)
+    ("\C-d" . evil-collection-ediff-scroll-down)
+    ("\C-u" . evil-collection-ediff-scroll-up)
+    ("\C-z" . ediff-suspend)
+    ("z"    . nil)
+    ("zl"   . evil-collection-ediff-scroll-right)
+    ("zh"   . evil-collection-ediff-scroll-left)
+    ;; Not working yet
+    ;; ("u"    . evil-collection-ediff-restore-diff)
+    )
+  "A list of bindings changed/added in evil-ediff.")
+
+(defun evil-collection-ediff-startup-hook ()
+  "Place evil-ediff bindings in `ediff-mode-map'."
+  (evil-make-overriding-map ediff-mode-map 'normal)
+  (dolist (entry evil-collection-ediff-bindings)
+    (define-key ediff-mode-map (car entry) (cdr entry)))
+  (unless (or ediff-3way-comparison-job
+              (eq ediff-split-window-function 'split-window-vertically))
+    (define-key ediff-mode-map "l" 'ediff-copy-A-to-B)
+    (define-key ediff-mode-map "h" 'ediff-copy-B-to-A))
+  (evil-normalize-keymaps)
+  nil)
+
+(defun evil-collection-ediff-setup ()
+  "Initialize evil-ediff."
+  (interactive)
+  (evil-set-initial-state 'ediff-mode 'normal)
+  (add-hook 'ediff-startup-hook 'evil-collection-ediff-startup-hook)
+  (evil-collection-ediff-adjust-help))
+
+(defun evil-collection-ediff-revert ()
+  "Revert changes made by evil-ediff."
+  (interactive)
+  (evil-set-initial-state 'ediff-mode evil-collection-ediff-initial-state-backup)
+  (unless evil-collection-ediff-help-changed
+    (dolist (msg
+             '((ediff-long-help-message-compare2 . ediff-long-help-message-compare2-backup)
+               (ediff-long-help-message-compare3 . ediff-long-help-message-compare3-backup)
+               (ediff-long-help-message-narrow2 . ediff-long-help-message-narrow2-backup)
+               (ediff-long-help-message-word-mode . ediff-long-help-message-word-mode-backup)
+               (ediff-long-help-message-merge . ediff-long-help-message-merge-backup)
+               (ediff-long-help-message-head . ediff-long-help-message-head-backup)
+               (ediff-long-help-message-tail . ediff-long-help-message-tail-backup)))
+      (setf (symbol-value (car msg)) (symbol-value (cdr msg)))))
+  (setq evil-collection-ediff-help-changed nil)
+  (remove-hook 'ediff-startup-hook 'evil-collection-ediff-startup-hook))
+
+(provide 'evil-collection-ediff)
+;;; evil-collection-ediff.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ediff.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ediff.elc
new file mode 100644
index 000000000000..c15e247c4a6d
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ediff.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eglot.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eglot.el
new file mode 100644
index 000000000000..7585a67f6038
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eglot.el
@@ -0,0 +1,42 @@
+;;; evil-collection-eglot.el --- Bindings for `eglot'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2018 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, eglot, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `eglot'.
+
+;;; Code:
+(require 'eglot nil t)
+(require 'evil-collection)
+
+(defconst evil-collection-eglot-maps '(eglot-mode-map))
+
+(defun evil-collection-eglot-setup ()
+  "Set up `evil' bindings for `eglot'."
+  (evil-collection-define-key 'normal 'eglot-mode-map
+    "gd" 'xref-find-definitions
+    (kbd "C-t") 'xref-pop-marker-stack
+    "K" 'eglot-help-at-point))
+
+(provide 'evil-collection-eglot)
+;;; evil-collection-eglot.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eglot.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eglot.elc
new file mode 100644
index 000000000000..10e5d3df9504
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eglot.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elfeed.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elfeed.el
new file mode 100644
index 000000000000..3a5cee06271b
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elfeed.el
@@ -0,0 +1,120 @@
+;;; evil-collection-elfeed.el --- Evil bindings for elfeed -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, elfeed, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for elfeed.
+
+;;; Code:
+(require 'elfeed nil t)
+(require 'evil-collection)
+
+(defvar elfeed-search-mode-map)
+(defvar elfeed-show-mode-map)
+
+(defconst evil-collection-elfeed-maps '(elfeed-search-mode-map
+                                        elfeed-show-mode-map))
+
+(defun evil-collection-elfeed-setup ()
+  "Set up `evil' bindings for `elfeed'."
+
+  (evil-collection-inhibit-insert-state 'elfeed-search-mode-map)
+  (evil-set-initial-state 'elfeed-search-mode 'normal)
+  (evil-collection-define-key 'normal 'elfeed-search-mode-map
+    ;; open
+    (kbd "<return>") 'elfeed-search-show-entry
+    (kbd "S-<return>") 'elfeed-search-browse-url
+    "go" 'elfeed-search-browse-url
+
+    "y" 'elfeed-search-yank
+
+    (kbd "SPC") 'scroll-up-command
+    (kbd "S-SPC") 'scroll-down-command
+
+    ;; filter
+    "s" 'elfeed-search-live-filter
+    "S" 'elfeed-search-set-filter
+
+    ;; refresh
+    "gR" 'elfeed-search-fetch ; TODO: Which update function is more useful?
+    "gr" 'elfeed-search-update--force
+
+    ;; quit
+    "q" 'quit-window
+    "ZQ" 'quit-window
+    "ZZ" 'quit-window)
+
+  (evil-collection-define-key '(normal visual) 'elfeed-search-mode-map
+    "+" 'elfeed-search-tag-all
+    "-" 'elfeed-search-untag-all
+    "U" 'elfeed-search-tag-all-unread
+    "u" 'elfeed-search-untag-all-unread)
+
+  (evil-collection-inhibit-insert-state 'elfeed-show-mode-map)
+  (evil-set-initial-state 'elfeed-show-mode 'normal)
+  (evil-collection-define-key 'normal 'elfeed-show-mode-map
+    (kbd "S-<return>") 'elfeed-show-visit
+    "go" 'elfeed-show-visit
+
+    (kbd "SPC") 'scroll-up-command
+    (kbd "S-SPC") 'scroll-down-command
+
+    ;; filter
+    "s" 'elfeed-show-new-live-search
+
+    "+" 'elfeed-show-tag
+    "-" 'elfeed-show-untag
+
+    "A" 'elfeed-show-add-enclosure-to-playlist
+    "P" 'elfeed-show-play-enclosure
+    "d" 'elfeed-show-save-enclosure
+
+    "]" 'elfeed-show-next
+    "[" 'elfeed-show-prev
+    "gj" 'elfeed-show-next
+    "gk" 'elfeed-show-prev
+    (kbd "C-j") 'elfeed-show-next
+    (kbd "C-k") 'elfeed-show-prev
+
+    ;; refresh
+    "gr" 'elfeed-show-refresh
+
+    ;; quit
+    "q" 'elfeed-kill-buffer
+    "ZQ" 'elfeed-kill-buffer
+    "ZZ" 'elfeed-kill-buffer)
+
+  (evil-collection-define-key 'operator 'elfeed-show-mode-map
+    ;; Like `eww'.
+    "u" '(menu-item
+          ""
+          nil
+          :filter (lambda (&optional _)
+                    (when (memq evil-this-operator
+                                evil-collection-yank-operators)
+                      (setq evil-inhibit-operator t)
+                      #'elfeed-show-yank)))))
+
+(provide 'evil-collection-elfeed)
+;;; evil-collection-elfeed.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elfeed.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elfeed.elc
new file mode 100644
index 000000000000..dc44d098c145
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elfeed.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elisp-mode.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elisp-mode.el
new file mode 100644
index 000000000000..4cfa5a7e04ac
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elisp-mode.el
@@ -0,0 +1,78 @@
+;;; evil-collection-elisp-mode.el --- Bindings for `elisp-mode'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, elisp, lisp
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `elisp-mode'.
+
+;;; Code:
+(require 'elisp-mode)
+(require 'evil-collection)
+
+(defconst evil-collection-elisp-mode-maps nil)
+
+(defun evil-collection-elisp-mode-last-sexp-setup-props (beg end value alt1 alt2)
+  "Set up text properties for the output of `elisp--eval-last-sexp'.
+BEG and END are the start and end of the output in current-buffer.
+VALUE is the Lisp value printed, ALT1 and ALT2 are strings for the
+alternative printed representations that can be displayed."
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "C-m") 'evil-collection-elisp-mode-return-or-last-sexp-toggle-display)
+    (define-key map [down-mouse-2] 'mouse-set-point)
+    (define-key map [mouse-2] 'elisp-last-sexp-toggle-display)
+    (add-text-properties
+     beg end
+     `(printed-value (,value ,alt1 ,alt2)
+                     mouse-face highlight
+                     keymap ,map
+                     help-echo "RET, mouse-2: toggle abbreviated display"
+                     rear-nonsticky (mouse-face keymap help-echo
+                                                printed-value)))))
+
+(defun evil-collection-elisp-mode-return-or-last-sexp-toggle-display ()
+  "Trigger RET or call `elisp-last-sexp-toggle-display'."
+  (interactive)
+  (if (eq evil-state 'insert)
+      (call-interactively
+       (lookup-key (current-global-map) (kbd "C-m")))
+    (call-interactively 'elisp-last-sexp-toggle-display)))
+
+(defun evil-collection-elisp-mode-last-sexp (command &rest args)
+  "In normal-state or motion-state, last sexp ends at point."
+  (if (and (not evil-move-beyond-eol)
+           (or (evil-normal-state-p) (evil-motion-state-p)))
+      (save-excursion
+        (unless (or (eobp) (eolp)) (forward-char))
+        (apply command args))
+    (apply command args)))
+
+(defun evil-collection-elisp-mode-setup ()
+  "Set up `evil' bindings for `elisp-mode'."
+  (unless evil-move-beyond-eol
+    (advice-add 'eval-print-last-sexp :around 'evil-collection-elisp-mode-last-sexp))
+  (advice-add 'last-sexp-setup-props
+              :override 'evil-collection-elisp-mode-last-sexp-setup-props))
+
+(provide 'evil-collection-elisp-mode)
+;;; evil-collection-elisp-mode.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elisp-mode.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elisp-mode.elc
new file mode 100644
index 000000000000..03dcb695ca3a
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elisp-mode.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elisp-refs.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elisp-refs.el
new file mode 100644
index 000000000000..3d5d5335ae4c
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elisp-refs.el
@@ -0,0 +1,51 @@
+;;; evil-collection-elisp-refs.el --- Evil bindings for Elisp Refs -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, elisp-refs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; This package provides a sane set of defaults for `elisp-refs' when using
+;; `evil-mode'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'elisp-refs nil t)
+
+(defconst evil-collection-elisp-refs-maps '(elisp-refs-mode-map))
+
+(defun evil-collection-elisp-refs-setup ()
+  "Set up `evil' bindings for `elisp-refs'."
+  (evil-collection-define-key 'normal 'elisp-refs-mode-map
+    (kbd "<tab>") 'elisp-refs-next-match
+    (kbd "<backtab>") 'elisp-refs-prev-match
+    (kbd "C-j") 'elisp-refs-next-match
+    (kbd "C-k") 'elisp-refs-prev-match
+    "gj" 'elisp-refs-next-match
+    "gk" 'elisp-refs-prev-match
+    (kbd "<return>") 'elisp-refs-visit-match
+
+    ;; quit
+    "q" 'kill-this-buffer))
+
+(provide 'evil-collection-elisp-refs)
+;;; evil-collection-elisp-refs.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elisp-refs.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elisp-refs.elc
new file mode 100644
index 000000000000..ab496d8c8e4c
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-elisp-refs.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-emms.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-emms.el
new file mode 100644
index 000000000000..cee8dc32750d
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-emms.el
@@ -0,0 +1,234 @@
+;;; evil-collection-emms.el --- Evil bindings for EMMS -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emms, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for EMMS.
+
+;;; Code:
+(require 'emms nil t)
+(require 'evil-collection)
+
+(declare-function emms-with-inhibit-read-only-t "emms")
+(declare-function emms-playlist-mode-correct-previous-yank "emms-playlist-mode")
+
+(defvar emms-browser-mode-map)
+(defvar emms-playlist-mode-map)
+
+(defconst evil-collection-emms-maps '(emms-browser-mode-map
+                                      emms-playlist-mode-map
+                                      emms-metaplaylist-mode-map
+                                      emms-stream-mode-map))
+
+(defun evil-collection-emms-playlist-mode-insert-newline-above ()
+  "Insert a newline above point."
+  (interactive)
+  (emms-with-inhibit-read-only-t
+   (evil-insert-newline-above)))
+
+(defun evil-collection-emms-playlist-mode-insert-newline-below ()
+  "Insert a newline below point."
+  (interactive)
+  (emms-with-inhibit-read-only-t
+   (evil-insert-newline-below)))
+
+(defun evil-collection-emms-playlist-mode-paste-before ()
+  "Pastes the latest yanked playlist items before the cursor position.
+The return value is the yanked text."
+  (interactive)
+  (emms-with-inhibit-read-only-t
+   (goto-char (point-at-bol))
+   (yank)
+   (emms-playlist-mode-correct-previous-yank)
+   (evil-previous-line)
+   (evil-beginning-of-line)))
+
+(defun evil-collection-emms-playlist-mode-paste-after ()
+  "Pastes the latest yanked playlist items behind point.
+The return value is the yanked text."
+  (interactive)
+  (unless (eobp) (evil-next-line))
+  (evil-collection-emms-playlist-mode-paste-before))
+
+(defun evil-collection-emms-browser-setup ()
+  "Set up `evil' bindings for `emms-browser'."
+  ;; TODO: Why doesn't evil-set-initial-state work with emms-browser-mode?
+
+  (evil-collection-inhibit-insert-state 'emms-browser-mode-map)
+  (add-hook 'emms-browser-mode-hook 'evil-normal-state)
+  (evil-collection-define-key 'normal 'emms-browser-mode-map
+    ;; playback controls
+    "x" 'emms-pause
+    "X" 'emms-stop
+    "r" 'emms-random
+    "<" 'emms-seek-backward
+    ">" 'emms-seek-forward
+    (kbd "<return>") 'emms-browser-add-tracks
+    (kbd "C-<return>") 'emms-browser-add-tracks-and-play
+
+    ;; volume controls
+    "+" 'emms-volume-raise
+    "=" 'emms-volume-raise
+    "-" 'emms-volume-lower
+
+    "u" 'emms-playlist-mode-undo
+
+    ;; motion
+    "[" 'emms-browser-prev-non-track
+    "]" 'emms-browser-next-non-track
+    (kbd "C-k") 'emms-browser-prev-non-track
+    (kbd "C-j") 'emms-browser-next-non-track
+    "gk" 'emms-browser-prev-non-track
+    "gj" 'emms-browser-next-non-track
+
+    (kbd "<tab>") 'emms-browser-toggle-subitems-recursively
+    (kbd "<backtab>") 'emms-browser-toggle-subitems-recursively
+    "^" 'emms-browser-move-up-level
+    (kbd "SPC") 'emms-browser-toggle-subitems
+    "g1" 'emms-browser-collapse-all
+    "g2" 'emms-browser-expand-to-level-2
+    "g3" 'emms-browser-expand-to-level-3
+    "g4" 'emms-browser-expand-to-level-4
+    "g0" 'emms-browser-expand-all
+    "ga" 'emms-browse-by-artist
+    "gA" 'emms-browse-by-album
+    "gb" 'emms-browse-by-genre
+    "gy" 'emms-browse-by-year
+    "gc" 'emms-browse-by-composer
+    "gp" 'emms-browse-by-performer
+    "zm" 'emms-browser-collapse-all
+    "zr" 'emms-browser-expand-all
+    "zo" 'emms-browser-expand-one-level
+    ;; TODO find a real replacement for zc
+    "zc" 'emms-browser-collapse-all
+
+    ;; TODO find a way to integrate this with evil-collection-evil-search
+    "/" 'emms-isearch-buffer ; This shows hidden items during search.
+    "n" 'isearch-repeat-forward
+    "N" 'isearch-repeat-backward
+
+    ;; filter
+    ;; "" 'emms-browser-previous-filter ; TODO: What does this do?
+    ;; "" 'emms-browser-next-filter
+
+    "s" (lookup-key emms-browser-mode-map (kbd "s"))
+    "g" (lookup-key emms-browser-mode-map (kbd "W")) ;; TODO: This overrides other "g-" prefixed keys.
+
+    "C" 'emms-browser-clear-playlist
+    "D" 'emms-browser-delete-files
+    "d" 'emms-browser-view-in-dired
+    "gd" 'emms-browser-view-in-dired)) ; "d" does the same, keep "gd" for consistency.
+
+(defun evil-collection-emms-setup ()
+  "Set up `evil' bindings for `emms'."
+  (with-eval-after-load 'emms-browser
+    (evil-collection-emms-browser-setup))
+
+  (evil-set-initial-state 'emms-playlist-mode 'normal)
+  (evil-collection-define-key 'normal 'emms-playlist-mode-map
+    ;; playback controls
+    "x" 'emms-pause
+    "X" 'emms-stop
+    "r" 'emms-random
+    "<" 'emms-seek-backward
+    ">" 'emms-seek-forward
+    (kbd "C-j") 'emms-next
+    (kbd "C-k") 'emms-previous
+    "gj" 'emms-next
+    "gk" 'emms-previous
+    (kbd "<return>") 'emms-playlist-mode-play-smart
+
+    ;; volume controls
+    "+" 'emms-volume-raise
+    "=" 'emms-volume-raise
+    "-" 'emms-volume-lower
+
+    "u" 'emms-playlist-mode-undo
+
+    ;; motion
+    "gg" 'emms-playlist-mode-first
+    "G" 'emms-playlist-mode-last
+    "]" 'emms-playlist-mode-next
+    "[" 'emms-playlist-mode-previous
+
+    "D" 'emms-playlist-mode-kill-track  ; emms-browser uses "D"
+    "C" 'emms-playlist-mode-clear
+    "O" 'evil-collection-emms-playlist-mode-insert-newline-above
+    "o" 'evil-collection-emms-playlist-mode-insert-newline-below
+    "P" 'evil-collection-emms-playlist-mode-paste-before
+    "p" 'evil-collection-emms-playlist-mode-paste-after
+
+    "u" 'emms-playlist-mode-undo
+
+    "ze" 'emms-tag-editor-edit
+    "R" 'emms-tag-editor-rename
+
+    "." 'emms-playlist-mode-center-current
+    "d" 'emms-playlist-mode-goto-dired-at-point
+    "gd" 'emms-playlist-mode-goto-dired-at-point ; "d" does the same, keep "gd" for consistency.
+
+    "zs" 'emms-show
+    "a" 'emms-playlist-mode-add-contents
+    "zp" 'emms-playlist-set-playlist-buffer
+
+    ;; filter
+    "S" (lookup-key emms-playlist-mode-map (kbd "S"))
+    "s" (lookup-key emms-playlist-mode-map (kbd "/"))
+    ;; "" 'emms-playlist-limit-to-all ; TODO: Test.
+
+    (kbd "M-y") 'emms-playlist-mode-yank-pop)
+
+  (evil-collection-define-key 'visual 'emms-playlist-mode-map
+    ;; "d" 'emms-playlist-mode-kill
+    "D" 'emms-playlist-mode-kill)
+
+  (evil-collection-define-key 'normal 'emms-browser-search-mode-map
+    "q" 'emms-browser-kill-search)
+
+  (evil-set-initial-state 'emms-metaplaylist-mode 'normal)
+  (evil-collection-define-key 'normal 'emms-metaplaylist-mode-map
+    (kbd "<return>") 'emms-metaplaylist-mode-goto-current
+    (kbd "<space>") 'emms-metaplaylist-mode-set-active
+    "gr" 'emms-metaplaylist-mode-update
+    "C" 'emms-metaplaylist-mode-new-buffer
+    "." 'emms-metaplaylist-mode-center-current
+    "D" 'emms-metaplaylist-mode-kill-buffer
+    "q" 'kill-this-buffer)
+
+  (evil-set-initial-state 'emms-stream-mode 'normal)
+  (evil-collection-define-key 'normal 'emms-stream-mode-map
+    (kbd "<return>") 'emms-stream-play
+    "j" 'emms-stream-next-line
+    "k" 'emms-stream-previous-line
+    "y" 'emms-stream-yank-bookmark
+    "d" 'emms-stream-kill-bookmark
+    "c" 'emms-stream-edit-bookmark
+    "r" 'emms-stream-edit-bookmark
+    "i" 'emms-stream-info-bookmark
+    "s" 'emms-stream-save-bookmarks-file
+    "x" 'emms-stream-toggle-default-action
+    "q" 'emms-stream-quit))
+
+(provide 'evil-collection-emms)
+;;; evil-collection-emms.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-emms.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-emms.elc
new file mode 100644
index 000000000000..70ab3844759a
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-emms.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-epa.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-epa.el
new file mode 100644
index 000000000000..31347991fb8e
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-epa.el
@@ -0,0 +1,70 @@
+;;; evil-collection-epa.el --- Evil bindings for epa-mode -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: Maximiliano Sandoval <msandova@protonmail.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, epa, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `epa-mode'.
+
+;;; Code:
+
+(require 'evil-collection)
+(require 'epa nil t)
+
+(defconst evil-collection-epa-maps '(epa-key-list-mode-map
+                                     epa-key-mode-map
+                                     epa-info-mode-map))
+
+(defun evil-collection-epa-setup ()
+  (evil-collection-define-key 'normal 'epa-key-list-mode-map
+    (kbd "<tab>") 'widget-forward
+    "gr" 'revert-buffer
+    "q" 'epa-exit-buffer
+    "E" 'epa-decrypt-file
+    "d" 'epa-delete-keys
+    "ZZ" 'quit-window
+    "ZQ" 'evil-quit
+    "V" 'epa-verify-file
+
+    ;; mark
+    "m" 'epa-mark-key
+    "u" 'epa-unmark-key
+
+    ;; Unchanged keybindings.
+    "s" 'epa-sign-file
+    "e" 'epa-encrypt-file
+    "i" 'epa-import-keys
+    "o" 'epa-export-keys)
+
+  (evil-collection-define-key 'normal 'epa-key-mode-map
+    "q" 'epa-exit-buffer
+    "ZZ" 'quit-window
+    "ZQ" 'evil-quit)
+
+  (evil-collection-define-key 'normal 'epa-info-mode-map
+    "q" 'delete-window
+    "ZZ" 'quit-window
+    "ZQ" 'evil-quit))
+
+(provide 'evil-collection-epa)
+;;; evil-collection-epa.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-epa.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-epa.elc
new file mode 100644
index 000000000000..337e9be5a950
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-epa.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ert.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ert.el
new file mode 100644
index 000000000000..31053c57be7a
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ert.el
@@ -0,0 +1,70 @@
+;;; evil-collection-ert.el --- Bindings for `ert' -*- lexical-binding: t -*-
+
+;; Copyright (C) 2018 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Bindings for `ert'.
+
+;;; Code:
+(require 'ert)
+(require 'evil-collection)
+
+(defconst evil-collection-ert-maps '(ert-results-mode-map))
+
+(defun evil-collection-ert-setup ()
+  "Set up `evil' bindings for `ert'."
+  (evil-collection-inhibit-insert-state 'ert-results-mode-map)
+  (evil-set-initial-state 'ert-results-mode 'normal)
+
+  (evil-collection-define-key 'normal 'ert-results-mode-map
+    "j" 'evil-next-line
+    "k" 'evil-previous-line
+    "h" 'evil-backward-char
+    "l" 'evil-forward-char
+    ;; Stuff that's not in the menu.
+    "J" 'ert-results-jump-between-summary-and-result
+    "L" 'ert-results-toggle-printer-limits-for-test-at-point
+    "gj" 'ert-results-next-test
+    "gk" 'ert-results-previous-test
+    "]" 'ert-results-next-test
+    "[" 'ert-results-previous-test
+    (kbd "C-j") 'ert-results-next-test
+    (kbd "C-k") 'ert-results-previous-test
+    ;; Stuff that is in the menu.
+    "gr" 'ert-results-rerun-all-tests
+    "R" 'ert-results-rerun-all-tests
+    "r" 'ert-results-rerun-test-at-point
+    "d" 'ert-results-rerun-test-at-point-debugging-errors
+    "." 'ert-results-find-test-at-point-other-window
+    "gd" 'ert-results-find-test-at-point-other-window
+    "B" 'ert-results-pop-to-backtrace-for-test-at-point
+    "M" 'ert-results-pop-to-messages-for-test-at-point
+    "s" 'ert-results-pop-to-should-forms-for-test-at-point
+    "K" 'ert-results-describe-test-at-point
+    "g?" 'ert-results-describe-test-at-point
+    "x" 'ert-delete-test
+    "T" 'ert-results-pop-to-timings))
+
+(provide 'evil-collection-ert)
+;;; evil-collection-ert.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ert.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ert.elc
new file mode 100644
index 000000000000..2e8f3de329a7
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ert.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eshell.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eshell.el
new file mode 100644
index 000000000000..724e8ddca65b
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eshell.el
@@ -0,0 +1,96 @@
+;;; evil-collection-eshell.el --- Evil bindings for Eshell -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, eshell, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for EMMS
+
+;;; Code:
+(require 'em-prompt)
+(require 'eshell)
+(require 'evil-collection)
+
+(defconst evil-collection-eshell-maps '(eshell-mode-map))
+
+(defun evil-collection-eshell-next-prompt ()
+  "`evil' wrapper around `eshell-next-prompt'."
+  (when (get-text-property (point) 'read-only)
+    ;; If at end of prompt, `eshell-next-prompt' will not move, so go backward.
+    (beginning-of-line)
+    (eshell-next-prompt 1)))
+
+(defun evil-collection-eshell-next-prompt-on-insert ()
+  "Go to next prompt on `evil' replace/insert enter."
+  (dolist (hook '(evil-replace-state-entry-hook evil-insert-state-entry-hook))
+    (add-hook hook 'evil-collection-eshell-next-prompt nil t)))
+
+(defun evil-collection-eshell-interrupt-process ()
+  "Interupt `eshell' process and enter insert state."
+  (interactive)
+  (eshell-interrupt-process)
+  (evil-insert 1))
+
+;;; `eshell-mode-map' is reset when Eshell is initialized in `eshell-mode'. We
+;;; need to add bindings to `eshell-first-time-mode-hook'.
+(defun evil-collection-eshell-setup-keys ()
+  "Set up `evil' bindings for `eshell'."
+  (evil-collection-define-key 'normal 'eshell-mode-map
+    ;; motion
+    "[" 'eshell-previous-prompt
+    "]" 'eshell-next-prompt
+    (kbd "C-k") 'eshell-previous-prompt
+    (kbd "C-j") 'eshell-next-prompt
+    "gk" 'eshell-previous-prompt
+    "gj" 'eshell-next-prompt
+    "0" 'eshell-bol
+    "^" 'eshell-bol
+    (kbd "M-h") 'eshell-backward-argument
+    (kbd "M-l") 'eshell-forward-argument
+
+    (kbd "<return>") 'eshell-send-input
+    (kbd "C-c C-c") 'evil-collection-eshell-interrupt-process)
+  (evil-collection-define-key 'insert 'eshell-mode-map
+    ;; motion
+    (kbd "M-h") 'eshell-backward-argument
+    (kbd "M-l") 'eshell-forward-argument)
+  (evil-collection-define-key 'visual 'eshell-mode-map
+    ;; motion
+    ;; TODO: This does not work with `evil-visual-line'.
+    "[" 'eshell-previous-prompt
+    "]" 'eshell-next-prompt
+    (kbd "C-k") 'eshell-previous-prompt
+    (kbd "C-j") 'eshell-next-prompt
+    "gk" 'eshell-previous-prompt
+    "gj" 'eshell-next-prompt
+    "0" 'eshell-bol
+    "^" 'eshell-bol))
+
+;; TODO: Compare this setup procedure with evil-ediff.
+(defun evil-collection-eshell-setup ()
+  "Set up `evil' bindings for `eshell'."
+  (add-hook 'eshell-mode-hook 'evil-collection-eshell-next-prompt-on-insert)
+  (add-hook 'eshell-first-time-mode-hook 'evil-collection-eshell-setup-keys))
+
+(provide 'evil-collection-eshell)
+;;; evil-collection-eshell.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eshell.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eshell.elc
new file mode 100644
index 000000000000..644a1187f1e3
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eshell.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eval-sexp-fu.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eval-sexp-fu.el
new file mode 100644
index 000000000000..2cda8a15c706
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eval-sexp-fu.el
@@ -0,0 +1,60 @@
+;;; evil-collection-eval-sexp-fu.el --- Bindings for `eval-sexp-fu'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, eval-sexp-fu, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `eval-sexp-fu'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'eval-sexp-fu nil t)
+
+(defconst evil-collection-eval-sexp-fu-maps nil)
+
+(defun evil-collection-eval-sexp-fu-bounds-of-thing-at-point-sexp (command &rest args)
+  "In normal-state or motion-state, last sexp ends at point."
+  (if (and (eq (nth 0 args) 'sexp)
+           (and (not evil-move-beyond-eol)
+                (or (evil-normal-state-p) (evil-motion-state-p))))
+      (save-excursion
+        (unless (or (eobp) (eolp)) (forward-char))
+        (apply command args))
+    (apply command args)))
+
+(defun evil-collection-eval-sexp-fu-advise-bounds-of-thing-at-point (command &rest args)
+  "Advise `bounds-of-thing-at-point' to handle `evil's `evil-move-beyond-eol'."
+  (advice-add 'bounds-of-thing-at-point
+              :around 'evil-collection-eval-sexp-fu-bounds-of-thing-at-point-sexp)
+  (apply command args)
+  (advice-remove 'bounds-of-thing-at-point
+                 'evil-collection-eval-sexp-fu-bounds-of-thing-at-point-sexp))
+
+(defun evil-collection-eval-sexp-fu-setup ()
+  "Set up `evil' with `eval-sexp-fu'."
+  (unless evil-move-beyond-eol
+    (advice-add 'ad-Advice-eval-last-sexp
+                :around 'evil-collection-eval-sexp-fu-advise-bounds-of-thing-at-point)))
+
+(provide 'evil-collection-eval-sexp-fu)
+;;; evil-collection-eval-sexp-fu.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eval-sexp-fu.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eval-sexp-fu.elc
new file mode 100644
index 000000000000..e9d901c0a02f
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eval-sexp-fu.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-evil-mc.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-evil-mc.el
new file mode 100644
index 000000000000..097f25cf5050
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-evil-mc.el
@@ -0,0 +1,60 @@
+;;; evil-collection-evil-mc.el --- Bindings for evil-mc -*- lexical-binding: t -*-
+
+;; Copyright (C) 2018 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.2
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for evil-mc.
+
+;;; Code:
+(require 'evil-collection)
+(require 'evil-mc nil t)
+(eval-when-compile (require 'subr-x)) ; `if-let*' and `when-let*'
+
+(defvar evil-mc-map)
+(defconst evil-collection-evil-mc-maps '(evil-mc-mode-map))
+
+(defun evil-collection-evil-mc-clear-keymap (&rest _args)
+  "Brute force remove `evil-mc-key-map' from `evil-mode-map-alist'."
+  (evil-collection-when-let*
+      ((evil-mc-map (assq 'evil-mc-mode evil-mode-map-alist)))
+    (setq evil-mode-map-alist
+          (delq evil-mc-map evil-mode-map-alist))))
+
+(defun evil-collection-evil-mc-setup ()
+  "Set up `evil' bindings for evil-mc."
+  ;; `evil-mc''s default keybindings conflict with `evil-collection' using the
+  ;; 'gr' prefix. We brute force remove the keymap so that packages will play
+  ;; nice. Open to other suggestions on how to work with `evil-mc'.
+  ;; See https://github.com/emacs-evil/evil-collection/issues/184 for more
+  ;; details.
+  (advice-add 'evil-normalize-keymaps
+              :after 'evil-collection-evil-mc-clear-keymap)
+
+  ;; https://github.com/gabesoft/evil-mc/issues/70
+  (add-hook 'evil-mc-after-cursors-deleted
+            (lambda ()
+              (setq evil-was-yanked-without-register t))))
+
+(provide 'evil-collection-evil-mc)
+;;; evil-collection-evil-mc.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-evil-mc.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-evil-mc.elc
new file mode 100644
index 000000000000..d17f5e76264d
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-evil-mc.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eww.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eww.el
new file mode 100644
index 000000000000..cc463e37fb6c
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eww.el
@@ -0,0 +1,152 @@
+;;; evil-collection-eww.el --- Evil bindings for EWW -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, eww, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for EWW.
+
+;;; Code:
+(require 'eww)
+(require 'evil-collection)
+
+(defvar evil-collection-eww-maps '(eww-mode-map
+                                   eww-history-mode-map
+                                   eww-buffers-mode-map
+                                   eww-bookmark-mode-map))
+
+(defun evil-collection-eww-setup ()
+  "Set up `evil' bindings for `eww'."
+
+  (evil-collection-define-key 'normal 'eww-mode-map
+    "^" 'eww-up-url
+    "u" 'eww-up-url
+    "U" 'eww-top-url
+    (kbd "<backspace>") 'eww-back-url
+    "H" 'eww-back-url
+    "L" 'eww-forward-url
+
+    "gf" 'eww-view-source               ; Like qutebrowser.
+
+    "&" 'eww-browse-with-external-browser
+    "gc" 'url-cookie-list
+    "zd" 'eww-toggle-paragraph-direction
+    "ze" 'eww-set-character-encoding
+    "zf" 'eww-toggle-fonts
+    "d" 'eww-download
+    "m" 'eww-add-bookmark
+    "R" 'eww-readable                   ; Default binding.
+    "r" 'eww-readable
+
+    "]" 'eww-next-url
+    "[" 'eww-previous-url
+    "gj" 'eww-next-url
+    "gk" 'eww-previous-url
+
+    ;; open
+    (kbd "S-<return>") 'eww-browse-with-external-browser
+    "go" 'eww-browse-with-external-browser
+    "o" 'eww                            ; Like qutebrowser.
+
+    (kbd "SPC") 'scroll-up-command
+    (kbd "S-SPC") 'scroll-down-command
+    (kbd "<tab>") 'shr-next-link
+    (kbd "<backtab>") 'shr-previous-link
+
+    ;; bookmarks
+    "gb" 'eww-list-bookmarks
+
+    "gh" 'eww-list-histories
+    "gt" 'eww-list-buffers              ; Like dwb, qutebrowser.
+
+    ;; refresh
+    "gr" 'eww-reload
+
+    ;; quit
+    "q" 'quit-window
+    "ZQ" 'quit-window
+    "ZZ" 'quit-window)
+
+  (evil-collection-define-key 'operator 'eww-mode-map
+    "u" '(menu-item
+          ""
+          nil
+          :filter (lambda (&optional _)
+                    (when (memq evil-this-operator
+                                evil-collection-yank-operators)
+                      (setq evil-inhibit-operator t)
+                      #'eww-copy-page-url))))
+
+  (evil-collection-inhibit-insert-state 'eww-history-mode-map)
+  (evil-set-initial-state 'eww-history-mode 'normal)
+  (evil-collection-define-key 'normal 'eww-history-mode-map
+    (kbd "<return>") 'eww-history-browse
+    ;; refresh
+    "gr" 'revert-buffer
+    ;; quit
+    "q" 'quit-window
+    "ZQ" 'quit-window
+    "ZZ" 'quit-window)
+
+  (evil-collection-inhibit-insert-state 'eww-buffers-mode-map)
+  (evil-set-initial-state 'eww-buffers-mode 'normal)
+  (evil-collection-define-key 'normal 'eww-buffers-mode-map
+    "D" 'eww-buffer-kill
+    (kbd "<return>") 'eww-buffer-select
+    "]" 'eww-buffer-show-next
+    "[" 'eww-buffer-show-previous
+    "gj" 'eww-buffer-show-next
+    "gk" 'eww-buffer-show-previous
+    ;; refresh
+    "gr" 'revert-buffer
+    ;; quit
+    "q" 'quit-window
+    "ZQ" 'quit-window
+    "ZZ" 'quit-window)
+
+  (evil-collection-inhibit-insert-state 'eww-bookmark-mode-map)
+  (evil-set-initial-state 'eww-bookmark-mode 'normal)
+  (evil-collection-define-key 'normal 'eww-bookmark-mode-map
+    "D" 'eww-bookmark-kill
+    "P" 'eww-bookmark-yank
+
+    (kbd "<return>") 'eww-bookmark-browse
+    ;; refresh
+    "gr" 'revert-buffer
+    ;; quit
+    "q" 'quit-window
+    "ZQ" 'quit-window
+    "ZZ" 'quit-window)
+
+  (evil-collection-define-key 'operator 'eww-bookmark-mode-map
+    "u" '(menu-item
+          ""
+          nil
+          :filter (lambda (&optional _)
+                    (when (memq evil-this-operator
+                                evil-collection-yank-operators)
+                      (setq evil-inhibit-operator t)
+                      #'eww-copy-page-url)))))
+
+(provide 'evil-collection-eww)
+;;; evil-collection-eww.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eww.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eww.elc
new file mode 100644
index 000000000000..626a3353e122
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-eww.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-flycheck.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-flycheck.el
new file mode 100644
index 000000000000..b49ae6bed4ce
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-flycheck.el
@@ -0,0 +1,55 @@
+;;; evil-collection-flycheck.el --- Evil bindings for flycheck -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, flycheck, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `flycheck-mode'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'flycheck nil t)
+
+(defvar flycheck-error-list-mode-map)
+
+(defconst evil-collection-flycheck-maps '(flycheck-error-list-mode-map))
+
+(defun evil-collection-flycheck-setup ()
+  "Set up `evil' bindings for `flycheck'."
+  (evil-set-initial-state 'flycheck-error-list-mode 'normal)
+  (evil-collection-define-key 'normal 'flycheck-error-list-mode-map
+    "gj" 'flycheck-error-list-next-error
+    "gk" 'flycheck-error-list-previous-error
+    (kbd "C-j") 'flycheck-error-list-next-error
+    (kbd "C-k") 'flycheck-error-list-previous-error
+    "]" 'flycheck-error-list-next-error
+    "[" 'flycheck-error-list-previous-error
+    "gr" 'flycheck-error-list-check-source
+    "s" 'flycheck-error-list-set-filter
+    "S" 'flycheck-error-list-reset-filter
+    "x" 'flycheck-error-list-explain-error
+    (kbd "<return>") 'flycheck-error-list-goto-error
+    "q" 'quit-window))
+
+(provide 'evil-collection-flycheck)
+;;; evil-collection-flycheck.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-flycheck.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-flycheck.elc
new file mode 100644
index 000000000000..dc55ae691cf0
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-flycheck.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-flymake.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-flymake.el
new file mode 100644
index 000000000000..1b63d058cc4a
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-flymake.el
@@ -0,0 +1,49 @@
+;;; evil-collection-flymake.el --- Evil Bindings for Flymake -*- lexical-binding: t -*-
+
+;; Copyright (C) 2018 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, flymake, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `flymake-mode'.
+
+;;; Code:
+(require 'flymake)
+(require 'evil-collection)
+
+(defconst evil-collection-flymake-maps '(flymake-mode-map
+                                         flymake-diagnostics-buffer-mode-map))
+
+(defun evil-collection-flymake-setup ()
+  "Set up `evil' bindings for `flymake'."
+  (evil-collection-define-key
+    '(normal visual) 'flymake-diagnostics-buffer-mode-map
+    "q" 'quit-window
+    (kbd "RET") 'flymake-goto-diagnostic
+    (kbd "<S-return>") 'flymake-show-diagnostic
+    (kbd "M-RET") 'flymake-show-diagnostic
+    (kbd "go") 'flymake-show-diagnostic
+    (kbd "gO") 'flymake-show-diagnostic
+    "." 'flymake-goto-diagnostic))
+
+(provide 'evil-collection-flymake)
+;;; evil-collection-flymake.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-flymake.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-flymake.elc
new file mode 100644
index 000000000000..401b8489afe0
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-flymake.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-free-keys.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-free-keys.el
new file mode 100644
index 000000000000..be26fd61ed69
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-free-keys.el
@@ -0,0 +1,52 @@
+;;; evil-collection-free-keys.el --- Bindings for `free-keys' -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `free-keys'.
+(require 'evil-collection)
+(require 'free-keys nil t)
+
+;;; Code:
+(defvar free-keys-mode-map)
+
+(defconst evil-collection-free-keys-maps '(free-keys-mode-map))
+
+(defun evil-collection-free-keys-set-header-line-format ()
+  "Tweak `header-line-format' locally for `free-keys'."
+  (setq-local header-line-format
+              "Help: (c) change buffer (p) change prefix (q) quit"))
+
+(defun evil-collection-free-keys-setup ()
+  "Set up `evil' bindings for `free-keys'."
+  (add-hook 'free-keys-mode-hook
+            #'evil-collection-free-keys-set-header-line-format)
+  (evil-set-initial-state 'free-keys-mode 'normal)
+  (evil-collection-define-key 'normal 'free-keys-mode-map
+    "c" 'free-keys-change-buffer
+    "p" 'free-keys-set-prefix
+    "q" 'quit-window))
+
+(provide 'evil-collection-free-keys)
+;;; evil-collection-free-keys.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-free-keys.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-free-keys.elc
new file mode 100644
index 000000000000..400e9e58fc2b
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-free-keys.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-geiser.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-geiser.el
new file mode 100644
index 000000000000..515c163e5eab
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-geiser.el
@@ -0,0 +1,103 @@
+;;; evil-collection-geiser.el --- Bindings for `geiser'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, geiser, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `geiser'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'geiser nil t)
+
+(defvar geiser-debug-mode-map)
+(defvar geiser-doc-mode-map)
+
+(defconst evil-collection-geiser-maps '(geiser-debug-mode-map
+                                        geiser-doc-mode-map
+                                        geiser-repl-mode-map
+                                        geiser-mode-map))
+
+(defun evil-collection-geiser-last-sexp (command &rest args)
+  "In normal-state or motion-state, last sexp ends at point."
+  (if (and (not evil-move-beyond-eol)
+           (or (evil-normal-state-p) (evil-motion-state-p)))
+      (save-excursion
+        (unless (or (eobp) (eolp)) (forward-char))
+        (apply command args))
+    (apply command args)))
+
+(defun evil-collection-geiser-setup ()
+  "Set up bindings for `geiser'."
+  (unless evil-move-beyond-eol
+    (advice-add 'geiser-eval-last-sexp :around 'evil-collection-geiser-last-sexp)
+    (advice-add 'geiser-eval-last-sexp-and-print :around 'evil-collection-geiser-last-sexp))
+
+  (evil-set-initial-state 'geiser-debug-mode 'normal)
+  (evil-set-initial-state 'geiser-doc-mode 'normal)
+
+  (evil-collection-define-key 'normal 'geiser-debug-mode-map
+    "q" 'quit-window)
+
+  (evil-collection-define-key 'normal 'geiser-doc-mode-map
+    (kbd "<tab>") 'forward-button
+    (kbd "<S-tab>") 'backward-button
+    "gd" 'geiser-edit-symbol-at-point
+    (kbd "C-t") 'geiser-pop-symbol-stack
+    "gr" 'geiser-doc-refresh
+    "q" 'View-quit
+    "gz" 'geiser-doc-switch-to-repl
+    ">" 'geiser-doc-next
+    "<" 'geiser-doc-previous
+    "gj" 'forward-button
+    "gk" 'backward-button
+    (kbd "C-j") 'forward-button
+    (kbd "C-k") 'backward-button
+    "]" 'geiser-doc-next-section
+    "[" 'geiser-doc-previous-section
+    "x" 'geiser-doc-kill-page
+    "X" 'geiser-doc-clean-history)
+
+  (evil-collection-define-key 'insert 'geiser-repl-mode-map
+    (kbd "S-<return>") 'geiser-repl--newline-and-indent)
+
+  (evil-collection-define-key 'normal 'geiser-repl-mode-map
+    "gd" 'geiser-edit-symbol-at-point
+    (kbd "C-t") 'geiser-pop-symbol-stack
+    "gj" 'geiser-repl-next-prompt
+    "gk" 'geiser-repl-previous-prompt
+    (kbd "C-j") 'geiser-repl-next-prompt
+    (kbd "C-k") 'geiser-repl-previous-prompt
+    "]" 'geiser-repl-next-prompt
+    "[" 'geiser-repl-previous-prompt
+    "K" 'geiser-doc-symbol-at-point)
+
+  (evil-collection-define-key 'normal 'geiser-mode-map
+    "gd" 'geiser-edit-symbol-at-point
+    (kbd "C-t") 'geiser-pop-symbol-stack
+    "gZ" 'geiser-mode-switch-to-repl-and-enter
+    "gz" 'geiser-mode-switch-to-repl
+    "K" 'geiser-doc-symbol-at-point))
+
+(provide 'evil-collection-geiser)
+;;; evil-collection-geiser.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-geiser.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-geiser.elc
new file mode 100644
index 000000000000..d7575833efc1
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-geiser.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ggtags.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ggtags.el
new file mode 100644
index 000000000000..026928e97daf
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ggtags.el
@@ -0,0 +1,99 @@
+;;; evil-collection-ggtags.el --- Evil bindings for ggtags -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, ggtags, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `ggtags-mode'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'ggtags nil t)
+
+(defvar ggtags-global-mode-map)
+(defvar ggtags-mode-map)
+(defvar ggtags-view-search-history-mode-map)
+(defvar ggtags-view-tag-history-mode-map)
+(defvar ggtags-navigation-map)
+
+(defconst evil-collection-ggtags-maps '(ggtags-mode-map
+                                        ggtags-view-search-history-mode-map
+                                        ggtags-view-tag-history-mode-map
+                                        ggtags-navigation-map))
+
+(defun evil-collection-ggtags-setup ()
+  "Set up `evil' bindings for `ggtags'."
+  (evil-set-initial-state 'ggtags-global-mode 'normal)
+  (evil-set-initial-state 'ggtags-view-search-history-mode 'normal)
+  (evil-set-initial-state 'ggtags-view-tag-history-mode 'normal)
+
+  ;; `ggtags-navigation-mode' is global and will conflict with other bindings.
+  ;; https://github.com/leoliu/ggtags/issues/124
+  (when (boundp 'ggtags-enable-navigation-keys)
+    (setq ggtags-enable-navigation-keys nil))
+
+  (evil-collection-define-key 'normal 'ggtags-mode-map
+    "gd" 'ggtags-find-tag-dwim
+    (kbd "C-t") 'ggtags-prev-mark
+    "gf" 'ggtags-find-file)
+
+  (evil-collection-define-key 'normal 'ggtags-view-search-history-mode-map
+    "gj" 'ggtags-view-search-history-next
+    "gk" 'ggtags-view-search-history-prev
+    (kbd "C-j") 'ggtags-view-search-history-next
+    (kbd "C-k") 'ggtags-view-search-history-prev
+    "]" 'ggtags-view-search-history-next
+    "[" 'ggtags-view-search-history-prev
+    "x" 'ggtags-view-search-history-kill
+    "gr" 'ggtags-view-search-history-update
+    "r" 'ggtags-save-to-register
+    "R" 'ggtags-view-search-history-action
+    "q" 'ggtags-kill-window)
+
+  (evil-collection-define-key 'normal 'ggtags-view-tag-history-mode-map
+    "gj" 'next-error-no-select
+    (kbd "C-j") 'next-error-no-select
+    "]" 'next-error-no-select
+    "gk" 'previous-error-no-select
+    (kbd "C-k") 'previous-error-no-select
+    (kbd "[") 'previous-error-no-select
+    "q" 'ggtags-kill-window)
+
+  (evil-collection-define-key 'normal 'ggtags-navigation-map
+    ;; navigation
+    "gj" 'next-error
+    "gk" 'next-error
+    (kbd "C-j") 'previous-error
+    (kbd "C-k") 'previous-error
+    "]" 'ggtags-navigation-next-file
+    "[" 'ggtags-navigation-previous-file
+
+    ;; search
+    "s" 'ggtags-navigation-isearch-forward
+    "S" 'ggtags-navigation-isearch-forward
+
+    "go" 'ggtags-navigation-visible-mode ;; FIXME: This can be anything.
+    (kbd "<return>") 'ggtags-navigation-mode-done))
+
+(provide 'evil-collection-ggtags)
+;;; evil-collection-ggtags.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ggtags.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ggtags.elc
new file mode 100644
index 000000000000..4d6c72136cc4
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ggtags.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-git-timemachine.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-git-timemachine.el
new file mode 100644
index 000000000000..72a0b9f763de
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-git-timemachine.el
@@ -0,0 +1,48 @@
+;;; evil-collection-git-timemachine.el --- Bindings for `git-timemachine' -*- lexical-binding: t -*-
+
+;; Author: William Carroll <wpcarro@gmail.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, git, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil keybindings for `git-timemachine' that conform to the principles
+;; outlines in evil-collection
+
+;;; Code:
+(require 'evil-collection)
+(require 'git-timemachine nil t)
+
+(defvar git-timemachine-mode-map)
+(defconst evil-collection-git-timemachine-map '(git-timemachine-mode-map))
+
+(defun evil-collection-git-timemachine-setup ()
+  "Setup `evil' keybindings for `git-timemachine'."
+  (evil-define-minor-mode-key 'normal 'git-timemachine-mode
+    "\C-k" 'git-timemachine-show-previous-revision
+    "\C-j" 'git-timemachine-show-next-revision
+    "q"    'git-timemachine-quit
+    "gtg"  'git-timemachine-show-nth-revision
+    "gtt"  'git-timemachine-show-revision-fuzzy
+    "gty"  'git-timemachine-kill-abbreviated-revision
+    "gtY"  'git-timemachine-kill-revision
+    "gtb"  'git-timemachine-blame))
+
+(provide 'evil-collection-git-timemachine)
+;;; evil-collection-git-timemachine.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-git-timemachine.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-git-timemachine.elc
new file mode 100644
index 000000000000..0f77eb637c07
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-git-timemachine.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-go-mode.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-go-mode.el
new file mode 100644
index 000000000000..23f663a23c69
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-go-mode.el
@@ -0,0 +1,46 @@
+;;; evil-collection-go-mode.el --- Bindings for `go-mode'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools, golang
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Bindings for `go-mode'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'go-mode nil t)
+
+(defconst evil-collection-go-mode-maps '(go-mode-map
+                                         godoc-mode-map))
+
+(defun evil-collection-go-mode-setup ()
+  "Set up `evil' bindings for `go-mode'."
+  (evil-collection-define-key 'normal 'go-mode-map
+    "gd" 'godef-jump
+    "K" 'godef-describe)
+  (evil-collection-define-key 'normal 'godoc-mode-map
+    "q" 'quit-window
+    "g?" 'describe-mode))
+
+(provide 'evil-collection-go-mode)
+;;; evil-collection-go-mode.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-go-mode.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-go-mode.elc
new file mode 100644
index 000000000000..b73cf1e757a5
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-go-mode.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-grep.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-grep.el
new file mode 100644
index 000000000000..7e00b9c364ff
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-grep.el
@@ -0,0 +1,44 @@
+;;; evil-collection-grep.el --- Bindings for `grep' -*- lexical-binding: t -*-
+
+;; Copyright (C) 2018 James Nguyen
+
+;; Author: Fredrik Bergroth <fbergroth@gmail.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Bindings for `grep'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'grep)
+
+(defconst evil-collection-grep-maps '(grep-mode-map))
+
+(defun evil-collection-grep-setup ()
+  "Set up `evil' bindings for `grep'."
+  (evil-collection-define-key 'normal 'grep-mode-map
+    "n" 'evil-search-next
+    "\C-j" 'next-error-no-select
+    "\C-k" 'previous-error-no-select))
+
+
+(provide 'evil-collection-grep)
+;;; evil-collection-grep.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-grep.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-grep.elc
new file mode 100644
index 000000000000..004b2eb07417
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-grep.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-guix.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-guix.el
new file mode 100644
index 000000000000..43f93290f52f
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-guix.el
@@ -0,0 +1,218 @@
+;;; evil-collection-guix.el --- Evil bindings for Guix -*- lexical-binding: t -*-
+
+;; Copyright (C) 2018 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, guix, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `guix'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'guix nil t)
+
+(defconst evil-collection-guix-maps '(guix-output-list-mode-map
+                                      guix-package-info-mode-map
+                                      guix-profile-list-mode-map
+                                      guix-profile-info-mode-map
+                                      guix-generation-list-mode-map
+                                      guix-generation-info-mode-map
+                                      guix-license-list-mode-map
+                                      guix-license-info-mode-map
+                                      guix-location-list-mode-map
+                                      guix-hydra-build-list-mode-map
+                                      guix-hydra-build-info-mode-map
+                                      guix-build-log-mode-map))
+
+(defmacro evil-collection-guix-set (map)
+  "Set common bindings in MAP."
+  `(progn
+     (evil-collection-inhibit-insert-state ',map)
+     (evil-collection-define-key 'normal ',map
+        ;; motion
+        (kbd "SPC") 'scroll-up-command
+        (kbd "S-SPC") 'scroll-down-command
+        (kbd "<tab>") 'forward-button
+        (kbd "<backtab>") 'backward-button
+
+        "gm" 'guix-apply-manifest
+
+        ;; sort
+        "o" 'bui-list-sort
+
+        ;; filter
+        "ss" 'bui-enable-filter
+        "sd" 'bui-disable-filter
+
+        ;; mark
+        "m" 'bui-list-mark
+        "M" 'bui-list-mark-all
+        "u" 'bui-list-unmark
+        "U" 'bui-list-unmark-all
+
+        (kbd "C-o") 'bui-history-back
+        (kbd "C-i") 'bui-history-forward
+
+        "g?" 'bui-show-hint
+        "gr" 'revert-buffer
+        "gR" 'bui-redisplay
+
+        ;; repl
+        "gz" 'guix-switch-to-repl
+
+        ;; quit
+        "q" 'quit-window
+        "ZQ" 'evil-quit
+        "ZZ" 'quit-window)))
+
+(defun evil-collection-guix-setup ()
+  "Set up `evil' bindings for `guix'."
+  (evil-collection-guix-set guix-ui-map) ; Covers output-list and generation-list.
+
+  (evil-collection-define-key 'normal 'guix-output-list-mode-map
+    (kbd "<return>") 'bui-list-describe
+
+    "gb" 'guix-package-list-latest-builds
+    "gG" 'guix-output-list-graph
+    "gl" 'guix-output-list-lint
+    "gs" 'guix-package-list-size
+
+    "a" 'guix-output-list-mark-upgrade
+    "A" 'guix-output-list-mark-upgrades
+    "d" 'guix-output-list-mark-delete
+    "gd" 'guix-output-list-edit
+    "i" 'guix-output-list-mark-install
+
+    ;; mark
+    "x" 'guix-output-list-execute)
+
+  (evil-collection-guix-set guix-package-info-mode-map)
+  (evil-collection-define-key 'normal 'guix-package-info-mode-map
+    "gG" 'guix-package-info-graph
+    "gl" 'guix-package-info-lint
+    "gs" 'guix-package-info-size
+
+    "a" 'guix-package-info-upgrade
+    "d" 'guix-package-info-delete
+    "gd" 'guix-package-info-edit
+    "i" 'guix-package-info-install)
+
+  (evil-collection-guix-set guix-profile-list-mode-map)
+  (evil-collection-define-key 'normal 'guix-profile-list-mode-map
+    (kbd "<return>") 'bui-list-describe
+
+    "c" 'guix-profile-list-set-current ; TODO: Bind to "." as per the rationale?
+    "p" 'guix-profile-list-show-packages
+    "a" 'guix-profile-list-show-generations
+    "P" 'guix-profile-list-show-search-paths)
+
+  (evil-collection-guix-set guix-profile-info-mode-map)
+  (evil-collection-define-key 'normal 'guix-profile-info-mode-map
+    "gm" 'guix-profile-info-apply-manifest
+
+    "p" 'guix-profile-info-show-packages
+    "a" 'guix-profile-info-show-generations
+    "P" 'guix-profile-info-show-search-paths
+    "c" 'guix-profile-info-set-current)
+
+  (evil-collection-define-key 'normal 'guix-generation-list-mode-map
+    (kbd "<return>") 'bui-list-describe
+
+    "p" 'guix-generation-list-show-packages
+    "D" 'guix-generation-list-mark-delete
+    "P" 'guix-generation-list-show-search-paths
+    "c" 'guix-generation-list-set-current
+    "d" 'guix-generation-list-ediff
+
+    "+" 'guix-generation-list-show-added-packages
+    "-" 'guix-generation-list-show-removed-packages
+    "=" 'guix-generation-list-diff
+
+    ;; mark
+    "x" 'guix-generation-list-execute)
+
+  (evil-collection-guix-set guix-license-list-mode-map)
+  (evil-collection-define-key 'normal 'guix-license-list-mode-map
+    (kbd "<tab>") 'forward-button       ; Why isn't this binding inhibited?
+    (kbd "<return>") 'bui-list-describe
+
+    "p" 'guix-license-list-show-packages
+    "gd" 'guix-license-list-edit)
+
+  (evil-collection-guix-set guix-license-info-mode-map)
+
+  (evil-collection-guix-set guix-location-list-mode-map)
+  (evil-collection-define-key 'normal 'guix-location-list-mode-map
+    (kbd "<return>") 'guix-location-list-show-packages ; In Emacs state, it seems to be overriden by `push-button'.
+
+    "p" 'guix-location-list-show-packages
+    "gd" 'guix-location-list-edit)
+
+  (evil-collection-guix-set guix-store-item-list-mode-map)
+  (evil-collection-define-key 'normal 'guix-store-item-list-mode-map
+    (kbd "<return>") 'bui-list-describe
+    "d" 'guix-store-item-list-mark-delete
+    "gd" 'guix-store-item-list-edit
+    "x" 'guix-store-item-list-execute)
+
+  (evil-collection-guix-set guix-store-item-info-mode-map)
+
+  (evil-collection-guix-set guix-hydra-build-list-mode-map)
+  (evil-collection-define-key 'normal 'guix-hydra-build-list-mode-map
+    (kbd "<return>") 'bui-list-describe
+
+    "gb" 'guix-hydra-build-list-latest-builds
+    "gl" 'guix-hydra-build-list-view-log)
+
+  (evil-collection-guix-set guix-hydra-build-info-mode-map)
+
+  (evil-collection-inhibit-insert-state 'guix-build-log-mode-map)
+  (evil-collection-define-key 'normal 'guix-build-log-mode-map
+    ;; motion
+    (kbd "SPC") 'scroll-up-command
+    (kbd "S-SPC") 'scroll-down-command
+    (kbd "<tab>") 'guix-build-log-phase-toggle
+    (kbd "<backtab>") 'guix-build-log-phase-toggle-all
+
+    "gk" 'guix-build-log-previous-phase
+    "gj" 'guix-build-log-next-phase
+    "[" 'guix-build-log-previous-phase
+    "]" 'guix-build-log-next-phase
+    (kbd "C-k") 'guix-build-log-previous-phase
+    (kbd "C-j") 'guix-build-log-next-phase
+
+    "gr" 'revert-buffer
+
+    ;; repl
+    "gz" 'guix-switch-to-repl           ; TODO: Does it still make sense here?
+
+    ;; quit
+    "q" 'quit-window
+    "ZQ" 'evil-quit
+    "ZZ" 'quit-window)
+
+  (evil-collection-define-key 'normal 'guix-devel-mode-map
+    ;; repl
+    "gz" 'guix-switch-to-repl))
+
+(provide 'evil-collection-guix)
+;;; evil-collection-guix.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-guix.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-guix.elc
new file mode 100644
index 000000000000..7b13722a2270
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-guix.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-helm.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-helm.el
new file mode 100644
index 000000000000..a1c4008fe551
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-helm.el
@@ -0,0 +1,211 @@
+;;; evil-collection-helm.el --- Evil bindings for Helm  -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, helm, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for Helm.
+
+;;; Code:
+(require 'evil-collection)
+(require 'helm-files nil t) ; TODO: Check if this is the ideal requirement and if we are not loading too much.
+
+;; To navigate Helm entries with <hjkl> in insert state, we need a modifier.
+;; Using the C- modifier would conflict with the help prefix "C-h".  So we use
+;; M- prefixed bindings instead.
+
+;; Helm-find-files: We cannot use "h" and "l" in normal state to navigate up and
+;; down the file system hierarchy since we need them to use it to edit the
+;; minibuffer content.
+
+(defvar helm-map)
+(defvar helm-find-files-map)
+(defvar helm-generic-files-map)
+(defvar helm-buffer-map)
+(defvar helm-moccur-map)
+(defvar helm-grep-map)
+(defvar helm-read-file-map)
+(defvar helm-echo-input-in-header-line)
+(defvar helm--prompt)
+(defvar helm--action-prompt)
+(defvar helm-header-line-space-before-prompt)
+(defvar helm-default-prompt-display-function)
+
+(declare-function helm-window "helm-lib")
+
+(defconst evil-collection-helm-maps '(help-map
+                                      help-find-files-map
+                                      helm-read-file-map
+                                      helm-generic-files-map
+                                      helm-buffer-map
+                                      helm-moccur-map
+                                      helm-grep-map))
+
+;; From https://github.com/emacs-helm/helm/issues/362.
+;; Also see https://emacs.stackexchange.com/questions/17058/change-cursor-type-in-helm-header-line#17097.
+;; TODO: With Evil, the cursor type is not right in the header line and the evil
+;; cursor remains in the minibuffer.  Visual selections also reveal overlayed
+;; text.
+(with-no-warnings
+  (defun evil-collection-helm-hide-minibuffer-maybe ()
+    "Hide text in minibuffer when `helm-echo-input-in-header-line' is non-nil."
+    (when (with-current-buffer (helm-buffer-get) helm-echo-input-in-header-line)
+      (let ((ov (make-overlay (point-min) (point-max) nil nil t)))
+        (overlay-put ov 'window (selected-window))
+        (overlay-put ov 'face (let ((bg-color (face-background 'default nil)))
+                                `(:background ,bg-color :foreground ,bg-color)))
+        (setq-local cursor-type nil)))))
+
+(defun evil-collection-helm--set-prompt-display (pos)
+  (let (beg state region-active m)
+    (with-selected-window (minibuffer-window)
+      (setq beg (save-excursion (vertical-motion 0 (helm-window)) (point))
+            state evil-state
+            region-active (region-active-p)
+            m (mark t)))
+    (when region-active
+      (setq m (- m beg))
+      ;; Increment pos to handle the space before prompt (i.e `pref').
+      (put-text-property (1+ (min m pos)) (+ 2 (max m pos))
+                         'face
+                         (list :background (face-background 'region))
+                         header-line-format))
+    (put-text-property
+     ;; Increment pos to handle the space before prompt (i.e `pref').
+     (+ 1 pos) (+ 2 pos)
+     'face
+     (if (eq state 'insert)
+         'underline
+       ;; Don't just use 'cursor, this can hide the current character.
+       (list :inverse-video t
+             :foreground (face-background 'cursor)
+             :background (face-background 'default)))
+     header-line-format)))
+
+
+(defun evil-collection-helm-setup ()
+  "Set up `evil' bindings for `helm'."
+  (add-hook 'helm-minibuffer-set-up-hook 'evil-collection-helm-hide-minibuffer-maybe)
+  (setq helm-default-prompt-display-function 'evil-collection-helm--set-prompt-display)
+
+  (evil-collection-define-key '(insert normal) 'helm-map
+    (kbd "M-[") 'helm-previous-source
+    (kbd "M-]") 'helm-next-source
+    (kbd "M-l") 'helm-execute-persistent-action
+    (kbd "M-j") 'helm-next-line
+    (kbd "M-k") 'helm-previous-line
+    (kbd "C-f") 'helm-next-page
+    (kbd "C-b") 'helm-previous-page)
+
+  (dolist (map '(helm-find-files-map helm-read-file-map))
+    (evil-collection-define-key 'normal map
+      "go" 'helm-ff-run-switch-other-window
+      "/" 'helm-ff-run-find-sh-command)
+    (evil-collection-define-key '(insert normal) map
+      (kbd "S-<return>") 'helm-ff-run-switch-other-window
+      (kbd "M-h") 'helm-find-files-up-one-level))
+
+  ;; TODO: Change the Helm header to display "M-l" instead of "C-l".  We don't
+  ;; want to modify the Emacs Helm map.
+
+  (evil-collection-define-key '(insert normal) 'helm-generic-files-map
+    (kbd "S-<return>") 'helm-ff-run-switch-other-window)
+
+  (evil-collection-define-key '(insert normal) 'helm-buffer-map
+    (kbd "S-<return>") 'helm-buffer-switch-other-window
+    (kbd "M-<return>") 'display-buffer)
+
+  (evil-collection-define-key '(insert normal) 'helm-moccur-map
+    (kbd "S-<return>") 'helm-moccur-run-goto-line-ow)
+
+  (evil-collection-define-key '(insert normal) 'helm-grep-map
+    (kbd "S-<return>") 'helm-grep-run-other-window-action)
+
+  (evil-collection-define-key 'normal 'helm-generic-files-map
+    "go" 'helm-ff-run-switch-other-window)
+
+  (evil-collection-define-key 'normal 'helm-buffer-map
+    "go" 'helm-buffer-switch-other-window
+    "gO" 'display-buffer
+    "=" 'helm-buffer-run-ediff
+    "%" 'helm-buffer-run-query-replace-regexp
+    "D" 'helm-buffer-run-kill-persistent ; Ivy has "D".
+    )
+
+  (evil-collection-define-key 'normal 'helm-moccur-map
+    "go" 'helm-moccur-run-goto-line-ow)
+
+  (evil-collection-define-key 'normal 'helm-grep-map
+    "go" 'helm-grep-run-other-window-action)
+
+  (evil-collection-define-key 'normal 'helm-find-files-map
+    "=" 'helm-ff-run-ediff-file
+    "%" 'helm-ff-run-query-replace-regexp
+    "D" 'helm-ff-run-delete-file)       ; Ivy has "D".
+
+  ;; These helm bindings should always exist, the evil equivalents do
+  ;; nothing useful in the minibuffer (error or pure failure).
+  ;; RET can't do a second line in the minibuffer.
+  ;; The C-n/C-p completions error with 'helm in helm' session.
+  ;; C-o switches to evil state (again, not useful).
+  (evil-collection-define-key '(insert normal) 'helm-map
+    (kbd "RET") 'helm-maybe-exit-minibuffer
+    (kbd "M-v") 'helm-previous-page
+    (kbd "C-v") 'helm-next-page
+    (kbd "C-p") 'helm-previous-line
+    (kbd "C-n") 'helm-next-line
+    (kbd "C-o") 'helm-next-source)
+
+  (when evil-want-C-u-scroll
+    (evil-collection-define-key 'normal 'helm-map
+      (kbd "C-u") 'helm-previous-page))
+
+  (when evil-want-C-d-scroll
+    (evil-collection-define-key 'normal 'helm-map
+      (kbd "C-d") 'helm-next-page))
+
+  (evil-collection-define-key 'normal 'helm-map
+    (kbd "<tab>") 'helm-select-action   ; TODO: Ivy has "ga".
+    (kbd "[") 'helm-previous-source
+    (kbd "]") 'helm-next-source
+    "gk" 'helm-previous-source
+    "gj" 'helm-next-source
+    (kbd "(") 'helm-prev-visible-mark
+    (kbd ")") 'helm-next-visible-mark
+    "j" 'helm-next-line
+    "k" 'helm-previous-line
+    "gg" 'helm-beginning-of-buffer
+    "G" 'helm-end-of-buffer
+
+    "/" 'helm-quit-and-find-file
+
+    ;; refresh
+    "gr" 'helm-refresh
+
+    "yp" 'helm-yank-selection
+    "yP" 'helm-copy-to-buffer
+    "yy" 'helm-kill-selection-and-quit
+    (kbd "SPC") 'helm-toggle-visible-mark))
+
+(provide 'evil-collection-helm)
+;;; evil-collection-helm.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-helm.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-helm.elc
new file mode 100644
index 000000000000..98549b288fd9
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-helm.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-help.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-help.el
new file mode 100644
index 000000000000..33d7520f32d4
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-help.el
@@ -0,0 +1,74 @@
+;;; evil-collection-help.el --- Evil bindings for help-mode -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, help, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `help-mode'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'help-mode)
+
+(defconst evil-collection-help-maps '(help-mode-map))
+
+(defun evil-collection-help-setup ()
+  "Set up `evil' bindings for `help'."
+  (evil-set-initial-state 'help-mode 'normal)
+  (evil-collection-inhibit-insert-state 'help-mode-map)
+  (evil-collection-define-key 'normal 'help-mode-map
+    ;; motion
+    (kbd "SPC") 'scroll-up-command
+    (kbd "S-SPC") 'scroll-down-command
+    (kbd "C-f") 'scroll-up-command
+    (kbd "C-b") 'scroll-down-command
+    (kbd "<tab>") 'forward-button
+    (kbd "<backtab>") 'backward-button
+
+    (kbd "C-o") 'help-go-back
+    (kbd "C-i") 'help-go-forward
+
+    ;; TODO: Enable more help-go-* bindings?
+    ;; "gj" 'help-go-forward
+    ;; "gk" 'help-go-back
+    ;; "\C-j" 'help-go-forward
+    ;; "\C-k" 'help-go-back
+
+    ;; The following bindings don't do what they are supposed to. "go" should open
+    ;; in the same window and "gO" should open in a different one.
+    "go" 'push-button 
+    "gO" 'push-button
+    
+    "g?" 'describe-mode
+    "gr" 'revert-buffer
+    "<" 'help-go-back
+    ">" 'help-go-forward
+    "r" 'help-follow
+
+    ;; quit
+    "q" 'quit-window
+    "ZQ" 'evil-quit
+    "ZZ" 'quit-window))
+
+(provide 'evil-collection-help)
+;;; evil-collection-help.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-help.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-help.elc
new file mode 100644
index 000000000000..b103775b85e4
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-help.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ibuffer.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ibuffer.el
new file mode 100644
index 000000000000..42d490239487
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ibuffer.el
@@ -0,0 +1,196 @@
+;;; evil-collection-ibuffer.el --- Evil bindings for IBuffer -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, ibuffer, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for IBuffer.
+
+;;; Code:
+(require 'evil-collection)
+(require 'ibuffer)
+
+(defconst evil-collection-ibuffer-maps '(ibuffer-mode-map))
+
+(defun evil-collection-ibuffer-setup ()
+  "Set up `evil' bindings for `ibuffer'."
+  (evil-set-initial-state 'ibuffer-mode 'normal)
+
+  (evil-collection-define-key 'normal 'ibuffer-mode-map
+    (kbd "C-d") (if evil-want-C-d-scroll
+                    'evil-scroll-down
+                  'ibuffer-mark-for-delete-backwards))
+
+  (evil-collection-define-key 'normal 'ibuffer-mode-map
+    (kbd "=") 'ibuffer-diff-with-file
+    (kbd "J") 'ibuffer-jump-to-buffer
+    (kbd "M-g") 'ibuffer-jump-to-buffer
+    (kbd "M-s a C-s") 'ibuffer-do-isearch
+    (kbd "M-s a M-C-s") 'ibuffer-do-isearch-regexp
+    (kbd "M-s a C-o") 'ibuffer-do-occur
+
+    ;; mark
+    (kbd "m") 'ibuffer-mark-forward
+    (kbd "~") 'ibuffer-toggle-marks
+    (kbd "u") 'ibuffer-unmark-forward
+    (kbd "DEL") 'ibuffer-unmark-backward
+    (kbd "M-DEL") 'ibuffer-unmark-all
+    (kbd "* *") 'ibuffer-unmark-all
+    (kbd "* c") 'ibuffer-change-marks
+    (kbd "U") 'ibuffer-unmark-all-marks
+    (kbd "* M") 'ibuffer-mark-by-mode
+    (kbd "* m") 'ibuffer-mark-modified-buffers
+    (kbd "* u") 'ibuffer-mark-unsaved-buffers
+    (kbd "* s") 'ibuffer-mark-special-buffers
+    (kbd "* r") 'ibuffer-mark-read-only-buffers
+    (kbd "* /") 'ibuffer-mark-dired-buffers
+    (kbd "* e") 'ibuffer-mark-dissociated-buffers
+    (kbd "* h") 'ibuffer-mark-help-buffers
+    (kbd "* z") 'ibuffer-mark-compressed-file-buffers
+    (kbd ".") 'ibuffer-mark-old-buffers
+
+    (kbd "d") 'ibuffer-mark-for-delete
+    (kbd "x") 'ibuffer-do-kill-on-deletion-marks
+
+    ;; immediate operations
+    (kbd "gj") 'ibuffer-forward-line
+    (kbd "gk") 'ibuffer-backward-line
+
+    (kbd "}") 'ibuffer-forward-next-marked
+    (kbd "{") 'ibuffer-backwards-next-marked
+    (kbd "M-}") 'ibuffer-forward-next-marked
+    (kbd "M-{") 'ibuffer-backwards-next-marked
+
+    (kbd "gR") 'ibuffer-redisplay
+    (kbd "gr") 'ibuffer-update
+
+    "`" 'ibuffer-switch-format
+    "-" 'ibuffer-add-to-tmp-hide
+    "+" 'ibuffer-add-to-tmp-show
+    "X" 'ibuffer-bury-buffer
+    (kbd ",") 'ibuffer-toggle-sorting-mode
+    (kbd "o i") 'ibuffer-invert-sorting
+    (kbd "o a") 'ibuffer-do-sort-by-alphabetic
+    (kbd "o v") 'ibuffer-do-sort-by-recency
+    (kbd "o s") 'ibuffer-do-sort-by-size
+    (kbd "o f") 'ibuffer-do-sort-by-filename/process
+    (kbd "o m") 'ibuffer-do-sort-by-major-mode
+
+    (kbd "s RET") 'ibuffer-filter-by-mode
+    (kbd "s m") 'ibuffer-filter-by-used-mode
+    (kbd "s M") 'ibuffer-filter-by-derived-mode
+    (kbd "s n") 'ibuffer-filter-by-name
+    (kbd "s *") 'ibuffer-filter-by-starred-name
+    (kbd "s f") 'ibuffer-filter-by-filename
+    (kbd "s b") 'ibuffer-filter-by-basename
+    (kbd "s .") 'ibuffer-filter-by-file-extension
+    (kbd "s <") 'ibuffer-filter-by-size-lt
+    (kbd "s >") 'ibuffer-filter-by-size-gt
+    (kbd "s i") 'ibuffer-filter-by-modified
+    (kbd "s v") 'ibuffer-filter-by-visiting-file
+    (kbd "s c") 'ibuffer-filter-by-content
+    (kbd "s e") 'ibuffer-filter-by-predicate
+
+    (kbd "s r") 'ibuffer-switch-to-saved-filters
+    (kbd "s a") 'ibuffer-add-saved-filters
+    (kbd "s x") 'ibuffer-delete-saved-filters
+    (kbd "s d") 'ibuffer-decompose-filter
+    (kbd "s s") 'ibuffer-save-filters
+    (kbd "s p") 'ibuffer-pop-filter
+    (kbd "s <up>") 'ibuffer-pop-filter
+    (kbd "s !") 'ibuffer-negate-filter
+    (kbd "s t") 'ibuffer-exchange-filters
+    (kbd "s TAB") 'ibuffer-exchange-filters
+    (kbd "s o") 'ibuffer-or-filter
+    (kbd "s |") 'ibuffer-or-filter
+    (kbd "s &") 'ibuffer-and-filter
+    (kbd "s g") 'ibuffer-filters-to-filter-group
+    (kbd "s P") 'ibuffer-pop-filter-group
+    (kbd "s S-<up>") 'ibuffer-pop-filter-group
+    (kbd "s D") 'ibuffer-decompose-filter-group
+    (kbd "s /") 'ibuffer-filter-disable
+
+    (kbd "C-j") 'ibuffer-forward-filter-group
+    (kbd "M-n") 'ibuffer-forward-filter-group
+    (kbd "]") 'ibuffer-forward-filter-group
+    "\t" 'ibuffer-forward-filter-group
+    (kbd "M-p") 'ibuffer-backward-filter-group
+    (kbd "C-k") 'ibuffer-forward-filter-group
+    (kbd "[") 'ibuffer-backward-filter-group
+    [backtab] 'ibuffer-backward-filter-group
+    (kbd "M-j") 'ibuffer-jump-to-filter-group
+    (kbd "gx") 'ibuffer-kill-line
+    (kbd "C-y") 'ibuffer-yank
+    (kbd "s S") 'ibuffer-save-filter-groups
+    (kbd "s R") 'ibuffer-switch-to-saved-filter-groups
+    (kbd "s X") 'ibuffer-delete-saved-filter-groups
+    (kbd "s \\") 'ibuffer-clear-filter-groups
+
+    (kbd "% n") 'ibuffer-mark-by-name-regexp
+    (kbd "% m") 'ibuffer-mark-by-mode-regexp
+    (kbd "% f") 'ibuffer-mark-by-file-name-regexp
+    (kbd "% g") 'ibuffer-mark-by-content-regexp
+    (kbd "% L") 'ibuffer-mark-by-locked
+
+    (kbd "C-t") 'ibuffer-visit-tags-table
+
+    (kbd "|") 'ibuffer-do-shell-command-pipe
+    (kbd "!") 'ibuffer-do-shell-command-file
+    (kbd "t") 'ibuffer-do-toggle-modified
+    ;; marked operations
+    (kbd "A") 'ibuffer-do-view
+    (kbd "D") 'ibuffer-do-delete
+    (kbd "E") 'ibuffer-do-eval
+    (kbd "F") 'ibuffer-do-shell-command-file
+    (kbd "I") 'ibuffer-do-query-replace-regexp
+    (kbd "H") 'ibuffer-do-view-other-frame
+    (kbd "N") 'ibuffer-do-shell-command-pipe-replace
+    (kbd "M") 'ibuffer-do-toggle-modified
+    (kbd "O") 'ibuffer-do-occur
+    (kbd "P") 'ibuffer-do-print
+    (kbd "Q") 'ibuffer-do-query-replace
+    (kbd "R") 'ibuffer-do-rename-uniquely
+    (kbd "S") 'ibuffer-do-save
+    (kbd "T") 'ibuffer-do-toggle-read-only
+    (kbd "r") 'ibuffer-do-replace-regexp
+    (kbd "V") 'ibuffer-do-revert
+    (kbd "W") 'ibuffer-do-view-and-eval
+
+    (kbd "K") 'ibuffer-do-kill-lines
+    (kbd "yf") 'ibuffer-copy-filename-as-kill
+    (kbd "yb") 'ibuffer-copy-buffername-as-kill
+
+    (kbd "RET") 'ibuffer-visit-buffer
+    (kbd "go") 'ibuffer-visit-buffer-other-window
+    (kbd "C-o") 'ibuffer-visit-buffer-other-window-noselect
+    (kbd "M-o") 'ibuffer-visit-buffer-1-window
+    (kbd "gv") 'ibuffer-do-view
+    (kbd "gV") 'ibuffer-do-view-horizontally
+
+    ;; Quit
+    "q" 'quit-window
+    "ZZ" 'quit-window
+    "ZQ" 'quit-window))
+
+(provide 'evil-collection-ibuffer)
+;;; evil-collection-ibuffer.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ibuffer.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ibuffer.elc
new file mode 100644
index 000000000000..96e0e5593936
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ibuffer.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image+.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image+.el
new file mode 100644
index 000000000000..f2d3e7f7ed67
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image+.el
@@ -0,0 +1,53 @@
+;;; evil-collection-image+.el --- Evil bindings for image-mode with image+ -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, image, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for image-mode with image+.
+
+;;; Code:
+(require 'evil-collection)
+(require 'image+ nil t)
+
+(defconst evil-collection-image+-maps '(image-mode-map))
+
+(defun evil-collection-image+-setup ()
+  "Set up `evil' bindings for `image+'."
+  (evil-collection-define-key 'normal 'image-mode-map
+    ;; zoom
+    "+" 'imagex-sticky-zoom-in
+    "=" 'imagex-sticky-zoom-in
+    "-" 'imagex-sticky-zoom-out
+    "O" 'imagex-sticky-restore-original
+
+    "M" 'imagex-sticky-maximize
+    "m" 'imagex-auto-adjust-mode
+    "S" 'imagex-sticky-save-image
+    "r" 'imagex-sticky-rotate-right
+    "R" 'imagex-sticky-rotate-left
+    "<" 'imagex-sticky-rotate-left ; like sxiv
+    ">" 'imagex-sticky-rotate-right)) ; like sxiv
+
+(provide 'evil-collection-image+)
+;;; evil-collection-image+.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image+.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image+.elc
new file mode 100644
index 000000000000..2992105cd7de
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image+.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image-dired.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image-dired.el
new file mode 100644
index 000000000000..5bfb5c6ee779
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image-dired.el
@@ -0,0 +1,73 @@
+;;; evil-collection-image-dired.el --- Evil bindings for image-dired-thumbnail-mode -*- lexical-binding: t -*-
+
+;; Copyright (C) 2018 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, dired, image, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `image-dired-thumbnail-mode'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'image-dired)
+
+(defconst evil-collection-image-dired-maps '(image-dired-thumbnail-mode-map))
+
+(defun evil-collection-image-dired-setup ()
+  "Set up `evil' bindings for `image-dired-thumbnail-mode'."
+  (evil-collection-define-key 'normal 'image-dired-thumbnail-mode-map
+    ;; motion
+    "h" 'image-dired-backward-image
+    "l" 'image-dired-forward-image
+    "j" 'image-dired-next-line
+    "k" 'image-dired-previous-line
+
+    (kbd "SPC") 'image-dired-display-next-thumbnail-original
+    (kbd "S-SPC") 'image-dired-display-previous-thumbnail-original
+    (kbd "<return>") 'image-dired-display-thumbnail-original-image
+
+    "c" 'image-dired-comment-thumbnail
+    "d" 'image-dired-thumbnail-set-image-description
+    "m" 'image-dired-mark-thumb-original-file
+    "u" 'image-dired-unmark-thumb-original-file
+    "D" 'image-dired-delete-char
+
+    ;; See image+.
+    "r" 'image-dired-rotate-thumbnail-right
+    "R" 'image-dired-rotate-thumbnail-left
+    "<" 'image-dired-rotate-original-left ; like sxiv
+    ">" 'image-dired-rotate-original-right ; like sxiv
+
+    "tr" 'image-dired-tag-thumbnail-remove
+    "tt" 'image-dired-tag-thumbnail
+
+    "ff" 'image-dired-line-up
+    "fd" 'image-dired-line-up-dynamic
+    "fi" 'image-dired-line-up-interactive
+
+    ;; quit
+    "q" 'quit-window
+    "ZQ" 'evil-quit
+    "ZZ" 'quit-window))
+
+(provide 'evil-collection-image-dired)
+;;; evil-collection-image-dired.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image-dired.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image-dired.elc
new file mode 100644
index 000000000000..1dff6e34cc23
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image-dired.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image.el
new file mode 100644
index 000000000000..e97d544bae69
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image.el
@@ -0,0 +1,91 @@
+;;; evil-collection-image.el --- Evil bindings for Image -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, bookmark, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `image-mode'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'image-mode)
+
+;; TODO: pdf and doc-view conflict with image.
+;; See https://github.com/emacs-evil/evil-collection/issues/23.
+
+(defconst evil-collection-image-maps '(image-mode-map))
+
+(defun evil-collection-image-setup ()
+  "Set up `evil' bindings for `image-mode'."
+  (evil-set-initial-state 'image-mode 'normal)
+
+  (evil-collection-define-key 'normal 'image-mode-map
+    ;; motion
+    "gg" 'image-bob
+    "G" 'image-eob
+    "h" 'image-backward-hscroll
+    "l" 'image-forward-hscroll
+    "j" 'image-next-line
+    "k" 'image-previous-line
+    "0" 'image-bol
+    "^" 'image-bol
+    "$" 'image-eol
+    (kbd "C-d") 'image-scroll-up
+    (kbd "SPC") 'image-scroll-up
+    (kbd "S-SPC") 'image-scroll-down
+    (kbd "<delete>") 'image-scroll-down
+    ;; animation
+    (kbd "<return>") 'image-toggle-animation
+    "a0" 'image-reset-speed
+    "ar" 'image-reverse-speed
+    "F" 'image-goto-frame
+    "," 'image-previous-frame ; mplayer/mpv style
+    "." 'image-next-frame ; mplayer/mpv style
+    ";" 'image-next-frame ; Evil style
+    "{" 'image-decrease-speed ; mplayer/mpv style
+    "}" 'image-increase-speed ; mplayer/mpv style
+
+    "H" 'image-transform-fit-to-height
+    "W" 'image-transform-fit-to-width
+
+    "[" 'image-previous-file
+    "]" 'image-next-file
+    "gk" 'image-previous-file
+    "gj" 'image-next-file
+    (kbd "C-k") 'image-previous-file
+    (kbd "C-j") 'image-next-file
+
+    (kbd "C-c C-c") 'image-toggle-display
+
+    ;; quit
+    "q" 'quit-window
+    "ZQ" 'evil-quit
+    "ZZ" 'quit-window)
+
+  ;; TODO: What if the user changes `evil-want-C-u-scroll' after this is run?
+  (when evil-want-C-u-scroll
+    (evil-collection-define-key 'normal 'image-mode-map
+      (kbd "C-u") 'image-scroll-down)))
+
+(provide 'evil-collection-image)
+;;; evil-collection-image.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image.elc
new file mode 100644
index 000000000000..df2abe74eb64
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-image.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-imenu-list.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-imenu-list.el
new file mode 100644
index 000000000000..5a843eb2746c
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-imenu-list.el
@@ -0,0 +1,46 @@
+;;; evil-collection-imenu-list.el --- Bindings for `imenu-list' -*- lexical-binding: t -*-
+
+;; Copyright (C) 2018 James Nguyen
+
+;; Author: Fredrik Bergroth <fbergroth@gmail.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Bindings for `imenu-list'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'imenu-list nil t)
+
+(defconst evil-collection-imenu-list-maps '(imenu-list-major-mode-map))
+
+(defun evil-collection-imenu-list-setup ()
+  "Set up `evil' bindings for `imenu-list'."
+  (evil-collection-define-key 'normal 'imenu-list-major-mode-map
+    (kbd "RET") 'imenu-list-goto-entry
+    (kbd "TAB") 'hs-toggle-hiding
+    "d" 'imenu-list-display-entry
+    "gr" 'imenu-list-refresh
+    "q" 'imenu-list-quit-window))
+
+
+(provide 'evil-collection-imenu-list)
+;;; evil-collection-imenu-list.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-imenu-list.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-imenu-list.elc
new file mode 100644
index 000000000000..9fe9c0df93a7
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-imenu-list.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-indium.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-indium.el
new file mode 100644
index 000000000000..8393eb43aa1e
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-indium.el
@@ -0,0 +1,110 @@
+;;; evil-collection-indium.el --- Bindings for `indium'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: emacs, indium, javascript, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Bindings for `indium'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'evil-collection-settings)
+(require 'indium nil t)
+
+(defconst evil-collection-indium-maps '(indium-debugger-mode-map
+                                        indium-inspector-mode-map
+                                        indium-debugger-locals-mode-map
+                                        indium-debugger-frames-mode-map
+                                        indium-interaction-mode-map
+                                        indium-repl-mode-map))
+
+(defun evil-collection-indium-setup ()
+  "Set up `evil' bindings for `indium'."
+  (when evil-collection-settings-setup-debugger-keys
+    (evil-collection-define-key 'normal 'indium-debugger-mode-map
+      "n" 'indium-debugger-step-over
+      "i" 'indium-debugger-step-into
+      "o" 'indium-debugger-step-out
+      "c" 'indium-debugger-resume
+      "L" 'indium-debugger-locals
+      "s" 'indium-debugger-stack-frames
+      "q" 'indium-debugger-resume
+      "H" 'indium-debugger-here
+      "e" 'indium-debugger-evaluate
+      ">" 'indium-debugger-next-frame
+      "<" 'indium-debugger-previous-frame)
+
+    (add-hook 'indium-debugger-mode-hook #'evil-normalize-keymaps))
+
+  (evil-collection-define-key 'normal 'indium-inspector-mode-map
+    "q" 'quit-window
+    (kbd "RET") 'indium-follow-link
+    [mouse-1] 'indium-follow-link
+    "L" 'indium-inspector-pop
+    "gr" 'indium-inspector-refresh
+    "gj" 'indium-inspector-next-reference
+    "gk" 'indium-inspector-previous-reference
+    (kbd "C-j") 'indium-inspector-next-reference
+    (kbd "C-k") 'indium-inspector-previous-reference
+    [tab] 'indium-inspector-next-reference
+    [backtab] 'indium-inspector-previous-reference)
+
+  (evil-collection-define-key 'normal 'indium-debugger-locals-mode-map
+    "q" 'quit-window
+    "L" nil
+    "gr" nil)
+
+  (evil-collection-define-key 'normal 'indium-debugger-frames-mode-map
+    "q" 'quit-window
+    [return] 'indium-follow-link
+    (kbd "RET") 'indium-follow-link
+    (kbd "gj") 'indium-debugger-frames-next-frame
+    (kbd "gk") 'indium-debugger-frames-previous-frame
+    (kbd "C-j") 'indium-debugger-frames-next-frame
+    (kbd "C-k") 'indium-debugger-frames-previous-frame
+    [tab] 'indium-debugger-frames-next-frame
+    [backtab] 'indium-debugger-frames-previous-frame)
+
+  (evil-collection-define-key 'normal 'indium-interaction-mode-map
+    "gr" 'indium-update-script-source
+    "gz" 'indium-switch-to-repl-buffer)
+
+  (when evil-collection-settings-setup-debugger-keys
+    (evil-collection-define-key 'normal 'indium-interaction-mode-map
+      [left-fringe mouse-1] 'indium-mouse-toggle-breakpoint
+      [left-margin mouse-1] 'indium-mouse-toggle-breakpoint
+      [f5] 'indium-debugger-resume
+      [S-f5] 'indium-debugger-resume
+      [f9] 'indium-toggle-breakpoint
+      [f10] 'indium-debugger-step-over
+      [f11] 'indium-debugger-step-into
+      [S-f11] 'indium-debugger-step-out))
+
+  (evil-collection-define-key 'normal 'indium-repl-mode-map
+    (kbd "gj") 'indium-repl-next-input
+    (kbd "gk") 'indium-repl-previous-input
+    (kbd "C-j") 'indium-repl-next-input
+    (kbd "C-k") 'indium-repl-previous-input))
+
+(provide 'evil-collection-indium)
+;;; evil-collection-indium.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-indium.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-indium.elc
new file mode 100644
index 000000000000..0602d8bb8f3d
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-indium.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-info.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-info.el
new file mode 100644
index 000000000000..3d764111fa67
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-info.el
@@ -0,0 +1,110 @@
+;;; evil-collection-info.el --- Evil bindings for Info-mode -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, info, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; The default bindings in motion state override the standard movement keys.
+;; This package uses normal state and redefines everything.
+
+;;; Code:
+(require 'evil-collection)
+(require 'info)
+
+(defconst evil-collection-info-maps '(Info-mode-map))
+
+(defun evil-collection-info-setup ()
+  "Set up `evil' bindings for `info-mode'."
+  (evil-collection-inhibit-insert-state 'Info-mode-map)
+  (evil-set-initial-state 'Info-mode 'normal)
+  (evil-collection-define-key 'normal 'Info-mode-map
+    (kbd "<tab>") 'Info-next-reference
+    (kbd "S-<tab>") 'Info-prev-reference
+
+    ;; From evil-integration.el.
+    "0" 'evil-digit-argument-or-evil-beginning-of-line
+    (kbd "M-h") 'Info-help              ; "h"
+    (kbd "C-t") 'Info-history-back      ; "l"
+    (kbd "C-o") 'Info-history-back
+    " " 'Info-scroll-up
+    (kbd "C-]") 'Info-follow-nearest-node
+    (kbd "DEL") 'Info-scroll-down
+    ;; Add "C-i" for consistency.
+    (kbd "C-i") 'Info-history-forward
+
+    "d" 'Info-directory
+    "u" 'Info-up
+    "L" 'Info-history
+    "s" 'Info-search
+    "S" 'Info-search-case-sensitively
+    "i" 'Info-index
+    "I" 'Info-virtual-index
+    "a" 'info-apropos
+    "m" 'Info-menu
+    "w" 'evil-forward-word-begin
+    "b" 'evil-backward-word-begin
+
+    "gg" 'evil-goto-first-line
+
+    ;; TODO: Restore digit arguments?  Use g[n] instead.
+
+    ;; TODO: Should search with "n"/"N" cover the full manual like "C-s"/"C-r" does?
+    ;; TODO: Directions?
+    "n" (if (evil-collection-evil-search-enabled)
+            evil-collection-evil-search-next
+          'isearch-repeat-forward)
+    "N" (if (evil-collection-evil-search-enabled)
+            evil-collection-evil-search-previous
+          'isearch-repeat-backward)
+
+    ;; goto
+    "gd" 'Info-goto-node ; TODO: "gd" does not match the rationale of "go to definition". Change?
+    "gm" 'Info-menu
+    "gt" 'Info-top-node
+    "gT" 'Info-toc
+    "gf" 'Info-follow-reference
+    ;; TODO: "[" and "]" are Emacs default for fine-grained browsing.
+    ;; We usually use "C-j"/"C-k" for that.
+    (kbd "C-j") 'Info-next
+    (kbd "C-k") 'Info-prev
+    "gj" 'Info-next
+    "gk" 'Info-prev
+
+
+    ;; quit
+    "q" 'Info-exit
+    "ZQ" 'evil-quit
+    "ZZ" 'Info-exit)
+
+  (evil-collection-define-key 'operator 'Info-mode-map
+    "u" '(menu-item                     ; Like eww.
+          ""
+          nil
+          :filter (lambda (&optional _)
+                    (when (memq evil-this-operator
+                                evil-collection-yank-operators)
+                      (setq evil-inhibit-operator t)
+                      #'Info-copy-current-node-name)))))
+
+(provide 'evil-collection-info)
+;;; evil-collection-info.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-info.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-info.elc
new file mode 100644
index 000000000000..f572d97db3cf
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-info.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-integration.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-integration.el
new file mode 100644
index 000000000000..d332d596f974
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-integration.el
@@ -0,0 +1,313 @@
+;;; evil-collection-integration.el --- Integrate `evil' with other modules. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Integrate `evil' with other modules.
+;;; This is an initial copy of evil-integration.el
+
+;; Previous Author/Maintainer:
+;; Author: Vegard Øye <vegard_oye at hotmail.com>
+;; Maintainer: Vegard Øye <vegard_oye at hotmail.com>
+
+;;; Code:
+(require 'evil-maps)
+(require 'evil-core)
+(require 'evil-macros)
+(require 'evil-types)
+(require 'evil-repeat)
+
+;;; Evilize some commands
+
+;; unbound keys should be ignored
+(evil-declare-ignore-repeat 'undefined)
+
+(mapc #'(lambda (cmd)
+          (evil-set-command-property cmd :keep-visual t)
+          (evil-declare-not-repeat cmd))
+      '(digit-argument
+        negative-argument
+        universal-argument
+        universal-argument-minus
+        universal-argument-more
+        universal-argument-other-key))
+(mapc #'evil-declare-not-repeat
+      '(what-cursor-position))
+(mapc #'evil-declare-change-repeat
+      '(dabbrev-expand
+        hippie-expand
+        quoted-insert))
+(mapc #'evil-declare-abort-repeat
+      '(balance-windows
+        eval-expression
+        execute-extended-command
+        exit-minibuffer
+        compile
+        delete-window
+        delete-other-windows
+        find-file-at-point
+        ffap-other-window
+        recompile
+        redo
+        save-buffer
+        split-window
+        split-window-horizontally
+        split-window-vertically
+        undo
+        undo-tree-redo
+        undo-tree-undo))
+
+(evil-set-type #'previous-line 'line)
+(evil-set-type #'next-line 'line)
+
+(dolist (cmd '(keyboard-quit keyboard-escape-quit))
+  (evil-set-command-property cmd :suppress-operator t))
+
+;;; Mouse
+(evil-declare-insert-at-point-repeat 'mouse-yank-primary)
+(evil-declare-insert-at-point-repeat 'mouse-yank-secondary)
+
+;;; key-binding
+
+;; Calling `keyboard-quit' should cancel repeat
+(defadvice keyboard-quit (before evil activate)
+  (when (fboundp 'evil-repeat-abort)
+    (evil-repeat-abort)))
+
+;; dictionary.el
+
+(evil-add-hjkl-bindings dictionary-mode-map 'motion
+  "?" 'dictionary-help        ; "h"
+  "C-o" 'dictionary-previous) ; "l"
+
+;;; Dired
+
+(eval-after-load 'wdired
+  '(progn
+     (add-hook 'wdired-mode-hook #'evil-change-to-initial-state)
+     (defadvice wdired-change-to-dired-mode (after evil activate)
+       (evil-change-to-initial-state nil t))))
+
+;;; ELP
+
+(eval-after-load 'elp
+  '(defadvice elp-results (after evil activate)
+     (evil-motion-state)))
+
+;;; Info
+
+(evil-add-hjkl-bindings Info-mode-map 'motion
+  "0" 'evil-digit-argument-or-evil-beginning-of-line
+  (kbd "\M-h") 'Info-help   ; "h"
+  "\C-t" 'Info-history-back ; "l"
+  "\C-o" 'Info-history-back
+  " " 'Info-scroll-up
+  "\C-]" 'Info-follow-nearest-node
+  (kbd "DEL") 'Info-scroll-down)
+
+;;; Speedbar
+
+(evil-add-hjkl-bindings speedbar-key-map 'motion
+  "h" 'backward-char
+  "j" 'speedbar-next
+  "k" 'speedbar-prev
+  "l" 'forward-char
+  "i" 'speedbar-item-info
+  "r" 'speedbar-refresh
+  "u" 'speedbar-up-directory
+  "o" 'speedbar-toggle-line-expansion
+  (kbd "RET") 'speedbar-edit-line)
+
+;;; Undo tree
+(when (and (require 'undo-tree nil t)
+           (fboundp 'global-undo-tree-mode))
+  (global-undo-tree-mode 1))
+
+(eval-after-load 'undo-tree
+  '(with-no-warnings
+     (defun evil-collection-integration-turn-on-undo-tree-mode ()
+       "Enable `undo-tree-mode' if evil is enabled.
+This function enables `undo-tree-mode' when Evil is activated in
+some buffer, but only if `global-undo-tree-mode' is also
+activated."
+       (when (and (boundp 'global-undo-tree-mode)
+                  global-undo-tree-mode)
+         (turn-on-undo-tree-mode)))
+
+     (add-hook 'evil-local-mode-hook #'evil-collection-integration-turn-on-undo-tree-mode)
+
+     (defadvice undo-tree-visualize (after evil activate)
+       "Initialize Evil in the visualization buffer."
+       (when evil-local-mode
+         (evil-initialize-state)))
+
+     (when (fboundp 'undo-tree-visualize)
+       (evil-ex-define-cmd "undol[ist]" 'undo-tree-visualize)
+       (evil-ex-define-cmd "ul" 'undo-tree-visualize))
+
+     (when (boundp 'undo-tree-visualizer-mode-map)
+       (define-key undo-tree-visualizer-mode-map
+         [remap evil-backward-char] 'undo-tree-visualize-switch-branch-left)
+       (define-key undo-tree-visualizer-mode-map
+         [remap evil-forward-char] 'undo-tree-visualize-switch-branch-right)
+       (define-key undo-tree-visualizer-mode-map
+         [remap evil-next-line] 'undo-tree-visualize-redo)
+       (define-key undo-tree-visualizer-mode-map
+         [remap evil-previous-line] 'undo-tree-visualize-undo)
+       (define-key undo-tree-visualizer-mode-map
+         [remap evil-ret] 'undo-tree-visualizer-set))
+
+     (when (boundp 'undo-tree-visualizer-selection-mode-map)
+       (define-key undo-tree-visualizer-selection-mode-map
+         [remap evil-backward-char] 'undo-tree-visualizer-select-left)
+       (define-key undo-tree-visualizer-selection-mode-map
+         [remap evil-forward-char] 'undo-tree-visualizer-select-right)
+       (define-key undo-tree-visualizer-selection-mode-map
+         [remap evil-next-line] 'undo-tree-visualizer-select-next)
+       (define-key undo-tree-visualizer-selection-mode-map
+         [remap evil-previous-line] 'undo-tree-visualizer-select-previous)
+       (define-key undo-tree-visualizer-selection-mode-map
+         [remap evil-ret] 'undo-tree-visualizer-set))))
+
+;;; Auto-complete
+(eval-after-load 'auto-complete
+  '(progn
+     (evil-add-command-properties 'auto-complete :repeat 'evil-collection-integration-ac-repeat)
+     (evil-add-command-properties 'ac-complete :repeat 'evil-collection-integration-ac-repeat)
+     (evil-add-command-properties 'ac-expand :repeat 'evil-collection-integration-ac-repeat)
+     (evil-add-command-properties 'ac-next :repeat 'ignore)
+     (evil-add-command-properties 'ac-previous :repeat 'ignore)
+
+     (defvar evil-collection-integration-ac-prefix-len nil
+       "The length of the prefix of the current item to be completed.")
+
+     (defvar ac-prefix)
+     (defun evil-collection-integration-ac-repeat (flag)
+       "Record the changes for auto-completion."
+       (cond
+        ((eq flag 'pre)
+         (setq evil-collection-integration-ac-prefix-len (length ac-prefix))
+         (evil-repeat-start-record-changes))
+        ((eq flag 'post)
+         ;; Add change to remove the prefix
+         (evil-repeat-record-change (- evil-collection-integration-ac-prefix-len)
+                                    ""
+                                    evil-collection-integration-ac-prefix-len)
+         ;; Add change to insert the full completed text
+         (evil-repeat-record-change
+          (- evil-collection-integration-ac-prefix-len)
+          (buffer-substring-no-properties (- evil-repeat-pos
+                                             evil-collection-integration-ac-prefix-len)
+                                          (point))
+          0)
+         ;; Finish repeation
+         (evil-repeat-finish-record-changes))))))
+
+;;; Company
+(eval-after-load 'company
+  '(progn
+     (mapc #'evil-declare-change-repeat
+           '(company-complete-mouse
+             company-complete-number
+             company-complete-selection
+             company-complete-common))
+
+     (mapc #'evil-declare-ignore-repeat
+           '(company-abort
+             company-select-next
+             company-select-previous
+             company-select-next-or-abort
+             company-select-previous-or-abort
+             company-select-mouse
+             company-show-doc-buffer
+             company-show-location
+             company-search-candidates
+             company-filter-candidates))))
+
+;; Eval last sexp
+(cond
+ ((version< emacs-version "25")
+  (defadvice preceding-sexp (around evil activate)
+    "In normal-state or motion-state, last sexp ends at point."
+    (if (and (not evil-move-beyond-eol)
+             (or (evil-normal-state-p) (evil-motion-state-p)))
+        (save-excursion
+          (unless (or (eobp) (eolp)) (forward-char))
+          ad-do-it)
+      ad-do-it))
+
+  (defadvice pp-last-sexp (around evil activate)
+    "In normal-state or motion-state, last sexp ends at point."
+    (if (and (not evil-move-beyond-eol)
+             (or (evil-normal-state-p) (evil-motion-state-p)))
+        (save-excursion
+          (unless (or (eobp) (eolp)) (forward-char))
+          ad-do-it)
+      ad-do-it)))
+ (t
+  (defun evil-collection-integration--preceding-sexp (command &rest args)
+    "In normal-state or motion-state, last sexp ends at point."
+    (if (and (not evil-move-beyond-eol)
+             (or (evil-normal-state-p) (evil-motion-state-p)))
+        (save-excursion
+          (unless (or (eobp) (eolp)) (forward-char))
+          (apply command args))
+      (apply command args)))
+
+  (advice-add 'elisp--preceding-sexp :around 'evil-collection-integration--preceding-sexp '((name . evil)))
+  (advice-add 'pp-last-sexp          :around 'evil-collection-integration--preceding-sexp '((name . evil)))))
+
+;; Show key
+(defadvice quail-show-key (around evil activate)
+  "Temporarily go to Emacs state"
+  (evil-with-state emacs ad-do-it))
+
+(defadvice describe-char (around evil activate)
+  "Temporarily go to Emacs state"
+  (evil-with-state emacs ad-do-it))
+
+;;; nXhtml/mumamo
+;; ensure that mumamo does not toggle evil through its globalized mode
+(eval-after-load 'mumamo
+  '(with-no-warnings
+     (push 'evil-mode-cmhh mumamo-change-major-mode-no-nos)))
+
+;; visual-line-mode integration
+(when evil-respect-visual-line-mode
+  (let ((swaps '((evil-next-line . evil-next-visual-line)
+                 (evil-previous-line . evil-previous-visual-line)
+                 (evil-beginning-of-line . evil-beginning-of-visual-line)
+                 (evil-end-of-line . evil-end-of-visual-line))))
+    (dolist (swap swaps)
+      (define-key visual-line-mode-map (vector 'remap (car swap)) (cdr swap))
+      (define-key visual-line-mode-map (vector 'remap (cdr swap)) (car swap)))))
+
+;;; abbrev.el
+(when evil-want-abbrev-expand-on-insert-exit
+  (eval-after-load 'abbrev
+    '(add-hook 'evil-insert-state-exit-hook 'expand-abbrev)))
+
+
+(provide 'evil-collection-integration)
+;;; evil-collection-integration.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-integration.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-integration.elc
new file mode 100644
index 000000000000..b7b735b301cb
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-integration.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ivy.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ivy.el
new file mode 100644
index 000000000000..d38372a8505c
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ivy.el
@@ -0,0 +1,110 @@
+;;; evil-collection-ivy.el --- Evil bindings for ivy -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, ivy, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `ivy-mode'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'ivy nil t)
+
+(defconst evil-collection-ivy-maps '(ivy-occur-mode-map
+                                     ivy-occur-grep-mode-map
+                                     ivy-minibuffer-map))
+
+(defun evil-collection-ivy-setup ()
+  "Set up `evil' bindings for `ivy-mode'."
+  (evil-collection-define-key nil 'ivy-mode-map
+    (kbd "<escape>") 'minibuffer-keyboard-quit)
+  (evil-collection-define-key 'normal 'ivy-occur-mode-map
+    [mouse-1] 'ivy-occur-click
+    (kbd "<return>") 'ivy-occur-press-and-switch
+    "j" 'ivy-occur-next-line
+    "k" 'ivy-occur-previous-line
+    "h" 'evil-backward-char
+    "l" 'evil-forward-char
+    "g" nil
+    "gg" 'evil-goto-first-line
+    "gf" 'ivy-occur-press
+    "ga" 'ivy-occur-read-action
+    "go" 'ivy-occur-dispatch
+    "gc" 'ivy-occur-toggle-calling
+
+    ;; refresh
+    "gr" 'ivy-occur-revert-buffer
+
+    ;; quit
+    "q" 'quit-window)
+
+  (when evil-want-C-d-scroll
+    (evil-collection-define-key 'normal 'ivy-occur-grep-mode-map
+      "D" 'ivy-occur-delete-candidate
+      (kbd "C-d") 'evil-scroll-down))
+
+  (evil-collection-define-key 'visual 'ivy-occur-grep-mode-map
+    "j" 'evil-next-line
+    "k" 'evil-previous-line)
+
+  (evil-collection-define-key 'normal 'ivy-occur-grep-mode-map
+    "d" 'ivy-occur-delete-candidate
+    (kbd "C-x C-q") 'ivy-wgrep-change-to-wgrep-mode
+    "i" 'ivy-wgrep-change-to-wgrep-mode
+    "gd" 'ivy-occur-delete-candidate
+    [mouse-1] 'ivy-occur-click
+    (kbd "<return>") 'ivy-occur-press-and-switch
+    "j" 'ivy-occur-next-line
+    "k" 'ivy-occur-previous-line
+    "h" 'evil-backward-char
+    "l" 'evil-forward-char
+    "g" nil
+    "gg" 'evil-goto-first-line
+    "gf" 'ivy-occur-press
+    "gr" 'ivy-occur-revert-buffer
+    "ga" 'ivy-occur-read-action
+    "go" 'ivy-occur-dispatch
+    "gc" 'ivy-occur-toggle-calling
+
+    "0" 'evil-digit-argument-or-evil-beginning-of-line
+
+    ;; quit
+    "q" 'quit-window)
+
+  (defvar evil-collection-setup-minibuffer)
+  (when evil-collection-setup-minibuffer
+    (evil-collection-define-key 'normal 'ivy-minibuffer-map
+      (kbd "<escape>") 'abort-recursive-edit
+      (kbd "<return>") 'exit-minibuffer
+      (kbd "C-m") 'ivy-done
+      "j" 'ivy-next-line
+      "k" 'ivy-previous-line)
+
+    (evil-collection-define-key 'insert 'ivy-minibuffer-map
+      [backspace] 'ivy-backward-delete-char
+      (kbd "C-r") 'ivy-reverse-i-search
+      (kbd "C-n") 'ivy-next-line
+      (kbd "C-p") 'ivy-previous-line)))
+
+(provide 'evil-collection-ivy)
+;;; evil-collection-ivy.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ivy.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ivy.elc
new file mode 100644
index 000000000000..6def67bceab3
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ivy.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-js2-mode.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-js2-mode.el
new file mode 100644
index 000000000000..5e07e38cb3e2
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-js2-mode.el
@@ -0,0 +1,45 @@
+;;; evil-collection-js2-mode.el --- Bindings for `js2-mode' -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `js2-mode'
+
+;;; Code:
+(require 'evil-collection)
+(require 'js2-mode nil t)
+
+(defvar js-indent-level)
+
+(defun evil-collection-js2-set-evil-shift-width ()
+  "Set `evil-shift-width' according to `js-indent-level'."
+  (setq-local evil-shift-width js-indent-level))
+
+(defun evil-collection-js2-mode-setup ()
+  "Set up `evil' bindings for `js2-mode'."
+  (add-hook 'js2-mode-hook #'evil-collection-js2-set-evil-shift-width)
+  (add-hook 'js2-jsx-mode-hook #'evil-collection-js2-set-evil-shift-width))
+
+(provide 'evil-collection-js2-mode)
+;;; evil-collection-js2-mode.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-js2-mode.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-js2-mode.elc
new file mode 100644
index 000000000000..e701c641f053
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-js2-mode.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-kotlin-mode.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-kotlin-mode.el
new file mode 100644
index 000000000000..144650959628
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-kotlin-mode.el
@@ -0,0 +1,41 @@
+;;; evil-collection-kotlin-mode.el --- Bindings for `kotlin-mode'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: emacs, evil, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `kotlin-mode'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'kotlin-mode nil t)
+
+(defconst evil-collection-kotlin-maps '(kotlin-mode-map))
+
+(defun evil-collection-kotlin-mode-setup ()
+  "Set up `evil' bindings for `kotlin-mode'."
+  (evil-collection-define-key 'normal 'kotlin-mode-map
+    "gz" 'kotlin-repl))
+
+(provide 'evil-collection-kotlin-mode)
+;;; evil-collection-kotlin-mode.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-kotlin-mode.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-kotlin-mode.elc
new file mode 100644
index 000000000000..85ef5acfa924
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-kotlin-mode.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-lispy.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-lispy.el
new file mode 100644
index 000000000000..303c82c2cd1f
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-lispy.el
@@ -0,0 +1,255 @@
+;;; evil-collection-lispy.el --- Evil Bindings for Lispy -*- lexical-binding: t; no-byte-compile: t; -*-
+
+;; Copyright (C) 2018 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, lispy, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `lispy-mode'.
+;; This is not included in the default init list for `evil-collection'.
+;; Add `lispy' to `evil-collection-mode-list' to use this package.
+;; e.g. (push 'lispy evil-collection-mode-list)
+;; This file is meant to be an experimental ground for `lispy' keybindings
+;; and the changes here are intended to be created as a PR to the main `lispy'
+;; repository.
+;; PRs, tweaks or comments are very welcome!
+
+;;; Code:
+(require 'lispy nil t)
+(require 'evil-collection)
+
+(defconst evil-collection-lispy-maps '(lispy-mode-map))
+
+(defvar lispy-mode-map-base)
+(defvar lispy-mode-map-special)
+(defvar lispy-mode-map-lispy)
+(defvar lispy-mode-map-paredit)
+(defvar lispy-mode-map-parinfer)
+(defvar lispy-mode-map-evilcp)
+(defvar lispy-mode-map-c-digits)
+(defvar lispy-mode-map-oleh)
+(defvar lispy-mode-map)
+(declare-function lispy-define-key "lispy")
+(declare-function lispy-set-key-theme "lispy")
+
+(declare-function lispyville-insert-at-beginning-of-list "lispyville")
+(declare-function lispyville-insert-at-end-of-list "lispyville")
+
+(defun evil-collection-lispy-insert-at-end-of-list ()
+  "Forward list and enter insert state."
+  (interactive)
+  (lispyville-insert-at-end-of-list 1))
+
+(defun evil-collection-lispy-insert-at-beginning-of-list ()
+  "Backward list and enter insert state."
+  (interactive)
+  (lispyville-insert-at-beginning-of-list 1))
+
+(defhydra g-knight (:color blue :hint nil :idle .3)
+  "g knight"
+  ("j" lispy-knight-down "Knight Down")
+  ("k" lispy-knight-up "Knight Up")
+  ("g" lispy-beginning-of-defun "Beginning of Defun")
+  ("d" lispy-goto "Goto")
+  ("l" lispy-goto-local "Goto Local"))
+
+(defhydra lispy-tab-hydra (:color blue :hint nil :idle .3)
+  "Tab"
+  ("i" lispy-tab "Tab")
+  ("s" lispy-shifttab "Shifttab"))
+
+(defvar evil-collection-lispy-mode-map-special-evil
+  (let ((map (make-sparse-keymap)))
+    ;; navigation
+    (lispy-define-key map "l" 'lispy-right)
+    (lispy-define-key map "h" 'lispy-left)
+    (lispy-define-key map "f" 'lispy-ace-paren
+      :override '(cond ((bound-and-true-p view-mode)
+                        (View-quit)))) ;; `lispy-flow' -> w
+    (lispy-define-key map "j" 'lispy-down)
+    (lispy-define-key map "k" 'lispy-up)
+    (lispy-define-key map "d" 'lispy-delete) ;; `lispy-different' -> o
+    (lispy-define-key map "o" 'lispy-different) ;; `lispy-other-mode' -> Q
+    (lispy-define-key map "p" 'lispy-paste) ;; `lispy-eval-other-window' -> P
+    (lispy-define-key map "P" 'lispy-eval-other-window) ;; `lispy-paste' -> p
+    (lispy-define-key map "y" 'lispy-new-copy) ;; `lispy-occur' -> /
+
+    (lispy-define-key map "g" 'g-knight/body) ;; `lispy-goto' -> gd
+
+    ;; FIXME: Looks like one of the evil keymaps is taking precedence.
+    (lispy-define-key map "C-t" 'pop-tag-mark)
+
+    ;; outline
+    (lispy-define-key map "J" 'lispy-join)     ;; `lispy-outline-next'
+    (lispy-define-key map "K" 'lispy-describe) ;; `lispy-outline-prev'
+    (lispy-define-key map "L" 'lispy-outline-goto-child)
+
+    ;; Paredit transformations
+    (lispy-define-key map ">" 'lispy-slurp-or-barf-right) ;; `lispy-slurp'
+    (lispy-define-key map "<" 'lispy-slurp-or-barf-left) ;; `lispy-barf'
+
+    ;; FIXME: This doesn't work for me for some reason.
+    ;; `lispy-occur' doesn't show up in evil-collection-lispy-mode-map-special-evil.
+    ;; Evaluating lispy-define-key again in *scratch* works...
+    (lispy-define-key map "/" 'lispy-occur) ;; `lispy-x' -> q
+
+    (lispy-define-key map "r" 'lispy-raise)
+    (lispy-define-key map "R" 'lispy-raise-some)
+
+    (lispy-define-key map "+" 'lispy-join) ;; Hmnn this can be something else.
+
+    ;; more transformations
+    (lispy-define-key map "C" 'lispy-convolute)
+    (lispy-define-key map "X" 'lispy-convolute-left)
+    (lispy-define-key map "w" 'lispy-move-up)
+    (lispy-define-key map "s" 'lispy-move-down)
+    (lispy-define-key map "O" 'lispy-oneline)
+    (lispy-define-key map "M" 'lispy-alt-multiline)
+    (lispy-define-key map "S" 'lispy-stringify)
+
+    ;; marking
+    (lispy-define-key map "a" 'lispy-ace-symbol
+      :override '(cond ((looking-at lispy-outline)
+                        (lispy-meta-return))))
+    (lispy-define-key map "H" 'lispy-ace-symbol-replace)
+    (lispy-define-key map "m" 'lispy-view) ;; `lispy-mark-list' -> v
+
+    ;; dialect-specific
+    (lispy-define-key map "e" 'lispy-eval)
+    (lispy-define-key map "E" 'lispy-eval-and-insert)
+
+    ;; Hmnn, not sure why there's no `lispy-end-of-defun'.
+    ;; `end-of-defun' doesn't work quite right yet. It exits the list
+    ;; which would exit lispy state.
+    (lispy-define-key map "G" 'end-of-defun) ;; `lispy-goto-local' -> gl
+
+    (lispy-define-key map "A" 'evil-collection-lispy-insert-at-end-of-list) ;; `lispy-beginning-of-defun' -> gg
+    (lispy-define-key map "I" 'evil-collection-lispy-insert-at-beginning-of-list) ;; `lispy-shifttab' -> zs
+
+    (lispy-define-key map "F" 'lispy-follow t)
+    (lispy-define-key map "D" 'pop-tag-mark)
+    (lispy-define-key map "_" 'lispy-underscore)
+    ;; miscellanea
+    (define-key map (kbd "SPC") 'lispy-space)
+    (lispy-define-key map "z" 'lispy-tab-hydra/body) ;; `lh-knight/body'  -> g
+
+    (lispy-define-key map "N" 'lispy-narrow)
+    (lispy-define-key map "W" 'lispy-widen)
+    (lispy-define-key map "c" 'lispy-clone)
+    (lispy-define-key map "u" 'lispy-undo)
+
+    (lispy-define-key map "q" 'lispy-x) ;; `lispy-ace-paren' -> f
+    (lispy-define-key map "Q" 'lispy-other-mode) ;; `lispy-ace-char' -> t
+    (lispy-define-key map "v" 'lispy-mark-list)  ;; `lispy-view' -> m
+    (lispy-define-key map "t" 'lispy-ace-char) ;; `lispy-teleport' -> T
+    (lispy-define-key map "n" 'lispy-flow) ;; `lispy-new-copy' -> y
+    (lispy-define-key map "b" 'lispy-back)
+
+    (lispy-define-key map "B" 'lispy-ediff-regions)
+    (lispy-define-key map "x" 'lispy-splice) ;; `lispy-x' -> q
+
+    (lispy-define-key map "Z" 'lispy-edebug-stop)
+    (lispy-define-key map "V" 'lispy-visit)
+    (lispy-define-key map "-" 'lispy-ace-subword)
+    (lispy-define-key map "." 'lispy-repeat)
+    (lispy-define-key map "~" 'lispy-tilde)
+    ;; digit argument
+    (mapc (lambda (x) (lispy-define-key map (format "%d" x) 'digit-argument))
+          (number-sequence 0 9))
+
+    ;; additional
+    (lispy-define-key map "T" 'lispy-teleport
+      :override '(cond ((looking-at lispy-outline)
+                        (end-of-line))))
+    (lispy-define-key map "C-J" 'lispy-outline-next) ;; Hmnn...
+    (lispy-define-key map "C-K" 'lispy-outline-prev) ;; Hmnn...
+    (lispy-define-key map "]" 'lispy-forward)
+    (lispy-define-key map "[" 'lispy-backward)
+    (lispy-define-key map "{" 'lispy-brackets)
+
+    ;; Experimental
+    (lispy-define-key map "^" 'lispy-splice-sexp-killing-backward)
+    (lispy-define-key map "$" 'lispy-splice-sexp-killing-forward)
+    map)
+  "`evil' flavored `lispy' bindings when in special state.")
+
+(defvar evil-collection-lispy-mode-map-evil
+  (let ((map (copy-keymap lispy-mode-map-base)))
+    (define-key map (kbd "M-)") 'lispy-wrap-round)
+    (define-key map (kbd "M-s") 'lispy-splice)
+    (define-key map (kbd "M-<up>") 'lispy-splice-sexp-killing-backward)
+    (define-key map (kbd "M-<down>") 'lispy-splice-sexp-killing-forward)
+
+    (define-key map (kbd "M-r") 'lispy-raise-sexp)
+    (define-key map (kbd "M-R") 'lispy-raise-some)
+    (define-key map (kbd "M-C") 'lispy-convolute-sexp)
+    (define-key map (kbd "M-S") 'lispy-split)
+    (define-key map (kbd "M-J") 'lispy-join)
+    (define-key map (kbd "]") 'lispy-forward)
+    (define-key map (kbd "[") 'lispy-backward)
+    (define-key map (kbd "M-(") 'lispy-wrap-round)
+    (define-key map (kbd "M-{") 'lispy-wrap-braces)
+    (define-key map (kbd "M-}") 'lispy-wrap-braces)
+    (define-key map (kbd "<") 'lispy-slurp-or-barf-left)
+    (define-key map (kbd ">") 'lispy-slurp-or-barf-right)
+    (define-key map (kbd "M-y") 'lispy-new-copy)
+    (define-key map (kbd "<C-return>") 'lispy-open-line)
+    (define-key map (kbd "<M-return>") 'lispy-meta-return)
+    (define-key map (kbd "M-k") 'lispy-move-up)
+    (define-key map (kbd "M-j") 'lispy-move-down)
+    (define-key map (kbd "M-o") 'lispy-string-oneline)
+    (define-key map (kbd "M-p") 'lispy-clone)
+    (define-key map (kbd "M-d") 'lispy-delete)
+    map)
+  "`evil' flavored `lispy-mode' bindings.")
+
+(defun evil-collection-lispy-set-key-theme (theme)
+  "Set `lispy-mode-map' for according to THEME.
+THEME is a list of choices: 'special, 'lispy, 'paredit, 'evilcp,
+'c-digits', 'special-evil', 'evil'.
+
+This is an exact copy of `lispy-set-key-theme' except with the additions of
+'special-evil' and 'evil' themes."
+  (setq lispy-mode-map
+        (make-composed-keymap
+         (delq nil
+               (list
+                (when (memq 'special-evil theme) evil-collection-lispy-mode-map-special-evil)
+                (when (memq 'evil theme) evil-collection-lispy-mode-map-evil)
+                (when (memq 'special theme) lispy-mode-map-special)
+                (when (memq 'lispy theme) lispy-mode-map-lispy)
+                (when (memq 'paredit theme) lispy-mode-map-paredit)
+                (when (memq 'parinfer theme) lispy-mode-map-parinfer)
+                (when (memq 'evilcp theme) lispy-mode-map-evilcp)
+                (when (memq 'c-digits theme) lispy-mode-map-c-digits)
+                (when (memq 'oleh theme) lispy-mode-map-oleh)))))
+  (setcdr
+   (assq 'lispy-mode minor-mode-map-alist)
+   lispy-mode-map))
+
+(defun evil-collection-lispy-setup ()
+  "Set up `evil' bindings for `lispy'."
+  (advice-add 'lispy-set-key-theme :override 'evil-collection-lispy-set-key-theme)
+  (lispy-set-key-theme '(special-evil evil)))
+
+(provide 'evil-collection-lispy)
+;;; evil-collection-lispy.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-log-view.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-log-view.el
new file mode 100644
index 000000000000..8450b66811b2
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-log-view.el
@@ -0,0 +1,61 @@
+;;; evil-collection-log-view.el --- Bindings for `log-view' -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Bindings for `log-view'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'log-view)
+
+(defconst evil-collection-log-view-maps '(log-view-mode-map))
+
+(defun evil-collection-log-view-setup ()
+  "Set up `evil' bindings for `log-view'."
+
+  ;; Currently vc has these various log-view modes
+  (evil-set-initial-state 'vc-hg-log-view-mode 'normal)
+  (evil-set-initial-state 'vc-git-log-view-mode 'normal)
+  (evil-set-initial-state 'vc-svn-log-view-mode 'normal)
+
+  (evil-collection-define-key 'normal 'log-view-mode-map
+    "q" 'quit-window
+    (kbd "RET") 'log-view-toggle-entry-display
+    "m" 'log-view-toggle-mark-entry
+    "c" 'log-view-modify-change-comment
+    "d" 'log-view-diff
+    "=" 'log-view-diff
+    "D" 'log-view-diff-changeset
+    "a" 'log-view-annotate-version
+    "F" 'log-view-find-revision
+    "gj" 'log-view-msg-next
+    "gk" 'log-view-msg-prev
+    "]" 'log-view-msg-next
+    "[" 'log-view-msg-prev
+    (kbd "C-j") 'log-view-file-next
+    (kbd "C-k") 'log-view-file-prev))
+
+(provide 'evil-collection-log-view)
+;;; evil-collection-log-view.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-log-view.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-log-view.elc
new file mode 100644
index 000000000000..02e23ab9e0b3
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-log-view.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-lsp-ui-imenu.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-lsp-ui-imenu.el
new file mode 100644
index 000000000000..9f690c8d6277
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-lsp-ui-imenu.el
@@ -0,0 +1,46 @@
+;;; evil-collection-lsp-ui-imenu.el --- Bindings for `lsp-ui-imenu-mode'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: Felix Dick <felix.dick@web.de>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, lsp-ui-imenu, convenience
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `lsp-ui-imenu-mode'.
+
+;;; Code:
+(require 'lsp-ui nil t)
+(require 'evil-collection)
+
+(defconst evil-collection-lsp-ui-imenu-mode-maps '(lsp-ui-imenu-mode-map))
+
+(defun evil-collection-lsp-ui-imenu-setup ()
+  "Set up `evil' bindings for `lsp-ui-imenu'."
+  (evil-set-initial-state 'lsp-ui-imenu-mode 'normal)
+  (evil-collection-define-key 'normal 'lsp-ui-imenu-mode-map
+    (kbd "C-k") 'lsp-ui-imenu--prev-kind
+    (kbd "C-j") 'lsp-ui-imenu--next-kind
+    (kbd "q") 'lsp-ui-imenu--kill
+    (kbd "<return>") 'lsp-ui-imenu--view
+    (kbd "<M-return>") 'lsp-ui-imenu--visit))
+
+(provide 'evil-collection-lsp-ui-imenu)
+;;; evil-collection-lsp-ui-imenu.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-lsp-ui-imenu.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-lsp-ui-imenu.elc
new file mode 100644
index 000000000000..a8494ea9b868
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-lsp-ui-imenu.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-lua-mode.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-lua-mode.el
new file mode 100644
index 000000000000..4b5ca69e0dc9
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-lua-mode.el
@@ -0,0 +1,49 @@
+;;; evil-collection-lua-mode.el --- Bindings for `lua-mode'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `lua-mode'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'lua-mode nil t)
+
+(defvar lua-indent-level)
+(defconst evil-collection-lua-mode-maps '(lua-mode-map))
+
+(defun evil-collection-lua-mode-set-evil-shift-width ()
+  "Set `evil-shift-width' according to `lua-indent-level'."
+  (setq evil-shift-width lua-indent-level))
+
+(defun evil-collection-lua-mode-setup ()
+  "Set up `evil' bindings for `lua-mode'."
+  (add-hook 'lua-mode-hook #'evil-collection-lua-mode-set-evil-shift-width)
+
+  (evil-collection-define-key 'normal 'lua-mode-map
+    "K" 'lua-search-documentation
+    "gz" 'run-lua))
+
+(provide 'evil-collection-lua-mode)
+;;; evil-collection-lua-mode.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-lua-mode.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-lua-mode.elc
new file mode 100644
index 000000000000..5738a4d67890
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-lua-mode.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-macrostep.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-macrostep.el
new file mode 100644
index 000000000000..5c9916a87a16
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-macrostep.el
@@ -0,0 +1,51 @@
+;;; evil-collection-macrostep.el --- Evil Integration for Macrostep -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, macrostep, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `macrostep-mode'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'macrostep nil t)
+
+(defconst evil-collection-macrostep-maps '(macrostep-keymap))
+
+(defun evil-collection-macrostep-setup ()
+  "Set up `evil' bindings for `macrostep'."
+  ;; Keymaps don't seem to be populated on first try.
+  ;; Force `evil' to normalize keymaps.
+  (add-hook 'macrostep-mode-hook #'evil-normalize-keymaps)
+
+  (evil-collection-define-key 'normal 'macrostep-keymap
+    "q" 'macrostep-collapse-all
+    "e" 'macrostep-expand
+    "u" 'macrostep-collapse
+    "gj" 'macrostep-next-macro
+    "gk" 'macrostep-prev-macro
+    (kbd "C-j") 'macrostep-next-macro
+    (kbd "C-k") 'macrostep-prev-macro))
+
+(provide 'evil-collection-macrostep)
+;;; evil-collection-macrostep.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-macrostep.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-macrostep.elc
new file mode 100644
index 000000000000..38c1c2daf29e
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-macrostep.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-magit-todos.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-magit-todos.el
new file mode 100644
index 000000000000..e344abe00a58
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-magit-todos.el
@@ -0,0 +1,52 @@
+;;; evil-collection-magit-todos.el --- Bindings for `magit-todos' -*- lexical-binding: t -*-
+
+;; Copyright (C) 2018 James Nguyen
+
+;; Author: Fredrik Bergroth <fbergroth@gmail.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Bindings for `magit-todos'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'magit-todos nil t)
+
+(defconst evil-collection-magit-todos-maps '(magit-todos-section-map
+                                             magit-status-mode-map))
+
+(defun evil-collection-magit-todos-setup-jump-key ()
+  "Add keybinding to jump to todos section."
+  (evil-collection-define-key 'normal 'magit-status-mode-map
+    "gT" (and (bound-and-true-p magit-todos-mode) 'magit-todos-jump-to-todos)))
+
+
+(defun evil-collection-magit-todos-setup ()
+  "Set up `evil' bindings for `magit-todos'."
+  ;; magit-todos binds jT which prevents evil users from stepping into the section
+  (evil-collection-define-key nil 'magit-todos-section-map
+    "j" nil)
+
+  (add-hook 'magit-todos-mode-hook 'evil-collection-magit-todos-setup-jump-key))
+
+
+(provide 'evil-collection-magit-todos)
+;;; evil-collection-magit-todos.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-magit-todos.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-magit-todos.elc
new file mode 100644
index 000000000000..2ab3e2cfdd51
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-magit-todos.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-magit.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-magit.el
new file mode 100644
index 000000000000..7426c980af07
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-magit.el
@@ -0,0 +1,47 @@
+;;; evil-collection-magit.el --- Bindings for `magit' -*- lexical-binding: t -*-
+
+;; Copyright (C) 2018 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `magit'
+;;; This file is to work around an issue described in
+;;; https://github.com/emacs-evil/evil-collection/issues/108
+;;; Ideally this file is only temporary and should be removed once
+;;; #108 is resolved.
+
+;;; Code:
+(require 'evil-collection)
+(require 'magit nil t)
+
+(defvar magit-blame-mode-map)
+
+(defconst evil-collection-magit-maps '(magit-blame-mode-map))
+
+(defun evil-collection-magit-setup ()
+  "Set up `evil' bindings for `magit'."
+  (evil-collection-define-key 'normal 'magit-blame-mode-map
+    "q" 'magit-blame-quit))
+
+(provide 'evil-collection-magit)
+;;; evil-collection-magit.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-magit.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-magit.elc
new file mode 100644
index 000000000000..818a6e281b92
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-magit.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-man.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-man.el
new file mode 100644
index 000000000000..c846ed683d6a
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-man.el
@@ -0,0 +1,67 @@
+;;; evil-collection-man.el --- Evil bindings for Man-mode -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, man, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `man'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'man)
+
+(defconst evil-collection-man-maps '(Man-mode-map))
+
+(defun evil-collection-man-setup ()
+  "Set up `evil' bindings for `man'."
+  (evil-set-initial-state 'Man-mode 'normal)
+  (evil-collection-define-key 'normal 'Man-mode-map
+    ;; motion
+    (kbd "SPC") 'scroll-up-command
+    (kbd "S-SPC") 'scroll-down-command
+    (kbd "<tab>") 'forward-button
+    (kbd "<backtab>") 'backward-button
+
+    (kbd "]") 'Man-next-manpage
+    (kbd "[") 'Man-previous-manpage
+    (kbd "gj") 'Man-next-manpage
+    (kbd "gk") 'Man-previous-manpage
+    (kbd "C-j") 'Man-next-section
+    (kbd "C-k") 'Man-previous-section
+
+    ;; goto
+    "gm" 'man
+    "gd" 'Man-goto-section ; TODO: "gd" does not match the rationale of "go to definition". Change?
+    "gR" 'Man-follow-manual-reference ; TODO: Make this match Info-follow-reference?
+    "gs" 'Man-goto-see-also-section
+
+    ;; refresh
+    "gr" 'Man-update-manpage
+
+    ;; quit
+    "q" 'quit-window
+    "ZQ" 'quit-window
+    "ZZ" 'quit-window))
+
+(provide 'evil-collection-man)
+;;; evil-collection-man.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-man.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-man.elc
new file mode 100644
index 000000000000..ae7144ae5417
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-man.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-minibuffer.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-minibuffer.el
new file mode 100644
index 000000000000..47fa63fcf98b
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-minibuffer.el
@@ -0,0 +1,75 @@
+;;; evil-collection-minibuffer.el --- Evil bindings for the minibuffer -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, minibuffer, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for the minibuffer.
+
+;;; Code:
+(require 'evil-collection)
+
+(defconst evil-collection-minibuffer-maps '(minibuffer-local-map
+                                            minibuffer-local-ns-map
+                                            minibuffer-local-completion-map
+                                            minibuffer-local-must-match-map
+                                            minibuffer-local-isearch-map
+                                            evil-ex-completion-map))
+
+(defun evil-collection-minibuffer-insert ()
+  "Switch to insert state.
+
+This function is meant to be hooked in the minibuffer:
+
+  (add-hook 'minibuffer-setup-hook 'evil-collection-minibuffer-insert)
+
+`evil-set-initial-state' can not be used for the minibuffer since
+it does not have a mode."
+  (set (make-local-variable 'evil-echo-state) nil)
+  ;; (evil-set-initial-state 'mode 'insert) is the evil-proper
+  ;; way to do this, but the minibuffer doesn't have a mode.
+  ;; The alternative is to create a minibuffer mode (here), but
+  ;; then it may conflict with other packages' if they do the same.
+  (evil-insert 1))
+
+(defun evil-collection-minibuffer-setup ()
+  "Initialize minibuffer for `evil'."
+  ;; https://www.gnu.org/software/emacs/manual/html_node/elisp/Text-from-Minibuffer.html
+  (dolist (map '(minibuffer-local-map
+                 minibuffer-local-ns-map
+                 minibuffer-local-completion-map
+                 minibuffer-local-must-match-map
+                 minibuffer-local-isearch-map))
+    (evil-collection-define-key 'normal map (kbd "<escape>") 'abort-recursive-edit)
+    (evil-collection-define-key 'normal map (kbd "<return>") 'exit-minibuffer))
+
+  (add-hook 'minibuffer-setup-hook 'evil-collection-minibuffer-insert)
+  ;; Because of the above minibuffer-setup-hook, some evil-ex bindings need be reset.
+  (evil-collection-define-key 'normal 'evil-ex-completion-map (kbd "<escape>") 'abort-recursive-edit)
+  (evil-collection-define-key 'insert 'evil-ex-completion-map (kbd "C-p") 'previous-complete-history-element)
+  (evil-collection-define-key 'insert 'evil-ex-completion-map (kbd "C-n") 'next-complete-history-element)
+  (evil-collection-define-key 'normal 'evil-ex-completion-map (kbd "C-p") 'previous-history-element)
+  (evil-collection-define-key 'normal 'evil-ex-completion-map (kbd "C-n") 'next-history-element))
+
+(provide 'evil-collection-minibuffer)
+;;; evil-collection-minibuffer.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-minibuffer.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-minibuffer.elc
new file mode 100644
index 000000000000..83e2ebd10d0b
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-minibuffer.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-mu4e-conversation.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-mu4e-conversation.el
new file mode 100644
index 000000000000..86ce5031a67a
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-mu4e-conversation.el
@@ -0,0 +1,74 @@
+;;; evil-collection-mu4e-conversation.el --- Evil bindings for mu4e-conversation -*- lexical-binding: t -*-
+
+;; Copyright (C) 2018 Pierre Neidhardt <mail@ambrevar.xyz>
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "24.4") (evil "1.2.10"))
+;; Keywords: evil, mu4e, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for mu4e-conversation.
+
+;;; Code:
+
+(require 'evil-collection)
+(require 'mu4e-conversation nil t)
+
+(defconst evil-collection-mu4e-conversation-maps '(mu4e-conversation-map
+                                                   mu4e-conversation-thread-map))
+
+(defvar evil-collection-mu4e-conversation--local-map-p nil
+  "Non-nil if last position was on a local-map property.")
+
+(defun evil-collection-mu4e-conversation--switch ()
+  "Re-compute the bindings if point has moved between the thread
+  area and the composition area."
+  (let ((local-map-here (get-text-property (point) 'local-map)))
+    (when (or (and evil-collection-mu4e-conversation--local-map-p
+                   (not local-map-here))
+              (and (not evil-collection-mu4e-conversation--local-map-p)
+                   local-map-here))
+      (evil-normalize-keymaps))
+    (setq evil-collection-mu4e-conversation--local-map-p local-map-here)))
+
+(defun evil-collection-mu4e-conversation--update-local-map ()
+  (setq evil-collection-mu4e-conversation--local-map-p (get-text-property (point) 'local-map))
+  (evil-normalize-keymaps)
+  (add-hook 'post-command-hook 'evil-collection-mu4e-conversation--switch nil t))
+
+(defun evil-collection-mu4e-conversation-setup ()
+  "Set up `evil' bindings for `mu4e-conversation'."
+  ;; Evil does not update its current keymap state when it the point hits a
+  ;; local-map property is used.  See
+  ;; https://github.com/emacs-evil/evil/issues/301.  Thus we force the update
+  ;; with a technique similar to what `org~mu4e-mime-switch-headers-or-body'
+  ;; does.
+  (add-hook 'mu4e-conversation-hook 'evil-collection-mu4e-conversation--update-local-map)
+  (evil-collection-define-key 'normal 'mu4e-conversation-map
+    " " 'evil-scroll-page-down
+    (kbd "S-SPC") 'evil-scroll-page-up
+    "[" 'mu4e-conversation-previous-message
+    "]" 'mu4e-conversation-next-message
+    "zv" 'mu4e-conversation-toggle-view
+    "za" 'mu4e-conversation-toggle-hide-cited
+    "q" 'mu4e-conversation-quit))
+
+(provide 'evil-collection-mu4e-conversation)
+;;; evil-collection-mu4e-conversation.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-mu4e-conversation.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-mu4e-conversation.elc
new file mode 100644
index 000000000000..8b412772aeae
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-mu4e-conversation.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-mu4e.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-mu4e.el
new file mode 100644
index 000000000000..7ea594dcbbac
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-mu4e.el
@@ -0,0 +1,337 @@
+;;; evil-collection-mu4e.el --- Evil bindings for mu4e -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015-2018 Joris Engbers
+;; Copyright (C) 2018 Pierre Neidhardt <mail@ambrevar.xyz>
+
+;; Author: Joris Engbers <info@jorisengbers.nl>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.9
+;; Package-Requires: ((emacs "24.4") (evil "1.2.10"))
+;; Keywords: evil, mu4e, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil keybindings for mu4e that make sense for Evil users.  The following
+;; keybindings are defined:
+;;
+;; General commands:
+;; | Commmand                 | evil-mu4e | Alternative |
+;; |--------------------------+-----------+-------------|
+;; | Jump to maildir          | J         |             |
+;; | Update                   | u         |             |
+;; | Compose message          | cc        | C           |
+;; | Kill update mail process | x         |             |
+
+;; Commands for header-mode and view-mode:
+;; | Command                         | evil-mu4e | Alternative |
+;; |---------------------------------+-----------+-------------|
+;; | Next message                    | C-j       |             |
+;; | Previous message                | C-k       |             |
+;; | Mark the current thread as read | T         |             |
+;; | Compose message                 | cc        | C           |
+;; | Compose edit**                  | ce        | E           |
+;; | Compose forward**               | cf        | F           |
+;; | Compose reply                   | cr        | R           |
+;; | Change sorting***               | o         | O           |
+;; | Rerun search                    | gr        |             |
+;; | Toggle include related          | zr        |             |
+;; | Toggle threading                | zt        |             |
+;; | Toggle hide cited               | za        |             |
+;; | Skip duplicates                 | zd        |             |
+;; | Show log                        | gl        |             |
+;; | Select other view               | gv        |             |
+;; | Save attachement(s)             | p         | P           |
+;; | Save url                        | yu        |             |
+;; | Go to url                       | gx        |             |
+;; | Fetch url                       | gX        |             |
+;;
+;;  - * denotes only in header-mode
+;;  - ** denotes Alternative only in header-mode
+;;  - *** denotes Alternative only in view-mode
+;;
+;;; Code:
+
+(require 'evil-collection)
+(require 'mu4e nil t)
+
+(declare-function mu4e~main-action-str "mu4e-main")
+(declare-function mu4e~main-view-queue "mu4e-main")
+(defvar smtpmail-send-queued-mail)
+(defvar smtpmail-queue-dir)
+
+(defconst evil-collection-mu4e-maps '(mu4e-main-mode-map
+                                      mu4e-headers-mode-map
+                                      mu4e-view-mode-map
+                                      mu4e-compose-mode-map))
+
+
+
+(defun evil-collection-mu4e-set-state ()
+  "Set the appropriate initial state of all mu4e modes."
+  (dolist (mode '(mu4e-main-mode
+                  mu4e-headers-mode
+                  mu4e-view-mode
+                  mu4e-org-mode))
+    (evil-set-initial-state mode 'normal))
+  (evil-set-initial-state 'mu4e-compose-mode 'insert))
+
+
+
+;;; Define bindings
+
+;; TODO: Inhibit insert-state functions as per Evil Collection.
+(defvar evil-collection-mu4e-mode-map-bindings
+  `((mu4e-main-mode-map
+     "J" mu4e~headers-jump-to-maildir
+     "j" next-line
+     "k" previous-line
+     "u" mu4e-update-mail-and-index
+     "gr" revert-buffer
+     "b" mu4e-headers-search-bookmark
+     "B" mu4e-headers-search-bookmark-edit
+     "N" mu4e-news
+     ";" mu4e-context-switch
+     "H" mu4e-display-manual
+     "C" mu4e-compose-new
+     "cc" mu4e-compose-new
+     "x" mu4e-kill-update-mail
+     "A" mu4e-about
+     "f" smtpmail-send-queued-mail
+     "m" mu4e~main-toggle-mail-sending-mode
+     "s" mu4e-headers-search
+     "q" mu4e-quit)
+
+    (mu4e-headers-mode-map
+     "q" mu4e~headers-quit-buffer
+     "J" mu4e~headers-jump-to-maildir
+     "C" mu4e-compose-new
+     "E" mu4e-compose-edit
+     "F" mu4e-compose-forward
+     "R" mu4e-compose-reply
+     "cc" mu4e-compose-new
+     "ce" mu4e-compose-edit
+     "cf" mu4e-compose-forward
+     "cr" mu4e-compose-reply
+     "o" mu4e-headers-change-sorting
+     "j" mu4e-headers-next
+     "k" mu4e-headers-prev
+     "gr" mu4e-headers-rerun-search
+     "b" mu4e-headers-search-bookmark
+     "B" mu4e-headers-search-bookmark-edit
+     ";" mu4e-context-switch
+     ,(kbd "RET") mu4e-headers-view-message
+     "/" mu4e-headers-search-narrow
+     "s" mu4e-headers-search
+     "S" mu4e-headers-search-edit
+     "x" mu4e-mark-execute-all
+     "a" mu4e-headers-action
+     "*" mu4e-headers-mark-for-something ; TODO: Don't override evil-seach-word-forward?
+     "&" mu4e-headers-mark-custom
+     "A" mu4e-headers-mark-for-action
+     "m" mu4e-headers-mark-for-move
+     "r" mu4e-headers-mark-for-refile
+     "D" mu4e-headers-mark-for-delete
+     "d" mu4e-headers-mark-for-trash
+     "=" mu4e-headers-mark-for-untrash
+     "u" mu4e-headers-mark-for-unmark
+     "U" mu4e-mark-unmark-all
+     "?" mu4e-headers-mark-for-unread
+     "!" mu4e-headers-mark-for-read
+     "%" mu4e-headers-mark-pattern
+     "+" mu4e-headers-mark-for-flag
+     "-" mu4e-headers-mark-for-unflag
+     "[" mu4e-headers-prev-unread
+     "]" mu4e-headers-next-unread
+     "gk" mu4e-headers-prev-unread
+     "gj" mu4e-headers-next-unread
+     "\C-j" mu4e-headers-next
+     "\C-k" mu4e-headers-prev
+     "zr" mu4e-headers-toggle-include-related
+     "zt" mu4e-headers-toggle-threading
+     "zd" mu4e-headers-toggle-skip-duplicates
+     "gl" mu4e-show-log
+     "gv" mu4e-select-other-view
+     "T" (lambda ()
+           (interactive)
+           (mu4e-headers-mark-thread nil '(read))))
+
+    (mu4e-compose-mode-map
+     "gg" mu4e-compose-goto-top
+     "G" mu4e-compose-goto-bottom)
+
+    (mu4e-view-mode-map
+     " " mu4e-view-scroll-up-or-next
+     [tab] shr-next-link
+     [backtab] shr-previous-link
+     "q" mu4e~view-quit-buffer
+     "gx" mu4e-view-go-to-url
+     "gX" mu4e-view-fetch-url
+     "C" mu4e-compose-new
+     "H" mu4e-view-toggle-html
+     ;; "E"               mu4e-compose-edit
+     ;; "F"               mu4e-compose-forward
+     "R" mu4e-compose-reply
+     "cc" mu4e-compose-new
+     "ce" mu4e-compose-edit
+     "cf" mu4e-compose-forward
+     "cr" mu4e-compose-reply
+     "p" mu4e-view-save-attachment
+     "P" mu4e-view-save-attachment-multi ; Since mu4e 1.0, -multi is same as normal.
+     "O" mu4e-headers-change-sorting
+     "o" mu4e-view-open-attachment
+     "A" mu4e-view-attachment-action
+     "a" mu4e-view-action
+     "J" mu4e~headers-jump-to-maildir
+     "[" mu4e-view-headers-prev-unread
+     "]" mu4e-view-headers-next-unread
+     "gk" mu4e-view-headers-prev-unread
+     "gj" mu4e-view-headers-next-unread
+     "\C-j" mu4e-view-headers-next
+     "\C-k" mu4e-view-headers-prev
+     "x" mu4e-view-marked-execute
+     "&" mu4e-view-mark-custom
+     "*" mu4e-view-mark-for-something   ; TODO: Don't override "*".
+     "m" mu4e-view-mark-for-move
+     "r" mu4e-view-mark-for-refile
+     "D" mu4e-view-mark-for-delete
+     "d" mu4e-view-mark-for-trash
+     "=" mu4e-view-mark-for-untrash
+     "u" mu4e-view-unmark
+     "U" mu4e-view-unmark-all
+     "?" mu4e-view-mark-for-unread
+     "!" mu4e-view-mark-for-read
+     "%" mu4e-view-mark-pattern
+     "+" mu4e-view-mark-for-flag
+     "-" mu4e-view-mark-for-unflag
+     "zr" mu4e-headers-toggle-include-related
+     "zt" mu4e-headers-toggle-threading
+     "za" mu4e-view-toggle-hide-cited
+     "gl" mu4e-show-log
+     "s" mu4e-view-search-edit
+     "|" mu4e-view-pipe
+     "." mu4e-view-raw-message
+     ,(kbd "C--") mu4e-headers-split-view-shrink
+     ,(kbd "C-+") mu4e-headers-split-view-grow
+     "T" (lambda ()
+           (interactive)
+           (mu4e-headers-mark-thread nil '(read)))
+     ,@(when evil-want-C-u-scroll
+         '("\C-u" evil-scroll-up))))
+  ;; TODO: Add mu4e-headers-search-bookmark?
+  "All evil-mu4e bindings.")
+
+(defun evil-collection-mu4e-set-bindings ()
+  "Set the bindings."
+  ;; WARNING: With lexical binding, lambdas from `mapc' and `dolist' become
+  ;; closures in which we must use `evil-define-key*' instead of
+  ;; `evil-define-key'.
+  (dolist (binding evil-collection-mu4e-mode-map-bindings)
+    (apply #'evil-collection-define-key 'normal binding))
+  (evil-collection-define-key 'visual 'mu4e-compose-mode-map
+    "gg" 'mu4e-compose-goto-top
+    "G" 'mu4e-compose-goto-bottom)
+  (evil-collection-define-key 'operator 'mu4e-view-mode-map
+    "u" '(menu-item
+          ""
+          nil
+          :filter (lambda (&optional _)
+                    (when (memq evil-this-operator
+                                '(evil-yank evil-cp-yank evil-sp-yank lispyville-yank))
+                      (setq evil-inhibit-operator t)
+                      #'mu4e-view-save-url)))))
+
+
+;;; Update mu4e-main-view
+;;; To avoid confusion the main-view is updated to show the keys that are in use
+;;; for evil-mu4e.
+
+(defvar evil-collection-mu4e-begin-region-basic "\n  Basics"
+  "The place where to start overriding Basic section.")
+
+(defvar evil-collection-mu4e-end-region-basic "a new message\n"
+  "The place where to end overriding Basic section.")
+
+(defvar evil-collection-mu4e-new-region-basic
+  (concat (mu4e~main-action-str "\t* [J]ump to some maildir\n" 'mu4e-jump-to-maildir)
+          (mu4e~main-action-str "\t* enter a [s]earch query\n" 'mu4e-search)
+          (mu4e~main-action-str "\t* [C]ompose a new message\n" 'mu4e-compose-new))
+  "Define the evil-mu4e Basic region.")
+
+(defvar evil-collection-mu4e-begin-region-misc "\n  Misc"
+  "The place where to start overriding Misc section.")
+
+(defvar evil-collection-mu4e-end-region-misc "q]uit"
+  "The place where to end overriding Misc section.")
+
+(defvar evil-collection-mu4e-new-region-misc
+  (concat
+   (mu4e~main-action-str "\t* [;]Switch focus\n" 'mu4e-context-switch)
+   (mu4e~main-action-str "\t* [u]pdate email & database (Alternatively: gr)\n"
+                         'mu4e-update-mail-and-index)
+
+   ;; show the queue functions if `smtpmail-queue-dir' is defined
+   (if (file-directory-p smtpmail-queue-dir)
+       (mu4e~main-view-queue)
+     "")
+   "\n"
+
+   (mu4e~main-action-str "\t* [N]ews\n" 'mu4e-news)
+   (mu4e~main-action-str "\t* [A]bout mu4e\n" 'mu4e-about)
+   (mu4e~main-action-str "\t* [H]elp\n" 'mu4e-display-manual)
+   (mu4e~main-action-str "\t* [q]uit\n" 'mu4e-quit))
+  "Define the evil-mu4e Misc region.")
+
+(defun evil-collection-mu4e-replace-region (new-region start end)
+  "Replace region between START and END with NEW-REGION.
+START end END end are regular expressions."
+  ;; move to start of region
+  (goto-char (point-min))
+  (re-search-forward start)
+
+  ;; insert new headings
+  (insert "\n\n")
+  (insert new-region)
+  ;; Delete text until end of region.
+  (let ((start-point (point))
+        (end-point (re-search-forward end)))
+    (delete-region start-point end-point)))
+
+
+(defun evil-collection-mu4e-update-main-view ()
+  "Update 'Basic' and 'Misc' regions to reflect the new
+keybindings."
+  (evil-collection-mu4e-replace-region evil-collection-mu4e-new-region-basic
+                                       evil-collection-mu4e-begin-region-basic
+                                       evil-collection-mu4e-end-region-basic)
+  (evil-collection-mu4e-replace-region evil-collection-mu4e-new-region-misc
+                                       evil-collection-mu4e-begin-region-misc
+                                       evil-collection-mu4e-end-region-misc))
+
+
+
+;;; Initialize evil-collection-mu4e
+
+(defun evil-collection-mu4e-setup ()
+  "Initialize evil-mu4e if necessary.
+If mu4e-main-mode is in evil-state-motion-modes, initialization
+is already done earlier."
+    (evil-collection-mu4e-set-state)
+    (evil-collection-mu4e-set-bindings)
+    (add-hook 'mu4e-main-mode-hook 'evil-collection-mu4e-update-main-view))
+
+(provide 'evil-collection-mu4e)
+;;; evil-collection-mu4e.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-mu4e.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-mu4e.elc
new file mode 100644
index 000000000000..d7f00aaee571
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-mu4e.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-neotree.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-neotree.el
new file mode 100644
index 000000000000..159b5e211b7c
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-neotree.el
@@ -0,0 +1,100 @@
+;;; evil-collection-neotree.el --- Evil bindings for neotree -*- lexical-binding: t; no-byte-compile: t; -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Maximiliano Sandoval <msandova@protonmail.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, neotree, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `neotree'
+
+;;; Code:
+
+(require 'evil-collection)
+(require 'neotree nil t)
+
+(declare-function neotree-make-executor "neotree.el")
+(defconst evil-collection-neotree-maps '(neotree-mode-map))
+
+(defun evil-collection-neotree-setup ()
+  "Set up `evil' bindings for `neotree'."
+
+  (evil-set-initial-state 'neotree-mode 'normal) ;; Neotree start in normal by default.
+
+  (evil-collection-define-key 'normal 'neotree-mode-map
+
+    (kbd "<return>") (neotree-make-executor
+                      :file-fn 'neo-open-file
+                      :dir-fn 'neo-open-dir)
+    (kbd "<tab>") (neotree-make-executor
+                   :dir-fn 'neo-open-dir)
+    "z" (neotree-make-executor
+         :dir-fn 'neo-open-dir)
+    "ZZ" 'quit-window
+    "gd" (neotree-make-executor
+          :dir-fn 'neo-open-dired)
+    "gD" (neotree-make-executor
+          :dir-fn 'neo-open-dired)
+    "go" (neotree-make-executor
+          :file-fn 'neo-open-file
+          :dir-fn 'neo-open-dir)
+    "gO" 'neotree-quick-look
+    "gr" 'neotree-refresh
+    "q" 'neotree-hide
+    "H" 'neotree-hidden-file-toggle
+    "gh" 'neotree-hidden-file-toggle
+    (kbd "C-k") 'neotree-select-up-node
+    "gk" 'neotree-select-up-node
+    "[" 'neotree-select-up-node
+    (kbd "C-j") 'neotree-select-down-node
+    "gj" 'neotree-select-down-node
+    "]" 'neotree-select-down-node
+    "gv" 'neotree-open-file-in-system-application
+    "c" 'neotree-create-node
+    "y" 'neotree-copy-node
+    "r" 'neotree-rename-node
+    "R" 'neotree-change-root
+    "d" 'neotree-delete-node
+    "J" 'neotree-dir
+    "+" 'neotree-stretch-toggle
+    "=" 'neotree-stretch-toggle
+    "ge" 'neotree-enter
+    "j" 'neotree-next-line
+    "k" 'neotree-previous-line
+
+    ;; Unchanged keybings.
+    "a" (neotree-make-executor
+         :file-fn 'neo-open-file-ace-window)
+    "|" (neotree-make-executor
+         :file-fn 'neo-open-file-vertical-split)
+    "-" (neotree-make-executor
+         :file-fn 'neo-open-file-horizontal-split)
+    "S" 'neotree-select-previous-sibling-node
+    "s" 'neotree-select-next-sibling-node
+    (kbd "C-c C-c") 'neotree-change-root
+    (kbd "C-x 1") 'neotree-empty-fn
+    (kbd "C-x 2") 'neotree-empty-fn
+    (kbd "C-x 3") 'neotree-empty-fn
+    (kbd "C-x C-f") 'find-file-other-window
+    (kbd "C-c C-f") 'find-file-other-window))
+
+(provide 'evil-collection-neotree)
+;;; evil-collection-neotree.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-notmuch.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-notmuch.el
new file mode 100644
index 000000000000..c4212aeec7c9
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-notmuch.el
@@ -0,0 +1,178 @@
+;;; evil-collection-notmuch.el --- Bindings for `notmuch'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: emacs, tools, evil
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `notmuch'.
+
+;;; Code:
+(require 'notmuch nil t)
+(require 'evil-collection)
+
+(declare-function notmuch-show-get-tags "notmuch-show")
+(declare-function notmuch-show-tag "notmuch-show")
+(declare-function notmuch-search-get-tags "notmuch")
+(declare-function notmuch-search-tag "notmuch")
+(declare-function notmuch-tree-tag "notmuch-tree")
+
+(declare-function notmuch-tree-close-message-pane-and "notmuch-tree")
+
+(defconst evil-collection-notmuch-maps '(notmuch-common-keymap
+                                         notmuch-hello-mode-map
+                                         notmuch-show-mode-map
+                                         notmuch-show-part-map
+                                         notmuch-tree-mode-map
+                                         notmuch-search-mode-map
+                                         notmuch-search-stash-map))
+
+(defun evil-collection-notmuch-show-toggle-delete ()
+  "Toggle deleted tag for message."
+  (interactive)
+  (if (member "deleted" (notmuch-show-get-tags))
+      (notmuch-show-tag (list "-deleted"))
+    (notmuch-show-tag (list "+deleted")))
+  (evil-next-line))
+
+(defun evil-collection-notmuch-search-toggle-delete ()
+  "Toggle deleted tag for message."
+  (interactive)
+  (if (member "deleted" (notmuch-search-get-tags))
+      (notmuch-search-tag (list "-deleted"))
+    (notmuch-search-tag (list "+deleted")))
+  (evil-next-line))
+
+(defun evil-collection-notmuch-tree-toggle-delete ()
+  "Toggle deleted tag for message."
+  (interactive)
+  (if (member "deleted" (notmuch-search-get-tags))
+      (notmuch-tree-tag (list "-deleted"))
+    (notmuch-tree-tag (list "+deleted")))
+  (evil-next-line))
+
+(defun evil-collection-notmuch-setup ()
+  "Set up `evil' bindings for `notmuch'."
+  (evil-set-initial-state 'notmuch-show-mode 'normal)
+  (evil-set-initial-state 'notmuch-search-mode 'normal)
+  (evil-set-initial-state 'notmuch-hello-mode 'normal)
+
+  (evil-collection-define-key 'normal 'notmuch-common-keymap
+    "g?" 'notmuch-help
+    "q" 'notmuch-bury-or-kill-this-buffer
+    "s" 'notmuch-search
+    "z" 'notmuch-tree
+    "c" 'notmuch-mua-new-mail
+    "gr" 'notmuch-refresh-this-buffer
+    "gR" 'notmuch-refresh-all-buffers
+    "Z" 'notmuch-poll-and-refresh-this-buffer
+    "J" 'notmuch-jump-search)
+
+  (evil-collection-define-key 'normal 'notmuch-hello-mode-map
+    "g?" 'notmuch-hello-versions
+    (kbd "TAB") 'widget-forward
+    (kbd "RET") 'widget-button-press
+    (kbd "S-TAB") 'widget-backward
+    (kbd "<C-tab>") 'widget-backward)
+
+  (evil-collection-define-key 'normal 'notmuch-show-mode-map
+    "gd" 'goto-address-at-point
+    "A" 'notmuch-show-archive-thread-then-next
+    "S" 'notmuch-show-filter-thread
+    "K" 'notmuch-tag-jump
+    "R" 'notmuch-show-reply
+    "X" 'notmuch-show-archive-thread-then-exit
+    "Z" 'notmuch-tree-from-show-current-query
+    "a" 'notmuch-show-archive-message-then-next-or-next-thread
+    "d" 'evil-collection-notmuch-show-toggle-delete
+    "H" 'notmuch-show-toggle-visibility-headers
+    "gj" 'notmuch-show-next-open-message
+    "gk" 'notmuch-show-previous-open-message
+    "]" 'notmuch-show-next-message
+    "[" 'notmuch-show-previous-message
+    (kbd "M-j") 'notmuch-show-next-thread-show
+    (kbd "M-k") 'notmuch-show-previous-thread-show
+    "r" 'notmuch-show-reply-sender
+    (kbd "x") 'notmuch-show-archive-message-then-next-or-exit
+    "|" 'notmuch-show-pipe-message
+    "*" 'notmuch-show-tag-all
+    "-" 'notmuch-show-remove-tag
+    "+" 'notmuch-show-add-tag
+    (kbd "TAB") 'notmuch-show-toggle-message
+    (kbd "RET") 'notmuch-show-toggle-message
+    "." 'notmuch-show-part-map)
+
+  (evil-collection-define-key 'normal 'notmuch-tree-mode-map
+    "g?" (notmuch-tree-close-message-pane-and 'notmuch-help)
+    "q" 'notmuch-tree-quit
+    "s" 'notmuch-tree-to-search
+    "c" (notmuch-tree-close-message-pane-and 'notmuch-mua-new-mail)
+    "J" (notmuch-tree-close-message-pane-and 'notmuch-jump-search)
+    "S" 'notmuch-search-from-tree-current-query
+    "r" (notmuch-tree-close-message-pane-and 'notmuch-show-reply-sender)
+    "R" (notmuch-tree-close-message-pane-and 'notmuch-show-reply)
+    "d" 'evil-collection-notmuch-tree-toggle-delete
+
+    "K" 'notmuch-tag-jump
+    (kbd "RET") 'notmuch-tree-show-message
+    [mouse-1] 'notmuch-tree-show-message
+    "A" 'notmuch-tree-archive-thread
+    "a" 'notmuch-tree-archive-message-then-next
+    "z" 'notmuch-tree-to-tree
+    "gj" 'notmuch-tree-next-matching-message
+    "gk" 'notmuch-tree-prev-matching-message
+    "]" 'notmuch-tree-next-message
+    "[" 'notmuch-tree-prev-message
+    (kbd "C-k") 'notmuch-tree-prev-thread
+    (kbd "C-j") 'notmuch-tree-next-thread
+    "-" 'notmuch-tree-remove-tag
+    "+" 'notmuch-tree-add-tag
+    "*" 'notmuch-tree-tag-thread
+    "e" 'notmuch-tree-resume-message)
+
+  (evil-collection-define-key 'normal 'notmuch-search-mode-map
+    "C" 'compose-mail-other-frame
+    "J" 'notmuch-jump-search
+    "S" 'notmuch-search-filter
+    "K" 'notmuch-tag-jump
+    "o" 'notmuch-search-toggle-order
+    "Z" 'notmuch-tree-from-search-current-query
+    "*" 'notmuch-search-tag-all
+    "a" 'notmuch-search-archive-thread
+    "c" 'compose-mail
+    "d" 'evil-collection-notmuch-search-toggle-delete
+    "q" 'notmuch-bury-or-kill-this-buffer
+    "r" 'notmuch-search-reply-to-thread-sender
+    "t" 'notmuch-search-filter-by-tag
+    "z" 'notmuch-search-stash-map
+    [mouse-1] 'notmuch-search-show-thread
+    "-" 'notmuch-search-remove-tag
+    "+" 'notmuch-search-add-tag
+    (kbd "RET") 'notmuch-search-show-thread)
+
+  (evil-collection-define-key 'normal 'notmuch-search-stash-map
+    "i" 'notmuch-search-stash-thread-id
+    "q" 'notmuch-stash-query
+    "g?" 'notmuch-subkeymap-help))
+
+(provide 'evil-collection-notmuch)
+;;; evil-collection-notmuch.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-notmuch.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-notmuch.elc
new file mode 100644
index 000000000000..32060974b46a
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-notmuch.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-nov.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-nov.el
new file mode 100644
index 000000000000..37dbf135a826
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-nov.el
@@ -0,0 +1,66 @@
+;;; evil-collection-nov.el --- Bindings for `nov'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools, epub
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for`nov'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'nov nil t)
+
+(defvar nov-mode-map)
+
+(defconst evil-collection-nov-maps '(nov-mode-map))
+
+(defun evil-collection-nov-setup ()
+  "Set up `evil' bindings for `nov'."
+  (evil-collection-define-key 'normal 'nov-mode-map
+    "gr" 'nov-render-document
+    "s" 'nov-view-source
+    "S" 'nov-view-content-source
+    "g?" 'nov-display-metadata
+    "gj" 'nov-next-document
+    (kbd "C-j") 'nov-next-document
+    (kbd "M-j") 'nov-next-document
+    "]" 'nov-next-document
+    "gk" 'nov-previous-document
+    (kbd "C-k") 'nov-previous-document
+    (kbd "M-k") 'nov-previous-document
+    "[" 'nov-previous-document
+
+    "t" 'nov-goto-toc
+    "i" 'nov-goto-toc
+    (kbd "RET") 'nov-browse-url
+    (kbd "<follow-link>") 'mouse-face
+    (kbd "<mouse-2>") 'nov-browse-url
+    (kbd "TAB") 'shr-next-link
+    (kbd "M-TAB") 'shr-previous-link
+    (kbd "<backtab>") 'shr-previous-link
+    (kbd "SPC") 'nov-scroll-up
+    (kbd "S-SPC") 'nov-scroll-down
+    (kbd "DEL") 'nov-scroll-down))
+
+(provide 'evil-collection-nov)
+;;; evil-collection-nov.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-nov.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-nov.elc
new file mode 100644
index 000000000000..fae6707b36a1
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-nov.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-occur.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-occur.el
new file mode 100644
index 000000000000..54b47e553992
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-occur.el
@@ -0,0 +1,73 @@
+;;; evil-collection-occur.el --- Evil bindings for occur -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, occur, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `occur'.
+
+;;; Code:
+(require 'evil-collection)
+
+(when (> emacs-major-version 25)
+  (require 'replace))
+
+(defconst evil-collection-occur-maps '(occur-mode-map
+                                       occur-edit-mode-map))
+
+(defun evil-collection-occur-setup ()
+  "Set up `evil' bindings for `occur'."
+  (evil-set-initial-state 'occur-mode 'normal)
+
+  (evil-collection-define-key 'normal 'occur-mode-map
+    ;; Like `wdired-mode'.
+    (kbd "C-x C-q") 'occur-edit-mode
+
+    [mouse-2] 'occur-mode-mouse-goto
+    (kbd "C-c C-c") 'occur-mode-goto-occurrence
+
+    ;; open
+    (kbd "<return>") 'occur-mode-goto-occurrence
+    (kbd "S-<return>") 'occur-mode-goto-occurrence-other-window
+    (kbd "M-<return>") 'occur-mode-display-occurrence
+    "go" 'occur-mode-goto-occurrence-other-window
+
+    "gj" 'occur-next
+    "gk" 'occur-prev
+    (kbd "C-j") 'occur-next
+    (kbd "C-k") 'occur-prev
+    "r" 'occur-rename-buffer
+    "c" 'clone-buffer
+    (kbd "C-c C-f") 'next-error-follow-minor-mode)
+
+  (evil-collection-define-key 'normal 'occur-edit-mode-map
+    ;; Like `wdired-mode'.
+    (kbd "C-x C-q") 'occur-cease-edit
+
+    [mouse-2] 'occur-mode-mouse-goto
+    (kbd "C-c C-c") 'occur-cease-edit
+    (kbd "C-o") 'occur-mode-display-occurrence
+    (kbd "C-c C-f") 'next-error-follow-minor-mode))
+
+(provide 'evil-collection-occur)
+;;; evil-collection-occur.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-occur.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-occur.elc
new file mode 100644
index 000000000000..b228fe4080c2
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-occur.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-outline.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-outline.el
new file mode 100644
index 000000000000..ce634161b5a8
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-outline.el
@@ -0,0 +1,97 @@
+;;; evil-collection-outline.el --- Evil bindings for outline-mode -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, outline, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for outline-mode.
+
+;;; Code:
+(require 'evil-collection)
+(require 'outline)
+
+(defcustom evil-collection-outline-bind-tab-p t
+  "Enable <tab>-based bindings in Outline mode.
+
+Unless you have Evil bindings set up for Org mode, Org will
+inherit the <tab>-based bindings from Outline.  Set this option
+to nil if you want to preserve the Emacs-state <tab> keys in Org
+mode."
+  :group 'evil-collection-outline
+  :type 'boolean)
+
+(defconst evil-collection-outline-maps '(outline-mode-map))
+
+(defun evil-collection-outline-setup ()
+  "Set up `evil' bindings for `outline'."
+  (evil-set-initial-state 'outline-mode 'normal)
+  (when evil-collection-outline-bind-tab-p
+    (evil-collection-define-key 'normal 'outline-mode-map
+      (kbd "<backtab>") 'outline-show-all ; Also "z r" by default
+      (kbd "<tab>") 'outline-toggle-children)) ; Also "z a" by default
+  (evil-collection-define-key 'normal 'outline-mode-map
+    ;; folding
+    ;; Evil default keys:
+    ;; zO: Show recursively for current branch only.
+    ;; za: Toggle first level like outline-toggle-children.
+    ;; zc: Hide complete subtree.
+    ;; zm: Show only root notes.
+    ;; zo: Show current node like "za".
+    ;; zr: Show everything.
+    ;; "ze" 'outline-hide-entry
+    ;; "zE" 'outline-show-entry
+    ;; "zl" 'outline-hide-leaves
+    ;; "zb" 'outline-show-branches
+    ;; "zo" 'outline-hide-other
+    "zB" 'outline-hide-body ; Hide all bodies, Emacs has "C-c C-t".
+    "zb" 'outline-hide-entry ; Hide current body, Emacs has "C-c C-c".
+    "ze" 'outline-show-entry ; Show current body only, not subtree, reverse of outline-hide-entry, Emacs has "C-c C-e".
+    "zl" 'outline-hide-leaves ; Like `outline-hide-body' but for current subtree only, Emacs has "C-c C-l".
+    "zK" 'outline-show-branches ; Show all children recursively but no body.  Emacs has "C-c C-k".
+    "zk" 'outline-show-children ; Direct children only unlike `outline-show-branches', and no content unlike `outline-show-entry' and `outline-toggle-children'.  Emacs has "C-c TAB".
+
+    "zp" 'outline-hide-other ; Hide all nodes and bodies except current body.  Emacs has "C-c C-o".
+    ;; outline-hide-sublevels ; q ; Is it any different from `outline-hide-body'?
+    ;; outline-hide-subtree ; Emacs has "C-c C-d", Evil has default "zc".
+    ;; outline-show-subtree ; Emacs has "C-c C-s", Evil has default "zO".
+
+    ;; TODO: To mark subtree ("C-c @"), we would need to define a tree object.
+
+    ;; motion
+    "[" 'outline-previous-visible-heading
+    "]" 'outline-next-visible-heading
+    (kbd "C-k") 'outline-backward-same-level
+    (kbd "C-j") 'outline-forward-same-level
+    "gk" 'outline-backward-same-level
+    "gj" 'outline-forward-same-level
+    "^" 'outline-up-heading
+
+    (kbd "M-h") 'outline-promote ; Org-mode has "M-<left>", Evil-org has "M-h"
+    (kbd "M-j") 'outline-move-subtree-down ; Org-mode has "M-<down>", Evil-org has "M-j"
+    (kbd "M-k") 'outline-move-subtree-up ; Org-mode has "M-<up>", Evil-org has "M-k"
+    (kbd "M-l") 'outline-demote ; Org-mode has "M-<right>", Evil-org has "M-l"
+
+    (kbd "M-<return>") 'outline-insert-heading)) ; Org-mode has "M-<return>"
+
+(provide 'evil-collection-outline)
+;;; evil-collection-outline.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-outline.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-outline.elc
new file mode 100644
index 000000000000..eea2711a1914
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-outline.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-p4.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-p4.el
new file mode 100644
index 000000000000..bca7428b7312
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-p4.el
@@ -0,0 +1,57 @@
+;;; evil-collection-p4.el --- Evil bindings for P4 -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, p4, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for P4.
+
+;;; Code:
+(require 'p4 nil t)
+(require 'evil-collection)
+
+(defvar p4-basic-mode-map)
+
+(defconst evil-collection-p4-maps '(p4-basic-mode-map))
+
+(defun evil-collection-p4-setup ()
+  "Set up `evil' bindings for `p4'."
+  (evil-set-initial-state 'p4-basic-mode 'normal)
+
+  (evil-collection-define-key 'normal 'p4-basic-mode-map
+    [mouse-1] 'p4-buffer-mouse-clicked
+    "k" 'p4-scroll-down-1-line
+    "j" 'p4-scroll-up-1-line
+    (kbd "C-j") 'p4-forward-active-link
+    (kbd "C-k") 'p4-backward-active-link
+    (kbd "<return>") 'p4-buffer-commands
+    "q" 'quit-window
+    "gr" 'revert-buffer
+    "]" 'p4-scroll-down-1-window
+    "[" 'p4-scroll-up-1-window
+    "gg" 'p4-top-of-buffer
+    "G" 'p4-bottom-of-buffer
+    "=" 'delete-other-windows))
+
+(provide 'evil-collection-p4)
+;;; evil-collection-p4.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-p4.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-p4.elc
new file mode 100644
index 000000000000..dc17038d1267
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-p4.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-package-menu.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-package-menu.el
new file mode 100644
index 000000000000..657dcadc3ba2
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-package-menu.el
@@ -0,0 +1,56 @@
+;;; evil-collection-package-menu.el --- Evil bindings for package-menu -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, package-menu, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil integration for `package-menu-mode'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'package)
+
+(defconst evil-collection-package-menu-maps '(package-menu-mode-map))
+
+(defun evil-collection-package-menu-setup ()
+  "Set up `evil' bindings for `package-menu'."
+  (evil-set-initial-state 'package-menu-mode 'normal)
+
+  (evil-collection-define-key 'normal 'package-menu-mode-map
+    "i" 'package-menu-mark-install
+    "U" 'package-menu-mark-upgrades
+    "d" 'package-menu-mark-delete
+    "gr" 'package-menu-refresh
+
+    ;; undo
+    "u" 'package-menu-mark-unmark
+
+    ;; execute
+    "x" 'package-menu-execute
+
+    "q" 'quit-window ;; FIXME: Can macros make sense here?
+    "ZQ" 'evil-quit
+    "ZZ" 'quit-window))
+
+(provide 'evil-collection-package-menu)
+;;; evil-collection-package-menu.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-package-menu.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-package-menu.elc
new file mode 100644
index 000000000000..cfe7399896cb
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-package-menu.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-paren.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-paren.el
new file mode 100644
index 000000000000..a42ec49589e7
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-paren.el
@@ -0,0 +1,76 @@
+;;; evil-collection-paren.el --- Bindings for `paren'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `paren'.
+
+;;; Code:
+(require 'paren)
+(require 'evil-collection)
+
+(defun evil-collection-paren-show-paren-function (f &rest args)
+  "Integrate `show-paren-function' with `evil'."
+  (if (not (bound-and-true-p evil-mode))
+      (apply f args)
+    (if (if (memq 'not evil-highlight-closing-paren-at-point-states)
+            (memq evil-state evil-highlight-closing-paren-at-point-states)
+          (not (memq evil-state evil-highlight-closing-paren-at-point-states)))
+        (apply f args)
+      (let ((pos (point)) syntax narrow)
+        (setq pos
+              (catch 'end
+                (dotimes (var (1+ (* 2 evil-show-paren-range)))
+                  (if (zerop (mod var 2))
+                      (setq pos (+ pos var))
+                    (setq pos (- pos var)))
+                  (setq syntax (syntax-class (syntax-after pos)))
+                  (cond
+                   ((eq syntax 4)
+                    (setq narrow pos)
+                    (throw 'end pos))
+                   ((eq syntax 5)
+                    (throw 'end (1+ pos)))))))
+        (if pos
+            (save-excursion
+              (goto-char pos)
+              (save-restriction
+                (when narrow
+                  (narrow-to-region narrow (point-max)))
+                (apply f args)))
+          ;; prevent the preceding pair from being highlighted
+          (dolist (ov '(show-paren--overlay
+                        show-paren--overlay-1
+                        show-paren-overlay
+                        show-paren-overlay-1))
+            (let ((ov (and (boundp ov) (symbol-value ov))))
+              (when (overlayp ov) (delete-overlay ov)))))))))
+
+(defun evil-collection-paren-setup ()
+  "Set up `evil' bindings for `paren'."
+  (advice-add 'show-paren-function
+              :around 'evil-collection-paren-show-paren-function))
+
+(provide 'evil-collection-paren)
+;;; evil-collection-paren.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-paren.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-paren.elc
new file mode 100644
index 000000000000..ac8924ef09f4
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-paren.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-pass.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-pass.el
new file mode 100644
index 000000000000..04baba3dd19b
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-pass.el
@@ -0,0 +1,59 @@
+;;; evil-collection-pass.el --- Evil bindings for pass-mode -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, pass, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `pass-mode'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'pass nil t)
+
+(defvar pass-mode-map)
+
+(defconst evil-collection-pass-maps '(pass-mode-map))
+
+(defun evil-collection-pass-setup ()
+  "Set up `evil' bindings for `pass-mode'."
+  (evil-collection-define-key 'normal 'pass-mode-map
+    "gj" 'pass-next-entry
+    "gk" 'pass-prev-entry
+    (kbd "C-j") 'pass-next-entry
+    (kbd "C-k") 'pass-prev-entry
+    (kbd "]") 'pass-next-directory
+    (kbd "[") 'pass-prev-directory
+    "x" 'pass-kill
+    "s" 'isearch-forward
+    "g?" 'describe-mode
+    "gr" 'pass-update-buffer
+    "i" 'pass-insert
+    "I" 'pass-insert-generated
+    "Y" 'pass-copy
+    "r" 'pass-rename
+    "o" 'pass-otp-options
+    (kbd "<return>") 'pass-view
+    "q" 'pass-quit))
+
+(provide 'evil-collection-pass)
+;;; evil-collection-pass.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-pass.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-pass.elc
new file mode 100644
index 000000000000..50ebecdde3a7
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-pass.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-pdf.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-pdf.el
new file mode 100644
index 000000000000..9616ee99c272
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-pdf.el
@@ -0,0 +1,282 @@
+;;; evil-collection-pdf.el --- Evil bindings for pdf-tools  -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, pdf, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for pdf-tools.
+
+;;; Code:
+(require 'evil-collection)
+(require 'pdf-tools nil t)
+(require 'pdf-view nil t)
+
+(defconst evil-collection-pdf-maps '(pdf-view-mode-map
+                                     pdf-outline-buffer-mode-map
+                                     pdf-occur-buffer-mode-map))
+
+(declare-function pdf-view-last-page "pdf-view")
+(declare-function pdf-view-first-page "pdf-view")
+(declare-function pdf-view-goto-page "pdf-view")
+(declare-function pdf-view-previous-line-or-previous-page "pdf-view")
+(declare-function pdf-view-next-line-or-next-page "pdf-view")
+
+(defvar pdf-view-mode-map)
+(defvar pdf-outline-buffer-mode-map)
+(defvar pdf-occur-buffer-mode-map)
+
+(defvar pdf-view-mode-map)
+(defvar pdf-outline-buffer-mode-map)
+(defvar pdf-occur-buffer-mode-map)
+
+;; TODO: The following 2 functions are workarounds for
+;; 'pdf-view-next-line-or-next-page' and
+;; 'pdf-view-previous-line-or-previous-page' not playing well with
+;; EVIL. The root cause should be found and fixed instead.
+;; See https://github.com/emacs-evil/evil-collection/pull/137 for
+;; details.
+(defun evil-collection-pdf-view-next-line-or-next-page (&optional count)
+  "'evil' wrapper include a count argument to `pdf-view-next-line-or-next-page'"
+  (interactive "P")
+  (if count
+      (dotimes (_ count nil)
+	(pdf-view-next-line-or-next-page 1))
+    (pdf-view-next-line-or-next-page 1)))
+
+(defun evil-collection-pdf-view-previous-line-or-previous-page (&optional count)
+  "'evil' wrapper include a count argument to `pdf-view-previous-line-or-previous-page'"
+  (interactive "P")
+  (if count
+      (dotimes (_ count nil)
+	(pdf-view-previous-line-or-previous-page 1))
+    (pdf-view-previous-line-or-previous-page 1)))
+
+(defun evil-collection-pdf-view-goto-page (&optional page)
+  "`evil' wrapper around `pdf-view-last-page'."
+  (interactive "P")
+  (if page
+      (pdf-view-goto-page page)
+    (pdf-view-last-page)
+    (image-eob)))
+
+(defun evil-collection-pdf-view-goto-first-page (&optional page)
+  "`evil' wrapper around `pdf-view-first-page'."
+  (interactive "P")
+  (if page
+      (pdf-view-goto-page page)
+    (pdf-view-first-page)
+    (image-bob)))
+
+(defun evil-collection-pdf-setup ()
+  "Set up `evil' bindings for `pdf-view'."
+  (evil-collection-inhibit-insert-state 'pdf-view-mode-map)
+  (evil-set-initial-state 'pdf-view-mode 'normal)
+  (evil-collection-define-key 'normal 'pdf-view-mode-map
+    ;; motion
+    (kbd "<return>") 'image-next-line
+    "j" 'evil-collection-pdf-view-next-line-or-next-page
+    "k" 'evil-collection-pdf-view-previous-line-or-previous-page
+    (kbd "SPC") 'pdf-view-scroll-up-or-next-page
+    (kbd "S-SPC") 'pdf-view-scroll-down-or-previous-page
+    (kbd "<delete>") 'pdf-view-scroll-down-or-previous-page
+    (kbd "C-f") 'pdf-view-scroll-up-or-next-page
+    (kbd "C-b") 'pdf-view-scroll-down-or-previous-page
+    "]" 'pdf-view-next-page-command
+    "[" 'pdf-view-previous-page-command
+    (kbd "C-j") 'pdf-view-next-page-command
+    (kbd "C-k") 'pdf-view-previous-page-command
+    "gj" 'pdf-view-next-page-command
+    "gk" 'pdf-view-previous-page-command
+    (kbd "<next>") 'forward-page
+    (kbd "<prior>") 'backward-page
+    (kbd "<down>") 'evil-collection-pdf-view-next-line-or-next-page
+    (kbd "<up>") 'evil-collection-pdf-view-previous-line-or-previous-page
+    "gg" 'evil-collection-pdf-view-goto-first-page
+    "G" 'evil-collection-pdf-view-goto-page
+
+    ;; mark
+    "'" 'pdf-view-jump-to-register
+    "m" 'pdf-view-position-to-register
+
+    ;; zoom
+    "+" 'pdf-view-enlarge
+    "zi" 'pdf-view-enlarge
+    "=" 'pdf-view-enlarge
+    "-" 'pdf-view-shrink
+    "zo" 'pdf-view-shrink		      
+    "0" 'pdf-view-scale-reset
+    "z0" 'pdf-view-scale-reset
+
+    ;; TODO: Why are those image-* bindings in pdf-tools?
+    "a+" 'image-increase-speed
+    "a-" 'image-decrease-speed
+    "a0" 'image-reset-speed
+    "ar" 'image-reverse-speed
+    "F" 'image-goto-frame
+    "b" 'image-previous-frame
+    "f" 'image-next-frame
+    "h" 'image-backward-hscroll
+    "^" 'image-bol
+    "$" 'image-eol
+    "l" 'image-forward-hscroll
+
+    "H" 'pdf-view-fit-height-to-window ; evil-image has "H"
+    "P" 'pdf-view-fit-page-to-window
+    "W" 'pdf-view-fit-width-to-window ; evil-image has "W"
+
+    ;; refresh
+    "gr" 'revert-buffer
+
+    (kbd "<C-down-mouse-1>") 'pdf-view-mouse-extend-region
+    (kbd "<M-down-mouse-1>") 'pdf-view-mouse-set-region-rectangle
+    (kbd "<down-mouse-1>")  'pdf-view-mouse-set-region
+
+    (kbd "C-c C-c") 'docview-mode
+    (kbd "C-c <tab>") 'pdf-view-extract-region-image
+
+    "sb" 'pdf-view-set-slice-from-bounding-box
+    "sm" 'pdf-view-set-slice-using-mouse
+    "sr" 'pdf-view-reset-slice
+
+    ;; goto
+    "gl" 'pdf-view-goto-label
+
+    ;; search
+    (kbd "M-s o") 'pdf-occur ; TODO: More Evil bindings?
+
+    "/" 'isearch-forward
+    "?" 'isearch-backward
+    "n" 'isearch-repeat-forward
+    "N" 'isearch-repeat-backward
+
+    "zd" 'pdf-view-dark-minor-mode
+    "zm" 'pdf-view-midnight-minor-mode
+    "zp" 'pdf-view-printer-minor-mode
+
+    "o" 'pdf-outline
+
+    ;; quit
+    "q" 'quit-window
+    "Q" 'kill-this-buffer
+    "ZQ" 'kill-this-buffer
+    "ZZ" 'quit-window)
+
+  (evil-collection-define-key 'visual 'pdf-view-mode-map
+    "y" 'pdf-view-kill-ring-save)
+
+  (evil-collection-inhibit-insert-state 'pdf-outline-buffer-mode-map)
+  (evil-set-initial-state 'pdf-outline-buffer-mode 'normal)
+  (evil-collection-define-key 'normal 'pdf-outline-buffer-mode-map
+    ;; open
+    (kbd "<return>") 'pdf-outline-follow-link-and-quit
+    (kbd "S-<return>") 'pdf-outline-follow-link
+    (kbd "M-<return>") 'pdf-outline-display-link
+    "go" 'pdf-outline-follow-link
+    "." 'pdf-outline-move-to-current-page
+    (kbd "SPC") 'pdf-outline-select-pdf-window
+
+    "G" 'pdf-outline-end-of-buffer
+    "^" 'pdf-outline-up-heading
+    "<" 'pdf-outline-up-heading ; TODO: Don't set this by default?
+
+    "zf" 'pdf-outline-follow-mode ; Helm has "C-c C-f" in Emacs state.
+
+    ;; quit
+    (kbd "C-w q") 'pdf-outline-quit-and-kill ; TODO: Do we need to set this? I think not.
+    "q" 'quit-window
+    "ZQ" 'quit-window
+    "ZZ" 'pdf-outline-quit-and-kill)
+
+  (evil-collection-inhibit-insert-state 'pdf-occur-buffer-mode-map)
+  (evil-set-initial-state 'pdf-occur-buffer-mode 'normal)
+  (evil-collection-define-key 'normal 'pdf-occur-buffer-mode-map
+    ;; open
+    (kbd "<return>") 'pdf-occur-goto-occurrence
+    (kbd "S-<return>") 'pdf-occur-view-occurrence
+    (kbd "SPC") 'pdf-occur-view-occurrence
+    "gd" 'pdf-occur-goto-occurrence
+    "gD" 'pdf-occur-view-occurrence
+
+    "A" 'pdf-occur-tablist-gather-documents
+    "D" 'pdf-occur-tablist-do-delete
+
+    ;; sort
+    "o" 'tabulated-list-sort
+    "O" 'tablist-sort ; TODO: Do we need this?
+
+    ;; refresh
+    "G" 'tablist-revert
+
+    "K" 'pdf-occur-abort-search
+
+    ;; mark
+    "*m" 'tablist-mark-forward
+    "m" 'tablist-mark-forward
+    "~" 'tablist-toggle-marks
+    "u" 'tablist-unmark-forward
+    "U" 'tablist-unmark-all-marks
+    "*!" 'tablist-unmark-all-marks
+    "*c" 'tablist-change-marks
+    "*n" 'tablist-mark-items-numeric
+    "*r" 'tablist-mark-items-regexp
+    "%"  'tablist-mark-items-regexp
+
+    "a" 'tablist-flag-forward
+
+    ;; "f" 'tablist-find-entry ; TODO: Equivalent to 'pdf-occur-goto-occurrence?
+    "r" 'pdf-occur-revert-buffer-with-args
+    "d" 'tablist-do-kill-lines
+    "x" 'pdf-occur-tablist-do-flagged-delete
+    (kbd "<delete>") 'tablist-unmark-backward
+    (kbd "S-SPC") 'scroll-down-command
+    (kbd "<backtab>") 'tablist-backward-column
+    (kbd "C-c C-e") 'tablist-export-csv
+
+    [remap evil-first-non-blank] 'tablist-move-to-major-columnj
+    [remap evil-next-line] 'tablist-next-line
+    [remap evil-previous-line] 'tablist-previous-line
+
+    ;; filter
+    ;; TODO: See if overriding "/" is a good idea.
+    "/!" 'tablist-negate-filter
+    "//" 'tablist-display-filter
+    "/=" 'tablist-push-equal-filter
+    "/C" 'tablist-clear-filter
+    "/D" 'tablist-delete-named-filter
+    "/a" 'tablist-push-named-filter
+    "/d" 'tablist-deconstruct-named-filter
+    "/e" 'tablist-edit-filter
+    "/n" 'tablist-push-numeric-filter
+    "/p" 'tablist-pop-filter
+    "/r" 'tablist-push-regexp-filter
+    "/s" 'tablist-name-current-filter
+    "/t" 'tablist-toggle-first-filter-logic
+    "/z" 'tablist-suspend-filter
+
+    ;; quit
+    "q" 'tablist-quit
+    "ZQ" 'tablist-quit
+    "ZZ" 'tablist-quit))
+
+(provide 'evil-collection-pdf)
+;;; evil-collection-pdf.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-pdf.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-pdf.elc
new file mode 100644
index 000000000000..24bc637f31d4
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-pdf.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-pkg.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-pkg.el
new file mode 100644
index 000000000000..2593f0c39d7c
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-pkg.el
@@ -0,0 +1,14 @@
+(define-package "evil-collection" "20180913.209" "A set of keybindings for Evil mode"
+  '((emacs "25.1")
+    (cl-lib "0.5")
+    (evil "1.2.13"))
+  :keywords
+  '("evil" "tools")
+  :authors
+  '(("James Nguyen" . "james@jojojames.com"))
+  :maintainer
+  '("James Nguyen" . "james@jojojames.com")
+  :url "https://github.com/emacs-evil/evil-collection")
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-popup.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-popup.el
new file mode 100644
index 000000000000..0063ba0a0795
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-popup.el
@@ -0,0 +1,43 @@
+;;; evil-collection-popup.el --- Bindings for `popup'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Bindings for `popup'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'popup nil t)
+
+(defconst evil-collection-popup-maps '(popup-menu-keymap))
+
+(defun evil-collection-popup-setup ()
+  "Set up `evil' bindings for `popup'."
+  (defvar popup-menu-keymap)
+  (evil-collection-define-key nil 'popup-menu-keymap
+    (kbd "C-j") 'popup-next
+    (kbd "C-k") 'popup-previous))
+
+(provide 'evil-collection-popup)
+;;; evil-collection-popup.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-popup.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-popup.elc
new file mode 100644
index 000000000000..efb4073312e1
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-popup.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-proced.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-proced.el
new file mode 100644
index 000000000000..14f13dd2d28a
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-proced.el
@@ -0,0 +1,92 @@
+;;; evil-collection-proced.el --- Evil bindings for proced -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, proced, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for proced.
+
+;;; Code:
+(require 'evil-collection)
+(require 'proced)
+
+(defconst evil-collection-proced-maps '(proced-mode-map))
+
+(defun evil-collection-proced-setup ()
+  "Set up `evil' bindings for `proced'."
+  (evil-collection-inhibit-insert-state 'proced-mode-map)
+  (evil-set-initial-state 'proced-mode 'normal)
+  (evil-collection-define-key 'normal 'proced-mode-map
+    (kbd "<return>") 'proced-refine
+
+    ;; mark
+    ;; TODO: Implement a proced-toggle-mark?
+    "m" 'proced-mark ; Mentioned in documentation, should be followed.
+    "*" 'proced-mark-all
+    "M" 'proced-mark-all
+    "U" 'proced-unmark-all
+    "~" 'proced-toggle-marks
+    "c" 'proced-mark-children
+    "C" 'proced-mark-children           ; Emacs has "C"
+    "p" 'proced-mark-parents
+    "P" 'proced-mark-parents            ; Emacs has "P"
+    (kbd "<delete>") 'proced-unmark-backward
+
+    ;; motion
+    ;; TODO: Implement beginning-of-buffer / end-of-buffer.
+    (kbd "SPC") 'evil-scroll-down
+    (kbd "S-SPC") 'evil-scroll-up
+
+    "zt" 'proced-toggle-tree
+
+    "u" 'proced-undo
+
+    "O" 'proced-omit-processes         ; TODO: Change default binding?
+
+    "x" 'proced-send-signal ; Emacs has "k" and "x", "k" is mentioned in documentation
+
+    ;; filter
+    "s" 'proced-filter-interactive ; Refers to "[s]elect", Emacs has "f" mentioned in documentation.
+    "S" 'proced-format-interactive
+
+    ;; sort
+    "oo" 'proced-sort-start ; Refers to "[o]rder", Emacs has "s" mentioned in documentation.
+    "oO" 'proced-sort-interactive
+    "oc" 'proced-sort-pcpu
+    "om" 'proced-sort-pmem
+    "op" 'proced-sort-pid
+    "ot" 'proced-sort-time
+    "ou" 'proced-sort-user
+
+    "r" 'proced-renice
+
+    ;; refresh
+    "gr" 'revert-buffer
+
+    ;; quit
+    "q" 'quit-window                    ; TODO: Macro support?
+    "ZQ" 'evil-quit
+    "ZZ" 'quit-window))
+
+(provide 'evil-collection-proced)
+;;; evil-collection-proced.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-proced.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-proced.elc
new file mode 100644
index 000000000000..eb33461130db
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-proced.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-prodigy.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-prodigy.el
new file mode 100644
index 000000000000..9353b2f674ae
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-prodigy.el
@@ -0,0 +1,79 @@
+;;; evil-collection-prodigy.el --- Evil bindings for prodigy -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, prodigy, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `prodigy'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'prodigy nil t)
+
+(defconst evil-collection-prodigy-maps '(prodigy-mode-map
+                                         prodigy-view-mode-map))
+
+(defun evil-collection-prodigy-setup ()
+  "Set up `evil' bindings for `prodigy'."
+  (evil-collection-define-key 'normal 'prodigy-mode-map
+    ;; quit
+    "q" 'quit-window
+
+    "j" 'prodigy-next
+    "k" 'prodigy-prev
+    "gg" 'prodigy-first
+    "G" 'prodigy-last
+
+    ;; mark
+    "m" 'prodigy-mark
+    "*t" 'prodigy-mark-tag
+    "M" 'prodigy-mark-all
+    "u" 'prodigy-unmark
+    "*T" 'prodigy-unmark-tag
+    "U" 'prodigy-unmark-all
+
+    "s" 'prodigy-start
+    "S" 'prodigy-stop
+
+    ;; refresh
+    "gr" 'prodigy-restart
+
+    "`" 'prodigy-display-process
+    (kbd "<return>") 'prodigy-browse
+    "it" 'prodigy-add-tag-filter
+    "in" 'prodigy-add-name-filter
+    "I" 'prodigy-clear-filters
+    "Jm" 'prodigy-jump-magit
+    "Jd" 'prodigy-jump-dired
+
+    "gj" 'prodigy-next-with-status
+    "gk" 'prodigy-prev-with-status
+    (kbd "C-j") 'prodigy-next-with-status
+    (kbd "C-k") 'prodigy-prev-with-status
+    (kbd "Y") 'prodigy-copy-cmd)
+
+  (evil-collection-define-key 'normal 'prodigy-view-mode-map
+    "x" 'prodigy-view-clear-buffer))
+
+(provide 'evil-collection-prodigy)
+;;; evil-collection-prodigy.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-prodigy.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-prodigy.elc
new file mode 100644
index 000000000000..c101b4edbf0d
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-prodigy.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-profiler.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-profiler.el
new file mode 100644
index 000000000000..5e3e3231ca86
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-profiler.el
@@ -0,0 +1,70 @@
+;;; evil-collection-profiler.el --- Evil bindings for profiler -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, profiler, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `profiler'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'profiler)
+
+(defconst evil-collection-profiler-maps '(profiler-report-mode-map))
+
+(defun evil-collection-profiler-setup ()
+  "Set up `evil' bindings for `profiler'."
+  (evil-set-initial-state 'profiler-report-mode 'normal)
+
+  (evil-collection-define-key 'normal 'profiler-report-mode-map
+    ;; motion
+    (kbd "SPC") 'scroll-up-command
+    (kbd "S-SPC") 'scroll-down-command
+    (kbd "<delete>") 'scroll-down-command
+    "j" 'profiler-report-next-entry
+    "k" 'profiler-report-previous-entry
+
+    (kbd "<tab>") 'profiler-report-toggle-entry
+
+    ;; sort
+    "o" 'profiler-report-ascending-sort
+    "O" 'profiler-report-descending-sort
+
+    "c" 'profiler-report-render-calltree
+    "C" 'profiler-report-render-reversed-calltree
+    "i" 'profiler-report-describe-entry
+    "=" 'profiler-report-compare-profile
+
+    ;; open
+    (kbd "<return>") 'profiler-report-find-entry
+
+    ;; refresh
+    "gr" 'revert-buffer
+
+    ;; quit
+    "q" 'quit-window
+    "ZQ" 'evil-quit
+    "ZZ" 'quit-windw))
+
+(provide 'evil-collection-profiler)
+;;; evil-collection-profiler.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-profiler.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-profiler.elc
new file mode 100644
index 000000000000..d1143234071b
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-profiler.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-python.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-python.el
new file mode 100644
index 000000000000..0b69390cec41
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-python.el
@@ -0,0 +1,47 @@
+;;; evil-collection-python.el --- Bindings for `python'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `python'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'python)
+
+(defconst evil-collection-python-maps '(python-mode-map))
+
+(defun evil-collection-python-set-evil-shift-width ()
+  "Set `evil-shift-width' according to `python-indent-offset'."
+  (setq evil-shift-width python-indent-offset))
+
+(defun evil-collection-python-setup ()
+  "Set up `evil' bindings for `python'."
+  (add-hook 'python-mode-hook #'evil-collection-python-set-evil-shift-width)
+
+  (evil-collection-define-key 'normal 'python-mode-map
+    "gz" 'python-shell-switch-to-shell))
+
+(provide 'evil-collection-python)
+;;; evil-collection-python.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-python.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-python.elc
new file mode 100644
index 000000000000..19db4c759ce8
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-python.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-quickrun.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-quickrun.el
new file mode 100644
index 000000000000..cbf7c96be263
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-quickrun.el
@@ -0,0 +1,41 @@
+;;; evil-collection-quickrun.el --- Bindings for `quickrun'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools, quickrun
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Bindings for `quickrun'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'quickrun nil t)
+
+(defconst evil-collection-quickrun-maps '(quickrun--mode-map))
+
+(defun evil-collection-quickrun-setup ()
+  "Set up `evil' bindings for `quickrun'.."
+  (evil-collection-define-key 'normal 'quickrun--mode-map
+    "q" 'quit-window))
+
+(provide 'evil-collection-quickrun)
+;;; evil-collection-quickrun.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-quickrun.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-quickrun.elc
new file mode 100644
index 000000000000..96eb491b8537
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-quickrun.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-racer.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-racer.el
new file mode 100644
index 000000000000..68b261c0bcf9
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-racer.el
@@ -0,0 +1,47 @@
+;;; evil-collection-racer.el --- Bindings for `racer'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: emacs, rust, tools, evil
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Bindings for `racer'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'racer nil t)
+
+(defconst evil-collection-racer-maps '(racer-mode-map
+                                       racer-help-mode-map))
+
+(defun evil-collection-racer-setup ()
+  "Set up `evil' bindings for `racer'."
+  (evil-collection-define-key 'normal 'racer-mode-map
+    "gd" 'racer-find-definition
+    (kbd "C-t") 'pop-tag-mark
+    "K" 'racer-describe)
+
+  (evil-collection-define-key 'normal 'racer-help-mode-map
+    "q" 'quit-window))
+
+(provide 'evil-collection-racer)
+;;; evil-collection-racer.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-racer.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-racer.elc
new file mode 100644
index 000000000000..f93bcbff5a5b
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-racer.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-realgud.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-realgud.el
new file mode 100644
index 000000000000..c0cf2934c7c4
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-realgud.el
@@ -0,0 +1,102 @@
+;;; evil-collection-realgud.el --- Bindings for `realgud'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools, realgud
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Bindings for `realgud'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'realgud nil t)
+
+(defconst evil-collection-realgud-maps '(realgud:shortkey-mode-map))
+
+(defun evil-collection-realgud-setup ()
+  "Set up `evil' bindings for `realgud'."
+  ;; This one is to represent `realgud-populate-src-buffer-map-plain'.
+  (evil-collection-define-key 'normal 'realgud:shortkey-mode-map
+    "b" 'realgud:cmd-break
+    "D" 'realgud:cmd-delete
+    "X" 'realgud:cmd-clear
+    "-" 'realgud:cmd-disable
+    "+" 'realgud:cmd-enable
+    "T" 'realgud:cmd-backtrace
+    "f" 'realgud:cmd-finish
+    "n" 'realgud:cmd-next
+    "q" 'realgud:cmd-quit
+    "Q" 'realgud:cmd-kill
+    "r" 'realgud:cmd-restart
+    "R" 'realgud:cmd-restart
+    "s" 'realgud:cmd-step
+    "i" 'realgud:cmd-step
+    "!" 'realgud:cmd-shell
+
+    ;; (evil-collection-define-key nil map [M-down]    'realgud-track-hist-newer)
+    ;; (evil-collection-define-key nil map [M-kp-2]    'realgud-track-hist-newer)
+    ;; (evil-collection-define-key nil map [M-up]      'realgud-track-hist-older)
+    ;; (evil-collection-define-key nil map [M-kp-8]    'realgud-track-hist-older)
+    ;; (evil-collection-define-key nil map [M-kp-up]   'realgud-track-hist-older)
+    ;; (evil-collection-define-key nil map [M-kp-down] 'realgud-track-hist-newer)
+    ;; (evil-collection-define-key nil map [M-print]   'realgud-track-hist-older)
+    ;; (evil-collection-define-key nil map [M-S-down]  'realgud-track-hist-newest)
+    ;; (evil-collection-define-key nil map [M-S-up]    'realgud-track-hist-oldest)
+    )
+
+  (evil-collection-define-key 'normal 'realgud:shortkey-mode-map
+    (kbd "C-x C-q") 'realgud-short-key-mode
+    "1" 'realgud-goto-arrow1
+    "2" 'realgud-goto-arrow2
+    "3" 'realgud-goto-arrow3
+    "4" 'realgud:goto-loc-hist-4
+    "5" 'realgud:goto-loc-hist-5
+    "6" 'realgud:goto-loc-hist-6
+    "7" 'realgud:goto-loc-hist-7
+    "8" 'realgud:goto-loc-hist-8
+    "9" 'realgud:goto-loc-hist-9
+    "b" 'realgud:cmd-break
+    "J" 'realgud:cmd-jump
+    "c" 'realgud:cmd-continue
+    "e" 'realgud:cmd-eval-dwim
+    "E" 'realgud:cmd-eval-at-point
+    "U" 'realgud:cmd-until
+    "H" 'realgud:cmd-until
+    [mouse-2] 'realgud:tooltip-eval
+    [left-fringe mouse-1] 'realgud-cmds--mouse-add-remove-bp
+    [left-margin mouse-1] 'realgud-cmds--mouse-add-remove-bp
+    ">" 'realgud:cmd-newer-frame
+    "<" 'realgud:cmd-older-frame
+    "d" 'realgud:cmd-newer-frame
+    "u" 'realgud:cmd-older-frame
+    "gR" 'realgud-recenter-arrow ;; FIXME: Hmnn!
+    "C" 'realgud-window-cmd-undisturb-src
+    "g?" 'realgud:cmdbuf-info-describe
+    "S" 'realgud-window-src-undisturb-cmd
+    "R" 'realgud:cmd-restart
+    "gr" 'realgud:cmd-restart
+    "!" 'realgud:cmd-shell)
+
+  (add-hook 'realgud-short-key-mode-hook #'evil-normalize-keymaps))
+
+(provide 'evil-collection-realgud)
+;;; evil-collection-realgud.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-realgud.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-realgud.elc
new file mode 100644
index 000000000000..95d3e889e890
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-realgud.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-reftex.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-reftex.el
new file mode 100644
index 000000000000..31f4650bbb95
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-reftex.el
@@ -0,0 +1,141 @@
+;;; evil-collection-reftex.el --- Bindings for `reftex'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Maximiliano Sandoval <msandova@protonmail.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, reftex, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `reftex-mode'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'reftex-ref nil t)
+(require 'reftex-ref nil t)
+(require 'reftex-cite nil t)
+
+(defconst evil-collection-reftex-maps '(reftex-select-shared-map
+                                        reftex-toc-mode-map))
+
+;; original code can be found in reftex-ref.el
+(setq reftex-select-label-prompt
+  "Select: [RET]select [j]next [k]previous [gr]escan [go]context [q]uit [g?]help")
+
+;; original code can be found in reftex-cite.el
+(setq reftex-citation-prompt
+  "Select: [RET]select [j]next [k]previous [q]uit [g?]help")
+
+;; original at reftex-ref.el
+(setq reftex-select-label-help
+  " j / k      Go to next/previous label (Cursor motion works as well)
+ [ / ]      Go to previous/next section heading.
+ c          Reuse last referenced label.
+ J          Jump to a specific section, e.g. '3 J' jumps to section 3.
+ s          Switch label type.
+ gr         Reparse document.
+ go / gO     Show context / Show insertion point.
+ S          Switch to label menu of external document (with LaTeX package `xr').
+ r / R      Toggle \\ref <-> \\vref / Rotate \\ref <=> \\fref <=> \\Fref.
+ TAB        Enter a label with completion.
+ m / M      Mark/unmark entry.
+ x / X      Put all marked entries into one/many \\ref commands.
+ q / RET    Quit without referencing / Accept current label.")
+
+;; code can be found in reftex-cite.el
+(setq reftex-citation-help
+  " j / k      Go to next/previous entry (Cursor motion works as well).
+ go / gO     Show citation / Show insertion point.
+ q          Quit without inserting \\cite macro into buffer.
+ TAB        Enter citation key with completion.
+ RET        Accept current entry and create \\cite macro.
+ m / M      Mark/Unmark the entry.
+ o / O      Create BibTeX file with all marked / unmarked entries.
+ X / X      Put all (marked) entries into one/many \\cite commands.")
+
+(defun evil-collection-reftex-setup ()
+  "Set up `evil' bindings for `reftex'."
+
+  (evil-set-initial-state 'reftex-select-label-mode 'normal)
+  (evil-set-initial-state 'reftex-select-bib-mode 'normal)
+
+  (evil-collection-define-key 'normal 'reftex-select-shared-map
+    "j" 'reftex-select-next
+    "k" 'reftex-select-previous
+    (kbd "]") 'reftex-select-next-heading
+    (kbd "[") 'reftex-select-previous-heading
+    (kbd "gj") 'reftex-select-next-heading
+    (kbd "gk") 'reftex-select-previous-heading
+    (kbd "C-j") 'reftex-select-next-heading
+    (kbd "C-k") 'reftex-select-previous-heading
+    "go" 'reftex-select-callback        ;shows the point where the label is
+    "gr" (lambda nil "Press `?' during selection to find out
+    about this key" (interactive) (throw (quote myexit) 114)) ;reftex binds keys in a very arcane way using the number asigned by describe-char, in this case the value of "g" is 114
+    "q" 'reftex-select-quit
+    "ZZ" 'reftex-select-quit
+    "ZQ" 'evil-quit
+    "g?" 'reftex-select-help
+    "c" (lambda nil "Press `?' during selection to find out
+    about this key." (interactive) (throw (quote myexit) 108))
+    "J" 'reftex-select-jump ;; weird binding, using default
+    (kbd "<tab>") 'reftex-select-read-label
+    "s" (lambda nil "Press `?' during selection to find out
+    about this key." (interactive) (throw (quote myexit) 115))
+    "x" (lambda nil "Press `?' during selection to find out
+    about this key." (interactive) (throw (quote myexit) 97))
+    "X" (lambda nil "Press `?' during selection to find out
+    about this key." (interactive) (throw (quote myexit) 65))
+    "S" (lambda nil "Press `?' during selection to find out
+    about this key." (interactive) (throw (quote myexit) 120))
+    "r" 'reftex-select-cycle-ref-style-forward
+    "R" 'reftex-select-cycle-ref-style-backward
+    "gO" 'reftex-select-show-insertion-point
+    "o" (lambda nil "Press `?' during selection to find out
+    about this key." (interactive) (throw (quote myexit) 101))
+    "O" (lambda nil "Press `?' during selection to find out
+    about this key." (interactive) (throw (quote myexit) 69))
+
+    ;; mark
+    "m" 'reftex-select-mark             ; TODO: Need a mark toggle function.
+    "u" 'reftex-select-unmark)
+
+  (evil-set-initial-state 'reftex-toc-mode 'normal)
+
+  ;; This one is more involved, in reftex-toc.el, line 282 it shows the prompt
+  ;; string with the keybinds and I don't see any way of changing it to show evil-like binds.
+  (evil-collection-define-key 'normal 'reftex-toc-mode-map
+    "j" 'reftex-toc-next
+    "k" 'reftex-toc-previous
+    (kbd "RET") 'reftex-toc-goto-line-and-hide
+    (kbd "<tab>") 'reftex-toc-goto-line
+    "g?" 'reftex-toc-show-help
+    "q" 'reftex-toc-quit
+    "ZZ" 'reftex-toc-quit
+    "ZQ" 'evil-quit
+    "gr" 'reftex-toc-rescan
+    "r" 'reftex-toc-rescan
+    "l" 'reftex-toc-toggle-labels
+    "?" 'reftex-toc-show-help
+    "x" 'reftex-toc-external
+    ;; (kbd "SPC") 'reftex-toc-view-line
+    "f" 'reftex-toc-toggle-follow))
+
+(provide 'evil-collection-reftex)
+;;; evil-collection-reftex.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-reftex.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-reftex.elc
new file mode 100644
index 000000000000..b52edc246b8f
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-reftex.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-rjsx-mode.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-rjsx-mode.el
new file mode 100644
index 000000000000..a70862b84353
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-rjsx-mode.el
@@ -0,0 +1,46 @@
+;;; evil-collection-rjsx-mode.el --- Bindings for `rjsx-mode'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, rjsx, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `rjsx-mode'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'rjsx-mode nil t)
+
+(defvar rjsx-mode-map)
+
+(defconst evil-collection-rjsx-maps '(rjsx-mode-map))
+
+(defun evil-collection-rjsx-mode-setup ()
+  "Set up `evil' bindings for `rjsx-mode'."
+  (when evil-want-C-d-scroll
+    (evil-collection-define-key 'insert 'rjsx-mode-map
+      (kbd "C-d") 'rjsx-delete-creates-full-tag)
+    (evil-collection-define-key 'normal 'rjsx-mode-map
+      (kbd "C-d") 'evil-scroll-down)))
+
+(provide 'evil-collection-rjsx-mode)
+;;; evil-collection-rjsx-mode.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-rjsx-mode.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-rjsx-mode.elc
new file mode 100644
index 000000000000..360c65772be4
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-rjsx-mode.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-robe.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-robe.el
new file mode 100644
index 000000000000..9dd0fa14db0e
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-robe.el
@@ -0,0 +1,44 @@
+;;; evil-collection-robe.el --- Bindings for `robe'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: emacs, evil, tools, robe
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `robe'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'robe nil t)
+
+(defconst evil-collection-robe-maps '(robe-mode-map))
+
+(defun evil-collection-robe-setup ()
+  "Set up `evil' bindings for `robe'."
+  (evil-collection-define-key 'normal 'robe-mode-map
+    "gd" 'robe-jump
+    (kbd "C-t") 'pop-tag-mark
+    "K" 'robe-doc
+    "gr" 'robe-rails-refresh))
+
+(provide 'evil-collection-robe)
+;;; evil-collection-robe.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-robe.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-robe.elc
new file mode 100644
index 000000000000..c69a3a800c95
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-robe.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-rtags.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-rtags.el
new file mode 100644
index 000000000000..f04950faa81c
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-rtags.el
@@ -0,0 +1,140 @@
+;;; evil-collection-rtags.el --- Evil bindings for `rtags'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, rtags, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Evil bindings for `rtags'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'rtags nil t)
+
+(defvar rtags-mode-map)
+(defvar rtags-dependency-tree-mode-map)
+(defvar rtags-references-tree-mode-map)
+(defvar rtags-location-stack-visualize-mode-map)
+
+(defconst evil-collection-rtags-maps '(rtags-mode-map
+                                       rtags-dependency-tree-mode-map
+                                       rtags-references-tree-mode-map
+                                       rtags-location-stack-visualize-mode-map))
+
+(defun evil-collection-rtags-setup ()
+  "Set up `evil' bindings for `rtags'."
+  (evil-set-initial-state 'rtags-mode 'normal)
+  (evil-set-initial-state 'rtags-dependency-tree-mode 'normal)
+  (evil-set-initial-state 'rtags-references-tree-mode 'normal)
+  (evil-set-initial-state 'rtags-location-stack-visualize-mode 'normal)
+
+  (evil-collection-define-key 'normal 'rtags-mode-map
+    ;; open
+    (kbd "<return>") 'rtags-select
+    (kbd "S-<return>") 'rtags-select-other-window
+    (kbd "M-<return>") 'rtags-show-in-other-window
+    (kbd "go") 'rtags-select-other-window
+    (kbd "gO") 'rtags-show-in-other-window
+    [mouse-1] 'rtags-select-other-window
+    [mouse-2] 'rtags-select-other-window
+
+    "c" 'rtags-select-caller
+    "C" 'rtags-select-caller-other-window
+    "x" 'rtags-select-and-remove-rtags-buffer
+    "q" 'rtags-call-bury-or-delete)
+
+  (evil-collection-define-key 'normal 'rtags-dependency-tree-mode-map
+    (kbd "<tab>") 'rtags-dependency-tree-toggle-current-expanded
+    "E" 'rtags-dependency-tree-expand-all
+    "c" 'rtags-dependency-tree-collapse-all
+    "-" 'rtags-dependency-tree-collapse-current
+    "+" 'rtags-dependency-tree-expand-current
+    "P" 'rtags-dependency-tree-find-path
+    "gf" 'rtags-dependency-tree-find-path
+
+    "gj" 'rtags-dependency-tree-next-level
+    "gk" 'rtags-dependency-tree-previous-level
+
+    (kbd "C-j") 'rtags-dependency-tree-next-level
+    (kbd "C-k") 'rtags-dependency-tree-previous-level
+    "]" 'rtags-dependency-tree-next-level
+    "[" 'rtags-dependency-tree-previous-level
+
+    ;; open
+    (kbd "<return>") 'rtags-select
+    (kbd "S-<return>") 'rtags-select-other-window
+    (kbd "M-<return>") 'rtags-show-in-other-window
+    "go" 'rtags-select-other-window
+    "gO" 'rtags-show-in-other-window
+    [mouse-1] 'rtags-select-other-window
+    [mouse-2] 'rtags-select-other-window
+    "s" 'rtags-show-in-other-window
+
+    "x" 'rtags-select-and-remove-rtags-buffer
+    "q" 'rtags-call-bury-or-delete)
+
+  (evil-collection-define-key 'normal 'rtags-references-tree-mode-map
+    (kbd "<tab>") 'rtags-references-tree-toggle-current-expanded
+
+    "E" 'rtags-references-tree-expand-all
+    "c" 'rtags-references-tree-collapse-all
+    "-" 'rtags-references-tree-collapse-current
+    "+" 'rtags-references-tree-expand-current
+
+    "gj" 'rtags-references-tree-next-level
+    "gk" 'rtags-references-tree-previous-level
+
+    (kbd "C-j") 'rtags-references-tree-next-level
+    (kbd "C-k") 'rtags-references-tree-previous-level
+
+    "]" 'rtags-references-tree-next-level
+    "[" 'rtags-references-tree-previous-level
+
+    ;; open
+    (kbd "<return>") 'rtags-select
+    (kbd "S-<return>") 'rtags-select-other-window
+    (kbd "M-<return>") 'rtags-show-in-other-window
+    "go" 'rtags-select-other-window
+    "gO" 'rtags-show-in-other-window
+    [mouse-1] 'rtags-select-other-window
+    [mouse-2] 'rtags-select-other-window
+    "s" 'rtags-show-in-other-window
+
+    "x" 'rtags-select-and-remove-rtags-buffer
+    "q" 'rtags-call-bury-or-delete)
+
+  (evil-collection-define-key 'normal 'rtags-location-stack-visualize-mode-map
+    ;; open
+    (kbd "<return>") 'rtags-select
+    (kbd "S-<return>") 'rtags-select-other-window
+    (kbd "M-<return>") 'rtags-show-in-other-window
+    (kbd "go") 'rtags-select-other-window
+    (kbd "gO") 'rtags-show-in-other-window
+    [mouse-1] 'rtags-select-other-window
+    [mouse-2] 'rtags-select-other-window
+    "s" 'rtags-show-in-other-window
+
+    "x" 'rtags-select-and-remove-rtags-buffer
+    "q" 'rtags-call-bury-or-delete))
+
+(provide 'evil-collection-rtags)
+;;; evil-collection-rtags.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-rtags.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-rtags.elc
new file mode 100644
index 000000000000..760f779e337b
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-rtags.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ruby-mode.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ruby-mode.el
new file mode 100644
index 000000000000..fbd14daefb21
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ruby-mode.el
@@ -0,0 +1,44 @@
+;;; evil-collection-ruby-mode.el --- Bindings for `ruby-mode'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: emacs, tools, ruby
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `ruby-mode'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'ruby-mode)
+
+(defconst evil-collection-ruby-mode-maps nil)
+
+(defun evil-collection-ruby-mode-set-evil-shift-width ()
+  "Set `evil-shift-width' according to `ruby-indent-level'."
+  (setq evil-shift-width ruby-indent-level))
+
+(defun evil-collection-ruby-mode-setup ()
+  "Set up `evil' bindings for `ruby'."
+  (add-hook 'ruby-mode-hook #'evil-collection-ruby-mode-set-evil-shift-width))
+
+(provide 'evil-collection-ruby-mode)
+;;; evil-collection-ruby-mode.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ruby-mode.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ruby-mode.elc
new file mode 100644
index 000000000000..64b27fa944ec
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ruby-mode.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-settings.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-settings.el
new file mode 100644
index 000000000000..7df541e44456
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-settings.el
@@ -0,0 +1,45 @@
+;;; evil-collection-settings.el --- Settings for `evil-collection'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Settings for `evil-collection'.
+(require 'evil-collection)
+
+;;; Code:
+(defcustom evil-collection-settings-setup-debugger-keys t
+  "Whether to bind debugger keys when debugger is active.
+
+Debugger in this case is dependent on mode.
+
+This is only relevant for debug modes that are part of another mode,
+
+e.g. `indium'. Modes like `edebug' or `realgud' needs to be explicitly disabled
+
+through removing their entry from `evil-collection-mode-list'."
+  :type 'boolean
+  :group 'evil-collection)
+
+(provide 'evil-collection-settings)
+;;; evil-collection-settings.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-settings.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-settings.elc
new file mode 100644
index 000000000000..bd7c2e63bae4
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-settings.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-simple.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-simple.el
new file mode 100644
index 000000000000..ae5f375db715
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-simple.el
@@ -0,0 +1,47 @@
+;;; evil-collection-simple.el --- Bindings for `simple' -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Bindings for `simple'
+
+;;; Code:
+(require 'evil-collection)
+(require 'simple)
+
+(defvar special-mode-map)
+
+(defconst evil-collection-simple-maps '(special-mode-map))
+
+(defun evil-collection-simple-setup ()
+  "Set up `evil' bindings for `simple'."
+  (evil-collection-define-key '(normal visual) 'special-mode-map
+    "q" 'quit-window
+    " " 'scroll-up-command
+    "g?" 'describe-mode
+    "h" 'evil-backward-char
+    "gr" 'revert-buffer))
+
+(provide 'evil-collection-simple)
+;;; evil-collection-simple.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-simple.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-simple.elc
new file mode 100644
index 000000000000..f446bcc854e2
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-simple.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-slime.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-slime.el
new file mode 100644
index 000000000000..c5ddf5f3103f
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-slime.el
@@ -0,0 +1,182 @@
+;;; evil-collection-slime.el --- Evil bindings for `slime' -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, slime, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `slime-mode'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'slime nil t)
+
+(defvar slime-parent-map)
+(defvar sldb-mode-map)
+(defvar slime-inspector-mode-map)
+(defvar slime-mode-map)
+(defvar slime-popup-buffer-mode-map)
+(defvar slime-xref-mode-map)
+
+(defconst evil-collection-slime-maps '(slime-parent-map
+                                       sldb-mode-map
+                                       slime-inspector-mode-map
+                                       slime-mode-map
+                                       slime-popup-buffer-mode-map
+                                       slime-xref-mode-map ))
+
+(defun evil-collection-slime-last-sexp (command &rest args)
+  "In normal-state or motion-state, last sexp ends at point."
+  (if (and (not evil-move-beyond-eol)
+           (or (evil-normal-state-p) (evil-motion-state-p)))
+      (save-excursion
+        (unless (or (eobp) (eolp)) (forward-char))
+        (apply command args))
+    (apply command args)))
+
+(defun evil-collection-slime-setup ()
+  "Set up `evil' bindings for `slime'."
+  (unless evil-move-beyond-eol
+    (advice-add 'slime-eval-last-expression :around 'evil-collection-slime-last-sexp)
+    (advice-add 'slime-pprint-eval-last-expression :around 'evil-collection-slime-last-sexp)
+    (advice-add 'slime-eval-print-last-expression :around 'evil-collection-slime-last-sexp)
+    (advice-add 'slime-eval-last-expression-in-repl
+                :around 'evil-collection-slime-last-sexp))
+
+  (evil-set-initial-state 'sldb-mode 'normal)
+  (evil-set-initial-state 'slime-inspector-mode 'normal)
+  (evil-set-initial-state 'slime-popup-buffer-mode 'normal)
+  (evil-set-initial-state 'slime-xref-mode 'normal)
+
+  (evil-collection-define-key 'normal 'slime-parent-map
+    "gd" 'slime-edit-definition
+    (kbd "C-t") 'slime-pop-find-definition-stack)
+
+  (evil-collection-define-key 'normal 'sldb-mode-map
+    (kbd "RET") 'sldb-default-action
+    (kbd "C-m") 'sldb-default-action
+    [return] 'sldb-default-action
+    [mouse-2]  'sldb-default-action/mouse
+    [follow-link] 'mouse-face
+    "\C-i" 'sldb-cycle
+    "g?" 'describe-mode
+    "S" 'sldb-show-source
+    "e" 'sldb-eval-in-frame
+    "d" 'sldb-pprint-eval-in-frame
+    "D" 'sldb-disassemble
+    "i" 'sldb-inspect-in-frame
+    "gj" 'sldb-down
+    "gk" 'sldb-up
+    (kbd "C-j") 'sldb-down
+    (kbd "C-k") 'sldb-up
+    "]" 'sldb-details-down
+    "[" 'sldb-details-up
+    (kbd "M-j") 'sldb-details-down
+    (kbd "M-k") 'sldb-details-up
+    "gg" 'sldb-beginning-of-backtrace
+    "G" 'sldb-end-of-backtrace
+    "t" 'sldb-toggle-details
+    "gr" 'sldb-restart-frame
+    "I" 'sldb-invoke-restart-by-name
+    "R" 'sldb-return-from-frame
+    "c" 'sldb-continue
+    "s" 'sldb-step
+    "n" 'sldb-next
+    "o" 'sldb-out
+    "b" 'sldb-break-on-return
+    "a" 'sldb-abort
+    "q" 'sldb-quit
+    "A" 'sldb-break-with-system-debugger
+    "B" 'sldb-break-with-default-debugger
+    "P" 'sldb-print-condition
+    "C" 'sldb-inspect-condition
+    "g:" 'slime-interactive-eval
+    "0" 'sldb-invoke-restart-0
+    "1" 'sldb-invoke-restart-1
+    "2" 'sldb-invoke-restart-2
+    "3" 'sldb-invoke-restart-3
+    "4" 'sldb-invoke-restart-4
+    "5" 'sldb-invoke-restart-5
+    "6" 'sldb-invoke-restart-6
+    "7" 'sldb-invoke-restart-7
+    "8" 'sldb-invoke-restart-8
+    "9" 'sldb-invoke-restart-9)
+
+  (evil-collection-define-key 'normal 'slime-inspector-mode-map
+    [return] 'slime-inspector-operate-on-point
+    (kbd "C-m") 'slime-inspector-operate-on-point
+    [mouse-1] 'slime-inspector-operate-on-click
+    [mouse-2] 'slime-inspector-operate-on-click
+    [mouse-6] 'slime-inspector-pop
+    [mouse-7] 'slime-inspector-next
+    "gk" 'slime-inspector-pop
+    (kbd "C-k") 'slime-inspector-pop
+    "gj" 'slime-inspector-next
+    "j" 'slime-inspector-next
+    "k" 'slime-inspector-previous-inspectable-object
+    "K" 'slime-inspector-describe
+    "p" 'slime-inspector-pprint
+    "e" 'slime-inspector-eval
+    "h" 'slime-inspector-history
+    "gr" 'slime-inspector-reinspect
+    "gv" 'slime-inspector-toggle-verbose
+    "\C-i" 'slime-inspector-next-inspectable-object
+    [(shift tab)]
+    'slime-inspector-previous-inspectable-object ; Emacs translates S-TAB
+    [backtab] 'slime-inspector-previous-inspectable-object ; to BACKTAB on X.
+    "." 'slime-inspector-show-source
+    "gR" 'slime-inspector-fetch-all
+    "q" 'slime-inspector-quit)
+
+  (evil-collection-define-key 'normal 'slime-mode-map
+    (kbd "K") 'slime-describe-symbol
+    (kbd "C-t") 'slime-pop-find-definition-stack
+    ;; goto
+    "gd" 'slime-edit-definition)
+
+  (evil-collection-define-key 'normal 'slime-popup-buffer-mode-map
+    ;; quit
+    "q" 'quit-window
+
+    (kbd "C-t") 'slime-pop-find-definition-stack
+
+    ;; goto
+    "gd" 'slime-edit-definition)
+
+  (evil-collection-define-key 'normal 'slime-xref-mode-map
+    (kbd "RET") 'slime-goto-xref
+    (kbd "S-<return>") 'slime-goto-xref
+    "go" 'slime-show-xref
+    "gj" 'slime-xref-next-line
+    "gk" 'slime-xref-prev-line
+    (kbd "C-j") 'slime-xref-next-line
+    (kbd "C-k") 'slime-xref-prev-line
+    "]" 'slime-xref-next-line
+    "[" 'slime-xref-prev-line
+    "gr" 'slime-recompile-xref
+    "gR" 'slime-recompile-all-xrefs
+    "r" 'slime-xref-retract)
+
+  (add-hook 'slime-popup-buffer-mode-hook #'evil-normalize-keymaps))
+
+(provide 'evil-collection-slime)
+;;; evil-collection-slime.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-slime.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-slime.elc
new file mode 100644
index 000000000000..ce310e3652b9
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-slime.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-term.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-term.el
new file mode 100644
index 000000000000..fb275e8bba0e
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-term.el
@@ -0,0 +1,159 @@
+;;; evil-collection-term.el --- Evil bindings for term and ansi-term  -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, term, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil integration for `term' and `ansi-term'.
+;; This should also work for other terminal emulators such as `multi-term'.
+;;
+;; Switching to normal state will automatically switch to line mode.
+;; Conversely, switching to insert state will automatically switch to char mode.
+
+;;; Code:
+(require 'evil-collection)
+(require 'term)
+
+(defcustom evil-collection-term-sync-state-and-mode-p t
+  "Synchronize insert/normal state with char/line-mode respectively.
+
+When non-nil, going to normal state will automatically switch to
+line-mode.  Conversely, going to insert state on the last
+commandline will automatically switch to char-mode.
+
+Warning: This feature is experimental."
+  :group 'evil-collection-term
+  :type 'boolean)
+
+(defcustom evil-collection-term-sync-state-function
+  'evil-collection-term-switch-to-char-mode-on-insert
+  "Function used when synchronizing insert/normal state with char/line-mode.
+
+This is only used if `evil-collection-term-sync-state-and-mode-p' is true."
+  :group 'evil-collection-term
+  :type 'function)
+
+;; TODO: Rebinding ESC has the drawback that programs like vi cannot use it anymore.
+;; Workaround: switch to Emacs state and double-press ESC.
+;; Otherwise leave ESC to "C-c C-j".
+;; Or bind char-mode ESC to "C-c C-x"?
+
+;; TODO: Add support for normal-state editing.
+
+(defconst evil-collection-term-maps '(term-raw-map
+                                      term-mode-map))
+
+(defun evil-collection-term-escape-stay ()
+  "Go back to normal state but don't move cursor backwards.
+Moving cursor backwards is the default Vim behavior but
+it is not appropriate in some cases like terminals."
+  (setq-local evil-move-cursor-back nil))
+
+(defun evil-collection-term-char-mode-insert ()
+  "Switch to `term-char-mode' and enter insert state."
+  (interactive)
+  (term-char-mode)
+  (evil-insert-state))
+
+(defun evil-collection-term-char-mode-entry-function ()
+  "Maybe switch to `term-char-mode' on insert state."
+  (when (get-buffer-process (current-buffer))
+    (let (last-prompt)
+      (save-excursion
+        (goto-char (point-max))
+        (when (= (line-beginning-position) (line-end-position))
+          (ignore-errors (backward-char)))
+        (setq last-prompt (max (term-bol nil) (line-beginning-position))))
+      (when (>= (point) last-prompt)
+        (term-char-mode)))))
+
+(defun evil-collection-term-switch-to-char-mode-on-insert ()
+  "Switch to `term-char-mode' on insert state."
+  (when (get-buffer-process (current-buffer))
+    (term-char-mode)))
+
+(defun evil-collection-term-sync-state-and-mode ()
+  "Sync `term-char-mode' and `term-line-mode' with insert and normal state."
+  (add-hook 'evil-insert-state-entry-hook
+            evil-collection-term-sync-state-function nil t)
+  (add-hook 'evil-insert-state-exit-hook 'term-line-mode nil t))
+
+(defun evil-collection-term-send-tab ()
+  "Send tab in term mode."
+  (interactive)
+  (term-send-raw-string "\t"))
+
+(defun evil-collection-term-setup ()
+  "Set up `evil' bindings for `term'."
+  (evil-set-initial-state 'term-mode 'insert)
+  (if evil-collection-term-sync-state-and-mode-p
+      (add-hook 'term-mode-hook 'evil-collection-term-sync-state-and-mode)
+    (remove-hook 'term-mode-hook 'evil-collection-term-sync-state-and-mode))
+
+  (add-hook 'term-mode-hook 'evil-collection-term-escape-stay)
+
+  ;; Evil has some "C-" bindings in insert state that shadow regular terminal bindings.
+  ;; Don't raw-send "C-c" (prefix key) nor "C-h" (help prefix).
+  (evil-collection-define-key 'insert 'term-raw-map
+    (kbd "C-a") 'term-send-raw
+    (kbd "C-b") 'term-send-raw ; Should not be necessary.
+    (kbd "C-d") 'term-send-raw
+    (kbd "C-e") 'term-send-raw
+    (kbd "C-f") 'term-send-raw ; Should not be necessary.
+    (kbd "C-k") 'term-send-raw
+    (kbd "C-l") 'term-send-raw ; Should not be necessary.
+    (kbd "C-n") 'term-send-raw
+    (kbd "C-o") 'term-send-raw
+    (kbd "C-p") 'term-send-raw
+    (kbd "C-q") 'term-send-raw ; Should not be necessary.
+    (kbd "C-r") 'term-send-raw
+    (kbd "C-s") 'term-send-raw ; Should not be necessary.
+    (kbd "C-t") 'term-send-raw
+    (kbd "C-u") 'term-send-raw ; Should not be necessary.
+    (kbd "C-v") 'term-send-raw ; Should not be necessary.
+    (kbd "C-w") 'term-send-raw
+    (kbd "C-y") 'term-send-raw
+    (kbd "C-z") 'term-send-raw
+    (kbd "<tab>") 'evil-collection-term-send-tab ; Should not be necessary.
+    (kbd "C-c C-d") 'term-send-eof
+    (kbd "C-c C-z") 'term-stop-subjob)
+
+  (evil-collection-define-key 'normal 'term-mode-map
+    (kbd "C-c C-k") 'evil-collection-term-char-mode-insert
+    (kbd "<return>") 'term-send-input
+
+    (kbd "p") 'term-paste
+
+    ;; motion
+    "[" 'term-previous-prompt
+    "]" 'term-next-prompt
+    (kbd "C-k") 'term-previous-prompt
+    (kbd "C-j") 'term-next-prompt
+    "gk" 'term-previous-prompt
+    "gj" 'term-next-prompt
+    ;; "0" 'term-bol ; "0" is meant to really go at the beginning of line.
+    "^" 'term-bol
+    "$" 'term-show-maximum-output))
+
+(provide 'evil-collection-term)
+;;; evil-collection-term.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-term.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-term.elc
new file mode 100644
index 000000000000..1ec20ed6c109
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-term.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-tide.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-tide.el
new file mode 100644
index 000000000000..d18d14a90385
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-tide.el
@@ -0,0 +1,65 @@
+;;; evil-collection-tide.el --- Bindings for `tide-mode'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, tide, typescript, languages
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `tide-mode'.
+
+;;; Code:
+(require 'tide nil t)
+(require 'evil-collection)
+
+(defconst evil-collection-tide-maps '(tide-mode-map
+                                      tide-references-mode-map
+                                      tide-project-errors-mode-map))
+
+(defun evil-collection-tide-setup ()
+  "Set up `evil' bindings for `tide'."
+  (evil-collection-define-key 'normal 'tide-mode-map
+    "gd" 'tide-jump-to-definition
+    (kbd "C-t") 'tide-jump-back
+    "K" 'tide-documentation-at-point)
+
+  (evil-collection-define-key 'normal 'tide-references-mode-map
+    "gj" 'tide-find-next-reference
+    "gk" 'tide-find-previous-reference
+    (kbd "C-j") 'tide-find-next-reference
+    (kbd "C-k") 'tide-find-previous-reference
+    (kbd "C-m") 'tide-goto-reference
+    (kbd "<return>") 'tide-goto-reference
+    ;; quit
+    "q" 'quit-window)
+
+  (evil-collection-define-key 'normal 'tide-project-errors-mode-map
+    "gj" 'tide-find-next-error
+    "gk" 'tide-find-previous-error
+    (kbd "C-j") 'tide-find-next-error
+    (kbd "C-k") 'tide-find-previous-error
+    (kbd "C-m") 'tide-goto-error
+    (kbd "<return>") 'tide-goto-error
+    ;; quit
+    (kbd "q") 'quit-window))
+
+(provide 'evil-collection-tide)
+;;; evil-collection-tide.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-tide.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-tide.elc
new file mode 100644
index 000000000000..c937391aaa57
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-tide.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-transmission.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-transmission.el
new file mode 100644
index 000000000000..9b3d0a5591b1
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-transmission.el
@@ -0,0 +1,172 @@
+;;; evil-collection-transmission.el --- Evil bindings for transmission.el -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, transmission, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+
+;;; Commentary:
+;; Evil bindings for `transmission'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'transmission nil t)
+
+(defvar transmission-mode-map)
+(defvar transmission-files-mode-map)
+(defvar transmission-info-mode-map)
+(defvar transmission-peers-mode-map)
+
+(defconst evil-collection-transmission-maps '(transmission-mode-map
+                                              transmission-files-mode-map
+                                              transmission-info-mode-map
+                                              transmission-peers-mode-map))
+
+(defun evil-collection-transmission-setup ()
+  "Set up `evil' bindings for `transmission'."
+
+  (evil-collection-inhibit-insert-state 'transmission-mode-map)
+  (evil-set-initial-state 'transmission-mode 'normal)
+  (evil-collection-define-key 'normal 'transmission-mode-map
+    ;; motion
+    (kbd "SPC") 'scroll-up-command
+    (kbd "S-SPC") 'scroll-down-command
+    (kbd "<delete>") 'scroll-down-command
+
+    ;; sort
+    "o" 'tabulated-list-sort
+
+    (kbd "<return>") 'transmission-files
+    "p" 'transmission-peers
+    "i" 'transmission-info
+
+    "a" 'transmission-add
+    ;; "D" 'transmission-delete ; Useless with `transmission-remove'?
+    "r" 'transmission-move
+    "D" 'transmission-remove
+    "x" 'transmission-toggle ; EMMS has "x" for pause.
+    "t" 'transmission-trackers-add
+    "c" 'transmission-verify ; "c" for "[c]heck".
+    "d" 'transmission-set-download
+    "u" 'transmission-set-upload
+    "S" 'transmission-set-ratio ; "S" for "[S]eed"
+    "P" 'transmission-set-bandwidth-priority
+
+    ;; mark
+    "m" 'transmission-toggle-mark
+    "U" 'transmission-unmark-all
+    "~" 'transmission-invert-marks
+
+    ;; refresh
+    "gr" 'revert-buffer
+
+    ;; quit
+    "q" 'transmission-quit
+    "ZQ" 'evil-quit
+    "ZZ" 'transmission-quit)
+
+  (evil-collection-inhibit-insert-state 'transmission-files-mode-map)
+  (evil-set-initial-state 'transmission-files-mode 'normal)
+  (evil-collection-define-key 'normal 'transmission-files-mode-map
+    (kbd "SPC") 'scroll-up-command
+    (kbd "S-SPC") 'scroll-down-command
+    (kbd "<delete>") 'scroll-down-command
+
+    ;; sort
+    "o" 'tabulated-list-sort
+
+    "p" 'transmission-peers
+    "i" 'transmission-info
+
+    "r" 'transmission-move
+    "P" 'transmission-files-priority
+
+    ;; mark
+    "u" 'transmission-files-unwant
+    "m" 'transmission-files-want
+
+    ;; open
+    (kbd "<return>") 'transmission-find-file
+    (kbd "S-<return>") 'transmission-find-file-other-window
+    (kbd "M-<return>") 'transmission-display-file
+    "go" 'transmission-find-file-other-window
+
+    "v" 'transmission-view-file
+
+    "!" 'transmission-files-command
+    ;; "X" 'transmission-files-command
+    "t" 'transmission-trackers-add
+    "T" 'transmission-trackers-remove
+
+    ;; goto URL
+    "gx" 'transmission-browse-url-of-file ; See mu4e.
+
+    ;; quit
+    "q" 'transmission-quit
+    "ZQ" 'evil-quit
+    "ZZ" 'transmission-quit)
+
+  (evil-collection-inhibit-insert-state 'transmission-info-mode-map)
+  (evil-set-initial-state 'transmission-info-mode 'normal)
+  (evil-collection-define-key 'normal 'transmission-info-mode-map
+    "p" 'transmission-peers
+
+    "t" 'transmission-trackers-add
+    "T" 'transmission-trackers-remove
+    "D" 'transmission-set-torrent-download
+    "U" 'transmission-set-torrent-upload
+    "S" 'transmission-set-torrent-ratio ; "S" for "[S]eed"
+    "P" 'transmission-set-bandwidth-priority
+    "r" 'transmission-move
+
+    ;; quit
+    "q" 'quit-window
+    "ZQ" 'evil-quit
+    "ZZ" 'quit-window)
+
+  (evil-collection-define-key 'operator 'transmission-info-mode-map
+    ;; Like `eww'.
+    "u" '(menu-item
+          ""
+          nil
+          :filter (lambda (&optional _)
+                    (when (memq evil-this-operator
+                                evil-collection-yank-operators)
+                      (setq evil-inhibit-operator t)
+                      #'transmission-copy-magnet))))
+
+
+  (evil-collection-inhibit-insert-state 'transmission-peers-mode-map)
+  (evil-set-initial-state 'transmission-peers-mode 'normal)
+  (evil-collection-define-key 'normal 'transmission-peers-mode-map
+    ;; sort
+    "o" 'tabulated-list-sort
+
+    "i" 'transmission-info
+
+    ;; quit
+    "q" 'quit-window
+    "ZQ" 'evil-quit
+    "ZZ" 'quit-window))
+
+(provide 'evil-collection-transmission)
+;;; evil-collection-transmission.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-transmission.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-transmission.elc
new file mode 100644
index 000000000000..0e662ff25e9f
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-transmission.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-typescript-mode.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-typescript-mode.el
new file mode 100644
index 000000000000..87ed9c5dbd9e
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-typescript-mode.el
@@ -0,0 +1,45 @@
+;;; evil-collection-typescript-mode.el --- Bindings for `typescript-mode'. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: emacs, evil, tools, typescript
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Bindings for `typescript-mode'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'typescript-mode nil t)
+
+(defvar typescript-indent-level)
+
+(defun evil-collection-typescript-mode-set-evil-shift-width ()
+  "Set `evil-shift-width' according to `typescript-indent-level'."
+  (setq evil-shift-width typescript-indent-level))
+
+(defun evil-collection-typescript-mode-setup ()
+  "Set up `evil' bindings for `typescript-mode'."
+  (add-hook 'typescript-mode-hook
+            #'evil-collection-typescript-mode-set-evil-shift-width))
+
+(provide 'evil-collection-typescript-mode)
+;;; evil-collection-typescript-mode.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-typescript-mode.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-typescript-mode.elc
new file mode 100644
index 000000000000..765675c6862b
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-typescript-mode.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-annotate.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-annotate.el
new file mode 100644
index 000000000000..27dc72681633
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-annotate.el
@@ -0,0 +1,58 @@
+;;; evil-collection-vc-annotate.el --- Bindings for `vc-annotate' -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Bindings for `vc-annotate'
+
+;;; Code:
+(require 'evil-collection)
+(require 'vc-annotate)
+
+(defconst evil-collection-vc-annotate-maps '(vc-annotate-mode-map))
+
+(defun evil-collection-vc-annotate-setup ()
+  "Set up `evil' bindings for `vc-annotate'."
+  (evil-set-initial-state 'vc-annotate-mode 'normal)
+  (evil-collection-define-key 'normal 'vc-annotate-mode-map
+    "q" 'quit-window
+    "a" 'vc-annotate-revision-previous-to-line
+    "d" 'vc-annotate-show-diff-revision-at-line
+    "=" 'vc-annotate-show-diff-revision-at-line
+    "D" 'vc-annotate-show-changeset-diff-revision-at-line
+    "F" 'vc-annotate-find-revision-at-line
+    "J" 'vc-annotate-revision-at-line
+    "L" 'vc-annotate-show-log-revision-at-line
+    "gj" 'vc-annotate-next-revision
+    "gk" 'vc-annotate-prev-revision
+    "]" 'vc-annotate-next-revision
+    "[" 'vc-annotate-prev-revision
+    (kbd "C-j") 'vc-annotate-next-revision
+    (kbd "C-k") 'vc-annotate-prev-revision
+    "W" 'vc-annotate-working-revision
+    "A" 'vc-annotate-toggle-annotation-visibility
+    (kbd "RET") 'vc-annotate-goto-line))
+
+(provide 'evil-collection-vc-annotate)
+;;; evil-collection-vc-annotate.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-annotate.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-annotate.elc
new file mode 100644
index 000000000000..61b95dfc1bbe
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-annotate.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-dir.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-dir.el
new file mode 100644
index 000000000000..11562e0bc9ae
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-dir.el
@@ -0,0 +1,112 @@
+;;; evil-collection-vc-dir.el --- Evil bindings for Vc-Dir -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <ambrevar@gmail.com>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, vc-dir, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for Vc-Dir.
+
+;;; Code:
+(require 'vc-dir)
+(require 'evil-collection)
+
+(defconst evil-collection-vc-dir-maps '(vc-dir-mode-map))
+
+(defun evil-collection-vc-dir-setup ()
+  "Set up `evil' bindings for `vc-dir'."
+  (evil-set-initial-state 'vc-dir-mode 'normal)
+  (evil-collection-define-key 'normal 'vc-dir-mode-map
+    ;; VC commands
+    "n" 'vc-next-action
+
+    "d" 'vc-diff
+    "D" 'vc-root-diff
+
+    "R" 'vc-register
+    "s" 'vc-register ;; Like `magit-stage'?
+    "gu" 'vc-update
+    "gr" 'revert-buffer
+
+    "p" 'vc-push
+    "P" 'vc-push
+
+    "Ll" 'vc-print-log
+    "Lr" 'vc-print-root-log
+    "LL" 'vc-print-root-log
+    "Li" 'vc-log-incoming
+    "Lo" 'vc-log-outgoing
+
+    "x" 'vc-revert
+    "b" 'vc-annotate ;; Like `magit-blame'
+
+    ;; Marking.
+    "m" 'vc-dir-mark
+    "M" 'vc-dir-mark-all-files
+    "u" 'vc-dir-unmark
+    "U" 'vc-dir-unmark-all-files
+
+    ;; Movement.
+    "j" 'vc-dir-next-line
+    "\t" 'vc-dir-next-directory
+    "k" 'vc-dir-previous-line
+    [backtab] 'vc-dir-previous-directory
+
+    ;; Rebind paragraph-movement commands.
+    "]" 'vc-dir-next-directory
+    "[" 'vc-dir-previous-directory
+    "gj" 'vc-dir-next-directory
+    "gk" 'vc-dir-previous-directory
+    (kbd "C-j") 'vc-dir-next-directory
+    (kbd "C-k") 'vc-dir-previous-directory
+
+    ;; The remainder.
+    "gf" 'vc-dir-find-file
+    "\C-m" 'vc-dir-find-file
+
+    (kbd "S-<return>") 'vc-dir-find-file-other-window
+    "gO" 'vc-dir-find-file-other-window
+    (kbd "M-<return>") 'vc-dir-display-file
+
+    "\C-c\C-c" 'vc-dir-kill-dir-status-process
+    [down-mouse-3] 'vc-dir-menu
+    [mouse-2] 'vc-dir-find-file-other-window
+    "t" 'vc-dir-toggle-mark
+    [follow-link] 'mouse-face
+
+    "(" 'vc-dir-hide-up-to-date
+    "o" 'vc-dir-hide-up-to-date
+
+    "X" 'vc-dir-kill-line
+    "S" 'vc-dir-search
+    "Q" 'vc-dir-query-replace-regexp
+    (kbd "M-s a C-s")   'vc-dir-isearch
+    (kbd "M-s a M-C-s") 'vc-dir-isearch-regexp
+    "i" 'vc-dir-ignore
+
+    ;; Branching
+    "Bc" 'vc-create-tag
+    "Bl" 'vc-print-branch-log
+    "Bs" 'vc-retrieve-tag))
+
+(provide 'evil-collection-vc-dir)
+;;; evil-collection-vc-dir.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-dir.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-dir.elc
new file mode 100644
index 000000000000..e835b5bb4bec
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-dir.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-git.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-git.el
new file mode 100644
index 000000000000..b556561059cb
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-git.el
@@ -0,0 +1,40 @@
+;;; evil-collection-vc-git.el --- Evil bindings for Vc-Git -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <ambrevar@gmail.com>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, vc-git, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for Vc-Git.
+
+;;; Code:
+(require 'vc-git)
+(require 'evil-collection)
+
+(defconst evil-collection-vc-git-maps '(vc-git-mode-map))
+
+(defun evil-collection-vc-git-setup ()
+  "Set up `evil' bindings for `vc-git'."
+  (evil-set-initial-state 'vc-git-log-view-mode 'normal))
+
+(provide 'evil-collection-vc-git)
+;;; evil-collection-vc-git.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-git.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-git.elc
new file mode 100644
index 000000000000..eb59390bacaa
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vc-git.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vdiff.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vdiff.el
new file mode 100644
index 000000000000..fa528db96852
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vdiff.el
@@ -0,0 +1,59 @@
+;;; evil-collection-vdiff.el --- Evil bindings for vdiff -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Evgeni Kolev <evgenysw@gmail.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, vdiff, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for vdiff.el https://github.com/justbur/emacs-vdiff
+
+;;; Code:
+(require 'vdiff nil t)
+(require 'evil-collection)
+
+(defun evil-collection-vdiff-setup ()
+  "Set up `evil' bindings for `vdiff-mode'."
+  (dolist (mode '(vdiff-mode vdiff-3way-mode))
+    (evil-define-minor-mode-key 'normal mode
+      "]c" 'vdiff-next-hunk
+      "[c" 'vdiff-previous-hunk)
+
+    ;; define `do' (diff obtain) and `dp' (diff put) bindings
+    (evil-define-minor-mode-key 'operator mode
+      "o" '(menu-item
+            ""
+            nil
+            :filter (lambda (&optional _)
+                      (when (memq evil-this-operator
+                                  evil-collection-delete-operators)
+                        #'vdiff-receive-changes)))
+      "p" '(menu-item
+            ""
+            nil
+            :filter (lambda (&optional _)
+                      (when (memq evil-this-operator
+                                  evil-collection-delete-operators)
+                        #'vdiff-send-changes))))))
+
+(provide 'evil-collection-vdiff)
+
+;;; evil-collection-vdiff.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vdiff.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vdiff.elc
new file mode 100644
index 000000000000..34d0323e5e27
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vdiff.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-view.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-view.el
new file mode 100644
index 000000000000..bddfdb0fdc06
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-view.el
@@ -0,0 +1,53 @@
+;;; evil-collection-view.el --- Evil bindings for view. -*- lexical-binding: t -*-
+
+;; Copyright (C) 2018 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, bindings, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for View.
+
+;;; Code:
+(require 'evil-collection)
+(require 'view)
+
+(defconst evil-collection-view-maps '(view-mode-map))
+
+(defun evil-collection-view-setup ()
+  "Set up `evil' bindings for `view'."
+  (evil-set-initial-state 'view-mode 'normal)
+  (evil-collection-define-key 'normal 'view-mode-map
+    "q" 'quit-window
+    (kbd "SPC") 'View-scroll-page-forward
+    (kbd "S-SPC") 'View-scroll-page-backward
+
+    ;; zoom
+    "+" 'text-scale-increase
+    "=" 'text-scale-increase
+    "0" 'text-scale-adjust              ; TODO: Conflicts with `evil-beginning-of-line'.
+    "-" 'text-scale-decrease
+
+    ;; refresh
+    (kbd "gr") 'revert-buffer))
+
+(provide 'evil-collection-view)
+;;; evil-collection-view.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-view.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-view.elc
new file mode 100644
index 000000000000..c1f93aeffded
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-view.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vlf.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vlf.el
new file mode 100644
index 000000000000..4b588a2c6a18
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vlf.el
@@ -0,0 +1,77 @@
+;;; evil-collection-vlf.el --- Evil bindings for vlf -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, vlf, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `vlf'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'vlf nil t)
+
+(defvar vlf-mode-map)
+(declare-function vlf-change-batch-size "vlf")
+
+(defconst evil-collection-vlf-maps '(vlf-mode-map))
+
+(defun evil-collection-vlf-decrease-batch-size ()
+  "Decrease vlf batch size by factor of 2."
+  (interactive)
+  (vlf-change-batch-size t))
+
+;;; Code:
+(defun evil-collection-vlf-setup ()
+  "Set up `evil' bindings for `vlf'."
+  (evil-set-initial-state 'vlf-mode 'normal)
+
+  (evil-collection-define-key 'normal 'vlf-mode-map
+    "gj" 'vlf-next-batch
+    "gk" 'vlf-prev-batch
+    (kbd "C-j") 'vlf-next-batch
+    (kbd "C-k") 'vlf-prev-batch
+    "]" 'vlf-next-batch
+    "[" 'vlf-prev-batch
+
+    "+" 'vlf-change-batch-size
+    "-" 'evil-collection-vlf-decrease-batch-size
+    "=" 'vlf-next-batch-from-point
+
+    ;; refresh
+    "gr" 'vlf-revert
+
+    "s" 'vlf-re-search-forward
+    "S" 'vlf-re-search-backward
+
+    "gg" 'vlf-beginning-of-file
+    "G" 'vlf-end-of-file
+    "J" 'vlf-jump-to-chunk
+    "E" 'vlf-ediff-buffers
+
+    "g%" 'vlf-query-replace
+    "go" 'vlf-occur
+    "L" 'vlf-goto-line
+    "F" 'vlf-toggle-follow))
+
+(provide 'evil-collection-vlf)
+;;; evil-collection-vlf.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vlf.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vlf.elc
new file mode 100644
index 000000000000..ede785e06166
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-vlf.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-wdired.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-wdired.el
new file mode 100644
index 000000000000..3d1b49930618
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-wdired.el
@@ -0,0 +1,46 @@
+;;; evil-collection-wdired.el --- Bindings for `wdired' -*- lexical-binding: t -*-
+
+;; Copyright (C) 2018 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Bindings for `wdired'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'wdired)
+
+(defconst evil-collection-wdired-maps '(wdired-mode-map))
+
+(defun evil-collection-wdired-setup ()
+  "Set up `evil' bindings for `wdired'."
+  (evil-collection-define-key nil 'wdired-mode-map
+    [remap evil-write] 'wdired-finish-edit)
+
+  (evil-collection-define-key 'normal 'wdired-mode-map
+    "ZQ" 'wdired-abort-changes
+    "ZZ" 'wdired-finish-edit
+    (kbd "<escape>") 'wdired-exit))
+
+(provide 'evil-collection-wdired)
+;;; evil-collection-wdired.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-wdired.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-wdired.elc
new file mode 100644
index 000000000000..680c2c24a91a
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-wdired.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-wgrep.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-wgrep.el
new file mode 100644
index 000000000000..302320e49938
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-wgrep.el
@@ -0,0 +1,48 @@
+;;; evil-collection-wgrep.el --- Bindings for `wgrep' -*- lexical-binding: t -*-
+
+;; Copyright (C) 2018 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, emacs, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Bindings for `wgrep'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'wgrep nil t)
+
+(defvar wgrep-mode-map)
+
+(defconst evil-collection-wgrep-maps '(wgrep-mode-map))
+
+(defun evil-collection-wgrep-setup ()
+  "Set up `evil' bindings for `wgrep'."
+  (evil-collection-define-key nil 'wgrep-mode-map
+    [remap evil-write] 'wgrep-finish-edit)
+
+  (evil-collection-define-key 'normal 'wgrep-mode-map
+    "ZQ" 'wgrep-abort-changes
+    "ZZ" 'wgrep-finish-edit
+    (kbd "<escape>") 'wgrep-exit))
+
+(provide 'evil-collection-wgrep)
+;;; evil-collection-wgrep.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-wgrep.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-wgrep.elc
new file mode 100644
index 000000000000..df92d68e0e3e
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-wgrep.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-which-key.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-which-key.el
new file mode 100644
index 000000000000..c4f2674a7aa0
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-which-key.el
@@ -0,0 +1,51 @@
+;;; evil-collection-which-key.el --- Evil bindings for which-key -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Maximiliano Sandoval <msandova@protonmail.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, which-key, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `which-key'
+
+;;; Code:
+
+(require 'evil-collection)
+(require 'which-key nil t)
+
+(defvar which-key-C-h-map)
+
+(defconst evil-collection-which-key-maps '(which-key-C-h-map))
+
+;; `which-key'is coded so that the prompt properly shows j and k as
+;; the bindings.
+(defun evil-collection-which-key-setup ()
+  "Set up `evil' bindings for `which-key'."
+
+  ;; (evil-collection-define-key nil 'which-key-C-h-map "u" 'which-key-undo-key)
+  (evil-collection-define-key nil 'which-key-C-h-map
+    "q" 'which-key-abort
+    "j" 'which-key-show-next-page-cycle
+    "k" 'which-key-show-previous-page-cycle
+    "?" 'which-key-show-standard-help))
+
+(provide 'evil-collection-which-key)
+;;; evil-collection-which-key.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-which-key.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-which-key.elc
new file mode 100644
index 000000000000..963c202c9d90
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-which-key.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-woman.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-woman.el
new file mode 100644
index 000000000000..13aa93ea37c7
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-woman.el
@@ -0,0 +1,50 @@
+;;; evil-collection-woman.el --- Evil bindings for WoMan -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, woman, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `woman'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'evil-collection-man) ; WoMan's keymap inherits from Man.
+(require 'woman)
+
+(defconst evil-collection-woman-maps '(woman-mode-map))
+
+(defun evil-collection-woman-setup ()
+  "Set up `evil' bindings for `woman'."
+  (evil-set-initial-state 'woman-mode 'normal)
+  (evil-collection-define-key 'normal 'woman-mode-map
+    (kbd "]") 'WoMan-next-manpage
+    (kbd "[") 'WoMan-previous-manpage
+
+    ;; goto
+    ;; "gm" 'woman
+
+    ;; refresh
+    "gr" 'woman-reformat-last-file))
+
+(provide 'evil-collection-woman)
+;;; evil-collection-woman.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-woman.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-woman.elc
new file mode 100644
index 000000000000..0d278e221493
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-woman.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-xref.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-xref.el
new file mode 100644
index 000000000000..84c7aee746b9
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-xref.el
@@ -0,0 +1,54 @@
+;;; evil-collection-xref.el --- Evil bindings for xref -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, xref, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for `xref'.
+
+;;; Code:
+(require 'evil-collection)
+(require 'xref)
+
+(defconst evil-collection-xref-maps '(xref--xref-buffer-mode-map))
+
+(defun evil-collection-xref-setup ()
+  "Set up `evil' bindings for `xref'."
+  (evil-collection-define-key 'normal 'xref--xref-buffer-mode-map
+    "q" 'quit-window
+    "gj" 'xref-next-line
+    "gk" 'xref-prev-line
+    (kbd "C-j") 'xref-next-line
+    (kbd "C-k") 'xref-prev-line
+    "]" 'xref-next-line
+    "[" 'xref-prev-line
+    "r" 'xref-query-replace-in-results
+
+    ;; open
+    (kbd "<return>") 'xref-goto-xref
+    (kbd "S-<return>") 'xref-show-location-at-point
+    "o" 'xref-show-location-at-point
+    "go" 'xref-show-location-at-point))
+
+(provide 'evil-collection-xref)
+;;; evil-collection-xref.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-xref.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-xref.elc
new file mode 100644
index 000000000000..cf465e5909a8
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-xref.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-youtube-dl.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-youtube-dl.el
new file mode 100644
index 000000000000..9ab93dcdec93
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-youtube-dl.el
@@ -0,0 +1,71 @@
+;;; evil-collection-youtube-dl.el --- Evil bindings for youtube-dl -*- lexical-binding: t -*-
+
+;; Copyright (C) 2018 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>, Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, youtube, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for youtube-dl.
+
+;;; Code:
+(require 'evil-collection)
+(require 'youtube-dl nil t)
+
+(defvar youtube-dl-list-mode-map)
+
+(defconst evil-collection-youtube-dl-maps '(youtube-dl-list-mode-map))
+
+(defun evil-collection-youtube-dl-setup ()
+  "Set up `evil' bindings for `youtube-dl'."
+
+  (evil-collection-inhibit-insert-state 'youtube-dl-list-mode-map)
+  (evil-collection-define-key 'normal 'youtube-dl-list-mode-map
+    (kbd "S-SPC") 'scroll-down-command
+
+    "gr" 'youtube-dl-list-redisplay
+
+    "g?" 'describe-mode
+
+    "p" 'youtube-dl-list-toggle-pause
+    "s" 'youtube-dl-list-toggle-slow
+    "S" 'youtube-dl-list-toggle-slow-all
+    "y" 'youtube-dl-list-yank
+
+    "i" 'youtube-dl-list-log
+    "I" 'youtube-dl-list-kill-log
+
+    "a" 'youtube-dl
+    "d" 'youtube-dl-list-kill
+
+    "[" 'youtube-dl-list-priority-down
+    "]" 'youtube-dl-list-priority-up
+    "gj" 'youtube-dl-list-priority-down
+    "gk" 'youtube-dl-list-priority-up
+    (kbd "C-j") 'youtube-dl-list-priority-down
+    (kbd "C-k") 'youtube-dl-list-priority-up
+
+    ;; quit
+    "q" 'quit-window
+    "ZQ" 'evil-quit
+    "ZZ" 'evil-quit))
+
+(provide 'evil-collection-youtube-dl)
+;;; evil-collection-youtube-dl.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-youtube-dl.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-youtube-dl.elc
new file mode 100644
index 000000000000..820f30425b31
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-youtube-dl.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ztree.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ztree.el
new file mode 100644
index 000000000000..8e2a1faa21f2
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ztree.el
@@ -0,0 +1,72 @@
+;;; evil-collection-ztree.el --- Evil bindings for ztree -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>, Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, ztree, tools
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation; either version 3, or (at your
+;; option) any later version.
+;;
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for ztree.
+
+;;; Code:
+(require 'evil-collection)
+(require 'ztree nil t)
+
+(defvar ztree-mode-map)
+(defvar ztreediff-mode-map)
+
+(defconst evil-collection-ztree-maps '(ztree-mode-map ztreediff-mode-map))
+
+(defun evil-collection-ztree-setup ()
+  "Set up `evil' bindings for `ztree'."
+
+  (evil-collection-inhibit-insert-state 'ztree-mode-map)
+  (evil-set-initial-state 'ztree-mode 'normal)
+  (evil-collection-define-key 'normal 'ztree-mode-map
+    (kbd "<tab>") 'ztree-jump-side
+    (kbd "<return>") 'ztree-perform-action
+    (kbd "SPC") 'ztree-perform-soft-action
+
+    "x" 'ztree-toggle-expand-subtree
+
+    ;; refresh
+    "gr" 'ztree-refresh-buffer
+
+    ;; quit
+    "q" 'quit-window
+    "ZQ" 'quit-window
+    "ZZ" 'quit-window)
+
+  (evil-collection-inhibit-insert-state 'ztreediff-mode-map)
+  (evil-set-initial-state 'ztree-mode 'normal)
+  (evil-define-minor-mode-key 'normal 'ztreediff-mode
+    "C" 'ztree-diff-copy
+    "D" 'ztree-diff-delete-file
+    "zH" 'ztree-diff-toggle-show-filtered-files
+    "d" 'ztree-diff-simple-diff-files
+    "zh" 'ztree-diff-toggle-show-equal-files
+    "gf" 'ztree-diff-view-file
+
+    ;; refresh
+    "gr" 'ztree-diff-partial-rescan
+    "gR" 'ztree-diff-full-rescan))
+
+(provide 'evil-collection-ztree)
+;;; evil-collection-ztree.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ztree.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ztree.elc
new file mode 100644
index 000000000000..9191d6ec6394
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection-ztree.elc
Binary files differdiff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection.el b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection.el
new file mode 100644
index 000000000000..327ef0c0a04b
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection.el
@@ -0,0 +1,531 @@
+;;; evil-collection.el --- A set of keybindings for Evil mode -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 James Nguyen
+
+;; Author: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <mail@ambrevar.xyz>
+;; URL: https://github.com/emacs-evil/evil-collection
+;; Version: 0.0.2
+;; Package-Requires: ((emacs "25.1") (cl-lib "0.5") (evil "1.2.13"))
+;; Keywords: evil, tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; A set of keybindings for Evil mode.
+;;
+;; If you want to use Evil in the minibuffer, you'll have to enable it by
+;; setting `evil-collection-setup-minibuffer' to t before loading this package.
+;; This is so because many users find it confusing.
+;; Some minibuffer-related packages such as Helm rely on this option.
+
+;;; Code:
+(eval-when-compile (require 'subr-x))
+(require 'cl-lib)
+(require 'evil)
+
+(defvar evil-want-integration)
+(defvar evil-want-keybinding)
+(if (featurep 'evil-keybindings)
+    (if evil-want-keybinding
+        (display-warning
+         '(evil-collection)
+         "Make sure to set `evil-want-keybinding' to nil before loading evil \
+or evil-collection.\
+\n
+See https://github.com/emacs-evil/evil-collection/issues/60 for more details.")
+      (display-warning
+       '(evil-collection)
+       "`evil-want-keybinding' was set to nil but not before loading evil.\
+\n
+Make sure to set `evil-want-keybinding' to nil before loading evil \
+or evil-collection.\
+\n
+See https://github.com/emacs-evil/evil-collection/issues/60 for more details.")))
+
+(unless (featurep 'evil-integration)
+  (message "Requiring evil-integration. Set evil-want-integration to t to\
+ remove this message.\
+\n
+See https://github.com/emacs-evil/evil-collection/issues/60 for more details.")
+  (require 'evil-integration))
+
+;; Compatibility
+
+(eval-and-compile
+  (with-no-warnings
+    (if (version< emacs-version "26")
+        (progn
+          (defalias 'evil-collection-if-let* #'if-let)
+          (defalias 'evil-collection-when-let* #'when-let)
+          (function-put #'evil-collection-if-let* 'lisp-indent-function 2)
+          (function-put #'evil-collection-when-let* 'lisp-indent-function 1))
+      (defalias 'evil-collection-if-let* #'if-let*)
+      (defalias 'evil-collection-when-let* #'when-let*))))
+
+;; Compatibility
+
+(declare-function org-table-align "org-table.el" nil)
+
+(defgroup evil-collection nil
+  "A set of keybindings for Evil mode"
+  :group 'evil)
+
+(defcustom evil-collection-setup-minibuffer nil
+  "Whether to setup Evil bindings in the minibuffer."
+  :type 'boolean
+  :group 'evil-collection)
+
+(defcustom evil-collection-mode-list
+  `(ace-jump-mode
+    ag
+    alchemist
+    anaconda-mode
+    arc-mode
+    avy
+    bookmark
+    (buff-menu "buff-menu")
+    calc
+    calendar
+    cider
+    cmake-mode
+    comint
+    company
+    compile
+    custom
+    cus-theme
+    daemons
+    deadgrep
+    debbugs
+    debug
+    diff-mode
+    dired
+    doc-view
+    edebug
+    ediff
+    eglot
+    elfeed
+    elisp-mode
+    elisp-refs
+    emms
+    epa
+    ert
+    eshell
+    eval-sexp-fu
+    evil-mc
+    eww
+    flycheck
+    flymake
+    free-keys
+    geiser
+    ggtags
+    git-timemachine
+    go-mode
+    grep
+    help
+    guix
+    helm
+    ibuffer
+    image
+    image-dired
+    image+
+    imenu-list
+    indium
+    info
+    ivy
+    js2-mode
+    log-view
+    lsp-ui-imenu
+    lua-mode
+    kotlin-mode
+    macrostep
+    man
+    magit
+    magit-todos
+    ,@(when evil-collection-setup-minibuffer '(minibuffer))
+    mu4e
+    mu4e-conversation
+    neotree
+    notmuch
+    nov
+    ;; occur is in replace.el which was built-in before Emacs 26.
+    (occur ,(if (<= emacs-major-version 25) "replace" 'replace))
+    outline
+    p4
+    (package-menu package)
+    paren
+    pass
+    (pdf pdf-view)
+    popup
+    proced
+    prodigy
+    profiler
+    python
+    quickrun
+    racer
+    realgud
+    reftex
+    rjsx-mode
+    robe
+    ruby-mode
+    rtags
+    simple
+    slime
+    (term term ansi-term multi-term)
+    tide
+    transmission
+    typescript-mode
+    vc-annotate
+    vc-dir
+    vc-git
+    vdiff
+    view
+    vlf
+    which-key
+    wdired
+    wgrep
+    woman
+    xref
+    youtube-dl
+    (ztree ztree-diff))
+  "The list of modes which will be evilified by `evil-collection-init'.
+Elements are either target mode symbols or lists which `car' is the
+mode symbol and `cdr' the packages to register.
+
+By default, `minibuffer' is not included because many users find
+this confusing. It will be included if
+`evil-collection-setup-minibuffer' is set to t."
+  :type '(repeat (choice symbol sexp))
+  :group 'evil-collection)
+
+(defcustom evil-collection-key-whitelist '()
+  "List of keys that may be used by Evil Collection.
+This is a list of strings that are suitable for input to
+`kbd'.  If there are no keys in the list, the whitelist will be ignored."
+  :type '(repeat string)
+  :group 'evil-collection)
+
+(defcustom evil-collection-key-blacklist '()
+  "List of keys that may not be used by Evil Collection.
+This is a list of strings that are suitable for input to `kbd'."
+  :type '(repeat string)
+  :group 'evil-collection)
+
+(defvar evil-collection--bindings-record (make-hash-table :test 'eq)
+  "Record of bindings currently made by Evil Collection. This is
+a hash-table with the package symbol as a key.  The associated
+values are the package's bindings which are stored as a list of
+the form ((STATE KEY BINDING)).")
+
+(defvar evil-collection-setup-hook nil
+  "Hook run by `evil-collection-init' for each mode that is evilified.
+This hook runs after all setup (including keybindings) for a mode has already
+taken place. The arguments passed to functions for this hook are the name of the
+mode and a list of keymap names (i.e. symbols, not actual keymaps) customized by
+Evil Collection for that mode. More arguments may be added in the future, so
+functions added to this hook should include a \"&rest _rest\" for forward
+compatibility.")
+
+(defvar evil-collection-describe-buffer "*evil-collection*"
+  "Name for Evil Collection buffer used to describe bindings.")
+
+(defun evil-collection-define-key (state map-sym &rest bindings)
+  "Wrapper for `evil-define-key*' with additional features.
+Unlike `evil-define-key*' MAP-SYM should be a quoted keymap other
+than the unquoted keymap required for `evil-define-key*'.  This
+function adds the ability to filter keys on the basis of
+`evil-collection-key-whitelist' and
+`evil-collection-key-blacklist'. It also stores bindings in
+`evil-collection--bindings-record'."
+  (declare (indent defun))
+  (let* ((whitelist (mapcar 'kbd evil-collection-key-whitelist))
+         (blacklist (mapcar 'kbd evil-collection-key-blacklist))
+         (record (gethash map-sym evil-collection--bindings-record))
+         filtered-bindings)
+    (while bindings
+      (let ((key (pop bindings))
+            (def (pop bindings)))
+        (when (or (and whitelist (member key whitelist))
+                  (not (member key blacklist)))
+          (if (consp state)
+              (dolist (st state)
+                (push (list (if st st 'all) (key-description key) def)
+                      record))
+            (push (list (if state state 'all) (key-description key) def)
+                  record))
+          (push key filtered-bindings)
+          (push def filtered-bindings))))
+    (puthash map-sym record evil-collection--bindings-record)
+    (setq filtered-bindings (nreverse filtered-bindings))
+    (cond ((null filtered-bindings))
+          ((and (boundp map-sym) (keymapp (symbol-value map-sym)))
+           (apply #'evil-define-key*
+                  state (symbol-value map-sym) filtered-bindings))
+          ((boundp map-sym)
+           (user-error "evil-collection: %s is not a keymap" map-sym))
+          (t
+           (let* ((fname (format "evil-collection-define-key-in-%s" map-sym))
+                  (fun (make-symbol fname)))
+             (fset fun `(lambda (&rest args)
+                          (when (and (boundp ',map-sym) (keymapp ,map-sym))
+                            (remove-hook 'after-load-functions #',fun)
+                            (apply #'evil-define-key*
+                                   ',state ,map-sym ',filtered-bindings))))
+             (add-hook 'after-load-functions fun t))))))
+
+(defun evil-collection-inhibit-insert-state (map-sym)
+  "Unmap insertion keys from normal state.
+This is particularly useful for read-only modes."
+  (evil-collection-define-key 'normal map-sym
+    [remap evil-append] #'ignore
+    [remap evil-append-line] #'ignore
+    [remap evil-insert] #'ignore
+    [remap evil-insert-line] #'ignore
+    [remap evil-change] #'ignore
+    [remap evil-change-line] #'ignore
+    [remap evil-substitute] #'ignore
+    [remap evil-change-whole-line] #'ignore
+    [remap evil-delete] #'ignore
+    [remap evil-delete-line] #'ignore
+    [remap evil-delete-char] #'ignore
+    [remap evil-delete-backward-char] #'ignore
+    [remap evil-replace] #'ignore
+    [remap evil-replace-state] #'ignore
+    [remap evil-open-below] #'ignore
+    [remap evil-open-above] #'ignore
+    [remap evil-paste-after] #'ignore
+    [remap evil-paste-before] #'ignore
+    [remap evil-join] #'ignore
+    [remap evil-indent] #'ignore
+    [remap evil-shift-left] #'ignore
+    [remap evil-shift-right] #'ignore
+    [remap evil-invert-char] #'ignore))
+
+(defun evil-collection--binding-lessp (a b)
+  "Comparison function used to sort bindings of the form (state key def)."
+  (let ((a-state (symbol-name (nth 0 a)))
+        (b-state (symbol-name (nth 0 b)))
+        (a-key (nth 1 a))
+        (b-key (nth 1 b)))
+    (if (not (string= a-state b-state))
+        (string-lessp a-state b-state)
+      (string-lessp a-key b-key))))
+
+(defun evil-collection-describe-bindings (&optional arg)
+  "Print bindings made by Evil Collection to separate buffer.
+
+With non-nil ARG, restrict to bindings corresponding to active
+modes in the current buffer."
+  (interactive "P")
+  (let ((orig-buf (current-buffer))
+        (desc-buf (get-buffer-create evil-collection-describe-buffer)))
+    (switch-to-buffer-other-window desc-buf)
+    (with-current-buffer desc-buf
+      (erase-buffer)
+      (org-mode)
+      (dolist (keymap
+               (sort (hash-table-keys evil-collection--bindings-record)
+                     (lambda (a b)
+                       (string-lessp (symbol-name a)
+                                     (symbol-name b)))))
+        (when (or (null arg)
+                  (with-current-buffer orig-buf
+                    (and (boundp keymap)
+                         (memq (symbol-value keymap) (current-active-maps)))))
+          (insert "\n\n* " (symbol-name keymap) "\n")
+          (insert "
+| State | Key | Definition |
+|-------|-----|------------|
+")
+          (cl-loop
+           for (state key def) in
+           (sort (copy-sequence
+                  (gethash keymap evil-collection--bindings-record))
+                 #'evil-collection--binding-lessp)
+           do
+           (when (and def (not (eq def 'ignore)))
+             (insert (format "| %s | %s | %s |\n"
+                             state
+                             (replace-regexp-in-string "|" "¦" key)
+                             (cond ((symbolp def) def)
+                                   ((functionp def) "(lambda ...)")
+                                   ((consp def)
+                                    (format "(%s ...)" (car def)))
+                                   (t "??"))))))
+          (org-table-align)))
+      (goto-char (point-min)))))
+
+(defun evil-collection--translate-key (state keymap-symbol
+                                             translations
+                                             destructive)
+  "Helper function for `evil-collection-translate-key'.
+In the keymap corresponding to STATE and KEYMAP-SYMBOL, make the key
+TRANSLATIONS. When DESTRUCTIVE is non-nil, make the TRANSLATIONS destructively
+without creating/referencing a backup keymap."
+  (let* ((backup-keymap-symbol (intern (format "evil-collection-%s%s-backup-map"
+                                               keymap-symbol
+                                               (if state
+                                                   (format "-%s-state" state)
+                                                 ""))))
+         (keymap (symbol-value keymap-symbol))
+         (lookup-keymap (if (and (not destructive)
+                                 (boundp backup-keymap-symbol))
+                            (symbol-value backup-keymap-symbol)
+                          (copy-keymap
+                           (if state
+                               (evil-get-auxiliary-keymap keymap state t t)
+                             keymap))))
+         (maps (cl-loop for (key replacement) on translations by 'cddr
+                        ;; :destructive can be in TRANSLATIONS
+                        unless (keywordp key)
+                        collect key
+                        and collect (when replacement
+                                      (lookup-key lookup-keymap replacement)))))
+    (unless (or destructive
+                (boundp backup-keymap-symbol))
+      (set backup-keymap-symbol lookup-keymap))
+    (apply #'evil-define-key* state keymap maps)))
+
+;;;###autoload
+(cl-defun evil-collection-translate-key (states keymaps
+                                                &rest translations
+                                                &key destructive
+                                                &allow-other-keys)
+  "Translate keys in the keymap(s) corresponding to STATES and KEYMAPS.
+STATES should be the name of an evil state, a list of states, or nil. KEYMAPS
+should be a symbol corresponding to the keymap to make the translations in or a
+list of keymap symbols. Like `evil-define-key', when a keymap does not exist,
+the keybindings will be deferred until the keymap is defined, so
+`with-eval-after-load' is not neccessary. TRANSLATIONS corresponds to a list of
+key replacement pairs. For example, specifying \"a\" \"b\" will bind \"a\" to
+\"b\"'s definition in the keymap. Specifying nil as a replacement will unbind a
+key. If DESTRUCTIVE is nil, a backup of the keymap will be stored on the initial
+invocation, and future invocations will always look up keys in the backup
+keymap. When no TRANSLATIONS are given, this function will only create the
+backup keymap without making any translations. On the other hand, if DESTRUCTIVE
+is non-nil, the keymap will be destructively altered without creating a backup.
+For example, calling this function multiple times with \"a\" \"b\" \"b\" \"a\"
+would continue to swap and unswap the definitions of these keys. This means that
+when DESTRUCTIVE is non-nil, all related swaps/cycles should be done in the same
+invocation."
+  (declare (indent defun))
+  (unless (listp keymaps)
+    (setq keymaps (list keymaps)))
+  (unless (and (listp states)
+               (not (null states)))
+    (setq states (list states)))
+  (dolist (keymap-symbol keymaps)
+    (dolist (state states)
+      (evil-delay `(and (boundp ',keymap-symbol)
+                        (keymapp ,keymap-symbol))
+          `(evil-collection--translate-key ',state ',keymap-symbol
+                                           ',translations ,destructive)
+        'after-load-functions t nil
+        (symbol-name (cl-gensym (format "evil-collection-translate-key-in-%s"
+                                        keymap-symbol)))))))
+
+;;;###autoload
+(defmacro evil-collection-swap-key (states keymaps &rest args)
+  "Wrapper around `evil-collection-translate-key' for swapping keys.
+STATES, KEYMAPS, and ARGS are passed to `evil-collection-translate-key'. ARGS
+should consist of key swaps (e.g. \"a\" \"b\" is equivalent to \"a\" \"b\" \"b\"
+\"a\" with `evil-collection-translate-key') and optionally keyword arguments for
+`evil-collection-translate-key'."
+  (declare (indent defun))
+  (setq args (cl-loop for (key replacement) on args by 'cddr
+                      collect key and collect replacement
+                      and unless (keywordp key)
+                      collect replacement and collect key))
+  `(evil-collection-translate-key ,states ,keymaps ,@args))
+
+;;;###autoload
+(defun evil-collection-init (&optional modes)
+  "Register the Evil bindings for all modes in `evil-collection-mode-list'.
+
+Alternatively, you may register select bindings manually, for
+instance:
+
+  (with-eval-after-load 'calendar
+    (require 'evil-collection-calendar)
+    (evil-collection-calendar-setup))
+
+If MODES is specified (as either one mode or a list of modes), use those modes
+instead of the modes in `evil-collection-mode-list'."
+  (interactive)
+  (if modes
+      (or (listp modes) (setq modes (list modes)))
+    (setq modes evil-collection-mode-list))
+  (dolist (mode modes)
+    (let ((m mode)
+          (reqs (list mode)))
+      (when (listp mode)
+        (setq m (car mode)
+              reqs (cdr mode)))
+      (dolist (req reqs)
+        (with-eval-after-load req
+          (require (intern (concat "evil-collection-" (symbol-name m))))
+          (funcall (intern (concat "evil-collection-" (symbol-name m)
+                                   "-setup")))
+          (let ((mode-keymaps
+                 (ignore-errors
+                   (symbol-value
+                    (intern (format "evil-collection-%s-maps" m))))))
+            (run-hook-with-args 'evil-collection-setup-hook
+                                m mode-keymaps)))))))
+
+(defvar evil-collection-delete-operators '(evil-delete
+                                           evil-cp-delete
+                                           evil-sp-delete
+                                           lispyville-delete)
+  "List of delete operators.")
+
+(defvar evil-collection-yank-operators '(evil-yank
+                                         evil-cp-yank
+                                         evil-sp-yank
+                                         lispyville-yank)
+  "List of yank operators.")
+
+;;* Search
+
+(defun evil-collection-evil-search-enabled ()
+  (eq evil-search-module 'evil-search))
+
+(defvar evil-collection-evil-search-forward
+  '(menu-item "" nil :filter (lambda (&optional _)
+                               (if (eq evil-search-module 'evil-search)
+                                   #'evil-ex-search-forward
+                                 #'evil-search-forward))))
+
+(defvar evil-collection-evil-search-backward
+  '(menu-item "" nil :filter (lambda (&optional _)
+                               (if (eq evil-search-module 'evil-search)
+                                   #'evil-ex-search-backward
+                                 #'evil-search-backward))))
+
+(defvar evil-collection-evil-search-next
+  '(menu-item "" nil :filter (lambda (&optional _)
+                               (if (eq evil-search-module 'evil-search)
+                                   #'evil-ex-search-next
+                                 #'evil-search-next))))
+
+(defvar evil-collection-evil-search-previous
+  '(menu-item "" nil :filter (lambda (&optional _)
+                               (if (eq evil-search-module 'evil-search)
+                                   #'evil-ex-search-previous
+                                 #'evil-search-previous))))
+
+(provide 'evil-collection)
+;;; evil-collection.el ends here
diff --git a/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection.elc b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection.elc
new file mode 100644
index 000000000000..70a895f835f7
--- /dev/null
+++ b/configs/shared/emacs/.emacs.d/elpa/evil-collection-20180913.209/evil-collection.elc
Binary files differ