complete-computing-environment/gnus_evil_mode.org

80 lines
2.8 KiB
Org Mode

:PROPERTIES:
:ID: cce/gnus_evil_mode
:END:
#+TITLE: Gnus Evil Mode
#+filetags: :Emacs:CCE:Communcations:
#+PROPERTY: header-args :mkdirp yes :results none
#+PROPERTY: header-args:emacs-lisp :tangle gnus-evil-mode.el
#+ARCOLOGY_KEY: cce/gnus-evil-mode
#+ARCOLOGY_ALLOW_CRAWL: t
#+ARROYO_EMACS_MODULE: gnus-evil-mode
#+ARROYO_MODULE_WANTS: cce/configure_packaging.org
#+ARROYO_MODULE_WANTS: cce/evil_mode.org
I provide custom [[id:cce/evil_mode][Evil Mode]] bindings here to control [[id:cce/gnus][Gnus]] in the =summary= and =group= buffer, they're pretty straightforward, and I think this presentation is fairly legible. [[id:cce/evil_mode][Evil Mode]]'s =motion= state is very useful for light modes like this
#+begin_src emacs-lisp
(provide 'cce/gnus-evil-mode)
(defun cce/setup-gnus-evil-bindings ()
(require 'gnus-topic)
(setq evil-collection-mode-list
(remove 'gnus evil-collection-mode-list))
(mapc
(lambda (defn)
(evil-define-key* 'motion gnus-topic-mode-map
(kbd (car defn))
(cdr defn)))
'(("RET" . gnus-topic-select-group)
("J" . gnus-group-next-unread-group)
("K" . gnus-group-prev-unread-group)
("gf" . gnus-topic-get-new-news-this-topic)
("f" . gnus-group-get-new-news)
("t" . gnus-topic-mode)
("s" . gnus-group-save-newsrc)
("q" . gnus-group-quit)))
(mapc
(lambda (defn)
(evil-define-key* 'motion gnus-group-mode-map
(kbd (car defn))
(cdr defn)))
'(("RET" . gnus-group-select-group)
("J" . gnus-group-next-unread-group)
("K" . gnus-group-prev-unread-group)
("gf" . gnus-group-get-new-news-this-group)
("f" . gnus-group-get-new-news)
("t" . gnus-topic-mode)
("s" . gnus-group-save-newsrc)
("q" . gnus-group-quit)))
(mapc
(lambda (defn)
(evil-define-key* 'motion gnus-summary-mode-map
(kbd (car defn))
(cdr defn)))
'(("RET" . gnus-summary-scroll-up)
("j" . gnus-summary-next-unread-article)
("k" . gnus-summary-prev-unread-article)
("J" . gnus-summary-next-article)
("K" . gnus-summary-prev-article)
("u" . gnus-summary-clear-mark-forward)
("U" . gnus-summary-clear-mark-backward)
("i" . gnus-summary-kill-same-subject-and-select)
("o" . gnus-summary-tick-article-forward)
("m" . gnus-summary-catchup-from-here)
("M" . gnus-summary-catchup-to-here)
("L" . gnus-summary-lower-score)
("I" . gnus-summary-increase-score)
("p" . gnus-summary-catchup-and-exit)
("d" . gnus-summary-mark-as-read-forward)
("n" . gnus-summary-next-page)
("q" . gnus-summary-exit)
("/" . gnus-summary-limit-map))))
(eval-after-load "gnus" #'cce/setup-gnus-evil-bindings)
(evil-set-initial-state 'gnus-summary-mode 'motion)
(evil-set-initial-state 'gnus-group-mode 'motion)
#+end_src