[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Sending delayed articles when getting new news
From: |
Raphaël Berbain |
Subject: |
Re: Sending delayed articles when getting new news |
Date: |
Wed, 04 Aug 2004 15:28:43 +0200 |
User-agent: |
Gnus/5.110003 (No Gnus v0.3) Emacs/21.3.50 (gnu/linux) |
Paul Johnson <baloo@ursine.ca> writes:
> Apologies for another idiot question, but is there a way to make Gnus
> send any delayed articles scheduled to go out at or before the current
> time automatically when one presses g for new news?
If you mean basically automate 'J j' 'J S' 'g' 'J s' 'J j', then the
basic functions you should play with are 'gnus-agent-toggle-plugged',
'gnus-group-send-queue, 'gnus-group-get-new-news',
'gnus-agent-fetch-session'. If you don't, then I didn't understand
what you meant by 'delayed articles scheduled...'. My apologies !!
As an example, below is what I use - It does what you ask and some
more (I was lazy and didn't want to clean the code). With this setup,
'd' gets mail & news, 'f' sends queue, 'g' gets only mail (since my
mail backend is unagentized, but nntp is) and 'h' first sends, then
gets.
;;;; ** mail demon
(defun rgb/gnus-demon-scan (function)
(let ((win (current-window-configuration)))
(unwind-protect
(save-window-excursion
(save-excursion
(when (gnus-alive-p)
(save-excursion
(set-buffer gnus-group-buffer)
(funcall function)))))
(set-window-configuration win))))
(defun rgb/gnus-demon-scan-mail ()
(message "checking mail...")
(rgb/gnus-demon-scan 'gnus-group-get-new-news)
(message "checking mail... done. [%s]" (format-time-string "%r"
(current-time))))
(defun rgb/gnus-demon-mail-start ()
(interactive)
(gnus-demon-add-handler 'rgb/gnus-demon-scan-mail 5 t))
(defun rgb/gnus-demon-mail-stop ()
(interactive)
(gnus-demon-remove-handler 'rgb/gnus-demon-scan-mail))
(add-hook 'gnus-started-hook 'rgb/gnus-demon-mail-start)
(add-hook 'gnus-after-exiting-gnus-hook 'rgb/gnus-demon-mail-stop)
;;;; ** agent
;; (setq gnus-agent-synchronize-flags 'ask)
(setq gnus-agent-synchronize-flags t)
(defun rgb/gnus-demon-wrap (function)
(rgb/gnus-demon-mail-stop)
(funcall function)
(rgb/gnus-demon-mail-start))
(defun rgb/gnus-agent-wrap (function)
(gnus-agent-toggle-plugged t)
(funcall function)
(gnus-agent-toggle-plugged nil))
(defun rgb/gnus-agent-get-unplugged ()
(interactive)
(rgb/gnus-demon-wrap
(lambda ()
(message "checking mail...")
(gnus-group-get-new-news)
(message "checking mail... done. [%s]" (format-time-string "%r"
(current-time))))))
(defun rgb/gnus-agent-get ()
(interactive)
(rgb/gnus-demon-wrap
(lambda ()
(rgb/gnus-agent-wrap
(lambda ()
(gnus-group-get-new-news)
(gnus-agent-fetch-session))))))
(defun rgb/gnus-agent-put ()
(interactive)
(rgb/gnus-demon-wrap
(lambda ()
(rgb/gnus-agent-wrap
(lambda ()
(gnus-group-send-queue))))))
(defun rgb/gnus-agent-put-get ()
(interactive)
(rgb/gnus-demon-wrap
(lambda ()
(rgb/gnus-agent-wrap
(lambda ()
(gnus-group-send-queue)
(gnus-group-get-new-news)
(gnus-agent-fetch-session))))))
(keydef (gnus-group "d") rgb/gnus-agent-get)
(keydef (gnus-group "f") rgb/gnus-agent-put)
(keydef (gnus-group "g") rgb/gnus-agent-get-unplugged)
(keydef (gnus-group "h") rgb/gnus-agent-put-get)