;;; nnml.el --- mail spool access for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1995-2012 Free Software
+;; Foundation, Inc.
;; Authors: Didier Verna <didier@xemacs.org> (adding compaction)
;; Simon Josefsson <simon@josefsson.org> (adding MARKS)
(nnheader-article-to-file-alist
(setq gpath (nnml-group-pathname (car group-num)
nil server))))))
- (setq path (concat gpath (int-to-string (cdr group-num)))))
+ (nnml-update-file-alist)
+ (setq path (concat gpath (if nnml-use-compressed-files
+ (cdr (assq (cdr group-num)
+ nnml-article-file-alist))
+ (number-to-string (cdr group-num))))))
(setq path (nnml-article-to-file id)))
(cond
((not path)
(nnml-possibly-change-directory group server)
(unless nnml-marks-is-evil
(nnml-open-marks group server)
- (dolist (action actions)
- (let ((range (nth 0 action))
- (what (nth 1 action))
- (marks (nth 2 action)))
- (assert (or (eq what 'add) (eq what 'del) (eq what 'set)) nil
- "Unknown request-set-mark action: %s" what)
- (dolist (mark marks)
- (setq nnml-marks
- (gnus-update-alist-soft
- mark
- (cond
- ((eq what 'add)
- (gnus-range-add (cdr (assoc mark nnml-marks)) range)
- ((eq what 'del)
- (gnus-remove-from-range (cdr (assoc mark nnml-marks)) range))
- ((eq what 'set)
- range)))
- nnml-marks)))))
+ (setq nnml-marks (nnheader-update-marks-actions nnml-marks actions))
(nnml-save-marks group server))
nil)
;; #### already belongs to a range, whereas the corresponding
;; #### article doesn't exist (for example, if you delete an
;; #### article). For that reason, it is important to update
- ;; #### the ranges (meaning remove inexistent articles) before
+ ;; #### the ranges (meaning remove nonexistent articles) before
;; #### doing anything on them.
;; 2 a/ read articles:
(let ((read (gnus-info-read info)))
(nnml-save-nov)
;; b/ Save the active file:
(nnmail-save-active nnml-group-alist nnml-active-file)
+ (let ((marks (nnml-group-pathname group nnml-marks-file-name server)))
+ (when (file-exists-p marks)
+ (delete-file marks)))
t)))))
(defun nnml-request-compact (&optional server)