summaryrefslogtreecommitdiff
path: root/gnus-conf.el
diff options
context:
space:
mode:
Diffstat (limited to 'gnus-conf.el')
-rw-r--r--gnus-conf.el32
1 files changed, 31 insertions, 1 deletions
diff --git a/gnus-conf.el b/gnus-conf.el
index 39a211a..689a2fa 100644
--- a/gnus-conf.el
+++ b/gnus-conf.el
@@ -15,6 +15,36 @@
;; (nnimap-server-port 143))
))
+;;; display using display-buffer
+
+(defun durand-display-gnus (&rest _args)
+ "Display the group buffer using display-buffer."
+ (cond
+ ((null (get-buffer "*Group*"))
+ (user-error "No group buffer!"))
+ (t
+ (quit-window)
+ (display-buffer (get-buffer "*Group*")))))
+
+(advice-add #'gnus :after #'durand-display-gnus)
+
+(defun durand-gnus-kill-tab (&rest _args)
+ "Kill the tab when exiting Gnus."
+ (cond
+ ((durand-member "email"
+ (mapcar (lambda (tab) (cdr (assq 'name tab)))
+ (funcall tab-bar-tabs-function))
+ #'string=)
+ (tab-bar-close-tab-by-name "email"))))
+
+(defun durand-gnus-quit ()
+ "Quit and kill tab at the same time."
+ (interactive)
+ (bury-buffer)
+ (durand-gnus-kill-tab))
+
+(add-hook 'gnus-exit-gnus-hook #'durand-gnus-kill-tab)
+
;;; repunctuate sentences
(add-hook 'gnus-part-display-hook 'gnus-treat-repunctuate)
@@ -148,7 +178,7 @@
;;; exiting
-(define-key gnus-group-mode-map (vector ?q) #'bury-buffer)
+(define-key gnus-group-mode-map (vector ?q) #'durand-gnus-quit)
(define-key gnus-group-mode-map (vector ?x) #'gnus-group-exit)
;;; agent key bindings