summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiles Bader <miles@gnu.org>2006-05-17 07:46:49 +0000
committerMiles Bader <miles@gnu.org>2006-05-17 07:46:49 +0000
commit8e6c9c267f03e451a062b24abec49f12486bade8 (patch)
tree02004df08d8c886a9bfcd3fcded9742f77e9f13b
parentd181adab766ec55fbd3a1eebb3330da6b6b66c8e (diff)
parent589c8f3614f396ba33ed5f3e57a6a5f79367a6c6 (diff)
downloademacs-8e6c9c267f03e451a062b24abec49f12486bade8.tar.gz
Merge from emacs--devo--0unicode-pre-font-backend
Patches applied: * emacs--devo--0 (patch 274-284) - Update from CVS - Update etc/MORE.STUFF. - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 101) - Update from CVS Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-62
-rw-r--r--admin/ChangeLog5
-rw-r--r--admin/FOR-RELEASE5
-rw-r--r--etc/ChangeLog18
-rw-r--r--etc/MORE.STUFF15
-rw-r--r--etc/NEWS6
-rw-r--r--etc/sk-refcard.tex1
-rw-r--r--lib-src/ChangeLog4
-rw-r--r--lib-src/makefile.w32-in1
-rw-r--r--lisp/ChangeLog203
-rw-r--r--lisp/allout.el68
-rw-r--r--lisp/arc-mode.el14
-rw-r--r--lisp/calendar/appt.el4
-rw-r--r--lisp/calendar/cal-menu.el4
-rw-r--r--lisp/calendar/calendar.el76
-rw-r--r--lisp/calendar/diary-lib.el4
-rw-r--r--lisp/comint.el61
-rw-r--r--lisp/custom.el14
-rw-r--r--lisp/desktop.el79
-rw-r--r--lisp/dired-x.el4
-rw-r--r--lisp/emacs-lisp/bytecomp.el17
-rw-r--r--lisp/emacs-lisp/ewoc.el103
-rw-r--r--lisp/files.el32
-rw-r--r--lisp/help-fns.el10
-rw-r--r--lisp/hexl.el7
-rw-r--r--lisp/international/mule.el4
-rw-r--r--lisp/newcomment.el1
-rw-r--r--lisp/outline.el1
-rw-r--r--lisp/progmodes/cc-compat.el2
-rw-r--r--lisp/progmodes/cc-subword.el22
-rw-r--r--lisp/progmodes/cc-vars.el2
-rw-r--r--lisp/progmodes/compile.el1
-rw-r--r--lisp/progmodes/gdb-ui.el40
-rw-r--r--lisp/progmodes/gud.el3
-rw-r--r--lisp/server.el12
-rw-r--r--lisp/simple.el4
-rw-r--r--lisp/subr.el30
-rw-r--r--lisp/term/xterm.el2
-rw-r--r--lisp/textmodes/org.el3
-rw-r--r--lisp/url/ChangeLog4
-rw-r--r--lisp/url/url-http.el3
-rw-r--r--lispintro/emacs-lisp-intro.texi18
-rw-r--r--lispref/ChangeLog50
-rw-r--r--lispref/buffers.texi11
-rw-r--r--lispref/display.texi5
-rw-r--r--lispref/files.texi54
-rw-r--r--lispref/hooks.texi20
-rw-r--r--lispref/internals.texi43
-rw-r--r--lispref/minibuf.texi19
-rw-r--r--lispref/nonascii.texi31
-rw-r--r--lispref/os.texi28
-rw-r--r--lispref/processes.texi6
-rw-r--r--lispref/text.texi4
-rw-r--r--man/ChangeLog34
-rw-r--r--man/buffers.texi2
-rw-r--r--man/building.texi8
-rw-r--r--man/calendar.texi26
-rw-r--r--man/files.texi2
-rw-r--r--man/gnus.texi690
-rw-r--r--man/message.texi23
-rw-r--r--man/mule.texi11
-rw-r--r--src/.arch-inventory2
-rw-r--r--src/ChangeLog51
-rw-r--r--src/Makefile.in4
-rw-r--r--src/editfns.c4
-rw-r--r--src/fileio.c9
-rw-r--r--src/frame.c2
-rw-r--r--src/intervals.c40
-rw-r--r--src/lread.c8
-rw-r--r--src/textprop.c68
-rw-r--r--src/xdisp.c2
-rw-r--r--src/xterm.c12
71 files changed, 1416 insertions, 760 deletions
diff --git a/admin/ChangeLog b/admin/ChangeLog
index ef6fcb44041..08bef4585a7 100644
--- a/admin/ChangeLog
+++ b/admin/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-12 Eli Zaretskii <eliz@gnu.org>
+
+ * FOR-RELEASE: Spell-checking the manuals is now done; remove the
+ entry.
+
2006-05-06 Bill Wohler <wohler@newt.com>
* FOR-RELEASE: MH-E 8.0 has been released, so removed reminder
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE
index 88d3a0dcf48..5d634762d9d 100644
--- a/admin/FOR-RELEASE
+++ b/admin/FOR-RELEASE
@@ -7,8 +7,6 @@ has to be set to nil: when t, it can leak memory and cause other problems.
** Update release dates of manuals.
-** Spell check the manuals.
-
** Get rid of overfull and underfull boxes in manuals.
** Check for widow and orphan lines in manuals;
@@ -28,6 +26,9 @@ and KDE projects, to use the new Emacs icons in etc/images/icons.
* BUGS
+** We need a way a Lisp file encoded in iso-2022 can assure
+reliable decoding regardless of user options.
+
** JD Smith's 17 Apr 2006 bug report that CVS operations
get mysterious unreproducible failures.
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 16578fa0a6c..bc0f1ad93b8 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,21 @@
+2006-05-15 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * sk-refcard.tex: Add coding cookie.
+
+2006-05-15 Michael Olson <mwolson@gnu.org>
+
+ * MORE.STUFF: Update URL for Planner Mode and add description.
+ Canonicalize URLs for Emacs Muse and Emacs Wiki Mode.
+
+2006-05-12 Romain Francoise <romain@orebokech.com>
+
+ * MORE.STUFF: ERC is now part of Emacs.
+ Add Emacs Muse.
+
+2006-05-12 Ken Manheimer <ken.manheimer@gmail.com>
+
+ * NEWS (allout): Update.
+
2006-05-06 Bill Wohler <wohler@newt.com>
Release MH-E version 8.0.
diff --git a/etc/MORE.STUFF b/etc/MORE.STUFF
index cd54c654563..69bdd2d2bfb 100644
--- a/etc/MORE.STUFF
+++ b/etc/MORE.STUFF
@@ -54,6 +54,9 @@ You might find bug-fixes or enhancements in these places.
* Eldoc and Rlogin:
<URL:http://www.splode.com/~friedman/software/emacs-lisp/>
+ * ERC: IRC client:
+ <URL:http://www.emacswiki.org/cgi-bin/wiki?EmacsIRCClient>
+
* EShell: <URL:http://www.newartisans.com/johnw/emacs.html>
* Etags: <URL:ftp://pot.potorti.it/pub/software/unix/etags.tar.gz>
@@ -155,6 +158,9 @@ Several are for Debian GNU/Linux in particular.
* EMacro: <URL:http://emacro.sourceforge.net/>
EMacro is a portable configuration file that configures itself.
+ * Emacs Muse: <URL:http://www.mwolson.org/projects/EmacsMuse.html>
+ An authoring and publishing environment for Emacs.
+
* Emacs speaks statistics (ESS): statistical programming within Emacs
<URL:http://ess.r-project.org>
@@ -165,12 +171,9 @@ Several are for Debian GNU/Linux in particular.
A simple Emacs interface to w3m, which is a text-mode
WWW browser
- * Emacs Wiki Mode: <URL:http://mwolson.org/projects/EmacsWiki.html>
+ * Emacs Wiki Mode: <URL:http://www.mwolson.org/projects/EmacsWiki.html>
A wiki-like publishing tool and personal information manager
- * ERC: IRC client:
- <URL:http://www.emacswiki.org/cgi-bin/wiki?EmacsIRCClient>
-
* Gnuserv:
<URL:http://www.hpl.hp.com/personal/ange/gnuserv/home.html>
Enhanced emacsclient/emacsserver. Also available from this Web
@@ -210,8 +213,8 @@ Several are for Debian GNU/Linux in particular.
nXML mode is an addon for GNU Emacs, which makes GNU Emacs into a
powerful XML editor.
- * Planner Mode:
- <URL:http://sacha.free.net.ph/notebook/wiki/PlannerMode.php>
+ * Planner Mode: <URL:http://www.plannerlove.com/>
+ Planner is an organizer and day planner for Emacs.
* Preview LaTeX: embed preview LaTeX images in source buffer.
<URL:http://preview-latex.sourceforge.net/>
diff --git a/etc/NEWS b/etc/NEWS
index aad95f3e4c8..8be4da9a7e1 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -2009,13 +2009,17 @@ symmetric key hinting and consistency verification, auto-encryption of
pending topics on save, and more, make it easy to use encryption in
powerful ways.
+*** `allout-view-change-hook' marked as being deprecated - use
+`allout-exposure-change-hook' instead. Both are currently being used, but
+`allout-view-change-hook' will be ignored in a subsequent allout version.
+
*** Default command prefix changed to "\C-c " (control-c space), to avoid
intruding on user's keybinding space. Customize the
`allout-command-prefix' variable to your preference.
*** Allout now uses text overlay's `invisible' property (and others) for
concealed text, instead of selective-display. This simplifies the code, in
-particularly avoiding the need for kludges for isearch dynamic-display,
+particular avoiding the need for kludges for isearch dynamic-display,
discretionary handling of edits of concealed text, undo concerns, etc.
*** Many substantial fixes and refinements, including:
diff --git a/etc/sk-refcard.tex b/etc/sk-refcard.tex
index 97911a66db8..6bc8edb9378 100644
--- a/etc/sk-refcard.tex
+++ b/etc/sk-refcard.tex
@@ -665,6 +665,7 @@ Viac sa dozviete po vykonaní \kbd{C-h f interactive}.
% Local variables:
% compile-command: "csplain sk-refcard"
+% coding: iso-latin-2
% End:
% arch-tag: 9f8eacf2-daf9-4162-bc8d-4af7b269f3d3
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index 2e8581a6f57..16c4e538939 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,7 @@
+2006-05-13 Eli Zaretskii <eliz@gnu.org>
+
+ * makefile.w32-in (lisp1): Add fringe.elc.
+
2006-05-02 Francesco Potort,Al(B <pot@gnu.org>
* etags.c (Perl_functions): Free space allocated for var package.
diff --git a/lib-src/makefile.w32-in b/lib-src/makefile.w32-in
index 10b7c07f5c2..c145e47f197 100644
--- a/lib-src/makefile.w32-in
+++ b/lib-src/makefile.w32-in
@@ -192,6 +192,7 @@ lisp1= \
$(lispsource)international/mule-conf.el \
$(lispsource)international/mule-cmds.elc \
$(lispsource)international/characters.elc \
+ $(lispsource)fringe.elc \
$(lispsource)image.elc \
$(lispsource)international/fontset.elc \
$(lispsource)dnd.elc \
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 272f13d4ecb..979ed33dde6 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,204 @@
+2006-05-17 Thien-Thi Nguyen <ttn@gnu.org>
+
+ * emacs-lisp/ewoc.el (ewoc-data): Add docstring.
+ (ewoc-nth): Doc fix.
+
+2006-05-16 Eli Zaretskii <eliz@gnu.org>
+
+ * international/mule.el (auto-coding-alist): Add .lha to files
+ read with no-conversion.
+
+ * files.el (auto-mode-alist): Add .lha files to archive file
+ extensions.
+
+ * arc-mode.el (archive-arc-summarize, archive-lzh-summarize):
+ Convert csize to integer when computing offsets within the
+ compressed archive file.
+
+2006-05-16 Kim F. Storm <storm@cua.dk>
+
+ * subr.el (add-to-history): Add KEEP-ALL arg and align functionality
+ with read-from-minibuffer.
+
+2006-05-16 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * emacs-lisp/bytecomp.el (byte-compile-warnings-safe-p): New function.
+ (byte-compile-warnings): Fix safe-local-variable property.
+
+2006-05-16 Ken Manheimer <ken.manheimer@gmail.com>
+
+ * allout.el (allout-show-bodies, allout-old-style-prefixes)
+ (allout-stylish-prefixes, allout-numbered-bullet)
+ (allout-file-xref-bullet, allout-use-hanging-indents): Use simple
+ predicates to qualify `safe-local-variable' property, when
+ available, else use equivalent lambda.
+ (allout-current-topic-collapsed-p): Do the right thing regarding
+ trailing blank lines.
+
+2006-05-16 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * server.el (server-start): Only create a directory if needed.
+ (server-edit, server-unload-hook): server-start => server-mode.
+ (kill-emacs-hook): Cleanup upon exit.
+
+2006-05-15 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * hexl.el (hexlify-buffer): Encode process arguments manually.
+
+2006-05-16 Nick Roberts <nickrob@snap.net.nz>
+
+ * progmodes/gud.el (gud-tooltip-tips): Add missing argument to
+ call to gdb-tooltip-print.
+
+2006-05-15 Romain Francoise <romain@orebokech.com>
+
+ * dired-x.el (dired-guess-shell-gnutar): On GNU and GNU/Linux
+ systems, default to "tar" since those systems probably have GNU tar.
+
+2006-05-14 Lars Hansen <larsh@soem.dk>
+
+ * desktop.el (desktop-missing-file-warning): Fix docstring.
+ (desktop-restore-file-buffer): Correct question asked on missing file.
+
+2006-05-14 Kim F. Storm <storm@cua.dk>
+
+ * progmodes/cc-subword.el (c-forward-subword, c-backward-subword):
+ Add CUA move property.
+
+2006-05-13 Chong Yidong <cyd@stupidchicken.com>
+
+ * custom.el (custom-push-theme): Load the variable before checking
+ its `standard-value'.
+
+2006-05-13 Lars Hansen <larsh@soem.dk>
+
+ * desktop.el (desktop-save): Use with-temp-buffer.
+
+2006-05-12 Glenn Morris <rgm@gnu.org>
+
+ * calendar/cal-menu.el (calendar-mode-map, calendar-mouse-3-map):
+ * calendar/calendar.el (calendar-mode-map):
+ * calendar/diary-lib.el (include-other-diary-files,diary-mail-entries):
+ * calendar/appt.el (appt-check, appt-make-list): Refer to
+ diary-view-entries, diary-list-entries, diary-show-all-entries
+ rather than obsolete aliases.
+
+2006-05-12 Chong Yidong <cyd@stupidchicken.com>
+
+ * simple.el (line-move-finish): Avoid calling point motion hooks
+ while processing intangibility.
+
+2006-05-12 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * term/xterm.el (terminal-init-xterm): Fix typo.
+
+2006-05-12 Ken Manheimer <ken.manheimer@gmail.com>
+
+ * allout.el: (allout-view-change-hook): Mark as being deprecated,
+ to be replaced by `allout-exposure-change-hook'.
+ (allout-exposure-change-hook): New, replacing
+ `allout-view-change-hook'.
+ (allout-flag-region): Run new hook `allout-exposure-change-hook',
+ in addition to `allout-view-change-hook'.
+ (allout-show-bodies, allout-old-style-prefixes)
+ (allout-stylish-prefixes, allout-use-hanging-indents): Quote the
+ lambda forms to prevent their showing up in variable help
+ presentations as inscrutable byte-compiled code.
+ (allout-numbered-bullet, allout-file-xref-bullet, allout-layout):
+ Use string-or-null-p to qualify safe-local-variable values.
+ (allout-reindent-bodies): Use memq to qualify matches against
+ valid safe-local-variable values. Also, quote the lambda as above.
+ (allout-use-mode-specific-leader): Add missing candidate-value
+ symbols, use memq, and quote the lambda.
+ (allout-overlay-interior-modification-handler): Remove unused
+ variables `msg' and 'opened'.
+ (allout-hidden-p): Constrain invisibility consideration to allout's
+ invisibility spec, disregarding invisibility for other reasons.
+
+2006-05-12 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * files.el (version-control): Correct safe values.
+
+2006-05-12 Thien-Thi Nguyen <ttn@gnu.org>
+
+ * emacs-lisp/ewoc.el (ewoc-refresh): Compute PP once before looping.
+
+ (ewoc--node-enter-before, ewoc--create-node): Delete funcs.
+ (ewoc--insert-new-node): New func.
+ Update callers of deleted funcs to use it, instead.
+
+2006-05-11 Glenn Morris <rgm@gnu.org>
+
+ * calendar/calendar.el (diary-show-all-entries): Do not refer to
+ obsolete alias `show-all-diary-entries'.
+ (make-diary-entry): Not interactive.
+ (cal-tex-cursor-month, cal-tex-cursor-month-landscape)
+ (cal-tex-cursor-day, cal-tex-cursor-week, cal-tex-cursor-week2)
+ (cal-tex-cursor-week-iso, cal-tex-cursor-week-monday)
+ (cal-tex-cursor-filofax-2week, cal-tex-cursor-filofax-week)
+ (cal-tex-cursor-year-landscape, cal-tex-cursor-filofax-year)
+ (cal-tex-cursor-filofax-daily, cal-tex-cursor-year): Interactive.
+
+2006-05-11 Johan Bockg,Ae(Brd <bojohan@dd.chalmers.se>
+
+ * calendar/calendar.el (calendar-french-date-string)
+ (calendar-mayan-date-string, calendar-chinese-date-string)
+ (calendar-astro-date-string, calendar-iso-date-string)
+ (calendar-islamic-date-string, calendar-bahai-date-string)
+ (calendar-hebrew-date-string, calendar-coptic-date-string)
+ (calendar-ethiopic-date-string, calendar-persian-date-string):
+ These functions are not interactive.
+
+2006-05-11 Luc Teirlinck <teirllm@auburn.edu>
+
+ * files.el: Balance parentheses.
+
+2006-05-11 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * files.el, newcomment.el, outline.el, simple.el,
+ emacs-lisp/bytecomp.el, progmodes/cc-compat.el,
+ progmodes/cc-vars.el, progmodes/compile.el:
+ Move `safe-local-variable' declarations to the respective files.
+
+ * help-fns.el (describe-variable): Don't print safe-var if it is
+ byte-code. Improve wording as suggested by Luc Teirlinck
+ <teirllm@auburn.edu>.
+
+2006-05-11 Nick Roberts <nickrob@snap.net.nz>
+
+ * progmodes/gdb-ui.el (gdb-reset): Update speedbar if necessary.
+ (gdb-var-evaluate-expression-handler, gdb-var-update-handler):
+ Use a token for pending-triggers to ensure gdb-var-update
+ gets called once per user input again for pre-GDB 6.4.
+ (gdb-var-delete): Match on more complex expressions.
+ (gdb-var-list-children-handler, gdb-var-create-handler):
+ Use a token for consistency.
+
+2006-05-11 Carsten Dominik <dominik@science.uva.nl>
+
+ * textmodes/org.el (org-read-date, org-goto-calendar)
+ (org-agenda-goto-calendar):
+ Bind `view-calendar-holidays-initially' to nil.
+
+2006-05-11 Thien-Thi Nguyen <ttn@gnu.org>
+
+ * emacs-lisp/ewoc.el (ewoc--refresh-node): No longer save-excursion.
+ Update all callers to do it there, instead.
+
+2006-05-10 Glenn Morris <rgm@gnu.org>
+
+ * calendar/calendar.el (calendar-basic-setup): Set day to 1 in
+ prefix arg case, to avoid view-diary-entries-initially error.
+ Reported by Stephen Berman <Stephen.Berman at gmx.net>.
+ (calendar-date-is-legal-p): Handle dates with no day part.
+
+2006-05-11 Nick Roberts <nickrob@snap.net.nz>
+
+ * comint.el (comint-insert-input): Just make it when
+ comint-use-prompt regexp is nil (default) and with the mouse.
+ (comint-copy-old-input): Reinstate from 2004-06-23.
+ (comint-mode-map): Bind C-c C-m to it.
+
2006-05-10 J.D. Smith <jdsmith@as.arizona.edu>
* progmodes/idlw-shell.el (idlwave-shell-move-or-history):
@@ -6,7 +207,7 @@
* progmodes/idlwave.el (idlwave-push-mark): Removed obsolete
compatibility function (Emacs 18/19).
(idlwave-is-continuation-line): Always return point at start of
- previous non-blank continuation line.
+ previous non-blank continuation line.
`keyword-parameters': Fix continued comment font-lock matcher.
(idlwave-font-lock-fontify-region): Written, use as
font-lock-fontify-region-function, to fix continued keyword
diff --git a/lisp/allout.el b/lisp/allout.el
index dc19c1fa15a..d6955c52cdf 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -199,7 +199,7 @@ just the header."
(make-variable-buffer-local 'allout-show-bodies)
;;;###autoload
(put 'allout-show-bodies 'safe-local-variable
- (lambda (x) (member x '(t nil))))
+ (if (fboundp 'booleanp) 'booleanp '(lambda (x) (member x '(t nil)))))
;;;_ = allout-header-prefix
(defcustom allout-header-prefix "."
@@ -316,7 +316,8 @@ incorrect.]"
:group 'allout)
;;;###autoload
(put 'allout-use-mode-specific-leader 'safe-local-variable
- (lambda (x) (or (member x '(t nil)) (stringp x))))
+ '(lambda (x) (or (memq x '(t nil allout-mode-leaders comment-start))
+ (stringp x))))
;;;_ = allout-mode-leaders
(defvar allout-mode-leaders '()
"Specific allout-prefix leading strings per major modes.
@@ -344,7 +345,7 @@ are always respected by the topic maneuvering functions."
(make-variable-buffer-local 'allout-old-style-prefixes)
;;;###autoload
(put 'allout-old-style-prefixes 'safe-local-variable
- (lambda (x) (member x '(t nil))))
+ (if (fboundp 'booleanp) 'booleanp '(lambda (x) (member x '(t nil)))))
;;;_ = allout-stylish-prefixes - alternating bullets
(defcustom allout-stylish-prefixes t
"*Do fancy stuff with topic prefix bullets according to level, etc.
@@ -393,7 +394,7 @@ is non-nil."
(make-variable-buffer-local 'allout-stylish-prefixes)
;;;###autoload
(put 'allout-stylish-prefixes 'safe-local-variable
- (lambda (x) (member x '(t nil))))
+ (if (fboundp 'booleanp) 'booleanp '(lambda (x) (member x '(t nil)))))
;;;_ = allout-numbered-bullet
(defcustom allout-numbered-bullet "#"
@@ -408,7 +409,9 @@ disables numbering maintenance."
(make-variable-buffer-local 'allout-numbered-bullet)
;;;###autoload
(put 'allout-numbered-bullet 'safe-local-variable
- (lambda (x) (or (not x) (stringp x))))
+ (if (fboundp 'string-or-null-p)
+ 'string-or-null-p
+ '(lambda (x) (or (stringp x) (null x)))))
;;;_ = allout-file-xref-bullet
(defcustom allout-file-xref-bullet "@"
"*Bullet signifying file cross-references, for `allout-resolve-xref'.
@@ -418,7 +421,9 @@ Set this var to the bullet you want to use for file cross-references."
:group 'allout)
;;;###autoload
(put 'allout-file-xref-bullet 'safe-local-variable
- (lambda (x) (or (not x) (stringp x))))
+ (if (fboundp 'string-or-null-p)
+ 'string-or-null-p
+ '(lambda (x) (or (stringp x) (null x)))))
;;;_ = allout-presentation-padding
(defcustom allout-presentation-padding 2
"*Presentation-format white-space padding factor, for greater indent."
@@ -621,7 +626,7 @@ where auto-fill occurs."
(make-variable-buffer-local 'allout-use-hanging-indents)
;;;###autoload
(put 'allout-use-hanging-indents 'safe-local-variable
- (lambda (x) (member x '(t nil))))
+ (if (fboundp 'booleanp) 'booleanp '(lambda (x) (member x '(t nil)))))
;;;_ = allout-reindent-bodies
(defcustom allout-reindent-bodies (if allout-use-hanging-indents
@@ -641,7 +646,7 @@ those that do not have the variable `comment-start' set. A value of
(make-variable-buffer-local 'allout-reindent-bodies)
;;;###autoload
(put 'allout-reindent-bodies 'safe-local-variable
- (lambda (x) (member x '(nil t text force))))
+ '(lambda (x) (memq x '(nil t text force))))
;;;_ = allout-enable-file-variable-adjustment
(defcustom allout-enable-file-variable-adjustment t
@@ -708,8 +713,7 @@ case the value of `allout-default-layout' is used.")
(make-variable-buffer-local 'allout-layout)
;;;###autoload
(put 'allout-layout 'safe-local-variable
- (lambda (x) (or (numberp x) (listp x) (integerp x)
- (member x '(: * + -)))))
+ '(lambda (x) (or (numberp x) (listp x) (memq x '(: * + -)))))
;;;_ : Topic header format
;;;_ = allout-regexp
@@ -1064,9 +1068,19 @@ from the list."
;;;_ = allout-overlay-category
(defvar allout-overlay-category nil
"Symbol for use in allout invisible-text overlays as the category.")
-;;;_ = allout-view-change-hook
+;;;_ x allout-view-change-hook
(defvar allout-view-change-hook nil
- "*Hook that's run after allout outline visibility changes.")
+ "*\(Deprecated\) Hook that's run after allout outline exposure changes.
+
+Switch to using `allout-exposure-change-hook' instead. Both
+variables are currently respected, but this one will be ignored
+in a subsequent allout version.")
+;;;_ = allout-exposure-change-hook
+(defvar allout-exposure-change-hook nil
+ "*Hook that's run after allout outline exposure changes.
+
+This variable will replace `allout-view-change-hook' in a subsequent allout
+version, though both are currently respected.")
;;;_ = allout-outside-normal-auto-fill-function
(defvar allout-outside-normal-auto-fill-function nil
@@ -1727,7 +1741,7 @@ OPEN: A topic that is not closed, though its offspring or body may be."
;;;_ > allout-hidden-p (&optional pos)
(defsubst allout-hidden-p (&optional pos)
"Non-nil if the character after point is invisible."
- (get-char-property (or pos (point)) 'invisible))
+ (eq (get-char-property (or pos (point)) 'invisible) 'allout))
;;;_ > allout-overlay-insert-in-front-handler (ol after beg end
;;; &optional prelen)
@@ -1753,8 +1767,6 @@ internal functions use this feature cohesively bunch changes."
(let ((start (point))
(ol-start (overlay-start ol))
(ol-end (overlay-end ol))
- (msg "Change within concealed text disallowed.")
- opened
first)
(goto-char beg)
(while (< (point) end)
@@ -1764,7 +1776,6 @@ internal functions use this feature cohesively bunch changes."
(save-excursion (forward-char 1)
(allout-show-to-offshoot)))
(when (not first)
- (setq opened t)
(setq first (point))))
(goto-char (if (featurep 'xemacs)
(next-property-change (1+ (point)) nil end)
@@ -3831,7 +3842,8 @@ Text is shown if flag is nil and hidden otherwise."
(let ((props (symbol-plist 'allout-overlay-category)))
(while props
(overlay-put o (pop props) (pop props)))))))
- (run-hooks 'allout-view-change-hook))
+ (run-hooks 'allout-view-change-hook)
+ (run-hooks 'allout-exposure-change-hook))
;;;_ > allout-flag-current-subtree (flag)
(defun allout-flag-current-subtree (flag)
"Conceal currently-visible topic's subtree if FLAG non-nil, else reveal it."
@@ -3999,17 +4011,18 @@ expose this topic and its siblings."
(defun allout-current-topic-collapsed-p (&optional include-single-liners)
"True if the currently visible containing topic is already collapsed.
-If optional INCLUDE-SINGLE-LINERS is true, then include single-line
-topics \(which intrinsically can be considered both collapsed and
-not\), as collapsed. Otherwise they are considered uncollapsed."
+Single line topics intrinsically can be considered as being both
+collapsed and uncollapsed. If optional INCLUDE-SINGLE-LINERS is
+true, then single-line topics are considered to be collapsed. By
+default, they are treated as being uncollapsed."
(save-excursion
- (and
- (= (progn (allout-back-to-current-heading)
- (move-end-of-line 1)
- (point))
- (allout-end-of-current-subtree))
- (or include-single-liners
- (progn (backward-char 1) (allout-hidden-p))))))
+ (and
+ (= (progn (allout-back-to-current-heading)
+ (move-end-of-line 1)
+ (point))
+ (allout-end-of-current-subtree (not (looking-at "\n\n"))))
+ (or include-single-liners
+ (progn (backward-char 1) (allout-hidden-p))))))
;;;_ > allout-hide-current-subtree (&optional just-close)
(defun allout-hide-current-subtree (&optional just-close)
"Close the current topic, or containing topic if this one is already closed.
@@ -5888,7 +5901,6 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t."
(or (memq prop buffer-invisibility-spec)
(assq prop buffer-invisibility-spec))))))
-
;;;_ #10 Unfinished
;;;_ > allout-bullet-isearch (&optional bullet)
(defun allout-bullet-isearch (&optional bullet)
diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el
index 9da83f1a635..5b08182b7ee 100644
--- a/lisp/arc-mode.el
+++ b/lisp/arc-mode.el
@@ -1379,7 +1379,11 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
visual)
files (cons (vector efnname ifnname fiddle nil (1- p))
files)
- p (+ p 29 csize))))
+ ;; p needs to stay an integer, since we use it in char-after
+ ;; above. Passing through `round' limits the compressed size
+ ;; to most-positive-fixnum, but if the compressed size exceeds
+ ;; that, we cannot visit the archive anyway.
+ p (+ p 29 (round csize)))))
(goto-char (point-min))
(let ((dash (concat "- -------- ----------- -------- "
(make-string maxlen ?-)
@@ -1519,9 +1523,13 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
files (cons (vector prname ifnname fiddle mode (1- p))
files))
(cond ((= hdrlvl 1)
- (setq p (+ p hsize 2 csize)))
+ ;; p needs to stay an integer, since we use it in goto-char
+ ;; above. Passing through `round' limits the compressed size
+ ;; to most-positive-fixnum, but if the compressed size exceeds
+ ;; that, we cannot visit the archive anyway.
+ (setq p (+ p hsize 2 (round csize))))
((or (= hdrlvl 2) (= hdrlvl 0))
- (setq p (+ p thsize 2 csize))))
+ (setq p (+ p thsize 2 (round csize)))))
))
(goto-char (point-min))
(let ((dash (concat (if archive-alternate-display
diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el
index 36934783b93..5c862ee6c29 100644
--- a/lisp/calendar/appt.el
+++ b/lisp/calendar/appt.el
@@ -353,7 +353,7 @@ displayed in a window:
;; restore its display state. Otherwise, kill it.
(if d-buff
;; Displays the diary buffer.
- (or selective (show-all-diary-entries))
+ (or selective (diary-show-all-entries))
(and
(setq d-buff (find-buffer-visiting
(substitute-in-file-name diary-file)))
@@ -536,7 +536,7 @@ The time should be in either 24 hour format or am/pm format."
The time must be at the beginning of a line for it to be
put in the appointments list (see examples in documentation of
the function `appt-check'). We assume that the variables DATE and
-NUMBER hold the arguments that `list-diary-entries' received.
+NUMBER hold the arguments that `diary-list-entries' received.
They specify the range of dates that the diary is being processed for.
Any appointments made with `appt-add' are not affected by this
diff --git a/lisp/calendar/cal-menu.el b/lisp/calendar/cal-menu.el
index 262e474f7b9..1bae5ce6299 100644
--- a/lisp/calendar/cal-menu.el
+++ b/lisp/calendar/cal-menu.el
@@ -85,7 +85,7 @@
(define-key calendar-mode-map [menu-bar diary ent]
'("Insert Diary Entry" . insert-diary-entry))
(define-key calendar-mode-map [menu-bar diary all]
- '("Show All" . show-all-diary-entries))
+ '("Show All" . diary-show-all-entries))
(define-key calendar-mode-map [menu-bar diary mark]
'("Mark All" . mark-diary-entries))
(define-key calendar-mode-map [menu-bar diary view]
@@ -616,7 +616,7 @@ The output is in landscape format, one month to a page."
(define-key calendar-mouse-3-map [exit-calendar]
'("Exit calendar" . exit-calendar))
(define-key calendar-mouse-3-map [show-diary]
- '("Show diary" . show-all-diary-entries))
+ '("Show diary" . diary-show-all-entries))
(define-key calendar-mouse-3-map [lunar-phases]
'("Lunar phases" . calendar-phases-of-moon))
(define-key calendar-mouse-3-map [unmark]
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index 1383b8bac16..6abcb74a3e2 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -1374,6 +1374,7 @@ MON defaults to `displayed-month'. YR defaults to `displayed-year'."
"Extract the month part of DATE which has the form (month day year)."
(car date))
+;; Note gives wrong answer for result of (calendar-read-date 'noday).
(defsubst extract-calendar-day (date)
"Extract the day part of DATE which has the form (month day year)."
(car (cdr date)))
@@ -1639,6 +1640,9 @@ to be replaced by asterisks to highlight it whenever it is in the window."
(calendar-current-date)))
(month (extract-calendar-month date))
(year (extract-calendar-year date)))
+ ;; (calendar-read-date t) returns a date with day = nil, which is
+ ;; not a legal date for the visible test in the diary section.
+ (if arg (setcar (cdr date) 1))
(pop-to-buffer calendar-buffer)
(increment-calendar-month month year (- calendar-offset))
(generate-calendar-window month year)
@@ -1682,12 +1686,10 @@ D-FILE specifies the file to use as the diary file."
t)
(autoload 'calendar-french-date-string "cal-french"
- "String of French Revolutionary date of Gregorian date."
- t)
+ "String of French Revolutionary date of Gregorian date.")
(autoload 'calendar-mayan-date-string "cal-mayan"
- "String of Mayan date of Gregorian date."
- t)
+ "String of Mayan date of Gregorian date.")
(autoload 'calendar-print-mayan-date "cal-mayan"
"Show the Mayan long count, Tzolkin, and Haab equivalents of the date under the cursor."
@@ -1730,8 +1732,7 @@ D-FILE specifies the file to use as the diary file."
t)
(autoload 'calendar-chinese-date-string "cal-china"
- "String of Chinese date of Gregorian date."
- t)
+ "String of Chinese date of Gregorian date.")
(autoload 'calendar-absolute-from-astro "cal-julian"
"Absolute date of astronomical (Julian) day number D."
@@ -1741,8 +1742,7 @@ D-FILE specifies the file to use as the diary file."
"Astronomical (Julian) day number of absolute date D.")
(autoload 'calendar-astro-date-string "cal-julian"
- "String of astronomical (Julian) day number of Gregorian date."
- t)
+ "String of astronomical (Julian) day number of Gregorian date.")
(autoload 'calendar-goto-astro-day-number "cal-julian"
"Move cursor to astronomical (Julian) day number."
@@ -1783,8 +1783,7 @@ Driven by the variable `calendar-date-display-form'.")
t)
(autoload 'calendar-iso-date-string "cal-iso"
- "String of ISO date of Gregorian date."
- t)
+ "String of ISO date of Gregorian date.")
(autoload 'calendar-goto-islamic-date "cal-islam"
"Move cursor to Islamic date."
@@ -1795,16 +1794,14 @@ Driven by the variable `calendar-date-display-form'.")
t)
(autoload 'calendar-islamic-date-string "cal-islam"
- "String of Islamic date of Gregorian date."
- t)
+ "String of Islamic date of Gregorian date.")
(autoload 'calendar-print-bahai-date "cal-bahai"
"Show the Baha'i date equivalents of date."
t)
(autoload 'calendar-bahai-date-string "cal-bahai"
- "String of Baha'i date of Gregorian date."
- t)
+ "String of Baha'i date of Gregorian date.")
(autoload 'calendar-goto-hebrew-date "cal-hebrew"
"Move cursor to Hebrew date."
@@ -1815,8 +1812,7 @@ Driven by the variable `calendar-date-display-form'.")
t)
(autoload 'calendar-hebrew-date-string "cal-hebrew"
- "String of Hebrew date of Gregorian date."
- t)
+ "String of Hebrew date of Gregorian date.")
(autoload 'calendar-goto-coptic-date "cal-coptic"
"Move cursor to Coptic date."
@@ -1827,8 +1823,7 @@ Driven by the variable `calendar-date-display-form'.")
t)
(autoload 'calendar-coptic-date-string "cal-coptic"
- "String of Coptic date of Gregorian date."
- t)
+ "String of Coptic date of Gregorian date.")
(autoload 'calendar-goto-ethiopic-date "cal-coptic"
"Move cursor to Ethiopic date."
@@ -1839,8 +1834,7 @@ Driven by the variable `calendar-date-display-form'.")
t)
(autoload 'calendar-ethiopic-date-string "cal-coptic"
- "String of Ethiopic date of Gregorian date."
- t)
+ "String of Ethiopic date of Gregorian date.")
(autoload 'calendar-goto-persian-date "cal-persia"
"Move cursor to Persian date."
@@ -1851,10 +1845,9 @@ Driven by the variable `calendar-date-display-form'.")
t)
(autoload 'calendar-persian-date-string "cal-persia"
- "String of Persian date of Gregorian date."
- t)
+ "String of Persian date of Gregorian date.")
-(autoload 'show-all-diary-entries "diary-lib"
+(autoload 'diary-show-all-entries "diary-lib"
"Show all of the diary entries in the diary file.
This function gets rid of the selective display of the diary file so that
all entries, not just some, are visible. If there is no diary buffer, one
@@ -1867,8 +1860,7 @@ Each entry in diary file visible in the calendar window is marked."
t)
(autoload 'make-diary-entry "diary-lib"
- "Insert a diary entry STRING which may be NONMARKING in FILE."
- t)
+ "Insert a diary entry STRING which may be NONMARKING in FILE.")
(autoload 'insert-diary-entry "diary-lib"
"Insert a diary entry for the date indicated by point."
@@ -1953,69 +1945,69 @@ holidays are found, nil if not."
(autoload 'cal-tex-cursor-month "cal-tex"
"Make a buffer with LaTeX commands for the month cursor is on.
Optional prefix argument specifies number of months to be produced.
-Calendar is condensed onto one page.")
+Calendar is condensed onto one page." t)
(autoload 'cal-tex-cursor-month-landscape "cal-tex"
"Make a buffer with LaTeX commands for the month cursor is on.
-Optional prefix argument specifies number of months to be produced.")
+Optional prefix argument specifies number of months to be produced." t)
(autoload 'cal-tex-cursor-day "cal-tex"
- "Make a buffer with LaTeX commands for the day cursor is on.")
+ "Make a buffer with LaTeX commands for the day cursor is on." t)
(autoload 'cal-tex-cursor-week "cal-tex"
"Make a buffer with LaTeX commands for a two-page one-week calendar.
It applies to the week that point is in.
Optional prefix argument specifies number of weeks.
-Holidays are included if `cal-tex-holidays' is t.")
+Holidays are included if `cal-tex-holidays' is t." t)
(autoload 'cal-tex-cursor-week2 "cal-tex"
"Make a buffer with LaTeX commands for a two-page one-week calendar.
It applies to the week that point is in.
Optional prefix argument specifies number of weeks.
-Holidays are included if `cal-tex-holidays' is t.")
+Holidays are included if `cal-tex-holidays' is t." t)
(autoload 'cal-tex-cursor-week-iso "cal-tex"
"Make a buffer with LaTeX commands for a one page ISO-style weekly calendar.
Optional prefix argument specifies number of weeks.
Diary entries are included if `cal-tex-diary' is t.
-Holidays are included if `cal-tex-holidays' is t.")
+Holidays are included if `cal-tex-holidays' is t." t)
(autoload 'cal-tex-cursor-week-monday "cal-tex"
"Make a buffer with LaTeX commands for a two-page one-week calendar.
It applies to the week that point is in, and starts on Monday.
Optional prefix argument specifies number of weeks.
-Holidays are included if `cal-tex-holidays' is t.")
+Holidays are included if `cal-tex-holidays' is t." t)
(autoload 'cal-tex-cursor-filofax-2week "cal-tex"
"Two-weeks-at-a-glance Filofax style calendar for week indicated by cursor.
Optional prefix argument specifies number of weeks.
Diary entries are included if cal-tex-diary is t.
-Holidays are included if `cal-tex-holidays' is t.")
+Holidays are included if `cal-tex-holidays' is t." t)
(autoload 'cal-tex-cursor-filofax-week "cal-tex"
"One-week-at-a-glance Filofax style calendar for week indicated by cursor.
Optional prefix argument specifies number of weeks.
Weeks start on Monday.
Diary entries are included if cal-tex-diary is t.
-Holidays are included if `cal-tex-holidays' is t.")
+Holidays are included if `cal-tex-holidays' is t." t)
(autoload 'cal-tex-cursor-filofax-daily "cal-tex"
"Day-per-page Filofax style calendar for week indicated by cursor.
Optional prefix argument specifies number of weeks. Weeks start on Monday.
Diary entries are included if `cal-tex-diary' is t.
-Holidays are included if `cal-tex-holidays' is t.")
+Holidays are included if `cal-tex-holidays' is t." t)
(autoload 'cal-tex-cursor-year "cal-tex"
"Make a buffer with LaTeX commands for a year's calendar.
-Optional prefix argument specifies number of years.")
+Optional prefix argument specifies number of years." t)
(autoload 'cal-tex-cursor-year-landscape "cal-tex"
"Make a buffer with LaTeX commands for a year's calendar (landscape).
-Optional prefix argument specifies number of years.")
+Optional prefix argument specifies number of years." t)
(autoload 'cal-tex-cursor-filofax-year "cal-tex"
"Make a buffer with LaTeX commands for a year's calendar (Filofax).
-Optional prefix argument specifies number of years.")
+Optional prefix argument specifies number of years." t)
(autoload 'mark-calendar-holidays "holidays"
"Mark notable days in the calendar window."
@@ -2261,7 +2253,7 @@ movement commands will not work correctly."
(define-key map "m" 'mark-diary-entries)
(define-key map "d" 'diary-view-entries)
(define-key map "D" 'view-other-diary-entries)
- (define-key map "s" 'show-all-diary-entries)
+ (define-key map "s" 'diary-show-all-entries)
(define-key map "pd" 'calendar-print-day-of-year)
(define-key map "pC" 'calendar-print-chinese-date)
(define-key map "pk" 'calendar-print-coptic-date)
@@ -2897,7 +2889,11 @@ interpreted as BC; -1 being 1 BC, and so on."
(day (extract-calendar-day date))
(year (extract-calendar-year date)))
(and (<= 1 month) (<= month 12)
- (<= 1 day) (<= day (calendar-last-day-of-month month year))
+ ;; (calendar-read-date t) returns a date with day = nil.
+ ;; Should not be valid (?), since many funcs prob assume integer.
+ ;; (calendar-read-date 'noday) returns (month year), which
+ ;; currently results in extract-calendar-year returning nil.
+ day year (<= 1 day) (<= day (calendar-last-day-of-month month year))
;; BC dates left as non-valid, to suppress errors from
;; complex holiday algorithms not suitable for years BC.
;; Note there are side effects on calendar navigation.
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index 6ced08bf083..c27939b8075 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -517,7 +517,7 @@ changing the variable `diary-include-string'."
(unwind-protect
(setq diary-entries-list
(append diary-entries-list
- (list-diary-entries original-date number)))
+ (diary-list-entries original-date number)))
(with-current-buffer (find-buffer-visiting diary-file)
(diary-unhide-everything)))
(beep)
@@ -820,7 +820,7 @@ to run it every morning at 1am."
(if (string-equal diary-mail-addr "")
(error "You must set `diary-mail-addr' to use this command")
(let ((diary-display-hook 'fancy-diary-display))
- (list-diary-entries (calendar-current-date) (or ndays diary-mail-days)))
+ (diary-list-entries (calendar-current-date) (or ndays diary-mail-days)))
(compose-mail diary-mail-addr
(concat "Diary entries generated "
(calendar-date-string (calendar-current-date))))
diff --git a/lisp/comint.el b/lisp/comint.el
index c7e5b3bdddd..1b9d8df738f 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -458,7 +458,7 @@ executed once when the buffer is created."
(define-key map "\C-c\C-c" 'comint-interrupt-subjob)
(define-key map "\C-c\C-z" 'comint-stop-subjob)
(define-key map "\C-c\C-\\" 'comint-quit-subjob)
- (define-key map "\C-c\C-m" 'comint-insert-input)
+ (define-key map "\C-c\C-m" 'comint-copy-old-input)
(define-key map "\C-c\C-o" 'comint-delete-output)
(define-key map "\C-c\C-r" 'comint-show-output)
(define-key map "\C-c\C-e" 'comint-show-maximum-output)
@@ -502,7 +502,7 @@ executed once when the buffer is created."
(define-key map [menu-bar inout kill-input]
'("Kill Current Input" . comint-kill-input))
(define-key map [menu-bar inout copy-input]
- '("Copy Old Input" . comint-insert-input))
+ '("Copy Old Input" . comint-copy-old-input))
(define-key map [menu-bar inout forward-matching-history]
'("Forward Matching Input..." . comint-forward-matching-input))
(define-key map [menu-bar inout backward-matching-history]
@@ -797,36 +797,28 @@ buffer. The hook `comint-exec-hook' is run after each exec."
(set-process-coding-system proc decoding encoding))
proc))
-(defun comint-insert-input (&optional event)
+(defun comint-insert-input (event)
"In a Comint buffer, set the current input to the previous input at point."
;; This doesn't use "e" because it is supposed to work
;; for events without parameters.
- (interactive (list last-input-event))
- (when event
- (posn-set-point (event-end event)))
- (if comint-use-prompt-regexp
- (let ((input (funcall comint-get-old-input))
- (process (get-buffer-process (current-buffer))))
- (if (not process)
- (error "Current buffer has no process")
- (goto-char (process-mark process))
- (insert input)))
- (let ((pos (point)))
- (if (not (eq (field-at-pos pos) 'input))
- ;; No input at POS, fall back to the global definition.
- (let* ((keys (this-command-keys))
- (last-key (and (vectorp keys) (aref keys (1- (length keys)))))
- (fun (and last-key (lookup-key global-map (vector last-key)))))
- (and fun (call-interactively fun)))
- ;; There's previous input at POS, insert it at the end of the buffer.
- (goto-char (point-max))
- ;; First delete any old unsent input at the end
- (delete-region
- (or (marker-position comint-accum-marker)
- (process-mark (get-buffer-process (current-buffer))))
- (point))
- ;; Insert the input at point
- (insert (field-string-no-properties pos))))))
+ (interactive "e")
+ (mouse-set-point event)
+ (let ((pos (point)))
+ (if (not (eq (field-at-pos pos) 'input))
+ ;; No input at POS, fall back to the global definition.
+ (let* ((keys (this-command-keys))
+ (last-key (and (vectorp keys) (aref keys (1- (length keys)))))
+ (fun (and last-key (lookup-key global-map (vector last-key)))))
+ (and fun (call-interactively fun)))
+ ;; There's previous input at POS, insert it at the end of the buffer.
+ (goto-char (point-max))
+ ;; First delete any old unsent input at the end
+ (delete-region
+ (or (marker-position comint-accum-marker)
+ (process-mark (get-buffer-process (current-buffer))))
+ (point))
+ ;; Insert the input at point
+ (insert (field-string-no-properties pos)))))
;; Input history processing in a buffer
@@ -1905,6 +1897,17 @@ the current line with any initial string matching the regexp
(comint-bol)
(buffer-substring-no-properties (point) (line-end-position)))))
+(defun comint-copy-old-input ()
+ "Insert after prompt old input at point as new input to be edited.
+Calls `comint-get-old-input' to get old input."
+ (interactive)
+ (let ((input (funcall comint-get-old-input))
+ (process (get-buffer-process (current-buffer))))
+ (if (not process)
+ (error "Current buffer has no process")
+ (goto-char (process-mark process))
+ (insert input))))
+
(defun comint-skip-prompt ()
"Skip past the text matching regexp `comint-prompt-regexp'.
If this takes us past the end of the current line, don't skip at all."
diff --git a/lisp/custom.el b/lisp/custom.el
index 2ac1e23ac49..c0169812d36 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -825,11 +825,15 @@ See `custom-known-themes' for a list of known themes."
;; theme is later disabled.
(if (null old)
(if (and (eq prop 'theme-value)
- (boundp symbol)
- (or (null (get symbol 'standard-value))
- (not (equal (eval (car (get symbol 'standard-value)))
- (symbol-value symbol)))))
- (setq old (list (list 'changed (symbol-value symbol))))
+ (boundp symbol))
+ (let ((sv (get symbol 'standard-value)))
+ (when (and (null sv) (custom-variable-p symbol))
+ (custom-load-symbol symbol)
+ (setq sv (get symbol 'standard-value)))
+ (if (or (null sv)
+ (not (equal (eval (car (get symbol 'standard-value)))
+ (symbol-value symbol))))
+ (setq old (list (list 'changed (symbol-value symbol))))))
(if (and (facep symbol)
(not (face-spec-match-p symbol (get symbol 'face-defface-spec))))
(setq old (list (list 'changed (list
diff --git a/lisp/desktop.el b/lisp/desktop.el
index cfde6237cd9..69815117bc2 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -201,7 +201,7 @@ The base name of the file is specified in `desktop-base-file-name'."
:version "22.1")
(defcustom desktop-missing-file-warning nil
- "*If non-nil then `desktop-read' asks if a non-existent file should be recreated.
+ "If non-nil, offer to recreate the buffer of a deleted file.
Also pause for a moment to display message about errors signaled in
`desktop-buffer-mode-handlers'.
@@ -763,45 +763,42 @@ See also `desktop-base-file-name'."
(setq locals (cdr locals)))
ll)))
(buffer-list)))
- (eager desktop-restore-eager)
- (buf (get-buffer-create "*desktop*")))
- (set-buffer buf)
- (erase-buffer)
-
- (insert
- ";; -*- mode: emacs-lisp; coding: utf-8-emacs; -*-\n"
- desktop-header
- ";; Created " (current-time-string) "\n"
- ";; Desktop file format version " desktop-file-version "\n"
- ";; Emacs version " emacs-version "\n\n"
- ";; Global section:\n")
- (mapc (function desktop-outvar) desktop-globals-to-save)
- (if (memq 'kill-ring desktop-globals-to-save)
- (insert
- "(setq kill-ring-yank-pointer (nthcdr "
- (int-to-string (- (length kill-ring) (length kill-ring-yank-pointer)))
- " kill-ring))\n"))
-
- (insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n")
- (mapc #'(lambda (l)
- (when (apply 'desktop-save-buffer-p l)
- (insert "("
- (if (or (not (integerp eager))
- (unless (zerop eager)
- (setq eager (1- eager))
- t))
- "desktop-create-buffer"
- "desktop-append-buffer-args")
- " "
- desktop-file-version)
- (mapc #'(lambda (e)
- (insert "\n " (desktop-value-to-string e)))
- l)
- (insert ")\n\n")))
- info)
- (setq default-directory dirname)
- (let ((coding-system-for-write 'utf-8-emacs))
- (write-region (point-min) (point-max) filename nil 'nomessage))))
+ (eager desktop-restore-eager))
+ (with-temp-buffer
+ (insert
+ ";; -*- mode: emacs-lisp; coding: utf-8-emacs; -*-\n"
+ desktop-header
+ ";; Created " (current-time-string) "\n"
+ ";; Desktop file format version " desktop-file-version "\n"
+ ";; Emacs version " emacs-version "\n\n"
+ ";; Global section:\n")
+ (mapc (function desktop-outvar) desktop-globals-to-save)
+ (if (memq 'kill-ring desktop-globals-to-save)
+ (insert
+ "(setq kill-ring-yank-pointer (nthcdr "
+ (int-to-string (- (length kill-ring) (length kill-ring-yank-pointer)))
+ " kill-ring))\n"))
+
+ (insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n")
+ (mapc #'(lambda (l)
+ (when (apply 'desktop-save-buffer-p l)
+ (insert "("
+ (if (or (not (integerp eager))
+ (unless (zerop eager)
+ (setq eager (1- eager))
+ t))
+ "desktop-create-buffer"
+ "desktop-append-buffer-args")
+ " "
+ desktop-file-version)
+ (mapc #'(lambda (e)
+ (insert "\n " (desktop-value-to-string e)))
+ l)
+ (insert ")\n\n")))
+ info)
+ (setq default-directory dirname)
+ (let ((coding-system-for-write 'utf-8-emacs))
+ (write-region (point-min) (point-max) filename nil 'nomessage)))))
(setq desktop-dirname dirname))
;; ----------------------------------------------------------------------------
@@ -946,7 +943,7 @@ directory DIRNAME."
(let ((msg (format "Desktop: File \"%s\" no longer exists."
desktop-buffer-file-name)))
(if desktop-missing-file-warning
- (y-or-n-p (concat msg " Re-create? "))
+ (y-or-n-p (concat msg " Re-create buffer? "))
(message "%s" msg)
nil)))
(let* ((auto-insert nil) ; Disable auto insertion
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index e207c60502d..0a467920f11 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -215,7 +215,9 @@ a directory. See also `dired-local-variables-file'."
:type 'boolean
:group 'dired-x)
-(defcustom dired-guess-shell-gnutar nil
+(defcustom dired-guess-shell-gnutar (when (or (eq system-type 'gnu)
+ (eq system-type 'gnu/linux))
+ "tar")
"*If non-nil, name of GNU tar executable.
\(E.g., \"tar\" or \"gtar\"). The `z' switch will be used with it for
compressed or gzip'ed tar files. If you don't have GNU tar, set this
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 9c363a52627..892ad0829a8 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -293,6 +293,7 @@ For example, add -*-byte-compile-dynamic: t;-*- on the first line.
When this option is true, if you load the compiled file and then move it,
the functions you loaded will not be able to run.")
+;;;###autoload(put 'byte-compile-dynamic 'safe-local-variable 'booleanp)
(defcustom byte-compile-dynamic-docstrings t
"*If non-nil, compile doc strings for lazy access.
@@ -311,6 +312,7 @@ You can also set the variable globally.
This option is enabled by default because it reduces Emacs memory usage."
:group 'bytecomp
:type 'boolean)
+;;;###autoload(put 'byte-compile-dynamic-docstrings 'safe-local-variable 'booleanp)
(defcustom byte-optimize-log nil
"*If true, the byte-compiler will log its optimizations into *Compile-Log*.
@@ -355,6 +357,20 @@ Elements of the list may be be:
(const callargs) (const redefine)
(const obsolete) (const noruntime)
(const cl-functions) (const interactive-only))))
+(put 'byte-compile-warnings 'safe-local-variable 'byte-compile-warnings-safe-p)
+;;;###autoload
+(defun byte-compile-warnings-safe-p (x)
+ (or (booleanp x)
+ (and (listp x)
+ (equal (mapcar
+ (lambda (e)
+ (when (memq e '(free-vars unresolved
+ callargs redefine
+ obsolete noruntime
+ cl-functions interactive-only))
+ e))
+ x)
+ x))))
(defvar byte-compile-interactive-only-functions
'(beginning-of-buffer end-of-buffer replace-string replace-regexp
@@ -1589,6 +1605,7 @@ recompile every `.el' file that already has a `.elc' file."
This is normally set in local file variables at the end of the elisp file:
;; Local Variables:\n;; no-byte-compile: t\n;; End: ")
+;;;###autoload(put 'no-byte-compile 'safe-local-variable 'booleanp)
;;;###autoload
(defun byte-compile-file (filename &optional load)
diff --git a/lisp/emacs-lisp/ewoc.el b/lisp/emacs-lisp/ewoc.el
index 6ef14558a6a..fa85ce21fb0 100644
--- a/lisp/emacs-lisp/ewoc.el
+++ b/lisp/emacs-lisp/ewoc.el
@@ -144,14 +144,6 @@
\(fn NODE CHILD)")
-(defun ewoc--node-enter-before (node elemnode)
- "Insert ELEMNODE before NODE in a DLL."
- (assert (and (null (ewoc--node-left elemnode)) (null (ewoc--node-right elemnode))))
- (setf (ewoc--node-left elemnode) (ewoc--node-left node))
- (setf (ewoc--node-right elemnode) node)
- (setf (ewoc--node-right (ewoc--node-left node)) elemnode)
- (setf (ewoc--node-left node) elemnode))
-
(defun ewoc--node-next (dll node)
"Return the node after NODE, or nil if NODE is the last node."
(unless (eq (ewoc--node-right node) dll) (ewoc--node-right node)))
@@ -213,36 +205,39 @@ BUT if it is the header or the footer in EWOC return nil instead."
(eq node (ewoc--footer ewoc)))
node))
-
-(defun ewoc--create-node (data pretty-printer pos)
- "Call PRETTY-PRINTER with point set at POS in current buffer.
-Remember the start position. Create a wrapper containing that
-start position and the element DATA."
+(defun ewoc--insert-new-node (node data pretty-printer)
+ "Insert before NODE a new node for DATA, displayed by PRETTY-PRINTER.
+Call PRETTY-PRINTER with point at NODE's start, thus pushing back
+NODE and leaving the new node's start there. Return the new node."
(save-excursion
- ;; Remember the position as a number so that it doesn't move
- ;; when we insert the string.
- (when (markerp pos) (setq pos (marker-position pos)))
- (goto-char pos)
- (let ((inhibit-read-only t))
+ (let* ((inhibit-read-only t)
+ (m (copy-marker (ewoc--node-start-marker node)))
+ (pos (marker-position m))
+ (elemnode (ewoc--node-create m data)))
+ (goto-char pos)
;; Insert the trailing newline using insert-before-markers
;; so that the start position for the next element is updated.
(insert-before-markers ?\n)
;; Move back, and call the pretty-printer.
(backward-char 1)
(funcall pretty-printer data)
- (ewoc--node-create (copy-marker pos) data))))
+ (setf (marker-position m) pos
+ (ewoc--node-left elemnode) (ewoc--node-left node)
+ (ewoc--node-right elemnode) node
+ (ewoc--node-right (ewoc--node-left node)) elemnode
+ (ewoc--node-left node) elemnode)
+ elemnode)))
(defun ewoc--refresh-node (pp node)
"Redisplay the element represented by NODE using the pretty-printer PP."
(let ((inhibit-read-only t))
- (save-excursion
- ;; First, remove the string from the buffer:
- (delete-region (ewoc--node-start-marker node)
- (1- (marker-position
- (ewoc--node-start-marker (ewoc--node-right node)))))
- ;; Calculate and insert the string.
- (goto-char (ewoc--node-start-marker node))
- (funcall pp (ewoc--node-data node)))))
+ ;; First, remove the string from the buffer:
+ (delete-region (ewoc--node-start-marker node)
+ (1- (marker-position
+ (ewoc--node-start-marker (ewoc--node-right node)))))
+ ;; Calculate and insert the string.
+ (goto-char (ewoc--node-start-marker node))
+ (funcall pp (ewoc--node-data node))))
;;; ===========================================================================
;;; Public members of the Ewoc package
@@ -271,22 +266,24 @@ be inserted at the bottom of the ewoc."
(new-ewoc
(ewoc--create (current-buffer)
pretty-printer nil nil dll))
- (pos (point)))
+ (pos (point))
+ head foot)
(ewoc--set-buffer-bind-dll new-ewoc
;; Set default values
(unless header (setq header ""))
(unless footer (setq footer ""))
- (setf (ewoc--node-start-marker dll) (copy-marker pos))
- (let ((foot (ewoc--create-node footer 'insert pos))
- (head (ewoc--create-node header 'insert pos)))
- (ewoc--node-enter-before (ewoc--node-right dll) head)
- (ewoc--node-enter-before dll foot)
- (setf (ewoc--header new-ewoc) head)
- (setf (ewoc--footer new-ewoc) foot)))
+ (setf (ewoc--node-start-marker dll) (copy-marker pos)
+ foot (ewoc--insert-new-node dll footer 'insert)
+ head (ewoc--insert-new-node foot header 'insert)
+ (ewoc--footer new-ewoc) foot
+ (ewoc--header new-ewoc) head))
;; Return the ewoc
new-ewoc))
-(defalias 'ewoc-data 'ewoc--node-data)
+(defalias 'ewoc-data 'ewoc--node-data
+ "Extract the data encapsulated by NODE and return it.
+
+\(fn NODE)")
(defun ewoc-enter-first (ewoc data)
"Enter DATA first in EWOC.
@@ -311,12 +308,7 @@ Return the new node."
"Enter a new element DATA before NODE in EWOC.
Return the new node."
(ewoc--set-buffer-bind-dll ewoc
- (ewoc--node-enter-before
- node
- (ewoc--create-node
- data
- (ewoc--pretty-printer ewoc)
- (ewoc--node-start-marker node)))))
+ (ewoc--insert-new-node node data (ewoc--pretty-printer ewoc))))
(defun ewoc-next (ewoc node)
"Return the node in EWOC that follows NODE.
@@ -340,7 +332,7 @@ N counts from zero. Return nil if there is less than N elements.
If N is negative, return the -(N+1)th last element.
Thus, (ewoc-nth dll 0) returns the first node,
and (ewoc-nth dll -1) returns the last node.
-Use `ewoc--node-data' to extract the data from the node."
+Use `ewoc-data' to extract the data from the node."
;; Skip the header (or footer, if n is negative).
(setq n (if (< n 0) (1- n) (1+ n)))
(ewoc--filter-hf-nodes ewoc
@@ -361,10 +353,11 @@ arguments will be passed to MAP-FUNCTION."
(ewoc--set-buffer-bind-dll-let* ewoc
((footer (ewoc--footer ewoc))
(node (ewoc--node-nth dll 1)))
- (while (not (eq node footer))
- (if (apply map-function (ewoc--node-data node) args)
- (ewoc--refresh-node (ewoc--pretty-printer ewoc) node))
- (setq node (ewoc--node-next dll node)))))
+ (save-excursion
+ (while (not (eq node footer))
+ (if (apply map-function (ewoc--node-data node) args)
+ (ewoc--refresh-node (ewoc--pretty-printer ewoc) node))
+ (setq node (ewoc--node-next dll node))))))
(defun ewoc-filter (ewoc predicate &rest args)
"Remove all elements in EWOC for which PREDICATE returns nil.
@@ -473,8 +466,9 @@ If the EWOC is empty, nil is returned."
"Call EWOC's pretty-printer for each element in NODES.
Delete current text first, thus effecting a \"refresh\"."
(ewoc--set-buffer-bind-dll ewoc
- (dolist (node nodes)
- (ewoc--refresh-node (ewoc--pretty-printer ewoc) node))))
+ (save-excursion
+ (dolist (node nodes)
+ (ewoc--refresh-node (ewoc--pretty-printer ewoc) node)))))
(defun ewoc-goto-prev (ewoc arg)
"Move point to the ARGth previous element in EWOC.
@@ -526,11 +520,11 @@ number of elements needs to be refreshed."
(delete-region (ewoc--node-start-marker (ewoc--node-nth dll 1))
(ewoc--node-start-marker footer))
(goto-char (ewoc--node-start-marker footer))
- (let ((node (ewoc--node-nth dll 1)))
+ (let ((pp (ewoc--pretty-printer ewoc))
+ (node (ewoc--node-nth dll 1)))
(while (not (eq node footer))
(set-marker (ewoc--node-start-marker node) (point))
- (funcall (ewoc--pretty-printer ewoc)
- (ewoc--node-data node))
+ (funcall pp (ewoc--node-data node))
(insert "\n")
(setq node (ewoc--node-next dll node)))))
(set-marker (ewoc--node-start-marker footer) (point))))
@@ -572,8 +566,9 @@ Return nil if the buffer has been deleted."
"Set the HEADER and FOOTER of EWOC."
(setf (ewoc--node-data (ewoc--header ewoc)) header)
(setf (ewoc--node-data (ewoc--footer ewoc)) footer)
- (ewoc--refresh-node 'insert (ewoc--header ewoc))
- (ewoc--refresh-node 'insert (ewoc--footer ewoc)))
+ (save-excursion
+ (ewoc--refresh-node 'insert (ewoc--header ewoc))
+ (ewoc--refresh-node 'insert (ewoc--footer ewoc))))
(provide 'ewoc)
diff --git a/lisp/files.el b/lisp/files.el
index 29cd3038500..16df2661fcf 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -162,6 +162,7 @@ The truename of a file is found by chasing all links
both at the file level and at the levels of the containing directories."
:type 'boolean
:group 'find-file)
+(put 'find-file-visit-truename 'safe-local-variable 'boolean)
(defcustom revert-without-query nil
"*Specify which files should be reverted without query.
@@ -249,6 +250,8 @@ nil means make them for files that have some already.
(other :tag "Always" t))
:group 'backup
:group 'vc)
+(put 'version-control 'safe-local-variable
+ '(lambda (x) (or (booleanp x) (equal x 'never))))
(defcustom dired-kept-versions 2
"*When cleaning directory, number of versions to keep."
@@ -268,12 +271,14 @@ If nil, ask confirmation. Any other value prevents any trimming."
"*Number of oldest versions to keep when a new numbered backup is made."
:type 'integer
:group 'backup)
+(put 'kept-old-versions 'safe-local-variable 'integerp)
(defcustom kept-new-versions 2
"*Number of newest versions to keep when a new numbered backup is made.
Includes the new backup. Must be > 0"
:type 'integer
:group 'backup)
+(put 'kept-new-versions 'safe-local-variable 'integerp)
(defcustom require-final-newline nil
"*Whether to add a newline automatically at the end of the file.
@@ -1892,8 +1897,8 @@ in that case, this function acts as if `enable-local-variables' were t."
("\\.tar\\'" . tar-mode)
;; The list of archive file extensions should be in sync with
;; `auto-coding-alist' with `no-conversion' coding system.
- ("\\.\\(arc\\|zip\\|lzh\\|zoo\\|[jew]ar\\|xpi\\)\\'" . archive-mode)
- ("\\.\\(ARC\\|ZIP\\|LZH\\|ZOO\\|[JEW]AR\\|XPI\\)\\'" . archive-mode)
+ ("\\.\\(arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\)\\'" . archive-mode)
+ ("\\.\\(ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\)\\'" . archive-mode)
("\\.\\(sx[dmicw]\\|odt\\)\\'" . archive-mode) ; OpenOffice.org
;; Mailer puts message to be edited in
;; /tmp/Re.... or Message
@@ -2351,27 +2356,12 @@ asking you for confirmation."
;; FIXME: Some variables should be moved according to the rules above.
(mapc (lambda (pair)
(put (car pair) 'safe-local-variable (cdr pair)))
- '((byte-compile-dynamic . booleanp)
- (byte-compile-dynamic-docstrings . booleanp)
- (byte-compile-warnings . booleanp)
- (c-basic-offset . integerp)
- (c-file-style . stringp)
- (c-indent-level . integerp)
- (comment-column . integerp)
- (compile-command . string-or-null-p)
- (find-file-visit-truename . booleanp)
- (fill-column . integerp)
- (fill-prefix . string-or-null-p)
+ '((fill-column . integerp) ;; C source code
(indent-tabs-mode . booleanp) ;; C source code
- (kept-old-versions . integerp)
- (kept-new-versions . integerp)
- (left-margin . integerp)
- (no-byte-compile . booleanp)
+ (left-margin . integerp) ;; C source code
(no-update-autoloads . booleanp)
- (outline-regexp . string-or-null-p)
(tab-width . integerp) ;; C source code
- (truncate-lines . booleanp) ;; C source code
- (version-control . symbolp)))
+ (truncate-lines . booleanp))) ;; C source code
(put 'c-set-style 'safe-local-eval-function t)
@@ -4114,7 +4104,7 @@ non-nil, it is called instead of rereading visited file contents."
(let ((inhibit-read-only t)
;; Keep the current buffer-file-coding-system.
(coding-system buffer-file-coding-system)
- ;; Auto-saved file shoule be read with special coding.
+ ;; Auto-saved file should be read with special coding.
(coding-system-for-read 'auto-save-coding))
(erase-buffer)
(insert-file-contents file-name nil)
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index 2b75e7fd053..69555feb170 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -642,10 +642,12 @@ it is displayed along with the global value."
(princ (if (stringp (car obsolete)) (car obsolete)
(format "use `%s' instead." (car obsolete))))
(terpri))
- (when safe-var
- (princ "This variable is safe to use as a file local variable")
- (princ (format " only if its value\nsatisfies the predicate `%s'.\n"
- safe-var))
+ (when safe-var
+ (princ "This variable is safe as a file local variable ")
+ (princ "if its value\nsatisfies the predicate ")
+ (princ (if (byte-code-function-p safe-var)
+ "which is byte-compiled expression.\n"
+ (format "`%s'.\n" safe-var)))
(terpri))
(princ "Documentation:\n")
(princ (or doc "Not documented as a variable.")))
diff --git a/lisp/hexl.el b/lisp/hexl.el
index 1e724aa418a..e2078fceecb 100644
--- a/lisp/hexl.el
+++ b/lisp/hexl.el
@@ -704,7 +704,12 @@ This discards the buffer's undo information."
(buffer-undo-list t))
(apply 'call-process-region (point-min) (point-max)
(expand-file-name hexl-program exec-directory)
- t t nil (split-string hexl-options))
+ t t nil
+ ;; Manually encode the args, otherwise they're encoded using
+ ;; coding-system-for-write (i.e. buffer-file-coding-system) which
+ ;; may not be what we want (e.g. utf-16 on a non-utf-16 system).
+ (mapcar (lambda (s) (encode-coding-string s locale-coding-system))
+ (split-string hexl-options)))
(if (> (point) (hexl-address-to-marker hexl-max-address))
(hexl-goto-address hexl-max-address))))
diff --git a/lisp/international/mule.el b/lisp/international/mule.el
index 82c022075a4..9e0edb75f29 100644
--- a/lisp/international/mule.el
+++ b/lisp/international/mule.el
@@ -1560,8 +1560,8 @@ text, and convert it in the temporary buffer. Otherwise, convert in-place."
;;; FILE I/O
(defcustom auto-coding-alist
- '(("\\.\\(arc\\|zip\\|lzh\\|zoo\\|[jew]ar\\|xpi\\)\\'" . no-conversion)
- ("\\.\\(ARC\\|ZIP\\|LZH\\|ZOO\\|[JEW]AR\\|XPI\\)\\'" . no-conversion)
+ '(("\\.\\(arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\)\\'" . no-conversion)
+ ("\\.\\(ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\)\\'" . no-conversion)
("\\.\\(sx[dmicw]\\|odt\\|tar\\|tgz\\)\\'" . no-conversion)
("\\.\\(gz\\|Z\\|bz\\|bz2\\|gpg\\)\\'" . no-conversion)
("\\.\\(jpe?g\\|png\\|gif\\|tiff?\\|p[bpgn]m\\)\\'" . no-conversion)
diff --git a/lisp/newcomment.el b/lisp/newcomment.el
index d5a2cea914a..5dfa1eb8959 100644
--- a/lisp/newcomment.el
+++ b/lisp/newcomment.el
@@ -104,6 +104,7 @@ not to go beyond `comment-fill-column'."
:type 'integer
:group 'comment)
(make-variable-buffer-local 'comment-column)
+;;;###autoload(put 'comment-column 'safe-local-variable 'integerp)
;;;###autoload
(defvar comment-start nil
diff --git a/lisp/outline.el b/lisp/outline.el
index 92542bae7e3..0cd6eaa7186 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -54,6 +54,7 @@ The recommended way to set this is with a Local Variables: list
in the file it applies to. See also `outline-heading-end-regexp'."
:type '(choice regexp (const nil))
:group 'outlines)
+;;;###autoload(put 'outline-regexp 'safe-local-variable 'string-or-null-p)
(defcustom outline-heading-end-regexp "\n"
"Regular expression to match the end of a heading line.
diff --git a/lisp/progmodes/cc-compat.el b/lisp/progmodes/cc-compat.el
index 59cd5232402..d08c9fc0162 100644
--- a/lisp/progmodes/cc-compat.el
+++ b/lisp/progmodes/cc-compat.el
@@ -62,6 +62,8 @@
;; In case c-mode.el isn't loaded
(defvar c-indent-level 2
"*Indentation of C statements with respect to containing block.")
+;;;###autoload(put 'c-indent-level 'safe-local-variable 'integerp)
+
(defvar c-brace-imaginary-offset 0
"*Imagined indentation of a C open brace that actually follows a statement.")
(defvar c-brace-offset 0
diff --git a/lisp/progmodes/cc-subword.el b/lisp/progmodes/cc-subword.el
index 72227e33290..c1ed9e300e7 100644
--- a/lisp/progmodes/cc-subword.el
+++ b/lisp/progmodes/cc-subword.el
@@ -167,6 +167,8 @@ Optional argument ARG is the same as for `forward-word'."
(t
(point))))
+(put 'c-forward-subword 'CUA 'move)
+
(defun c-backward-subword (&optional arg)
"Do the same as `backward-word' but on subwords.
See the command `c-subword-mode' for a description of subwords.
@@ -193,6 +195,8 @@ Optional argument ARG is the same as for `mark-word'."
(point))
nil t))))
+(put 'c-backward-subword 'CUA 'move)
+
(defun c-kill-subword (arg)
"Do the same as `kill-word' but on subwords.
See the command `c-subword-mode' for a description of subwords.
@@ -222,7 +226,7 @@ Optional argument ARG is the same as for `capitalize-word'."
(let ((count (abs arg))
(direction (if (< 0 arg) 1 -1)))
(dotimes (i count)
- (when (re-search-forward
+ (when (re-search-forward
(concat "[" c-alpha "]")
nil t)
(goto-char (match-beginning 0)))
@@ -253,15 +257,15 @@ Optional argument ARG is the same as for `upcase-word'."
;;
(defun c-forward-subword-internal ()
(if (and
- (save-excursion
+ (save-excursion
(let ((case-fold-search nil))
- (re-search-forward
+ (re-search-forward
(concat "\\W*\\(\\([" c-upper "]*\\W?\\)[" c-lower c-digit "]*\\)")
nil t)))
(> (match-end 0) (point))) ; So we don't get stuck at a
; "word-constituent" which isn't c-upper,
; c-lower or c-digit
- (goto-char
+ (goto-char
(cond
((< 1 (- (match-end 2) (match-beginning 2)))
(1- (match-end 2)))
@@ -271,15 +275,15 @@ Optional argument ARG is the same as for `upcase-word'."
(defun c-backward-subword-internal ()
- (if (save-excursion
- (let ((case-fold-search nil))
+ (if (save-excursion
+ (let ((case-fold-search nil))
(re-search-backward
(concat
"\\(\\(\\W\\|[" c-lower c-digit "]\\)\\([" c-upper "]+\\W*\\)"
- "\\|\\W\\w+\\)")
+ "\\|\\W\\w+\\)")
nil t)))
- (goto-char
- (cond
+ (goto-char
+ (cond
((and (match-end 3)
(< 1 (- (match-end 3) (match-beginning 3)))
(not (eq (point) (match-end 3))))
diff --git a/lisp/progmodes/cc-vars.el b/lisp/progmodes/cc-vars.el
index ee187408701..64e38be62d0 100644
--- a/lisp/progmodes/cc-vars.el
+++ b/lisp/progmodes/cc-vars.el
@@ -248,6 +248,7 @@ Also used as the indentation step when `c-syntactic-indentation' is
nil."
:type 'integer
:group 'c)
+;;;###autoload(put 'c-basic-offset 'safe-local-variable 'integerp)
(defcustom c-tab-always-indent t
"*Controls the operation of the TAB key.
@@ -1542,6 +1543,7 @@ will set the style of the file to this value automatically.
Note that file style settings are applied before file offset settings
as designated in the variable `c-file-offsets'.")
(make-variable-buffer-local 'c-file-style)
+;;;###autoload(put 'c-file-style 'safe-local-variable 'string-or-null-p)
(defvar c-file-offsets nil
"Variable interface for setting offsets via File Local Variables.
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index 2fa3ee0ff15..527624bfc4e 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -453,6 +453,7 @@ You might also use mode hooks to specify it in certain modes, like this:
(file-name-sans-extension buffer-file-name))))))"
:type 'string
:group 'compilation)
+;;;###autoload(put 'compile-command 'safe-local-variable 'stringp)
;;;###autoload
(defcustom compilation-disable-input nil
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el
index a20f11e0aa2..f5d08d533fd 100644
--- a/lisp/progmodes/gdb-ui.el
+++ b/lisp/progmodes/gdb-ui.el
@@ -732,9 +732,9 @@ With arg, enter name of variable to be watched in the minibuffer."
(gdb-enqueue-input
(list
(if (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer) 'gdba)
- (concat "server interpreter mi \"-var-evaluate-expression "
+ (concat "server interpreter mi \"0-var-evaluate-expression "
(car var) "\"\n")
- (concat "-var-evaluate-expression " (car var) "\n"))
+ (concat "0-var-evaluate-expression " (car var) "\n"))
`(lambda () (gdb-var-evaluate-expression-handler
,(car var) nil)))))
(if (search-forward "Undefined command" nil t)
@@ -755,11 +755,13 @@ With arg, enter name of variable to be watched in the minibuffer."
(defun gdb-var-evaluate-expression-handler (varnum changed)
(goto-char (point-min))
- (re-search-forward ".*value=\\(\".*\"\\)" nil t)
+ (re-search-forward "\\(.+\\)\\^done,value=\\(\".*\"\\)" nil t)
+ (setq gdb-pending-triggers
+ (delq (string-to-number (match-string 1)) gdb-pending-triggers))
(let ((var (assoc varnum gdb-var-list)))
(when var
(if changed (setcar (nthcdr 5 var) 'changed))
- (setcar (nthcdr 4 var) (read (match-string 1)))))
+ (setcar (nthcdr 4 var) (read (match-string 2)))))
(gdb-speedbar-update))
(defun gdb-var-list-children (varnum)
@@ -791,7 +793,7 @@ numchild=\"\\(.*?\\)\",.*?type=\"\\(.*?\\)\".*?}")
(gdb-enqueue-input
(list
(concat
- "server interpreter mi \"-var-evaluate-expression "
+ "server interpreter mi \"0-var-evaluate-expression "
(car varchild) "\"\n")
`(lambda () (gdb-var-evaluate-expression-handler
,(car varchild) nil)))))))
@@ -813,16 +815,19 @@ type_changed=\".*?\".*?}")
(dolist (var gdb-var-list)
(setcar (nthcdr 5 var) nil))
(goto-char (point-min))
- (while (re-search-forward gdb-var-update-regexp nil t)
- (let ((varnum (match-string 1)))
- (if (string-equal (match-string 2) "false")
- (let ((var (assoc varnum gdb-var-list)))
- (if var (setcar (nthcdr 5 var) 'out-of-scope)))
- (gdb-enqueue-input
- (list
- (concat "server interpreter mi \"-var-evaluate-expression "
- varnum "\"\n")
- `(lambda () (gdb-var-evaluate-expression-handler ,varnum t)))))))
+ (let ((n 0))
+ (while (re-search-forward gdb-var-update-regexp nil t)
+ (let ((varnum (match-string 1)))
+ (if (string-equal (match-string 2) "false")
+ (let ((var (assoc varnum gdb-var-list)))
+ (if var (setcar (nthcdr 5 var) 'out-of-scope)))
+ (setq n (1+ n))
+ (push n gdb-pending-triggers)
+ (gdb-enqueue-input
+ (list
+ (concat "server interpreter mi \"" (number-to-string n)
+ "-var-evaluate-expression " varnum "\"\n")
+ `(lambda () (gdb-var-evaluate-expression-handler ,varnum t))))))))
(setq gdb-pending-triggers
(delq 'gdb-var-update gdb-pending-triggers)))
@@ -832,7 +837,9 @@ type_changed=\".*?\".*?}")
(if (memq (buffer-local-value 'gud-minor-mode gud-comint-buffer)
'(gdbmi gdba))
(let ((text (speedbar-line-text)))
- (string-match "\\(\\S-+\\)" text)
+ ;; Can't use \\S-+ for whitespace because
+ ;; speedbar has a whacky syntax table.
+ (string-match "\\([^ \t]+\\)" text)
(let ((expr (match-string 1 text)) var varnum)
(catch 'expr-found
(dolist (var1 gdb-var-list)
@@ -2803,6 +2810,7 @@ Kills the gdb buffers, and resets variables and the source buffers."
(setq overlay-arrow-variable-list
(delq 'gdb-overlay-arrow-position overlay-arrow-variable-list))
(setq fringe-indicator-alist '((overlay-arrow . right-triangle)))
+ (if (boundp 'speedbar-frame) (speedbar-timer-fn))
(setq gud-running nil)
(setq gdb-active-process nil)
(setq gdb-var-list nil)
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 5be88668353..d2e6cfc4ae4 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -3480,7 +3480,8 @@ so they have been disabled."))
gdb-server-prefix "macro expand " expr "\n")
`(lambda () (gdb-tooltip-print-1 ,expr))))
(gdb-enqueue-input
- (list (concat cmd "\n") 'gdb-tooltip-print)))
+ (list (concat cmd "\n")
+ `(lambda () (gdb-tooltip-print ,expr)))))
(setq gud-tooltip-original-filter (process-filter process))
(set-process-filter process 'gud-tooltip-process-output)
(gud-basic-call cmd))
diff --git a/lisp/server.el b/lisp/server.el
index 43b2dc63389..d20caf34f79 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -252,8 +252,6 @@ Emacs distribution as your standard \"editor\".
Prefix arg means just kill any existing server communications subprocess."
(interactive "P")
- ;; Make sure there is a safe directory in which to place the socket.
- (server-ensure-safe-dir server-socket-dir)
;; kill it dead!
(if server-process
(condition-case () (delete-process server-process) (error nil)))
@@ -265,7 +263,10 @@ Prefix arg means just kill any existing server communications subprocess."
(while server-clients
(let ((buffer (nth 1 (car server-clients))))
(server-buffer-done buffer)))
+ ;; Now any previous server is properly stopped.
(unless leave-dead
+ ;; Make sure there is a safe directory in which to place the socket.
+ (server-ensure-safe-dir server-socket-dir)
(if server-process
(server-log (message "Restarting server")))
(letf (((default-file-modes) ?\700))
@@ -578,7 +579,7 @@ starts server process and that is all. Invoked by \\[server-edit]."
(if (or arg
(not server-process)
(memq (process-status server-process) '(signal exit)))
- (server-start nil)
+ (server-mode 1)
(apply 'server-switch-buffer (server-done))))
(defun server-switch-buffer (&optional next-buffer killed-one)
@@ -637,14 +638,15 @@ Arg NEXT-BUFFER is a suggestion; if it is a live buffer, use it."
(define-key ctl-x-map "#" 'server-edit)
(defun server-unload-hook ()
- (server-start t)
+ (server-mode -1)
(remove-hook 'kill-buffer-query-functions 'server-kill-buffer-query-function)
(remove-hook 'kill-emacs-query-functions 'server-kill-emacs-query-function)
(remove-hook 'kill-buffer-hook 'server-kill-buffer))
+(add-hook 'kill-emacs-hook (lambda () (server-mode -1))) ;Cleanup upon exit.
(add-hook 'server-unload-hook 'server-unload-hook)
(provide 'server)
-;;; arch-tag: 1f7ecb42-f00a-49f8-906d-61995d84c8d6
+;; arch-tag: 1f7ecb42-f00a-49f8-906d-61995d84c8d6
;;; server.el ends here
diff --git a/lisp/simple.el b/lisp/simple.el
index 9fc0770ad68..6d7e3d0a3d9 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -3646,7 +3646,8 @@ Outline mode sets this."
;; Move to the chosen destination position from above,
;; with intangibility processing enabled.
- (goto-char (point-min))
+ ;; Avoid calling point-entered and point-left.
+ (goto-char new)
(let ((inhibit-point-motion-hooks nil))
(goto-char new)
@@ -4058,6 +4059,7 @@ If optional arg REALLY-WORD is non-nil, it finds just a word."
string)
:group 'fill)
(make-variable-buffer-local 'fill-prefix)
+;;;###autoload(put 'fill-prefix 'safe-local-variable 'string-or-null-p)
(defcustom auto-fill-inhibit-regexp nil
"*Regexp to match lines which should not be auto-filled."
diff --git a/lisp/subr.el b/lisp/subr.el
index 5cc5be5f56b..cd0ce2d3f33 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1123,28 +1123,36 @@ The return value is the new value of LIST-VAR."
(< oa ob)
oa)))))))
-(defun add-to-history (history-var newelt &optional maxelt)
+(defun add-to-history (history-var newelt &optional maxelt keep-all)
"Add NEWELT to the history list stored in the variable HISTORY-VAR.
Return the new history list.
If MAXELT is non-nil, it specifies the maximum length of the history.
Otherwise, the maximum history length is the value of the `history-length'
property on symbol HISTORY-VAR, if set, or the value of the `history-length'
variable.
-Remove duplicates of NEWELT unless `history-delete-duplicates' is nil."
+Remove duplicates of NEWELT if `history-delete-duplicates' is non-nil.
+If optional fourth arg KEEP-ALL is non-nil, add NEWELT to history even
+if it is empty or a duplicate."
(unless maxelt
(setq maxelt (or (get history-var 'history-length)
history-length)))
(let ((history (symbol-value history-var))
tail)
- (if history-delete-duplicates
- (setq history (delete newelt history)))
- (setq history (cons newelt history))
- (when (integerp maxelt)
- (if (= 0 maxelt)
- (setq history nil)
- (setq tail (nthcdr (1- maxelt) history))
- (when (consp tail)
- (setcdr tail nil))))
+ (when (and (listp history)
+ (or keep-all
+ (not (stringp newelt))
+ (> (length newelt) 0))
+ (or keep-all
+ (not (equal (car history) newelt))))
+ (if history-delete-duplicates
+ (delete newelt history))
+ (setq history (cons newelt history))
+ (when (integerp maxelt)
+ (if (= 0 maxelt)
+ (setq history nil)
+ (setq tail (nthcdr (1- maxelt) history))
+ (when (consp tail)
+ (setcdr tail nil)))))
(set history-var history)))
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index 9ce9f34da96..6e6c75ade42 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -230,7 +230,7 @@
;; These keys will be available xterm starting probably from
;; version 214.
- (define-key map "\e[27;5;8~" [(control ?\t)])
+ (define-key map "\e[27;5;9~" [(control ?\t)])
(define-key map "\e[27;5;44~" [(control ?\,)])
(define-key map "\e[27;5;46~" [(control ?\.)])
(define-key map "\e[27;5;47~" [(control ?\/)])
diff --git a/lisp/textmodes/org.el b/lisp/textmodes/org.el
index 3c18eda2305..ea9aa4448ee 100644
--- a/lisp/textmodes/org.el
+++ b/lisp/textmodes/org.el
@@ -4348,6 +4348,7 @@ used to insert the time stamp into the buffer to include the time."
(parse-time-string (match-string 1))))
ct))
(calendar-move-hook nil)
+ (view-calendar-holidays-initially nil)
(view-diary-entries-initially nil)
(timestr (format-time-string
(if with-time "%Y-%m-%d %H:%M" "%Y-%m-%d") default-time))
@@ -4724,6 +4725,7 @@ A prefix ARG can be used to force the current date."
(interactive "P")
(let ((tsr org-ts-regexp) diff
(calendar-move-hook nil)
+ (view-calendar-holidays-initially nil)
(view-diary-entries-initially nil))
(if (or (org-at-timestamp-p)
(save-excursion
@@ -6910,6 +6912,7 @@ argument, latitude and longitude will be prompted for."
(error "Don't know which date to open in calendar")))
(date (calendar-gregorian-from-absolute day))
(calendar-move-hook nil)
+ (view-calendar-holidays-initially nil)
(view-diary-entries-initially nil))
(calendar)
(calendar-goto-date date)))
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index 1c3e383c9fb..8eb2cd8471b 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,7 @@
+2006-05-12 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * url-http.el (url-http-file-exists-p): Test if status is integer.
+
2006-05-05 Andreas Seltenreich <seltenreich@gmx.de> (tiny change)
* url-http.el (url-http-parse-headers): Don't reuse connection if
diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index 45bf97ec6b6..ae3a4b3e070 100644
--- a/lisp/url/url-http.el
+++ b/lisp/url/url-http.el
@@ -1141,7 +1141,8 @@ CBARGS as the arguments."
(setq exists nil)
(setq status (url-http-symbol-value-in-buffer 'url-http-response-status
buffer 500)
- exists (and (>= status 200) (< status 300)))
+ exists (and (integerp status)
+ (>= status 200) (< status 300)))
(kill-buffer buffer))
exists))
diff --git a/lispintro/emacs-lisp-intro.texi b/lispintro/emacs-lisp-intro.texi
index b5719a4d214..c7fef17061f 100644
--- a/lispintro/emacs-lisp-intro.texi
+++ b/lispintro/emacs-lisp-intro.texi
@@ -17100,7 +17100,7 @@ Set the shape and color of the mouse cursor:
@item
Convert @kbd{@key{CTL}-h} into @key{DEL} and @key{DEL}
into @kbd{@key{CTL}-h}.@*
-(Some olders keyboards needed this, although I have not seen the
+(Some older keyboards needed this, although I have not seen the
problem recently.)
@smallexample
@@ -19489,7 +19489,7 @@ in this case would end up as 15.)
@cindex Print horizontal axis
@cindex Horizontal axis printing
-X axis labels are much like Y axis labels, except that the tics are on a
+X axis labels are much like Y axis labels, except that the ticks are on a
line above the numbers. Labels should look like this:
@smallexample
@@ -19501,7 +19501,7 @@ line above the numbers. Labels should look like this:
The first tic is under the first column of the graph and is preceded by
several blank spaces. These spaces provide room in rows above for the Y
-axis labels. The second, third, fourth, and subsequent tics are all
+axis labels. The second, third, fourth, and subsequent ticks are all
spaced equally, according to the value of @code{X-axis-label-spacing}.
The second row of the X axis consists of numbers, preceded by several
@@ -19629,7 +19629,7 @@ looks like this:
@end smallexample
We also need to determine the length of the horizontal axis, which is
-the length of the numbers list, and the number of tics in the horizontal
+the length of the numbers list, and the number of ticks in the horizontal
axis:
@smallexample
@@ -19646,7 +19646,7 @@ axis:
@end group
@group
-;; number-of-X-tics
+;; number-of-X-ticks
(if (zerop (% (X-length tic-width)))
(/ (X-length tic-width))
(1+ (/ (X-length tic-width))))
@@ -19661,7 +19661,7 @@ All this leads us directly to the function for printing the X axis tic line:
@group
(defun print-X-axis-tic-line
(number-of-X-tics X-axis-leading-spaces X-axis-tic-element)
- "Print tics for X axis."
+ "Print ticks for X axis."
(insert X-axis-leading-spaces)
(insert X-axis-tic-symbol) ; @r{Under first column.}
@end group
@@ -19676,7 +19676,7 @@ All this leads us directly to the function for printing the X axis tic line:
X-axis-tic-symbol))
@end group
@group
- ;; @r{Insert remaining tics.}
+ ;; @r{Insert remaining ticks.}
(while (> number-of-X-tics 1)
(insert X-axis-tic-element)
(setq number-of-X-tics (1- number-of-X-tics))))
@@ -20905,7 +20905,7 @@ Optionally, print according to VERTICAL-STEP."
@group
(defun print-X-axis-tic-line
(number-of-X-tics X-axis-leading-spaces X-axis-tic-element)
- "Print tics for X axis."
+ "Print ticks for X axis."
(insert X-axis-leading-spaces)
(insert X-axis-tic-symbol) ; @r{Under first column.}
@end group
@@ -20920,7 +20920,7 @@ Optionally, print according to VERTICAL-STEP."
X-axis-tic-symbol))
@end group
@group
- ;; @r{Insert remaining tics.}
+ ;; @r{Insert remaining ticks.}
(while (> number-of-X-tics 1)
(insert X-axis-tic-element)
(setq number-of-X-tics (1- number-of-X-tics))))
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index 56e6dc9ba3f..caf04b086a7 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,53 @@
+2006-05-16 Kim F. Storm <storm@cua.dk>
+
+ * minibuf.texi (Minibuffer History): Update add-to-history.
+
+2006-05-15 Oliver Scholz <epameinondas@gmx.de> (tiny change)
+
+ * nonascii.texi (Explicit Encoding): Fix
+ typo (encoding<->decoding).
+
+2006-05-14 Richard Stallman <rms@gnu.org>
+
+ * buffers.texi (Creating Buffers): Cleanup.
+
+ * files.texi (Visiting Functions): Rewrite in find-file-noselect.
+
+2006-05-13 Eli Zaretskii <eliz@gnu.org>
+
+ * buffers.texi (Current Buffer): Document that with-temp-buffer
+ disables undo.
+
+ * os.texi (Terminal-Specific): More accurate description of how
+ Emacs searches for the terminal-specific libraries.
+
+2006-05-12 Eli Zaretskii <eliz@gnu.org>
+
+ * hooks.texi (Standard Hooks) [iftex]: Convert @xref's to
+ emacs-xtra to @inforef's.
+
+ * text.texi (Undo): Document that undo is turned off in buffers
+ whose names begin with a space.
+
+ * buffers.texi (Buffer Names): Add index entries for buffers whose
+ names begin with a space.
+ (Creating Buffers): Document that undo is turned off in buffers
+ whose names begin with a space.
+
+ * files.texi (Visiting Functions, Reading from Files)
+ (Saving Buffers): Mention code and EOL conversions by file I/O
+ primitives and subroutines.
+
+ * nonascii.texi (Lisp and Coding Systems): Document
+ coding-system-eol-type. Add index entries for eol conversion.
+
+ * display.texi (Defining Faces): Mention `mac', and add an xref to
+ where window-system is described.
+
+2006-05-10 Richard Stallman <rms@gnu.org>
+
+ * internals.texi (Writing Emacs Primitives): Clarify GCPRO rules.
+
2006-05-10 Reiner Steib <Reiner.Steib@gmx.de>
* variables.texi (File Local Variables): Recommend to quote lambda
diff --git a/lispref/buffers.texi b/lispref/buffers.texi
index c0eb2ee6664..55e41e6b3e5 100644
--- a/lispref/buffers.texi
+++ b/lispref/buffers.texi
@@ -233,7 +233,9 @@ The @code{with-temp-buffer} macro evaluates the @var{body} forms
with a temporary buffer as the current buffer. It saves the identity of
the current buffer, creates a temporary buffer and makes it current,
evaluates the @var{body} forms, and finally restores the previous
-current buffer while killing the temporary buffer.
+current buffer while killing the temporary buffer. By default, undo
+information (@pxref{Undo}) is not recorded in the buffer created by
+this macro (but @var{body} can enable that, if needed).
The return value is the value of the last form in @var{body}. You can
return the contents of the temporary buffer by using
@@ -257,6 +259,8 @@ sort, and an error is signaled if it is neither a string nor a buffer.
Any argument called @var{buffer} must be an actual buffer
object, not a name.
+@cindex hidden buffers
+@cindex buffers without undo information
Buffers that are ephemeral and generally uninteresting to the user
have names starting with a space, so that the @code{list-buffers} and
@code{buffer-menu} commands don't mention them (but if such a buffer
@@ -908,8 +912,9 @@ nor a buffer.
@end example
The major mode for a newly created buffer is set to Fundamental mode.
-The variable @code{default-major-mode} is handled at a higher level.
-@xref{Auto Major Mode}.
+(The variable @code{default-major-mode} is handled at a higher level;
+see @ref{Auto Major Mode}.) If the name begins with a space, the
+buffer initially disables undo information recording (@pxref{Undo}).
@end defun
@defun generate-new-buffer name
diff --git a/lispref/display.texi b/lispref/display.texi
index 60084f98e8b..b9051f5ca6e 100644
--- a/lispref/display.texi
+++ b/lispref/display.texi
@@ -1772,8 +1772,9 @@ apply to. Here are the possible values of @var{characteristic}:
@item type
The kind of window system the frame uses---either @code{graphic} (any
graphics-capable display), @code{x}, @code{pc} (for the MS-DOS console),
-@code{w32} (for MS Windows 9X/NT), or @code{tty} (a non-graphics-capable
-display).
+@code{w32} (for MS Windows 9X/NT/2K/XP), @code{mac} (for the Macintosh
+display), or @code{tty} (a non-graphics-capable display).
+@xref{Window Systems, window-system}.
@item class
What kinds of colors the frame supports---either @code{color},
diff --git a/lispref/files.texi b/lispref/files.texi
index 8a566f62ee0..0d944771a2e 100644
--- a/lispref/files.texi
+++ b/lispref/files.texi
@@ -114,21 +114,24 @@ When @code{find-file} is called interactively, it prompts for
@end deffn
@defun find-file-noselect filename &optional nowarn rawfile wildcards
-This function is the guts of all the file-visiting functions. It finds
-or creates a buffer visiting the file @var{filename}, and returns it.
-It uses an existing buffer if there is one, and otherwise creates a new
-buffer and reads the file into it. You may make the buffer current or
-display it in a window if you wish, but this function does not do so.
-
-If @var{wildcards} is non-@code{nil},
-then @code{find-file-noselect} expands wildcard
-characters in @var{filename} and visits all the matching files.
-
-When @code{find-file-noselect} uses an existing buffer, it first
-verifies that the file has not changed since it was last visited or
-saved in that buffer. If the file has changed, then this function asks
-the user whether to reread the changed file. If the user says
-@samp{yes}, any changes previously made in the buffer are lost.
+This function is the guts of all the file-visiting functions. It
+returns a buffer visiting the file @var{filename}. You may make the
+buffer current or display it in a window if you wish, but this
+function does not do so.
+
+The function returns an existing buffer if there is one; otherwise it
+creates a new buffer and reads the file into it. When
+@code{find-file-noselect} uses an existing buffer, it first verifies
+that the file has not changed since it was last visited or saved in
+that buffer. If the file has changed, this function asks the user
+whether to reread the changed file. If the user says @samp{yes}, any
+edits previously made in the buffer are lost.
+
+Reading the file involves decoding the file's contents (@pxref{Coding
+Systems}), including end-of-line conversion, and format conversion
+(@pxref{Format Conversion}). If @var{wildcards} is non-@code{nil},
+then @code{find-file-noselect} expands wildcard characters in
+@var{filename} and visits all the matching files.
This function displays warning or advisory messages in various peculiar
cases, unless the optional argument @var{nowarn} is non-@code{nil}. For
@@ -145,10 +148,9 @@ than the file just visited, and finishes by running the functions in
If the optional argument @var{rawfile} is non-@code{nil}, then
@code{after-find-file} is not called, and the
-@code{find-file-not-found-functions} are not run in case of failure. What's
-more, a non-@code{nil} @var{rawfile} value suppresses coding system
-conversion (@pxref{Coding Systems}) and format conversion (@pxref{Format
-Conversion}).
+@code{find-file-not-found-functions} are not run in case of failure.
+What's more, a non-@code{nil} @var{rawfile} value suppresses coding
+system conversion and format conversion.
The @code{find-file-noselect} function usually returns the buffer that
is visiting the file @var{filename}. But, if wildcards are actually
@@ -395,11 +397,12 @@ You might wish to save the file modes value returned by
bits of the file that you write. This is what @code{save-buffer}
normally does. @xref{Making Backups,, Making Backup Files}.
-The hook functions in @code{write-file-functions} are also responsible for
-encoding the data (if desired): they must choose a suitable coding
-system (@pxref{Lisp and Coding Systems}), perform the encoding
-(@pxref{Explicit Encoding}), and set @code{last-coding-system-used} to
-the coding system that was used (@pxref{Encoding and I/O}).
+The hook functions in @code{write-file-functions} are also responsible
+for encoding the data (if desired): they must choose a suitable coding
+system and end-of-line conversion (@pxref{Lisp and Coding Systems}),
+perform the encoding (@pxref{Explicit Encoding}), and set
+@code{last-coding-system-used} to the coding system that was used
+(@pxref{Encoding and I/O}).
If you set this hook locally in a buffer, it is assumed to be
associated with the file or the way the contents of the buffer were
@@ -496,7 +499,8 @@ appropriate. @xref{Format Conversion}. It also calls the functions in
the list @code{after-insert-file-functions}; see @ref{Saving
Properties}. Normally, one of the functions in the
@code{after-insert-file-functions} list determines the coding system
-(@pxref{Coding Systems}) used for decoding the file's contents.
+(@pxref{Coding Systems}) used for decoding the file's contents,
+including end-of-line conversion.
If @var{visit} is non-@code{nil}, this function additionally marks the
buffer as unmodified and sets up various fields in the buffer so that it
diff --git a/lispref/hooks.texi b/lispref/hooks.texi
index 4dcc5f5b51c..410e975ad57 100644
--- a/lispref/hooks.texi
+++ b/lispref/hooks.texi
@@ -88,7 +88,7 @@ or their values are used). The variables whose names end in
@item calendar-load-hook
@iftex
-@xref{Calendar Customizing,,, emacs-xtra}.
+@inforef{Calendar Customizing,, emacs-xtra}.
@end iftex
@ifnottex
@xref{Calendar Customizing,,, emacs}.
@@ -131,7 +131,7 @@ Emacs Sessions,, Saving Emacs Sessions, emacs, the GNU Emacs Manual}.
@item diary-display-hook
@iftex
-@xref{Fancy Diary Display,,, emacs-xtra}.
+@inforef{Fancy Diary Display,, emacs-xtra}.
@end iftex
@ifnottex
@xref{Fancy Diary Display,,, emacs}.
@@ -182,7 +182,7 @@ for appointment notification.
@item initial-calendar-window-hook
@iftex
-@xref{Calendar Customizing,,, emacs-xtra}.
+@inforef{Calendar Customizing,, emacs-xtra}.
@end iftex
@ifnottex
@xref{Calendar Customizing,,, emacs}.
@@ -207,7 +207,7 @@ for appointment notification.
@item list-diary-entries-hook
@iftex
-@xref{Fancy Diary Display,,, emacs-xtra}.
+@inforef{Fancy Diary Display,, emacs-xtra}.
@end iftex
@ifnottex
@xref{Fancy Diary Display,,, emacs}.
@@ -219,7 +219,7 @@ Manual}.
@item mark-diary-entries-hook
@iftex
-@xref{Fancy Diary Display,,, emacs-xtra}.
+@inforef{Fancy Diary Display,, emacs-xtra}.
@end iftex
@ifnottex
@xref{Fancy Diary Display,,, emacs}.
@@ -239,7 +239,7 @@ Manual}.
@item nongregorian-diary-listing-hook
@iftex
-@xref{Hebrew/Islamic Entries,,, emacs-xtra}.
+@inforef{Hebrew/Islamic Entries,, emacs-xtra}.
@end iftex
@ifnottex
@xref{Hebrew/Islamic Entries,,, emacs}.
@@ -247,7 +247,7 @@ Manual}.
@item nongregorian-diary-marking-hook
@iftex
-@xref{Hebrew/Islamic Entries,,, emacs-xtra}.
+@inforef{Hebrew/Islamic Entries,, emacs-xtra}.
@end iftex
@ifnottex
@xref{Hebrew/Islamic Entries,,, emacs}.
@@ -266,7 +266,7 @@ Manual}.
@item print-diary-entries-hook
@iftex
-@xref{Diary Customizing,,, emacs-xtra}.
+@inforef{Diary Customizing,, emacs-xtra}.
@end iftex
@ifnottex
@xref{Diary Customizing,,, emacs}.
@@ -297,7 +297,7 @@ Manual}.
@item today-visible-calendar-hook
@iftex
-@xref{Calendar Customizing,,, emacs-xtra}.
+@inforef{Calendar Customizing,, emacs-xtra}.
@end iftex
@ifnottex
@xref{Calendar Customizing,,, emacs}.
@@ -305,7 +305,7 @@ Manual}.
@item today-invisible-calendar-hook
@iftex
-@xref{Calendar Customizing,,, emacs-xtra}.
+@infref{Calendar Customizing,, emacs-xtra}.
@end iftex
@ifnottex
@xref{Calendar Customizing,,, emacs}.
diff --git a/lispref/internals.texi b/lispref/internals.texi
index f46a162aef1..bc35e215574 100644
--- a/lispref/internals.texi
+++ b/lispref/internals.texi
@@ -615,32 +615,37 @@ arguments, and the second is the address of a block containing their
values. They have types @code{int} and @w{@code{Lisp_Object *}}.
Within the function @code{For} itself, note the use of the macros
-@code{GCPRO1} and @code{UNGCPRO}. @code{GCPRO1} is used to ``protect''
-a variable from garbage collection---to inform the garbage collector that
-it must look in that variable and regard its contents as an accessible
-object. This is necessary whenever you call @code{Feval} or anything
-that can directly or indirectly call @code{Feval}. At such a time, any
-Lisp object that you intend to refer to again must be protected somehow.
-@code{UNGCPRO} cancels the protection of the variables that are
-protected in the current function. It is necessary to do this explicitly.
+@code{GCPRO1} and @code{UNGCPRO}. @code{GCPRO1} is used to
+``protect'' a variable from garbage collection---to inform the garbage
+collector that it must look in that variable and regard its contents
+as an accessible object. GC protection is necessary whenever you call
+@code{Feval} or anything that can directly or indirectly call
+@code{Feval}. At such a time, any Lisp object that this function may
+refer to again must be protected somehow.
It suffices to ensure that at least one pointer to each object is
-GC-protected; as long as the object is not recycled, all pointers to
-it remain valid. So if you are sure that a local variable points to
-an object that will be preserved by some other pointer, that local
-variable does not need a @code{GCPRO}. (Formerly, strings were an
-exception to this rule; in older Emacs versions, every pointer to a
-string needed to be marked by GC.)
+GC-protected; that way, the object cannot be recycled, so all pointers
+to it remain valid. Thus, a particular local variable can do without
+protection if it is certain that the object it points to will be
+preserved by some other pointer (such as another local variable which
+has a @code{GCPRO})@footnote{Formerly, strings were a special
+exception; in older Emacs versions, every local variable that might
+point to a string needed a @code{GCPRO}.}. Otherwise, the local
+variable needs a @code{GCPRO}.
The macro @code{GCPRO1} protects just one local variable. If you
-want to protect two, use @code{GCPRO2} instead; repeating
-@code{GCPRO1} will not work. Macros, @code{GCPRO3}, @code{GCPRO4},
-@code{GCPRO5}, and @code{GCPRO6} also exist. These macros implicitly
-use local variables such as @code{gcpro1}; you must declare these
-explicitly, with type @code{struct gcpro}. Thus, if you use
+want to protect two variables, use @code{GCPRO2} instead; repeating
+@code{GCPRO1} will not work. Macros @code{GCPRO3}, @code{GCPRO4},
+@code{GCPRO5}, and @code{GCPRO6} also exist. All these macros
+implicitly use local variables such as @code{gcpro1}; you must declare
+these explicitly, with type @code{struct gcpro}. Thus, if you use
@code{GCPRO2}, you must declare @code{gcpro1} and @code{gcpro2}.
Alas, we can't explain all the tricky details here.
+ @code{UNGCPRO} cancels the protection of the variables that are
+protected in the current function. It is necessary to do this
+explicitly.
+
Built-in functions that take a variable number of arguments actually
accept two arguments at the C level: the number of Lisp arguments, and
a @code{Lisp_Object *} pointer to a C vector containing those Lisp
diff --git a/lispref/minibuf.texi b/lispref/minibuf.texi
index b5bcc3a77dc..73cc0817d9b 100644
--- a/lispref/minibuf.texi
+++ b/lispref/minibuf.texi
@@ -449,17 +449,20 @@ list, put the length in the @code{history-length} property of the
history list symbol. The variable @code{history-delete-duplicates}
specifies whether to delete duplicates in history.
-@defun add-to-history history-var newelt &optional maxelt
-This function adds a new element @var{newelt} to the history list
-stored in the variable @var{history-var}, and returns the updated
-history list. By default, the list length is limited by the value
-specified by @code{history-length} (described below), but the optional
-argument @var{maxelt} overrides that. The possible values of
+@defun add-to-history history-var newelt &optional maxelt keep-all
+This function adds a new element @var{newelt}, if non-empty, to the
+history list stored in the variable @var{history-var}, and returns the
+updated history list. By default, the list length is limited by the
+value specified by @code{history-length} (described below), but the
+optional argument @var{maxelt} overrides that. The possible values of
@var{maxelt} have the same meaning as the values of
@code{history-length}.
-Duplicate members are removed from the history list, unless
-@code{history-delete-duplicates} is @code{nil}.
+Duplicate members are removed from the history list, if
+@code{history-delete-duplicates} is non-@code{nil}.
+
+If @var{keep-all} is non-@code{nil}, even an empty or duplicate
+@var{newelt} element is added to the history list.
@end defun
@defvar history-length
diff --git a/lispref/nonascii.texi b/lispref/nonascii.texi
index c526d419766..0f4a70404af 100644
--- a/lispref/nonascii.texi
+++ b/lispref/nonascii.texi
@@ -805,6 +805,35 @@ If that is valid, it returns @var{coding-system}.
Otherwise it signals an error with condition @code{coding-system-error}.
@end defun
+@cindex EOL conversion
+@cindex end-of-line conversion
+@cindex line end conversion
+@defun coding-system-eol-type coding-system
+This function returns the type of end-of-line (a.k.a.@: @dfn{eol})
+conversion used by @var{coding-system}. If @var{coding-system}
+specifies a certain eol conversion, the return value is an integer 0,
+1, or 2, standing for @code{unix}, @code{dos}, and @code{mac},
+respectively. If @var{coding-system} doesn't specify eol conversion
+explicitly, the return value is a vector of coding systems, each one
+with one of the possible eol conversion types, like this:
+
+@lisp
+(coding-system-eol-type 'latin-1)
+ @result{} [latin-1-unix latin-1-dos latin-1-mac]
+@end lisp
+
+@noindent
+If this function returns a vector, Emacs will decide, as part of the
+text encoding or decoding process, what eol conversion to use. For
+decoding, the end-of-line format of the text is auto-detected, and the
+eol conversion is set to match it (e.g., DOS-style CRLF format will
+imply @code{dos} eol conversion). For encoding, the eol conversion is
+taken from the appropriate default coding system (e.g.,
+@code{default-buffer-file-coding-system} for
+@code{buffer-file-coding-system}), or from the default eol conversion
+appropriate for the underlying platform.
+@end defun
+
@defun coding-system-change-eol-conversion coding-system eol-type
This function returns a coding system which is like @var{coding-system}
except for its eol conversion, which is specified by @code{eol-type}.
@@ -1174,7 +1203,7 @@ encoding by binding @code{coding-system-for-write} to
@code{no-conversion}.
Here are the functions to perform explicit encoding or decoding. The
-decoding functions produce sequences of bytes; the encoding functions
+encoding functions produce sequences of bytes; the decoding functions
are meant to operate on sequences of bytes. All of these functions
discard text properties.
diff --git a/lispref/os.texi b/lispref/os.texi
index f8b43cfa7f0..4d92ac293a7 100644
--- a/lispref/os.texi
+++ b/lispref/os.texi
@@ -271,18 +271,24 @@ Normally, @code{term-file-prefix} has the value
in the normal manner, by searching the @code{load-path} directories, and
trying the @samp{.elc} and @samp{.el} suffixes.
- The usual function of a terminal-specific library is to enable special
-keys to send sequences that Emacs can recognize. It may also need to
-set or add to @code{function-key-map} if the Termcap entry does not
-specify all the terminal's function keys. @xref{Terminal Input}.
-
@cindex Termcap
- When the name of the terminal type contains a hyphen, only the part of
-the name before the first hyphen is significant in choosing the library
-name. Thus, terminal types @samp{aaa-48} and @samp{aaa-30-rv} both use
-the @file{term/aaa} library. If necessary, the library can evaluate
-@code{(getenv "TERM")} to find the full name of the terminal
-type.@refill
+ The usual function of a terminal-specific library is to enable
+special keys to send sequences that Emacs can recognize. It may also
+need to set or add to @code{function-key-map} if the Termcap or
+Terminfo entry does not specify all the terminal's function keys.
+@xref{Terminal Input}.
+
+ When the name of the terminal type contains a hyphen, and no library
+is found whose name is identical to the terminal's name, Emacs strips
+from the terminal's name the last hyphen and everything that follows
+it, and tries again. This process is repeated until Emacs finds a
+matching library or until there are no more hyphens in the name (the
+latter means the terminal doesn't have any library specific to it).
+Thus, for example, if there are no @samp{aaa-48} and @samp{aaa-30}
+libraries, Emacs will try the same library @file{term/aaa.el} for
+terminal types @samp{aaa-48} and @samp{aaa-30-rv}. If necessary, the
+library can evaluate @code{(getenv "TERM")} to find the full name of
+the terminal type.@refill
Your init file can prevent the loading of the
terminal-specific library by setting the variable
diff --git a/lispref/processes.texi b/lispref/processes.texi
index 44da398770d..9eb733236a9 100644
--- a/lispref/processes.texi
+++ b/lispref/processes.texi
@@ -1766,7 +1766,7 @@ connections to the server. The default queue length is 5.
@item :host @var{host}
Specify the host to connect to. @var{host} should be a host name or
-internet address, as a string, or the symbol @code{local} to specify
+Internet address, as a string, or the symbol @code{local} to specify
the local host. If you specify @var{host} for a server, it must
specify a valid address for the local host, and only clients
connecting to that address will be accepted.
@@ -1988,7 +1988,7 @@ Non-@code{nil} if non-blocking connect is supported.
@item (:type datagram)
Non-@code{nil} if datagrams are supported.
@item (:family local)
-Non-@code{nil} if local (aka ``UNIX domain'') sockets are supported.
+Non-@code{nil} if local (a.k.a.@: ``UNIX domain'') sockets are supported.
@item (:family ipv6)
Non-@code{nil} if IPv6 is supported.
@item (:service t)
@@ -2039,7 +2039,7 @@ This function returns information about the network interface named
@table @var
@item addr
-The internet protocol address.
+The Internet protocol address.
@item bcast
The broadcast address.
@item netmask
diff --git a/lispref/text.texi b/lispref/text.texi
index d506341f0d5..c9f1a83a74c 100644
--- a/lispref/text.texi
+++ b/lispref/text.texi
@@ -1202,7 +1202,9 @@ value for @code{kill-ring-max} is 60.
Most buffers have an @dfn{undo list}, which records all changes made
to the buffer's text so that they can be undone. (The buffers that
don't have one are usually special-purpose buffers for which Emacs
-assumes that undoing is not useful.) All the primitives that modify the
+assumes that undoing is not useful. In particular, any buffer whose
+name begins with a space has its undo recording off by default,
+see @ref{Buffer Names}.) All the primitives that modify the
text in the buffer automatically add elements to the front of the undo
list, which is in the variable @code{buffer-undo-list}.
diff --git a/man/ChangeLog b/man/ChangeLog
index 30933b5f0a3..90f3f8a0a27 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,37 @@
+2006-05-12 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * message.texi (Interface): Add tool bar customization.
+ (MIME): Index and text additions for mml-attach.
+ (MIME): Describe mml-dnd-protocol-alist and
+ mml-dnd-attach-options.
+
+ * gnus.texi (Oort Gnus): Reorder entries in sections. Fix some
+ entries.
+ (Starting Up): Add references to "Emacs for Heathens" and to
+ "Finding the News". Add user-full-name and user-mail-address.
+ (Group Buffer Format): Add tool bar customization and update.
+ (Summary Buffer): Add tool bar customization.
+ (Posting Styles): Add message-alternative-emails.
+
+2006-05-12 Glenn Morris <rgm@gnu.org>
+
+ * calendar.texi (Displaying the Diary, Format of Diary File):
+ Refer to diary-view-entries, diary-list-entries,
+ diary-show-all-entries rather than obsolete aliases.
+
+2006-05-12 Eli Zaretskii <eliz@gnu.org>
+
+ * calendar.texi (Calendar/Diary, Holidays, Displaying the Diary)
+ (Displaying the Diary, Special Diary Entries, Importing Diary):
+ * building.texi (Compilation Shell):
+ * buffers.texi (Several Buffers) [iftex]: Replace @xref's to
+ emacs-xtra with @inforef's.
+
+ * files.texi (Visiting): Fix wording.
+
+ * mule.texi (Coding Systems, Text Coding): More indexing. Mention
+ that C-x RET f can set eol conversion.
+
2006-05-09 Michael Albinus <michael.albinus@gmx.de>
* tramp.texi (Filename completion): Improve wording.
diff --git a/man/buffers.texi b/man/buffers.texi
index 548a9c9cb2c..da05b979ed0 100644
--- a/man/buffers.texi
+++ b/man/buffers.texi
@@ -481,7 +481,7 @@ mode in this buffer, as long as it is not marked modified. Global
Auto Revert mode applies to the @samp{*Buffer List*} buffer only if
@code{global-auto-revert-non-file-buffers} is non-@code{nil}.
@iftex
-@xref{Autorevert,,, emacs-xtra, Specialized Emacs Features}, for details.
+@inforef{Autorevert,, emacs-xtra}, for details.
@end iftex
@ifnottex
@xref{Autorevert, global-auto-revert-non-file-buffers}, for details.
diff --git a/man/building.texi b/man/building.texi
index 8feebe3bd99..82dd4cb7d46 100644
--- a/man/building.texi
+++ b/man/building.texi
@@ -323,7 +323,13 @@ method to conditionalize them.
subprocesses; to work around this lack, @kbd{M-x compile} runs the
compilation command synchronously on MS-DOS. As a consequence, you must
wait until the command finishes before you can do anything else in
-Emacs. @xref{MS-DOS,,,emacs-xtra,Specialized Emacs Features}.
+Emacs.
+@iftex
+@inforef{MS-DOS,,emacs-xtra}.
+@end iftex
+@ifnottex
+@xref{MS-DOS}.
+@end ifnottex
@node Grep Searching
@section Searching with Grep under Emacs
diff --git a/man/calendar.texi b/man/calendar.texi
index cbe1cbc8a6e..3a7a21cb6fc 100644
--- a/man/calendar.texi
+++ b/man/calendar.texi
@@ -26,8 +26,8 @@ the calendar, type @kbd{q}.
@iftex
This chapter describes the basic calendar features.
-@xref{Advanced Calendar/Diary Usage,,, emacs-xtra, Specialized Emacs
-Features}, for information about more specialized features.
+@inforef{Advanced Calendar/Diary Usage,, emacs-xtra}, for information
+about more specialized features.
@end iftex
@menu
@@ -451,8 +451,7 @@ calendar, use the @kbd{x} command. This displays the dates that are
holidays in a different face (or places a @samp{*} after these dates, if
display with multiple faces is not available).
@iftex
-@xref{Calendar Customizing, calendar-holiday-marker,, emacs-xtra,
-Specialized Emacs Features}.
+@inforef{Calendar Customizing, calendar-holiday-marker, emacs-xtra}.
@end iftex
@ifnottex
@xref{Calendar Customizing, calendar-holiday-marker}.
@@ -998,11 +997,11 @@ it. You can also view today's events outside of Calendar mode.
@table @kbd
@item d
Display all diary entries for the selected date
-(@code{view-diary-entries}).
+(@code{diary-view-entries}).
@item Mouse-2 Diary
Display all diary entries for the date you click on.
@item s
-Display the entire diary file (@code{show-all-diary-entries}).
+Display the entire diary file (@code{diary-show-all-entries}).
@item m
Mark all visible dates that have diary entries
(@code{mark-diary-entries}).
@@ -1017,7 +1016,7 @@ Mail yourself email reminders about upcoming diary entries.
@end table
@kindex d @r{(Calendar mode)}
-@findex view-diary-entries
+@findex diary-view-entries
@vindex view-diary-entries-initially
Displaying the diary entries with @kbd{d} shows in a separate window
the diary entries for the selected date in the calendar. The mode line
@@ -1042,8 +1041,7 @@ the @kbd{m} command. This displays the dates that have diary entries in
a different face (or places a @samp{+} after these dates, if display
with multiple faces is not available).
@iftex
-@xref{Calendar Customizing, diary-entry-marker,, emacs-xtra,
-Specialized Emacs Features}.
+@inforef{Calendar Customizing, diary-entry-marker, emacs-xtra}.
@end iftex
@ifnottex
@xref{Calendar Customizing, diary-entry-marker}.
@@ -1056,7 +1054,7 @@ turns off holiday marks (@pxref{Holidays}). If the variable
updating the calendar marks diary dates automatically.
@kindex s @r{(Calendar mode)}
-@findex show-all-diary-entries
+@findex diary-show-all-entries
To see the full diary file, rather than just some of the entries, use
the @kbd{s} command.
@@ -1074,7 +1072,7 @@ date, independently of the calendar display, and optionally for the next
few days as well; the variable @code{number-of-diary-entries} specifies
how many days to include.
@iftex
-@xref{Diary Customizing,,, emacs-xtra, Specialized Emacs Features}.
+@inforef{Diary Customizing,, emacs-xtra}.
@end iftex
@ifnottex
@xref{Diary Customizing, number-of-diary-entries}.
@@ -1154,7 +1152,7 @@ additional lines or adding/deleting characters in the middle of a
visible line cannot cause problems, but editing at the end of a line may
not do what you expect. Deleting a line may delete other invisible
entries that follow it. Before editing the diary, it is best to display
-the entire file with @kbd{s} (@code{show-all-diary-entries}).
+the entire file with @kbd{s} (@code{diary-show-all-entries}).
@node Date Formats
@subsection Date Formats
@@ -1384,7 +1382,7 @@ specifying the name of a face or a single-character string to use when
marking the entry in the calendar. Most generally, sexp diary entries
can perform arbitrary computations to determine when they apply.
@iftex
-@xref{Sexp Diary Entries,,, emacs-xtra, Specialized Emacs Features}.
+@inforef{Sexp Diary Entries,, emacs-xtra}.
@end iftex
@ifnottex
@inforef{Sexp Diary Entries}.
@@ -1509,7 +1507,7 @@ and adds the results to an Emacs diary file. For example:
You can use an @code{#include} directive to add the import file contents
to the main diary file, if these are different files.
@iftex
-@xref{Fancy Diary Display,,, emacs-xtra, Specialized Emacs Features}.
+@inforef{Fancy Diary Display,, emacs-xtra}.
@end iftex
@ifnottex
@xref{Fancy Diary Display}.
diff --git a/man/files.texi b/man/files.texi
index ad90a2758b2..6f38f18b1cb 100644
--- a/man/files.texi
+++ b/man/files.texi
@@ -177,7 +177,7 @@ Visit a file with no conversion of the contents.
@cindex files, visiting and saving
@cindex saving files
- @dfn{Visiting} a file means copying its contents into an Emacs
+ @dfn{Visiting} a file means reading its contents into an Emacs
buffer so you can edit them. Emacs makes a new buffer for each file
that you visit. We often say that this buffer ``is visiting'' that
file, or that the buffer's ``visited file'' is that file. Emacs
diff --git a/man/gnus.texi b/man/gnus.texi
index 2f1a7322dc0..9623bc468d9 100644
--- a/man/gnus.texi
+++ b/man/gnus.texi
@@ -926,11 +926,17 @@ Emacs for Heathens
@chapter Starting Gnus
@cindex starting up
+If you are haven't used Emacs much before using Gnus, read @ref{Emacs
+for Heathens} first.
+
@kindex M-x gnus
@findex gnus
If your system administrator has set things up properly, starting Gnus
and reading news is extremely easy---you just type @kbd{M-x gnus} in
-your Emacs.
+your Emacs. If not, you should customize the variable
+@code{gnus-select-method} as described in @ref{Finding the News}. For a
+minimal setup for posting should also customize the variables
+@code{user-full-name} and @code{user-mail-address}.
@findex gnus-other-frame
@kindex M-x gnus-other-frame
@@ -1704,6 +1710,15 @@ long as Gnus is active.
* Group Highlighting:: Having nice colors in the group buffer.
@end menu
+You can customize the Group Mode tool bar, see @kbd{M-x
+customize-apropos RET gnus-group-tool-bar}. This feature is only
+available in Emacs.
+
+The tool bar icons are now (de)activated correctly depending on the
+cursor position. Therefore, moving around in the Group Buffer is
+slower. You can disable this via the variable
+@code{gnus-group-update-tool-bar}. Its default value depends on your
+Emacs version.
@node Group Line Specification
@subsection Group Line Specification
@@ -4447,6 +4462,10 @@ group buffer (@pxref{Selecting a Group}).
You can have as many summary buffers open as you wish.
+You can customize the Summary Mode tool bar, see @kbd{M-x
+customize-apropos RET gnus-summary-tool-bar}. This feature is only
+available in Emacs.
+
@kindex v (Summary)
@cindex keys, reserved for users (Summary)
The key @kbd{v} is reserved for users. You can bind it key to some
@@ -11986,7 +12005,8 @@ So here's a new example:
The @samp{nnml:.*} rule means that you use the @code{To} address as the
@code{From} address in all your outgoing replies, which might be handy
if you fill many roles.
-
+You may also use @code{message-alternative-emails} instead.
+@xref{Message Headers, ,Message Headers, message, Message Manual}.
@node Drafts
@section Drafts
@@ -26006,23 +26026,10 @@ New features in Gnus 5.10:
@itemize @bullet
-@item
-@kbd{F} (@code{gnus-article-followup-with-original}) and @kbd{R}
-(@code{gnus-article-reply-with-original}) only yank the text in the
-region if the region is active.
-
-@item
-@code{gnus-group-read-ephemeral-group} can be called interactively,
-using @kbd{G M}.
-
-@item
-In draft groups, @kbd{e} is now bound to @code{gnus-draft-edit-message}.
-Use @kbd{B w} for @code{gnus-summary-edit-article} instead.
-
-@item
-The revised Gnus @acronym{FAQ} is included in the manual,
-@xref{Frequently Asked Questions}.
+@item Installation changes
+@c ***********************
+@itemize @bullet
@item
Upgrading from previous (stable) version if you have used Oort.
@@ -26036,40 +26043,94 @@ later entry for more information about marks. Note that downgrading
isn't save in general.
@item
-Article Buttons
+New @file{make.bat} for compiling and installing Gnus under MS Windows
-More buttons for URLs, mail addresses, Message-IDs, Info links, man
-pages and Emacs or Gnus related references. @xref{Article Buttons}. The
-variables @code{gnus-button-@var{*}-level} can be used to control the
-appearance of all article buttons. @xref{Article Button Levels}.
+Use @file{make.bat} if you want to install Gnus under MS Windows, the
+first argument to the batch-program should be the directory where
+@file{xemacs.exe} respectively @file{emacs.exe} is located, iff you want
+to install Gnus after compiling it, give @file{make.bat} @code{/copy} as
+the second parameter.
+
+@file{make.bat} has been rewritten from scratch, it now features
+automatic recognition of XEmacs and GNU Emacs, generates
+@file{gnus-load.el}, checks if errors occur while compilation and
+generation of info files and reports them at the end of the build
+process. It now uses @code{makeinfo} if it is available and falls
+back to @file{infohack.el} otherwise. @file{make.bat} should now
+install all files which are necessary to run Gnus and be generally a
+complete replacement for the @code{configure; make; make install}
+cycle used under Unix systems.
+
+The new @file{make.bat} makes @file{make-x.bat} and @file{xemacs.mak}
+superfluous, so they have been removed.
@item
-Dired integration
+@file{~/News/overview/} not used.
-@code{gnus-dired-minor-mode} (see @ref{Other modes}) installs key
-bindings in dired buffers to send a file as an attachment, open a file
-using the appropriate mailcap entry, and print a file using the mailcap
-entry.
+As a result of the following change, the @file{~/News/overview/}
+directory is not used any more. You can safely delete the entire
+hierarchy.
+@c FIXME: `gnus-load' is mentioned in README, which is not included in
+@c CVS. We should find a better place for this item.
@item
-Gnus can display RSS newsfeeds as a newsgroup. @xref{RSS}.
+@code{(require 'gnus-load)}
+
+If you use a stand-alone Gnus distribution, you'd better add
+@code{(require 'gnus-load)} into your @file{~/.emacs} after adding the Gnus
+lisp directory into load-path.
+
+File @file{gnus-load.el} contains autoload commands, functions and variables,
+some of which may not be included in distributions of Emacsen.
+
+@end itemize
+
+@item New packages and libraries within Gnus
+@c *****************************************
+
+@itemize @bullet
@item
-Single-part yenc encoded attachments can be decoded.
+The revised Gnus @acronym{FAQ} is included in the manual,
+@xref{Frequently Asked Questions}.
@item
-Picons
+@acronym{TLS} wrapper shipped with Gnus
-The picons code has been reimplemented to work in GNU Emacs---some of
-the previous options have been removed or renamed.
+@acronym{TLS}/@acronym{SSL} is now supported in @acronym{IMAP} and
+@acronym{NNTP} via @file{tls.el} and GNUTLS. The old
+@acronym{TLS}/@acronym{SSL} support via (external third party)
+@file{ssl.el} and OpenSSL still works.
-Picons are small ``personal icons'' representing users, domain and
-newsgroups, which can be displayed in the Article buffer.
-@xref{Picons}.
+@item
+Improved anti-spam features.
+
+Gnus is now able to take out spam from your mail and news streams
+using a wide variety of programs and filter rules. Among the supported
+methods are RBL blocklists, bogofilter and white/blacklists. Hooks
+for easy use of external packages such as SpamAssassin and Hashcash
+are also new. @xref{Thwarting Email Spam}.
+@c FIXME: @xref{Spam Package}?. Should this be under Misc?
@item
-If the new option @code{gnus-treat-body-boundary} is non-@code{nil}, a
-boundary line is drawn at the end of the headers.
+Gnus supports server-side mail filtering using Sieve.
+
+Sieve rules can be added as Group Parameters for groups, and the
+complete Sieve script is generated using @kbd{D g} from the Group
+buffer, and then uploaded to the server using @kbd{C-c C-l} in the
+generated Sieve buffer. @xref{Sieve Commands}, and the new Sieve
+manual @ref{Top, , Top, sieve, Emacs Sieve}.
+
+@end itemize
+
+@item Changes in group mode
+@c ************************
+
+@itemize @bullet
+
+@item
+@code{gnus-group-read-ephemeral-group} can be called interactively,
+using @kbd{G M}.
@item
Retrieval of charters and control messages
@@ -26078,19 +26139,94 @@ There are new commands for fetching newsgroup charters (@kbd{H c}) and
control messages (@kbd{H C}).
@item
-Delayed articles
+The new variable @code{gnus-parameters} can be used to set group parameters.
-You can delay the sending of a message with @kbd{C-c C-j} in the Message
-buffer. The messages are delivered at specified time. This is useful
-for sending yourself reminders. @xref{Delayed Articles}.
+Earlier this was done only via @kbd{G p} (or @kbd{G c}), which stored
+the parameters in @file{~/.newsrc.eld}, but via this variable you can
+enjoy the powers of customize, and simplified backups since you set the
+variable in @file{~/.gnus.el} instead of @file{~/.newsrc.eld}. The
+variable maps regular expressions matching group names to group
+parameters, a'la:
+@lisp
+(setq gnus-parameters
+ '(("mail\\..*"
+ (gnus-show-threads nil)
+ (gnus-use-scoring nil))
+ ("^nnimap:\\(foo.bar\\)$"
+ (to-group . "\\1"))))
+@end lisp
@item
-If @code{auto-compression-mode} is enabled, attachments are automatically
-decompressed when activated.
+Unread count correct in nnimap groups.
+
+The estimated number of unread articles in the group buffer should now
+be correct for nnimap groups. This is achieved by calling
+@code{nnimap-fixup-unread-after-getting-new-news} from the
+@code{gnus-setup-news-hook} (called on startup) and
+@code{gnus-after-getting-new-news-hook}. (called after getting new
+mail). If you have modified those variables from the default, you may
+want to add @code{nnimap-fixup-unread-after-getting-new-news} again. If
+you were happy with the estimate and want to save some (minimal) time
+when getting new mail, remove the function.
@item
-If the new option @code{nnml-use-compressed-files} is non-@code{nil},
-the nnml back end allows compressed message files.
+Group names are treated as UTF-8 by default.
+
+This is supposedly what USEFOR wanted to migrate to. See
+@code{gnus-group-name-charset-group-alist} and
+@code{gnus-group-name-charset-method-alist} for customization.
+
+@item
+@code{gnus-group-charset-alist} and
+@code{gnus-group-ignored-charsets-alist}.
+
+The regexps in these variables are compared with full group names
+instead of real group names in 5.8. Users who customize these
+variables should change those regexps accordingly. For example:
+@lisp
+("^han\\>" euc-kr) -> ("\\(^\\|:\\)han\\>" euc-kr)
+@end lisp
+
+@end itemize
+
+@item Changes in summary and article mode
+@c **************************************
+
+@itemize @bullet
+
+@item
+@kbd{F} (@code{gnus-article-followup-with-original}) and @kbd{R}
+(@code{gnus-article-reply-with-original}) only yank the text in the
+region if the region is active.
+
+@item
+In draft groups, @kbd{e} is now bound to @code{gnus-draft-edit-message}.
+Use @kbd{B w} for @code{gnus-summary-edit-article} instead.
+
+@item
+Article Buttons
+
+More buttons for URLs, mail addresses, Message-IDs, Info links, man
+pages and Emacs or Gnus related references. @xref{Article Buttons}. The
+variables @code{gnus-button-@var{*}-level} can be used to control the
+appearance of all article buttons. @xref{Article Button Levels}.
+
+@item
+Single-part yenc encoded attachments can be decoded.
+
+@item
+Picons
+
+The picons code has been reimplemented to work in GNU Emacs---some of
+the previous options have been removed or renamed.
+
+Picons are small ``personal icons'' representing users, domain and
+newsgroups, which can be displayed in the Article buffer.
+@xref{Picons}.
+
+@item
+If the new option @code{gnus-treat-body-boundary} is non-@code{nil}, a
+boundary line is drawn at the end of the headers.
@item
Signed article headers (X-PGP-Sig) can be verified with @kbd{W p}.
@@ -26116,13 +26252,6 @@ The new @code{recent} mark @samp{.} indicates newly arrived messages (as
opposed to old but unread messages).
@item
-The new option @code{gnus-gcc-mark-as-read} automatically marks
-Gcc articles as read.
-
-@item
-The nndoc back end now supports mailman digests and exim bounces.
-
-@item
Gnus supports RFC 2369 mailing list headers, and adds a number of
related commands in mailing list groups. @xref{Mailing List}.
@@ -26131,54 +26260,10 @@ The Date header can be displayed in a format that can be read aloud
in English. @xref{Article Date}.
@item
-The envelope sender address can be customized when using Sendmail.
-@xref{Mail Variables, Mail Variables,, message, Message Manual}.
-
-@item
diffs are automatically highlighted in groups matching
@code{mm-uu-diff-groups-regexp}
@item
-@acronym{TLS} wrapper shipped with Gnus
-
-@acronym{TLS}/@acronym{SSL} is now supported in @acronym{IMAP} and
-@acronym{NNTP} via @file{tls.el} and GNUTLS. The old
-@acronym{TLS}/@acronym{SSL} support via (external third party)
-@file{ssl.el} and OpenSSL still works.
-
-@item
-New @file{make.bat} for compiling and installing Gnus under MS Windows
-
-Use @file{make.bat} if you want to install Gnus under MS Windows, the
-first argument to the batch-program should be the directory where
-@file{xemacs.exe} respectively @file{emacs.exe} is located, iff you want
-to install Gnus after compiling it, give @file{make.bat} @code{/copy} as
-the second parameter.
-
-@file{make.bat} has been rewritten from scratch, it now features
-automatic recognition of XEmacs and GNU Emacs, generates
-@file{gnus-load.el}, checks if errors occur while compilation and
-generation of info files and reports them at the end of the build
-process. It now uses @code{makeinfo} if it is available and falls
-back to @file{infohack.el} otherwise. @file{make.bat} should now
-install all files which are necessary to run Gnus and be generally a
-complete replacement for the @code{configure; make; make install}
-cycle used under Unix systems.
-
-The new @file{make.bat} makes @file{make-x.bat} superfluous, so it has
-been removed.
-
-@item
-Support for non-@acronym{ASCII} domain names
-
-Message supports non-@acronym{ASCII} domain names in From:, To: and
-Cc: and will query you whether to perform encoding when you try to
-send a message. The variable @code{message-use-idna} controls this.
-Gnus will also decode non-@acronym{ASCII} domain names in From:, To:
-and Cc: when you view a message. The variable @code{gnus-use-idna}
-controls this.
-
-@item
Better handling of Microsoft citation styles
Gnus now tries to recognize the mangled header block that some Microsoft
@@ -26187,6 +26272,10 @@ though it is not quoted in any way. The variable
@code{gnus-cite-unsightly-citation-regexp} matches the start of these
citations.
+The new command @kbd{W Y f}
+(@code{gnus-article-outlook-deuglify-article}) allows deuglifying broken
+Outlook (Express) articles.
+
@item
@code{gnus-article-skip-boring}
@@ -26200,31 +26289,117 @@ consist of a little new content at the top with a long, untrimmed
message cited below.
@item
-The format spec @code{%C} for positioning point has changed to @code{%*}.
+Smileys (@samp{:-)}, @samp{;-)} etc) are now displayed graphically in
+Emacs too.
+
+Put @code{(setq gnus-treat-display-smileys nil)} in @file{~/.gnus.el} to
+disable it.
@item
-The new variable @code{gnus-parameters} can be used to set group parameters.
+Face headers handling. @xref{Face}.
-Earlier this was done only via @kbd{G p} (or @kbd{G c}), which stored
-the parameters in @file{~/.newsrc.eld}, but via this variable you can
-enjoy the powers of customize, and simplified backups since you set the
-variable in @file{~/.gnus.el} instead of @file{~/.newsrc.eld}. The
-variable maps regular expressions matching group names to group
-parameters, a'la:
-@lisp
-(setq gnus-parameters
- '(("mail\\..*"
- (gnus-show-threads nil)
- (gnus-use-scoring nil))
- ("^nnimap:\\(foo.bar\\)$"
- (to-group . "\\1"))))
-@end lisp
+@item
+In the summary buffer, the new command @kbd{/ N} inserts new messages
+and @kbd{/ o} inserts old messages.
@item
-Smileys (@samp{:-)}, @samp{;-)} etc) are now iconized for Emacs too.
+Gnus decodes morse encoded messages if you press @kbd{W m}.
-Put @code{(setq gnus-treat-display-smileys nil)} in @file{~/.gnus.el} to
-disable it.
+@item
+@code{gnus-summary-line-format}
+
+The default value changed to @samp{%U%R%z%I%(%[%4L: %-23,23f%]%)
+%s\n}. Moreover @code{gnus-extra-headers},
+@code{nnmail-extra-headers} and @code{gnus-ignored-from-addresses}
+changed their default so that the users name will be replaced by the
+recipient's name or the group name posting to for @acronym{NNTP}
+groups.
+
+@item
+Deleting of attachments.
+
+The command @code{gnus-mime-save-part-and-strip} (bound to @kbd{C-o}
+on @acronym{MIME} buttons) saves a part and replaces the part with an
+external one. @code{gnus-mime-delete-part} (bound to @kbd{d} on
+@acronym{MIME} buttons) removes a part. It works only on back ends
+that support editing.
+
+@item
+@code{gnus-default-charset}
+
+The default value is determined from the
+@code{current-language-environment} variable, instead of
+@code{iso-8859-1}. Also the @samp{.*} item in
+@code{gnus-group-charset-alist} is removed.
+
+@item
+Printing capabilities are enhanced.
+
+Gnus supports Muttprint natively with @kbd{O P} from the Summary and
+Article buffers. Also, each individual @acronym{MIME} part can be
+printed using @kbd{p} on the @acronym{MIME} button.
+
+@item
+Extended format specs.
+
+Format spec @samp{%&user-date;} is added into
+@code{gnus-summary-line-format-alist}. Also, user defined extended
+format specs are supported. The extended format specs look like
+@samp{%u&foo;}, which invokes function
+@code{gnus-user-format-function-@var{foo}}. Because @samp{&} is used as the
+escape character, old user defined format @samp{%u&} is no longer supported.
+
+@item
+@kbd{/ *} (@code{gnus-summary-limit-include-cached}) is rewritten.
+@c FIXME: Was this a user-visible change?
+
+It was aliased to @kbd{Y c}
+(@code{gnus-summary-insert-cached-articles}). The new function filters
+out other articles.
+
+@item
+Some limiting commands accept a @kbd{C-u} prefix to negate the match.
+
+If @kbd{C-u} is used on subject, author or extra headers, i.e., @kbd{/
+s}, @kbd{/ a}, and @kbd{/ x}
+(@code{gnus-summary-limit-to-@{subject,author,extra@}}) respectively, the
+result will be to display all articles that do not match the expression.
+
+@item
+Gnus inlines external parts (message/external).
+
+@end itemize
+
+@item Changes in Message mode and related Gnus features
+@c ****************************************************
+
+@itemize @bullet
+
+@item
+Delayed articles
+
+You can delay the sending of a message with @kbd{C-c C-j} in the Message
+buffer. The messages are delivered at specified time. This is useful
+for sending yourself reminders. @xref{Delayed Articles}.
+
+@item
+If the new option @code{nnml-use-compressed-files} is non-@code{nil},
+the nnml back end allows compressed message files.
+
+@item
+The new option @code{gnus-gcc-mark-as-read} automatically marks
+Gcc articles as read.
+
+@item
+Externalizing of attachments
+
+If @code{gnus-gcc-externalize-attachments} or
+@code{message-fcc-externalize-attachments} is non-@code{nil}, attach
+local files as external parts.
+
+@item
+The envelope sender address can be customized when using Sendmail.
+@xref{Mail Variables, Mail Variables,, message, Message Manual}.
@item
Gnus no longer generate the Sender: header automatically.
@@ -26255,39 +26430,7 @@ start composing messages and @code{message-generate-headers-first} is
@code{nil}.
@item
-Improved anti-spam features.
-
-Gnus is now able to take out spam from your mail and news streams
-using a wide variety of programs and filter rules. Among the supported
-methods are RBL blocklists, bogofilter and white/blacklists. Hooks
-for easy use of external packages such as SpamAssassin and Hashcash
-are also new. @xref{Thwarting Email Spam}.
-
-@item
-Easy inclusion of X-Faces headers.
-
-@item
-Face headers handling.
-
-@item
-In the summary buffer, the new command @kbd{/ N} inserts new messages
-and @kbd{/ o} inserts old messages.
-
-@item
-Gnus decodes morse encoded messages if you press @kbd{W m}.
-
-@item
-Unread count correct in nnimap groups.
-
-The estimated number of unread articles in the group buffer should now
-be correct for nnimap groups. This is achieved by calling
-@code{nnimap-fixup-unread-after-getting-new-news} from the
-@code{gnus-setup-news-hook} (called on startup) and
-@code{gnus-after-getting-new-news-hook}. (called after getting new
-mail). If you have modified those variables from the default, you may
-want to add @code{nnimap-fixup-unread-after-getting-new-news} again. If
-you were happy with the estimate and want to save some (minimal) time
-when getting new mail, remove the function.
+Easy inclusion of X-Faces headers. @xref{X-Face}.
@item
Group Carbon Copy (GCC) quoting
@@ -26304,64 +26447,6 @@ was incorrect earlier, it just didn't generate any problems since it
was inserted directly.
@item
-@file{~/News/overview/} not used.
-
-As a result of the following change, the @file{~/News/overview/}
-directory is not used any more. You can safely delete the entire
-hierarchy.
-
-@item
-@code{gnus-agent}
-
-The Gnus Agent has seen a major updated and is now enabled by default,
-and all nntp and nnimap servers from @code{gnus-select-method} and
-@code{gnus-secondary-select-method} are agentized by default. Earlier
-only the server in @code{gnus-select-method} was agentized by the
-default, and the agent was disabled by default. When the agent is
-enabled, headers are now also retrieved from the Agent cache instead
-of the back ends when possible. Earlier this only happened in the
-unplugged state. You can enroll or remove servers with @kbd{J a} and
-@kbd{J r} in the server buffer. Gnus will not download articles into
-the Agent cache, unless you instruct it to do so, though, by using
-@kbd{J u} or @kbd{J s} from the Group buffer. You revert to the old
-behavior of having the Agent disabled with @code{(setq gnus-agent
-nil)}. Note that putting @code{(gnus-agentize)} in @file{~/.gnus.el}
-is not needed any more.
-
-@item
-@code{gnus-summary-line-format}
-
-The default value changed to @samp{%U%R%z%I%(%[%4L: %-23,23f%]%)
-%s\n}. Moreover @code{gnus-extra-headers},
-@code{nnmail-extra-headers} and @code{gnus-ignored-from-addresses}
-changed their default so that the users name will be replaced by the
-recipient's name or the group name posting to for @acronym{NNTP}
-groups.
-
-@item
-@file{deuglify.el} (@code{gnus-article-outlook-deuglify-article})
-
-A new file from Raymond Scholz @email{rscholz@@zonix.de} for deuglifying
-broken Outlook (Express) articles.
-
-@c FIXME: `gnus-load' is mentioned in README, which is not included in
-@c CVS. We should find a better place for this item.
-@item
-@code{(require 'gnus-load)}
-
-If you use a stand-alone Gnus distribution, you'd better add
-@code{(require 'gnus-load)} into your @file{~/.emacs} after adding the Gnus
-lisp directory into load-path.
-
-File @file{gnus-load.el} contains autoload commands, functions and variables,
-some of which may not be included in distributions of Emacsen.
-
-@item
-@code{gnus-slave-unplugged}
-
-A new command which starts Gnus offline in slave mode.
-
-@item
@code{message-insinuate-rmail}
Adding @code{(message-insinuate-rmail)} and @code{(setq
@@ -26379,27 +26464,6 @@ The line below enables BBDB in resending a message:
@end lisp
@item
-Externalizing and deleting of attachments.
-
-If @code{gnus-gcc-externalize-attachments} or
-@code{message-fcc-externalize-attachments} is non-@code{nil}, attach
-local files as external parts.
-
-The command @code{gnus-mime-save-part-and-strip} (bound to @kbd{C-o}
-on @acronym{MIME} buttons) saves a part and replaces the part with an
-external one. @code{gnus-mime-delete-part} (bound to @kbd{d} on
-@acronym{MIME} buttons) removes a part. It works only on back ends
-that support editing.
-
-@item
-@code{gnus-default-charset}
-
-The default value is determined from the
-@code{current-language-environment} variable, instead of
-@code{iso-8859-1}. Also the @samp{.*} item in
-@code{gnus-group-charset-alist} is removed.
-
-@item
@code{gnus-posting-styles}
Add a new format of match like
@@ -26421,13 +26485,6 @@ added into these two variables. If you customized those, perhaps you
need add those two headers too.
@item
-Gnus reads the @acronym{NOV} and articles in the Agent if plugged.
-
-If one reads an article while plugged, and the article already exists
-in the Agent, it won't get downloaded once more. @code{(setq
-gnus-agent-cache nil)} reverts to the old behavior.
-
-@item
Gnus supports the ``format=flowed'' (RFC 2646) parameter. On
composing messages, it is enabled by @code{use-hard-newlines}.
Decoding format=flowed was present but not documented in earlier
@@ -26444,18 +26501,6 @@ Gnus supports the generation of RFC 2298 Disposition Notification requests.
This is invoked with the @kbd{C-c M-n} key binding from message mode.
@item
-Gnus supports Maildir groups.
-
-Gnus includes a new back end @file{nnmaildir.el}. @xref{Maildir}.
-
-@item
-Printing capabilities are enhanced.
-
-Gnus supports Muttprint natively with @kbd{O P} from the Summary and
-Article buffers. Also, each individual @acronym{MIME} part can be
-printed using @kbd{p} on the @acronym{MIME} button.
-
-@item
Message supports the Importance: (RFC 2156) header.
In the message buffer, @kbd{C-c C-f C-i} or @kbd{C-c C-u} cycles through
@@ -26474,45 +26519,66 @@ will not allow anyone to be able to anything she could not already do.
The behavior can be changed by customizing @code{message-insert-canlock}.
@item
-Gnus supports server-side mail filtering using Sieve.
+Gnus supports @acronym{PGP} (RFC 1991/2440), @acronym{PGP/MIME} (RFC
+2015/3156) and @acronym{S/MIME} (RFC 2630-2633).
-Sieve rules can be added as Group Parameters for groups, and the
-complete Sieve script is generated using @kbd{D g} from the Group
-buffer, and then uploaded to the server using @kbd{C-c C-l} in the
-generated Sieve buffer. @xref{Sieve Commands}, and the new Sieve
-manual @ref{Top, , Top, sieve, Emacs Sieve}.
+It needs an external @acronym{S/MIME} and OpenPGP implementation, but no
+additional Lisp libraries. This add several menu items to the
+Attachments menu, and @kbd{C-c RET} key bindings, when composing
+messages. This also obsoletes @code{gnus-article-hide-pgp-hook}.
@item
-Extended format specs.
+@acronym{MML} (Mime compose) prefix changed from @kbd{M-m} to @kbd{C-c
+C-m}.
-Format spec @samp{%&user-date;} is added into
-@code{gnus-summary-line-format-alist}. Also, user defined extended
-format specs are supported. The extended format specs look like
-@samp{%u&foo;}, which invokes function
-@code{gnus-user-format-function-@var{foo}}. Because @samp{&} is used as the
-escape character, old user defined format @samp{%u&} is no longer supported.
+This change was made to avoid conflict with the standard binding of
+@code{back-to-indentation}, which is also useful in message mode.
@item
-@kbd{/ *} (@code{gnus-summary-limit-include-cached}) is rewritten.
+The default for @code{message-forward-show-mml} changed to the symbol
+@code{best}.
-It was aliased to @kbd{Y c}
-(@code{gnus-summary-insert-cached-articles}). The new function filters
-out other articles.
+The behavior for the @code{best} value is to show @acronym{MML} (i.e.,
+convert to @acronym{MIME}) when appropriate. @acronym{MML} will not be
+used when forwarding signed or encrypted messages, as the conversion
+invalidate the digital signature.
@item
-Some limiting commands accept a @kbd{C-u} prefix to negate the match.
+If @code{auto-compression-mode} is enabled, attachments are automatically
+decompressed when activated.
+@c FIXME: Does this affect article or message mode?
-If @kbd{C-u} is used on subject, author or extra headers, i.e., @kbd{/
-s}, @kbd{/ a}, and @kbd{/ x}
-(@code{gnus-summary-limit-to-@{subject,author,extra@}}) respectively, the
-result will be to display all articles that do not match the expression.
+@item
+Support for non-@acronym{ASCII} domain names
+Message supports non-@acronym{ASCII} domain names in From:, To: and
+Cc: and will query you whether to perform encoding when you try to
+send a message. The variable @code{message-use-idna} controls this.
+Gnus will also decode non-@acronym{ASCII} domain names in From:, To:
+and Cc: when you view a message. The variable @code{gnus-use-idna}
+controls this.
+
+@item You can now drag and drop attachments to the Message buffer.
+See @code{mml-dnd-protocol-alist} and @code{mml-dnd-attach-options}.
+@xref{MIME, ,MIME, message, Message Manual}.
+@c New in 5.10.9 / 5.11
+
+@end itemize
+
+@item Changes in back ends
+@c ***********************
+
+@itemize @bullet
@item
-Group names are treated as UTF-8 by default.
+Gnus can display RSS newsfeeds as a newsgroup. @xref{RSS}.
-This is supposedly what USEFOR wanted to migrate to. See
-@code{gnus-group-name-charset-group-alist} and
-@code{gnus-group-name-charset-method-alist} for customization.
+@item
+The nndoc back end now supports mailman digests and exim bounces.
+
+@item
+Gnus supports Maildir groups.
+
+Gnus includes a new back end @file{nnmaildir.el}. @xref{Maildir}.
@item
The nnml and nnfolder back ends store marks for each groups.
@@ -26529,6 +26595,13 @@ another machine, Gnus will automatically use the @file{.marks} or
The new server variables @code{nnml-marks-is-evil} and
@code{nnfolder-marks-is-evil} can be used to disable this feature.
+@end itemize
+
+@item Appearance
+@c *************
+
+@itemize @bullet
+
@item
The menu bar item (in Group and Summary buffer) named ``Misc'' has
been renamed to ``Gnus''.
@@ -26540,42 +26613,65 @@ related stuff, like signing and encryption (@pxref{Security, Security,,
message, Message Manual}).
@item
-@code{gnus-group-charset-alist} and
-@code{gnus-group-ignored-charsets-alist}.
+The tool bars have been updated to use GNOME icons in Group, Summary and
+Message mode. You can also customize the tool bars. This is a new
+feature in Gnus 5.10.9. (Only for Emacs, not in XEmacs.)
-The regexps in these variables are compared with full group names
-instead of real group names in 5.8. Users who customize these
-variables should change those regexps accordingly. For example:
-@lisp
-("^han\\>" euc-kr) -> ("\\(^\\|:\\)han\\>" euc-kr)
-@end lisp
+@item The tool bar icons are now (de)activated correctly
+in the group buffer, see the variable @code{gnus-group-update-tool-bar}.
+Its default value depends on your Emacs version. This is a new feature
+in Gnus 5.10.9.
+@end itemize
+
+
+@item Miscellaneous changes
+@c ************************
+
+@itemize @bullet
@item
-Gnus supports @acronym{PGP} (RFC 1991/2440), @acronym{PGP/MIME} (RFC
-2015/3156) and @acronym{S/MIME} (RFC 2630-2633).
+@code{gnus-agent}
-It needs an external @acronym{S/MIME} and OpenPGP implementation, but no
-additional Lisp libraries. This add several menu items to the
-Attachments menu, and @kbd{C-c RET} key bindings, when composing
-messages. This also obsoletes @code{gnus-article-hide-pgp-hook}.
+The Gnus Agent has seen a major updated and is now enabled by default,
+and all nntp and nnimap servers from @code{gnus-select-method} and
+@code{gnus-secondary-select-method} are agentized by default. Earlier
+only the server in @code{gnus-select-method} was agentized by the
+default, and the agent was disabled by default. When the agent is
+enabled, headers are now also retrieved from the Agent cache instead
+of the back ends when possible. Earlier this only happened in the
+unplugged state. You can enroll or remove servers with @kbd{J a} and
+@kbd{J r} in the server buffer. Gnus will not download articles into
+the Agent cache, unless you instruct it to do so, though, by using
+@kbd{J u} or @kbd{J s} from the Group buffer. You revert to the old
+behavior of having the Agent disabled with @code{(setq gnus-agent
+nil)}. Note that putting @code{(gnus-agentize)} in @file{~/.gnus.el}
+is not needed any more.
@item
-Gnus inlines external parts (message/external).
+Gnus reads the @acronym{NOV} and articles in the Agent if plugged.
+
+If one reads an article while plugged, and the article already exists
+in the Agent, it won't get downloaded once more. @code{(setq
+gnus-agent-cache nil)} reverts to the old behavior.
@item
-@acronym{MML} (Mime compose) prefix changed from @kbd{M-m} to @kbd{C-c
-C-m}.
+Dired integration
-This change was made to avoid conflict with the standard binding of
-@code{back-to-indentation}, which is also useful in message mode.
+@code{gnus-dired-minor-mode} (see @ref{Other modes}) installs key
+bindings in dired buffers to send a file as an attachment, open a file
+using the appropriate mailcap entry, and print a file using the mailcap
+entry.
@item
-The default for @code{message-forward-show-mml} changed to symbol @code{best}.
+The format spec @code{%C} for positioning point has changed to @code{%*}.
+
+@item
+@code{gnus-slave-unplugged}
+
+A new command which starts Gnus offline in slave mode.
+
+@end itemize
-The behavior for the @code{best} value is to show @acronym{MML} (i.e.,
-convert to @acronym{MIME}) when appropriate. @acronym{MML} will not be
-used when forwarding signed or encrypted messages, as the conversion
-invalidate the digital signature.
@end itemize
@iftex
diff --git a/man/message.texi b/man/message.texi
index c282d5c1bdd..58906595f8f 100644
--- a/man/message.texi
+++ b/man/message.texi
@@ -97,6 +97,9 @@ sending it.
* Mailing Lists:: Send mail to mailing lists.
@end menu
+You can customize the Message Mode tool bar, see @kbd{M-x
+customize-apropos RET message-tool-bar}. This feature is only available
+in Emacs.
@node New Mail Message
@section New Mail Message
@@ -817,10 +820,24 @@ doesn't have to do anything to make the @acronym{MIME} happen---Message will
automatically add the @code{Content-Type} and
@code{Content-Transfer-Encoding} headers.
+@findex mml-attach
+@kindex C-c C-a
The most typical thing users want to use the multipart things in
-@acronym{MIME} for is to add ``attachments'' to mail they send out. This can
-be done with the @kbd{C-c C-a} command, which will prompt for a file
-name and a @acronym{MIME} type.
+@acronym{MIME} for is to add ``attachments'' to mail they send out.
+This can be done with the @kbd{C-c C-a} command (@kbd{M-x mml-attach}),
+which will prompt for a file name and a @acronym{MIME} type.
+
+@vindex mml-dnd-protocol-alist
+@vindex mml-dnd-attach-options
+If your Emacs supports drag and drop, you can also drop the file in the
+Message buffer. The variable @code{mml-dnd-protocol-alist} specifies
+what kind of action is done when you drop a file into the Message
+buffer. The variable @code{mml-dnd-attach-options} controls which
+@acronym{MIME} options you want to specify when dropping a file. If it
+is a list, valid members are @code{type}, @code{description} and
+@code{disposition}. @code{disposition} implies @code{type}. If it is
+@code{nil}, don't ask for options. If it is @code{t}, ask the user
+whether or not to specify options.
You can also create arbitrarily complex multiparts using the @acronym{MML}
language (@pxref{Composing, , Composing, emacs-mime, The Emacs MIME
diff --git a/man/mule.texi b/man/mule.texi
index 91c5aaaf47e..e2dd270c772 100644
--- a/man/mule.texi
+++ b/man/mule.texi
@@ -626,7 +626,8 @@ Display a list of all the supported coding systems.
@kindex C-h C
@findex describe-coding-system
The command @kbd{C-h C} (@code{describe-coding-system}) displays
-information about particular coding systems. You can specify a coding
+information about particular coding systems, including the end-of-line
+conversion specified by those coding systems. You can specify a coding
system name as the argument; alternatively, with an empty argument, it
describes the coding systems currently selected for various purposes,
both in the current buffer and as the defaults, and the priority list
@@ -639,6 +640,7 @@ system, including the letter that stands for it in the mode line
(@pxref{Mode Line}).
@cindex end-of-line conversion
+@cindex line endings
@cindex MS-DOS end-of-line conversion
@cindex Macintosh end-of-line conversion
Each of the coding systems that appear in this list---except for
@@ -941,6 +943,13 @@ that cannot handle all of the characters in the buffer, Emacs warns
you about the troublesome characters when you actually save the
buffer.
+@cindex specify end-of-line conversion
+ You can also use this command to specify the end-of-line conversion
+(@pxref{Coding Systems, end-of-line conversion}) for encoding the
+current buffer. For example, @kbd{C-x @key{RET} f dos @key{RET}} will
+cause Emacs to save the current buffer's text with DOS-style CRLF line
+endings.
+
@kindex C-x RET c
@findex universal-coding-system-argument
Another way to specify the coding system for a file is when you visit
diff --git a/src/.arch-inventory b/src/.arch-inventory
index a98d4c9932f..fe99529135f 100644
--- a/src/.arch-inventory
+++ b/src/.arch-inventory
@@ -2,7 +2,7 @@
source ^\.(gdbinit|dbxinit)$
# Auto-generated files, which ignore
-precious ^(config\.stamp|config\.h|epaths\.h)$
+precious ^(config\.stamp|config\.h|epaths\.h|buildobj\.lst)$
backup ^(stamp-oldxmenu|prefix-args|temacs|emacs|emacs-[0-9.]*)$
diff --git a/src/ChangeLog b/src/ChangeLog
index 2840154e7f7..5ffee1beac3 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,54 @@
+2006-05-16 Kim F. Storm <storm@cua.dk>
+
+ * xterm.c (handle_one_xevent): Check that f is not NULL before
+ calling x_kill_gs_process.
+
+2006-05-14 Richard Stallman <rms@gnu.org>
+
+ * textprop.c (Fnext_single_char_property_change)
+ (Fprevious_single_char_property_change): Don't allow returning
+ value beyond LIMIT in any cases.
+ (Fnext_char_property_change, Fprevious_char_property_change): Doc fix.
+
+ * intervals.c (get_local_map): Abort if POSITION outside BEGV, ZV.
+
+2006-05-14 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
+
+ * xterm.c (handle_one_xevent): Check that f is not NULL before
+ calling _XEditResCheckMessages.
+
+2006-05-14 Kim F. Storm <storm@cua.dk>
+
+ * xterm.c (handle_one_xevent): Fix crash in 2006-03-24 change.
+
+2006-05-13 Eli Zaretskii <eliz@gnu.org>
+
+ * frame.c (x_set_border_width): Fix error message to say "frame",
+ not "window".
+
+ * Makefile.in (SOME_MACHINE_LISP): Add fringe.elc.
+
+2006-05-12 Chong Yidong <cyd@stupidchicken.com>
+
+ * intervals.c (set_point_both): Fix mixup before before and after
+ in variable names.
+
+ * editfns.c (Fline_beginning_position): Inhibit point-motion hooks
+ while setting point temporarily.
+
+2006-05-11 Richard Stallman <rms@gnu.org>
+
+ * lread.c (readevalloop): Abort if START non-nil for non-buffer input.
+
+2006-05-11 Kim F. Storm <storm@cua.dk>
+
+ * xdisp.c (redisplay_tool_bar): Handle large tool-bar-border values.
+
+2006-05-11 Kenichi Handa <handa@m17n.org>
+
+ * fileio.c (Finsert_file_contents): Fix for the case of IO error
+ while handling replace operation.
+
2006-05-10 Kenichi Handa <handa@m17n.org>
* xfaces.c (realize_default_face) [HAVE_X_WINDOWS]: If the font
diff --git a/src/Makefile.in b/src/Makefile.in
index 16a85dfe191..48debcab31d 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -900,8 +900,8 @@ SOME_MACHINE_LISP = ${dotdot}/lisp/mouse.elc \
${dotdot}/lisp/w32-fns.elc ${dotdot}/lisp/dos-w32.elc \
${dotdot}/lisp/disp-table.elc ${dotdot}/lisp/dos-vars.elc \
${dotdot}/lisp/tooltip.elc ${dotdot}/lisp/image.elc \
- ${dotdot}/lisp/dnd.elc ${dotdot}/lisp/mwheel.elc \
- ${dotdot}/lisp/tool-bar.elc \
+ ${dotdot}/lisp/fringe.elc ${dotdot}/lisp/dnd.elc \
+ ${dotdot}/lisp/mwheel.elc ${dotdot}/lisp/tool-bar.elc \
${dotdot}/lisp/x-dnd.elc \
${dotdot}/lisp/international/ccl.elc \
${dotdot}/lisp/international/codepage.elc \
diff --git a/src/editfns.c b/src/editfns.c
index 4f8b349b749..4578af6973c 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -821,6 +821,8 @@ This function does not move point. */)
Lisp_Object n;
{
int orig, orig_byte, end;
+ int count = SPECPDL_INDEX ();
+ specbind (Qinhibit_point_motion_hooks, Qt);
if (NILP (n))
XSETFASTINT (n, 1);
@@ -834,6 +836,8 @@ This function does not move point. */)
SET_PT_BOTH (orig, orig_byte);
+ unbind_to (count, Qnil);
+
/* Return END constrained to the current input field. */
return Fconstrain_to_field (make_number (end), make_number (orig),
XINT (n) != 1 ? Qt : Qnil,
diff --git a/src/fileio.c b/src/fileio.c
index 066668d107f..84b32f8dda9 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -4293,13 +4293,8 @@ actually used. */)
if we couldn't read the file. */
if (how_much < 0)
- {
- if (how_much == -1)
- error ("IO error reading %s: %s",
- SDATA (orig_filename), emacs_strerror (errno));
- else if (how_much == -2)
- error ("maximum buffer size exceeded");
- }
+ error ("IO error reading %s: %s",
+ SDATA (orig_filename), emacs_strerror (errno));
if (unprocessed > 0)
{
diff --git a/src/frame.c b/src/frame.c
index 3efd04bf110..371441c7cca 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -3142,7 +3142,7 @@ x_set_border_width (f, arg, oldval)
#ifndef MAC_OS
if (FRAME_X_WINDOW (f) != 0)
- error ("Cannot change the border width of a window");
+ error ("Cannot change the border width of a frame");
#endif /* MAC_TODO */
f->border_width = XINT (arg);
diff --git a/src/intervals.c b/src/intervals.c
index 77971ace2a7..21e60c96d3f 100644
--- a/src/intervals.c
+++ b/src/intervals.c
@@ -2196,36 +2196,38 @@ set_point_both (buffer, charpos, bytepos)
Lisp_Object leave_after, leave_before, enter_after, enter_before;
if (fromprev)
- leave_after = textget (fromprev->plist, Qpoint_left);
+ leave_before = textget (fromprev->plist, Qpoint_left);
else
- leave_after = Qnil;
+ leave_before = Qnil;
+
if (from)
- leave_before = textget (from->plist, Qpoint_left);
+ leave_after = textget (from->plist, Qpoint_left);
else
- leave_before = Qnil;
+ leave_after = Qnil;
if (toprev)
- enter_after = textget (toprev->plist, Qpoint_entered);
+ enter_before = textget (toprev->plist, Qpoint_entered);
else
- enter_after = Qnil;
+ enter_before = Qnil;
+
if (to)
- enter_before = textget (to->plist, Qpoint_entered);
+ enter_after = textget (to->plist, Qpoint_entered);
else
- enter_before = Qnil;
+ enter_after = Qnil;
if (! EQ (leave_before, enter_before) && !NILP (leave_before))
- call2 (leave_before, make_number (old_position),
- make_number (charpos));
+ call2 (leave_before, make_number (old_position),
+ make_number (charpos));
if (! EQ (leave_after, enter_after) && !NILP (leave_after))
- call2 (leave_after, make_number (old_position),
- make_number (charpos));
+ call2 (leave_after, make_number (old_position),
+ make_number (charpos));
if (! EQ (enter_before, leave_before) && !NILP (enter_before))
- call2 (enter_before, make_number (old_position),
- make_number (charpos));
+ call2 (enter_before, make_number (old_position),
+ make_number (charpos));
if (! EQ (enter_after, leave_after) && !NILP (enter_after))
- call2 (enter_after, make_number (old_position),
- make_number (charpos));
+ call2 (enter_after, make_number (old_position),
+ make_number (charpos));
}
}
@@ -2339,7 +2341,9 @@ get_property_and_range (pos, prop, val, start, end, object)
/* Return the proper local keymap TYPE for position POSITION in
BUFFER; TYPE should be one of `keymap' or `local-map'. Use the map
specified by the PROP property, if any. Otherwise, if TYPE is
- `local-map' use BUFFER's local map. */
+ `local-map' use BUFFER's local map.
+
+ POSITION must be in the accessible part of BUFFER. */
Lisp_Object
get_local_map (position, buffer, type)
@@ -2351,7 +2355,7 @@ get_local_map (position, buffer, type)
int old_begv, old_zv, old_begv_byte, old_zv_byte;
/* Perhaps we should just change `position' to the limit. */
- if (position > BUF_Z (buffer) || position < BUF_BEG (buffer))
+ if (position > BUF_ZV (buffer) || position < BUF_BEGV (buffer))
abort ();
/* Ignore narrowing, so that a local map continues to be valid even if
diff --git a/src/lread.c b/src/lread.c
index e2f9d81d059..b6161ebedaa 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -1534,7 +1534,9 @@ end_of_file_error ()
/* UNIBYTE specifies how to set load_convert_to_unibyte
for this invocation.
READFUN, if non-nil, is used instead of `read'.
- START, END is region in current buffer (from eval-region). */
+
+ START, END specify region to read in current buffer (from eval-region).
+ If the input is not from a buffer, they must be nil. */
static void
readevalloop (readcharfun, stream, sourcename, evalfun,
@@ -1570,6 +1572,10 @@ readevalloop (readcharfun, stream, sourcename, evalfun,
else if (MARKERP (readcharfun))
b = XMARKER (readcharfun)->buffer;
+ /* We assume START is nil when input is not from a buffer. */
+ if (! NILP (start) && !b)
+ abort ();
+
specbind (Qstandard_input, readcharfun); /* GCPROs readcharfun. */
specbind (Qcurrent_load_list, Qnil);
record_unwind_protect (readevalloop_1, load_convert_to_unibyte ? Qt : Qnil);
diff --git a/src/textprop.c b/src/textprop.c
index e2f9c531735..87fa6742919 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -717,10 +717,11 @@ DEFUN ("next-char-property-change", Fnext_char_property_change,
This scans characters forward in the current buffer from POSITION till
it finds a change in some text property, or the beginning or end of an
overlay, and returns the position of that.
-If none is found, the function returns (point-max).
+If none is found up to (point-max), the function returns (point-max).
If the optional second argument LIMIT is non-nil, don't search
-past position LIMIT; return LIMIT if nothing is found before LIMIT. */)
+past position LIMIT; return LIMIT if nothing is found before LIMIT.
+LIMIT is a no-op if it is greater than (point-max). */)
(position, limit)
Lisp_Object position, limit;
{
@@ -742,10 +743,11 @@ DEFUN ("previous-char-property-change", Fprevious_char_property_change,
Scans characters backward in the current buffer from POSITION till it
finds a change in some text property, or the beginning or end of an
overlay, and returns the position of that.
-If none is found, the function returns (point-max).
+If none is found since (point-min), the function returns (point-min).
If the optional second argument LIMIT is non-nil, don't search
-past position LIMIT; return LIMIT if nothing is found before LIMIT. */)
+past position LIMIT; return LIMIT if nothing is found before LIMIT.
+LIMIT is a no-op if it is less than (point-min). */)
(position, limit)
Lisp_Object position, limit;
{
@@ -771,6 +773,9 @@ If the optional third argument OBJECT is a buffer (or nil, which means
the current buffer), POSITION is a buffer position (integer or marker).
If OBJECT is a string, POSITION is a 0-based index into it.
+In a string, scan runs to the end of the string.
+In a buffer, it runs to (point-max), and the value cannot exceed that.
+
The property values are compared with `eq'.
If the property is constant all the way to the end of OBJECT, return the
last valid position in OBJECT.
@@ -812,22 +817,30 @@ past position LIMIT; return LIMIT if nothing is found before LIMIT. */)
initial_value = Fget_char_property (position, prop, object);
if (NILP (limit))
- XSETFASTINT (limit, BUF_ZV (current_buffer));
+ XSETFASTINT (limit, ZV);
else
CHECK_NUMBER_COERCE_MARKER (limit);
- for (;;)
+ if (XFASTINT (position) >= XFASTINT (limit))
{
- position = Fnext_char_property_change (position, limit);
- if (XFASTINT (position) >= XFASTINT (limit)) {
- position = limit;
- break;
- }
-
- value = Fget_char_property (position, prop, object);
- if (!EQ (value, initial_value))
- break;
+ position = limit;
+ if (XFASTINT (position) > ZV)
+ XSETFASTINT (position, ZV);
}
+ else
+ while (1)
+ {
+ position = Fnext_char_property_change (position, limit);
+ if (XFASTINT (position) >= XFASTINT (limit))
+ {
+ position = limit;
+ break;
+ }
+
+ value = Fget_char_property (position, prop, object);
+ if (!EQ (value, initial_value))
+ break;
+ }
unbind_to (count, Qnil);
}
@@ -845,6 +858,9 @@ If the optional third argument OBJECT is a buffer (or nil, which means
the current buffer), POSITION is a buffer position (integer or marker).
If OBJECT is a string, POSITION is a 0-based index into it.
+In a string, scan runs to the start of the string.
+In a buffer, it runs to (point-min), and the value cannot be less than that.
+
The property values are compared with `eq'.
If the property is constant all the way to the start of OBJECT, return the
first valid position in OBJECT.
@@ -883,19 +899,23 @@ back past position LIMIT; return LIMIT if nothing is found before LIMIT. */)
CHECK_NUMBER_COERCE_MARKER (position);
if (NILP (limit))
- XSETFASTINT (limit, BUF_BEGV (current_buffer));
+ XSETFASTINT (limit, BEGV);
else
CHECK_NUMBER_COERCE_MARKER (limit);
if (XFASTINT (position) <= XFASTINT (limit))
- position = limit;
+ {
+ position = limit;
+ if (XFASTINT (position) < BEGV)
+ XSETFASTINT (position, BEGV);
+ }
else
{
- Lisp_Object initial_value =
- Fget_char_property (make_number (XFASTINT (position) - 1),
- prop, object);
+ Lisp_Object initial_value
+ = Fget_char_property (make_number (XFASTINT (position) - 1),
+ prop, object);
- for (;;)
+ while (1)
{
position = Fprevious_char_property_change (position, limit);
@@ -906,9 +926,9 @@ back past position LIMIT; return LIMIT if nothing is found before LIMIT. */)
}
else
{
- Lisp_Object value =
- Fget_char_property (make_number (XFASTINT (position) - 1),
- prop, object);
+ Lisp_Object value
+ = Fget_char_property (make_number (XFASTINT (position) - 1),
+ prop, object);
if (!EQ (value, initial_value))
break;
diff --git a/src/xdisp.c b/src/xdisp.c
index b1404d9c593..0ee3b19d638 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -9829,7 +9829,7 @@ redisplay_tool_bar (f)
border = 0;
rows = f->n_tool_bar_rows;
- height = (it.last_visible_y - border) / rows;
+ height = max (1, (it.last_visible_y - border) / rows);
extra = it.last_visible_y - border - height * rows;
while (it.current_y < it.last_visible_y)
diff --git a/src/xterm.c b/src/xterm.c
index b1f9e76080f..d58839db09f 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -5885,8 +5885,9 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
== dpyinfo->Xatom_editres)
{
f = x_any_window_to_frame (dpyinfo, event.xclient.window);
- _XEditResCheckMessages (f->output_data.x->widget, NULL,
- &event, NULL);
+ if (f)
+ _XEditResCheckMessages (f->output_data.x->widget, NULL,
+ &event, NULL);
goto done;
}
#endif /* HACK_EDITRES */
@@ -5902,6 +5903,8 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
images, only, which should have 1 page. */
Pixmap pixmap = (Pixmap) event.xclient.data.l[1];
f = x_window_to_frame (dpyinfo, event.xclient.window);
+ if (!f)
+ goto OTHER;
x_kill_gs_process (pixmap, f);
expose_frame (f, 0, 0, 0, 0);
goto done;
@@ -5920,10 +5923,8 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
#endif /* USE_TOOLKIT_SCROLL_BARS */
f = x_any_window_to_frame (dpyinfo, event.xclient.window);
-
if (!f)
goto OTHER;
-
if (x_handle_dnd_message (f, &event.xclient, dpyinfo, &inev.ie))
*finish = X_EVENT_DROP;
}
@@ -6166,7 +6167,8 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit)
f = x_any_window_to_frame (dpyinfo, event.xkey.window);
if (!dpyinfo->mouse_face_hidden && INTEGERP (Vmouse_highlight)
- && !EQ (f->tool_bar_window, dpyinfo->mouse_face_window))
+ && (f == 0
+ || !EQ (f->tool_bar_window, dpyinfo->mouse_face_window)))
{
clear_mouse_face (dpyinfo);
dpyinfo->mouse_face_hidden = 1;