diff --git a/.emacs.d/lisp/init-elfeed.el b/.emacs.d/lisp/init-elfeed.el index 5ef88fd2..f133b462 100644 --- a/.emacs.d/lisp/init-elfeed.el +++ b/.emacs.d/lisp/init-elfeed.el @@ -69,13 +69,28 @@ visit otherwise." (switch-to-buffer "*elfeed-search*")) (define-key elfeed-show-mode-map "q" #'ambrevar/elfeed-kill-entry) -(defun ambrevar/elfeed-switch-back () ; TODO: Replace with `helm-defswitch'. - "Back to the last elfeed buffer, entry or search." - (interactive) - (let ((buffer (get-buffer "*elfeed-entry*"))) - (if buffer - (switch-to-buffer buffer) - (elfeed)))) +;; Show entry in different buffers. +;; TODO: Report upstream. +(defun ambrevar/elfeed-show-entry (entry) + "Display ENTRY in the current buffer." + (let ((buff (get-buffer-create (format "*elfeed-entry-<%s>*" + (elfeed-entry-title entry))))) + (with-current-buffer buff + (elfeed-show-mode) + (setq elfeed-show-entry entry) + (elfeed-show-refresh)) + (funcall elfeed-show-entry-switch buff))) +(advice-add 'elfeed-show-entry :override 'ambrevar/elfeed-show-entry) + +(when (require 'patch-helm nil 'noerror) + (helm-defswitcher + "elfeed" + (lambda (b) + (with-current-buffer b + (or + (derived-mode-p 'elfeed-search-mode) + (derived-mode-p 'elfeed-show-mode)))) + elfeed)) (defun ambrevar/elfeed-setup () (add-hook 'window-configuration-change-hook 'elfeed-search-update--force nil t)) diff --git a/.emacs.d/lisp/init-exwm.el b/.emacs.d/lisp/init-exwm.el index 26d60060..524d4654 100644 --- a/.emacs.d/lisp/init-exwm.el +++ b/.emacs.d/lisp/init-exwm.el @@ -100,7 +100,10 @@ (exwm-input-set-key (kbd "s-m") #'ambrevar/mu4e-headers) (exwm-input-set-key (kbd "s-m") #'helm-mu4e-switch) (exwm-input-set-key (kbd "s-M") #'helm-mu4e-switch-other-window))) -(exwm-input-set-key (kbd "s-n") #'ambrevar/elfeed-switch-back) ; "n" for "news" +(if (not (fboundp 'helm-elfeed-switch)) + (exwm-input-set-key (kbd "s-n") #'elfeed) + (exwm-input-set-key (kbd "s-n") #'helm-elfeed-switch) + (exwm-input-set-key (kbd "s-N") #'helm-elfeed-switch-other-window)) ; "n" for "news" (exwm-input-set-key (kbd "s-e") #'ambrevar/eww-switch-back) (exwm-input-set-key (kbd "s-E") #'eww)