changeset 100219:36b7680e6d87

File removed.
author Chong Yidong <cyd@stupidchicken.com>
date Thu, 04 Dec 2008 22:47:37 +0000
parents 3b2082142cd0
children 29cfa704a5e2
files lisp/mail/pmaildesc.el
diffstat 1 files changed, 0 insertions(+), 459 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/mail/pmaildesc.el	Thu Dec 04 22:47:07 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,459 +0,0 @@
-;;; pmaildesc.el --- Low level message descriptor library for Pmail.
-
-;; Copyright (C) 2002, 2003, 2004, 2006, 2006, 2007, 2008
-;;   Free Software Foundation, Inc.
-
-;; Maintainer: FSF
-;; Keywords: mail
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-;;; Commentary:
-
-;;; This package provides low level functions for tracking messages in Pmail.
-
-;;; Code:
-
-(require 'pmailhdr)
-
-;; External function declarations
-(declare-function pmail-narrow-to-header "pmail" (msg))
-
-(defvar pmail-desc-attributes nil
-  "A private variable providing temporary access to message attributes.")
-
-(defvar pmail-desc-delete-callback nil
-  "A function pointer called after a message has been deleted.
-It expects one argument --- the message number.")
-
-(defvar pmail-desc-vector nil
-  "A vector of message descriptors.
-A message descriptor contains data formatted as follows:
-
-	(START ATTRIBUTES KEYWORDS DATE LINE-COUNT SENDER SUBJECT)
-
-where
-
-	START is a marker at the beginning of the header
-
-	ATTRIBUTES is a string where each character encodes an
-	attribute.  A hyphen (-) indicates that the attribute is not
-	set:
-
-		ANSWERED  The message has been replied to (A).
-		DELETED	  The message has been marked for deletion (D).
-                EDITED    The message has been edited (E).
-		FILED     The message has been filed (F).
-		RESENT    The message has been resent (R).
-                STORED    The message has been saved to a file (S).
-		UNSEEN	  The message has not been read (-).
-
-	KEYWORDS is a list of User defined label strings.
-
-	DATE is a list of strings describing the message date:
-
-		DAY-OF-WEEK	Mon, Sun, etc.
-		DAY-NUMBER	9, 13, 15, etc.
-		MONTH		Feb, Jun, etc.
-		YEAR		2001, 2002, etc.
-		TIME		12:03:25, etc.
-
-        LINE-COUNT is the number of lines in the message.
-
-        SENDER is the name of the User sending the message.
-
-        SUBJECT is the subject header, cached to support fast summary line generation.
-")
-(put 'pmail-desc-vector 'permanent-local t)
-
-;;;; Constants supporting message vector processing.
-
-(defconst pmail-desc-default-attrs "------U"
-  "The default attributes for a new message.")
-
-;;; Message component indexes.
-
-(defconst pmail-desc-beg-index 0
-  "The message descriptor element index for the start of the message text.")
-
-(defconst pmail-desc-attrs-index 1
-  "The message descriptor element index for the attributes string.")
-
-(defconst pmail-desc-keywords-index 2
-  "The message descriptor element index for the User defined labels.")
-
-(defconst pmail-desc-date-index 3
-  "The message descriptor element index for the message date information.")
-
-(defconst pmail-desc-line-count-index 4
-  "The message descriptor element index for the message line count.")
-
-(defconst pmail-desc-sender-index 5
-  "The message descriptor element index for the message line count.")
-
-(defconst pmail-desc-subject-index 6
-  "The message descriptor element index for the message line count.")
-
-;;; Attribute indexes
-
-(defconst pmail-desc-answered-index 0
-  "The index for the `answered' attribute.")
-
-(defconst pmail-desc-deleted-index 1
-  "The index for the `deleted' attribute.")
-
-(defconst pmail-desc-edited-index 2
-  "The index for the `edited' attribute.")
-
-(defconst pmail-desc-filed-index 3
-  "The index for the `filed' attribute.")
-
-(defconst pmail-desc-resent-index 4
-  "The index for the `resent' attribute.")
-
-(defconst pmail-desc-stored-index 5
-  "The index for the `stored' attribute.")
-
-(defconst pmail-desc-unseen-index 6
-  "The index for the `unseen' attribute.")
-
-(defconst pmail-desc-attr-code-index 0
-  "The index for the attibute code.")
-
-(defconst pmail-desc-attr-keyword-index 1
-  "The index for the attribute keyword.")
-
-(defconst pmail-desc-attr-summary-offset-index 2
-  "The index for the attribute offset in a summary buffer.")
-
-(defconst pmail-desc-attr-alist
-  (list (cons pmail-desc-answered-index (list ?A "answered" 1))
-        (cons pmail-desc-deleted-index (list ?D "deleted" 0))
-	(cons pmail-desc-edited-index (list ?E "edited" 3))
-	(cons pmail-desc-filed-index (list ?F "filed" 2))
-	(cons pmail-desc-resent-index (list ?R "resent" nil))
-	(cons pmail-desc-stored-index (list ?S "stored" 4))
-	(cons pmail-desc-unseen-index (list ?  "unseen" 0)))
-  "An alist mapping an attribute to a keycode, keyword and summary offset.")
-
-(defconst pmail-desc-attr-index-map
-  (list (cons "answered" pmail-desc-answered-index)
-        (cons "deleted" pmail-desc-deleted-index)
-        (cons "edited" pmail-desc-edited-index)
-        (cons "filed" pmail-desc-filed-index)
-        (cons "resent" pmail-desc-resent-index)
-        (cons "stored" pmail-desc-stored-index)
-        (cons "unseen" pmail-desc-unseen-index)))
-
-;;; Date indexes
-
-(defconst pmail-desc-date-day-of-week-index 0
-  "The DAY-OF-WEEK index into the list of date information.")
-
-(defconst pmail-desc-date-day-number-index 1
-  "The DAY-NUMBER index into the list of date information.")
-
-(defconst pmail-desc-date-month-index 2
-  "The MONTH index into the list of date information.")
-
-(defconst pmail-desc-date-year-index 3
-  "The YEAR index into the list of date information.")
-
-(defconst pmail-desc-date-time-index 4
-  "The TIME index into the list of date information.")
-
-(defsubst pmail-desc-get-descriptor (n)
-  "Return a descriptor for message N.
-N is 1 based, i.e. the first message number is 1."
-  (aref pmail-desc-vector (1- n)))
-
-(defsubst pmail-desc-get-start (n)
-  "Return the position of the start of message N."
-  (marker-position
-   (nth pmail-desc-beg-index (pmail-desc-get-descriptor n))))
-
-(defun pmail-desc-get-end (n)
-  "Return the position of the end of message N."
-  (if (= n (length pmail-desc-vector))
-      (save-restriction
-	(widen)
-	(point-max))
-    (pmail-desc-get-start (1+ n))))
-
-(defun pmail-desc-add-descriptors (descriptor-list)
-  "Append DESCRIPTOR-LIST to the Pmail message descriptor vector."
-  (setq pmail-desc-vector
-	(vconcat pmail-desc-vector descriptor-list)))
-
-(defun pmail-desc-add-keyword (keyword n)
-  "Add KEYWORD to the list of keywords for message N.
-The current buffer must be narrowed to message N.  Both
-`pmail-desc-vector' and the message headers are updated."
-  (save-excursion
-    (save-restriction
-      (let ((keywords (pmail-desc-get-keywords n))
-            (display-state (pmail-desc-get-header-display-state n)))
-	(unless (member keyword keywords)
-	  (setq keywords (cons keyword keywords))
-	  (setcar (nthcdr pmail-desc-keywords-index (pmail-desc-get-descriptor n))
-		  keywords)
-	  (pmail-header-show-headers)
-	  (pmail-header-add-header pmail-header-keyword-header
-				   (mapconcat 'identity keywords ","))
-	  (pmail-header-toggle-visibility display-state))))))
-
-(defun pmail-desc-remove-keyword (keyword n)
-  "Remove KEYWORD from the list of keywords for message N.
-The current buffer must be narrowed to message N.  Both
-`pmail-desc-vector' and the message headers are updated."
-  (save-excursion
-    (save-restriction
-      (let ((keywords (pmail-desc-get-keywords n))
-            (display-state (pmail-desc-get-header-display-state n)))
-	(when (member keyword keywords)
-	  (setq keywords (delete keyword keywords))
-	  (setcar (nthcdr pmail-desc-keywords-index (pmail-desc-get-descriptor n))
-		  keywords)
-	  (pmail-header-show-headers)
-	  (pmail-header-add-header pmail-header-keyword-header
-				   (mapconcat 'identity keywords ","))
-	  (pmail-header-toggle-visibility display-state))))))
-
-(defun pmail-desc-attr-p (attr-index n)
-  "Return the state of the the attribute denoted by ATTR-INDEX in
-  message N."
-  (let ((attrs (nth pmail-desc-attrs-index
-                    (pmail-desc-get-descriptor n))))
-    (not (equal "-" (substring attrs attr-index (1+ attr-index))))))
-
-(defun pmail-desc-clear-descriptors ()
-  "Clear the Pmail message vector of all messages."
-  (setq pmail-desc-vector nil))
-
-(defun pmail-desc-deleted-p (n)
-  "Return non-nil if message N is marked for deletion."
-  (pmail-desc-attr-p pmail-desc-deleted-index n))
-(defalias 'pmail-message-deleted-p 'pmail-desc-deleted-p)
-
-(defun pmail-desc-delete-maybe (n)
-  "Determine if message N is marked for deletion.  If so then delete it.
-Return t if the message is deleted, nil if not."
-  (if (pmail-desc-deleted-p n)
-      (progn
-        (pmail-desc-delete n)
-        t)))
-
-(defun pmail-desc-delete (n)
-  "Remove message N from the Pmail buffer and from the descriptor vector."
-  (save-excursion
-    (save-restriction
-      ;; Enable the buffer to be written, ignore intangibility and do
-      ;; not record these changes in the undo list.
-      (let ((inhibit-read-only t)
-            (inhibit-point-motion-hooks t)
-            (buffer-undo-list t)
-            start end)
-        (widen)
-
-        ;; Remove the message from the buffer and neutralize the
-        ;; marker pointing to the start of the message.
-        (delete-region (pmail-desc-get-start n) (pmail-desc-get-end n))
-        (move-marker (nth pmail-desc-beg-index (pmail-desc-get-descriptor n)) nil)
-
-        ;; Remove the message descriptor from the Pmail message vector
-        ;; and execute the callback indicating the message has been
-        ;; deleted.
-        (aset pmail-desc-vector (1- n) t)
-        (funcall pmail-desc-delete-callback n)))))
-
-(defun pmail-desc-get-attr-code (attr-index n)
-  "Return the attribute code for ATTR-INDEX in message N.
-If the attribute is not set, return nil."
-  (if (pmail-desc-attr-p attr-index n)
-      (string (nth pmail-desc-attr-code-index
-                   (cdr (assoc attr-index pmail-desc-attr-alist))))))
-
-(defun pmail-desc-get-attr-index (attr)
-  "Return the attribute index associated with attribute ATTR, a string."
-  (cdr (assoc attr pmail-desc-attr-index-map)))
-
-(defun pmail-desc-get-attributes (n)
-  "Return the attribute vector for message N."
-  (nth pmail-desc-attrs-index (pmail-desc-get-descriptor n)))
-
-(defsubst pmail-desc-get-count ()
-  "Return the number of messages described in the Pmail descriptor vector."
-  (length pmail-desc-vector))
-
-(defun pmail-desc-get-date (n)
-  "Return the date list generated when the messages were read in."
-  (nth pmail-desc-date-index (pmail-desc-get-descriptor n)))
-
-(defun pmail-desc-get-day-number (n)
-  "Return the day number (1..31) from the date associated with message N."
-  (nth pmail-desc-date-day-number-index
-       (nth pmail-desc-date-index (pmail-desc-get-descriptor n))))
-
-(defun pmail-desc-get-day-of-week (n)
-  "Return the day of week (Sun .. Sat) from the date associated with message N."
-  (nth pmail-desc-date-day-of-week-index
-       (nth pmail-desc-date-index (pmail-desc-get-descriptor n))))
-
-(defun pmail-desc-get-header-display-state (n)
-  "Return t if ignorable headers are being displayed, nil otherwise."
-  (save-excursion
-    (save-restriction
-      (pmail-narrow-to-header n)
-      (null (overlays-in (point-min) (point-max))))))
-
-(defun pmail-desc-get-keyword (attr-index)
-  "Return the keyword string associated with ATTR-INDEX."
-  (nth pmail-desc-attr-keyword-index
-       (cdr (assoc attr-index pmail-desc-attr-alist))))
-
-(defun pmail-desc-get-keyword-list (n)
-  "Return the list of user-defined labels for message N."
-  (nth pmail-desc-keywords-index (pmail-desc-get-descriptor n)))
-
-(defun pmail-desc-get-keyword-maybe (attribute)
-  "Return the keyword associated with ATTRIBUTE if it is set, nil otherwise.
-ATTRIBUTE is a cons cell associating an attribute index with a keyword string."
-  (let ((index (car attribute)))
-    (if (not (equal "-" (substring pmail-desc-attributes index (1+ index))))
-	(nth pmail-desc-attr-keyword-index (cdr attribute)))))
-
-(defun pmail-desc-get-keywords (n)
-  "Return a list of keywords for message N.
-This includes the attributes."
-  (setq pmail-desc-attributes (pmail-desc-get-attributes n))
-  (append (delq nil (mapcar
-                     'pmail-desc-get-keyword-maybe
-                     pmail-desc-attr-alist))
-          (pmail-desc-get-keyword-list n)))
-
-(defun pmail-desc-get-line-count (n)
-  "Return the message body line count."
-  (nth pmail-desc-line-count-index (pmail-desc-get-descriptor n)))
-
-(defun pmail-desc-get-month (n)
-  "Return the month (Jan .. Dec) from the date associated with message N."
-  (nth pmail-desc-date-month-index
-       (nth pmail-desc-date-index (pmail-desc-get-descriptor n))))
-
-(defun pmail-desc-get-previous (n attr-index &optional sense)
-  "Return the message index for the previous matching descriptor.
-Starting with descriptor at index N locate the first previous
-descriptor such that the attribute ATTR is set.  SENSE, if
-non-null will reverse the sense of the attribute test."
-  (let ((index (1- n)) flag result)
-    (while (and (> index 0) (not result))
-      (if (listp (aref pmail-desc-vector (1- index)))
-	  (setq result (pmail-desc-get-match-index index attr-index sense)))
-      (setq index (1- index)))
-    (or result 0)))
-
-(defun pmail-desc-get-match-index (n attr-index sense)
-  "Return the index N if the associated descriptor has a matching
-attribute, nil otherwise.  The attribute value must be set if
-SENSE is nil, or unset if SENSE is non-nil."
-  (let ((flag (pmail-desc-attr-p attr-index n)))
-    (if (or (and flag (not sense)) (and (not flag) sense))
-	n
-      nil)))
-
-(defun pmail-desc-get-sender (n)
-  "Return the User registered as the mail sender."
-  (nth pmail-desc-sender-index (pmail-desc-get-descriptor n)))
-
-(defun pmail-desc-get-subject (n)
-  "Return the cached subject header."
-  (nth pmail-desc-subject-index (pmail-desc-get-descriptor n)))
-
-(defun pmail-desc-get-summary-offset (attr-index)
-  "Return the summary buffer offset associated with ATTR-INDEX.
-This is the relative position where the attribute code letter is
-displayed in the Pmail summary buffer."
-  (nth pmail-desc-attr-summary-offset-index
-       (cdr (assoc attr-index pmail-desc-attr-alist))))
-
-(defun pmail-desc-get-time (n)
-  "Return the time (hh:mm:ss) from the date associated with message N."
-  (nth pmail-desc-date-time-index
-       (nth pmail-desc-date-index (pmail-desc-get-descriptor n))))
-
-(defun pmail-desc-get-year (n)
-  "Return the year (1969 ... 2###) from the date associated with message N."
-  (nth pmail-desc-date-year-index
-       (nth pmail-desc-date-index (pmail-desc-get-descriptor n))))
-
-;; This is a strange thing to use.
-;; Why not write a simple loop instead?
-(defun pmail-desc-make-index-list ()
-  "Return a list of integers from 1 to the total number of messages."
-  (let ((result (make-vector (length pmail-desc-vector) nil))
-	(index 0))
-    (while (< index (length result))
-      (aset result index (1+ index))
-      (setq index (1+ index)))
-    (append result nil)))
-
-(defun pmail-desc-prune-deleted-messages (callback)
-  "Remove all messages marked for marked for deletion.
-Return the number of messages removed.  Invoke CALLBACK immediately
-after a message has been deleted.."
-
-  ;; Set the callback and remove all messages marked for deletion from
-  ;; the Pmail buffer and their descriptors from the Pmail message
-  ;; vector.
-  (setq pmail-desc-delete-callback callback)
-  (let ((result (length (delq t (mapcar 'pmail-desc-delete-maybe
-					(pmail-desc-make-index-list))))))
-    (setq pmail-desc-vector
-	  (vconcat (delq t (append pmail-desc-vector nil))))
-    result))
-
-(defun pmail-desc-set-attribute (n attr-index state)
-  "Set the attribute denoted by ATTR-INDEX in message N according to STATE.
-If STATE is non-nil the attribute will be set to the single character code
-associated with ATTR-INDEX in pmail-desc-attr-alist, otherwise the attribute is
-set to the hyphen character (-)."
-  (let ((attributes (nth pmail-desc-attrs-index (pmail-desc-get-descriptor n)))
-	code)
-    (setq code (if state
-		   (car (cdr (assoc attr-index pmail-desc-attr-alist)))
-		 ?-))
-    (aset attributes attr-index code)
-    (pmail-header-add-header pmail-header-attribute-header attributes)))
-
-(defun pmail-desc-set-start (n pos)
-  "Set the start position for message N to POS."
-  (set-marker (nth pmail-desc-beg-index (pmail-desc-get-descriptor n)) pos))
-
-(defun pmail-desc-showing-message-p (n)
-  "Return t if the current buffer is displaying message N, nil otherwise."
-  (let ((beg (pmail-desc-get-start n))
-        (end (pmail-desc-get-end n))
-        (curpos (point)))
-    (and (>= curpos beg) (< curpos end))))
-
-(provide 'pmaildesc)
-
-;; Local Variables:
-;; change-log-default-name: "ChangeLog.pmail"
-;; End:
-
-;; arch-tag: 9f70b890-ad54-414e-abb2-0845e3e4eb1a
-;;; pmaildesc.el ends here