80 lines
2.8 KiB
Org Mode
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
|
|
|