diff options
author | Artur Malabarba <bruce.connor.am@gmail.com> | 2015-04-20 20:53:16 +0100 |
---|---|---|
committer | Artur Malabarba <bruce.connor.am@gmail.com> | 2015-04-20 20:53:16 +0100 |
commit | 4e053fceed58d72c5670556ec0537610d52d6fa7 (patch) | |
tree | 3386c223e16a4dcda805da21d353b5eb030166f1 /sx-question.el | |
parent | 7ee1f7f1f28777d2d69a7ef589f6c7c6667835c3 (diff) |
Move sx-sorted-insert-skip-first
Diffstat (limited to 'sx-question.el')
-rw-r--r-- | sx-question.el | 13 |
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 |