+2001-09-17 Keiichi Suzuki <keiichi@nanap.org>
+
+ * lisp/gnus-bbdb.el (gnus-bbdb/insert-address-regexp):
+ `regexp-quote' for each addresses.
+
2001-09-16 Katsuhiro Hermit Endo <hermit@koka-in.org>
* gnus-ja.texi (Drafts): Fix typo.
+2001-09-15 Simon Josefsson <jas@extundo.com>
+
+ * gnus-group.el (gnus-group-line-format): Document %c.
+
+ * nnml.el (nnml-parse-head): Handle CRLF files.
+ (nnml-generate-nov-file): Ditto.
+ (nnml-retrieve-headers): Ditto.
+
+2001-09-15 Michael Welsh Duggan <md5i@cs.cmu.edu>
+
+ * gnus-spec.el (gnus-parse-format): Don't treat %c as %C.
+
+2001-09-13 Martin Kretzschmar <Martin.Kretzschmar@inf.tu-dresden.de>
+
+ * gnus-spec.el (gnus-correct-substring): Still stopped one
+ character before we wanted (never included last character).
+ (gnus-tilde-max-form, gnus-tilde-cut-form) Made readable again,
+ add missing "," (once per function)
+
+2001-09-14 Simon Josefsson <jas@extundo.com>
+
+ * gnus-start.el (gnus-group-mode-hook): Moved from gnus-group
+ (otherwise e.g. gnus-agentize in .gnus overrides the customized
+ default before gnus-group is loaded and the variable set.)
+
+ * nnimap.el (nnimap-request-set-mark): Do not store bookmark,
+ killed or unsent marks.
+
+ * gnus-draft.el (gnus-draft-setup): Don't set mark when there
+ isn't an article to set it on (e.g. when you `a' in a group).
+
2001-09-12 Pavel Jan\e,Bm\e(Bk <Pavel@Janik.cz>
* mm-util.el (mm-charset-synonym-alist): add windows-1250 so we
(unless (eq (point) (point-min))
(insert "\\|"))
(let ((addr (nth 1 address)))
- (insert (std11-addr-to-string
- (if (eq (car addr) 'phrase-route-addr)
- (nth 2 addr)
- (cdr addr))))))))
+ (insert (regexp-quote (std11-addr-to-string
+ (if (eq (car addr) 'phrase-route-addr)
+ (nth 2 addr)
+ (cdr addr)))))))))
(defun gnus-bbdb/split-mail-1 (address-regexp bbdb-field regexp group)
(let ((records (bbdb-search (bbdb-records) nil nil address-regexp))
(setq message-post-method
`(lambda (arg)
(gnus-post-method arg ,(car ga))))
- (message-add-action
- `(gnus-add-mark ,(car ga) 'replied ,(cadr ga))
- 'send))))
+ (unless (equal (cadr ga) "")
+ (message-add-action
+ `(gnus-add-mark ,(car ga) 'replied ,(cadr ga))
+ 'send)))))
(defvar gnus-draft-send-draft-buffer " *send draft*")
(defun gnus-draft-setup-for-sending (narticle group)
%y Number of unread, unticked articles (integer)
%G Group name (string)
%g Qualified group name (string)
+%c Short (collapsed) group name. See `gnus-group-uncollapsed-levels'.
%D Group description (string)
%s Select method (string)
%o Moderated group (char, \"m\")
:group 'gnus-group-visual
:type 'string)
-(defcustom gnus-group-mode-hook nil
- "Hook for Gnus group mode."
- :group 'gnus-group-various
- :options '(gnus-topic-mode)
- :type 'hook)
-
;; Extracted from gnus-xmas-redefine in order to preserve user settings
(when (featurep 'xemacs)
(add-hook 'gnus-group-mode-hook 'gnus-xmas-group-menu-add)
(defun gnus-correct-substring (string start &optional end)
(let ((wstart 0)
(wend 0)
+ (wseek 0)
(seek 0)
- (length (length string)))
+ (length (length string))
+ (string (concat string "\0")))
;; Find the start position.
(while (and (< seek length)
- (< wstart start))
- (incf wstart (gnus-char-width (aref string seek)))
+ (< wseek start))
+ (incf wseek (gnus-char-width (aref string seek)))
(incf seek))
- (setq wend wstart
- wstart seek)
+ (setq wstart seek)
;; Find the end position.
- (while (and (< seek length)
+ (while (and (<= seek length)
(or (not end)
- (<= wend end)))
- (incf wend (gnus-char-width (aref string seek)))
+ (<= wseek end)))
+ (incf wseek (gnus-char-width (aref string seek)))
(incf seek))
(setq wend seek)
(substring string wstart (1- wend))))
(defun gnus-tilde-max-form (el max-width)
"Return a form that limits EL to MAX-WIDTH."
- (let ((max (abs max-width)))
- (if (symbolp el)
- `(if (> (,(if gnus-use-correct-string-widths
+ (let ((max (abs max-width))
+ (length-fun (if gnus-use-correct-string-widths
'gnus-correct-length
- 'length) ,el)
- ,max)
- ,(if (< max-width 0)
- `(,(if gnus-use-correct-string-widths
- 'gnus-correct-substring
- 'substring)
- ,el (- (,(if gnus-use-correct-string-widths
- 'gnus-correct-length
- 'length)
- el) ,max))
- `(,(if gnus-use-correct-string-widths
+ 'length))
+ (substring-fun (if gnus-use-correct-string-widths
'gnus-correct-substring
- 'substring)
- ,el 0 ,max))
+ 'substring)))
+ (if (symbolp el)
+ `(if (> (,length-fun ,el) ,max)
+ ,(if (< max-width 0)
+ `(,substring-fun ,el (- (,length-fun ,el) ,max))
+ `(,substring-fun ,el 0 ,max))
,el)
`(let ((val (eval ,el)))
- (if (> (,(if gnus-use-correct-string-widths
- 'gnus-correct-length
- 'length) val) ,max)
+ (if (> (,length-fun val) ,max)
,(if (< max-width 0)
- `(,(if gnus-use-correct-string-widths
- 'gnus-correct-substring
- 'substring)
- val (- (,(if gnus-use-correct-string-widths
- 'gnus-correct-length
- 'length) val) ,max))
- `(,(if gnus-use-correct-string-widths
- 'gnus-correct-substring
- 'substring)
- val 0 ,max))
+ `(,substring-fun val (- (,length-fun val) ,max))
+ `(,substring-fun val 0 ,max))
val)))))
(defun gnus-tilde-cut-form (el cut-width)
"Return a form that cuts CUT-WIDTH off of EL."
- (let ((cut (abs cut-width)))
- (if (symbolp el)
- `(if (> (,(if gnus-use-correct-string-widths
+ (let ((cut (abs cut-width))
+ (length-fun (if gnus-use-correct-string-widths
'gnus-correct-length
- 'length) ,el) ,cut)
- ,(if (< cut-width 0)
- `(,(if gnus-use-correct-string-widths
- 'gnus-correct-substring
- 'substring) ,el 0
- (- (,(if gnus-use-correct-string-widths
- 'gnus-correct-length
- 'length) el) ,cut))
- `(,(if gnus-use-correct-string-widths
+ 'length))
+ (substring-fun (if gnus-use-correct-string-widths
'gnus-correct-substring
- 'substring) ,el ,cut))
+ 'substring)))
+ (if (symbolp el)
+ `(if (> (,length-fun ,el) ,cut)
+ ,(if (< cut-width 0)
+ `(,substring-fun ,el 0 (- (,length-fun ,el) ,cut))
+ `(,substring-fun ,el ,cut))
,el)
`(let ((val (eval ,el)))
- (if (> (,(if gnus-use-correct-string-widths
- 'gnus-correct-length
- 'length) val) ,cut)
+ (if (> (,length-fun val) ,cut)
,(if (< cut-width 0)
- `(,(if gnus-use-correct-string-widths
- 'gnus-correct-substring
- 'substring) val 0
- (- (,(if gnus-use-correct-string-widths
- 'gnus-correct-length
- 'length) val) ,cut))
- `(,(if gnus-use-correct-string-widths
- 'gnus-correct-substring
- 'substring) val ,cut))
+ `(,substring-fun val 0 (- (,length-fun val) ,cut))
+ `(,substring-fun val ,cut))
val)))))
(defun gnus-tilde-ignore-form (el ignore-value)
;; the text between them will have the mouse-face text property.
;; If the FORMAT string contains the specifiers %[ and %], the text between
;; them will have the balloon-help text property.
- (if (string-match
+ (let ((case-fold-search nil))
+ (if (string-match
"\\`\\(.*\\)%[0-9]?[{(«]\\(.*\\)%[0-9]?[»})]\\(.*\n?\\)\\'"
format)
(gnus-parse-complex-format format spec-alist)
- ;; This is a simple format.
- (gnus-parse-simple-format format spec-alist insert)))
+ ;; This is a simple format.
+ (gnus-parse-simple-format format spec-alist insert))))
(defun gnus-parse-complex-format (format spec-alist)
(save-excursion
:group 'gnus-newsrc
:type 'hook)
+(defcustom gnus-group-mode-hook nil
+ "Hook for Gnus group mode."
+ :group 'gnus-group-various
+ :options '(gnus-topic-mode)
+ :type 'hook)
+
(defcustom gnus-always-read-dribble-file nil
"Unconditionally read the dribble file."
:group 'gnus-newsrc
(what (nth 1 action))
(cmdmarks (nth 2 action))
marks)
+ ;; bookmark can't be stored (not list/range
+ (setq cmdmarks (delq 'bookmark cmdmarks))
+ ;; killed can't be stored (not list/range
+ (setq cmdmarks (delq 'killed cmdmarks))
+ ;; unsent are for nndraft groups only
+ (setq cmdmarks (delq 'unsent cmdmarks))
;; cache flags are pointless on the server
(setq cmdmarks (delq 'cache cmdmarks))
;; seen flags are local to each gnus
(setq beg (point))
(nnheader-insert-head file)
(goto-char beg)
- (if (search-forward "\n\n" nil t)
+ (if (re-search-forward "\n\r?\n" nil t)
(forward-char -1)
(goto-char (point-max))
(insert "\n\n"))
(unless (zerop (buffer-size))
(narrow-to-region
(goto-char (point-min))
- (if (search-forward "\n\n" nil t) (1- (point)) (point-max))))
+ (if (re-search-forward "\n\r?\n" nil t) (1- (point)) (point-max))))
;; Fold continuation lines.
(goto-char (point-min))
(while (re-search-forward "\\(\r?\n[ \t]+\\)+" nil t)
(replace-match " " t t))
;; Remove any tabs; they are too confusing.
(subst-char-in-region (point-min) (point-max) ?\t ? )
+ ;; Remove any ^M's; they are too confusing.
+ (subst-char-in-region (point-min) (point-max) ?\r ? )
(let ((headers (nnheader-parse-head t)))
(mail-header-set-chars headers chars)
(mail-header-set-number headers number)
(narrow-to-region
(goto-char (point-min))
(progn
- (search-forward "\n\n" nil t)
+ (re-search-forward "\n\r?\n" nil t)
(setq chars (- (point-max) (point)))
(max 1 (1- (point)))))
(unless (zerop (buffer-size))
(if (null (gnus-gethash file nnml-marks-modtime))
t ;; never looked at marks file, assume it has changed
(not (eq (gnus-gethash file nnml-marks-modtime)
- (nth 5 (file-attributes file)))))))
+ (nth 5 (file-attributes file)))))))
(defun nnml-save-marks (group server)
(let ((file-name-coding-system nnmail-pathname-coding-system)
+2001-09-14 Simon Josefsson <jas@extundo.com>
+
+ * gnus.texi (Mail Folders): Add.
+
2001-09-11 Simon Josefsson <jas@extundo.com>
* gnus.texi (Delayed Articles): Fix. Suggested by Paul Jarc
@vindex nnfolder-nov-file-suffix
@sc{nov} \e$B%U%!%$%k$N3HD%;R$G$9!#%G%#%U%)%k%H$O\e(B @file{.nov} \e$B$G$9!#\e(B
+@item nnfolder-nov-directory
+@vindex nnfolder-nov-directory
+@sc{nov} \e$B%U%!%$%k$,3JG<$5$l$k%G%#%l%/%H%j$G$9!#\e(Bnil \e$B$@$C$?\e(B
+\e$B$i\e(B @code{nnfolder-directory} \e$B$,;H$o$l$^$9!#\e(B
+
@item nnfolder-marks-is-evil
@vindex nnfolder-marks-is-evil
\e$BHs\e(B@code{nil} \e$B$G$"$k$H!"$3$N%P%C%/%(%s%I$O$$$+$J$k\e(B @sc{\e$B0u\e(B} \e$B%U%!%$%k$r$b\e(B
@item nnfolder-marks-file-suffix
@vindex nnfolder-marks-file-suffix
@sc{\e$B0u\e(B} \e$B%U%!%$%k$N3HD%;R$G$9!#%G%#%U%)%k%H$O\e(B @file{.mrk} \e$B$G$9!#\e(B
+
+@item nnfolder-marks-directory
+@vindex nnfolder-marks-directory
+@sc{\e$B0u\e(B} \e$B%U%!%$%k$,3JG<$5$l$k%G%#%l%/%H%j$G$9!#\e(Bnil \e$B$@$C$?\e(B
+\e$B$i\e(B @code{nnfolder-directory} \e$B$,;H$o$l$^$9!#\e(B
@end table
@findex nnfolder-generate-active-file
@vindex nnfolder-nov-file-suffix
The extension for @sc{nov} files. The default is @file{.nov}.
+@item nnfolder-nov-directory
+@vindex nnfolder-nov-directory
+The directory where the @sc{nov} files should be stored. If nil,
+@code{nnfolder-directory} is used.
+
@item nnfolder-marks-is-evil
@vindex nnfolder-marks-is-evil
If non-@code{nil}, this backend will ignore any @sc{marks} files. The
@vindex nnfolder-marks-file-suffix
The extension for @sc{marks} files. The default is @file{.mrk}.
+@item nnfolder-marks-directory
+@vindex nnfolder-marks-directory
+The directory where the @sc{marks} files should be stored. If nil,
+@code{nnfolder-directory} is used.
+
@end table