*** pub/pgnus/lisp/gnus-art.el Sat Oct 24 20:35:25 1998 --- pgnus/lisp/gnus-art.el Sun Oct 25 06:24:38 1998 *************** *** 567,574 **** --- 567,591 ---- ("\264" "'")) "Table for MS-to-Latin1 translation.") + (defcustom gnus-ignored-mime-types '("text/x-vcard") + "List of MIME types that should be ignored by Gnus." + :group 'gnus-mime + :type '(repeat regexp)) + + (defcustom gnus-treat-body-highlight-signature t + "Highlight the signature." + :group 'gnus-article + :type '(choice (const :tag "Off" nil) + (const :tag "On" t) + (const :tag "Last" last) + (integer :tag "Less"))) + ;;; Internal variables + (defvar gnus-treatment-function-alist () + '((gnus-treat-body-highlight-signature gnus-article-highlight-signature nil) + )) + (defvar gnus-article-mime-handle-alist nil) (defvar article-lapsed-timer nil) (defvar gnus-article-current-summary nil) *************** *** 1192,1212 **** (while (re-search-forward "^[ \t]*\n" nil t) (replace-match "" t t))))) - (defvar mime::preview/content-list) - (defvar mime::preview-content-info/point-min) (defun gnus-article-narrow-to-signature () "Narrow to the signature; return t if a signature is found, else nil." (widen) (let ((inhibit-point-motion-hooks t)) - (when (and (boundp 'mime::preview/content-list) - mime::preview/content-list) - ;; We have a MIMEish article, so we use the MIME data to narrow. - (let ((pcinfo (car (last mime::preview/content-list)))) - (ignore-errors - (narrow-to-region - (funcall (intern "mime::preview-content-info/point-min") pcinfo) - (point-max))))) - (when (gnus-article-search-signature) (forward-line 1) ;; Check whether we have some limits to what we consider --- 1209,1218 ---- *************** *** 1312,1318 **** (text-property-any (1+ pos) (point-max) 'article-type type))) (if pos 'hidden ! 'shown))) (defun gnus-article-show-hidden-text (type &optional hide) "Show all hidden text of type TYPE. --- 1318,1324 ---- (text-property-any (1+ pos) (point-max) 'article-type type))) (if pos 'hidden ! nil))) (defun gnus-article-show-hidden-text (type &optional hide) "Show all hidden text of type TYPE. *************** *** 2269,2277 **** (mail-content-type-get (mm-handle-type handle) 'filename) "*decoded*"))))) - (set-buffer-major-mode buffer) (switch-to-buffer buffer) (insert contents) (goto-char (point-min)))) (defun gnus-mime-inline-part () --- 2275,2283 ---- (mail-content-type-get (mm-handle-type handle) 'filename) "*decoded*"))))) (switch-to-buffer buffer) (insert contents) + (normal-mode) (goto-char (point-min)))) (defun gnus-mime-inline-part () *************** *** 2342,2348 **** keymap ,gnus-mime-button-map gnus-callback gnus-mm-display-part gnus-part ,gnus-tmp-id ! gnus-type annotation gnus-data ,handle)) (setq e (point)) (widget-convert-button 'link b e :action 'gnus-widget-press-button --- 2348,2354 ---- keymap ,gnus-mime-button-map gnus-callback gnus-mm-display-part gnus-part ,gnus-tmp-id ! article-type annotation gnus-data ,handle)) (setq e (point)) (widget-convert-button 'link b e :action 'gnus-widget-press-button *************** *** 2382,2448 **** (gnus-mime-display-single handle))))) (defun gnus-mime-display-single (handle) ! (let (display) ! (when (and (mm-automatic-display-p ! (car (mm-handle-type handle))) ! (mm-inlinable-part-p (car (mm-handle-type handle))) ! (or (not (mm-handle-disposition handle)) ! (equal (car (mm-handle-disposition handle)) ! "inline"))) ! (setq display t)) ! (let ((id (1+ (length gnus-article-mime-handle-alist)))) ! (push (cons id handle) gnus-article-mime-handle-alist) ! (gnus-insert-mime-button handle id (list display))) ! (insert "\n\n") ! (when display ! (forward-line -2) ! (mm-display-part handle t) ! (goto-char (point-max))))) ! (defun gnus-mime-display-alternative (handles &optional preferred) (let* ((preferred (mm-preferred-alternative handles preferred)) (ihandles handles) (point (point)) ! handle buffer-read-only from) ! (goto-char (point-min)) ! (search-forward "\n\n" nil t) ! (delete-region (point) (point-max)) ! (when preferred ! ;; Top-level call; we clean up. ! (mm-remove-parts gnus-article-mime-handles) ! (setq gnus-article-mime-handles handles ! gnus-article-mime-handle-alist nil)) ! (while (setq handle (pop handles)) ! (gnus-add-text-properties ! (setq from (point)) ! (progn ! (insert (format "[%c] %-18s" ! (if (equal handle preferred) ?* ? ) ! (if (stringp (car handle)) ! (car handle) ! (car (mm-handle-type handle))))) ! (point)) ! `(local-map ,gnus-mime-button-map ! ,gnus-mouse-face-prop ,gnus-article-mouse-face ! face ,gnus-article-button-face ! keymap ,gnus-mime-button-map ! gnus-callback ! (lambda (handles) ! (gnus-mime-display-alternative ! ',ihandles ,(if (stringp (car handle)) ! (car handle) ! (car (mm-handle-type handle))))) ! gnus-data ,handle)) ! (widget-convert-button 'link from (point) ! :action 'gnus-widget-press-button ! :button-keymap gnus-widget-button-keymap) ! (insert " ")) ! (insert "\n\n") ! (when preferred ! (if (stringp (car preferred)) ! (gnus-display-mime preferred) ! (mm-display-part preferred))) ! (goto-char point))) (defun gnus-article-wash-status () "Return a string which display status of article washing." --- 2388,2471 ---- (gnus-mime-display-single handle))))) (defun gnus-mime-display-single (handle) ! (let ((type (car (mm-handle-type handle))) ! (ignored gnus-ignored-mime-types) ! display text) ! (catch 'ignored ! (progn ! (while ignored ! (when (string-match (pop ignored) type) ! (throw 'ignored nil))) ! (if (and (mm-automatic-display-p type) ! (mm-inlinable-part-p type) ! (or (not (mm-handle-disposition handle)) ! (equal (car (mm-handle-disposition handle)) ! "inline"))) ! (setq display t) ! (when (equal (car (split-string type "/")) ! "text") ! (setq text t))) ! (let ((id (1+ (length gnus-article-mime-handle-alist)))) ! (push (cons id handle) gnus-article-mime-handle-alist) ! (gnus-insert-mime-button handle id (list (or display text)))) ! (insert "\n\n") ! (cond ! (display ! (forward-line -2) ! (mm-display-part handle t) ! (goto-char (point-max))) ! (text ! (forward-line -2) ! (insert "\n") ! (mm-insert-inline handle (mm-get-part handle)) ! (goto-char (point-max)))))))) ! (defun gnus-mime-display-alternative (handles &optional preferred ibegend) (let* ((preferred (mm-preferred-alternative handles preferred)) (ihandles handles) (point (point)) ! handle buffer-read-only from props begend) ! (save-restriction ! (when ibegend ! (narrow-to-region (car ibegend) (cdr ibegend)) ! (delete-region (point-min) (point-max)) ! (mm-remove-parts handles)) ! (setq begend (list (point-marker))) ! (while (setq handle (pop handles)) ! (gnus-add-text-properties ! (setq from (point)) ! (progn ! (insert (format "[%c] %-18s" ! (if (equal handle preferred) ?* ? ) ! (if (stringp (car handle)) ! (car handle) ! (car (mm-handle-type handle))))) ! (point)) ! `(gnus-callback ! (lambda (handles) ! (gnus-mime-display-alternative ! ',ihandles ,(if (stringp (car handle)) ! (car handle) ! (car (mm-handle-type handle))) ! ',begend)) ! local-map ,gnus-mime-button-map ! ,gnus-mouse-face-prop ,gnus-article-mouse-face ! face ,gnus-article-button-face ! keymap ,gnus-mime-button-map ! gnus-data ,handle)) ! (widget-convert-button 'link from (point) ! :action 'gnus-widget-press-button ! :button-keymap gnus-widget-button-keymap) ! (insert " ")) ! (insert "\n\n") ! (when preferred ! (if (stringp (car preferred)) ! (gnus-display-mime preferred) ! (mm-display-part preferred) ! (goto-char (point-max)) ! (setcdr begend (point-marker))))) ! (when ibegend ! (goto-char point)))) (defun gnus-article-wash-status () "Return a string which display status of article washing." *************** *** 2456,2462 **** (signature (gnus-article-hidden-text-p 'signature)) (overstrike (gnus-article-hidden-text-p 'overstrike)) (emphasis (gnus-article-hidden-text-p 'emphasis))) ! (format "%c%c%c%c%c%c%c" (if cite ?c ? ) (if (or headers boring) ?h ? ) (if (or pgp pem) ?p ? ) --- 2479,2485 ---- (signature (gnus-article-hidden-text-p 'signature)) (overstrike (gnus-article-hidden-text-p 'overstrike)) (emphasis (gnus-article-hidden-text-p 'emphasis))) ! (format "%c%c%c%c%c%c" (if cite ?c ? ) (if (or headers boring) ?h ? ) (if (or pgp pem) ?p ? ) *************** *** 3510,3516 **** gnus-prev-page-line-format nil `(gnus-prev t local-map ,gnus-prev-page-map gnus-callback gnus-article-button-prev-page ! gnus-type annotation)))) (defvar gnus-next-page-map nil) (unless gnus-next-page-map --- 3533,3539 ---- gnus-prev-page-line-format nil `(gnus-prev t local-map ,gnus-prev-page-map gnus-callback gnus-article-button-prev-page ! article-type annotation)))) (defvar gnus-next-page-map nil) (unless gnus-next-page-map *************** *** 3541,3547 **** `(gnus-next t local-map ,gnus-next-page-map gnus-callback gnus-article-button-next-page ! gnus-type annotation)))) (defun gnus-article-button-next-page (arg) "Go to the next page." --- 3564,3570 ---- `(gnus-next t local-map ,gnus-next-page-map gnus-callback gnus-article-button-next-page ! article-type annotation)))) (defun gnus-article-button-next-page (arg) "Go to the next page." *************** *** 3558,3563 **** --- 3581,3624 ---- (select-window (get-buffer-window gnus-article-buffer t)) (gnus-article-prev-page) (select-window win))) + + (defvar gnus-decode-header-methods + '(mail-decode-encoded-word-region) + "List of methods used to decode headers + + This variable is a list of FUNCTION or (REGEXP . FUNCTION). If item is + FUNCTION, FUNCTION will be apply to all newsgroups. If item is a + (REGEXP . FUNCTION), FUNCTION will be only apply to thes newsgroups + whose names match REGEXP. + + For example: + ((\"chinese\" . gnus-decode-encoded-word-region-by-guess) + mail-decode-encoded-word-region + (\"chinese\" . rfc1843-decode-region)) + ") + + (defvar gnus-decode-header-methods-cache nil) + + (defun gnus-multi-decode-header (start end) + "Apply the functions from `gnus-encoded-word-methods' that match." + (unless (and gnus-decode-header-methods-cache + (eq gnus-newsgroup-name + (car gnus-decode-header-methods-cache))) + (setq gnus-decode-header-methods-cache (list gnus-newsgroup-name)) + (mapc '(lambda (x) + (if (symbolp x) + (nconc gnus-decode-header-methods-cache (list x)) + (if (and gnus-newsgroup-name + (string-match (car x) gnus-newsgroup-name)) + (nconc gnus-decode-header-methods-cache + (list (cdr x)))))) + gnus-decode-header-methods)) + (let ((xlist gnus-decode-header-methods-cache)) + (pop xlist) + (save-restriction + (narrow-to-region start end) + (while xlist + (funcall (pop xlist) (point-min) (point-max)))))) (gnus-ems-redefine) *** pub/pgnus/lisp/gnus-ems.el Tue Oct 20 00:27:05 1998 --- pgnus/lisp/gnus-ems.el Sun Oct 25 06:24:38 1998 *************** *** 74,80 **** (valstr (if (numberp val) (int-to-string val) val))) (if (> (length valstr) (, max-width)) ! (truncate-string valstr (, max-width)) valstr)))) (eval-and-compile --- 74,80 ---- (valstr (if (numberp val) (int-to-string val) val))) (if (> (length valstr) (, max-width)) ! (truncate-string-to-width valstr (, max-width)) valstr)))) (eval-and-compile *************** *** 100,113 **** (while funcs (unless (fboundp (car funcs)) (fset (car funcs) 'gnus-dummy-func)) ! (setq funcs (cdr funcs)))))) ! (unless (fboundp 'file-regular-p) ! (defun file-regular-p (file) ! (and (not (file-directory-p file)) ! (not (file-symlink-p file)) ! (file-exists-p file)))) ! (unless (fboundp 'face-list) ! (defun face-list (&rest args)))) (eval-and-compile (let ((case-fold-search t)) --- 100,106 ---- (while funcs (unless (fboundp (car funcs)) (fset (car funcs) 'gnus-dummy-func)) ! (setq funcs (cdr funcs))))))) (eval-and-compile (let ((case-fold-search t)) *************** *** 174,180 **** (format "%4d: %-20s" gnus-tmp-lines (if (> (length gnus-tmp-name) 20) ! (truncate-string gnus-tmp-name 20) gnus-tmp-name)) gnus-tmp-closing-bracket) (point)) --- 167,173 ---- (format "%4d: %-20s" gnus-tmp-lines (if (> (length gnus-tmp-name) 20) ! (truncate-string-to-width gnus-tmp-name 20) gnus-tmp-name)) gnus-tmp-closing-bracket) (point)) *** pub/pgnus/lisp/gnus-spec.el Sat Oct 24 07:45:03 1998 --- pgnus/lisp/gnus-spec.el Sun Oct 25 06:24:39 1998 *************** *** 201,209 **** (gnus-parse-format new-format (symbol-value ! (intern (format "gnus-%s-line-format-alist" ! (if (eq type 'article-mode) ! 'summary-mode type)))) (not (string-match "mode$" (symbol-name type)))))) ;; Enter the new format spec into the list. (if entry --- 201,207 ---- (gnus-parse-format new-format (symbol-value ! (intern (format "gnus-%s-line-format-alist" type))) (not (string-match "mode$" (symbol-name type)))))) ;; Enter the new format spec into the list. (if entry *************** *** 531,537 **** (not (eq 'byte-code (car form))) ;; Under XEmacs, it's (funcall #) (not (and (eq 'funcall (car form)) ! (compiled-function-p (cadr form))))) (fset 'gnus-tmp-func `(lambda () ,form)) (byte-compile 'gnus-tmp-func) (setcar (cddr entry) (gnus-byte-code 'gnus-tmp-func)))))) --- 529,535 ---- (not (eq 'byte-code (car form))) ;; Under XEmacs, it's (funcall #) (not (and (eq 'funcall (car form)) ! (byte-code-function-p (cadr form))))) (fset 'gnus-tmp-func `(lambda () ,form)) (byte-compile 'gnus-tmp-func) (setcar (cddr entry) (gnus-byte-code 'gnus-tmp-func)))))) *** pub/pgnus/lisp/gnus-start.el Sat Oct 24 07:45:04 1998 --- pgnus/lisp/gnus-start.el Sun Oct 25 06:24:39 1998 *************** *** 1705,1711 **** (gnus-message 5 "%sdone" mesg)))))) (setq methods (cdr methods)))))) - (defun gnus-ignored-newsgroups-has-to-p () "Non-nil iff gnus-ignored-newsgroups includes \"^to\\\\.\" as an element." ;; note this regexp is the same as: --- 1705,1710 ---- *** pub/pgnus/lisp/gnus-sum.el Sat Oct 24 20:35:26 1998 --- pgnus/lisp/gnus-sum.el Sun Oct 25 06:24:40 1998 *************** *** 1008,1029 **** ;; MIME stuff. ! (defvar gnus-encoded-word-method-alist ! '(("chinese" mail-decode-encoded-word-string rfc1843-decode-string) ! (".*" mail-decode-encoded-word-string)) ! "Alist of regexps (to match group names) and lists of functions to be applied.") (defun gnus-multi-decode-encoded-word-string (string) ! "Apply the functions from `gnus-encoded-word-method-alist' that match." ! (let ((alist gnus-encoded-word-method-alist) ! elem) ! (while (setq elem (pop alist)) ! (when (string-match (car elem) gnus-newsgroup-name) ! (pop elem) ! (while elem ! (setq string (funcall (pop elem) string))) ! (setq alist nil))) ! string)) ;; Subject simplification. --- 1008,1049 ---- ;; MIME stuff. ! (defvar gnus-decode-encoded-word-methods ! '(mail-decode-encoded-word-string) ! "List of methods used to decode encoded words. ! ! This variable is a list of FUNCTION or (REGEXP . FUNCTION). If item is ! FUNCTION, FUNCTION will be apply to all newsgroups. If item is a ! (REGEXP . FUNCTION), FUNCTION will be only apply to thes newsgroups ! whose names match REGEXP. ! ! For example: ! ((\"chinese\" . gnus-decode-encoded-word-string-by-guess) ! mail-decode-encoded-word-string ! (\"chinese\" . rfc1843-decode-string)) ! ") ! ! (defvar gnus-decode-encoded-word-methods-cache nil) (defun gnus-multi-decode-encoded-word-string (string) ! "Apply the functions from `gnus-encoded-word-methods' that match." ! (unless (and gnus-decode-encoded-word-methods-cache ! (eq gnus-newsgroup-name ! (car gnus-decode-encoded-word-methods-cache))) ! (setq gnus-decode-encoded-word-methods-cache (list gnus-newsgroup-name)) ! (mapc '(lambda (x) ! (if (symbolp x) ! (nconc gnus-decode-encoded-word-methods-cache (list x)) ! (if (and gnus-newsgroup-name ! (string-match (car x) gnus-newsgroup-name)) ! (nconc gnus-decode-encoded-word-methods-cache ! (list (cdr x)))))) ! gnus-decode-encoded-word-methods)) ! (let ((xlist gnus-decode-encoded-word-methods-cache)) ! (pop xlist) ! (while xlist ! (setq string (funcall (pop xlist) string)))) ! string) ;; Subject simplification. *************** *** 4285,4291 **** ;; We might have to chop a bit of the string off... (when (> (length mode-string) max-len) (setq mode-string ! (concat (truncate-string mode-string (- max-len 3)) "..."))) ;; Pad the mode string a bit. (setq mode-string (format (format "%%-%ds" max-len) mode-string)))) --- 4305,4311 ---- ;; We might have to chop a bit of the string off... (when (> (length mode-string) max-len) (setq mode-string ! (concat (truncate-string-to-width mode-string (- max-len 3)) "..."))) ;; Pad the mode string a bit. (setq mode-string (format (format "%%-%ds" max-len) mode-string)))) *************** *** 7866,7884 **** (let ((forward (cdr (assq type gnus-summary-mark-positions))) (buffer-read-only nil)) (re-search-backward "[\n\r]" (gnus-point-at-bol) 'move-to-limit) ! (when (looking-at "\r") ! (incf forward)) ! (when (and forward ! (<= (+ forward (point)) (point-max))) ! ;; Go to the right position on the line. ! (goto-char (+ forward (point))) ! ;; Replace the old mark with the new mark. ! (subst-char-in-region (point) (1+ (point)) (char-after) mark) ! ;; Optionally update the marks by some user rule. ! (when (eq type 'unread) ! (gnus-data-set-mark ! (gnus-data-find (gnus-summary-article-number)) mark) ! (gnus-summary-update-line (eq mark gnus-unread-mark)))))) (defun gnus-mark-article-as-read (article &optional mark) "Enter ARTICLE in the pertinent lists and remove it from others." --- 7886,7904 ---- (let ((forward (cdr (assq type gnus-summary-mark-positions))) (buffer-read-only nil)) (re-search-backward "[\n\r]" (gnus-point-at-bol) 'move-to-limit) ! (when forward ! (when (looking-at "\r") ! (incf forward)) ! (when (<= (+ forward (point)) (point-max)) ! ;; Go to the right position on the line. ! (goto-char (+ forward (point))) ! ;; Replace the old mark with the new mark. ! (subst-char-in-region (point) (1+ (point)) (char-after) mark) ! ;; Optionally update the marks by some user rule. ! (when (eq type 'unread) ! (gnus-data-set-mark ! (gnus-data-find (gnus-summary-article-number)) mark) ! (gnus-summary-update-line (eq mark gnus-unread-mark))))))) (defun gnus-mark-article-as-read (article &optional mark) "Enter ARTICLE in the pertinent lists and remove it from others." *************** *** 8682,8687 **** --- 8702,8708 ---- (defun gnus-valid-move-group-p (group) (and (boundp group) (symbol-name group) + (symbol-value group) (memq 'respool (assoc (symbol-name (car (gnus-find-method-for-group *** pub/pgnus/lisp/gnus-util.el Tue Oct 20 00:27:07 1998 --- pgnus/lisp/gnus-util.el Sun Oct 25 06:24:40 1998 *************** *** 647,653 **** (setq filename (expand-file-name filename)) (setq rmail-default-rmail-file filename) (let ((artbuf (current-buffer)) ! (tmpbuf (gnus-get-buffer-create " *Gnus-output*"))) (save-excursion (or (get-file-buffer filename) (file-exists-p filename) --- 647,653 ---- (setq filename (expand-file-name filename)) (setq rmail-default-rmail-file filename) (let ((artbuf (current-buffer)) ! (tmpbuf (get-buffer-create " *Gnus-output*"))) (save-excursion (or (get-file-buffer filename) (file-exists-p filename) *************** *** 698,704 **** "Append the current article to a mail file named FILENAME." (setq filename (expand-file-name filename)) (let ((artbuf (current-buffer)) ! (tmpbuf (gnus-get-buffer-create " *Gnus-output*"))) (save-excursion ;; Create the file, if it doesn't exist. (when (and (not (get-file-buffer filename)) --- 698,704 ---- "Append the current article to a mail file named FILENAME." (setq filename (expand-file-name filename)) (let ((artbuf (current-buffer)) ! (tmpbuf (get-buffer-create " *Gnus-output*"))) (save-excursion ;; Create the file, if it doesn't exist. (when (and (not (get-file-buffer filename)) *** pub/pgnus/lisp/gnus-xmas.el Sat Oct 24 07:45:05 1998 --- pgnus/lisp/gnus-xmas.el Sun Oct 25 06:24:40 1998 *************** *** 434,440 **** (defun gnus-byte-code (func) "Return a form that can be `eval'ed based on FUNC." (let ((fval (indirect-function func))) ! (if (compiled-function-p fval) (list 'funcall fval) (cons 'progn (cdr (cdr fval)))))) --- 434,440 ---- (defun gnus-byte-code (func) "Return a form that can be `eval'ed based on FUNC." (let ((fval (indirect-function func))) ! (if (byte-code-function-p fval) (list 'funcall fval) (cons 'progn (cdr (cdr fval)))))) *************** *** 805,811 **** (set-buffer (event-buffer event)) (goto-char (event-point event)) (funcall (event-function response) (event-object response)))) - (provide 'gnus-xmas) --- 805,810 ---- *** pub/pgnus/lisp/gnus.el Sat Oct 24 20:35:26 1998 --- pgnus/lisp/gnus.el Sun Oct 25 06:24:41 1998 *************** *** 245,256 **** :link '(custom-manual "(gnus)Various Various") :group 'gnus) (defgroup gnus-exit nil "Exiting gnus." :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) ! (defconst gnus-version-number "0.38" "Version number for this version of Gnus.") (defconst gnus-version (format "Pterodactyl Gnus v%s" gnus-version-number) --- 245,260 ---- :link '(custom-manual "(gnus)Various Various") :group 'gnus) + (defgroup gnus-mime nil + "Variables for controlling the Gnus MIME interface." + :group 'gnus) + (defgroup gnus-exit nil "Exiting gnus." :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) ! (defconst gnus-version-number "0.39" "Version number for this version of Gnus.") (defconst gnus-version (format "Pterodactyl Gnus v%s" gnus-version-number) *************** *** 1548,1554 **** '((gnus-group-mode "(gnus)The Group Buffer") (gnus-summary-mode "(gnus)The Summary Buffer") (gnus-article-mode "(gnus)The Article Buffer") - (mime/viewer-mode "(gnus)The Article Buffer") (gnus-server-mode "(gnus)The Server Buffer") (gnus-browse-mode "(gnus)Browse Foreign Server") (gnus-tree-mode "(gnus)Tree Display")) --- 1552,1557 ---- *************** *** 1643,1651 **** message-send-and-exit message-yank-original) ("nnmail" nnmail-split-fancy nnmail-article-group) ("nnvirtual" nnvirtual-catchup-group nnvirtual-convert-headers) ! ("rmailout" rmail-output) ("rmail" rmail-insert-rmail-file-header rmail-count-new-messages ! rmail-show-message rmail-output-to-rmail-file) ("gnus-audio" :interactive t gnus-audio-play) ("gnus-xmas" gnus-xmas-splash) ("gnus-soup" :interactive t --- 1646,1654 ---- message-send-and-exit message-yank-original) ("nnmail" nnmail-split-fancy nnmail-article-group) ("nnvirtual" nnvirtual-catchup-group nnvirtual-convert-headers) ! ("rmailout" rmail-output rmail-output-to-rmail-file) ("rmail" rmail-insert-rmail-file-header rmail-count-new-messages ! rmail-show-message) ("gnus-audio" :interactive t gnus-audio-play) ("gnus-xmas" gnus-xmas-splash) ("gnus-soup" :interactive t *************** *** 1713,1719 **** gnus-uu-decode-uu-and-save-view gnus-uu-decode-unshar-view gnus-uu-decode-unshar-and-save-view gnus-uu-decode-save-view gnus-uu-decode-binhex-view gnus-uu-unmark-thread ! gnus-uu-mark-over) ("gnus-uu" gnus-uu-delete-work-dir gnus-uu-unmark-thread) ("gnus-msg" (gnus-summary-send-map keymap) gnus-article-mail gnus-copy-article-buffer gnus-extended-version) --- 1716,1722 ---- gnus-uu-decode-uu-and-save-view gnus-uu-decode-unshar-view gnus-uu-decode-unshar-and-save-view gnus-uu-decode-save-view gnus-uu-decode-binhex-view gnus-uu-unmark-thread ! gnus-uu-mark-over gnus-uu-post-news) ("gnus-uu" gnus-uu-delete-work-dir gnus-uu-unmark-thread) ("gnus-msg" (gnus-summary-send-map keymap) gnus-article-mail gnus-copy-article-buffer gnus-extended-version) *** pub/pgnus/lisp/mailcap.el Sat Oct 24 07:45:05 1998 --- pgnus/lisp/mailcap.el Sun Oct 25 06:24:41 1998 *************** *** 442,448 **** (test (assq 'test info)) ; The test clause ) (setq status (and test (split-string (cdr test) " "))) ! (if (and (assoc "needsx11" info) (not (getenv "DISPLAY"))) (setq status nil) (cond ((and (equal (nth 0 status) "test") --- 442,450 ---- (test (assq 'test info)) ; The test clause ) (setq status (and test (split-string (cdr test) " "))) ! (if (and (or (assoc "needsterm" info) ! (assoc "needsx11" info)) ! (not (getenv "DISPLAY"))) (setq status nil) (cond ((and (equal (nth 0 status) "test") *** pub/pgnus/lisp/mm-bodies.el Sat Oct 24 07:45:06 1998 --- pgnus/lisp/mm-bodies.el Sun Oct 25 06:24:41 1998 *************** *** 121,127 **** (funcall encoding (point-min) (point-max)) (error nil))) (t ! (error "Can't decode encoding %s" encoding)))) (defun mm-decode-body (charset &optional encoding) "Decode the current article that has been encoded with ENCODING. --- 121,128 ---- (funcall encoding (point-min) (point-max)) (error nil))) (t ! (message "Unknown encoding %s; defaulting to 8bit" encoding) ! ))) (defun mm-decode-body (charset &optional encoding) "Decode the current article that has been encoded with ENCODING. *** pub/pgnus/lisp/mm-decode.el Sat Oct 24 07:45:06 1998 --- pgnus/lisp/mm-decode.el Sun Oct 25 06:24:41 1998 *************** *** 200,207 **** (when (or user-method method (not no-default)) ! (mm-display-external ! handle (or user-method method 'mailcap-save-binary-file)))))))) (defun mm-display-external (handle method) "Display HANDLE using METHOD." --- 200,212 ---- (when (or user-method method (not no-default)) ! (if (and (not user-method) ! (not method) ! (equal "text" (car (split-string type)))) ! (mm-insert-inline handle (mm-get-part handle)) ! (mm-display-external ! handle (or user-method method ! 'mailcap-save-binary-file))))))))) (defun mm-display-external (handle method) "Display HANDLE using METHOD." *************** *** 212,218 **** (if (functionp method) (let ((cur (current-buffer))) (if (eq method 'mailcap-save-binary-file) ! (set-buffer (generate-new-buffer "*mm*")) (let ((win (get-buffer-window cur t))) (when win (select-window win))) --- 217,225 ---- (if (functionp method) (let ((cur (current-buffer))) (if (eq method 'mailcap-save-binary-file) ! (progn ! (set-buffer (generate-new-buffer "*mm*")) ! (setq method nil)) (let ((win (get-buffer-window cur t))) (when win (select-window win))) *************** *** 223,229 **** (message "Viewing with %s" method) (let ((mm (current-buffer))) (unwind-protect ! (funcall method) (mm-handle-set-undisplayer handle mm)))) (let* ((dir (make-temp-name (expand-file-name "emm." mm-tmp-directory))) (filename (mail-content-type-get --- 230,238 ---- (message "Viewing with %s" method) (let ((mm (current-buffer))) (unwind-protect ! (if method ! (funcall method) ! (mm-save-part handle)) (mm-handle-set-undisplayer handle mm)))) (let* ((dir (make-temp-name (expand-file-name "emm." mm-tmp-directory))) (filename (mail-content-type-get *** pub/pgnus/lisp/mm-uu.el Sat Oct 24 20:35:27 1998 --- pgnus/lisp/mm-uu.el Sun Oct 25 06:24:41 1998 *************** *** 76,81 **** --- 76,82 ---- (save-restriction (mail-narrow-to-head) (goto-char (point-max))) + (forward-line) (let ((text-start (point)) start-char end-char type file-name end-line result) (while (re-search-forward mm-uu-begin-line nil t) *************** *** 94,99 **** --- 95,101 ---- (intern (concat "mm-uu-" (symbol-name type) "-end-line")))) (when (re-search-forward end-line nil t) + (forward-line) (setq end-char (point)) (when (or (not (eq type 'binhex)) (setq file-name *************** *** 138,144 **** result) (setq text-start end-char)))) (when result ! (if (> start-char text-start) (push (list (mm-uu-copy-to-buffer text-start (point-max)) '("text/plain") nil nil nil nil) --- 140,146 ---- result) (setq text-start end-char)))) (when result ! (if (> (point-max) (1+ text-start)) (push (list (mm-uu-copy-to-buffer text-start (point-max)) '("text/plain") nil nil nil nil) *** pub/pgnus/lisp/nnheader.el Sat Oct 24 20:35:27 1998 --- pgnus/lisp/nnheader.el Sun Oct 25 06:24:41 1998 *************** *** 269,275 **** (nnheader-header-value))) ;; Extra. ! (when gnus-extra-headers (let ((extra nnmail-extra-headers) out) (while extra --- 269,275 ---- (nnheader-header-value))) ;; Extra. ! (when nnmail-extra-headers (let ((extra nnmail-extra-headers) out) (while extra *** pub/pgnus/lisp/nnml.el Sun Oct 11 02:32:07 1998 --- pgnus/lisp/nnml.el Sun Oct 25 06:24:42 1998 *************** *** 225,230 **** --- 225,231 ---- t) (deffoo nnml-request-create-group (group &optional server args) + (nnml-possibly-change-directory nil server) (nnmail-activate 'nnml) (cond ((assoc group nnml-group-alist) *************** *** 574,588 **** (file-exists-p nnml-current-directory)))) (defun nnml-possibly-create-directory (group) ! (let (dir dirs) ! (setq dir (nnmail-group-pathname group nnml-directory)) ! (while (not (file-directory-p dir)) ! (push dir dirs) ! (setq dir (file-name-directory (directory-file-name dir)))) ! (while dirs ! (make-directory (directory-file-name (car dirs))) ! (nnheader-message 5 "Creating mail directory %s" (car dirs)) ! (setq dirs (cdr dirs))))) (defun nnml-save-mail (group-art) "Called narrowed to an article." --- 575,583 ---- (file-exists-p nnml-current-directory)))) (defun nnml-possibly-create-directory (group) ! (let ((dir (nnmail-group-pathname group nnml-directory))) ! (make-directory (directory-file-name dir) t) ! (nnheader-message 5 "Creating mail directory %s" dir))) (defun nnml-save-mail (group-art) "Called narrowed to an article." *** pub/pgnus/lisp/pop3.el Tue Oct 20 20:28:00 1998 --- pgnus/lisp/pop3.el Sun Oct 25 06:24:42 1998 *************** *** 1,10 **** ;;; pop3.el --- Post Office Protocol (RFC 1460) interface ! ;; Copyright (C) 1996,1997 Free Software Foundation, Inc. ;; Author: Richard L. Pieri ;; Keywords: mail, pop3 ! ;; Version: 1.3l ;; This file is part of GNU Emacs. --- 1,10 ---- ;;; pop3.el --- Post Office Protocol (RFC 1460) interface ! ;; Copyright (C) 1996,1997,1998 Free Software Foundation, Inc. ;; Author: Richard L. Pieri ;; Keywords: mail, pop3 ! ;; Version: 1.3m ;; This file is part of GNU Emacs. *************** *** 37,43 **** (require 'mail-utils) (provide 'pop3) ! (defconst pop3-version "1.3l") (defvar pop3-maildrop (or (user-login-name) (getenv "LOGNAME") (getenv "USER") nil) "*POP3 maildrop.") --- 37,43 ---- (require 'mail-utils) (provide 'pop3) ! (defconst pop3-version "1.3m") (defvar pop3-maildrop (or (user-login-name) (getenv "LOGNAME") (getenv "USER") nil) "*POP3 maildrop.") *************** *** 112,123 **** (let ((process-buffer (get-buffer-create (format "trace of POP session to %s" mailhost))) (process) ! (coding-system-for-read 'no-conversion) ! (coding-system-for-write 'no-conversion)) (save-excursion (set-buffer process-buffer) (erase-buffer) ! (setq pop3-read-point (point-min))) (setq process (open-network-stream "POP" process-buffer mailhost port)) (let ((response (pop3-read-response process t))) --- 112,125 ---- (let ((process-buffer (get-buffer-create (format "trace of POP session to %s" mailhost))) (process) ! (coding-system-for-read 'no-conversion) ;; because FSF Emacs 20 ! (coding-system-for-write 'no-conversion) ;; is st00pid ! ) (save-excursion (set-buffer process-buffer) (erase-buffer) ! (setq pop3-read-point (point-min)) ! ) (setq process (open-network-stream "POP" process-buffer mailhost port)) (let ((response (pop3-read-response process t))) *** pub/pgnus/lisp/ChangeLog Sat Oct 24 20:35:24 1998 --- pgnus/lisp/ChangeLog Sun Oct 25 06:24:38 1998 *************** *** 1,3 **** --- 1,89 ---- + Sun Oct 25 06:23:13 1998 Lars Magne Ingebrigtsen + + * gnus.el: Pterodactyl Gnus v0.39 is released. + + 1998-10-25 00:34:39 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-ignored-mime-types): New variable. + (gnus-mime-display-single): Use it. + (gnus-treatment-function-alist): New variable. + + * gnus.el (gnus-mime): New group. + + * gnus-art.el (gnus-mime-display-alternative): Don't destroy + things for other parts. + (gnus-mime-display-alternative): Place point. + + * gnus.el: autoload gnus-uu-post-news. + + * mailcap.el (mailcap-mailcap-entry-passes-test): Also check + needsterm/DISPLAY. + + * mm-decode.el (mm-display-part): Default to inline text/.* + parts. + + * mm-bodies.el (mm-decode-content-transfer-encoding): Default to + 8bit. + + * gnus-art.el (gnus-mime-copy-part): Use normal-mode. + (gnus-mime-display-single): Inline all text parts. + (gnus-article-narrow-to-signature): Removed mime:: stubs. + + 1998-10-24 21:38:37 Lars Magne Ingebrigtsen + + * nnml.el (nnml-possibly-create-directory): Rewrite. + (nnml-request-create-group): Change to right server. + + * gnus-xmas.el (gnus-xmas-define): Use byte-code-function-p. + + * gnus-sum.el (gnus-set-mode-line): Use truncate-string-to-width. + + * gnus.el: rmail-output-to-rmail-file autoload. + + * gnus-util.el (gnus-output-to-rmail): Didn't work if not in + Gnus. + + * nnheader.el (nnheader-parse-head): Checked wrong variable. + + * gnus-sum.el (gnus-summary-update-mark): Ignore nil'd marks. + + Tue Oct 20 23:37:43 1998 Shenghuo ZHU + + * gnus-art.el (gnus-mime-display-mixed): Multipart in + mixed part. + + Tue Oct 20 23:36:43 1998 Shenghuo ZHU + + * gnus-sum.el (gnus-summary-exit): Use mm-destroy-parts. + + * gnus-sum.el (gnus-summary-exit-no-update): Ditto. + + Tue Oct 20 16:22:51 1998 Shenghuo ZHU + + * mm-uu.el (mm-uu-dissect): Create pseudo multipart head. + + 1998-10-24 20:51:53 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-valid-move-group-p): Make sure group has a + value. + + * gnus-art.el (gnus-article-hidden-text-p): Return nil when not + hidden. + + * gnus-spec.el (gnus-update-format-specifications): Use the + article mode line spec. + + * gnus-art.el (gnus-insert-mime-button): Put right type. + (gnus-insert-prev-page-button): Ditto. + (gnus-insert-next-page-button): Dutti. + + * pop3.el: New version installed. + + Sat Oct 24 16:48:51 1998 Shenghuo ZHU + + * mm-uu.el (mm-uu-dissect): Delete the begining spurious newline + and display last part. + Sat Oct 24 20:31:55 1998 Lars Magne Ingebrigtsen * gnus.el: Pterodactyl Gnus v0.38 is released. *************** *** 59,79 **** (gnus-parse-format): understand the %< %> specifiers (gnus-parse-complex-format): ditto. - Tue Oct 20 23:37:43 1998 Shenghuo ZHU - - * gnus-art.el (gnus-mime-display-mixed): Multipart in - mixed part. - - Tue Oct 20 23:36:43 1998 Shenghuo ZHU - - * gnus-sum.el (gnus-summary-exit): Use mm-destroy-parts. - - * gnus-sum.el (gnus-summary-exit-no-update): Ditto. - - Tue Oct 20 16:22:51 1998 Shenghuo ZHU - - * mm-uu.el (mm-uu-dissect): Create pseudo multipart head. - 1998-10-24 06:31:33 Lars Magne Ingebrigtsen * gnus.el: Changed following-char to char-after throughout. --- 145,150 ---- *************** *** 153,158 **** --- 224,246 ---- * mm-decode.el (mm-display-external): Check before selecting. + Sat Sep 26 02:03:00 1998 Shenghuo ZHU + + * gnus-sum.el (gnus-multi-decode-encoded-word-string): Rewrite. + + * gnus-sum.el (gnus-decode-encoded-word-methods): New variable. + + * gnus-sum.el (gnus-decode-encoded-word-methods-cache): New + variable. + + * gnus-sum.el (gnus-encoded-word-method-alist): Deleted. + + * gnus-art.el (gnus-decode-header-methods): New variable. + + * gnus-art.el (gnus-decode-header-methods-cache): New variable. + + * gnus-art.el (gnus-multi-decode-header): New function. + Tue Oct 20 00:24:16 1998 Lars Magne Ingebrigtsen * gnus.el: Pterodactyl Gnus v0.35 is released. *** pub/pgnus/texi/gnus.texi Sat Oct 24 20:35:29 1998 --- pgnus/texi/gnus.texi Sun Oct 25 06:24:43 1998 *************** *** 1,7 **** \input texinfo @c -*-texinfo-*- @setfilename gnus ! @settitle Pterodactyl Gnus 0.38 Manual @synindex fn cp @synindex vr cp @synindex pg cp --- 1,7 ---- \input texinfo @c -*-texinfo-*- @setfilename gnus ! @settitle Pterodactyl Gnus 0.39 Manual @synindex fn cp @synindex vr cp @synindex pg cp *************** *** 318,324 **** @tex @titlepage ! @title Pterodactyl Gnus 0.38 Manual @author by Lars Magne Ingebrigtsen @page --- 318,324 ---- @tex @titlepage ! @title Pterodactyl Gnus 0.39 Manual @author by Lars Magne Ingebrigtsen @page *************** *** 354,360 **** spool or your mbox file. All at the same time, if you want to push your luck. ! This manual corresponds to Pterodactyl Gnus 0.38. @end ifinfo --- 354,360 ---- spool or your mbox file. All at the same time, if you want to push your luck. ! This manual corresponds to Pterodactyl Gnus 0.39. @end ifinfo *************** *** 6910,6915 **** --- 6910,6926 ---- @end table + Relevant variables: + + @table @code + @item gnus-ignored-mime-types + @vindex gnus-ignored-mime-types + This is a list of regexps. @sc{mime} types that match a regexp from + this list will be completely ignored by Gnus. The default value is + @code{("text/x-vcard")}. + + @end table + @node Article Commands @section Article Commands *************** *** 16144,16149 **** --- 16155,16164 ---- Erik Naggum---help, ideas, support, code and stuff. @item + Shenghuo Zhu---uudecode.el, mm-uu.el, rfc1843.el and many other things + connected with @sc{mime} and other types of en/decoding. + + @item Wes Hardaker---@file{gnus-picon.el} and the manual section on @dfn{picons} (@pxref{Picons}). *************** *** 16378,16387 **** Pete Ware, Barry A. Warsaw, Christoph Wedler, ! Joe Wells, ! Katsumi Yamaoka, @c Yamaoka and ! Shenghuo Zhu. @c Zhu For a full overview of what each person has done, the ChangeLogs included in the Gnus alpha distributions should give ample reading --- 16393,16401 ---- Pete Ware, Barry A. Warsaw, Christoph Wedler, ! Joe Wells and ! Katsumi Yamaoka, @c Yamaoka. For a full overview of what each person has done, the ChangeLogs included in the Gnus alpha distributions should give ample reading *************** *** 18271,18280 **** The jingle is only played on the second invocation of Gnus. @item - gnus-ignored-mime-types to avoid seeing buttons for Vcards and the - like. - - @item Bouncing articles should do MIME. @item --- 18285,18290 ---- *************** *** 19800,19811 **** These slots are, in order: @code{number}, @code{subject}, @code{from}, @code{date}, @code{id}, @code{references}, @code{chars}, @code{lines}, ! @code{xref}. There are macros for accessing and setting these ! slots---they all have predictable names beginning with @code{mail-header-} and @code{mail-header-set-}, respectively. ! The @code{xref} slot is really a @code{misc} slot. Any extra info will ! be put in there. @node Ranges --- 19810,19821 ---- These slots are, in order: @code{number}, @code{subject}, @code{from}, @code{date}, @code{id}, @code{references}, @code{chars}, @code{lines}, ! @code{xref}, and @code{extra}. There are macros for accessing and ! setting these slots---they all have predictable names beginning with @code{mail-header-} and @code{mail-header-set-}, respectively. ! All these slots contain strings, except the @code{extra} slot, which ! contains an alist of header/value pairs (@pxref{To From Newsgroups}). @node Ranges *** pub/pgnus/texi/message.texi Sat Oct 24 20:35:29 1998 --- pgnus/texi/message.texi Sun Oct 25 06:24:43 1998 *************** *** 1,7 **** \input texinfo @c -*-texinfo-*- @setfilename message ! @settitle Pterodactyl Message 0.38 Manual @synindex fn cp @synindex vr cp @synindex pg cp --- 1,7 ---- \input texinfo @c -*-texinfo-*- @setfilename message ! @settitle Pterodactyl Message 0.39 Manual @synindex fn cp @synindex vr cp @synindex pg cp *************** *** 42,48 **** @tex @titlepage ! @title Pterodactyl Message 0.38 Manual @author by Lars Magne Ingebrigtsen @page --- 42,48 ---- @tex @titlepage ! @title Pterodactyl Message 0.39 Manual @author by Lars Magne Ingebrigtsen @page *************** *** 83,89 **** * Key Index:: List of Message mode keys. @end menu ! This manual corresponds to Pterodactyl Message 0.38. Message is distributed with the Gnus distribution bearing the same version number as this manual. --- 83,89 ---- * Key Index:: List of Message mode keys. @end menu ! This manual corresponds to Pterodactyl Message 0.39. Message is distributed with the Gnus distribution bearing the same version number as this manual. *** pub/pgnus/texi/ChangeLog Sat Oct 24 20:35:29 1998 --- pgnus/texi/ChangeLog Sun Oct 25 06:24:44 1998 *************** *** 1,3 **** --- 1,7 ---- + 1998-10-25 01:51:56 Lars Magne Ingebrigtsen + + * gnus.texi (Headers): Addition. + 1998-10-24 08:37:12 Lars Magne Ingebrigtsen * gnus.texi (Summary Buffer Lines): Addition. *** pub/pgnus/GNUS-NEWS Sat Oct 24 20:35:29 1998 --- pgnus/GNUS-NEWS Sun Oct 25 06:24:44 1998 *************** *** 1,5 **** --- 1,7 ---- ** Gnus changes. + *** Gnus is now a MIME-capable reader. See the manual for details. + *** gnus-auto-select-first can now be a function to be called to position point.