+Fri Jun 21 16:36:03 1996 Christoph Wedler <wedler@fmi.uni-passau.de>
+
+ * gnus-picon.el (gnus-picons-insert-face-if-exists): Total change.
+ Didn't conform with the conventions for picon databases. Still a
+ bit (MISC must be searched for explicitly), but otherwise we would
+ always see the MISC/unknown face. Faster.
+ (gnus-article-display-picons): Use accordingly.
+ (gnus-group-display-picons): Use accordingly.
+ (gnus-picons-try-to-find-face): Optional argument for not using
+ `gnus-picons-glyph-alist'--otherwise we would always see the same
+ x-face.
+ (gnus-picons-display-x-face): Use it.
+ (gnus-picons-reverse-domain-path): Deletia.
+
+Fri Jun 21 15:14:33 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-vis.el (gnus-group-make-menu-bar): Fix the menu bar
+ slightly.
+
+ * gnus.el (gnus-thread-total-score-1): Didn't count right.
+
+ * message.el (message-bounce): Would not skip past all blank
+ lines.
+
+ * gnus.el (gnus-directory): Removed autoload.
+ (gnus-activate-group): Pass the `method' argument on.
+
+Fri Jun 21 09:41:53 1996 Hrvoje Niksic <hniksic@srce.hr>
+
+ * gnus-vis.el (gnus-button-alist): Exclude > from mailto button.
+
+Fri Jun 21 09:37:39 1996 Lars Magne Ingebrigtsen <lars@eyesore.no>
+
+ * gnus.el (gnus-article-mode-map): `end-of-bnuffer'. :-)
+
+Fri Jun 21 09:34:29 1996 Philippe Troin <ptroin@compass-da.com>
+
+ * gnus.el (gnus-thread-total-score-1): Don't count non-displayed
+ articles.
+
+Fri Jun 21 09:21:11 1996 Lars Magne Ingebrigtsen <lars@eyesore.no>
+
+ * nnheader.el (nnheader-translate-file-chars): Would give faulty
+ results on NTs.
+
+Fri Jun 21 09:08:48 1996 Philippe Troin <ptroin@compass-da.com>
+
+ * gnus-cite.el (gnus-article-hide-citation): Would sometimes bug
+ out.
+
+Fri Jun 21 09:01:51 1996 Lars Magne Ingebrigtsen <lars@eyesore.no>
+
+ * gnus-msg.el (gnus-copy-article-buffer): Would include text
+ properties on XEmacs.
+
+Thu Jun 20 18:38:07 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * message.el (message-mode): Took `C-n' expansion out.
+
Thu Jun 20 18:35:22 1996 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
* gnus.el: Gnus v5.2.23 is released.
(when marks
(setq end (caar marks)))
;; Skip past lines we want to leave visible.
- (when (and beg gnus-cited-lines-visible)
+ (when (and beg end gnus-cited-lines-visible)
(goto-char beg)
(forward-line gnus-cited-lines-visible)
- (if (> (point) end)
+ (if (>= (point) end)
(setq beg nil)
(setq beg (point-marker))))
(when (and beg end)
(or (memq gnus-article-copy gnus-buffer-list)
(setq gnus-buffer-list (cons gnus-article-copy gnus-buffer-list)))
(let ((article-buffer (or article-buffer gnus-article-buffer))
- end beg)
+ end beg contents)
(when (and (get-buffer article-buffer)
(buffer-name (get-buffer article-buffer)))
(save-excursion
(set-buffer article-buffer)
(save-restriction
(widen)
- (copy-to-buffer gnus-article-copy (point-min) (point-max))
+ (setq contents (format "%s" (buffer-string)))
(set-buffer gnus-original-article-buffer)
(goto-char (point-min))
(while (looking-at message-unix-mail-delimiter)
(setq beg (point))
(setq end (or (search-forward "\n\n" nil t) (point)))
(set-buffer gnus-article-copy)
- (gnus-set-text-properties (point-min) (point-max) nil)
+ (erase-buffer)
+ (insert contents)
(delete-region (goto-char (point-min))
(or (search-forward "\n\n" nil t) (point)))
(insert-buffer-substring gnus-original-article-buffer beg end)))
;; append the annotation to gnus-article-annotations for deletion.
(setq gnus-x-face-annotations
(append
- (gnus-picons-try-to-find-face gnus-picons-x-face-file-name)
+ (gnus-picons-try-to-find-face gnus-picons-x-face-file-name t)
gnus-x-face-annotations)))
;; delete the tmp file
(delete-file gnus-picons-x-face-file-name)))
(defun gnus-article-display-picons ()
"Display faces for an author and his/her domain in gnus-picons-display-where."
(interactive)
- (if (and (featurep 'xpm)
- (or (not (fboundp 'device-type)) (equal (device-type) 'x))
- (mail-fetch-field "from"))
+ (let (from at-idx databases)
+ (when (and (featurep 'xpm)
+ (or (not (fboundp 'device-type)) (equal (device-type) 'x))
+ (setq from (mail-fetch-field "from"))
+ (setq from (downcase (cadr (mail-extract-address-components
+ from)))
+ at-idx (string-match "@" from)))
(save-excursion
- (let* ((from (mail-fetch-field "from"))
- (username
- (progn
- (string-match "\\([^ \t]+\\)@" from)
- (match-string 1 from)))
- (hostpath
- (concat
- (gnus-picons-reverse-domain-path
- (replace-in-string
- (replace-in-string
- (cadr (mail-extract-address-components from))
- ".*@\\(.*\\)\\'" "\\1")
- "\\." "/")) "/")))
- (set-buffer (get-buffer-create
+ (let ((username (substring from 0 at-idx))
+ (addrs (nreverse
+ (message-tokenize-header (substring from (1+ at-idx))
+ "."))))
+ (set-buffer (get-buffer-create
(gnus-get-buffer-name gnus-picons-display-where)))
- (gnus-add-current-to-buffer-list)
+ (gnus-add-current-to-buffer-list)
(goto-char (point-min))
(if (and (eq gnus-picons-display-where 'article)
gnus-picons-display-article-move-p)
(unless (eolp)
(push (make-annotation "\n" (point) 'text)
gnus-article-annotations)))
-
- (gnus-picons-remove gnus-article-annotations)
- (setq gnus-article-annotations nil)
- (when username
- (when (equal username from)
- (setq username (progn
- (string-match "<\\([_a-zA-Z0-9-.]+\\)>" from)
- (match-string 1 from))))
- (mapcar (lambda (pathpart)
- (setq gnus-article-annotations
- (append
- (gnus-picons-insert-face-if-exists
- (concat
- (file-name-as-directory
- gnus-picons-database) pathpart)
- (concat hostpath (downcase username)))
- gnus-article-annotations)))
- gnus-picons-user-directories)
- (mapcar (lambda (pathpart)
- (setq gnus-article-annotations
- (append
- (gnus-picons-insert-face-if-exists
- (concat (file-name-as-directory
- gnus-picons-database) pathpart)
- (concat hostpath))
- gnus-article-annotations)))
- gnus-picons-domain-directories)
- (add-hook 'gnus-summary-exit-hook 'gnus-picons-remove-all))))))
+
+ (gnus-picons-remove gnus-article-annotations)
+ (setq gnus-article-annotations nil)
+
+ (setq databases (append gnus-picons-user-directories
+ gnus-picons-domain-directories))
+ (while databases
+ (setq gnus-article-annotations
+ (nconc (gnus-picons-insert-face-if-exists
+ (car databases)
+ addrs
+ "unknown")
+ (gnus-picons-insert-face-if-exists
+ (car databases)
+ addrs
+ (downcase username) t)
+ gnus-article-annotations))
+ (setq databases (cdr databases)))
+ (add-hook 'gnus-summary-exit-hook 'gnus-picons-remove-all))))))
(defun gnus-group-display-picons ()
"Display icons for the group in the gnus-picons-display-where buffer."
(setq gnus-group-annotations nil)))
(gnus-picons-remove gnus-group-annotations)
(setq gnus-group-annotations
- (gnus-picons-insert-face-if-exists
- (concat (file-name-as-directory gnus-picons-database)
- gnus-picons-news-directory)
- (replace-in-string gnus-newsgroup-name "\\." "/")))
+ (gnus-picons-insert-face-if-exists
+ gnus-picons-news-directory
+ (message-tokenize-header gnus-newsgroup-name ".")
+ "unknown"))
(add-hook 'gnus-summary-exit-hook 'gnus-picons-remove-all))))
(defsubst gnus-picons-try-suffixes (file)
(setq f nil))
f))
-(defun gnus-picons-insert-face-if-exists (path filename)
+(defun gnus-picons-insert-face-if-exists (database addrs filename &optional
+ nobar-p)
"Inserts a face at point if I can find one"
- (let ((bar (annotations-in-region
- (point) (min (point-max) (1+ (point)))
- (current-buffer)))
- (files (message-tokenize-header filename "/"))
+ ;; '(gnus-picons-insert-face-if-exists
+ ; "Database" '("edu" "indiana" "cs") "Name")
+ ;; looks for:
+ ;; 1. edu/indiana/cs/Name
+ ;; 2. edu/indiana/Name
+ ;; 3. edu/Name
+ ;; '(gnus-picons-insert-face-if-exists
+ ;; "Database/MISC" '("edu" "indiana" "cs") "Name")
+ ;; looks for:
+ ;; 1. MISC/Name
+ ;; The special treatment of MISC doesn't conform with the conventions for
+ ;; picon databases, but otherwise we would always see the MISC/unknown face.
+ (let ((bar (and (not nobar-p)
+ (annotations-in-region
+ (point) (min (point-max) (1+ (point)))
+ (current-buffer))))
+ (path (concat (file-name-as-directory gnus-picons-database)
+ database "/"))
picons found bar-ann)
- (while (and files
- (file-exists-p path))
- (setq path (concat path "/" (pop files)))
+ (if (string-match "/MISC" database)
+ (setq addrs '("")))
+ (while (and addrs
+ (file-accessible-directory-p path))
+ (setq path (concat path (pop addrs) "/"))
(when (setq found
- (or
- (gnus-picons-try-suffixes (concat path "/face."))
- (gnus-picons-try-suffixes (concat path "/unknown/face."))))
+ (gnus-picons-try-suffixes
+ (concat path filename "/face.")))
(when bar
(setq bar-ann (gnus-picons-try-to-find-face
- (concat gnus-xmas-glyph-directory "bar.xbm")))
+ (concat gnus-xmas-glyph-directory "bar.xbm")))
(when bar-ann
(setq picons (nconc picons bar-ann))
(setq bar nil)))
(defvar gnus-picons-glyph-alist nil)
-(defun gnus-picons-try-to-find-face (path)
+(defun gnus-picons-try-to-find-face (path &optional xface-p)
"If PATH exists, display it as a bitmap. Returns t if succedded."
- (let ((glyph (cdr (assoc path gnus-picons-glyph-alist))))
+ (let ((glyph (and (not xface-p)
+ (cdr (assoc path gnus-picons-glyph-alist)))))
(when (or glyph (file-exists-p path))
(unless glyph
- (push (cons path (setq glyph (make-glyph path)))
- gnus-picons-glyph-alist)
+ (setq glyph (make-glyph path))
+ (unless xface-p
+ (push (cons path glyph) gnus-picons-glyph-alist))
(set-glyph-face glyph 'default))
(nconc
(list (make-annotation glyph (point) 'text))
t gnus-button-message-id 3)
("\\(<?\\(url: ?\\)?news:\\([^>\n\t ]*\\)>?\\)" 1 t
gnus-button-message-id 3)
- ("\\(<URL: *\\)?mailto: *\\([^ \n\t]+\\)>?" 0 t gnus-button-reply 2)
+ ("\\(<URL: *\\)?mailto: *\\([^> \n\t]+\\)>?" 0 t gnus-button-reply 2)
;; This is how URLs _should_ be embedded in text...
("<URL: *\\([^\n\r>]*\\)>" 0 t gnus-button-url 1)
;; Next regexp stolen from highlight-headers.el.
gnus-group-group-menu gnus-group-mode-map ""
'("Groups"
("Listing"
- ["List subscribed groups" gnus-group-list-groups t]
- ["List all groups" gnus-group-list-all-groups t]
+ ["List unread subscribed groups" gnus-group-list-groups t]
+ ["List (un)subscribed groups" gnus-group-list-all-groups t]
["List killed groups" gnus-group-list-killed gnus-killed-list]
["List zombie groups" gnus-group-list-zombies gnus-zombie-list]
["List level..." gnus-group-list-level t]
(eval-when-compile (require 'cl))
-;;;###autoload
(defvar gnus-directory (or (getenv "SAVEDIR") "~/News/")
"*Directory variable from which all other Gnus file variables are derived.")
"gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)"
"The mail address of the Gnus maintainers.")
-(defconst gnus-version-number "5.2.23"
+(defconst gnus-version-number "5.2.24"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Gnus v%s" gnus-version-number)
(gnus-thread-total-score-1 (list thread)))))
(defun gnus-thread-total-score-1 (root)
- ;; This function find the total score of the thread below ROOT.
+ ;; This function finds the total score of the thread below ROOT.
(setq root (car root))
- (apply gnus-thread-score-function
- (or (cdr (assq (mail-header-number root) gnus-newsgroup-scored))
- gnus-summary-default-score 0)
- (mapcar 'gnus-thread-total-score
- (cdr (gnus-gethash (mail-header-id root)
- gnus-newsgroup-dependencies)))))
+ (let ((number (mail-header-number root)))
+ (if (and (not (memq number gnus-newsgroup-limit))
+ (not (memq number gnus-newsgroup-sparse)))
+ ;; This article shouldn't be counted.
+ (apply gnus-thread-score-function
+ (mapcar 'gnus-thread-total-score
+ (cdr (gnus-gethash (mail-header-id root)
+ gnus-newsgroup-dependencies))))
+ ;; This article should be counted.
+ (apply gnus-thread-score-function
+ (or (cdr (assq number gnus-newsgroup-scored))
+ gnus-summary-default-score 0)
+ (mapcar 'gnus-thread-total-score
+ (cdr (gnus-gethash (mail-header-id root)
+ gnus-newsgroup-dependencies)))))))
;; Added by Per Abrahamsen <amanda@iesd.auc.dk>.
(defvar gnus-tmp-prev-subject nil)
"\r" gnus-article-press-button
"\t" gnus-article-next-button
"\M-\t" gnus-article-prev-button
- "<" beginning-of-bnuffer
- ">" end-of-bnuffer
+ "<" beginning-of-buffer
+ ">" end-of-buffer
"\C-c\C-b" gnus-bug)
(substitute-key-definition
(while list
(gnus-sethash (car list) (pop list) gnus-killed-hashtb)))))
-(defun gnus-activate-group (group &optional scan dont-check &optional method)
+(defun gnus-activate-group (group &optional scan dont-check method)
;; Check whether a group has been activated or not.
;; If SCAN, request a scan of that group as well.
(let ((method (or method (gnus-find-method-for-group group)))
(gnus-request-scan group method))
t)
(condition-case ()
- (gnus-request-group group dont-check)
+ (gnus-request-group group dont-check method)
; (error nil)
(quit nil))
(save-excursion
"*Non-nil means that the message buffer will be killed after sending a message.")
(defvar gnus-local-organization)
-;;;###autoload
(defvar message-user-organization
(or (and (boundp 'gnus-local-organization)
gnus-local-organization)
(if (fboundp 'mail-abbrevs-setup)
(mail-abbrevs-setup)
(funcall (intern "mail-aliases-setup")))
- (define-key message-mode-map "\C-n" 'abbrev-hacking-next-line)
- (define-key message-mode-map "\M->" 'abbrev-hacking-end-of-buffer)
(run-hooks 'text-mode-hook 'message-mode-hook))
\f
;; We remove everything before the bounced mail.
(delete-region
(point-min)
- (if (re-search-forward "[^ \t]*:" nil t)
+ (if (re-search-forward "^[^ \n\t]+:" nil t)
(match-beginning 0)
(point)))
(save-restriction
file
;; We translate -- but only the file name. We leave the directory
;; alone.
- (let* ((new (if (string-match "/[^/]+\\'" file)
- ;; This is needed on NT's and stuff.
- (substring file (1+ (match-beginning 0)))
- ;; Fall back on this.
- (file-name-nondirectory file)))
- (len (length new))
- (i 0)
- trans)
+ (let* ((i 0)
+ trans leaf path len)
+ (if (string-match "/[^/]+\\'" file)
+ ;; This is needed on NT's and stuff.
+ (setq leaf (substring file (1+ (match-beginning 0)))
+ path (substring file 0 (1+ (match-beginning 0))))
+ ;; Fall back on this.
+ (setq leaf (file-name-nondirectory file)
+ path (file-name-directory file)))
+ (setq len (length leaf))
(while (< i len)
- (when (setq trans (cdr (assq (aref new i)
+ (when (setq trans (cdr (assq (aref leaf i)
nnheader-file-name-translation-alist)))
- (aset new i trans))
+ (aset leaf i trans))
(incf i))
- (concat (file-name-directory file) new))))
+ (concat path leaf))))
(defun nnheader-report (backend &rest args)
"Report an error from the BACKEND.