* BUGS
+NB the definitive copy of this file for Emacs 22 is on the
+EMACS_22_BASE branch. Any entries below are automatically copied from
+that branch. Do not make manual changes to this file on the trunk.
+
+ ** ams@gnu.org, 9 July: eshell and external commands
+ http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg00385.html
+
+ ** Check all non-file-scope static vars to make sure they
+ won't lose on USG or HPUX systems.
+
* FIXES FOR EMACS 22.3
Here we list small fixes that arrived too late for Emacs 22.2, but
++2007-08-20 Stefan Monnier <monnier@iro.umontreal.ca>
++
++ * smerge-mode.el (smerge-resolve): New arg `safe'.
++ (smerge-resolve-all, smerge-batch-resolve): New function.
++ (smerge-refine): Make sure `diff' returns the expected result.
++ (smerge-parsep-re): New const.
++ (smerge-mode): Use it to adjust paragraph-separate.
++
++ * progmodes/perl-mode.el (perl-font-lock-syntactic-keywords):
++ Correctly match / regexp matchers as first char on a line when
++ fontifying only that line.
++
++ * emacs-lisp/cl-macs.el (cl-transform-lambda): Preserve the match-data.
++
++2007-08-20 Stefan Monnier <monnier@iro.umontreal.ca>
++
++ * vc-bzr.el: Don't fiddle with vc-handled-backend.
++ (vc-bzr-registered): Don't redundantly protect against
++ file-error. Actually use the format-specific code.
++ (vc-bzr-buffer-nonblank-p): Remove.
++ (vc-bzr-status): Change `kindchange' -> `kindchanged'.
++
+2007-08-20 Juri Linkov <juri@jurta.org>
+
+ * startup.el (fancy-splash-text): Change multiple tabs into one
+ tab. Remove "Useful File menu items" section (with "Exit Emacs"
+ and "Recover Crashed Session").
+ (fancy-splash-screens): Set tab-width to 22.
+ (normal-splash-screen): Replace literal tabs with \t and
+ fix whitespace. Remove "Useful File menu items" section (with
+ "Exit Emacs" and "Recover Crashed Session").
+
2007-08-20 Johannes Weiner <hannes@saeurebad.de> (tiny change)
* emacs-lisp/lisp-mode.el (preceding-sexp): New fun, the code was
++2007-08-17 Katsumi Yamaoka <yamaoka@jpl.org>
++
++ * gnus-art.el (gnus-article-summary-command-nosave)
++ (gnus-article-read-summary-keys): Don't use 3rd arg of pop-to-buffer.
++
++2007-08-14 Katsumi Yamaoka <yamaoka@jpl.org>
++
++ * gnus.el (gnus-maximum-newsgroup): New variable.
++
++ * gnus-agent.el (gnus-agent-fetch-headers): Limit the range of articles
++ according to gnus-maximum-newsgroup.
++
++ * gnus-sum.el (gnus-articles-to-read, gnus-list-of-unread-articles)
++ (gnus-list-of-read-articles, gnus-sequence-of-unread-articles): Limit
++ the range of articles according to gnus-maximum-newsgroup.
++
2007-08-10 Katsumi Yamaoka <yamaoka@jpl.org>
* nntp.el (nntp-xref-number-is-evil): New server variable.
(gnus-agent-find-parameter group
'agent-predicate)))))
(articles (if fetch-all
-- (gnus-uncompress-range (gnus-active group))
++ (if gnus-maximum-newsgroup
++ (let ((active (gnus-active group)))
++ (gnus-uncompress-range
++ (cons (max (car active)
++ (- (cdr active)
++ gnus-maximum-newsgroup -1))
++ (cdr active))))
++ (gnus-uncompress-range (gnus-active group)))
(gnus-list-of-unread-articles group)))
(gnus-decode-encoded-word-function 'identity)
(gnus-decode-encoded-address-function 'identity)
"Execute the last keystroke in the summary buffer."
(interactive)
(let (func)
-- (pop-to-buffer gnus-article-current-summary nil (not (featurep 'xemacs)))
++ (pop-to-buffer gnus-article-current-summary)
(setq func (lookup-key (current-local-map) (this-command-keys)))
(call-interactively func)))
(member keys nosave-in-article))
(let (func)
(save-window-excursion
-- (pop-to-buffer gnus-article-current-summary
-- nil (not (featurep 'xemacs)))
++ (pop-to-buffer gnus-article-current-summary)
;; We disable the pick minor mode commands.
(let (gnus-pick-mode)
(setq func (lookup-key (current-local-map) keys))))
(call-interactively func)
(setq new-sum-point (point)))
(when (member keys nosave-but-article)
-- (pop-to-buffer gnus-article-buffer
-- nil (not (featurep 'xemacs)))))
++ (pop-to-buffer gnus-article-buffer)))
;; These commands should restore window configuration.
(let ((obuf (current-buffer))
(owin (current-window-configuration))
(opoint (point))
win func in-buffer selected new-sum-start new-sum-hscroll)
(cond (not-restore-window
-- (pop-to-buffer gnus-article-current-summary
-- nil (not (featurep 'xemacs))))
++ (pop-to-buffer gnus-article-current-summary))
((setq win (get-buffer-window gnus-article-current-summary))
(select-window win))
(t
;; articles in the group, or (if that's nil), the
;; articles in the cache.
(or
-- (gnus-uncompress-range (gnus-active group))
++ (if gnus-maximum-newsgroup
++ (let ((active (gnus-active group)))
++ (gnus-uncompress-range
++ (cons (max (car active)
++ (- (cdr active) gnus-maximum-newsgroup -1))
++ (cdr active))))
++ (gnus-uncompress-range (gnus-active group)))
(gnus-cache-articles-in-group group))
;; Select only the "normal" subset of articles.
(gnus-sorted-nunion
(let* ((read (gnus-info-read (gnus-get-info group)))
(active (or (gnus-active group) (gnus-activate-group group)))
(last (cdr active))
++ (bottom (if gnus-maximum-newsgroup
++ (max (car active) (- last gnus-maximum-newsgroup -1))
++ (car active)))
first nlast unread)
;; If none are read, then all are unread.
(if (not read)
-- (setq first (car active))
++ (setq first bottom)
;; If the range of read articles is a single range, then the
;; first unread article is the article after the last read
;; article. Sounds logical, doesn't it?
(if (and (not (listp (cdr read)))
-- (or (< (car read) (car active))
++ (or (< (car read) bottom)
(progn (setq read (list read))
nil)))
-- (setq first (max (car active) (1+ (cdr read))))
++ (setq first (max bottom (1+ (cdr read))))
;; `read' is a list of ranges.
(when (/= (setq nlast (or (and (numberp (car read)) (car read))
(caar read)))
1)
-- (setq first (car active)))
++ (setq first bottom))
(while read
(when first
(while (< first nlast)
(gnus-list-range-difference
(gnus-list-range-difference
(gnus-sorted-complement
-- (gnus-uncompress-range active)
++ (gnus-uncompress-range
++ (if gnus-maximum-newsgroup
++ (cons (max (car active)
++ (- (cdr active) gnus-maximum-newsgroup -1))
++ (cdr active))
++ active))
(gnus-list-of-unread-articles group))
(cdr (assq 'dormant marked)))
(cdr (assq 'tick marked))))))
(let* ((read (gnus-info-read (gnus-get-info group)))
(active (or (gnus-active group) (gnus-activate-group group)))
(last (cdr active))
++ (bottom (if gnus-maximum-newsgroup
++ (max (car active) (- last gnus-maximum-newsgroup -1))
++ (car active)))
first nlast unread)
;; If none are read, then all are unread.
(if (not read)
-- (setq first (car active))
++ (setq first bottom)
;; If the range of read articles is a single range, then the
;; first unread article is the article after the last read
;; article. Sounds logical, doesn't it?
(if (and (not (listp (cdr read)))
-- (or (< (car read) (car active))
++ (or (< (car read) bottom)
(progn (setq read (list read))
nil)))
-- (setq first (max (car active) (1+ (cdr read))))
++ (setq first (max bottom (1+ (cdr read))))
;; `read' is a list of ranges.
(when (/= (setq nlast (or (and (numberp (car read)) (car read))
(caar read)))
1)
-- (setq first (car active)))
++ (setq first bottom))
(while read
(when first
(push (cons first nlast) unread))
:type '(choice (const :tag "No limit" nil)
integer))
++(defcustom gnus-maximum-newsgroup nil
++ "The maximum number of articles a newsgroup.
++If this is a number, old articles in a newsgroup exceeding this number
++are silently ignored. If it is nil, no article is ignored. Note that
++setting this variable to a number might prevent you from reading very
++old articles."
++ :group 'gnus-group-select
++ :version "22.2"
++ :type '(choice (const :tag "No limit" nil)
++ integer))
++
(defcustom gnus-use-long-file-name (not (memq system-type '(usg-unix-v xenix)))
"*Non-nil means that the default name of a file to save articles in is the group name.
If it's nil, the directory form of the group name is used instead.
* basic.texi (Position Info): Add index entry for face at point.
Mention that character faces are also displayed by "C-u C-x =".
+2007-08-17 Jay Belanger <jay.p.belanger@gmail.com>
+
+ * calc.texi: Move contents to beginning of file.
+ (Algebraic Entry): Fix the formatting of an example.
+
+2007-08-15 Jay Belanger <jay.p.belanger@gmail.com>
+
+ * calc.texi (Basic Operations on Units): Mention exact versus
+ inexact conversions.
+
+2007-08-14 Jay Belanger <jay.p.belanger@gmail.com>
+
+ * calc.texi (Basic Operations on Units): Mention default
+ values for new units.
+ (Quick Calculator Mode): Mention that binary format will
+ be displayed.
+
++2007-08-14 Katsumi Yamaoka <yamaoka@jpl.org>
++
++ * gnus.texi (Selecting a Group): Mention gnus-maximum-newsgroup.
++
2007-08-10 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus.texi (NNTP): Mention nntp-xref-number-is-evil.
@code{gnus-large-newsgroup}, but is only used for ephemeral
newsgroups.
++@vindex gnus-maximum-newsgroup
++In groups in some news servers, there might be a big gap between a few
++very old articles that will never be expired and the recent ones. In
++such a case, the server will return the data like @code{(1 . 30000000)}
++for the @code{LIST ACTIVE group} command, for example. Even if there
++are actually only the articles 1-10 and 29999900-30000000, Gnus doesn't
++know it at first and prepares for getting 30000000 articles. However,
++it will consume hundreds megabytes of memories and might make Emacs get
++stuck as the case may be. If you use such news servers, set the
++variable @code{gnus-maximum-newsgroup} to a positive number. The value
++means that Gnus ignores articles other than this number of the latest
++ones in every group. For instance, the value 10000 makes Gnus get only
++the articles 29990001-30000000 (if the latest article number is 30000000
++in a group). Note that setting this variable to a number might prevent
++you from reading very old articles. The default value of the variable
++@code{gnus-maximum-newsgroup} is @code{nil}, which means Gnus never
++ignores old articles.
++
@vindex gnus-select-group-hook
@vindex gnus-auto-select-first
@vindex gnus-auto-select-subject