aboutsummaryrefslogtreecommitdiff
path: root/sx-question.el
diff options
context:
space:
mode:
authorArtur Malabarba <bruce.connor.am@gmail.com>2015-04-20 20:53:16 +0100
committerArtur Malabarba <bruce.connor.am@gmail.com>2015-04-20 20:53:16 +0100
commit4e053fceed58d72c5670556ec0537610d52d6fa7 (patch)
tree3386c223e16a4dcda805da21d353b5eb030166f1 /sx-question.el
parent7ee1f7f1f28777d2d69a7ef589f6c7c6667835c3 (diff)
Move sx-sorted-insert-skip-first
Diffstat (limited to 'sx-question.el')
-rw-r--r--sx-question.el13
1 files changed, 13 insertions, 0 deletions
diff --git a/sx-question.el b/sx-question.el
index f5c7e86..7c2b1e9 100644
--- a/sx-question.el
+++ b/sx-question.el
@@ -122,6 +122,19 @@ See `sx-question--user-read-list'."
(>= (or (cdr (assoc .question_id ql)) 0)
.last_activity_date)))))
+(defmacro sx-sorted-insert-skip-first (newelt list &optional predicate)
+ "Inserted NEWELT into LIST sorted by PREDICATE.
+This is designed for the (site id id ...) lists. So the first car
+is intentionally skipped."
+ `(let ((tail ,list)
+ (x ,newelt))
+ (while (and ;; We're not at the end.
+ (cdr-safe tail)
+ ;; We're not at the right place.
+ (funcall (or #',predicate #'<) x (cadr tail)))
+ (setq tail (cdr tail)))
+ (setcdr tail (cons x (cdr tail)))))
+
(defun sx-question--mark-read (question)
"Mark QUESTION as being read until it is updated again.
Returns nil if question (in its current state) was already marked