- (let ((first (car articles))
- (last (progn (while (cdr articles) (setq articles (cdr articles)))
- (car articles)))
- (nov (nnkiboze-nov-file-name)))
- (if (file-exists-p nov)
- (save-excursion
- (set-buffer nntp-server-buffer)
- (erase-buffer)
- (insert-file-contents nov)
- (goto-char (point-min))
- (while (and (not (eobp)) (< first (read (current-buffer))))
- (forward-line 1))
- (beginning-of-line)
- (if (not (eobp)) (delete-region 1 (point)))
- (while (and (not (eobp)) (>= last (read (current-buffer))))
- (forward-line 1))
- (beginning-of-line)
- (if (not (eobp)) (delete-region (point) (point-max)))
- 'nov))))))
-
-(defun nnkiboze-open-server (newsgroups &optional something)
- "Open a virtual newsgroup that contains NEWSGROUPS."
- (gnus-make-directory nnkiboze-directory)
- (nnheader-init-server-buffer))
-
-(defun nnkiboze-close-server (&rest dum)
- "Close news server."
- t)
-
-(defalias 'nnkiboze-request-quit (symbol-function 'nnkiboze-close-server))
-
-(defun nnkiboze-server-opened (&optional server)
- "Return server process status, T or NIL.
-If the stream is opened, return T, otherwise return NIL."
- (and nntp-server-buffer
- (get-buffer nntp-server-buffer)))
-
-(defun nnkiboze-status-message (&optional server)
- "Return server status response as string."
- nnkiboze-status-string)
-
-(defun nnkiboze-request-article (article &optional newsgroup server buffer)
- "Select article by message number."
- (nnkiboze-possibly-change-newsgroups newsgroup)
+ (let ((nov (nnkiboze-nov-file-name)))
+ (when (file-exists-p nov)
+ (save-excursion
+ (set-buffer nntp-server-buffer)
+ (erase-buffer)
+ (insert-file-contents nov)
+ (nnheader-nov-delete-outside-range
+ (car articles) (car (last articles)))
+ 'nov))))))
+
+(deffoo nnkiboze-request-article (article &optional newsgroup server buffer)
+ (nnkiboze-possibly-change-group newsgroup)