From: Lars Magne Ingebrigtsen Date: Sat, 28 Feb 1998 07:18:05 +0000 (+0000) Subject: *** empty log message *** X-Git-Url: http://cgit.sxemacs.org/?p=gnus;a=commitdiff_plain;h=754a007c9c67f3506008dab6e7e8943eb51848f2 *** empty log message *** --- diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 000000000..5b6b5923e --- /dev/null +++ b/Makefile.in @@ -0,0 +1,55 @@ +srcdir = @srcdir@ + +@SET_MAKE@ +EMACS = emacs +XEMACS = xemacs + +all: lick info + +lick: + cd lisp && $(MAKE) EMACS=$(EMACS) all + +install: + cd lisp && $(MAKE) EMACS=$(EMACS) install + cd texi && $(MAKE) EMACS=$(EMACS) install + +# Rule for Lars and nobody else. +some: + cd lisp && $(MAKE) EMACS=$(EMACS) some +l: + cd lisp && $(MAKE) EMACS=$(EMACS) clever + +info: + cd texi && $(MAKE) EMACS=$(EMACS) all + +clean: + rm -f */*.orig */*.rej *.orig *.rej + +xsome: + cd lisp && $(MAKE) EMACS=$(XEMACS) some + +elclean: + rm lisp/*.elc + +x: + make EMACS=xemacs + +distclean: + make clean + rm -r *~ + for i in lisp texi; do (cd $$i; make distclean); done + rm -f config.log config.status Makefile + +osome: + make EMACS=emacs-19.34 some + +config.status: $(srcdir)/configure + $(SHELL) ./config.status --recheck +$(srcdir)/configure: $(srcdir)/configure.in + cd $(srcdir) && autoconf +Makefile: $(srcdir)/Makefile.in config.status + CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 000000000..b56880ab5 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,31 @@ +# serial 1 + +AC_DEFUN(AM_PATH_LISPDIR, + [# If set to t, that means we are running in a shell under Emacs. + # If you have an Emacs named "t", then use the full path. + test "$EMACS" = t && EMACS= + AC_PATH_PROG(EMACS, emacs xemacs, no) + if test $EMACS != "no"; then + AC_MSG_CHECKING([where .elc files should go]) + dnl Set default value + lispdir="\$(datadir)/emacs/site-lisp" + if test "x$prefix" = "xNONE"; then + if test -d $ac_default_prefix/share/emacs/site-lisp; then + lispdir="\$(prefix)/share/emacs/site-lisp" + else + if test -d $ac_default_prefix/lib/emacs/site-lisp; then + lispdir="\$(prefix)/lib/emacs/site-lisp" + fi + fi + else + if test -d $prefix/share/emacs/site-lisp; then + lispdir="\$(prefix)/share/emacs/site-lisp" + else + if test -d $prefix/lib/emacs/site-lisp; then + lispdir="\$(prefix)/lib/emacs/site-lisp" + fi + fi + fi + AC_MSG_RESULT($lispdir) + fi + AC_SUBST(lispdir)]) diff --git a/configure.in b/configure.in new file mode 100644 index 000000000..675635b35 --- /dev/null +++ b/configure.in @@ -0,0 +1,6 @@ +AC_INIT(lisp/gnus.el) +AC_SET_MAKE +AC_PROG_INSTALL +AM_PATH_LISPDIR +AC_PATH_PROG(MAKEINFO, makeinfo, no) +AC_OUTPUT(Makefile lisp/Makefile texi/Makefile) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index fe61cf733..d6e98a1d3 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,50 @@ +Sat Feb 28 08:17:37 1998 Lars Magne Ingebrigtsen + + * gnus.el: Quassia Gnus v0.33 is released. + +Sat Feb 28 08:10:27 1998 Lars Magne Ingebrigtsen + + * gnus-picon.el (gnus-picons-display-x-face): `buf' -- unbound + var. + +Sat Feb 28 08:03:23 1998 François Pinard + + * gnus: configure'd. + +Sat Feb 28 07:43:00 1998 Nelson Jose dos Santos Ferreira + + * nnsoup.el (nnsoup-store-reply): Fix double sep error. + +Sat Feb 28 07:01:17 1998 Lasse Rasinen + + * gnus-start.el (gnus-ask-server-for-new-groups): Message more. + +Fri Feb 27 13:26:34 1998 Lars Magne Ingebrigtsen + + * message.el (message-resend): Allow arbitrary Also's. + +1998-02-27 Dave Love + + * gnus-sum.el (gnus-simplify-subject-functions): Fix + customization, doc. + +1998-02-25 Dave Love + + * gnus-art.el (gnus-article-x-face-command): Replace leading `{'. + +Mon Feb 23 18:26:48 1998 Lars Magne Ingebrigtsen + + * gnus-agent.el (gnus-plugged): New command and keystroke. + + * gnus-ems.el (gnus-ems-redefine): Define + 'gnus-summary-set-display-table as a function that takes no + params. + + * gnus.el (gnus-interactive): Don't use gnus-sum macros. + (gnus-valid-select-methods): Include nnlistserv. + + * gnus.el: Autoloaded things to make byte-comp silent. + Mon Feb 23 18:06:47 1998 Lars Magne Ingebrigtsen * gnus.el: Quassia Gnus v0.32 is released. diff --git a/lisp/Makefile.in b/lisp/Makefile.in new file mode 100644 index 000000000..6045356b9 --- /dev/null +++ b/lisp/Makefile.in @@ -0,0 +1,64 @@ +datadir = @datadir@ +lispdir = @lispdir@ +prefix = @prefix@ +srcdir = @srcdir@ +subdir = lisp +top_srcdir = @top_srcdir@ + +EMACS = emacs +FLAGS = -batch -q -no-site-file -l ./dgnushack.el +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +SHELL = /bin/sh +VPATH = @srcdir@ + +total: + rm -f *.elc ; $(EMACS) $(FLAGS) -f dgnushack-compile + +all: + rm -f *.elc ; $(EMACS) $(FLAGS) -f dgnushack-compile + +clever: + $(EMACS) $(FLAGS) -f dgnushack-compile + +some: + $(EMACS) $(FLAGS) -f dgnushack-compile + +install: clever + $(SHELL) $(top_srcdir)/mkinstalldirs $(lispdir) + for p in *.elc; do \ + echo " $(INSTALL_DATA) $$p $(lispdir)/$$p"; \ + $(INSTALL_DATA) $$p $(lispdir)/$$p; \ + done + +tags: + etags *.el + +separately: + rm -f *.elc ; for i in *.el; do $(EMACS) $(FLAGS) -f batch-byte-compile $$i; done + +pot: + xpot -drgnus -r`cat ./version` *.el > rgnus.pot + +gnus-load.el: + echo ";;; gnus-load.el --- automatically extracted custom dependencies" > gnus-load.el + echo ";;" >> gnus-load.el + echo ";;; Code:" >> gnus-load.el + echo >> gnus-load.el + $(EMACS) $(FLAGS) -l ./dgnushack.el -l cus-edit.el *.el \ + -f custom-make-dependencies >> gnus-load.el + echo >> gnus-load.el + echo "(provide 'gnus-load)" >> gnus-load.el + echo >> gnus-load.el + echo ";;; gnus-load.el ends here" >> gnus-load.el + +distclean: + rm -f *.orig *.rej *.elc *~ Makefile + +Makefile: $(srcdir)/Makefile.in ../config.status + cd .. \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/lisp/gnus-agent.el b/lisp/gnus-agent.el index ed4cc72db..f8f353d16 100644 --- a/lisp/gnus-agent.el +++ b/lisp/gnus-agent.el @@ -260,6 +260,13 @@ (setq gnus-plugged nil) (gnus)) +;;;###autoload +(defun gnus-plugged () + "Start Gnus plugged." + (interactive) + (setq gnus-plugged t) + (gnus)) + ;;;###autoload (defun gnus-agentize () "Allow Gnus to be an offline newsreader. diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index c009a28ea..215423d6f 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -167,7 +167,7 @@ regexp. If it matches, the text in question is not a signature." :group 'gnus-article-hiding) (defcustom gnus-article-x-face-command - " echo '/* Width=48, Height=48 */'; uncompface; } | icontopbm | xv -quit -" + "{ echo '/* Width=48, Height=48 */'; uncompface; } | icontopbm | xv -quit -" "*String or function to be executed to display an X-Face header. If it is a string, the command will be executed in a sub-shell asynchronously. The compressed face will be piped to this command." diff --git a/lisp/gnus-demon.el b/lisp/gnus-demon.el index a5765fec4..f3968ea2d 100644 --- a/lisp/gnus-demon.el +++ b/lisp/gnus-demon.el @@ -31,6 +31,7 @@ (require 'gnus-int) (require 'nnheader) (require 'nntp) +(require 'nnmail) (eval-and-compile (if (string-match "XEmacs" (emacs-version)) (require 'itimer) diff --git a/lisp/gnus-ems.el b/lisp/gnus-ems.el index ec43267d0..d7e8fb823 100644 --- a/lisp/gnus-ems.el +++ b/lisp/gnus-ems.el @@ -179,7 +179,7 @@ "Display table used in summary mode buffers.") (fset 'gnus-cite-add-face 'gnus-mule-cite-add-face) (fset 'gnus-max-width-function 'gnus-mule-max-width-function) - (fset 'gnus-summary-set-display-table 'ignore) + (fset 'gnus-summary-set-display-table (lambda ())) (fset 'gnus-encode-coding-string 'encode-coding-string) (fset 'gnus-decode-coding-string 'decode-coding-string) diff --git a/lisp/gnus-picon.el b/lisp/gnus-picon.el index 40d15c1d5..7f0465083 100644 --- a/lisp/gnus-picon.el +++ b/lisp/gnus-picon.el @@ -90,7 +90,7 @@ Some people may want to add \"unknown\" to this list." :group 'picons) (defcustom gnus-picons-x-face-file-name - '(format "/tmp/picon-xface.%s.xbm" (user-login-name)) + (format "/tmp/picon-xface.%s.xbm" (user-login-name)) "*The name of the file in which to store the converted X-face header." :type 'string :group 'picons) @@ -159,13 +159,6 @@ List of pairs (KEY . GLYPH) where KEY is either a filename or an URL.") "Picons file names cache. List of pairs (KEY . NAME) where KEY is (USER HOST DBS) and NAME is an URL.") -(defvar gnus-group-annotations nil - "List of annotations added/removed when selecting/exiting a group") -(defvar gnus-article-annotations nil - "List of annotations added/removed when selecting an article") -(defvar gnus-x-face-annotations nil - "List of annotations added/removed when selecting an article with an X-Face.") - (defvar gnus-picons-jobs-alist nil "List of jobs that still need be done. This is a list of (SYM-ANN TAG ARGS...) where SYM-ANN three annotations list, @@ -178,28 +171,16 @@ arguments necessary for the job.") ;;; Functions: -(defun gnus-picons-remove (symbol) - "Remove all annotations in variable named SYMBOL. -This function is careful to set it to nil before removing anything so that -asynchronous process don't get crazy." - (setq gnus-picons-jobs-alist (remassq symbol gnus-picons-jobs-alist)) - ;; notify running job that it may have been preempted - (if (and (listp gnus-picons-job-already-running) - (eq (car gnus-picons-job-already-running) symbol)) - (setq gnus-picons-job-already-running t)) - ;; clear all annotations - (mapc (function (lambda (item) - (if (annotationp item) - (delete-annotation item)))) - (prog1 (symbol-value symbol) - (set symbol nil)))) - (defun gnus-picons-remove-all () "Removes all picons from the Gnus display(s)." (interactive) - (gnus-picons-remove 'gnus-article-annotations) - (gnus-picons-remove 'gnus-group-annotations) - (gnus-picons-remove 'gnus-x-face-annotations)) + (map-extents (function (lambda (ext unused) (delete-annotation ext) nil)) + nil nil nil nil nil 'gnus-picon) + (setq gnus-picons-jobs-alist '()) + ;; notify running job that it may have been preempted + (if (and (listp gnus-picons-job-already-running) + gnus-picons-job-already-running) + (setq gnus-picons-job-already-running t))) (defun gnus-get-buffer-name (variable) "Returns the buffer name associated with the contents of a variable." @@ -226,41 +207,33 @@ asynchronous process don't get crazy." (list (list (current-buffer) (cons nil gnus-picons-has-modeline-p))))))) -(defun gnus-picons-prepare-for-annotations (annotations) - "Prepare picons buffer for puting annotations memorized in ANNOTATIONS. -ANNOTATIONS should be a symbol naming a variable wich contains a list of -annotations. Sets buffer to `gnus-picons-display-where'." +(defun gnus-picons-prepare-for-annotations () + "Prepare picons buffer for putting annotations." ;; let drawing catch up (when gnus-picons-refresh-before-display (sit-for 0)) (gnus-picons-set-buffer) - (gnus-picons-remove annotations)) + (gnus-picons-remove-all)) -(defsubst gnus-picons-make-annotation (&rest args) +(defun gnus-picons-make-annotation (&rest args) (let ((annot (apply 'make-annotation args))) - (set-extent-property annot 'duplicable nil) + (set-extent-property annot 'gnus-picon t) + (set-extent-property annot 'duplicable t) annot)) (defun gnus-picons-article-display-x-face () "Display the x-face header bitmap in the 'gnus-picons-display-where buffer." - ;; delete any old ones. - ;; This is needed here because gnus-picons-display-x-face will not - ;; be called if there is no X-Face header - (gnus-picons-remove 'gnus-x-face-annotations) - ;; display the new one. (let ((gnus-article-x-face-command 'gnus-picons-display-x-face)) (gnus-article-display-x-face))) (defun gnus-picons-x-face-sentinel (process event) - (let* ((env (assq process gnus-picons-processes-alist)) - (annot (cdr env))) + (when (memq process gnus-picons-processes-alist) (setq gnus-picons-processes-alist - (remassq process gnus-picons-processes-alist)) - (when (annotationp annot) - (set-annotation-glyph annot - (make-glyph gnus-picons-x-face-file-name)) - (if (memq annot gnus-x-face-annotations) - (delete-file gnus-picons-x-face-file-name))))) + (delq process gnus-picons-processes-alist)) + (gnus-picons-set-buffer) + (gnus-picons-make-annotation (make-glyph gnus-picons-x-face-file-name) + nil 'text) + (delete-file gnus-picons-x-face-file-name))) (defun gnus-picons-display-x-face (beg end) "Function to display the x-face header in the picons window. @@ -268,26 +241,17 @@ To use: (setq gnus-article-x-face-command 'gnus-picons-display-x-face)" (interactive) (if (featurep 'xface) ;; Use builtin support - (let ((buf (current-buffer))) - (save-excursion - (gnus-picons-prepare-for-annotations 'gnus-x-face-annotations) - (setq gnus-x-face-annotations - (cons (gnus-picons-make-annotation - (vector 'xface - :data (concat "X-Face: " - (buffer-substring beg end buf))) - nil 'text) - gnus-x-face-annotations)))) + (save-excursion + (gnus-picons-set-buffer) + (gnus-picons-make-annotation + (vector 'xface + :data (concat "X-Face: " (buffer-substring beg end))) + nil 'text)) ;; convert the x-face header to a .xbm file (let* ((process-connection-type nil) - (annot (save-excursion - (gnus-picons-prepare-for-annotations - 'gnus-x-face-annotations) - (gnus-picons-make-annotation nil nil 'text))) (process (start-process-shell-command "gnus-x-face" nil gnus-picons-convert-x-face))) - (push annot gnus-x-face-annotations) - (push (cons process annot) gnus-picons-processes-alist) + (push process gnus-picons-processes-alist) (process-kill-without-query process) (set-process-sentinel process 'gnus-picons-x-face-sentinel) (process-send-region process beg end) @@ -312,37 +276,28 @@ To use: (setq gnus-article-x-face-command 'gnus-picons-display-x-face)" (message-tokenize-header gnus-local-domain ".")) (message-tokenize-header (substring from (1+ at-idx)) ".")))) - (gnus-picons-prepare-for-annotations 'gnus-article-annotations) - ;; if display in article buffer, the group annotations - ;; wrongly placed. Move them here - (if (eq gnus-picons-display-where 'article) - (dolist (ext gnus-group-annotations) - (when (extent-live-p ext) - (set-extent-endpoints ext (point) (point))))) + (gnus-picons-prepare-for-annotations) + (gnus-group-display-picons) (if (null gnus-picons-piconsearch-url) - (setq gnus-article-annotations - (nconc gnus-article-annotations - (gnus-picons-display-pairs - (gnus-picons-lookup-pairs - addrs gnus-picons-domain-directories) - gnus-picons-display-as-address - "." t) - (if (and gnus-picons-display-as-address addrs) - (list (gnus-picons-make-annotation - [string :data "@"] nil - 'text nil nil nil t))) - (gnus-picons-display-picon-or-name - (gnus-picons-lookup-user username addrs) - username t))) + (progn + (gnus-picons-display-pairs (gnus-picons-lookup-pairs + addrs + gnus-picons-domain-directories) + gnus-picons-display-as-address + "." t) + (if (and gnus-picons-display-as-address addrs) + (gnus-picons-make-annotation + [string :data "@"] nil 'text nil nil nil t)) + (gnus-picons-display-picon-or-name + (gnus-picons-lookup-user username addrs) + username t)) (push (list 'gnus-article-annotations 'search username addrs gnus-picons-domain-directories t) gnus-picons-jobs-alist) - (gnus-picons-next-job)) - - (add-hook 'gnus-summary-exit-hook 'gnus-picons-remove-all)))))) + (gnus-picons-next-job))))))) (defun gnus-group-display-picons () - "Display icons for the group in the gnus-picons-display-where buffer." + "Display icons for the group in the `gnus-picons-display-where' buffer." (interactive) (when (and (featurep 'xpm) (or (not (fboundp 'device-type)) (equal (device-type) 'x)) @@ -350,16 +305,15 @@ To use: (setq gnus-article-x-face-command 'gnus-picons-display-x-face)" (not (string-match gnus-picons-group-excluded-groups gnus-newsgroup-name)))) (save-excursion - (gnus-picons-prepare-for-annotations 'gnus-group-annotations) + (gnus-picons-prepare-for-annotations) (if (null gnus-picons-piconsearch-url) - (setq gnus-group-annotations - (gnus-picons-display-pairs + (gnus-picons-display-pairs (gnus-picons-lookup-pairs (reverse (message-tokenize-header (gnus-group-real-name gnus-newsgroup-name) ".")) gnus-picons-news-directories) - t ".")) + t ".") (push (list 'gnus-group-annotations 'search nil (message-tokenize-header (gnus-group-real-name gnus-newsgroup-name) ".") @@ -372,7 +326,7 @@ To use: (setq gnus-article-x-face-command 'gnus-picons-display-x-face)" (add-hook 'gnus-summary-exit-hook 'gnus-picons-remove-all)))) -(defsubst gnus-picons-lookup-internal (addrs dir) +(defun gnus-picons-lookup-internal (addrs dir) (setq dir (expand-file-name dir gnus-picons-database)) (gnus-picons-try-face (dolist (part (reverse addrs) dir) (setq dir (expand-file-name part dir))))) @@ -601,8 +555,7 @@ none, and whose CDR is the corresponding element of DOMAINS." (defun gnus-picons-network-display-internal (sym-ann glyph part right-p) (gnus-picons-set-buffer) - (set sym-ann (nconc (symbol-value sym-ann) - (gnus-picons-display-picon-or-name glyph part right-p))) + (gnus-picons-display-picon-or-name glyph part right-p) (gnus-picons-next-job-internal)) (defun gnus-picons-network-display-callback (url part sym-ann right-p) @@ -697,6 +650,7 @@ none, and whose CDR is the corresponding element of DOMAINS." (prog1 (gnus-picons-parse-filenames) (kill-buffer (current-buffer))))) +;; Initiate a query on the picon database (defun gnus-picons-network-search (user addrs dbs sym-ann right-p) (let* ((host (mapconcat 'identity addrs ".")) (key (list (or user "unknown") host (if user diff --git a/lisp/gnus-start.el b/lisp/gnus-start.el index 0159fb795..974936e58 100644 --- a/lisp/gnus-start.el +++ b/lisp/gnus-start.el @@ -1076,9 +1076,10 @@ for new groups." hashtb)) (when new-newsgroups (gnus-subscribe-hierarchical-interactive new-newsgroups))) - (when (> groups 0) - (gnus-message 6 "%d new newsgroup%s arrived." - groups (if (> groups 1) "s have" " has"))) + (if (> groups 0) + (gnus-message 5 "%d new newsgroup%s arrived" + groups (if (> groups 1) "s have" " has")) + (gnus-message 5 "No new newsgroups")) (when got-new (setq gnus-newsrc-last-checked-date new-date)) got-new)) diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index 439d81417..22c941d1d 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -122,9 +122,12 @@ comparing subjects." (defcustom gnus-simplify-subject-functions nil "List of functions taking a string argument that simplify subjects. -The functions are applied recursively." +The functions are applied recursively. + +Useful functions to put in this list include: `gnus-simplify-subject-re', +`gnus-simplify-subject-fuzzy' and `gnus-simplify-whitespace'." :group 'gnus-thread - :type '(repeat (list function))) + :type '(repeat function)) (defcustom gnus-simplify-ignored-prefixes nil "*Regexp, matches for which are removed from subject lines when simplifying fuzzily." diff --git a/lisp/gnus-util.el b/lisp/gnus-util.el index dbe42bc74..856b7a2e5 100644 --- a/lisp/gnus-util.el +++ b/lisp/gnus-util.el @@ -37,7 +37,10 @@ (require 'message) (eval-and-compile - (autoload 'nnmail-date-to-time "nnmail")) + (autoload 'nnmail-date-to-time "nnmail") + (autoload 'rmail-insert-rmail-file-header "rmail") + (autoload 'rmail-count-new-messages "rmail") + (autoload 'rmail-show-message "rmail")) (defun gnus-boundp (variable) "Return non-nil if VARIABLE is bound and non-nil." diff --git a/lisp/gnus.el b/lisp/gnus.el index 91ba20298..d84b28ea9 100644 --- a/lisp/gnus.el +++ b/lisp/gnus.el @@ -246,7 +246,7 @@ is restarted, and sometimes reloaded." :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) -(defconst gnus-version-number "0.32" +(defconst gnus-version-number "0.33" "Version number for this version of Gnus.") (defconst gnus-version (format "Quassia Gnus v%s" gnus-version-number) @@ -1127,6 +1127,7 @@ slower." ("nnfolder" mail respool address) ("nngateway" none address prompt-address physical-address) ("nnweb" none) + ("nnlistserv" none) ("nnagent" post-mail)) "*An alist of valid select methods. The first element of each list lists should be a string with the name @@ -1633,7 +1634,9 @@ gnus-newsrc-hashtb should be kept so that both hold the same information.") gnus-group-list-groups gnus-group-first-unread-group gnus-group-set-mode-line gnus-group-set-info gnus-group-save-newsrc gnus-group-setup-buffer gnus-group-get-new-news - gnus-group-make-help-group gnus-group-update-group) + gnus-group-make-help-group gnus-group-update-group + gnus-clear-inboxes-moved gnus-group-iterate + gnus-group-group-name) ("gnus-bcklg" gnus-backlog-request-article gnus-backlog-enter-article gnus-backlog-remove-article) ("gnus-art" gnus-article-read-summary-keys gnus-article-save @@ -2075,11 +2078,13 @@ g -- Group name." ((= c ?g) (gnus-group-group-name)) ((= c ?A) - (gnus-summary-article-number)) + (gnus-summary-skip-intangible) + (or (get-text-property (point) 'gnus-number) + (gnus-summary-last-subject))) ((= c ?H) - (gnus-summary-article-header)) + (gnus-data-header (gnus-data-find (gnus-summary-article-number)))) (t - (error "Not implemented spec"))) + (error "Non-implemented spec"))) out) (cond ((= c ?r) diff --git a/lisp/message.el b/lisp/message.el index 1cc964900..3269031e1 100644 --- a/lisp/message.el +++ b/lisp/message.el @@ -919,7 +919,10 @@ The cdr of ech entry is a function for applying the face to a region.") (autoload 'gnus-output-to-rmail "gnus-util") (autoload 'mail-abbrev-in-expansion-header-p "mailabbrev") (autoload 'nndraft-request-associate-buffer "nndraft") - (autoload 'nndraft-request-expire-articles "nndraft")) + (autoload 'nndraft-request-expire-articles "nndraft") + (autoload 'gnus-open-server "gnus-int") + (autoload 'gnus-request-post "gnus-int") + (autoload 'rmail-output "rmail")) @@ -3550,7 +3553,7 @@ Optional NEWS will use news to forward instead of mail." (goto-char (point-max))) (insert mail-header-separator) ;; Rename all old ("Also-")Resent headers. - (while (re-search-backward "^\\(Also-\\)?Resent-" beg t) + (while (re-search-backward "^\\(Also-\\)*Resent-" beg t) (beginning-of-line) (insert "Also-")) ;; Quote any "From " lines at the beginning. diff --git a/lisp/nndb.el b/lisp/nndb.el index 088b5c671..032d7c056 100644 --- a/lisp/nndb.el +++ b/lisp/nndb.el @@ -70,7 +70,8 @@ (autoload 'cancel-timer "timer") (autoload 'telnet "telnet" nil t) (autoload 'telnet-send-input "telnet" nil t) - (autoload 'timezone-parse-date "timezone")) + (autoload 'timezone-parse-date "timezone") + (autoload 'gnus-declare-backend "gnus-start")) ;; Declare nndb as derived from nntp diff --git a/lisp/nneething.el b/lisp/nneething.el index be3bcbd24..4584560c7 100644 --- a/lisp/nneething.el +++ b/lisp/nneething.el @@ -68,6 +68,8 @@ If this variable is nil, no files will be excluded.") +(autoload 'gnus-encode-coding-string "gnus-ems") + ;;; Interface functions. (nnoo-define-basics nneething) diff --git a/lisp/nnheader.el b/lisp/nnheader.el index c16bdefd9..575197372 100644 --- a/lisp/nnheader.el +++ b/lisp/nnheader.el @@ -59,7 +59,10 @@ on your system, you could say something like: (autoload 'mail-position-on-field "sendmail") (autoload 'message-remove-header "message") (autoload 'cancel-function-timers "timers") - (autoload 'gnus-point-at-eol "gnus-util")) + (autoload 'gnus-point-at-eol "gnus-util") + (autoload 'gnus-delete-line "gnus-util") + (autoload 'gnus-buffer-live-p "gnus-util") + (autoload 'gnus-encode-coding-string "gnus-ems")) ;;; Header access macros. diff --git a/lisp/nnlistserv.el b/lisp/nnlistserv.el index e74b6a2d1..684595c24 100644 --- a/lisp/nnlistserv.el +++ b/lisp/nnlistserv.el @@ -30,8 +30,6 @@ (eval-when-compile (require 'cl)) -(push '("nnlistserv" none) gnus-valid-select-methods) - (require 'nnoo) (require 'nnweb) diff --git a/lisp/nnmail.el b/lisp/nnmail.el index c12f099aa..5c0cd7080 100644 --- a/lisp/nnmail.el +++ b/lisp/nnmail.el @@ -33,7 +33,9 @@ (require 'custom) (eval-and-compile - (autoload 'gnus-error "gnus-util")) + (autoload 'gnus-error "gnus-util") + (autoload 'gnus-buffer-live-p "gnus-util") + (autoload 'gnus-encode-coding-string "gnus-ems")) (defgroup nnmail nil "Reading mail with Gnus." diff --git a/lisp/nnsoup.el b/lisp/nnsoup.el index 39db45f69..6eb1a02c5 100644 --- a/lisp/nnsoup.el +++ b/lisp/nnsoup.el @@ -666,6 +666,7 @@ backend for the messages.") (require 'mail-utils) (let ((tembuf (generate-new-buffer " message temp")) (case-fold-search nil) + (real-header-separator mail-header-separator) (mail-header-separator "") delimline (mailbuf (current-buffer))) @@ -692,7 +693,7 @@ backend for the messages.") ;; Change header-delimiter to be what sendmail expects. (goto-char (point-min)) (re-search-forward - (concat "^" (regexp-quote mail-header-separator) "\n")) + (concat "^" (regexp-quote real-header-separator) "\n")) (replace-match "\n") (backward-char 1) (setq delimline (point-marker)) diff --git a/lisp/nnvirtual.el b/lisp/nnvirtual.el index 556b318e2..41964dc44 100644 --- a/lisp/nnvirtual.el +++ b/lisp/nnvirtual.el @@ -38,6 +38,7 @@ (require 'gnus-util) (require 'gnus-start) (require 'gnus-sum) +(require 'gnus-msg) (require 'cl) (nnoo-declare nnvirtual) diff --git a/texi/Makefile.in b/texi/Makefile.in new file mode 100644 index 000000000..2fc3cec44 --- /dev/null +++ b/texi/Makefile.in @@ -0,0 +1,185 @@ +infodir = @infodir@ +prefix = @prefix@ +srcdir = @srcdir@ +subdir = texi +top_srcdir = @top_srcdir@ + +TEXI2DVI=texi2dvi +EMACS=emacs +MAKEINFO=@MAKEINFO@ +EMACSINFO=$(EMACS) -batch -q -no-site-file +INFOSWI=-l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer +XINFOSWI=-l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer +LATEX=latex +DVIPS=dvips +PERL=perl + +all: gnus message + +most: texi2latex.elc latex latexps + +.SUFFIXES: .texi .dvi .ps + +.texi: + if test $(MAKEINFO) = no; then \ + $(EMACSINFO) -eval '(find-file "$<")' $(XINFOSWI); \ + else \ + makeinfo -o $* $<; \ + fi + +dvi: gnus.dvi message.dvi + +.texi.dvi : + $(PERL) -n -e 'print unless (/\@iflatex/ .. /\@end iflatex/)' $< > gnustmp.texi + $(TEXI2DVI) gnustmp.texi + cp gnustmp.dvi $*.dvi + rm gnustmp.* + +refcard.dvi: refcard.tex gnuslogo.refcard gnusref.tex + $(LATEX) refcard.tex + +clean: + rm -f gnus.*.bak *.ky *.cp *.fn *.cps *.kys *.log *.aux *.dvi *.vr \ + *.tp *.toc *.pg gnus.latexi *.aux *.[cgk]idx \ + gnus.ilg gnus.ind gnus.[cgk]ind gnus.idx \ + gnus.tmptexi *.tmplatexi gnus.tmplatexi1 texput.log *.orig *.rej \ + gnus.latexi*~* tmp/*.ps xface.tex picons.tex smiley.tex *.latexi + +makeinfo: + makeinfo -o gnus gnus.texi + makeinfo -o message message.texi + +texi2latex.elc: texi2latex.el + $(EMACS) -batch -l bytecomp --eval '(byte-compile-file "texi2latex.el")' + +latex: gnus.texi texi2latex.elc + $(EMACS) -batch -q -no-site-file gnus.texi -l ./texi2latex.elc -f latexi-translate + +latexps: + make texi2latex.elc + rm -f gnus.aux + egrep -v "label.*Index|chapter.*Index" gnus.latexi > gnus.tmplatexi1 + $(LATEX) gnus.tmplatexi1 + ./splitindex + makeindex -o gnus.kind gnus.kidx + makeindex -o gnus.cind gnus.cidx + makeindex -o gnus.gind gnus.gidx + sed 's/\\char 5E\\relax {}/\\symbol{"5E}/' < gnus.kind > gnus.tmpkind + mv gnus.tmpkind gnus.kind + egrep -v "end{document}" gnus.tmplatexi1 > gnus.tmplatexi + cat postamble.tex >> gnus.tmplatexi + $(LATEX) gnus.tmplatexi + $(LATEX) gnus.tmplatexi + $(DVIPS) -f gnus.dvi > gnus.ps + +pss: + make latex + make latexps + +psout: + make latex + make latexboth + make out + +latexboth: + rm -f gnus-manual-a4.ps.gz gnus-manual-standard.ps.gz + make latexps + mv /local/tmp/larsi/gnus.ps /local/tmp/larsi/gnus-manual-a4.ps + gzip /local/tmp/larsi/gnus-manual-a4.ps + sed 's/,a4paper//' gnus.latexi > gnus-standard.latexi + mv gnus-standard.latexi gnus.latexi + make latexps + mv /local/tmp/larsi/gnus.ps /local/tmp/larsi/gnus-manual-standard.ps + gzip /local/tmp/larsi/gnus-manual-standard.ps + +out: + cp /local/tmp/larsi/gnus-manual-standard.ps.gz \ + /local/tmp/larsi/gnus-manual-a4.ps.gz \ + /local/ftp/pub/emacs/gnus/manual + mv /local/tmp/larsi/gnus-manual-standard.ps.gz \ + /local/tmp/larsi/gnus-manual-a4.ps.gz \ + /hom/larsi/www_docs/www.gnus.org/documents + +veryclean: + make clean + rm -f gnus.dvi gnus.ps + +distclean: + make clean + rm -f *.orig *.rej *.elc *~ gnus gnus-[0-9] gnus-[0-9][0-9] + rm -f message message-[0-9] + +install: + $(SHELL) $(top_srcdir)/mkinstalldirs $(infodir) + @for file in gnus message; do \ + for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \ + if test -f $$ifile; then \ + echo " $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile"; \ + $(INSTALL_DATA) $$ifile $(infodir)/$$ifile; \ + else : ; fi; \ + done; \ + done + +tmps: + if [ ! -e tmp ]; then mkdir tmp; fi + make screens + make herdss + make etcs + make piconss + make xfaces + make smiley + make miscs + +herdss: + cd herds ; for i in new-herd-[0-9]*.gif; do echo $$i; giftopnm $$i | pnmcrop -white | pnmmargin -white 9 | pnmscale 2 | pnmconvol convol5.pnm | ppmtopgm | pnmdepth 255 | pnmtops -width 100 -height 100 -noturn > ../tmp/`basename $$i .gif`.ps; done + cd herds ; giftopnm new-herd-section.gif | pnmscale 4 | pnmconvol convol11.pnm | ppmtopgm | pnmdepth 255 | pnmtops -noturn -width 100 -height 100 > ../tmp/new-herd-section.ps + + +screens: + cd screen ; for i in *.gif; do echo $$i; giftopnm $$i | pnmmargin -black 1 | ppmtopgm | pnmtops -width 100 -height 100 -noturn > ../tmp/`basename $$i .gif`.ps; done + +miscs: + giftopnm misc/larsi.gif | ppmtopgm | pnmtops -noturn > tmp/larsi.ps + tifftopnm misc/eseptember.tif | pnmscale 4 | ppmtopgm | pnmtops -noturn -width 100 -height 100 > tmp/september.ps + tifftopnm misc/fseptember.tif | pnmscale 2 | ppmtopgm | pnmtops -noturn -width 100 -height 100 > tmp/fseptember.ps + tifftopnm misc/fred.tif | pnmscale 2 | ppmtopgm | pnmtops -noturn -width 100 -height 100 > tmp/fred.ps + tifftopnm misc/ered.tif | pnmscale 2 | ppmtopgm | pnmtops -noturn -width 100 -height 100 > tmp/red.ps + +etcs: + cd etc; for i in gnus-*.xpm; do echo $$i; xpmtoppm $$i | ppmtopgm | pnmdepth 255 | pnmtops -noturn > ../tmp/`basename $$i .xpm`.ps; done + +piconss: + cd picons; for i in *.xbm; do echo $$i; xbmtopbm $$i | pnmtops -noturn > ../tmp/picons-`basename $$i .xbm`.ps; done + cd picons; for i in *.gif; do echo $$i; giftopnm $$i | ppmtopgm | pnmtops -noturn > ../tmp/picons-`basename $$i .gif`.ps; done + for i in tmp/picons-*.ps; do echo "\\gnuspicon{$$i}"; done > picons.tex + +xfaces: + cd xface; for i in *.gif; do echo $$i; giftopnm $$i | ppmtopgm | pnmtops -noturn > ../tmp/xface-`basename $$i .gif`.ps; done + for i in tmp/xface-*.ps; do \ + if [ -n "$$a" ]; then a=""; echo "{$$i}"; else \ + a="h"; echo -n "\\gnusxface{$$i}"; fi done > xface.tex; \ + if [ -n "$$a" ]; then echo "{$$i}" >> xface.tex; fi + +smiley: + cd smilies; tifftopnm BigFace.tif | ppmtopgm | pnmtops > ../tmp/BigFace.ps + cd smilies; for i in *.xpm; do echo $$i; sed "s/none/#FFFFFF/" $$i | xpmtoppm | ppmtopgm | pnmdepth 255 | pnmtops > ../tmp/smiley-`basename $$i .xpm`.ps; done + for i in tmp/smiley-*.ps; do \ + if [ -n "$$a" ]; then a=""; echo "{$$i}"; else \ + a="h"; echo -n "\\gnussmiley{$$i}"; fi done > smiley.tex; \ + if [ -n "$$a" ]; then echo "{$$i}" >> smiley.tex; fi + +pspackage: + tar czvf pspackage.tar.gz gnus-faq.texi gnus.texi herds misc pagestyle.sty picons pixidx.sty postamble.tex ps screen smilies splitindex texi2latex.el xface Makefile README etc + +complete: + make texi2latex.elc + make tmps + make pss + +Makefile: $(srcdir)/Makefile.in ../config.status + cd .. \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/texi/gnus.texi b/texi/gnus.texi index ee0fbb743..f464893f2 100644 --- a/texi/gnus.texi +++ b/texi/gnus.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename gnus -@settitle Quassia Gnus 0.32 Manual +@settitle Quassia Gnus 0.33 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -316,7 +316,7 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Quassia Gnus 0.32 Manual +@title Quassia Gnus 0.33 Manual @author by Lars Magne Ingebrigtsen @page @@ -352,7 +352,7 @@ can be gotten by any nefarious means you can think of---@sc{nntp}, local spool or your mbox file. All at the same time, if you want to push your luck. -This manual corresponds to Quassia Gnus 0.32. +This manual corresponds to Quassia Gnus 0.33. @end ifinfo @@ -12297,7 +12297,7 @@ ignored when handling global score files. @item read-only Read-only score files will not be updated or saved. Global score files should feature this atom (@pxref{Global Score Files}). (Note: -@dfn{Global} here really means @dfn{global}; not just your personal +@dfn{Global} here really means @dfn{global}; not your personal apply-to-all-groups score files.) @item orphan @@ -17298,6 +17298,10 @@ Allow breaking lengthy NNTP commands. @item gnus-article-highlight-limit, to disable highlighting in big articles. +@item +Editing an article should put the article to be edited +in a special, unique buffer. + @item Solve the halting problem. diff --git a/texi/message.texi b/texi/message.texi index 08eb899cf..75949c24a 100644 --- a/texi/message.texi +++ b/texi/message.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @setfilename message -@settitle Message 0.32 Manual +@settitle Message 0.33 Manual @synindex fn cp @synindex vr cp @synindex pg cp @@ -42,7 +42,7 @@ into another language, under the above conditions for modified versions. @tex @titlepage -@title Message 0.32 Manual +@title Message 0.33 Manual @author by Lars Magne Ingebrigtsen @page @@ -83,7 +83,7 @@ Message mode buffers. * Key Index:: List of Message mode keys. @end menu -This manual corresponds to Message 0.32. Message is distributed with +This manual corresponds to Message 0.33. Message is distributed with the Gnus distribution bearing the same version number as this manual has.