diff options
-rw-r--r-- | init.el | 13 | ||||
-rw-r--r-- | lisp/+elfeed.el | 17 |
2 files changed, 25 insertions, 5 deletions
diff --git a/init.el b/init.el index 8e92143..3c1d975 100644 --- a/init.el +++ b/init.el | |||
@@ -1394,8 +1394,17 @@ See also `crux-reopen-as-root-mode'." | |||
1394 | (:hook #'reading-mode) | 1394 | (:hook #'reading-mode) |
1395 | (:option +elfeed--update-repeat (* 60 30) ; 1/2 hour | 1395 | (:option +elfeed--update-repeat (* 60 30) ; 1/2 hour |
1396 | +elfeed--update-first-time 60)) | 1396 | +elfeed--update-first-time 60)) |
1397 | (+elfeed-update-async-mode -1) ; It really messes with stuff for work | 1397 | (+elfeed-update-async-mode +1) |
1398 | ) | 1398 | (add-hook '+elfeed-update-proceed-hook (defun non-work-hours? () |
1399 | "Return nil if during work hours, t otherwise." | ||
1400 | (let* ((now (current-time)) | ||
1401 | (now* (decode-time now)) | ||
1402 | (work-start* (append '(0 0 8) (cdddr now*))) ; 8:00 AM | ||
1403 | (work-end* (append '(0 0 18) (cdddr now*))) ; 6:00 PM | ||
1404 | (work-start (encode-time work-start*)) | ||
1405 | (work-end (encode-time work-end*))) | ||
1406 | (or (time-less-p now work-start) | ||
1407 | (time-less-p work-end now)))))) | ||
1399 | 1408 | ||
1400 | (setup (:straight elfeed-org) | 1409 | (setup (:straight elfeed-org) |
1401 | (:also-load +org-capture) | 1410 | (:also-load +org-capture) |
diff --git a/lisp/+elfeed.el b/lisp/+elfeed.el index 7f9e193..c0b74f0 100644 --- a/lisp/+elfeed.el +++ b/lisp/+elfeed.el | |||
@@ -133,6 +133,19 @@ If multiple items are selected, don't advance." | |||
133 | (defvar +elfeed--update-first-time 6 "How long to wait for the first time.") | 133 | (defvar +elfeed--update-first-time 6 "How long to wait for the first time.") |
134 | (defvar +elfeed--update-repeat (* 60 15) "How long between updates.") | 134 | (defvar +elfeed--update-repeat (* 60 15) "How long between updates.") |
135 | 135 | ||
136 | (defcustom +elfeed-update-proceed-hook nil | ||
137 | "Predicates to query before running `+elfeed-update-command'. | ||
138 | Each hook is passed no arguments." | ||
139 | :type 'hook) | ||
140 | |||
141 | (defun +elfeed-update-command-wrapper () | ||
142 | "Run `+elfeed-update-command', but only sometimes. | ||
143 | If any of the predicates in `+elfeed-update-proceed-hook' return | ||
144 | nil, don't run `+elfeed-update-command'. If they all return | ||
145 | non-nil, proceed." | ||
146 | (when (run-hook-with-args-until-failure '+elfeed-update-proceed-hook) | ||
147 | (+elfeed-update-command))) | ||
148 | |||
136 | (defun +elfeed--cancel-update-timer () | 149 | (defun +elfeed--cancel-update-timer () |
137 | "Cancel `+elfeed--update-timer'." | 150 | "Cancel `+elfeed--update-timer'." |
138 | (unless +elfeed--update-running | 151 | (unless +elfeed--update-running |
@@ -142,12 +155,10 @@ If multiple items are selected, don't advance." | |||
142 | (defun +elfeed--reinstate-update-timer () | 155 | (defun +elfeed--reinstate-update-timer () |
143 | "Reinstate `+elfeed--update-timer'." | 156 | "Reinstate `+elfeed--update-timer'." |
144 | ;; First, unload the db | 157 | ;; First, unload the db |
145 | (elfeed-db-save) | ||
146 | (elfeed-db-unload) | ||
147 | (setq +elfeed--update-timer | 158 | (setq +elfeed--update-timer |
148 | (run-at-time +elfeed--update-first-time | 159 | (run-at-time +elfeed--update-first-time |
149 | +elfeed--update-repeat | 160 | +elfeed--update-repeat |
150 | #'+elfeed-update-command))) | 161 | #'+elfeed-update-command-wrapper))) |
151 | 162 | ||
152 | (define-minor-mode +elfeed-update-async-mode | 163 | (define-minor-mode +elfeed-update-async-mode |
153 | "Minor mode to update elfeed async-style." | 164 | "Minor mode to update elfeed async-style." |