summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaroly Lorentey <karoly@lorentey.hu>2007-04-22 12:42:47 +0000
committerKaroly Lorentey <karoly@lorentey.hu>2007-04-22 12:42:47 +0000
commit9d0799072a0d09bc14a99eaf372b262d1ba61399 (patch)
tree76acd4ae0559776a5ec27fbd5c25598285ec71d1
parente18c709364b095ea0be8ecabe458ac9a642a252f (diff)
parenta20becf321f023c6dc1831595712576d64e2ef4b (diff)
downloademacs-9d0799072a0d09bc14a99eaf372b262d1ba61399.tar.gz
Merged from emacs@sv.gnu.org
Patches applied: * emacs@sv.gnu.org/emacs--devo--0--patch-674 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-675 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-676 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-677 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-678 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-679 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-680 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-681 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-682 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-683 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-684 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-685 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-686 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-687 Release ERC 5.2. * emacs@sv.gnu.org/emacs--devo--0--patch-688 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-689 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-690 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-691 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-692 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-693 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-694 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-695 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-696 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-697 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-698 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-699 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-700 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-701 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-209 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-210 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-211 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-212 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-213 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-214 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-215 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-601
-rw-r--r--AUTHORS178
-rw-r--r--ChangeLog24
-rw-r--r--FTP236
-rw-r--r--INSTALL14
-rw-r--r--admin/FOR-RELEASE9
-rw-r--r--admin/notes/copyright29
-rwxr-xr-xconfigure60
-rw-r--r--configure.in53
-rw-r--r--etc/COOKIES2
-rw-r--r--etc/ChangeLog77
-rw-r--r--etc/DEBUG17
-rw-r--r--etc/ERC-NEWS252
-rw-r--r--etc/FTP8
-rw-r--r--etc/MACHINES16
-rw-r--r--etc/MORE.STUFF29
-rw-r--r--etc/Makefile115
-rw-r--r--etc/NEWS78
-rw-r--r--etc/ORDERS2
-rw-r--r--etc/PROBLEMS105
-rw-r--r--etc/SERVICE1376
-rw-r--r--etc/TODO33
-rw-r--r--etc/calccard.ps14
-rw-r--r--etc/dired-ref.ps16
-rw-r--r--etc/emacs.167
-rw-r--r--etc/emacs.py52
-rw-r--r--etc/fr-refcard.ps1659
-rw-r--r--etc/fr-refcard.tex11
-rw-r--r--etc/refcard.ps14
-rw-r--r--lib-src/makefile.w32-in2
-rw-r--r--lisp/ChangeLog742
-rw-r--r--lisp/arc-mode.el19
-rw-r--r--lisp/autorevert.el4
-rw-r--r--lisp/button.el38
-rw-r--r--lisp/calc/calc.el8
-rw-r--r--lisp/calendar/appt.el8
-rw-r--r--lisp/calendar/cal-china.el6
-rw-r--r--lisp/calendar/cal-coptic.el6
-rw-r--r--lisp/calendar/cal-dst.el18
-rw-r--r--lisp/calendar/cal-french.el6
-rw-r--r--lisp/calendar/cal-hebrew.el6
-rw-r--r--lisp/calendar/cal-islam.el6
-rw-r--r--lisp/calendar/cal-iso.el6
-rw-r--r--lisp/calendar/cal-julian.el6
-rw-r--r--lisp/calendar/cal-mayan.el2
-rw-r--r--lisp/calendar/cal-menu.el6
-rw-r--r--lisp/calendar/cal-move.el6
-rw-r--r--lisp/calendar/cal-persia.el10
-rw-r--r--lisp/calendar/cal-x.el6
-rw-r--r--lisp/calendar/calendar.el24
-rw-r--r--lisp/calendar/diary-lib.el141
-rw-r--r--lisp/calendar/holidays.el6
-rw-r--r--lisp/calendar/lunar.el6
-rw-r--r--lisp/calendar/solar.el6
-rw-r--r--lisp/comint.el9
-rw-r--r--lisp/compare-w.el25
-rw-r--r--lisp/complete.el126
-rw-r--r--lisp/cus-edit.el4
-rw-r--r--lisp/cus-start.el6
-rw-r--r--lisp/desktop.el94
-rw-r--r--lisp/dframe.el4
-rw-r--r--lisp/diff-mode.el6
-rw-r--r--lisp/dired-x.el14
-rw-r--r--lisp/dnd.el2
-rw-r--r--lisp/dos-w32.el3
-rw-r--r--lisp/emacs-lisp/authors.el2
-rw-r--r--lisp/emacs-lisp/byte-opt.el81
-rw-r--r--lisp/emacs-lisp/bytecomp.el33
-rw-r--r--lisp/emacs-lisp/edebug.el49
-rw-r--r--lisp/emacs-lisp/ewoc.el9
-rw-r--r--lisp/emacs-lisp/lisp-mode.el3
-rw-r--r--lisp/emacs-lisp/lisp.el3
-rw-r--r--lisp/emacs-lisp/sregex.el2
-rw-r--r--lisp/emacs-lisp/testcover.el12
-rw-r--r--lisp/emacs-lisp/timer.el17
-rw-r--r--lisp/emacs-lisp/warnings.el13
-rw-r--r--lisp/emulation/viper.el40
-rw-r--r--lisp/erc/ChangeLog1516
-rw-r--r--lisp/erc/ChangeLog.061457
-rw-r--r--lisp/erc/erc-autoaway.el125
-rw-r--r--lisp/erc/erc-backend.el198
-rw-r--r--lisp/erc/erc-button.el16
-rw-r--r--lisp/erc/erc-capab.el30
-rw-r--r--lisp/erc/erc-compat.el8
-rw-r--r--lisp/erc/erc-fill.el11
-rw-r--r--lisp/erc/erc-ibuffer.el3
-rw-r--r--lisp/erc/erc-identd.el34
-rw-r--r--lisp/erc/erc-log.el78
-rw-r--r--lisp/erc/erc-match.el9
-rw-r--r--lisp/erc/erc-menu.el7
-rw-r--r--lisp/erc/erc-netsplit.el2
-rw-r--r--lisp/erc/erc-networks.el8
-rw-r--r--lisp/erc/erc-notify.el5
-rw-r--r--lisp/erc/erc-pcomplete.el4
-rw-r--r--lisp/erc/erc-ring.el3
-rw-r--r--lisp/erc/erc-services.el100
-rw-r--r--lisp/erc/erc-speedbar.el5
-rw-r--r--lisp/erc/erc-spelling.el40
-rw-r--r--lisp/erc/erc-stamp.el18
-rw-r--r--lisp/erc/erc-track.el187
-rw-r--r--lisp/erc/erc.el354
-rw-r--r--lisp/eshell/esh-proc.el2
-rw-r--r--lisp/expand.el15
-rw-r--r--lisp/faces.el6
-rw-r--r--lisp/ffap.el19
-rw-r--r--lisp/files.el16
-rw-r--r--lisp/font-lock.el2
-rw-r--r--lisp/gnus/ChangeLog123
-rw-r--r--lisp/gnus/gmm-utils.el4
-rw-r--r--lisp/gnus/gnus-art.el4
-rw-r--r--lisp/gnus/gnus-msg.el9
-rw-r--r--lisp/gnus/gnus-registry.el2
-rw-r--r--lisp/gnus/gnus-util.el2
-rw-r--r--lisp/gnus/message.el123
-rw-r--r--lisp/gnus/nnmail.el7
-rw-r--r--lisp/help.el2
-rw-r--r--lisp/ido.el10
-rw-r--r--lisp/info.el33
-rw-r--r--lisp/international/mule.el14
-rw-r--r--lisp/isearch.el3
-rw-r--r--lisp/ldefs-boot.el302
-rw-r--r--lisp/loadhist.el28
-rw-r--r--lisp/mail/footnote.el19
-rw-r--r--lisp/mail/rmail.el24
-rw-r--r--lisp/mail/sendmail.el10
-rw-r--r--lisp/mail/smtpmail.el22
-rw-r--r--lisp/man.el9
-rw-r--r--lisp/menu-bar.el4
-rw-r--r--lisp/mouse.el6
-rw-r--r--lisp/net/tls.el15
-rw-r--r--lisp/net/tramp.el27
-rw-r--r--lisp/newcomment.el4
-rw-r--r--lisp/outline.el22
-rw-r--r--lisp/pcomplete.el8
-rw-r--r--lisp/play/5x5.el2
-rw-r--r--lisp/play/animate.el4
-rw-r--r--lisp/play/dissociate.el2
-rw-r--r--lisp/play/doctor.el2
-rw-r--r--lisp/play/gomoku.el2
-rw-r--r--lisp/play/landmark.el2
-rw-r--r--lisp/play/tetris.el2
-rw-r--r--lisp/play/zone.el1
-rw-r--r--lisp/progmodes/cc-awk.el1
-rw-r--r--lisp/progmodes/cc-cmds.el44
-rw-r--r--lisp/progmodes/cc-defs.el18
-rw-r--r--lisp/progmodes/cc-engine.el134
-rw-r--r--lisp/progmodes/cc-fonts.el92
-rw-r--r--lisp/progmodes/cc-langs.el25
-rw-r--r--lisp/progmodes/cc-mode.el10
-rw-r--r--lisp/progmodes/cc-subword.el54
-rw-r--r--lisp/progmodes/cc-vars.el3
-rw-r--r--lisp/progmodes/compile.el3
-rw-r--r--lisp/progmodes/cperl-mode.el5
-rw-r--r--lisp/progmodes/dcl-mode.el5
-rw-r--r--lisp/progmodes/ebnf2ps.el4
-rw-r--r--lisp/progmodes/flymake.el4
-rw-r--r--lisp/progmodes/gdb-ui.el13
-rw-r--r--lisp/progmodes/grep.el20
-rw-r--r--lisp/progmodes/gud.el56
-rw-r--r--lisp/progmodes/hideshow.el8
-rw-r--r--lisp/progmodes/idlw-shell.el19
-rw-r--r--lisp/progmodes/idlwave.el1
-rw-r--r--lisp/progmodes/m4-mode.el11
-rw-r--r--lisp/progmodes/perl-mode.el1
-rw-r--r--lisp/progmodes/python.el9
-rw-r--r--lisp/recentf.el9
-rw-r--r--lisp/replace.el3
-rw-r--r--lisp/simple.el51
-rw-r--r--lisp/startup.el10
-rw-r--r--lisp/subr.el78
-rw-r--r--lisp/t-mouse.el2
-rw-r--r--lisp/term.el54
-rw-r--r--lisp/term/xterm.el43
-rw-r--r--lisp/textmodes/bibtex.el64
-rw-r--r--lisp/textmodes/flyspell.el6
-rw-r--r--lisp/textmodes/org.el9
-rw-r--r--lisp/textmodes/reftex-auc.el1
-rw-r--r--lisp/textmodes/reftex-cite.el1
-rw-r--r--lisp/textmodes/reftex-dcr.el2
-rw-r--r--lisp/textmodes/reftex-global.el1
-rw-r--r--lisp/textmodes/reftex-index.el1
-rw-r--r--lisp/textmodes/reftex-parse.el2
-rw-r--r--lisp/textmodes/reftex-ref.el1
-rw-r--r--lisp/textmodes/reftex-sel.el1
-rw-r--r--lisp/textmodes/reftex-toc.el1
-rw-r--r--lisp/textmodes/reftex-vars.el1
-rw-r--r--lisp/textmodes/reftex.el1
-rw-r--r--lisp/tmm.el90
-rw-r--r--lisp/url/ChangeLog31
-rw-r--r--lisp/url/url-cookie.el18
-rw-r--r--lisp/url/url-http.el58
-rw-r--r--lisp/url/url-parse.el36
-rw-r--r--lisp/url/url-vars.el6
-rw-r--r--lisp/vc-arch.el15
-rw-r--r--lisp/vc-rcs.el9
-rw-r--r--lisp/view.el4
-rw-r--r--lisp/whitespace.el8
-rw-r--r--lisp/wid-edit.el2
-rw-r--r--lisp/woman.el113
-rw-r--r--lisp/xt-mouse.el28
-rw-r--r--lispref/ChangeLog279
-rw-r--r--lispref/abbrevs.texi2
-rw-r--r--lispref/advice.texi3
-rw-r--r--lispref/anti.texi9
-rw-r--r--lispref/backups.texi29
-rw-r--r--lispref/buffers.texi18
-rw-r--r--lispref/commands.texi34
-rw-r--r--lispref/compile.texi3
-rw-r--r--lispref/customize.texi13
-rw-r--r--lispref/debugging.texi10
-rw-r--r--lispref/display.texi64
-rw-r--r--lispref/edebug.texi17
-rw-r--r--lispref/elisp.texi17
-rw-r--r--lispref/errors.texi1
-rw-r--r--lispref/eval.texi4
-rw-r--r--lispref/files.texi20
-rw-r--r--lispref/frames.texi33
-rw-r--r--lispref/functions.texi17
-rw-r--r--lispref/hash.texi9
-rw-r--r--lispref/help.texi5
-rw-r--r--lispref/internals.texi7
-rw-r--r--lispref/intro.texi17
-rw-r--r--lispref/keymaps.texi14
-rw-r--r--lispref/lists.texi45
-rw-r--r--lispref/loading.texi39
-rw-r--r--lispref/locals.texi7
-rw-r--r--lispref/macros.texi7
-rw-r--r--lispref/maps.texi2
-rw-r--r--lispref/markers.texi5
-rw-r--r--lispref/minibuf.texi8
-rw-r--r--lispref/modes.texi11
-rw-r--r--lispref/nonascii.texi30
-rw-r--r--lispref/numbers.texi24
-rw-r--r--lispref/objects.texi16
-rw-r--r--lispref/os.texi36
-rw-r--r--lispref/positions.texi4
-rw-r--r--lispref/processes.texi19
-rw-r--r--lispref/searching.texi29
-rw-r--r--lispref/sequences.texi2
-rw-r--r--lispref/streams.texi1
-rw-r--r--lispref/strings.texi25
-rw-r--r--lispref/symbols.texi4
-rw-r--r--lispref/syntax.texi13
-rw-r--r--lispref/text.texi43
-rw-r--r--lispref/tips.texi9
-rw-r--r--lispref/variables.texi12
-rw-r--r--lispref/windows.texi10
-rw-r--r--mac/ChangeLog4
-rw-r--r--mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings4
-rwxr-xr-xmac/make-package2
-rw-r--r--mac/src/Emacs.r6
-rw-r--r--man/ChangeLog183
-rw-r--r--man/ack.texi2
-rw-r--r--man/ada-mode.texi9
-rw-r--r--man/anti.texi6
-rw-r--r--man/autotype.texi4
-rw-r--r--man/buffers.texi8
-rw-r--r--man/calc.texi968
-rw-r--r--man/calendar.texi11
-rw-r--r--man/cc-mode.texi17
-rw-r--r--man/cl.texi9
-rw-r--r--man/cmdargs.texi13
-rw-r--r--man/custom.texi91
-rw-r--r--man/dired-x.texi59
-rw-r--r--man/dired.texi6
-rw-r--r--man/display.texi9
-rw-r--r--man/doclicense.texi2
-rw-r--r--man/ebrowse.texi14
-rw-r--r--man/ediff.texi14
-rw-r--r--man/emacs-mime.texi6
-rw-r--r--man/emacs.texi14
-rw-r--r--man/erc.texi314
-rw-r--r--man/eshell.texi5
-rw-r--r--man/eudc.texi9
-rw-r--r--man/faq.texi106
-rw-r--r--man/files.texi32
-rw-r--r--man/flymake.texi6
-rw-r--r--man/forms.texi9
-rw-r--r--man/frames.texi9
-rw-r--r--man/glossary.texi4
-rw-r--r--man/gnu.texi16
-rw-r--r--man/gnus.texi12
-rw-r--r--man/idlwave.texi9
-rw-r--r--man/killing.texi8
-rw-r--r--man/macos.texi18
-rw-r--r--man/message.texi38
-rw-r--r--man/misc.texi7
-rw-r--r--man/mule.texi3
-rw-r--r--man/newsticker.texi6
-rw-r--r--man/org.texi13
-rw-r--r--man/pcl-cvs.texi11
-rw-r--r--man/pgg.texi17
-rw-r--r--man/programs.texi14
-rw-r--r--man/rcirc.texi10
-rw-r--r--man/reftex.texi59
-rw-r--r--man/rmail.texi15
-rw-r--r--man/sc.texi15
-rw-r--r--man/sending.texi8
-rw-r--r--man/ses.texi7
-rw-r--r--man/sieve.texi6
-rw-r--r--man/smtpmail.texi5
-rw-r--r--man/speedbar.texi10
-rw-r--r--man/texinfo.tex958
-rw-r--r--man/tramp.texi6
-rw-r--r--man/url.texi14
-rw-r--r--man/vip.texi7
-rw-r--r--man/viper.texi7
-rw-r--r--man/widget.texi9
-rw-r--r--man/woman.texi79
-rw-r--r--man/xresources.texi17
-rw-r--r--nt/ChangeLog4
-rw-r--r--nt/INSTALL5
-rw-r--r--nt/emacs.rc8
-rw-r--r--src/ChangeLog251
-rw-r--r--src/ChangeLog.52
-rw-r--r--src/alloc.c4
-rw-r--r--src/buffer.c11
-rw-r--r--src/dispnew.c35
-rw-r--r--src/editfns.c42
-rw-r--r--src/emacs.c5
-rw-r--r--src/fileio.c8
-rw-r--r--src/gmalloc.c78
-rw-r--r--src/gtkutil.c1
-rw-r--r--src/indent.c7
-rw-r--r--src/intervals.c68
-rw-r--r--src/keyboard.c6
-rw-r--r--src/keymap.c55
-rw-r--r--src/keymap.h2
-rw-r--r--src/lread.c6
-rw-r--r--src/m/hp800.h77
-rw-r--r--src/m/sr2k.h160
-rw-r--r--src/mac.c5
-rw-r--r--src/macfns.c20
-rw-r--r--src/macselect.c15
-rw-r--r--src/macterm.c197
-rw-r--r--src/print.c2
-rw-r--r--src/process.c46
-rw-r--r--src/s/darwin.h17
-rw-r--r--src/undo.c2
-rw-r--r--src/unexhp9k800.c334
-rw-r--r--src/w32fns.c2
-rw-r--r--src/widget.c5
-rw-r--r--src/window.c2
-rw-r--r--src/xdisp.c81
-rw-r--r--src/xfns.c2
344 files changed, 11426 insertions, 7152 deletions
diff --git a/AUTHORS b/AUTHORS
index 632fa2089d0..a29d55cf441 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -33,9 +33,9 @@ Alakazam Petrofsky: changed hanoi.el
Alan Mackenzie: wrote cc-awk.el
and changed cc-cmds.el cc-mode.el cc-engine.el cc-defs.el cc-vars.el
- cc-langs.el cc-mode.texi cc-styles.el cc-align.el lread.c cc-fonts.el
- programs.texi cc-subword.el isearch.el lisp.el search.texi subr.el
- text.texi buffers.texi cc-fix.el cc-mode-19.el and 17 other files
+ cc-langs.el cc-mode.texi cc-styles.el cc-align.el cc-fonts.el lread.c
+ programs.texi cc-subword.el isearch.el lisp.el search.texi startup.el
+ subr.el text.texi buffers.texi cc-fix.el and 18 other files
Alan Shutko: changed diary-lib.el calendar.el bindings.el cal-hebrew.el
easy-mmode.el gnus-sum.el ibuf-ext.el ibuffer.el lunar.el macros.el
@@ -124,10 +124,11 @@ Andreas Schwab: changed Makefile.in files.el lisp.h xdisp.c configure.in
fileio.c simple.el buffer.c minibuf.c process.c xterm.c emacs.c
keyboard.c and 449 other files
-Andreas Seltenreich: changed nnweb.el gnus.texi nnslashdot.el mm-uu.el
- battery.el comint.el easy-mmode.el gmm-utils.el gnus-art.el gnus-ml.el
- gnus-srvr.el gnus-start.el gnus-sum.el gnus-util.el gnus.el mm-url.el
- url-cookie.el url-http.el xterm.c
+Andreas Seltenreich: changed nnweb.el gnus.texi nnslashdot.el
+ gnus-util.el mm-uu.el url-http.el battery.el comint.el easy-mmode.el
+ gmm-utils.el gnus-art.el gnus-ml.el gnus-msg.el gnus-srvr.el
+ gnus-start.el gnus-sum.el gnus.el message.el mm-url.el url-cookie.el
+ xterm.c
Andrew Choi: wrote mac-win.el
and changed macterm.c mac.c macfns.c INSTALL macmenu.c darwin.h macterm.h
@@ -331,11 +332,11 @@ Charlie Martin: wrote autoinsert.el
Cheng Gao: changed MORE.STUFF flymake.el tips.texi url-dired.el
url-file.el url-handlers.el url-http.el url-nfs.el
-Chong Yidong: changed cus-edit.el simple.el custom.el files.el
- display.texi longlines.el keyboard.c text.texi custom.texi files.texi
- image-mode.el info.el mouse.el xdisp.c compile.el frames.texi
- startup.el wid-edit.el xterm.c cus-theme.el misc.texi
- and 237 other files
+Chong Yidong: changed cus-edit.el simple.el files.el custom.el
+ display.texi longlines.el xdisp.c keyboard.c compile.el custom.texi
+ files.texi info.el text.texi frames.texi image-mode.el mouse.el
+ startup.el wid-edit.el xterm.c cus-theme.el faces.el
+ and 290 other files
Chris Hanson: changed xscheme.el scheme.el xterm.c hpux.h x11term.c
hp9000s300.h keyboard.c process.c texinfmt.el emacsclient.c sort.el
@@ -395,7 +396,7 @@ Craig Mcdaniel: changed sheap.c
Daiki Ueno: wrote pgg-def.el pgg-gpg.el pgg-parse.el pgg-pgp.el
pgg-pgp5.el pgg.el starttls.el
and changed gnus-sum.el mml2015.el gnus-agent.el gnus-srvr.el
- message.texi mml1991.el
+ message.texi mml1991.el pgg.texi
Dale Gulledge: changed TUTORIAL.eo
@@ -417,7 +418,7 @@ Dan Nicolaescu: wrote iris-ansi.el romanian.el
and changed term.el xterm.el hideshow.el isearch.el icon.el lisp.h
cus-edit.el faces.el font-lock.el grep.el sh-script.el eterm-color.ti
ibuffer.el rxvt.el vhdl-mode.el xterm.c bindings.el compile.el
- dabbrev.el imenu.el outline.el and 164 other files
+ dabbrev.el imenu.el outline.el and 166 other files
Daniel Brockman: changed cus-start.el format-spec.el ibuffer.el rcirc.el
@@ -462,7 +463,7 @@ Dave Love: wrote autoarg.el autoconf.el benchmark.el cfengine.el
and changed configure.in Makefile.in help.el fortran.el browse-url.el
mule-cmds.el simple.el xterm.c cus-edit.el files.el info.el mule.el
wid-edit.el fns.c vc.el rfc2047.el bindings.el cus-start.el buffer.c
- byte-opt.el bytecomp.el and 729 other files
+ byte-opt.el bytecomp.el and 727 other files
Dave Pearson: wrote 5x5.el quickurl.el
@@ -491,7 +492,7 @@ David Gillespie: wrote calc-aent.el calc-alg.el calc-arith.el calc-bin.el
cl.texinfo complete.el edmacro.el
and changed info.el bytecomp.el
-David Hansen: changed nnrss.el pcomplete.el tempo.el
+David Hansen: changed nnrss.el cc-cmds.el lisp.el pcomplete.el tempo.el
David Hedbor: changed gnus-art.el mm-decode.el mm-view.el gnus-agent.el
gnus-cite.el gnus-cus.el gnus-eform.el gnus-group.el gnus-msg.el
@@ -508,8 +509,8 @@ David J. Mackenzie: changed configure.in etags.c fakemail.c movemail.c
David Kastrup: changed greek.el replace.el faq.texi search.c ange-ftp.el
help.el mouse.el Makefile.in calc.el desktop.el keymaps.texi
- meta-mode.el process.c search.texi subr.el DEBUG DEVEL.HUMOR
- MAILINGLISTS autoload.el browse-url.el buffer.c and 34 other files
+ meta-mode.el process.c search.texi subr.el woman.el DEBUG DEVEL.HUMOR
+ MAILINGLISTS autoload.el browse-url.el and 37 other files
David K,Ae(Bgedal: wrote tempo.el
and changed sendmail.el xmenu.c
@@ -555,6 +556,8 @@ David Robinson: changed menu-bar.el x-win.el
David S. Goldberg: changed gnus-art.el message.el
+David Vazquez: changed m4-mode.el
+
David Z. Maze: changed nnml.el nnrss.el
Deanna Phillips: changed configure.in
@@ -583,9 +586,9 @@ Dhruva Krishnamurthy: changed makefile.w32-in
Diane Murray: changed erc.el erc-menu.el erc-backend.el erc-button.el
erc-track.el erc-match.el erc-nets.el erc-list.el erc-autoaway.el
- erc-capab.el erc-nickserv.el erc-compat.el erc-stamp.el erc-goodies.el
- erc-ibuffer.el erc-log.el Makefile erc-dcc.el erc-fill.el
- erc-nicklist.el erc-notify.el and 30 other files
+ erc-capab.el erc-nickserv.el erc-stamp.el erc-compat.el erc-fill.el
+ erc-goodies.el erc-ibuffer.el erc-log.el Makefile erc-dcc.el
+ erc-networks.el erc-nicklist.el and 32 other files
Dick King: wrote uniquify.el
@@ -645,9 +648,9 @@ Eli Tziperman: wrote rmail-spam-filter.el
Eli Zaretskii: wrote codepage.el rxvt.el tty-colors.el
and changed msdos.c Makefile.in makefile.w32-in files.el info.el fileio.c
- startup.el mainmake.v2 config.bat menu-bar.el pc-win.el msdos.h
- rmail.el simple.el internal.el xfaces.c frame.c dosfns.c emacs.c
- faces.el frame.el and 523 other files
+ startup.el mainmake.v2 config.bat menu-bar.el pc-win.el rmail.el
+ simple.el msdos.h internal.el xfaces.c emacs.c frame.c dosfns.c
+ faces.el frame.el and 531 other files
Emanuele Giaquinta: changed rxvt.el configure.in etags.c frame.el
sh-script.el text.texi
@@ -846,11 +849,11 @@ Giorgos Keramidas: changed configure.in MACHINES amdx86-64.h apropos.el
Giuseppe Scrivano: changed buffer.c configure.in sysdep.c xsmfns.c
-Glenn Morris: changed f90.el calendar.el diary-lib.el fortran.el
+Glenn Morris: changed f90.el diary-lib.el calendar.el fortran.el
calendar.texi appt.el sh-script.el Makefile.in timeclock.el cal-menu.el
- startup.el abbrevs.texi cal-hebrew.el cal-islam.el emacs.texi files.el
- holidays.el orgcard.tex programs.texi scroll-all.el TUTORIAL.eo
- and 112 other files
+ complete.el startup.el MACHINES abbrevs.texi cal-hebrew.el cal-islam.el
+ configure.in emacs.texi files.el fr-refcard.tex holidays.el
+ and 138 other files
Glynn Clements: wrote gamegrid.el snake.el tetris.el
@@ -875,7 +878,7 @@ Gregory Chernov: changed nnslashdot.el
Gregory Neil Shapiro: changed mailabbrev.el
-Guanpeng Xu: changed add-log.el TUTORIAL.cn type-break.el
+Guanpeng Xu: changed add-log.el TUTORIAL.cn mouse.el type-break.el
Guillermo J. Rozas: wrote fakemail.c
@@ -917,6 +920,8 @@ Henry Guillaume: wrote find-file.el
Henry Kautz: wrote bib-mode.el refbib.el
+Herbert Euler: changed display.texi
+
Hewlett-Packard: changed emacsclient.c emacsserver.c keyboard.c server.el
Hideki Iwamoto: changed etags.c
@@ -1051,7 +1056,7 @@ Jason Rumney: wrote w32-vars.el
and changed w32fns.c w32term.c w32menu.c w32-win.el w32term.h
makefile.w32-in w32.c w32bdf.c w32-fns.el w32select.c w32console.c
w32gui.h w32proc.c keyboard.c mule-cmds.el emacs.c fileio.c w32bdf.h
- w32inevt.c config.nt configure.bat and 83 other files
+ w32inevt.c config.nt configure.bat and 84 other files
Jay Belanger: changed calc.texi calc.el calc-ext.el calc-embed.el
calc-aent.el calc-prog.el calc-arith.el calc-help.el calc-lang.el
@@ -1142,11 +1147,11 @@ Jochen Hein: changed gnus-art.el
Jochen K,A|(Bpper: changed calc-units.el gnus.texi
-Joe Buehler: changed Makefile.in cygwin.h MACHINES browse-url.el
- comint.el configure.in dired-aux.el dired.el dirtrack.el dos-w32.el
- fast-lock.el filecache.el fileio.c files.el gmalloc.c gnus-util.el
- hippie-exp.el keyboard.c lastfile.c loadup.el mem-limits.h
- and 11 other files
+Joe Buehler: changed Makefile.in configure.in cygwin.h MACHINES
+ browse-url.el comint.el configure dired-aux.el dired.el dirtrack.el
+ dos-w32.el fast-lock.el filecache.el fileio.c files.el gmalloc.c
+ gnus-util.el hippie-exp.el keyboard.c lastfile.c loadup.el
+ and 12 other files
Joe Casadonte: changed gnus-srvr.el
@@ -1171,11 +1176,9 @@ Joev Dubach: changed nntp.el
Johan Bockg,Ae(Brd: changed erc.el erc-backend.el cl-macs.el erc-match.el
erc-nickserv.el erc-ring.el erc-speak.el erc-track.el simple.el
- align.el calendar.el cl.texi custom.el dired-aux.el display.texi
- erc-bbdb.el erc-button.el erc-compat.el erc-dcc.el erc-list.el
- erc-log.el and 12 other files
-
-Johan Bockg,be(Brd: changed icomplete.el
+ align.el bytecomp.el calendar.el cl.texi custom.el dired-aux.el
+ display.texi erc-bbdb.el erc-button.el erc-compat.el erc-dcc.el
+ erc-list.el and 15 other files
Johan Vromans: wrote forms-d2.el forms.el iso-acc.el
and changed complete.el
@@ -1278,9 +1281,9 @@ Juan Le,As(Bn Lahoz Garc,Am(Ba: wrote wdired.el
and changed files.el perl-mode.el
Juanma Barranquero: changed makefile.w32-in subr.el faces.el help-fns.el
- files.el w32fns.c buffer.c emacsclient.c replace.el simple.el
- vhdl-mode.el bs.el cperl-mode.el eval.c org.el xdisp.c idlwave.el
- sh-script.el window.c ada-mode.el allout.el and 627 other files
+ files.el buffer.c simple.el w32fns.c emacsclient.c replace.el
+ vhdl-mode.el bs.el cperl-mode.el eval.c org.el process.c xdisp.c
+ idlwave.el sh-script.el window.c ada-mode.el and 628 other files
Juergen Hoetzel: changed url-handlers.el
@@ -1296,8 +1299,8 @@ Jure Cuhalev: changed ispell.el
Juri Linkov: changed info.el simple.el replace.el isearch.el compile.el
faces.el display.texi grep.el descr-text.el cus-edit.el dired.el
- dired-aux.el edebug.el files.el lisp-mode.el lisp.el modes.texi mule.el
- compare-w.el desktop.el files.texi and 221 other files
+ dired-aux.el edebug.el compare-w.el files.el lisp-mode.el lisp.el
+ modes.texi mule.el desktop.el files.texi and 221 other files
Justin Sheehy: changed gnus-sum.el nntp.el
@@ -1325,11 +1328,11 @@ Kailash C. Chowksey: changed HELLO Makefile.in ind-util.el kannada.el
Kanematsu Daiji: changed nnimap.el
-Karl Berry: changed info.texi emacs.texi elisp.texi emacs-xtra.texi
- filelock.c anti.texi building.texi cmdargs.texi copyright.el
- custom.texi customize.texi dired.c display.texi faq.texi frames.texi
- gnu.texi help.texi macos.texi minibuf.texi msdog.texi mule.texi
- and 65 other files
+Karl Berry: changed info.texi emacs.texi elisp.texi anti.texi
+ display.texi emacs-xtra.texi filelock.c gnu.texi mule.texi text.texi
+ building.texi cmdargs.texi copyright.el custom.texi customize.texi
+ dired.c faq.texi frames.texi help.texi lists.texi loading.texi
+ and 71 other files
Karl Chen: changed files.el align.el cc-vars.el gnus-art.el help-mode.el
jka-cmpr-hook.el make-mode.el perl-mode.el python.el tex-mode.el
@@ -1359,9 +1362,9 @@ Katsuhiro Hermit Endo: changed gnus-group.el gnus-spec.el
Katsumi Yamaoka: wrote canlock.el
and changed gnus-art.el message.el gnus-sum.el gnus.texi mm-decode.el
- mm-view.el gnus-util.el mm-util.el gnus-msg.el gnus.el lpath.el
+ mm-view.el gnus-util.el gnus-msg.el mm-util.el gnus.el lpath.el
gnus-group.el gnus-start.el rfc2047.el dgnushack.el mm-uu.el nntp.el
- gnus-agent.el mml.el nnrss.el rfc2231.el and 73 other files
+ gnus-agent.el mml.el nnrss.el message.texi and 72 other files
Kaveh R. Ghazi: changed delta88k.h xterm.c
@@ -1438,17 +1441,17 @@ Kevin Rodgers: changed compile.el mailabbrev.el dired-x.el files.el
Kevin Ryde: wrote info-xref.el
and changed info-look.el info.el cl.texi gnus-art.el gnus-sum.el
- mailcap.el os.texi text.texi MORE.STUFF cal-dst.el calendar.texi
- cc-align.el cmdargs.texi compile.texi display.texi em-alias.el
- em-dirs.el em-hist.el em-unix.el emacs-lisp-intro.texi etags.c
- and 18 other files
+ mailcap.el os.texi text.texi MORE.STUFF arc-mode.el cal-dst.el
+ calendar.texi cc-align.el cmdargs.texi compile.texi display.texi
+ em-alias.el em-dirs.el em-hist.el em-unix.el emacs-lisp-intro.texi
+ and 19 other files
Kim F. Storm: wrote bindat.el cua-base.el cua-gmrk.el cua-rect.el ido.el
keypad.el kmacro.el
-and changed xdisp.c dispextern.h simple.el process.c window.c keyboard.c
+and changed xdisp.c dispextern.h process.c simple.el window.c keyboard.c
xterm.c subr.el w32term.c dispnew.c lisp.h fringe.c macterm.c
display.texi fns.c alloc.c xfaces.c keymap.c xfns.c xterm.h .gdbinit
- and 252 other files
+ and 255 other files
Kim-Minh Kaplan: changed gnus-picon.el gnus-sum.el gnus-start.el
gnus-win.el gnus-xmas.el gnus.texi message.el nndraft.el nnml.el
@@ -1670,8 +1673,9 @@ and changed cus-edit.el Makefile.in files.el compile.el rmail.el
mule-cmds.el rmailout.el checkdoc.el configure.in custom.el emacsbug.el
gnus.el help-fns.el ls-lisp.el mwheel.el and 122 other files
-Markus Triska: changed doctor.el flymake.texi handwrite.el speedbar.el
- subr.el tumme.el widget.texi
+Markus Triska: changed byte-opt.el bytecomp.el doctor.el expand.el
+ flymake.el flymake.texi handwrite.el internals.texi speedbar.el subr.el
+ tumme.el widget.texi
Marshall T. Vandegrift: changed gnus-fun.el
@@ -1690,10 +1694,11 @@ Martin Lorentzon: changed vc.el vc-cvs.el vc-hooks.el vc-rcs.el
Martin Neitzel: changed sc.el
-Martin Rudalics: changed cus-edit.el wid-edit.el flyspell.el font-lock.el
- complete.el cus-start.el files.el insdel.c macmenu.c syntax.c w32menu.c
- wdired.el window.el xdisp.c xmenu.c backups.texi buffer.c buffer.h
- casefiddle.c cperl-mode.el custom.el and 30 other files
+Martin Rudalics: changed cus-edit.el wid-edit.el cus-start.el files.el
+ flyspell.el font-lock.el complete.el insdel.c macmenu.c syntax.c
+ w32menu.c wdired.el whitespace.el window.el xdisp.c xmenu.c
+ backups.texi buffer.c buffer.h casefiddle.c cperl-mode.el
+ and 34 other files
Martin Stjernholm: wrote cc-bytecomp.el
and changed cc-engine.el cc-cmds.el cc-langs.el cc-defs.el cc-mode.el
@@ -1799,10 +1804,10 @@ and changed ediff-merge.el ediff*.el viper*.el ediff-hooks.el menu-bar.el
ediff.texi viper-mouse.el viper.texi
Michael Olson: changed erc.el erc-backend.el erc.texi Makefile
- erc-stamp.el erc-log.el erc-autoaway.el erc-identd.el erc-track.el
- erc-list.el erc-match.el erc-dcc.el erc-notify.el erc-bbdb.el
- erc-goodies.el erc-ibuffer.el erc-nicklist.el erc-pcomplete.el
- erc-spelling.el erc-compat.el erc-fill.el and 43 other files
+ erc-autoaway.el erc-log.el erc-stamp.el erc-identd.el erc-list.el
+ erc-track.el erc-match.el erc-bbdb.el erc-dcc.el erc-notify.el
+ erc-ibuffer.el erc-pcomplete.el erc-spelling.el erc-compat.el
+ erc-goodies.el erc-nicklist.el ERC-NEWS and 44 other files
Michael Piotrowski: changed gnus-sum.el ps-print.el
@@ -1925,9 +1930,9 @@ Niall Mansfield: changed etags.c
Nick Roberts: wrote gdb-ui.el
and changed gud.el building.texi tooltip.el speedbar.el bindings.el
- thumbs.el .gdbinit DEBUG cc-mode.el frames.texi subr.el xt-mouse.el
- comint.el display.texi help-mode.el t-mouse.el compile.el descr-text.el
- dired.el gud-display.pbm speedbar.texi and 114 other files
+ thumbs.el xt-mouse.el .gdbinit DEBUG cc-mode.el frames.texi subr.el
+ t-mouse.el comint.el display.texi help-mode.el compile.el descr-text.el
+ dired.el gud-display.pbm speedbar.texi and 115 other files
Nico Francois: changed w32fns.c w32inevt.c w32menu.c
@@ -1997,6 +2002,8 @@ Pascal Dupuis: changed octave-inf.el
Pascal Rigaux: changed rfc2231.el
+Paul Curry: changed cc-subword.el
+
Paul D. Smith: wrote snmp-mode.el
and changed imenu.el make-mode.el
@@ -2138,8 +2145,10 @@ and changed ffap.el
Ralf Angeli: wrote scroll-lock.el
and changed w32fns.c tex-mode.el comint.el flow-fill.el frame.el
- gnus-art.el killing.texi mm-view.el pcl-cvs.texi smtpmail.el w32term.c
- window.c
+ gnus-art.el killing.texi mm-view.el pcl-cvs.texi reftex-auc.el
+ reftex-cite.el reftex-dcr.el reftex-global.el reftex-index.el
+ reftex-parse.el reftex-ref.el reftex-sel.el reftex-toc.el
+ reftex-vars.el reftex.el reftex.texi and 4 other files
Ralf Fassel: changed dabbrev.el files.el fill.el iso-acc.el tar-mode.el
@@ -2164,7 +2173,7 @@ Reiner Steib: wrote gmm-utils.el
and changed gnus-art.el gnus.texi message.el gnus-sum.el gnus.el
gnus-group.el gnus-faq.texi gnus-util.el mml.el gnus-score.el
gnus-start.el message.texi mm-util.el gnus-agent.el gnus-msg.el spam.el
- files.el spam-report.el mm-decode.el nnweb.el deuglify.el
+ files.el spam-report.el mm-decode.el nnmail.el nnweb.el
and 166 other files
Remek Trzaska: changed gnus-ems.el
@@ -2278,7 +2287,7 @@ Rune Kleveland: changed xfns.c
Russ Allbery: changed message.el
Ryan Yeske: wrote rcirc.el
-and changed ffap.el rmailsum.el
+and changed ffap.el rmailsum.el simple.el testcover.el
Ryszard Kubiak: changed ogonek.el
@@ -2405,7 +2414,7 @@ Stefan Monnier: wrote bibtex.el cvs-status.el diff-mode.el log-edit.el
and changed vc.el font-lock.el pcvs.el newcomment.el subr.el lisp.h
keyboard.c keymap.c tex-mode.el fill.el alloc.c compile.el files.el
regex.c simple.el easy-mmode.el info.el syntax.c vc-hooks.el xdisp.c
- sh-script.el and 517 other files
+ sh-script.el and 518 other files
Steinar Bang: changed imap.el
@@ -2414,7 +2423,7 @@ Stephan Stahl: changed which-func.el buff-menu.el buffer.c dired-x.texi
Stephen A. Wood: changed fortran.el
-Stephen Berman: changed allout.el
+Stephen Berman: changed allout.el recentf.el
Stephen C. Gilardi: changed configure.in
@@ -2469,7 +2478,7 @@ Stewart M. Clamen: wrote cal-mayan.el
Stuart D. Herring: changed keymap.c minibuf.c widget.texi
Stuart Herring: changed files.el isearch.el align.el allout.el comint.el
- edebug.el find-lisp.el
+ edebug.el find-lisp.el sregex.el
Sudish Joseph: changed mac-win.el
@@ -2527,8 +2536,8 @@ Theodore Jump: changed w32-win.el w32faces.c
Thien-Thi Nguyen: wrote hideshow.el make-mms-derivative.el
and changed ewoc.el info.el processes.texi zone.el Makefile.in vc.el
fileio.c lisp-mode.el scheme.el text.texi TUTORIAL.it bindat.el
- dcl-mode.el display.texi files.el pcvs.el sysdep.c MORE.STUFF
- TUTORIAL.ja ange-ftp.el diary-lib.el and 126 other files
+ dcl-mode.el display.texi files.el gnus.texi pcvs.el startup.el sysdep.c
+ vc-rcs.el MORE.STUFF and 129 other files
Thierry Emery: changed kinsoku.el timezone.el url-http.el wid-edit.el
@@ -2653,7 +2662,8 @@ and changed ps-print.el ps-prin1.ps ps-bdf.el ps-prin0.ps ps-prin3.ps
ps-prin2.ps lpr.el ps-print.ps subr.el TUTORIAL.pt_BR easymenu.el
loading.texi ps-print-def.el ps-print0.ps ps-vars.el
-Vivek Dasmohapatra: changed emacs.c sh-script.el xterm.c xterm.h
+Vivek Dasmohapatra: changed emacs.c erc-backend.el erc.el sh-script.el
+ xterm.c xterm.h
Vladimir Alexiev: changed arc-mode.el nnvirtual.el tmm.el
@@ -2719,9 +2729,9 @@ Xavier Maillard: changed gnus-faq.texi gnus-score.el spam.el
Yagi Tatsuya: changed gnus-art.el gnus-start.el
Yamamoto Mitsuharu: changed macterm.c macfns.c mac-win.el mac.c macterm.h
- macmenu.c macgui.h image.c macselect.c keyboard.c xdisp.c config.h
- emacs.c makefile.MPW Makefile.in macos.texi xfaces.c INSTALL darwin.h
- configure.in dispextern.h and 72 other files
+ macmenu.c macgui.h image.c macselect.c keyboard.c xdisp.c makefile.MPW
+ config.h emacs.c Makefile.in macos.texi darwin.h xfaces.c INSTALL
+ dispnew.c alloc.c and 77 other files
Yann Dirson: changed imenu.el
diff --git a/ChangeLog b/ChangeLog
index b84908c58d3..4844d5b53b3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,27 @@
+2007-04-15 Glenn Morris <rgm@gnu.org>
+
+ * FTP: Replace with a pointer to the web version.
+
+2007-04-13 Glenn Morris <rgm@gnu.org>
+
+ * INSTALL: In lib-src, timer, wakeup, yow are removed.
+
+2007-04-04 Glenn Morris <rgm@gnu.org>
+
+ * configure.in (NON_GNU_CPP): Use associated preprocessor when
+ compiling with Sun Studio on Solaris.
+
+2007-03-23 Glenn Morris <rgm@gnu.org>
+
+ * configure.in: Restore support for hp800 (removed 2007-01-27)
+ following clarification of legal status.
+
+2007-03-22 Joe Buehler <jbuehler@spirentcom.com> (tiny change)
+
+ * configure.in: Add support for AIX4.3 on IBM RS6000.
+
+ * configure: Regenerate.
+
2007-03-20 Richard Stallman <rms@gnu.org>
* configure.in: Fix previous change.
diff --git a/FTP b/FTP
index 14a3ada7bd0..0337d464c30 100644
--- a/FTP
+++ b/FTP
@@ -1,234 +1,6 @@
- -*- text -*-
-How to get GNU Software by Internet FTP or by UUCP. Last updated 1999-01-20
+For information about how to obtain GNU Emacs and other GNU software
+by FTP, please see <http://www.gnu.org/order/ftp.html>.
-* Please send improvements to this file to gnu@gnu.org.
+Information about Emacs is also available at
+<http://www.gnu.org/software/emacs/>.
-* No Warranties
-
-We distribute software in the hope that it will be useful, but without
-any warranty. No author or distributor of this software accepts
-responsibility to anyone for the consequences of using it or for
-whether it serves any particular purpose or works at all, unless he
-says so in writing. This is exactly the same warranty that the proprietary
-software companies offer: None. If the distribution is incomplete or the
-media fails, you can always download a replacement from any of the GNU
-mirrors, free of charge.
-
-* Updates
-
-You can always find the most recent version of this list of GNU FTP sites at
- http://www.gnu.org/order/ftp.html
-
-* How to FTP
-
-Use the ftp program on your system (ask locally if you can't find it)
-to connect to the host you are ftping from. Unless indicated
-otherwise, login in as user "anonymous", with password: "your e-mail
-address" and set "binary" mode (to transfer all eight bits in each
-byte).
-
-ALWAYS USE BINARY/IMAGE MODE TO TRANSFER THESE FILES!
-Text mode does not work for tar files or compressed files.
-
-* GNU Software and How To FTP It
-
-GNU software is available on ftp.gnu.org under the directory /gnu.
-diff files to convert between versions exist for some of these
-programs. Some programs have misc support files as well. Have a look
-on ftp.gnu.org to see which ones. In most cases, the tar or diff
-files are compressed with the `gzip' program; this is indicated with
-the .gz suffix. Binaries for gzip can be downloaded from
-http://www.gzip.org.
-
-Descriptions of GNU software are available at
- http://www.gnu.org/software/software.html
- and in the Free Software Directory at
- http://www.gnu.org/directory/index.html
-
-* Alternative Internet FTP Sources
-
-The canonical GNU ftp site is located at ftp.gnu.org/gnu.
-You should probably use one of the many mirrors of that site - the
-mirrors will be less busy, and you can find one closer to your site.
-
-* GNU FTP Site Mirror List
-
-United States:
-
-
-California - mirrors.kernel.org/gnu, http://mirrors.kernel.org/gnu
-California - gatekeeper.dec.com/pub/GNU/
-California - ftp.keystealth.org/pub/gnu/
-Illinois - uiarchive.cso.uiuc.edu/pub/ftp/ftp.gnu.org/gnu/
-Indiana - ftp.in-span.net/pub/mirrors/ftp.gnu.org/
-Kentucky - gnu.ms.uky.edu/pub/mirrors/gnu/
-Maryland - ftp.digex.net/pub/gnu/
-Massachusetts - aeneas.mit.edu/pub/gnu/
-Michigan - ftp.egr.msu.edu/pub/gnu/, http://ftp.egr.msu.edu/pub/gnu/
-Michigan - ftp.wayne.edu/gnu_mirror/
-Missouri - wuarchive.wustl.edu/systems/gnu/
-New Jersey - gnu.teleglobe.net/ftp.gnu.org/
-New York - ftp.cs.columbia.edu/archives/gnu/prep/
-New York - ftp.ece.cornell.edu/pub/mirrors/gnu/
-North Carolina - http://www.ibiblio.org/pub/gnu/
-Ohio - ftp.cis.ohio-state.edu/mirror/gnu/
-Pennsylvania - boron.club.cc.cmu.edu/gnu/
-Tennessee - sunsite.utk.edu/pub/gnu/ftp/, thales.memphis.edu/pub/gnu/
-Washington - ftp.nodomainname.net/pub/mirrors/gnu/, gnu.wwc.edu/
-Wisconsin - ftp.twtelecom.net/pub/GNU/
-
-Africa:
-
-South Africa - ftp.sun.ac.za/mirrorsites/ftp.gnu.org/pub/gnu
-
-The Americas:
-
-Brazil - ftp.unicamp.br/pub/gnu/
-Brazil - master.softaplic.com.br/pub/gnu/
-Brazil - ftp.matrix.com.br/pub/gnu/
-Canada - ftp.cs.ubc.ca/mirror2/gnu/
-Chile - ftp.inf.utfsm.cl/pub/gnu/
-Costa Rica - sunsite.ulatina.ac.cr/Mirrors/GNU/
-Mexico - www.gnu.unam.mx/pub/gnu/software/
-Mexico - gnu.cem.itesm.mx/pub/mirrors/gnu.org/
-Mexico - ftp.azc.uam.mx/mirrors/gnu/
-
-Australia:
-
-Australia - mirror.aarnet.edu.au/pub/gnu/
-Australia - gnu.mirror.pacific.net.au/gnu/
-
-Asia:
-
-China - ftp.sea9.com/pub/gnu/
-China - ftp.cs.cuhk.edu.hk/pub/gnu/gnu/
-China - sunsite.ust.hk/pub/gnu/
-China - ftp.shellhung.org/pub/gnu/
-India - ftp.kernel.org.in/gnu.org/
-India - http://kernel.org.in/mirrors/gnu.org/
-India - www.imtech.res.in/mirror/gnuftp/
-Indonesia - sapi.vlsm.org/gnu
-Indonesia - http://sapi.vlsm.org/gnu/
-Israel - ftp.cs.huji.ac.il/mirror/GNU
-Japan - tron.um.u-tokyo.ac.jp/pub/GNU/prep/
-Japan - core.ring.gr.jp/pub/GNU/
-Japan - ftp.ring.gr.jp/pub/GNU/
-Japan - mirrors.hbi.co.jp/gnu/
-Japan - ftp.ayamura.org/pub/gnu/
-Korea - cair-archive.kaist.ac.kr/pub/gnu/ (Internet address 143.248.186.3)
-Korea - ftpmirror.hanyang.ac.kr/GNU/
-Korea - ftp.linux.sarang.net/mirror/gnu/gnu/ (also mirrors alpha.gnu.org/gnu/ at ../alpha/)
-Korea - ftp.xgate.co.kr/pub/mirror/gnu/
-Saudi Arabia - ftp.isu.net.sa/pub/gnu/
-Taiwan - ftp.nctu.edu.tw/UNIX/gnu/, coda.nctu.edu.tw/UNIX/gnu/
-Taiwan - ftp1.sinica.edu.tw/pub3/GNU/gnu/
-Thailand - ftp.nectec.or.th/pub/mirrors/gnu/
-
-Europe:
-
-Austria - ftp.gnu.vbs.at/
-Austria - ftp.univie.ac.at/packages/gnu/
-Austria - gd.tuwien.ac.at/gnu/gnusrc/
-Austria - http://gd.tuwien.ac.at/gnu/gnusrc/
-Czech Republic - ftp.fi.muni.cz/pub/gnu/
-Denmark - ftp.denet.dk/mirror/ftp.gnu.org/pub/gnu
-Denmark - ftp.dkuug.dk/pub/gnu/
-Denmark - sunsite.dk/mirrors/gnu, http://mirrors.sunsite.dk/gnu
-Finland - ftp.funet.fi/pub/gnu/prep/
-France - ftp.irisa.fr/pub/gnu/
-France - ftp.medasys-digital-systems.fr/pub/gnu/
-France - ftp.cs.univ-paris8.fr/mirrors/ftp.gnu.org/
-Germany - ftp.cs.tu-berlin.de/pub/gnu/
-Germany - ftp.fh-worms.de/pub/mirror/ftp.gnu.org/
-Germany - ftp.leo.org/pub/comp/os/unix/gnu/
-Germany - ftp.informatik.rwth-aachen.de/pub/gnu/
-Germany - ftp.de.uu.net/pub/gnu/
-Germany - ftp.freenet.de/pub/ftp.gnu.org/gnu/
-Germany - ftp.cs.uni-bonn.de/pub/gnu/
-Germany - ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.gnu.org/
-Germany - http://ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.gnu.org/
-Germany - ftp.stw-bonn.de/pub/mirror/ftp.gnu.org/
-Greece - ftp.forthnet.gr/pub/gnu/
-Greece - ftp.ntua.gr/pub/gnu/
-Greece - ftp.duth.gr/pub/gnu/
-Greece - ftp.physics.auth.gr/pub/gnu/
-Ireland - ftp.esat.net/pub/gnu/ (Internet address 193.120.14.241)
-Italy - ftp.oasi.gpa.it/pub/gnu/
-Italy - ftp.lugroma2.org/pub/gnu/
-Netherlands - ftp.nluug.nl/pub/gnu/
-Netherlands - ftp.mirror.nl/pub/mirror/gnu/
-Netherlands - ftp.nl.uu.net/pub/gnu/
-Netherlands - mirror.widexs.nl/pub/gnu/
-Norway - ftp.gnu.no/
-Poland - sunsite.icm.edu.pl/pub/gnu/
-Portugal - ftp.ist.utl.pt/pub/GNU/gnu/
-Romania - ftp.timisoara.roedu.net/mirrors/ftp.gnu.org/pub/gnu
-Russia - ftp.chg.ru/pub/gnu/
-Slovenia - ftp.arnes.si/software/gnu/
-Spain - ftp.etsimo.uniovi.es/pub/gnu/
-Spain - ftp.rediris.es/pub/gnu/
-Sweden - ftp.isy.liu.se/pub/gnu/
-Sweden - ftp.stacken.kth.se/pub/gnu/
-Sweden - ftp.sunet.se/pub/gnu/; also mirrors /non-gnu
-Sweden - ftp.chl.chalmers.se/pub/gnu/
-Switzerland - sunsite.cnlab-switch.ch/mirror/gnu/
-Ukraine - mirddin.farlep.net/pub/GNU/
-United Kingdom - ftp.mcc.ac.uk/pub/gnu/
-United Kingdom - ftp.mirror.ac.uk/sites/ftp.gnu.org/pub/gnu/
-United Kingdom - ftp.warwick.ac.uk/pub/gnu/ (Internet address 137.205.192.13)
-United Kingdom - ftp.hands.com/ftp.gnu.org/
-United Kingdom - gnu.teleglobe.net/ftp.gnu.org/
-
-* How to FTP GNU Emacs
-
-Emacs is in the directory /gnu/emacs on ftp.gnu.org. The emacs
-distribution itself has a filename in the form emacs-M.N.tar.gz, where
-M and N stand for the version numbers; the Emacs Lisp Reference Manual
-is in a separate file, named elisp-manual-NN.tar.gz.
-
-* Scheme and How to FTP It
-
-The latest distribution version of C Scheme is available via anonymous FTP
-from swiss-ftp.ai.mit.edu in /pub/scheme-X.X/ (where X.X is some version
-number).
-
-Read the files INSTALL and README in the top level C Scheme directory.
-
-* TeX and How to Obtain It
-
-We don't distribute TeX now, but it is free software.
-
-TeX is a document formatter that is used, among other things, by the FSF
-for all its documentation. You will need it if you want to make printed
-manuals.
-
-TeX is freely redistributable. You can get it by ftp, tape, or CD/ROM.
-
-** For FTP instructions, retrieve the file
-ftp.cs.umb.edu/pub/tex/unixtex.ftp. (We don't include it here because it
-changes relatively frequently. Sorry.)
-
-** A minimal TeX collection (enough to process Texinfo files, anyway)
-is included on the GNU source CD-ROM. See the file ORDERS in this
-directory for more information.
-
-* GNU Software for VMS
-
- - http://www.lp.se/gnu-vms/- lots of GNU ports to VMS,
-including Emacs 19, GCC, Bison, Make, RCS.
-
-* If You Like The Software
-
-If you like the software developed and distributed by the Free
-Software Foundation, please express your satisfaction with a donation.
-Your donations will help to support the Foundation and make our future
-efforts successful. The Foundation continues to improve GNU programs
-and encourage the writing of new free software to enhance GNU/Linux
-and GNU/Hurd systems. For more information on GNU and the Foundation,
-see our web site at http://www.gnu.org.
-
-Ordering a GNU Source Code CD-ROM or Source Code CD-ROM Subscription
-is a good way for your organization to help support our work. You can
-also purchase printed manuals, reference cards, t-shirts, and other
-items. See our online ordering form at http://order.fsf.org for
-details.
diff --git a/INSTALL b/INSTALL
index 5b4c2bef015..9d0376965a4 100644
--- a/INSTALL
+++ b/INSTALL
@@ -192,7 +192,7 @@ default; they just include the files that you need to run Emacs, but
not those you need to compile it. For example, to compile Emacs with
X11 support, you may need to install the special `X11 development'
package. For example, in April 2003, the package names to install
-were `XFree86-devel' and `Xaw3d-devel' on RedHat. On Debian, the
+were `XFree86-devel' and `Xaw3d-devel' on Red Hat. On Debian, the
packages necessary to build the installed version should be
sufficient; they can be installed using `apt-get build-dep emacs21' in
Debian 3 and above.
@@ -353,7 +353,7 @@ tests in FILE instead of `config.cache'. Set FILE to `/dev/null' to
disable caching, for debugging `configure'.
If the description of the system configuration printed by `configure'
-is not right, or if it claims some of the fatures or libraries are not
+is not right, or if it claims some of the features or libraries are not
available when you know they are, look at the `config.log' file for
the trace of the failed tests performed by `configure' to check
whether these features are supported. Typically, some test fails
@@ -385,7 +385,7 @@ libraries in addition to the standard ones.
For some libraries, like Gtk+, fontconfig and ALSA, `configure' use
pkg-config to find where those libraries are installed.
-If you wan't pkg-config to look in special directories, you have to set
+If you want pkg-config to look in special directories, you have to set
the environment variable PKG_CONFIG_PATH to point to the directories
where the .pc-files for those libraries are.
For example:
@@ -703,8 +703,8 @@ the following steps.
the paths to the values specified in `./Makefile'.
2) Go to directory `./lib-src' and run `make'. This creates
-executables named `ctags' and `etags' and `wakeup' and `make-docfile'
-and `digest-doc' and `test-distrib'. And others.
+executables named `ctags' and `etags' and `make-docfile' and
+`digest-doc' and `test-distrib'. And others.
3) Go to directory `./src' and Run `make'. This refers to files in
the `./lisp' and `./lib-src' subdirectories using names `../lisp' and
@@ -732,8 +732,8 @@ in `./lib-src' to their final destinations, as selected in `./src/paths.h'.
Strictly speaking, not all of the executables in `./lib-src' need be copied.
- The programs `cvtmail', `fakemail', `hexl',
- `movemail', `profile', `rcs2log', `timer', `vcdiff', `wakeup',
- and `yow' are used by Emacs; they do need to be copied.
+ `movemail', `profile', `rcs2log', and `vcdiff' are used by Emacs;
+ they do need to be copied.
- The programs `etags', `ctags', `emacsclient', `b2m', and `rcs-checkin'
are intended to be run by users; they are handled below.
- The programs `make-docfile' and `test-distrib' were
diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE
index 41a4dd4fa40..714a6ee0c58 100644
--- a/admin/FOR-RELEASE
+++ b/admin/FOR-RELEASE
@@ -5,8 +5,6 @@ Tasks needed before the next release.
** Check for widow and orphan lines in manuals;
make sure all the pages really look ok in the manual as formatted.
-** Check for text in manuals that assumes current version is 21.
-
** Cleanup temporary +++/--- lines in etc/NEWS.
** Regenerate the postscript files of the reference cards in etc.
@@ -43,13 +41,6 @@ to the hack introduced on 2005-07-01 to fix some other Cleartype problem.
* BUGS
-** Kevin Rodgers missing assignment
-
-** flyspell and check-comments
-
-** lennart.borgman@gmail.com, Feb 22: C-h k does not catch text properties keymaps
- Update: Problem is only seen when viper-mode is enabled.
-
* DOCUMENTATION
** Check the Emacs Tutorial.
diff --git a/admin/notes/copyright b/admin/notes/copyright
index 8fed418ed6e..fcf577b3be8 100644
--- a/admin/notes/copyright
+++ b/admin/notes/copyright
@@ -367,14 +367,6 @@ src/acldef.h, chpdef.h, ndir.h
- see comments below. These files are OK to be released with Emacs
22, but we may want to revisit them afterwards.
-[src/unexhp9k800.c - removed 2007/1/27]
-[src/m/sr2k.h - removed 2007/1/27]
- - First file removed due to legal uncertainties; second file removed
- due to dependency on first. Note that src/m/hp800.h is still needed on
- hp800 arch.
- NB we would like to re-add this file if we can. Please let us know
- if you can clarify its legal status.
-
** Some notes on resolved issues, for historical information only
@@ -405,6 +397,23 @@ lisp/term/README
Accordingly, FSF copyright was added.
+src/unexhp9k800.c (and dependent src/m/sr2k.h)
+ - briefly removed due to legal uncertainly Jan-Mar 2007. The
+ relevant assignment is under "hp9k800" in copyright.list. File was
+ written by John V. Morris at HP, and disclaimed by the author and
+ HP. So this file is public domain.
+
+
+K Rodgers changes
+ It was pointed out that K Rodgers only had assigments for VC and
+ ps-print, but had changed several other files. We tried to contact
+ him for a general assignment, but he proved uncommunicative (despite
+ initially indicating to rms he would sign an assignment). As a result, his
+ changes were removed and/or rewritten independently. For details, see
+ threads:
+http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00225.html
+http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00257.html
+
** Issues that are "fixed" for the release of Emacs 22, but we may
wish to revisit later in more detail
@@ -547,8 +556,8 @@ noted in this file.
REMOVED etc/gnu.xpm, nt/icons/emacs21.ico, nt/icons/sink.ico
- Restore if find legal info. emacs21.ico is not due to Davenport.
- Voelker could not immediately recall anything, but will check and
- let us know if he finds anything.
+ Geoff Voelker checked but could not find a record of where it came
+ from.
etc/images
diff --git a/configure b/configure
index 2ea6ff80b0d..2946bf89a07 100755
--- a/configure
+++ b/configure
@@ -2260,13 +2260,6 @@ _ACEOF
sparc*-*-openbsd*) machine=sparc ;;
vax-*-openbsd*) machine=vax ;;
x86_64-*-openbsd*) machine=amdx86-64 ;;
- i386-*-openbsd*) machine=intel386 ;;
- x86_64-*-openbsd*) machine=amdx86-64 ;;
- m68k-*-openbsd*) machine=hp9000s300 ;;
- mipsel-*-openbsd*) machine=pmax ;;
- ns32k-*-openbsd*) machine=ns32000 ;;
- sparc-*-openbsd*) machine=sparc ;;
- vax-*-openbsd*) machine=vax ;;
esac
;;
@@ -2566,6 +2559,13 @@ _ACEOF
machine=nh6000 opsys=powerunix
NON_GNU_CPP="cc -Xo -E -P"
;;
+ ## SR2001/SR2201 running HI-UX/MPP
+ hppa1.1-hitachi-hiuxmpp* )
+ machine=sr2k opsys=hiuxmpp
+ ;;
+ hppa1.1-hitachi-hiuxwe2* )
+ machine=sr2k opsys=hiuxwe2
+ ;;
## Honeywell XPS100
xps*-honeywell-sysv* )
machine=xps100 opsys=usg5-2
@@ -2588,10 +2588,46 @@ _ACEOF
esac
;;
+ ## HP 9000 series 700 and 800, running HP/UX
+ hppa*-hp-hpux7* )
+ machine=hp800 opsys=hpux
+ ;;
+ hppa*-hp-hpux8* )
+ machine=hp800 opsys=hpux8
+ ;;
+ hppa*-hp-hpux9shr* )
+ machine=hp800 opsys=hpux9shr
+ ;;
+ hppa*-hp-hpux9* )
+ machine=hp800 opsys=hpux9
+ ;;
+ hppa*-hp-hpux10.2* )
+ machine=hp800 opsys=hpux10-20
+ ;;
+ hppa*-hp-hpux10* )
+ machine=hp800 opsys=hpux10
+ ;;
+ hppa*-hp-hpux1[1-9]* )
+ machine=hp800 opsys=hpux11
+ CFLAGS="-D_INCLUDE__STDC_A1_SOURCE $CFLAGS"
+ ;;
+
hppa*-*-linux-gnu* )
machine=hp800 opsys=gnu-linux
;;
+ ## HP 9000 series 700 and 800, running HP/UX
+ hppa*-hp-hpux* )
+ ## Cross-compilation? Nah!
+ case "`uname -r`" in
+ ## Someone's system reports A.B8.05 for this.
+ ## I wonder what other possibilities there are.
+ *.B8.* ) machine=hp800 opsys=hpux8 ;;
+ *.08.* ) machine=hp800 opsys=hpux8 ;;
+ *.09.* ) machine=hp800 opsys=hpux9 ;;
+ *) machine=hp800 opsys=hpux10 ;;
+ esac
+ ;;
hppa*-*-nextstep* )
machine=hp800 opsys=nextstep
;;
@@ -2632,6 +2668,9 @@ _ACEOF
rs6000-ibm-aix4.2* | powerpc-ibm-aix4.2* )
machine=ibmrs6000 opsys=aix4-2
;;
+ rs6000-ibm-aix4.3* | powerpc-ibm-aix4.3* )
+ machine=ibmrs6000 opsys=aix4-2
+ ;;
rs6000-ibm-aix5* | powerpc-ibm-aix5* )
machine=ibmrs6000 opsys=aix4-2
;;
@@ -2957,7 +2996,12 @@ _ACEOF
;;
*-sunos5* | *-solaris* )
opsys=sol2-6
- NON_GNU_CPP=/usr/ccs/lib/cpp
+ if [ "x$CC" = x/opt/SUNWspro/bin/cc ]; then
+ ## -Xs prevents spurious whitespace.
+ NON_GNU_CPP="/opt/SUNWspro/bin/cc -E -Xs"
+ else
+ NON_GNU_CPP=/usr/ccs/lib/cpp
+ fi
;;
* ) opsys=bsd4-2 ;;
esac
diff --git a/configure.in b/configure.in
index 874f5c69313..edd29d0ad75 100644
--- a/configure.in
+++ b/configure.in
@@ -593,6 +593,13 @@ dnl see the `changequote' comment above.
machine=nh6000 opsys=powerunix
NON_GNU_CPP="cc -Xo -E -P"
;;
+ ## SR2001/SR2201 running HI-UX/MPP
+ hppa1.1-hitachi-hiuxmpp* )
+ machine=sr2k opsys=hiuxmpp
+ ;;
+ hppa1.1-hitachi-hiuxwe2* )
+ machine=sr2k opsys=hiuxwe2
+ ;;
## Honeywell XPS100
xps*-honeywell-sysv* )
machine=xps100 opsys=usg5-2
@@ -615,10 +622,46 @@ dnl see the `changequote' comment above.
esac
;;
+ ## HP 9000 series 700 and 800, running HP/UX
+ hppa*-hp-hpux7* )
+ machine=hp800 opsys=hpux
+ ;;
+ hppa*-hp-hpux8* )
+ machine=hp800 opsys=hpux8
+ ;;
+ hppa*-hp-hpux9shr* )
+ machine=hp800 opsys=hpux9shr
+ ;;
+ hppa*-hp-hpux9* )
+ machine=hp800 opsys=hpux9
+ ;;
+ hppa*-hp-hpux10.2* )
+ machine=hp800 opsys=hpux10-20
+ ;;
+ hppa*-hp-hpux10* )
+ machine=hp800 opsys=hpux10
+ ;;
+ hppa*-hp-hpux1[1-9]* )
+ machine=hp800 opsys=hpux11
+ CFLAGS="-D_INCLUDE__STDC_A1_SOURCE $CFLAGS"
+ ;;
+
hppa*-*-linux-gnu* )
machine=hp800 opsys=gnu-linux
;;
+ ## HP 9000 series 700 and 800, running HP/UX
+ hppa*-hp-hpux* )
+ ## Cross-compilation? Nah!
+ case "`uname -r`" in
+ ## Someone's system reports A.B8.05 for this.
+ ## I wonder what other possibilities there are.
+ *.B8.* ) machine=hp800 opsys=hpux8 ;;
+ *.08.* ) machine=hp800 opsys=hpux8 ;;
+ *.09.* ) machine=hp800 opsys=hpux9 ;;
+ *) machine=hp800 opsys=hpux10 ;;
+ esac
+ ;;
hppa*-*-nextstep* )
machine=hp800 opsys=nextstep
;;
@@ -659,6 +702,9 @@ dnl see the `changequote' comment above.
rs6000-ibm-aix4.2* | powerpc-ibm-aix4.2* )
machine=ibmrs6000 opsys=aix4-2
;;
+ rs6000-ibm-aix4.3* | powerpc-ibm-aix4.3* )
+ machine=ibmrs6000 opsys=aix4-2
+ ;;
rs6000-ibm-aix5* | powerpc-ibm-aix5* )
machine=ibmrs6000 opsys=aix4-2
;;
@@ -984,7 +1030,12 @@ dnl see the `changequote' comment above.
;;
*-sunos5* | *-solaris* )
opsys=sol2-6
- NON_GNU_CPP=/usr/ccs/lib/cpp
+ if [ "x$CC" = x/opt/SUNWspro/bin/cc ]; then
+ ## -Xs prevents spurious whitespace.
+ NON_GNU_CPP="/opt/SUNWspro/bin/cc -E -Xs"
+ else
+ NON_GNU_CPP=/usr/ccs/lib/cpp
+ fi
;;
* ) opsys=bsd4-2 ;;
esac
diff --git a/etc/COOKIES b/etc/COOKIES
index fa8894795f0..1d8c0955d42 100644
--- a/etc/COOKIES
+++ b/etc/COOKIES
@@ -26,7 +26,7 @@ Cream together: 2 cups butter
Add: 4 eggs
2 tsp. vanilla
-Mis together in
+Mix together in
separate bowl: 4 cups flour
5 cups oatmeal (put small
amounts of oatmeal in blender until it turns to
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 301aa3e1417..1f2b33fe8a8 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,70 @@
+2007-04-15 Glenn Morris <rgm@gnu.org>
+
+ * FTP: Make it a duplicate of ../FTP.
+
+2007-04-14 Glenn Morris <rgm@gnu.org>
+
+ * SERVICE: Replace with a pointer to the web version.
+
+ * emacs.1: Update some of the more obsolete information.
+
+2007-04-13 Glenn Morris <rgm@gnu.org>
+
+ * MACHINES: emacserver is removed.
+
+ * MORE.STUFF: Update some links, remove some dead ones.
+
+2007-04-04 Slawomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se>
+
+ * emacs.py (format_exception): New function.
+ (eexecfile): Use it instead of traceback.print_exception.
+ Don't use execfile to avoid a bug in w32.
+
+2007-04-04 Glenn Morris <rgm@gnu.org>
+
+ * MACHINES: Mention preprocessor to use with /opt/SUNWspro/bin/cc
+ on Solaris.
+
+ * PROBLEMS (Configuration): Add entries on compiler/preprocessor
+ mismatch, and on preprocessor inserting whitespace.
+
+2007-04-03 Eli Zaretskii <eliz@gnu.org>
+
+ * TODO: Add entry for switching MS-Windows keyboard input to
+ Unicode. Add specific pointer to msdos.c functions that support
+ menus on text terminals.
+
+2007-04-01 Michael Olson <mwolson@gnu.org>
+
+ * ERC-NEWS: Update for the ERC 5.2 release. Most of these entries
+ were for previously-committed changes.
+
+2007-03-31 Michael Albinus <michael.albinus@gmx.de>
+
+ * PROBLEMS: Remove Tramp problem; it has been fixed.
+
+2007-03-31 Eli Zaretskii <eliz@gnu.org>
+
+ * PROBLEMS (MS-Windows problems): How to bind non-ASCII keys with
+ modifiers.
+
+2007-03-23 Glenn Morris <rgm@gnu.org>
+
+ * Makefile (DESTDIR, LIBDIR, BINDIR, MANDIR, MANEXT):
+ Delete unused variables.
+ (dired-refcards, misc-refcards, survival-card, viper-cards):
+ New targets.
+ (all): Also build dired-refcards and misc-refcards.
+ (clean, distclean, maintainer-clean): Depend on mostlyclean.
+ (SOURCES): Remove non-existent files.
+ (mostlyclean, clean, distclean, maintainer-clean, unlock, relock):
+ Mark as phony.
+ (.ps files): Specify default papersize in the dvips command.
+
+ * fr-refcard.tex (\letterpaper): Switch to A4.
+ (\section): Reduce \vskips to fit on A4 paper.
+ (\shortcopyrightnotice): Display at end of first column.
+
2007-03-21 Glenn Morris <rgm@gnu.org>
* fr-refcard.tex (\metax): Tweak \hsize to avoid overfull columns.
@@ -322,7 +389,7 @@
(section{TODO Items and Checkboxes}): Checkbox keys moved to this
section, added documentation for the key `C-c #'.
-2006-11-05 Slawomir Nowaczyk <slawek@cs.lth.se> (tiny change)
+2006-11-05 Slawomir Nowaczyk <slawek@cs.lth.se>
* emacs.py (eargs): Provide eldoc message for builtin types.
Make sure eargs always outputs sentinel, to avoid Emacs freeze.
@@ -417,7 +484,7 @@
(eimport): Use __main__ rather than `emacs' namespace.
(modpath): New fun.
-2006-08-20 Slawomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se> (tiny change)
+2006-08-20 Slawomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se>
* emacs.py (eexecfile): Use the __main__ rather than `emacs' namespace.
@@ -680,8 +747,8 @@
* pl-refcard.tex (section{Info}): Ditto. Translation suggested by
Slawomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se>.
- * cs-refcard.tex (section{Info}): Use `s' instead of `M-s'. Entry
- for `i' is not translated yet.
+ * cs-refcard.tex (section{Info}): Use `s' instead of `M-s'.
+ Entry for `i' is not translated yet.
* pt-br-refcard.tex (section{Info}): Ditto.
@@ -1410,7 +1477,7 @@
* NEWS: Lots of clarifications and cleanups.
-2005-05-05 Slawomir Nowaczyk <slawek@cs.lth.se> (tiny change)
+2005-05-05 Slawomir Nowaczyk <slawek@cs.lth.se>
* TUTORIAL.pl: Updated header.
diff --git a/etc/DEBUG b/etc/DEBUG
index ad59d48b3ca..ea4e14866ca 100644
--- a/etc/DEBUG
+++ b/etc/DEBUG
@@ -306,10 +306,15 @@ debugger, type "gdb temacs", then start it with `r -batch -l loadup'.
** If you encounter X protocol errors
-Try evaluating (x-synchronize t). That puts Emacs into synchronous
-mode, where each Xlib call checks for errors before it returns. This
-mode is much slower, but when you get an error, you will see exactly
-which call really caused the error.
+The X server normally reports protocol errors asynchronously,
+so you find out about them long after the primitive which caused
+the error has returned.
+
+To get clear information about the cause of an error, try evaluating
+(x-synchronize t). That puts Emacs into synchronous mode, where each
+Xlib call checks for errors before it returns. This mode is much
+slower, but when you get an error, you will see exactly which call
+really caused the error.
You can start Emacs in a synchronous mode by invoking it with the -xrm
option, like this:
@@ -562,7 +567,7 @@ are involved in the crash.
Once you discover the corrupted Lisp object or data structure, grep
the sources for its uses and try to figure out what could cause the
-corruption. If looking at the sources doesn;t help, you could try
+corruption. If looking at the sources doesn't help, you could try
setting a watchpoint on the corrupted data, and see what code modifies
it in some invalid way. (Obviously, this technique is only useful for
data that is modified only very rarely.)
@@ -726,7 +731,7 @@ prints the backtrace for a crash. It is usually best to look at the
disassembly to determine exactly what code is being run--the
disassembly will probably show several source lines followed by a
block of assembler for those lines. The actual point where Emacs
-crashes will be one of those source lines, but not neccesarily the one
+crashes will be one of those source lines, but not necessarily the one
that the debugger reports.
Another problematic area with the MS debugger is with variables that
diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS
index dd5c113c195..e7b0dcb81bf 100644
--- a/etc/ERC-NEWS
+++ b/etc/ERC-NEWS
@@ -3,8 +3,7 @@ ERC NEWS -*- outline -*-
Copyright (C) 2006, 2007 Free Software Foundation, Inc.
See the end of the file for license conditions.
-
-* Changes in ERC 5.2 (stable pre-release for Emacs 22)
+* Changes in ERC 5.2
** M-x erc RET now starts ERC.
`erc-select' has been changed to `erc'. `erc-select' still remains as
@@ -12,37 +11,173 @@ an alias of `erc'. Likewise, `erc-select-ssl' has been renamed to
`erc-ssl' with `erc-select-ssl' as its alias. The function that was
known as `erc' is now `erc-open'.
+** Open query buffers by default when private messages are received.
+The default value of `erc-auto-query' has been changed to 'bury.
+
** New command: /RECONNECT
This command tries to reconnect to the current IRC server exactly
once. It does not work in server buffers (throws an error before the
command is run), but works in query and channel buffers.
+** In MS-DOS environments, look for _ercrc.el rather than .ercrc.el.
+
+** Fix buggy interaction with multi-tty Emacs.
+
+** After running /QUIT, make sure that the IRC process is killed within
+4 seconds. Freenode, in particular, needs this at times.
+
+** If the IRC process has not responded to our PINGs within a certain
+time, kill it and restart the connection. See
+`erc-server-auto-reconnect', `erc-server-reconnect-attempts',
+`erc-server-reconnect-timeout', `erc-server-send-ping-interval', and
+`erc-server-send-ping-timeout' to fine-tune ERC's behavior.
+
+** Avoid getting into an infinite connection loop.
+Previously, this could happen if your nick was banned, you were using
+Tor, incorrect information was entered, or the connection was bad.
+
+** Make ban messages less confusing.
+
+** Restore the point correctly when reconnecting to an IRC server.
+
+** Make /IGNORE and /UNIGNORE prompt to determine whether their
+argument is a user or a regexp. This results in less-confusing
+behavior when trying to ignore someone who has a bracket in their
+nick.
+
+** Make the default port "6667" rather than "ircd", because some
+operating systems don't know what port "ircd" maps to.
+
+** Fix several bugs in erc-iswitchb (C-c C-b).
+
+** Clean up internal documentation.
+Special thanks go to Juanma Barranquero for the thorough vetting of
+ERC's internal documentation.
+
+** Display a more informative message when a module is not found.
+
+** Fix a bug where paths were being colored like IRC commands.
+
+** In the customize interface for `erc-modules', add the name of the module.
+This makes it easier to find modules by name.
+
+** erc-server-send-ping-interval: Change to use a default of 30 seconds.
+
+** Some files which are included with the release of ERC 5.2 will not
+appear in the version of ERC that is bundled with Emacs 22. These
+extras files may be found at:
+
+ o http://ftp.gnu.org/gnu/erc/erc-5.2-extras.tar.gz, or
+ o http://ftp.gnu.org/gnu/erc/erc-5.2-extras.zip.
+
+** Renamed files
+
+Several files were renamed so as to make them distinct to users of the
+MS-DOS operating system.
+
+ o erc-autojoin.el -> erc-join.el
+ o erc-complete.el -> erc-hecomplete.el
+ o erc-nickserv.el -> erc-services.el
+ o ChangeLog.NNNN -> ChangeLog.NN
+
+** Header line changes
+
+*** Remove "[IRC]" from the header line.
+
+*** Add the %l format character to `erc-header-line-format',
+
+*** Document how to remove the header line.
+Namely: (setq erc-header-line-format nil).
+
** New options
*** erc-server-reconnect-attempts: Determines the number of
reconnection attempts that ERC will make per server.
-*** erc-server-reconnect-timeout: New option that determines the
-amount of time, in seconds, that ERC will wait between successive
-reconnect attempts.
+*** erc-server-reconnect-timeout: Determines the amount of time,
+in seconds, that ERC will wait between successive reconnect attempts.
+
+*** erc-server-send-ping-timeout: Determines when to consider a connection
+stalled and restart it. The default is after 120 seconds.
+
+*** erc-system-name: Determines the system name to use when logging in.
+The default is to figure this out by calling `system-name'.
** New face: `erc-my-nick-face'
This helps make it easier to distinguish messages sent by yourself
from messages sent by other users when the value of the variable
`erc-show-my-nick' is non-nil.
+** Namespace changes
+
+*** New macro: `erc-with-server-buffer'
+Switches to the current ERC server buffer and runs some code. If no
+server buffer is available, return nil. This is a useful way to
+access variables in the server buffer.
+
+*** New function: `erc-open-server-buffer-p'
+Returns non-nil if the given buffer is an ERC server buffer that has
+an open IRC process.
+
+*** New function: `erc-format-lag-time'
+Returns the estimated lag time to server, `erc-server-lag'.
+
+*** Renamed items
+
+ o `erc-server-setup-periodical-server-ping' is now
+ `erc-server-setup-periodical-ping'
+
+ o `erc-away-p' is now `erc-away-time'
+
+** Changes to the ERC manual
+
+*** New section: Sample Session.
+Describes a sample ERC session for connecting to the #emacs channel on
+Freenode. Also mention the #erc channel.
+
+*** New section: Special Features.
+Describes some of the special features of ERC.
+
+*** Getting Started: Mention ~/.emacs.d/.ercrc.el and the Customize
+interface.
+
+*** Development: Mention ErcDevelopment page on emacswiki.org.
+
+*** Tips and Tricks: Remove empty section for now.
+
+*** Options: Mention how to see available ERC options.
+
+*** Sample Configuration: Add an example of how to configure ERC.
+
** New modules
+*** Autoaway (erc-autoaway.el)
+
+**** Make this much more reliable.
+
+**** Avoid duplicate messages when coming back from being away.
+
+**** Fix bug where autoaway was enabled just by loading the file.
+
+*** BBDB (erc-bbdb.el)
+
+**** Display information on how to cancel merging of info or how to
+create a new John Doe record.
+
+**** Make it so that information from /whois continues to come in, even
+while prompting for a record to merge.
+
+**** Make hitting C-g correctly abort merging the record.
+
*** Capab identify (erc-capab.el)
Mark users who haven't identified to NickServ on servers supporting
CAPAB IDENTIFY-MSG.
** Changes and additions to modules
-*** Channel lists (erc-list.el)
+*** Button (erc-button.el)
-**** This has been removed from Emacs 22, since a major contributor
-to it has not yet assigned changes.
+**** Make <backtab> go to the previous button.
*** Channel tracking (erc-track.el)
@@ -50,6 +185,103 @@ to it has not yet assigned changes.
This helps people using a mouse know that they are buttons and can be
clicked on.
+**** Fix issue where C-c C-SPC could conflict with user-defined keybindings.
+This is accomplished by moving these bindings to their own global
+minor mode. Now the default is to check whether the user has bound
+something to C-c C-SPC or C-c C-@. If they have, prompt them about
+whether to really override that binding. This also has the effect of
+preventing ERC from clobbering rcirc's keybinding, unless this is
+desired. See `erc-track-enable-keybindings' for more details.
+
+**** New option: erc-track-enable-keybindings.
+Determine whether or not to enable the C-c C-SPC and C-c C-@
+keybindings. The default is to ask whether to do this if a binding to
+these keys already exists. It can also be set to t or nil to always
+bind or never bind, respectively.
+
+**** Remove `track-when-inactive' module.
+See `erc-track-when-inactive' for further details.
+
+**** New option: erc-track-when-inactive.
+This option replaces the track-when-inactive module. Set it to
+non-nil to track activity even in visible buffers when inactive. The
+default is nil.
+
+**** Remove the `track-modified-channels' alias for the `track' module.
+
+*** DCC support (erc-dcc.el)
+
+**** Add Usage section to Commentary.
+
+**** Fix a bug in the server message output.
+
+*** Filling (erc-fill.el)
+
+**** Fix bug involving messages that start with one or more blank lines.
+
+*** Identd (erc-identd.el)
+
+**** New option `erc-identd-port'
+Specifies the port to use if none is given as an argument to
+`erc-identd-start'. This is placed in the new customization group
+`erc-identd'.
+
+**** New function: `erc-identd-quickstart'
+Ignores any arguments and calls `erc-identd-start'.
+
+*** Channel lists (erc-list.el)
+
+**** Enable by default, except in the version of ERC bundled with Emacs 22.
+
+*** Logging (erc-log.el)
+
+**** Make sure filenames are safe to use before writing to them.
+
+**** Save all log buffers when exiting Emacs.
+
+**** erc-generate-log-file-name-function: Add option for
+`erc-generate-log-file-name-network', which is a new function that
+uses the network name rather than the server name when possible.
+
+*** Menu (erc-menu.el)
+
+**** Name the menu "ERC" instead of "IRC" to avoid confusion with rcirc
+and other clients.
+
+**** Make this into a proper module and load it by default.
+
+**** Add "Current channel" submenu.
+
+*** Networks (erc-networks.el)
+
+**** Add support for Ars OpenIRC, LinuxChix, and OFTC networks.
+
+**** Escape periods in Konfido.Net and Kewl.Org.
+
+*** Internet services / Nickserv (erc-nickserv.el)
+
+**** Add new 'both method for the `erc-nickserv-identify-mode' option
+and make it the default. This tries to do the right thing both when a
+known nickserv message exists for an IRC network, and when it does
+not.
+
+**** Support nickserv authentication on OFTC, Azzurra, Ars, and QuakeNet.
+
+**** Support authentication on BitlBee.
+
+**** Make source code easier to understand by using accessor functions.
+
+*** Sound support (erc-sound.el)
+
+**** Make this work with both Emacs 21 and Emacs 22.
+
+*** Timestamps (erc-stamp.el)
+
+**** Exclude the newline from the erc-timestamp field.
+
+**** New function: `erc-toggle-timestamps'.
+Toggles display of timestamps.
+
* Changes in ERC 5.1.4
** Make find-function and find-variable work in Emacs 22 for
@@ -156,6 +388,10 @@ to make the BBDB buffer electric. This defaults to not electric.
**** Don't create an extra buffer for the identd process.
+*** Channel lists (erc-list.el)
+
+**** Enable by default, except in the version of ERC bundled with Emacs 22.
+
*** Logging (erc-log.el)
**** By default, don't insert old logs when opening an ERC buffer.
diff --git a/etc/FTP b/etc/FTP
index 45048af4160..0337d464c30 100644
--- a/etc/FTP
+++ b/etc/FTP
@@ -1,2 +1,6 @@
-Please refer to <http://www.gnu.org/software/emacs/> for information
-about obtaining Emacs.
+For information about how to obtain GNU Emacs and other GNU software
+by FTP, please see <http://www.gnu.org/order/ftp.html>.
+
+Information about Emacs is also available at
+<http://www.gnu.org/software/emacs/>.
+
diff --git a/etc/MACHINES b/etc/MACHINES
index 3323c0b98b5..83723fccbbc 100644
--- a/etc/MACHINES
+++ b/etc/MACHINES
@@ -126,7 +126,7 @@ Apple PowerPC Macintosh running GNU/Linux
Emacs distribution, and remove the "#if 0" and "#endif" directives
which surround the following block near the end of the file:
- #if 0 /* This breaks things on PPC GNU/Linux ecept for Yellowdog,
+ #if 0 /* This breaks things on PPC GNU/Linux except for Yellowdog,
even with identical GCC, as, ld. Let's take it out until we
know what's really going on here. */
/* GCC 2.95 and newer on GNU/Linux PPC changed the load address to
@@ -156,9 +156,8 @@ Apollo running X Windows (m68k-apollo-bsd)
installations may have to edit src/Makefile manually after it is created.
There are too many versions of both cc and X to automate this easily.
- In `lib-src/Makefile', emacsclient and emacsserver compile and work fine
- under CC 6.9. They now probably work under other versions of the compiler,
- as well.
+ In `lib-src/Makefile', emacsclient compiles and works fine under CC 6.9.
+ It now probably works under other versions of the compiler, as well.
The Apollo Domain CC compiler will issue quite a few warning messages,
mostly complaining about incompatible pointers. In general, these are
@@ -1149,7 +1148,9 @@ Sun 3, Sun 4 (sparc), Sun 386 (m68k-sun-sunos, sparc-sun-sunos, i386-sun-sunos,
On Solaris, do not use /usr/ucb/cc. Use /opt/SUNWspro/bin/cc. Make
sure that /usr/ccs/bin and /opt/SUNWspro/bin are in your PATH before
/usr/ucb. (Most free software packages have the same requirement on
- Solaris.)
+ Solaris.) With this compiler, use `/opt/SUNWspro/bin/cc -E' as the
+ preprocessor. If this inserts extra whitespace into its output (see
+ the PROBLEMS file) then add the option `-Xs'.
If you have trouble using open-network-stream, get the distribution
of `bind' (the BSD name-server), build libresolv.a, and link Emacs
@@ -1393,7 +1394,7 @@ System V rel 3 (usg5.3)
cannot be made to work. Whether or not the GNU relocating malloc is
used, the symptom is that the first call Emacs makes to sbrk(0) returns
(char *)-1. Sorry, you're stuck with character-only mode. Try
- installing Xfree86 to fix this.
+ installing XFree86 to fix this.
System V rel 4.0.3 and 4.0.4 (usg5.4)
@@ -1497,11 +1498,10 @@ Xenix (xenix)
to make the Emacs meta key work.
Local variables:
-mode: indented-text
+mode: text
fill-prefix: " "
End:
-
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
diff --git a/etc/MORE.STUFF b/etc/MORE.STUFF
index 1072cd29775..b55b2822d39 100644
--- a/etc/MORE.STUFF
+++ b/etc/MORE.STUFF
@@ -47,9 +47,6 @@ You might find bug-fixes or enhancements in these places.
* Battery and Info Look: <URL:http://www-cdf.fnal.gov/~sthrlnd/emacs/>
- * BibTeX:
- <URL:http://www.ida.ing.tu-bs.de/people/dirk/bibtex/index.html>
-
* BS: <URL:http://www.geekware.de/software/emacs/index.html>
* Calculator: <URL:http://www.barzilay.org/misc/calculator.el>
@@ -85,26 +82,24 @@ You might find bug-fixes or enhancements in these places.
* MH-E: <URL:http://mh-e.sourceforge.net/>
- * PC Selection: <URL:ftp://ftp.thp.uni-duisburg.de/pub/source/elisp/>
-
* PS mode: <URL:http://odur.let.rug.nl/%7Ekleiweg/postscript/>
- * PS-print: <URL:http://www.cpqd.com.br/~vinicius/emacs/>
+ * PS-print: <URL:http://www.emacswiki.org/cgi-bin/wiki/PsPrintPackage>
* QuickURL: <URL:http://www.davep.org/emacs/>
- * RefTeX: <URL:http://staff.science.uva.nl/~dominik/Tools/reftex/>
+ * RefTeX: <URL:http://www.gnu.org/software/auctex/reftex.html>
* Speedbar, Checkdoc etc: <URL:http://cedet.sourceforge.net/>
- * SQL: <URL:http://www.geocities.com/TimesSquare/6120/emacs.html>
+ * SQL: <URL:http://www.emacswiki.org/cgi-bin/wiki/sql.el>
* Tramp: Remote file access via rsh/ssh
<URL:http://savannah.gnu.org/projects/tramp/>
* Webjump: <URL:http://www.neilvandyke.org/webjump>
- * Whitespace: <URL:http://www.dsmit.com/lisp/>
+ * Whitespace: <URL:http://www.dsmit.com/lisp/whitespace.el>
* Auxiliary files
@@ -147,7 +142,7 @@ Several are for Debian GNU/Linux in particular.
mirrors of the `CTAN' TeX archives.
* Dismal: spreadsheet:
- <URL:http://www.gnu.org/software/dismal/dismal.html>
+ <URL:http://ritter.ist.psu.edu/dismal/dismal.html>
* ECB: Emacs Code Browser: <URL:http://ecb.sourceforge.net/>
@@ -177,8 +172,7 @@ Several are for Debian GNU/Linux in particular.
<URL:http://emacspeak.sourceforge.net/>
* Emacs-w3m : <URL:http://emacs-w3m.namazu.org/>
- A simple Emacs interface to w3m, which is a text-mode
- WWW browser
+ A simple Emacs interface to w3m, which is a text-mode WWW browser
* Emacs Wiki Mode: <URL:http://www.mwolson.org/projects/EmacsWiki.html>
A wiki-like publishing tool and personal information manager
@@ -198,7 +192,7 @@ Several are for Debian GNU/Linux in particular.
HTML-specific editing. Can work with PSGML.
* Hyperbole:
- <URL:http://ftp.gnu.org/pub/gnu/hyperbole/>
+ <URL:http://directory.fsf.org/hyperbole.html>
Hyperbole is an open, efficient, programmable information
management and hypertext system.
@@ -229,11 +223,11 @@ 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://www.plannerlove.com/>
+ * Planner Mode: <URL:http://wjsullivan.net/PlannerMode>
Planner is an organizer and day planner for Emacs.
* Preview LaTeX: embed preview LaTeX images in source buffer.
- <URL:http://preview-latex.sourceforge.net/>
+ <URL:http://www.gnu.org/software/auctex/preview-latex>
* PSGML: <URL:http://www.lysator.liu.se/projects/about_psgml.html>
DTD-aware serious SGML/XML editing.
@@ -260,7 +254,7 @@ Several are for Debian GNU/Linux in particular.
* Tiny Tools: <URL:http://tiny-tools.sourceforge.net/>
- * VM (View Mail): <URL:http://www.wonderworks.com/vm/> Alternative
+ * VM (View Mail): <URL:http://www.nongnu.org/viewmail/> Alternative
mail reader. There is a VM newsgroup: <URL:news:gnu.emacs.vm.info>
* W3: <URL:http://savannah.gnu.org/projects/w3/>
@@ -276,8 +270,7 @@ Several are for Debian GNU/Linux in particular.
shell-script daemon and some LaTeX macros.
* X-Symbol: <URL:http://x-symbol.sourceforge.net/>
- Quasi-WYSIWYG editing of TeX & al. (It will be improved to take
- better advantage of Emacs 21 features.)
+ Quasi-WYSIWYG editing of TeX & al.
Local Variables:
mode: text
diff --git a/etc/Makefile b/etc/Makefile
index a238bea1928..0226c2838d9 100644
--- a/etc/Makefile
+++ b/etc/Makefile
@@ -1,43 +1,110 @@
-DESTDIR=
-LIBDIR=/usr/local/lib
-BINDIR=/usr/local/bin
-MANDIR=/usr/man/man1
-MANEXT=1
+### Makefile for Emacs etc/ directory
-all:
+## Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004, 2005, 2006,
+## 2007 Free Software Foundation, Inc.
-refcards: refcard.ps cs-refcard.ps de-refcard.ps fr-refcard.ps \
- pl-refcard.ps pt-br-refcard.ps ru-refcard.ps sk-refcard.ps
+## This file is part of GNU Emacs.
+
+## GNU Emacs is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2, or (at your option)
+## any later version.
+
+## GNU Emacs is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with GNU Emacs; see the file COPYING. If not, write to the
+## Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+## Boston, MA 02110-1301, USA.
+
+
+## Top-level targets.
+
+## PS files included with Emacs.
+all: refcards dired-refcards misc-refcards
+
+
+refcards: refcard.ps cs-refcard.ps de-refcard.ps fr-refcard.ps \
+ pl-refcard.ps pt-br-refcard.ps ru-refcard.ps sk-refcard.ps
+
+dired-refcards: dired-ref.ps cs-dired-ref.ps fr-drdref.ps sk-dired-ref.ps
+
+## No PS files: vipcard.tex viperCard.tex survival.tex sk-survival.tex
+misc-refcards: calccard.ps gnus-booklet.ps gnus-refcard.ps orgcard.ps
+
+## Following PS files are not included with Emacs.
+survival-cards: survival.ps cs-survival.ps sk-survival.ps
+
+viper-cards: vipcard.ps viperCard.ps
-refcard.dvi de-refcard.dvi fr-refcard.dvi pt-br-refcard.dvi sk-refcard.dvi: %.dvi: %.tex
- tex $<
-cs-refcard.dvi: %.dvi: %.tex
+## dvi files.
+
+## FIXME the sk-*.tex files say to use csplain, but were not
+## traditionally in this rule. Fix the doc or the rule.
+cs-refcard.dvi cs-dired-ref.dvi cs-survival.dvi: %.dvi: %.tex
csplain $<
-pl-refcard.dvi: %.dvi: %.tex
+pl-refcard.dvi: %.dvi: %.tex
if ! kpsewhich -format=fmt mex > /dev/null; then \
echo "No mex format found."; false; \
fi
tex $<
-ru-refcard.dvi: %.dvi: %.tex
+ru-refcard.dvi gnus-refcard.dvi: %.dvi: %.tex
latex $<
-refcard.ps de-refcard.ps fr-refcard.ps pt-br-refcard.ps: %.ps: %.dvi
- dvips -t landscape $<
+gnus-booklet.dvi: gnus-refcard.tex
+ latex '\def\booklettrue{}\def\letterpapertrue{}\input{gnus-refcard}'
+ mv gnus-refcard.dvi $@
+
+## Everything not explicitly listed above.
+%.dvi: %.tex
+ tex $<
+
+
+## PostScript files.
+
+## Note that some of the tex files (refcard, de-refcard, fr-refcard,
+## pt-br-refcard) have settings for letter or a4 paper. Following are
+## the default paper sizes (letter for English, A4 for translations).
+## FIXME orgcard.ps does not fit on letter (see orgcard.tex).
+
+## A4, landscape.
+de-refcard.ps fr-refcard.ps pt-br-refcard.ps orgcard.ps: %.ps: %.dvi
+ dvips -t a4 -t landscape $<
-cs-refcard.ps pl-refcard.ps ru-refcard.ps sk-refcard.ps: %.ps: %.dvi
- dvips $<
+## A4, portrait.
+cs-dired-ref.ps cs-refcard.ps cs-survival.ps fr-drdref.ps \
+pl-refcard.ps ru-refcard.ps \
+sk-dired-ref.ps sk-refcard.ps sk-survival.ps: %.ps: %.dvi
+ dvips -t a4 $<
+
+## letter, landscape.
+calccard.ps refcard.ps: %.ps: %.dvi
+ dvips -t letter -t landscape $<
+
+## letter, portrait.
+dired-ref.ps gnus-booklet.ps gnus-refcard.ps survival.ps vipcard.ps \
+viperCard.ps: %.ps: %.dvi
+ dvips -t letter $<
+
+
+.PHONY: mostlyclean clean distclean maintainer-clean unlock relock
mostlyclean:
- -rm -f core *.dvi *.log
+ -rm -f *.dvi *.log
+
+## Note does not delete generated ps files.
+clean distclean maintainer-clean: mostlyclean
+ -rm -f DOC*
-clean distclean maintainer-clean:
- -rm -f DOC* core *.dvi *.log
-SOURCES = [0-9A-QS-Z]* README *.[ch16] emacs.* etags.* ledit.l ms-* \
- spook-lines tasks.texi termcap.* *.tex
+SOURCES = [0-9A-QS-Z]* README *.[ch16] emacs.* ms-* \
+ spook-lines termcap.* *.tex
unlock:
chmod u+w $(SOURCES)
@@ -54,4 +121,6 @@ TIC=tic
e/eterm-color: e/eterm-color.ti
TERMINFO=`pwd`; export TERMINFO; $(TIC) e/eterm-color.ti
-# arch-tag: 4261f003-cf77-4478-a10a-5284e9d8f797
+
+## arch-tag: 4261f003-cf77-4478-a10a-5284e9d8f797
+### Makefile ends here
diff --git a/etc/NEWS b/etc/NEWS
index 8b22fd38b84..9e18d887834 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1,4 +1,4 @@
-GNU Emacs NEWS -- history of user-visible changes. 2006-06-04
+GNU Emacs NEWS -- history of user-visible changes.
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
Free Software Foundation, Inc.
@@ -35,7 +35,7 @@ any older versions of these packages to ensure that the Emacs 22
version is used. You can use M-x list-load-path-shadows to find such
older packages.
-Some specific packages which are known to cause problems are:
+Some specific packages that are known to cause problems are:
** Semantic (used by CEDET, ECB, JDEE): upgrade to latest version.
** cua.el, cua-mode.el: remove old versions.
@@ -91,7 +91,7 @@ Emacs with Leim.
The Emacs Lisp Reference Manual in Info format is built as part of the
Emacs build procedure and installed together with the Emacs User
-Manual. A menu item was added to the menu bar that makes it easy
+Manual. A menu item was added to the menu bar to make it easily
accessible (Help->More Manuals->Emacs Lisp Reference).
---
@@ -100,7 +100,7 @@ the distribution.
This manual is now part of the standard distribution and is installed,
together with the Emacs User Manual, into the Info directory. A menu
-item was added to the menu bar that makes it easy accessible
+item was added to the menu bar to make it easily accessible
(Help->More Manuals->Introduction to Emacs Lisp).
---
@@ -144,12 +144,8 @@ See the files mac/README and mac/INSTALL for build instructions.
** Support for GNU/Linux systems on X86-64 machines was added.
---
-** Support for HP 9000 series 800 and Hitachi SR2001/SR2201 machines
-was removed.
-
----
** Mac OS 9 port now uses the Carbon API by default. You can also
-create non-Carbon build by specifying `NonCarbon' as a target. See
+create a non-Carbon build by specifying `NonCarbon' as a target. See
the files mac/README and mac/INSTALL for build instructions.
---
@@ -160,6 +156,7 @@ types any more. Add -DUSE_LISP_UNION_TYPE if you want union types.
** When pure storage overflows while dumping, Emacs now prints how
much pure storage it will approximately need.
+---
** The script etc/emacs-buffer.gdb can be used with gdb to retrieve the
contents of buffers from a core dump and save them to files easily, should
Emacs crash.
@@ -230,10 +227,10 @@ affects the initial frame.
---
** Emacs built for MS-Windows now behaves like Emacs on X does,
-wrt its frame position: if you don't specify a position (in your
-.emacs init file, in the Registry, or with the --geometry command-line
-option), Emacs leaves the frame position to the Windows' window
-manager.
+with respect to its frame position: if you don't specify a position
+(in your .emacs init file, in the Registry, or with the --geometry
+command-line option), Emacs leaves the frame position to the Windows'
+window manager.
+++
** Emacs can now be invoked in full-screen mode on a windowed display.
@@ -246,12 +243,12 @@ screen size. (For now, this does not work with some window managers.)
** Emacs now displays a splash screen by default even if command-line
arguments were given. The new command-line option --no-splash
disables the splash screen; see also the variable
-`inhibit-startup-message' (which is also aliased as
-`inhibit-splash-screen').
+`inhibit-splash-screen' (which is also aliased as
+`inhibit-startup-message').
+++
** The default is now to use a bitmap as the icon, so the command-line options
---icon-type, -i has been replaced with options --no-bitmap-icon, -nbi to turn
+--icon-type, -i have been replaced with options --no-bitmap-icon, -nbi to turn
the bitmap icon off.
+++
@@ -365,6 +362,7 @@ too. If you want to use just plain `*' as a wildcard, type `*""'; the
doublequotes make no difference in the shell, but they prevent
special treatment in `dired-do-shell-command'.
+---
** Adaptive filling misfeature removed.
It no longer treats `NNN.' or `(NNN)' as a prefix.
@@ -880,9 +878,11 @@ The variable `automatic-hscrolling' was renamed to
the window now works sensibly, by automatically adjusting the window's
vscroll property.
++++
*** New customize option `overline-margin' controls the space between
overline and text.
++++
*** New variable `x-underline-at-descent-line' controls the relative
position of the underline. When set, it overrides the
`x-use-underline-position-properties' variables.
@@ -991,6 +991,7 @@ uses the "very visible" cursor (the default) or the normal cursor.
elements on mode-line (and header-line) like `highlight' face on text
areas.
++++
*** `mode-line-buffer-id' is the standard face for buffer identification
parts of the mode line.
@@ -1011,7 +1012,7 @@ so package-specific faces can inherit from it.
*** New option `ebnf-arrow-extra-width' which specify extra width for arrow
shape drawing.
The extra width is used to avoid that the arrowhead and the terminal border
-overlap. It depens on `ebnf-arrow-shape' and `ebnf-line-width'.
+overlap. It depends on `ebnf-arrow-shape' and `ebnf-line-width'.
+++
*** New option `ebnf-arrow-scale' which specify the arrow scale.
@@ -1118,7 +1119,7 @@ and "Open File...". "Open File..." now opens only existing files. This is
to support existing GUI file selection dialogs better.
+++
-*** The file selection dialog for Gtk+, Mac, W32 and Motif/Lesstif can be
+*** The file selection dialog for Gtk+, Mac, W32 and Motif/LessTif can be
disabled by customizing the variable `use-file-dialog'.
---
@@ -1126,7 +1127,7 @@ disabled by customizing the variable `use-file-dialog'.
be navigated with the arrow keys (like Gtk+, Mac and W32).
+++
-*** The menu bar for Motif/Lesstif/Lucid/Gtk+ can be navigated with keys.
+*** The menu bar for Motif/LessTif/Lucid/Gtk+ can be navigated with keys.
Pressing F10 shows the first menu in the menu bar. Navigation is done with
the arrow keys, select with the return key and cancel with the escape keys.
@@ -1136,7 +1137,7 @@ to explicitly specify a fontSet resource for this to work, for example
`-xrm "Emacs*fontSet: -*-helvetica-medium-r-*--*-120-*-*-*-*-*-*,*"'.
---
-*** Dialogs for Lucid/Athena and Lesstif/Motif now pops down when pressing
+*** Dialogs for Lucid/Athena and LessTif/Motif now pop down on pressing
ESC, like they do for Gtk+, Mac and W32.
+++
@@ -1167,7 +1168,7 @@ Traditionally, Emacs uses a Mouse-1 click to set point and a Mouse-2
click to follow a link, whereas most other applications use a Mouse-1
click for both purposes, depending on whether you click outside or
inside a link. Now the behavior of a Mouse-1 click has been changed
-to match this context-sentitive dual behavior. (If you prefer the old
+to match this context-sensitive dual behavior. (If you prefer the old
behavior, set the user option `mouse-1-click-follows-link' to nil.)
Depending on the current mode, a Mouse-2 click in Emacs can do much
@@ -1220,6 +1221,7 @@ mouse-wheel-inhibit-click-time variables.
** Multilingual Environment (Mule) changes:
++++
*** You can disable character translation for a file using the -*-
construct. Include `enable-character-translation: nil' inside the
-*-...-*- to disable any character translation that may happen by
@@ -1618,7 +1620,7 @@ people knowing `find-grep-dired' would probably expect it.
*** New commands `lgrep' (local grep) and `rgrep' (recursive grep) are
more user-friendly versions of `grep' and `grep-find', which prompt
separately for the regular expression to match, the files to search,
-and the base directory for the search. Case sensitivitivy of the
+and the base directory for the search. Case sensitivity of the
search is controlled by the current value of `case-fold-search'.
These commands build the shell commands based on the new variables
@@ -1748,6 +1750,7 @@ colors as on X.
* New Modes and Packages in Emacs 22.1
+---
** ERC is now part of the Emacs distribution.
ERC is a powerful, modular, and extensible IRC client for Emacs.
@@ -2020,6 +2023,7 @@ table editing available in modern word processors. The package also
can generate a table source in typesetting and markup languages such
as latex and html from the visually laid out text table.
++++
** The tumme.el package allows you to easily view, tag and in other ways
manipulate image files and their thumbnails, using dired as the main interface.
Tumme provides functionality to generate simple image galleries.
@@ -2072,6 +2076,7 @@ recognized.
** The TCL package tcl-mode.el was replaced by tcl.el.
This was actually done in Emacs-21.1, and was not documented.
+---
** The new package scroll-lock.el provides the Scroll Lock minor mode
for pager-like scrolling. Keys which normally move point by line or
paragraph will scroll the buffer by the respective amount of lines
@@ -2087,6 +2092,7 @@ for Emacs 22. In particular, the mode-line is now position sensitive.
** Changes in Shell Mode
+---
*** Shell output normally scrolls so that the input line is at the
bottom of the window -- thus showing the maximum possible text. (This
is similar to the way sequential output to a terminal works.)
@@ -2121,7 +2127,7 @@ asterisk - for instance, the comment close of some languages (eg, c's "*/"
or mathematica's "*)") - at the beginning of line are no longer are
interpreted as level 1 topics in those modes.
-*** Many or most commonly occuring "accidental" topics are disqualified.
+*** Many or most commonly occurring "accidental" topics are disqualified.
Text in item bodies that looks like a low-depth topic is no longer mistaken
for one unless its first offspring (or that of its next sibling with
offspring) is only one level deeper.
@@ -2211,6 +2217,7 @@ handling of edits of concealed text, undo concerns, etc.
- many, many other, more minor tweaks, fixes, and refinements.
- version number incremented to 2.2
++++
** The variable `woman-topic-at-point' was renamed
to `woman-use-topic-at-point' and behaves differently: if this
variable is non-nil, the `woman' command uses the word at point
@@ -2730,6 +2737,7 @@ line is left untouched.
The function `c-toggle-syntactic-indentation' can be used to toggle
syntactic indentation.
+---
** In sh-script, a continuation line is only indented if the backslash was
preceded by a SPC or a TAB.
@@ -2861,6 +2869,7 @@ i.e., there is always a closing tag.
By default, its setting is inferred on a buffer-by-buffer basis
from the file name or buffer contents.
+---
*** The variable `sgml-transformation' has been renamed to
`sgml-transformation-function'. The old name is still available as
alias.
@@ -2886,6 +2895,7 @@ and super/sub-scripts are made into super/sub-scripts.
+++
*** New major mode Doctex mode, for *.dtx files.
+---
** BibTeX mode:
*** The new command `bibtex-url' browses a URL for the BibTeX entry at
@@ -2942,6 +2952,7 @@ extracting the content of a BibTeX field.
`bibtex-autokey-titleword-case-convert-function'. The old names are
still available as aliases.
++++
** In Artist mode the variable `artist-text-renderer' has been
renamed to `artist-text-renderer-function'. The old name is still
available as alias.
@@ -2973,6 +2984,7 @@ breakpoints.
To use this package just type M-x gdb. See the Emacs manual if you want the
old behaviour.
+---
*** The variable tooltip-gud-tips-p has been removed. GUD tooltips can now be
toggled independently of normal tooltips with the minor mode
`gud-tooltip-mode'.
@@ -3339,6 +3351,7 @@ See the documentation of the user option
---
*** Rmail now displays 5-digit message ids in its summary buffer.
++++
*** The new commands rmail-end-of-message and rmail-summary end-of-message,
by default bound to `/', go to the end of the current mail message in
Rmail and Rmail summary buffers.
@@ -3705,6 +3718,7 @@ variable `calculator-radix-grouping-mode'.
---
** cplus-md.el has been deleted.
+---
** Ewoc changes
*** The new function `ewoc-delete' deletes specified nodes.
@@ -3850,6 +3864,7 @@ w32-use-full-screen-buffer to t.
`kTextEncodingMacRoman', `kTextEncodingISOLatin1', and
`kTextEncodingISOLatin2' are obsolete.
++++
** The variable `mac-command-key-is-meta' is obsolete. Use
`mac-command-modifier' and `mac-option-modifier' instead.
@@ -3919,6 +3934,7 @@ display tables.
** General Lisp changes:
++++
*** The function `expt' handles negative exponents differently.
The value for `(expt A B)', if both A and B are integers and B is
negative, is now a float. For example: (expt 2 -2) => 0.25.
@@ -4050,6 +4066,12 @@ inside timer functions and `post-command-hook' functions.
This combines `defalias' and `make-obsolete'.
+++
+*** New macro `with-case-table'
+
+This executes the body with the case table temporarily set to a given
+case table.
+
++++
*** New function `unsafep' determines whether a Lisp form is safe.
It returns nil if the given Lisp form can't possibly do anything
@@ -4063,6 +4085,7 @@ it evaluates those expressions immediately.
This is useful in packages that can be preloaded.
++++
*** `list-faces-display' takes an optional argument, REGEXP.
If it is non-nil, the function lists only faces matching this regexp.
@@ -4406,6 +4429,7 @@ binding of VARIABLE (a symbol) in buffer BUFFER. If VARIABLE does not
have a buffer-local binding in buffer BUFFER, it returns the default
value of VARIABLE instead.
+---
*** The function `frame-or-buffer-changed-p' now lets you maintain
various status records in parallel.
@@ -5405,7 +5429,7 @@ override incorrect graphical display dimensions returned by functions
** Mouse pointer features:
+++ (lispref)
-??? (man)
+--- (man)
*** The mouse pointer shape in void text areas (i.e. after the end of a
line or below the last line in the buffer) of the text window is now
controlled by the new variable `void-text-area-pointer'. The default
@@ -5848,6 +5872,12 @@ to examine a file being visited and deduce the proper coding system
for it. (If the coding system is detected incorrectly for a specific
file, you can put a `coding:' tags to override it.)
++++
+*** The new variable `ascii-case-table' stores the case table for the
+ascii character set. Language environments (such as Turkish) may
+alter the case correspondences of ASCII characters. This variable
+saves the original ASCII case table before any such changes.
+
---
*** The new function `merge-coding-systems' fills in unspecified aspects
of one coding system from another coding system.
diff --git a/etc/ORDERS b/etc/ORDERS
index 8c612a1b1b6..e08931e7ead 100644
--- a/etc/ORDERS
+++ b/etc/ORDERS
@@ -8,6 +8,6 @@ For more information, see the order form on the web at
Your purchases will help support further development of Emacs and
other free software programs.
-You can also make tax-deductable donations to the Free Software
+You can also make tax-deductible donations to the Free Software
Foundation, a not-for-profit organization (assuming you pay US taxes)
- see <http://www.gnu.org/help/donate.html>.
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index 9ce3b8e9602..6c72bacae11 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -213,15 +213,15 @@ configuring your compiler to use the native linker instead of GNU ld.
This happens because of bugs in Gtk+. Gtk+ 2.10 seems to be OK. See bug
http://bugzilla.gnome.org/show_bug.cgi?id=85715.
-** Emacs compiled with Gtk+ crashes on startup on cygwin.
+** Emacs compiled with Gtk+ crashes on startup on Cygwin.
A typical error message is
- ***MEMORY-ERROR***: emacs[5172]: GSlice: failed to allocate 504 bytes
+ ***MEMORY-ERROR***: emacs[5172]: GSlice: failed to allocate 504 bytes
(alignment: 512): Function not implemented
Emacs supplies its own malloc, but glib (part of Gtk+) calls memalign and on
-cygwin that becomes the cygwin supplied memalign. As malloc is not the
-cygwin malloc, the cygwin memalign always returns ENOSYS. A fix for this
+Cygwin, that becomes the Cygwin supplied memalign. As malloc is not the
+Cygwin malloc, the Cygwin memalign always returns ENOSYS. A fix for this
problem would be welcome.
* General runtime problems
@@ -1198,7 +1198,7 @@ The problems seem to depend on the version of LessTif and the Motif
emulation for which it is set up.
Only the Motif 1.2 emulation seems to be stable enough in LessTif.
-Lesstif 0.92-17's Motif 1.2 emulation seems to work okay on FreeBSD.
+LessTif 0.92-17's Motif 1.2 emulation seems to work okay on FreeBSD.
On GNU/Linux systems, lesstif-0.92.6 configured with "./configure
--enable-build-12 --enable-default-12" is reported to be the most
successful. The binary GNU/Linux package
@@ -1295,7 +1295,7 @@ be carried out at the same time:
improves performance dramatically, at the slight expense of correctness
of the X protocol. lbxproxy acheives the performance gain by grouping
several X requests in one TCP packet and sending them off together,
- instead of requiring a round-trip for each X request in a seperate
+ instead of requiring a round-trip for each X request in a separate
packet. The switches that seem to work best for emacs are:
-noatomsfile -nowinattr -cheaterrors -cheatevents
Note that the -nograbcmap option is known to cause problems.
@@ -1401,7 +1401,7 @@ The easy way to do this is to put
in your site-init.el file.
-* Runtime problems on character termunals
+* Runtime problems on character terminals
** Emacs spontaneously displays "I-search: " at the bottom of the screen.
@@ -2102,6 +2102,18 @@ pop-up menu interaction.
Windows 95 and Windows NT up to version 4.0 do not support help text
for menus. Help text is only available in later versions of Windows.
+When "ClearType" method is selected as the "method to smooth edges of
+screen fonts" (in Display Properties, Appearance tab, under
+"Effects"), there are various problems related to display of
+characters: 2-pixel trace is left behind when moving overlays, bold
+fonts can be hard to read, small portions of some characters could
+appear chopped, etc. This happens because, under ClearType,
+characters are drawn outside their advertised bounding box. Emacs 21
+disabled the use of ClearType, whereas Emacs 22 allows it and has some
+code to enlarge the width of the bounding box. Apparently, this
+display feature needs more changes to get it 100% right. A workaround
+is to disable ClearType.
+
There are problems with display if mouse-tracking is enabled and the
mouse is moved off a frame, over another frame then back over the first
frame. A workaround is to click the left mouse button inside the frame
@@ -2113,16 +2125,32 @@ not as severely as in 21.1.
An inactive cursor remains in an active window after the Windows
Manager driven switch of the focus, until a key is pressed.
-Windows input methods are not recognized by Emacs. Some
+Windows input methods are not recognized by Emacs. However, some
of these input methods cause the keyboard to send characters encoded
in the appropriate coding system (e.g., ISO 8859-1 for Latin-1
-characters, ISO 8859-8 for Hebrew characters, etc.). To make this
-work, set the keyboard coding system to the appropriate value after
-you activate the Windows input method. For example, if you activate
-the Hebrew input method, type "C-x RET k iso-8859-8 RET". (Emacs
-ought to recognize the Windows language-change event and set up the
-appropriate keyboard encoding automatically, but it doesn't do that
-yet.)
+characters, ISO 8859-8 for Hebrew characters, etc.). To make these
+input methods work with Emacs, set the keyboard coding system to the
+appropriate value after you activate the Windows input method. For
+example, if you activate the Hebrew input method, type this:
+
+ C-x RET k hebrew-iso-8bit RET
+
+(Emacs ought to recognize the Windows language-change event and set up
+the appropriate keyboard encoding automatically, but it doesn't do
+that yet.) In addition, to use these Windows input methods, you
+should set your "Language for non-Unicode programs" (on Windows XP,
+this is on the Advanced tab of Regional Settings) to the language of
+the input method.
+
+To bind keys that produce non-ASCII characters with modifiers, you
+must specify raw byte codes. For instance, if you want to bind
+META-a-grave to a command, you need to specify this in your `~/.emacs':
+
+ (global-set-key [?\M-\340] ...)
+
+The above example is for the Latin-1 environment where the byte code
+of the encoded a-grave is 340 octal. For other environments, use the
+encoding appropriate to that environment.
The %b specifier for format-time-string does not produce abbreviated
month names with consistent widths for some locales on some versions
@@ -2295,12 +2323,36 @@ the Emacs configure script, which should now find the jpeg library.
Alternatively, modify the generated src/Makefile to link the .a file
explicitly, and edit src/config.h to define HAVE_JPEG.
+*** `configure' warns ``accepted by the compiler, rejected by the preprocessor''.
+
+This indicates a mismatch between the C compiler and preprocessor that
+configure is using. For example, on Solaris 10 trying to use
+CC=/opt/SUNWspro/bin/cc (the Sun Studio compiler) together with
+CPP=/usr/ccs/lib/cpp can result in errors of this form (you may also
+see the error ``"/usr/include/sys/isa_defs.h", line 500: undefined control'').
+
+The solution is to tell configure to use the correct C preprocessor
+for your C compiler (CPP="/opt/SUNWspro/bin/cc -E" in the above
+example).
+
+*** `configure' fails with ``"junk.c", line 660: invalid input token: 8.elc''
+
+The final stage of the Emacs configure process uses the C preprocessor
+to generate the Makefiles. Errors of this form can occur if the C
+preprocessor inserts extra whitespace into its output. The solution
+is to find the switches that stop your preprocessor from inserting extra
+whitespace, add them to CPPFLAGS, and re-run configure. For example,
+this error can occur on Solaris 10 when using the Sun Studio compiler
+``Sun C 5.8'' with its preprocessor CPP="/opt/SUNWspro/bin/cc -E".
+The relevant switch in this case is "-Xs" (``compile assuming
+(pre-ANSI) K & R C style code'').
+
** Compilation
*** Building Emacs over NFS fails with ``Text file busy''.
This was reported to happen when building Emacs on a GNU/Linux system
-(RedHat Linux 6.2) using a build directory automounted from Solaris
+(Red Hat Linux 6.2) using a build directory automounted from Solaris
(SunOS 5.6) file server, but it might not be limited to that
configuration alone. Presumably, the NFS server doesn't commit the
files' data to disk quickly enough, and the Emacs executable file is
@@ -2387,17 +2439,17 @@ files are installed. Then use:
(using the location of the 32-bit X libraries on your system).
-*** Building the Cygwin port for MS-Windows can fail with some GCC version
+*** Building the Cygwin port for MS-Windows can fail with some GCC versions
Building Emacs 22 with Cygwin builds of GCC 3.4.4-1 and 3.4.4-2 is
reported to either fail or cause Emacs to segfault at run time. In
addition, the Cygwin GCC 3.4.4-2 has problems with generating debug
info. Cygwin users are advised not to use these versions of GCC for
-compiling Emacs. GCC versions 4.0.3, 4.1.1, and 4.1.2 reportedly
-build a working Cygwin binary of Emacs, so we recommend these GCC
-versions. Note that these three versions of GCC, 4.0.3, 4.1.1, and
-4.1.2, are currently the _only_ versions known to succeed in building
-Emacs (as of v22.1).
+compiling Emacs. GCC versions 4.0.3, 4.0.4, 4.1.1, and 4.1.2
+reportedly build a working Cygwin binary of Emacs, so we recommend
+these GCC versions. Note that these versions of GCC, 4.0.3, 4.0.4,
+4.1.1, and 4.1.2, are currently the _only_ versions known to succeed
+in building Emacs (as of v22.1).
*** Building the native MS-Windows port with Cygwin GCC can fail.
@@ -2548,7 +2600,7 @@ The fix is to install a newer version of ncurses, such as version 4.2.
*** Linux: Segfault during `make bootstrap' under certain recent versions of the Linux kernel.
-With certain recent Linux kernels (like the one of Redhat Fedora Core
+With certain recent Linux kernels (like the one of Red Hat Fedora Core
1 and newer), the new "Exec-shield" functionality is enabled by default, which
creates a different memory layout that breaks the emacs dumper. Emacs tries
to handle this at build time, but if the workaround used fails, these
@@ -2718,6 +2770,13 @@ should now succeed.
You need to install a recent version of Texinfo; that package
supplies the `install-info' command.
+*** Installing to a directory with spaces in the name fails.
+
+For example, if you call configure with a directory-related option
+with spaces in the value, eg --enable-locallisppath='/path/with\ spaces'.
+Using directory paths with spaces is not supported at this time: you
+must re-configure without using spaces.
+
** First execution
*** Emacs binary is not in executable format, and cannot be run.
diff --git a/etc/SERVICE b/etc/SERVICE
index 4d6009e9f36..3a057b98af1 100644
--- a/etc/SERVICE
+++ b/etc/SERVICE
@@ -1,1378 +1,10 @@
--*- text -*-
GNU Service Directory
---------------------
-See the end of file for copyright information.
+Please see <http://www.fsf.org/resources/service/> for a list of
+people who have asked to be listed as offering support services for
+GNU software, including GNU Emacs, for a fee or in some cases at no
+charge.
-This is a list of people who have asked to be listed as offering
-support services for GNU software, including GNU Emacs, for a fee
-or in some cases at no charge.
-
-The information comes from the people who asked to be listed;
-we do not include any information we know to be false, but we
-cannot check out any of the information; we are transmitting it to
-you as it was given to us and do not promise it is correct.
-Also, this is not an endorsement of the people listed here.
-We have no opinions and usually no information about the abilities of
-any specific person. We provide this list to enable you to contact
-service providers and decide for yourself whether to hire one.
-
-Before FSF will list your name in the GNU Service Directory, we ask
-that you agree informally to the following terms:
-
-1. You will not restrict (except by copyleft) the use or distribution
-of any software, documentation, or other technical information you
-supply anyone in the course of modifying, extending, or supporting GNU
-software. This includes any information specifically designed to
-ameliorate the use of GNU software.
-
-2. You will not take advantage of contact made through the Service
-Directory to advertise an unrelated business (e.g., sales of
-non-GNU-related proprietary information). You may spontaneously
-mention your availability for general consulting, but you should not
-promote a specific unrelated business unless the client asks.
-
-Please include some indication of your rates, because otherwise users
-have nothing to go by. Please put each e-mail address inside "<>".
-Please put nothing else inside "<>". Thanks!
-
-For a current copy of this directory, or to have yourself listed, ask:
- service@gnu.org
-
-** Please keep the entries in this file alphabetical **
-^_
-Aaronsen Group, Ltd. <gnu@aaronsen.com>
-600 Grant St.
-Suite 5345
-Pittsburgh, PA 15219 US
-+1 412 391 6000 voice
-+1 412 361 5991 fax
-http://www.aaronsen.com/gnu
-
-The Aaronsen Group provides several levels of service in the free software
-arena, from simple configuration and installation to large extensions and
-new development. We specialize in unique applications, but have the
-experience to handle all manner of prospects, from database-backed
-web-sites to high-end multiprocessor clusters.
-
-Our service area covers the US, with key offices in Pittsburgh, PA; San
-Jose, CA; and New York, NY.
-
-We are available for both hourly work (at $300 per hour, some qualified
-discounts are available) and fixed-price projects. Work is done on the
-client site, at our offices, or remote via Internet or telephone
-connection
-
-Updated: 2001-05-08
-^_
-Alcôve
-------
-
-Alcôve, Centre Paris Pleyel, 153 bld Anatole France
-93200 Saint-Denis France
-
-Email: <infos@alcove.fr>
-
-Web: http://www.alcove.com
-Tél.: +33 1 49 22 68 00
-Fax: +33 1 49 22 68 01
-
-Founded in 1996, Alcôve's main purpose is to promote and support the
-use of GNU/Linux and OSS on the European market.
-Expertise in OSS innovation is the foundation of all Alcôve's
-activities.
-We provide key accounts and leading businesses in the field of IT with :
-
- Consultancy
- Engineering
- Training
- Support
- Technical watching brief
- OSS Certification - Validation - Guarantee
- Drivers for the linux kernel
- Company directory and unified messaging
- Linux Firewall Security Package
-
-Keys: support services, consulting, open source software, GNU/Linux,
-Apache, Perl, GNU, Samba, Zope, Imp, OpenLDAP
-
-Average daily rate, depending on the job : 1000 euros.
-
-Updated: 2001-06-26
-^_
-Allegro Consultants, Inc. <info@gccsupport.com>
-1072 De Anza Blvd., Suite B101
-San Jose, CA 95129-3532
-USA
-+1 408 252-2330 voice
-+1 408 252-2334 fax
-http://www.gccsupport.com
-
-Allegro Consultants, Inc, in association with DIS International, is
-now offering annual support contracts covering the GNU Compiler
-Collection and related tools, including the GCC C and C++ compilers
-for MPE/iX.
-
-The free GCC C and C++ compilers have been available on MPE/iX for
-several years now, and are used for mission-critical applications by
-many organizations including Hewlett-Packard. Until now, assistance
-was available only from Mark Klein of DIS on a limited, voluntary
-basis. Mark is the person who originally ported GCC to the HP e3000,
-and he continues to maintain the software and port new versions.
-
-Support contracts start at $1,995.00/year for an organization
-(unlimited number of HP e3000 computer systems) with two designated
-callers. Additional options are available for large organizations who
-need to designate more than two authorized callers, or who want the
-additional security of 24x7 coverage.
-
-Updated: 2001-06-12
-^_
-Amazonia Computing
-
-<rick@viclink.com>
-http://www.viclink.com/~rick
-
-1981 NW Thomsen Lane
-McMinnville, OR 97128
-503-474-0572
-
-I provide development and technical support for free software
-and open source systems including embedded programming, GNU/Linux, the
-GNU development suite..
-
-I have over 10 years experience building and maintaining systems ranging
-from medical patient monitoring systems to Linux device drivers for
-custom PCI plug in cards.
-
-Rates range from $75.00/hr to $90/hr USD. Will work for a lower rate
-if in involves working in either Brazil, Vietnam, Indonesia, or Cuba.
-I am also willing to work on fixed price contracts.
-
-Updated: 2001-05-08
-^_
-Dipl.-Inform. Gerd Aschemann <gerd@aschemann.net>
-Osannstr. 49
-D-64285 Darmstadt
-Tel.: +49 173 3264070
-http://www.aschemann.net/
-
-- Consultant
- + Unix Network and System Administration
- + Distributed Systems and Middleware Infrastructures
-- former System Administrator (UNIX and NT) at CS Department, TU Darmstadt, Germany
-- 20 years working in the CS field, System administration on different platforms
-- 13 years with UNIX/Networking/FreeWare/GNU/X11
-- 10 years courses on Operating Systems and Distributed Systems
-- Lectures on System and Network Administration
-- Platforms: Solaris, GNU/Linux, SunOS, Ultrix, HP-UX, Digital Unix, AIX, SCO, FreeBSDs
-- Distributed Platforms and Information Systems (CORBA, WWW, Java, SOAP)
-
-Rates are at 180,-- DM (~85 US$) per hour minimum, depending on the job.
-I am willing to travel for sufficiently large jobs.
-
-Updated: 2001-05-09
-^_
-Baker Research, Ltd.
-P. O. Box 10036, Alexandria, VA 22310
-Phone: (703) 960-9500 (Voice)
- (703) 960-8700 (Fax)
-Web: http://www.baker-research.com
-email: <solutions@baker-research.com>
-Rate: $75.00/hr to $150.00/hr, or fixed-price projects.
-
-Services:
-
- --Customization of systems for user needs
- --Software product evaluation and recommendation
- --Full-lifecycle software development
- --Programming (C/C++, tcl/tk, bash, perl)
- --Custom backup and archival systems
- --GNU/Linux system installation, configuration, and management
- --Cluster systems support
- -Installation, configuration, and management
- -MPI and Myrinet support
- --Data acquisition, management, visualization, and archival
-
-Updated: 2001-05-11
-^_
-Don Barry, Ph.D. <don@astro.cornell.edu>
-Ithaca, NY
-
-Astrophysicist with extensive and varied hacker background. Substantial
-expertise in mathematical modeling, instrument interface, low-level and
-high-level hardware control, statistical analysis, automated/mathematical
-typesetting. Also fluent in opto/electro/mechanical design. I try to find
-solutions using free software when possible and specialize in GNU/Linux
-platforms. Degrees also in chemistry and mathematics.
-
-Speak: C, APL, Fortran, J, Perl, Emacs Lisp, IDL, variety of machine
-languages from CDC CYBER (!) to x86 families, TeX/LaTeX, sendmail, and
-quite a few others. Experience on platforms from PDP to present.
-
-Rates: $75--$150 per hour + travel (if required) depending on the needs of
-the project, the level of support and availability required, and its
-interest to me.
-
-Services: consulting, design, porting, lecturing, support, project definition,
-system implementation.
-
-Updated: 2001-05-09
-^_
-James Craig Burley
-97 Arrowhead Circle
-Ashland, MA 01721
-Email: <craig@jcb-sc.com>
-Web: http://world.std.com/~burley/
-
-Expertise (mainly Development and Maintenance):
- Compilers for Imperative Languages (author of GNU Fortran, aka g77)
- Operating System Kernels
- Tools/Utilities
- Microcode (mainly VLIW) and Assembler
- Software-Development-System Architecture (including APIs, IDEs)
- Debugging
- Technical Writing (Manager of Documentation)
-
-Experience:
- Programming Languages C, PL/I, Fortran, PostScript
- Operating Systems Unix, GNU/Linux, Solaris, HP-UX, VAX/VMS, PRIMOS,
- MIT ITS, TOPS-10, TSS/8, IBM MVS
- Assembler/Microcode Languages for Sun SPARC, HP-PA RISC, Numerix VLIWs,
- VAX, Pr1me, IBM 360, PDP-10, PDP-8
- Scripting Languages (many)
- APIs (many)
-
-Rate: $180/hour
-
-Updated: 2001-05-08
-^_
- C2V Michel Delval <mfd@c2v.com>
- 82 bd Haussmann Jean-Alain Le Borgne <jalb@c2v.com>
- 75008 Paris
- France
- Tel (33 1) 40.08.07.07
- Fax (33 1) 43.87.35.99
- http://www.c2v.com/freesoft.htm
- e-mail: <consult@c2v.com>
-
- Services: we offer source or source+binary distribution,
- installation, training, maintenance, technical support,
- consulting, specific development and followup on the GNU software
- development environment: Emacs, gcc/g++, binutils, gas, gdb.
-
- Porting on new platforms, and professionally developing software
- with the GNU tools in the Unix/X11 environment since they were
- first available.
-
- Experience: GNU C Compilation toolchain for the SGS-Thomson D950
- and ST20 DSP chips.
-
- GNU C compilation toolchain (cross-compiler, compiler, linker,
- assembler, debugger) for SparcV7 ERC32 based space systems
- (Sextant Avionique / Alcatel Espace).
-
- Feasability study, analysis and prototyping of a complete
- compilation toolchain based on the GNU programming tools for the
- CSEM RISC microprocessor family.
-
- Rates: from 5000 FF/day to 750 000 FF/year, 40% discount for
- educational institutions, add taxes and expenses. Ask for list.
-
-Updated: 2001-05-09
-^_
-Cendio Systems AB <info@cendio.com>
-Teknikringen 3
-SE-583 30 Linkoping
-SWEDEN
-+46 13 21 46 00 voice
-+46 13 21 47 00 fax
-http://www.cendio.com/ <international site>
-
-Cendio Systems develops, implements and integrates solutions based on
-Open Source Software. We also develop and market the Fuego
-Firewall(TM), an award winning and easy-to-use firewall, based on
-GNU/Linux.
-
-We offer professional services, including support, maintenance,
-integration and development in the following areas:
-
-* Embedded Linux
-* Client/Server Solutions GNU/Linux/BSD
-* Professional Training GNU/Linux, certifications from SAIR Linux/GNU
-* Open Source Strategy
-* Development/Adaptation of free software
-
-Cendio Systems have deep roots in Linkoping University, and was
-founded 1992 as Signum Support. Our headquarters resides in Mjardevi
-Science Park in Linkoping and we have an office in Stockholm. We are
-currently about fifty employees at both locations.
-
-Cendio Systems won the Lotus 'Tux Award' at LotusSphere 2000 for "the
-partner who best exemplifies a unique dedication to Lotus and Linux
-technologies and has successfully executed their vision in the
-marketplace."
-
-Cendio Systems have the following certifications and memberships:
-
-Association of Computing Machinery, Professional Membership
-COMPAQ System Specialist (Intel and Alpha Systems)
-Embedded Linux Consortium, Founding Member
-IBM Value Added Reseller (Netfinity)
-IBM Solution Provider (RS/6000)
-SAIR GNU/Linux, Accredited Center for education
-SGI Systems Integrator
-
-Rates: Please request our price list.
-
-Updated: 2001-05-09
-^_
-Alex Cherepanov
-111 McDade Blvd, Apt. A-205, Folsom, PA 19033
-Phone: 610 529 3475
-email: <alexcher@erols.com>
-Web: http://users.erols.com/alexcher/
-
-Services: Support and maintenance of free PostScript and PDF
-software including Ghostscript, ps2pdf, a2ps, tiff2ps, pdfopt.
-General imaging, font, and PDL consulting.
-
-Experience: 12 years experience in software engineering, 5 years
-in PostScript and digital color printing.
-
-Rates: $50-75/hour, depending on contract length.
-
-Updated: 2001-05-22
-^_
-CodeSourcery, LLC <info@codesourcery.com>
-9978 Granite Point Ct
-Granite Bay, CA 95746
-(650) 364-5360
-http://www.codesourcery.com
-
-CodeSourcery specializes in customization of, enhancements to, and
-support for all GNU software. We have particular experience in the
-field of programming tools, and have been responsible for many
-features in the GNU C and C++ compilers including the implementation
-of member templates and type-based alias analysis. Mark Mitchell, one
-of our co-founders, is a co-maintainer of the GNU Compiler Collection.
-
-We also have experience with GNU tools ranging from emacs to binutils
-to gdb to autoconf, and are willing to work on any and all free
-software projects.
-
-Please see our web page at www.codesourcery.com for more information
-about our products, services, and prices.
-
-Updated: 2001-05-16
-^_
-Stuart Cracraft <cracraft@gnu.org>
-P.O. Box 6061
-Laguna Niguel, CA, 92607, USA
-Phone: 714-347-8106 (prefer email)
-Rate: negotiable
-
-Consultation topics:
-Entire GNU suite - porting, compilation, installation,
-user-training, administrator-training.
-
-Method: via any combination of telephone, dialup, Internet, in-person, email.
-
-Experience: supporting GNU since project inception, original port of
-GNU Emacs to Sun Solaris, original author of GNU Emacs online tutorial.
-Expertise in C, Emacs Lisp, Perl, Expect, Oracle, Informix, SunOS, Solaris,
-NIS, NFS, system-monitoring via paging. Unix System and Database
-administration or development.
-
-Updated: 2000-12-13
-^_
-Bruce Dawson - <jbd@codemeta.com>
-CodeMeta, Inc.
-Manchester, NH USA
-800-354-2209
-
-Specializing in GNU tools such as CVS, gnats, bash, gawk, fileutils...
-
-Services:
-
- o 800 phone support.
-
- o Modification and development.
-
- o Training.
-
-Rate: Fixed rate deliverables or $110/hour for hourly work.
-
-http://www.codemeta.com
-
-Updated: 2001-05-09
-^_
-Martin Deen Consulting
-<sunra@mail.hypermart.net>
-426 Marietta St. #503
-Atlanta, GA 30313
-(V) 404-931-5392
-http://sunra.hypermart.net
-
-Consultant with many years supporting the GNU/Linux environment and
-working with Open Source solutions. Available for hourly and per
-project work. Hourly rates start at $100/hr. Work can be done on
-client site, offsite, or remotely via Internet. Can take engagements
-in Atlanta with little notice, call for arangements elsewhere.
-
-Updated: 2001-04-20
-^_
-DSS Distributed Systems Software, Inc.
-3253 Georgia St. <dss@dss.bc.ca>
-Richmond, British Columbia V7E 2R4 http://www.dss.bc.ca
-CANADA (604) 270-9559
-
-GNU-related services:
- We specialize in support for GCC (mainly C and C++), including porting,
- retargeting, and customizing.
- Also, GNU and other free software that falls within our areas of expertise.
-
-Expertise:
- DSS provides software design, implementation, and consulting services.
-
- Distributed systems:
- o Client/Server architectures, computer networking, communication
-protocols
- o Directory systems, including X.500 and LDAP
- o High-performance and special-purpose distributed systems and databases:
- scalability, reliability, availability, transactions
- o Computer systems performance analysis
-
- Compilers, translators, and interpreters, including "small" and
- special-purpose languages
-
-Rates:
- Consulting rates are $65-$200 USD per hour, plus
- applicable taxes. Fixed-cost projects are also possible.
-
-Updated: 2001-05-10
-^_
-John W. Eaton
-<jwe@gnu.org>, <jwe@net66.com>
-
-Experience: Original author and current maintainer of GNU Octave
- (http://www.octave.org).
-
- Derivatives of the Unix man utility that I wrote in 1990
- are currently distributed with several GNU/Linux systems.
-
- Improved GNU Make's support for VPATH and object
- libraries on VMS systems.
-
- Various other enhancements and bug fixes for other free
- software tools.
-
- I have more than 18 years experience programming various
- languages and systems, more than 13 years as a user and
- system mangler of Unix systems, including Ultrix, SunOS,
- AIX, HP/UX, BSD, IRIX, Digital Unix, and GNU/Linux.
- Long-time user of GNU tools on all these platforms.
-
-Programming: Octave, Matlab, C++, C, Fortran, Emacs Lisp, TeX/LaTeX,
- AWK, M4, Autoconf, Make, Lex & YACC, Unix shell
- programming, etc.
-
-Services: Anything related to programming and extending Octave.
- Porting, installation, and customization of GNU/Linux and
- GNU tools. Unix system administration.
-
-Rates: $100/hour + travel and expenses (if required). Will
- consider travel for short periods and/or sufficiently
- interesting jobs, but prefer to work via the net or email.
- Lower rates for non-profits.
-
-Updated: 2001-05-14
-^_
- Echo Labs <echo@iinet.net.au>
- 29 Weld St, http://www.iinet.net.au/~echo/
- Nedlands, WA 6009
- Perth, Australia
- +61 (0) 41 356 0008
-
- Echo Labs is a software consultancy that also provides support and
- development skills. Specialising in GNU software, particularly Tcl/Tk
- and Linux. We can deliver systems at a fraction of the cost of those
- based on more traditional technologies. Internet/intranet, telephony
- and data communications solutions, for all platforms are undertaken.
- GUI front-ends done quickly in rapid development process.
-
- While typically involved in engineering and technical areas, any
- GNU/Open Source software will be supported.
-
- For further details see: http://www.iinet.net.au/~echo/
-
- Experience: 15+ years C/Unix, Sun, SCO, GNU/Linux, Win/NT.
- Secure WWW servers (Apache SSL), Ecommerce solutions.
- Systems programming, device drivers, hardware interfacing.
- GNU tools/utilities, telephony and Embedded & realtime
- systems. Communications protocols and implementation.
-
- Degrees: BAppSc (CS) (Distinction), Curtin University, Perth
-
- Rates: AUS $50-75/hr neg.
-
-Updated: 2001-05-09
-^_
-Noah Friedman <friedman@splode.com>
-6114 La Salle Ave. #739
-Oakland, CA 94611-2802
-
-Author of several Emacs Lisp packages and parts of Emacs, as well as
-numerous network and unix system utilities. Co-maintained GNU Texinfo and
-Autoconf for a couple of years. Experienced unix systems engineer.
-FSF employee Feb 1991--Sep 1994.
-
-I can perform installation, porting, and enhancement of all GNU software
-and any other free software, especially for Linux/GNU systems; design
-high-capacity hardware-redundant servers for production environments;
-provide consulting on the use of version control management with CVS; and I
-am willing to provide handholding for shell programming and Emacs Lisp
-development.
-
-Fees negotiable, averaging $100-$150/hour. I can work in the California
-bay area or anywhere accessible on the Internet. For larger jobs I may be
-willing to travel.
-
-Updated: 2001-05-08
-^_
-Brian Gough <bjg@network-theory.co.uk>
-Network Theory Limited http://www.network-theory.co.uk/
-Bristol, United Kingdom
-
-Tel: 0117 3179309 (in UK), +44 117 3179309 (outside UK)
-
-I provide support and development of free software on a contract
-basis. I can work at your site, over the internet, or by phone/email.
-I have extensive experience with many free software packages,
-particularly for web development.
-
-I can also provide specialized consulting in numerical software
-development for scientific and quantitative applications.
-
-Rate: 40-60 pounds/hour, depending on location.
-
-Updated: 2001-09-05
-^_
-Ronald F. Guilmette <rfg@monkeys.com>
-RG Consulting
-1751 East Roseville Pkwy. #1828
-Roseville, CA 95661
-Tel: +1 916 786 7945
-FAX: +1 916 786 5311
-
-Services: Development & porting of GNU software development tools.
-
-GNU Contributions:
- Invented, designed, and implemented the protoize and
- unprotoize tools supplied with GCC2.
-
- Designed and developed all code to support the generation
- of Dwarf symbolic debugging information for System V Release
- 4 in GCC2.
-
- Performed original port of GNU compilers to SVr4 system.
-
- Finished port of GNU compilers to Intel i860 RISC
- processor.
-
-Experience: 13+ years UNIX systems experience, all working on compilers
- and related tools.
-
- 7+ years working professionally on GCC, G++, and GDB under
- contract to various firms including the Microelectronics
- and Computer Technology Corporation (MCC), Data General (DG),
- Network Computing Devices (NCD), and Intel Corp.
-
-Other qualifications:
- Developer of the RoadTest (tm) C and C++ commercial
- compiler test suites.
-
- Former vice-chairman of UNIX International Programming
- Languages Special Interest Group (UI/PLSIG).
-
- Bachelor's and a Master's degrees, both in Computer Science.
-
-Rates: Variable depending upon contract duration. Call for quote.
-
-Updated: 2000-12-13
-^_
-IDEALX
-15-17 avenue de ségur
-75007 Paris
-France
-
-Tel - +33144420000 Fax - +33144420001
-http://www.IDEALX.com, http://www.IDEALX.org
-
-IDEALX is involved in the development of Open Source solutions,and
-ensures their deployment and maintenance.
-Development
-Technical support
-Technology watch
-Consulting
-Engineering
-Training
-
-Rates - Variable
-
-Updated: 2000-12-13
-^_
-Ehud Karni <kehud@iname.com>
-Israel
-
-Support of Emacs & Emacs lisp, GNU/Linux, Cygwin.
-
-Fee: $75/hour.
-
-Updated: 2001-05-09
-^_
-Bradley M. Kuhn
-<bkuhn@ebb.org>
-http://www.ebb.org/bkuhn
-
-I am available for part-time system administration, software development
-and training. I have extensive experience with system administration of
-GNU/Linux systems, and Free Software development. I have also taught
-courses in C++ and Perl. As an employee of the FSF, I have a unique
-perspective on the free software community.
-
-Please visit my homepage for more information on my background and skills.
-My resume is also available there.
-
-I am available for both 1099 and W2 on-site contracting in the Boston, MA,
-USA metropolitan area, as well as remote consulting via dialup or Internet
-connection anywhere in the USA. I am not interested in relocation.
-However, temporary (two week maximum) jobs with paid expenses at other
-locations will be considered.
-
-My rate varies greatly (between $25-$60/hour) depending on the
-circumstances. Rates for non-profit organizations will be on the lower end
-of the spectrum, if I support your cause.
-
-Updated: 2001-06-14
-^_
-Paul Gillingwater, CEO
-CSO Lanifex Unternehmensberatungs & Softwareentwicklung GmbH
-Praterstrasse 60
-A-1020 Vienna, Austria
-http://www.lanifex.com
-Phone.: +43/1/2699293-21
-Fax.: +43/1/2699293-13
-Mobile.: +43/699/19223085
-
- CSO Lanifex is an effective team of software developers who are
-actively implementing Web-based database systems, using a variety of
-Open Source technologies, including GNU/Linux, PHP, MySQL, Perl and
-especially the Midgard Project.
-
- Our speciality is Web development with content management, especially
-for larger Web portals and e-Commerce systems. We're very much
-in-favour of Free (as in speech) software, and have used it for almost
-all of our customers.
-
- We have eight staff, with a variety of skills, including RHCE, PHP,
-Perl, C, Java, SQL, network design, security consulting, Internet
-routing, UMS etc. The CEO personally has over 20 years of experience
-with UNIX, and more than 10 years experience with a variety of
-Internet technologies. For a more complete list, please refer to our
-Web site listed below.
-
-For further details see: http://www.lanifex.com
-
-Rates: ATS 1.500/hr neg.
-
-Updated: 2000-12-19
-^_
-Greg Lehey
-LEMIS
-PO Box 460
-Echunga SA 5153
-Australia
-
-Phone: +61-8-8388-8286
-Fax: +61-8-8388-8725
-Mobile: +61-418-838-708
-Mail <grog@lemis.com>
-
-Services: Supply, porting, installation, consultation on all GNU
-products.
-
-Experience: 25 years OS and compiler experience, ports of most GNU
-products. Author of ported software CD-ROM for UNIX System V.4.2,
-"Porting UNIX Software" (O'Reilly), "Installing and Running FreeBSD"
-and "The Complete FreeBSD" (both Walnut Creek).
-
-Rates: Choice of AUD 300 per hour or hotline rates AUD 6 per minute.
-Outside Australia, $US 180 per hour or $US 3.50 per minute. Quick,
-well prepared questions by mail may be free.
-
-Updated: 2001-05-09
-^_
-Alan Lehotsky <apl@alum.mit.edu>
-Quality Software Management
-634 West St
-Carlisle, MA 01741
-
-Phone: (978)287-0435
-Fax: (978)287-0436
-
-Services:
- - Support for GNU compilers, including rehost/retarget
- - GNU Binutils rehost/retarget.
- - cgen/sim
- - Perl internals hacking
- - General system software work (SW tools, O/S, device drivers)
- - runtime library (especially floating point)
- - project management
- - software process improvement
-
-Experience: 20+ years of design and implementation of optimizing
- compilers. "Mr. Bliss" at Digital in the 70's and early
- 80's. Experience with Motorola 68k, PowerPC, SPARC, Intel
- x86 and IA64 (Merced), MIPS, NS32K, ADI SHARC DSP, VAX, PDP-11,
- PDP-10. Wrote or maintained compilers for Ada, BLISS, C, C++,
- FORTRAN, Pascal, Modula/2, O/S experience includes Unix (OSF/1,
- SunOS, Solaris, AIX, HP/UX), VAX/VMS, Windows/NT, MacOS.
-
- 8 years experience with GCC internals, including major changes to
- support 8 bit bytes on word-address Analog Devices SHARC DSP and
- general support of PowerPC code generation. Retargetted gcc/binutils
- cross-tools to ASIC used in optical switch. Retargeted gcc to 8 bit "internet toaster"
- micro-computer.
-
-References available
-
-Rates: $110/hr.
- fixed price possible for well-defined deliverables.
-
-Updated: 2001-05-08
-^_
-Reuven M. Lerner
-Lerner Communications Consulting Ltd.
-PO Box 518
-105 Nahar Ha-Yarden Street
-Modi'in 71700
-Israel <reuven@lerner.co.il>
-
-Phone: 08-973-2225 (within Israel)
- +972-8-973-2225 (outside of Israel)
-
-Fax: 08-973-0477 (within Israel)
- +972-8-973-0477 (outside of Israel)
-
-WWW: http://www.lerner.co.il
-
-We specialize in writing custom Web and Internet applications. In
-particular:
-
-- We create database-backed Web sites using Perl, Tcl, Python, Java,
- Apache, mod_perl, MySQL, PostgreSQL, and (when free software doesn't
- suffice) Oracle.
-
-- We offer support and service for system administrators who need help
- with their GNU/Linux systems.
-
-- We offer training in a variety of programming languages (Perl, Tcl,
- Python, and Java) and in GNU/Linux administration.
-
-Consulting rates: $150/hour, or $100/hour for non-profits
-
-Updated: 2001-05-09
-^_
-Richard Levitte (in TeX: Richard Levitte
-Levitte Programming Levitte Programming
-Spannvagen 38, I Spannv\"agen 28, I
-S-168 35 Bromma S-168 35 Bromma
-Sweden Sweden)
-Tel.nr.: +46 (8) 26 52 47 (there is an answering machine)
-Cellular: +46 (708) 26 53 44
-e-mail: <levitte@lp.se>
-
-What I do:
- Primarily I work on GNU software for VMS, both VAX and AXP. I've
- been porting GNU Emacs to VMS since spring 1991. I've ported a
- bunch of other GNU programs as well. I maintain GNU vmslib.
- For further info, see http://www.lp.se/~levitte/prof/resume.html
-
-Programs supported:
- To a varying degree (ranging from extension and porting to
- installation and simple questions) at the time of updating this
- entry:
- - GNU vmslib, emacs, autoconf, zip, diffutils, m4, patch, texinfo,
- C/C++; on both VMS and Unix.
- - Other GNU programs to a small degree; on Unix.
- For further info, look at http://www.lp.se/products/gnu.html
-
-Experience:
- Fluent in TeX/LaTeX and many programming languages.
- Modified key elements in Emacs (e.g., memory and process management)
- to work transparently on VMS. I have very good knowledge in the VMS
- operating system. I'm also knowledged in the a few Unix flavors.
- For further info, see http://www.lp.se/~levitte/prof/resume.html
-
-Your Rate:
- $70-$100/hour (500-800 SEK in sweden), plus expenses. My rates
- are negotiable, depending on how interesting the project is to me.
-
-Updated: 2000-05-28
-^_
-Gordon Matzigkeit <gord@gnu.org>
-Box 325 http://fig.org/~gord/
-Lumsden, Saskatchewan S0G 3C0 Voice: (306) 731-3011
-CANADA
-
-I will gladly help novice and intermediate computer users to install,
-understand, and use free software, whether or not I have prior
-experience with that software. I know my limitations well, and will
-freely give other contacts if I cannot solve your problem myself.
-
-I have over 5 years of experience with several of the major free OSes:
-GNU/Linux (Debian, Red Hat), NetBSD, FreeBSD, and GNU/Hurd. Some of
-my specialties are networking, Emacs, Automake, Autoconf, C, Perl, and
-shell script programming.
-
-My rates are negotiable depending on the task: usually $40-$60
-(Canadian) per hour. Flat rates preferred.
-
-Updated: 2000-12-19
-^_
- NetGuide Scandinavia AB <info@netg.se>
- Tankeg=E5ngen 4
- S-417 56 G=F6teborg, Sweden
- +46 31 50 79 00 voice
- +46 31 50 79 39 fax
- http://www.netg.se
-
-NetGuide Scandinavia AB is a company that does consultant jobs and holds
-courses in the fields of Unix software, TCP/IP networking and Internet
-applications. The people behind NetGuide Scandinavia AB have many years of
-general Unix experience, both as system administrators and as
-programmers, and also extensive experience in maintaining the GNU
-programs; in administration as well as finding and fixing bugs.
-
-Services offered:
-
- - Installation and customizing GNU and other free software. We will
- make free software as easy to install and use as shrink wrapped
- programs.
- - Service and support subscriptions.
- - Warranty protection.
- - Customization and porting.
- - Subscriptions to new versions which we will send monthly or with
- any other interval.
- - Finding, recommending and investigating free software in any
- area of the customers choice.
- - Regular consulting.
- - Support on Internet service software, especially the free
- - Support on GNU/Linux.
- - Freeware based courses in Unix usage, C, C++, or any GNU tools
-
- Rates: For courses, contact us for a quote,
- For consulting, $60-120/hour, depending on contract length.
-
-Updated: 2000-12-13
-^_
-Thien-Thi Nguyen
-ttn@glug.org
-San Diego, CA, USA
-
- - scheme, common lisp, elisp, c, perl, verilog, sh, etc
- - software architecture / implementation / testing
- - hardware design / verification
- - tools flow / environment tweaking / scripting
- - simulators / transactors / stimulus generators
- - glue code / integration
-
-Resume: http://www.glug.org/people/ttn/resume.html
-
-Rate: $100/hr, possibly less
-
-Updated: 2001-05-08
-^_
-David Nicol
-Post office box 45163
-Kansas City, Missouri 64171
-<david@tipjar.com>
-http://www.tipjar.com/dnconsult
-
-Unix, GNU/Linux, Perl installation, C, C++, Lisp, Perl programming.
-
-CGI programming.
-
-Installation, porting.
-
-Specification development, design, implementation, documentation.
-
-Rate: $60/hour, or fixed contract. On-site support available in
-greater Kansas City area.
-
-Updated: 2001-05-08
-^_
-Jonas Oberg (TeX: Jonas \"Oberg
-Skalangsgatan 11B Sk\"al\"angsgatan 11B
-S-723 36 Vasteras S-723 36 V\"aster\.as
-Sweden Sweden)
-
-Phone: +46-21-144831
-E-mail: <jonas@gnu.org>
-
-I offer support for most GNU software including the GNU
-Hurd and also do system administration on GNU systems.
-I can do free software development and have a good
-understanding of automake, autoconf, flex, bison, guile,
-texinfo and much more. Rates around USD$100.
-
-Updated: 2001-05-09
-^_
- Peter Olsen
- P.O. Box 410
- Simpsonville, MD 21150
-
- <p@sigmaxi.org>
-
- What I do: Mathematical modeling and model building using Gnu
- and other Free Software. Scientific and engineering
- analysis, modeling, and programming in FORTRAN, C, LISP,
- and Java. Statistical analysis. Emacs customization.
-
- Examples of my previous work:
- 1. I built the model used predict the
- amount of work required to clean up the Exxon Valdez oil
- spill. Model was completed in ten days, used to allocate
- resources for $2 billion summer cleanup, predictions were
- accurate.
- 2. I built a model applying commercial capital
- investment standards to a Federal Agency budget, helped
- support $250 Million budget increase.
-
- Credo: Engineering is the art of applying a professional
- knowledge of mathematics and the physical sciences to
- improve the quality of life.
-
- Rates: $135/hour (+ travel and expenses) on site,
- $95/hour remote access.
-
- Notes: 1. Visiting Lecturer for Society for Industrial and Applied
- Mathematics: Will speak without fee about Valdez model
- (or other work) to Educational and not-for-profit
- organizations (plus most-economical travel and living
- expenses or travel or living arrangements in kind).
-
- 2. I do not accept offers which pose the danger
- of conflict of interest with any present or former client
- or employer.
-
-
-Updated: 2000-12-13
-^_
- Open Systems Computing AS Open Systems Computing AS
- Kongensgate 9 Rogaland Kunnskapspark, PB 8034
- N-0153 Oslo Prof. Olav Hanssensvei 11
- Norway N-4068 Stavanger
- Norway
-
-Phone: Fax:
- +47 22 20 40 50 +47 22 20 02 85
-
-Web: E-mail:
- http://www.osc.no <gnu-support@osc.no>
-
-Open Systems Computing AS can provide programming support for all
-GNU software -- extending or adopting it to meet customer needs.
-Prices vary with software and project. Hourly fees are in the $80-120
-range. Fixed-priced projects are also available. Phone support is
-available only for customers with support contracts.
-
-Updated: 2001-05-09
-^_
-Francesco Potortì <pot@gnu.org>
-Via S.Stefano, 8
-56123 Pisa, Italy
-Tel. (050)560671
-
-Emacs: installation and maintenance, training and tutorials,
- customisation, extensions, troubleshooting. Author of some of
- the packages in the emacs distribution, has made the porting
- of emacs to the Motorola Delta architecture.
-
-Other: installation and maintenance of GNU software. Experience with
- hylafax, RCS, gperf, etags, smail, indent, diff, gawk, gcc,
- screen. Is the current maintainer of etags.
-
-Rates: 100 E/hour.
- Prefer e-mail communication to telephone.
-
-Qualifications: Electronic Engineering degree, Pisa. Full time
- researcher in CNUCE-CNR.
- Familiar with elisp programming, porting of C programs,
- low-level TCP/IP programming for embedded systems.
-
-Updated: 2001-05-09
-^_
-Quoll Systems Pty Ltd, see http://quoll.com.au
-8 Brown St, Fannie Bay, Darwin, NT, Australia.
-Phone: +61 8 8941 7150 Fax: +61 8 8941 7151 Mobile: 0409 691 399
-e-mail: <pjm@gnu.org> or <info@quoll.com.au>
-
-QS is a small (4 full-time staff + 15 part-timers) which does a variety
-of things in the *IX, technical computing area including:
-
- o Systems development/maintainence (in most programming languages)
- o Training (GNU/Linux, FreeBSD, OpenBSD, Apache, Perl, ...)
- o Consulting in areas such as security, reliability,
-
-Recent projects have included wind turbine generator control, water
-quality databases, remote area satelliate communications, Apache Web
-serving, ISP configurations, *nix training. Staff have provided some
-small contributions to the GNU and BSD projects over the years. We
-also have a bit of expertise in the embedded(inside people) systems
-area in addition to the standard building work.
-
-We can provide local (i.e. southern hemisphere/south east asia) support
-for most of the vast range of free software systems including: GNU/Linux,
-FreeBSD, OpenBSD , OpenSSH, Sendmail, various compilers and networking
-tools. Remote support can also be arranged.
-
-Rates: vary depending on the work, period and staff provided but let
- us pick 100$US/hr as a starting point for senior staff.
-
-Updated: 2000-12-13
-^_
-Red Hat, Inc.
-<embedded-info@redhat.com>
-1325 Chesapeake Terrace
-Sunnyvale, CA 94089 USA
-Toll free: 866-2REDHAT ext. 3005
-+1 408 542 9600 voice
-+1 408 542 9699 fax
-
-GNUPro Tools
-Red Hat provides supported and maintained versions of gcc, g++, gdb
-with GUI, GNU linker and GNU macro assembler. In addition, Red Hat
-provides these GNU software development tools for well over many
-popular host-target configurations. Support includes bug fixes and
-semi-annual releases of the toolset. Each release is regression
-tested and includes substantial improvements and additions to the
-current release. Support is available through Incident support
-packages, or Unlimited support for specific user groups. GNUPro is
-available with standard, custom, and vintage toolchains for both
-native and embedded application development. New target processors
-are being added regularly. Rates for support for standard products
-start at $12,500.
-
-Embedded Linux
-Red Hat offers Red Hat Embedded Linux to companies looking for an open
-source and royalty-free runtime solution. Red Hat Embedded Linux
-currently supports certain ARM, StrongARM, and MIPS families of
-processors. Embedded Linux supports multiple graphics APIs, is
-compliant with POSIX APIs and thread support, can be configured as low
-as 512k memory footprint including TCP/IP and NFS built into the
-kernel, and supports journaling and transparent compression in
-filesystems. Support for new processors is available via Red Hat
-Professional Services.
-
-Updated: 2001-05-16
-^_
-Relogic AB
-Pipersgatan 26
-Box 868
-SE-112 28 Stockholm
-SWEDEN
-
-web http://www.relogic.se
-e-mail info@relogic.se
-phone +46 708 800 000
-fax +46 708 800 580
-
-Relogic provides experienced unix developers that know and love GNU
-products. We can take on anything from single contractor support to
-full scale projects. We know all programming languages and all Unix
-dialects.
-
-Updated: 2000-12-14
-^_
-Phillip Rulon
-122 Blossom Rd.
-Westport, MA 02790
-USA
-508.672.3007
-<pjr@gnu.org>
-
-15 years experience with GNU systems and tools. Available for any free
-software project. Most useful for network design and construction or
-dynamic web development. Very good Debian, Perl, and Apache.
-
-Boston, travel OK.
-$100/hr, flat rate possible.
-
-Updated: 2000-12-18
-^_
-Stanislav Shalunov <shalunov@mccme.ru>
-
-Customizing GNU Emacs (new modes OK). Installing and troubleshooting
-free software. Rate: $60-100/hour. NYC area, telecommuting preferred.
-References available.
-
-Updated: 2000-12-12
-^_
-SRA (Software Research Associates, Inc., Japan) <info-wingnut@sra.co.jp>
-1-1-1, Hirakawa-cho, Chiyoda-ku
-Tokyo 102-8605 Japan
-
-+81-3-3234-5610 voice
-+81-3-3234-5556 fax
-
-http://www.sra.co.jp/wingnut/
-http://www.sra.co.jp/wingnut/chirashi-e.html
-http://www.sra.co.jp/wingnut/service.html
-http://osb.sra.co.jp/WingnutSupport/
-
-We provide GNU software support at a reasonable charge,
-aiming to promote the sound growth of free software and to
-create a new culture in the software world.
-
-News:
-
- We have just started "GCC and CVS membership support service".
- We provide various support menus. Please refer to
- http://osb.sra.co.jp/WingnutSupport/ for details.
-
-What we provide is:
-
- 1. Research and development of GNU software.
- 2. Development, porting, and customization of GNU software itself.
- 3. Helping people who are willing to port and provide GNU software
- to their customers, but are unable to do so due to a lack of resources.
- 4. Providing a variety of educational and training services including
- how to port or to customize.
- 5. The result of the work will become free software covered under the
- GNU licenses (GPL or LGPL), so it will be possible not only to share
- the results with others but to eliminate unnecessary investment also.
- 6. Passing the result to the program package maintainers (if needed).
- 7. Also, making contributions to FSF (Free Software Foundation, Inc.)
- which is the organization that develops and distributes GNU software
- worldwide.
-
- Furthermore, we provide services *native to Japan*, that is,
- services for Japanese-speaking people --- receiving inquiries and
- answering in Japanese.
-
-Rates:
- Determined by estimation.
-
-Updated: 2001-05-21
-^_
-Andre Spiegel <spiegel@gnu.org>
-Dipl.-Inform.
-Berlin, Germany
-
-Maintainer of the GNU Emacs version control package (VC).
-
-I can provide consulting and practical help for the installation and
-administration of GNU/Linux systems, in particular Debian. Also
-knowledgeable on many other Unix derivates, and network technology.
-Installation, porting and customization of GNU software is possible; I
-have programming experience in C, C++, Java, and Emacs Lisp, among
-others. Expertise in version control using RCS or CVS. I also give
-seminars on the above subjects.
-
-Rates: 150 DM/hr (US$ 85)
-
-Updated: 2001-05-09
-^_
-Name: Julian Stacey <jhs@freebsd.org> <jhs@bim.bsn.com> <jhs@muc.de>
-Location: Muenchen, Deutschland (Munich, Germany).
-Qualifications: University Degree, BSc Hons Computers & Cybernetics, 1980.
-Phone: +49.89.268616 Fax: +49.89.2608126 Data: +49.89.26023276
-Resume: http://bim.bsn.com/~jhs/ Older: http://www.freebsd.org/~jhs/
-Time Zone: +01:00
-Rate: DM 200 - DM 160 / Hour.
-Specialisation: Unix (Pref. BSD or Linux), C, X-Windows, FSF tools, firewalls,
- systems engineering, hardware interfacing, real time/embedded,
- custom design & porting. No { Emacs, Cobol, Microsoft }.
-Free Sources: All BSD sources (updated daily), X-Windows, XFree86, FSF.
- Personal sources are here: http://bim.bsn.com/~jhs/src/
- Copy Charge dependent on time+postage+media
-Free GCC-1.40: For Symmetric Computer Systems Model 375 (native cc is broken).
-Languages: I am English. Ich verstehe Deutsch. Je comprend Francais,
- (mais je ecris une response en Anglais). Avoid dialect,
- (use Hoch Deutsch, not Bayerisch); Spell slowly & clearly,
- (umlauts are not recognised); Use single digits: avoid
- inverted German pairs (EG "eight hundred, two and thirty",
- & convoluted French ("four twenties and fifteen").
-Contact: State aprox. days/weeks/months you want professional
- consultancy at full commercial rates, .. OR ..
-Note I am NOT a free help desk !
- Post your questions to an Internet newsgroup, & let those with
- most time, best knowledge, & inclination answer. If you must
- phone me (& I'd much prefer you did Not), Rules apply: First
- ask for a few minutes advice "Free Of Charge". (Do not swamp
- me with your problem & leave me to deduce you are not a paying
- customer). Use some English. Give an email address for
- forwarding later info. Volunteer to phone back later to hear
- subsequent info/solutions I/friends/net come up with. I do not
- pay phone charges to call strangers.
-
-Updated: 2001-05-09
-^_
-Richard M. Stallman <rms@gnu.org>
-545 Tech Sq, Rm 430
-Cambridge, MA 02139
-
-Emacs: anything whatever
-Is anyone interested in courses in using or extending GNU Emacs?
-
-Original inventor of Emacs and main author of GNU Emacs and GCC.
-
-Rates: $6/min or $250/hr.
-
-Updated: 2000-12-13
-^_
-Static Free Software
-4119 Alpine Road
-Portola Valley, Ca 94028
-(650) 851-2927
-http://www.staticfreesoft.com
-
-Static Free Software developed and supports the "Electric VLSI Design
-System". Steven Rubin, the founder of the company and author of
-Electric, is available for enhancements, support, and training.
-
-Please see our web page at www.staticfreesoft.com for more information
-about our products, services, and prices.
-
-Updated: 2000-12-12
-^_
-Swing Digital Ltd. <hello@swingdigital.com>
-15-17 Middle Street
-Brighton
-BN1 1AL
-United Kingdom
-Tel +44 (0) 1273 20 11 66
-Fax +44 (0) 1273 20 11 68
-http://www.swingdigital.com
-
-Swing Digital actively supports the development of the GNU.FREE
-Internet Voting system. Through this support we have gained the
-unique expertise to support, install and run GUN.FREE-based Internet
-votes. We are also available in a consultancy basis to offer advice
-for organisations wishing to run GNU.FREE themselves.
-
-Our consultancy fees start at 900 Euro (550 UK pounds) per day. We
-are also able to securely host Internet Votes, prices on application.
-
-Updated: 2001-07-23
-^_
-Kayvan A. Sylvan <kayvan@sylvan.com>
-Sylvan Associates, Inc.
-879 Lewiston Drive
-San Jose, CA 95136-1517
-Phone: (408) 978-1407
-Fax: (408) 978-0472
-
-I will help you port, install and customize GNU Emacs, GCC, G++, GNUmake,
-bison, and other GNU tools on almost any architecture and operating
-system. Questions answered. GNU C/C++, Java and lisp hacking available.
-
-I will also do ongoing support and periodic upgrades if you get on my GNU
-software subscription list.
-
-Rates: $100-$125/hour, depending on type and quantity of work.
-Substantial discounts for long-term contracts and also for educational or
-non-profit institutions.
-
-Experience: Many different Unix systems (2.9BSD to 4.4BSD, Xenix, SVR3 and
-SVR4, Solaris, Linux, FreeBSD). Systems programming and system
-administration on all brands of Unix.
-
-Kernel hacking experience. Lots of porting experience.
-
-Updated: 2001-05-08
-^_
-Alfredo Tomasini
-<alto555@earthlink.net>, <alfredo.tomasini@c-cube.com>
-
-GNU/Linux Intel desktop/laptop installation, setup, and networking.
-Installation of GNU tools on SunOS and GNU/Linux.
-Sed and Gawk script development.
-
-Languages: English and Italian.
-
-Fee: $50/hour.
-
-Updated: 2000-12-13
-^_
-Leonard H. Tower Jr. <tower@ai.mit.edu> <tower@art.net>
-36 Porter Street
-Somerville, MA 02143-2313
-USA
-+1-617-623-7739
-
-Will work on most GNU, GPLed, and Open Source software.
-Installation, handholding, trouble shooting, extensions, teaching, etc.
-
-Rates: $ 225.00/hour + travel expenses. Fixed fee quotes available.
- Negotiable for non-profits.
-
-Experience: Have hacked on over a dozen architectures in many languages. Have
-system mothered too many varieties of Unixes. Assisted rms with the front end
-of GCC and its back-end support. Installed and worked with many GNU
-programs including GNU Emacs. Resume available on request.
-
-Updated: 2001-05-10
-^_
-Jody Winston
-xprt Computer Consulting, Inc.
-731 Voyager
-Houston, TX, 77062
-(281) 480-UNIX, <josephwinston@mac.com>
-
-We have supported, installed, and used the entire GNU software suite
-for over 10 years on many different Unix platforms. We have written
-character device drivers and proc file systems for custom hardware
-running on GNU/Linux. We have developed extensions for tcl and Python.
-In addition, we have developed a custom X11 server and X input
-extensions. Our consulting rate is $150.00 US dollars per hour,
-negotiable, plus a per diem for out of town work.
-
-Updated: 2001-05-08
-^_
-The Written Word
-Web: http://thewrittenword.com
-Email: info@thewrittenword.com
-Tel: (800) 372-7476
-
-The Written Word provides CDs of pre-compiled Open Source applications
-on popular UNIX variants. Clients can purchase a one-time CD set
-($149/set), or a subscription, which provides four quarterly releases.
-Two types of subscription are available: "media only" ($550/year), or
-"media and updates" ($1459/year). The "media and updates"
-subscription entitles the subscriber, via a web site, to patches,
-security fixes, new releases to existing packages, new packages,
-online documentation, and changelog information, between releases, and
-a central bug tracking system for all packages.
-
-Updated: 2000-11-27
-^_
-
-For a current copy of this directory, or to have yourself listed, ask:
- fsforder@gnu.org
-
-A current version should be available on our web site at http://www.gnu.org.
-
-** Please keep the entries in this file alphabetical **
-
-
-Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
-Free Software Foundation, Inc.
-
- Verbatim copying and distribution of this document are permitted
- worldwide, without royalty, in any medium, provided this notice is
- preserved.
arch-tag: 1253ce32-1cbd-428a-ac36-70ed9e3999fc
diff --git a/etc/TODO b/etc/TODO
index 345e15fafa8..302500884f4 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -14,6 +14,10 @@ to the FSF.
* Small but important fixes needed in existing features:
+** Compute the list of active keymaps *after* reading the first event.
+
+** Avoid using "iff" in doc strings.
+
** mouse-autoselect-window should wait to select the window until
the mouse is put to rest or after a delay or both, so that moving over
a window doesn't select it.
@@ -82,8 +86,6 @@ current buffer.
** Add function to redraw the tool bar.
-** Modify allout.el to use overlays, like outline.el.
-
** M-! M-n should fetch the buffer-file-name as the default.
** Redesign the load-history data structure so it can cope better
@@ -178,6 +180,8 @@ typically due to pilot errors and should thus be in debug-ignored-errors.
** Make byte-compile warn when a doc string is too wide.
+** Make byte-optimization warnings issue accurate line numbers.
+
** A function to check for customizable options that have been
set but not saved, and ask the user whether to save them.
This could go in kill-emacs-query-functions, to remind people
@@ -232,6 +236,24 @@ typically due to pilot errors and should thus be in debug-ignored-errors.
user-selected input method, with the default being the union of
latin-1-prefix and latin-1-postfix.
+** Switch the Windows port to using Unicode keyboard input (maybe).
+ Based on http://msdn2.microsoft.com/en-us/library/ms633586.aspx,
+ this boils down to (1) calling RegisterClassW function to register
+ Emacs windows, and (2) modifying ALL system messages to use Unicode.
+ In particular, WM_CHAR messages, which result from keyboard input,
+ will then come in encoded in UTF-16.
+
+ One advantage of switching to Unicode is to toss encoded-kbd usage,
+ which will solve the problem with binding non-ASCII keys with
+ modifiers.
+
+ Problem: using this on Windows 9x/ME requires installing the
+ Microsoft Layer for Unicode (MSLU), which might not implement all
+ the required functionality that is available built-in on Windows XP
+ and later. We should not make this change if it would pressure
+ users of unauthorized copies of older versions of Windows to
+ downgrade to versions that require activation.
+
** Implement a clean way to use different major modes for
different parts of a buffer. This could be useful in editing
Bison input files, for instance, or other kinds of text
@@ -287,7 +309,7 @@ typically due to pilot errors and should thus be in debug-ignored-errors.
what else ?
** Provide real menus on ttys. The MS-DOS implementation can serve as
- an example how to do part of this.
+ an example how to do part of this; see the XMenu* functions on msdos.c.
** Implement popular parts of the rest of the CL functions as compiler
macros in cl-macs.
@@ -489,9 +511,6 @@ when the body only calls primitives.
** Let LEIM handle the Mode_switch key like XIM does (i.e. a toggle like C-\
but which can also be used as a modifier).
-** Provide the toolbar on ttys. This could map a bit like tmm-menubar
- for the menubar and buttons could look a bit like those used by customize.
-
** Improve Help buffers: Change the face of previously visited links (like
Info, but also with regard to namespace), add a forward button to make the
Help buffer more browser like and gives the value of lisp expressions
@@ -509,7 +528,7 @@ but which can also be used as a modifier).
* Internal changes
-** Cleanup all the GC_ mark bit stuff -- there is no longer any distiction
+** Cleanup all the GC_ mark bit stuff -- there is no longer any distinction
since the mark bit is no longer stored in the Lisp_Object itself.
** Merge ibuffer.el and buff-menu.el.
diff --git a/etc/calccard.ps b/etc/calccard.ps
index fc44461a35a..909f6ba8712 100644
--- a/etc/calccard.ps
+++ b/etc/calccard.ps
@@ -4,15 +4,15 @@
%%Pages: 2
%%PageOrder: Ascend
%%Orientation: Landscape
-%%BoundingBox: 0 0 595 842
+%%BoundingBox: 0 0 612 792
%%DocumentFonts: CMBX10 CMR8 CMTT8 CMBX8 CMR6 CMSY6 CMTI8 CMMI8 CMSY8
%%+ CMMI5 CMR5 CMMI7
-%%DocumentPaperSizes: a4
+%%DocumentPaperSizes: Letter
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -t landscape calccard.dvi
+%DVIPSCommandLine: dvips -t letter -t landscape calccard.dvi
%DVIPSParameters: dpi=600
-%DVIPSSource: TeX output 2007.02.22:0040
+%DVIPSSource: TeX output 2007.03.22:0020
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -2583,7 +2583,7 @@ B66411138280D7BDE5D23A23C8C5598AADF95F62B4AD41DDE7614971C5D281C6
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont
-TeXDict begin 55387786 39139632 1000 600 600 (calccard.dvi)
+TeXDict begin 52099146 40258431 1000 600 600 (calccard.dvi)
@start /Fa 135[38 21[29 74[33 23[{}3 58.1154 /CMMI7 rf
/Fb 204[28 28 28 28 48[{}4 41.511 /CMR5 rf /Fc 145[37
31[45 19[19 58[{}3 41.511 /CMMI5 rf /Fd 143[59 75[71
@@ -2616,7 +2616,9 @@ rf /Fm 141[57 3[76 1[38 5[42 63 76 61 1[67 11[106 2[103
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
-%%PaperSize: A4
+%%BeginPaperSize: Letter
+letter
+%%EndPaperSize
@landscape end
%%EndSetup
%%Page: 1 1
diff --git a/etc/dired-ref.ps b/etc/dired-ref.ps
index cd7c2c9a6ed..fa1a86f27ad 100644
--- a/etc/dired-ref.ps
+++ b/etc/dired-ref.ps
@@ -1,16 +1,16 @@
%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.95b Copyright 2005 Radical Eye Software
+%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software
%%Title: dired-ref.dvi
%%Pages: 1
%%PageOrder: Ascend
-%%BoundingBox: 0 0 595 842
+%%BoundingBox: 0 0 612 792
%%DocumentFonts: CMBX10 CMR8 CMBX8 CMTT8 CMR6 CMSY6
-%%DocumentPaperSizes: a4
+%%DocumentPaperSizes: Letter
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips dired-ref.dvi
+%DVIPSCommandLine: dvips -t letter dired-ref.dvi
%DVIPSParameters: dpi=600
-%DVIPSSource: TeX output 2007.03.19:1902
+%DVIPSSource: TeX output 2007.03.22:2035
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -1723,7 +1723,7 @@ B41CB92E669C8D95250C3FC45A05478B2D6B7E01D6315E222E22509CEF3275E4
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont
-TeXDict begin 39139632 55387786 1000 600 600 (dired-ref.dvi)
+TeXDict begin 40258431 52099146 1000 600 600 (dired-ref.dvi)
@start /Fa 242[61 13[{}1 49.8132 /CMSY6 rf /Fb 134[32
32 43 32 34 24 24 24 1[34 30 34 50 18 32 1[18 34 30 19
27 34 27 34 30 11[45 1[34 44 1[41 1[45 54 3[22 1[47 39
@@ -1748,7 +1748,9 @@ rf end
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
-%%PaperSize: A4
+%%BeginPaperSize: Letter
+letter
+%%EndPaperSize
end
%%EndSetup
%%Page: 1 1
diff --git a/etc/emacs.1 b/etc/emacs.1
index 4ebcd7c632c..7d90d5a4410 100644
--- a/etc/emacs.1
+++ b/etc/emacs.1
@@ -19,8 +19,7 @@
.\" Boston, MA 02110-1301, USA.
.\"
'\" t
-.TH EMACS 1 "2001 November 23"
-.UC 4
+.TH EMACS 1 "2007 April 13" "GNU Emacs 22.1"
.SH NAME
emacs \- GNU project Emacs
.SH SYNOPSIS
@@ -40,11 +39,11 @@ written by the author of the original (PDP-10)
Richard Stallman.
.br
The primary documentation of GNU Emacs is in the GNU Emacs Manual,
-which you can read on line using Info, a subsystem of Emacs. Please
-look there for complete and up-to-date documentation. This man page
-is updated only when someone volunteers to do so; the Emacs
-maintainers' priority goal is to minimize the amount of time this man
-page takes away from other more useful projects.
+which you can read using Info, either from Emacs or as a standalone
+program. Please look there for complete and up-to-date documentation.
+This man page is updated only when someone volunteers to do so; the
+Emacs maintainers' priority goal is to minimize the amount of time
+this man page takes away from other more useful projects.
.br
The user functionality of GNU Emacs encompasses
everything other
@@ -58,7 +57,7 @@ but the facility assumes that you know how to manipulate
.I Emacs
windows and buffers.
CTRL-h or F1 enters the Help facility. Help Tutorial (CTRL-h t)
-requests an interactive tutorial which can teach beginners the fundamentals
+starts an interactive tutorial which can teach beginners the fundamentals
of
.I Emacs
in a few minutes.
@@ -77,7 +76,7 @@ outline editing (Outline), compiling (Compile), running subshells
within
.I Emacs
windows (Shell), running a Lisp read-eval-print loop
-(Lisp-Interaction-Mode), and automated psychotherapy (Doctor).
+(Lisp-Interaction-Mode), automated psychotherapy (Doctor), and much more.
.PP
There is an extensive reference manual, but
users of other Emacses
@@ -201,11 +200,6 @@ Display the
.I Emacs
window in reverse video.
.TP
-.B \-i
-Use the "kitchen sink" bitmap icon when iconifying the
-.I Emacs
-window.
-.TP
.BI \-font " font, " \-fn " font"
Set the
.I Emacs
@@ -262,8 +256,8 @@ with selecting or deselecting the tool bar and menu bar.
.BI \-fg " color"
On color displays, sets the color of the text.
-See the file
-.I /usr/lib/X11/rgb.txt
+Use the command
+.I M-x list-colors-display
for a list of valid
color names.
.TP
@@ -299,7 +293,6 @@ switch when invoking
from an
.IR xterm (1)
window, display is done in that window.
-This must be the first option specified in the command line.
.PP
You can set
.I X
@@ -431,43 +424,31 @@ make and distribute copies of the Emacs manual. The TeX source to the
manual is also included in the Emacs source distribution.
.PP
.SH FILES
-/usr/local/share/info - files for the Info documentation browser
-(a subsystem of Emacs) to refer to. Currently not much of Unix
-is documented here, but the complete text of the Emacs reference
-manual is included in a convenient tree structured form.
-
-/usr/local/share/emacs/$VERSION/src - C source files and object files
+/usr/local/share/info - files for the Info documentation browser.
+The complete text of the Emacs reference manual is included in a
+convenient tree structured form. Also includes the Emacs Lisp
+Reference Manual, useful to anyone wishing to write programs in the
+Emacs Lisp extension language.
/usr/local/share/emacs/$VERSION/lisp - Lisp source files and compiled files
that define most editing commands. Some are preloaded;
others are autoloaded from this directory when used.
-/usr/local/share/emacs/$VERSION/etc - various programs that are used with
-GNU Emacs, and some files of information.
+/usr/local/libexec/emacs/$VERSION/$ARCH - various programs that are
+used with GNU Emacs.
+
+/usr/local/share/emacs/$VERSION/etc - various files of information.
/usr/local/share/emacs/$VERSION/etc/DOC.* - contains the documentation
strings for the Lisp primitives and preloaded Lisp functions
of GNU Emacs. They are stored here to reduce the size of
Emacs proper.
-/usr/local/share/emacs/$VERSION/etc/OTHER.EMACSES discusses GNU Emacs
-vs. other versions of Emacs.
.br
/usr/local/share/emacs/$VERSION/etc/SERVICE lists people offering
various services to assist users of GNU Emacs, including education,
troubleshooting, porting and customization.
-.br
-These files also have information useful to anyone wishing to write
-programs in the Emacs Lisp extension language, which has not yet been fully
-documented.
-
-/usr/local/com/emacs/lock - holds lock files that are made for all
-files being modified in Emacs, to prevent simultaneous modification
-of one file by two users.
-.\" START DELETING HERE IF YOU'RE NOT USING X
-/usr/lib/X11/rgb.txt - list of valid X color names.
-.\" STOP DELETING HERE IF YOU'RE NOT USING X
.PP
.SH BUGS
There is a mailing list, bug-gnu-emacs@gnu.org, for reporting Emacs
@@ -488,9 +469,6 @@ For more information about Emacs mailing lists, see the
file /usr/local/emacs/etc/MAILINGLISTS. Bugs tend actually to be
fixed if they can be isolated, so it is in your interest to report
them in such a way that they can be easily reproduced.
-.PP
-Bugs that I know about are: shell will not work with programs
-running in Raw mode on some Unix versions.
.SH UNRESTRICTIONS
.PP
.I Emacs
@@ -519,11 +497,10 @@ Richard Stallman encourages you to improve and extend
.I Emacs,
and urges that
you contribute your extensions to the GNU library. Eventually GNU
-(Gnu's Not Unix) will be a complete replacement for Berkeley
-Unix.
+(Gnu's Not Unix) will be a complete replacement for Unix.
Everyone will be free to use, copy, study and change the GNU system.
.SH SEE ALSO
-X(1), xlsfonts(1), xterm(1), xrdb(1)
+emacsclient(1), etags(1), X(1), xlsfonts(1), xterm(1), xrdb(1)
.SH AUTHORS
.PP
.I Emacs
@@ -532,7 +509,7 @@ Joachim Martillo and Robert Krawitz added the X features.
.SH COPYING
Copyright
.if t \(co
-.if n (c)
+.if n (C)
1995, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
2006, 2007 Free Software Foundation, Inc.
.PP
diff --git a/etc/emacs.py b/etc/emacs.py
index e38ee70fab5..0d0f2e75ed3 100644
--- a/etc/emacs.py
+++ b/etc/emacs.py
@@ -25,20 +25,56 @@ from sets import Set
__all__ = ["eexecfile", "eargs", "complete", "ehelp", "eimport", "modpath"]
+def format_exception (filename, should_remove_self):
+ type, value, tb = sys.exc_info ()
+ sys.last_type = type
+ sys.last_value = value
+ sys.last_traceback = tb
+ if type is SyntaxError:
+ try: # parse the error message
+ msg, (dummy_filename, lineno, offset, line) = value
+ except:
+ pass # Not the format we expect; leave it alone
+ else:
+ # Stuff in the right filename
+ value = SyntaxError(msg, (filename, lineno, offset, line))
+ sys.last_value = value
+ res = traceback.format_exception_only (type, value)
+ # There are some compilation errors which do not provide traceback so we
+ # should not massage it.
+ if should_remove_self:
+ tblist = traceback.extract_tb (tb)
+ del tblist[:1]
+ res = traceback.format_list (tblist)
+ if res:
+ res.insert(0, "Traceback (most recent call last):\n")
+ res[len(res):] = traceback.format_exception_only (type, value)
+ # traceback.print_exception(type, value, tb)
+ for line in res: print line,
+
def eexecfile (file):
"""Execute FILE and then remove it.
Execute the file within the __main__ namespace.
If we get an exception, print a traceback with the top frame
(ourselves) excluded."""
+ # We cannot use real execfile since it has a bug where the file stays
+ # locked forever (under w32) if SyntaxError occurs.
+ # --- code based on code.py and PyShell.py.
try:
- try: execfile (file, __main__.__dict__)
- except:
- (type, value, tb) = sys.exc_info ()
- # Lose the stack frame for this location.
- tb = tb.tb_next
- if tb is None: # print_exception won't do it
- print "Traceback (most recent call last):"
- traceback.print_exception (type, value, tb)
+ try:
+ source = open (file, "r").read()
+ code = compile (source, file, "exec")
+ # Other exceptions (shouldn't be any...) will (correctly) fall
+ # through to "final".
+ except (OverflowError, SyntaxError, ValueError):
+ # FIXME: When can compile() raise anything else than
+ # SyntaxError ????
+ format_exception (file, False)
+ return
+ try:
+ exec code in __main__.__dict__
+ except:
+ format_exception (file, True)
finally:
os.remove (file)
diff --git a/etc/fr-refcard.ps b/etc/fr-refcard.ps
index f9f5df21053..d1b8b4322ad 100644
--- a/etc/fr-refcard.ps
+++ b/etc/fr-refcard.ps
@@ -1,17 +1,18 @@
%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software
+%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software
%%Title: fr-refcard.dvi
%%Pages: 3
%%PageOrder: Ascend
%%Orientation: Landscape
-%%BoundingBox: 0 0 612 792
-%%DocumentFonts: CMBX10 CMR8 CMTT8 CMBX8 CMTI8 CMMI8 CMR6 CMSY6
+%%BoundingBox: 0 0 595 842
+%%DocumentFonts: CMBX10 CMR8 CMTT8 CMBX8 CMR6 CMSY6 CMTI8 CMMI8
+%%DocumentPaperSizes: a4
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -t landscape fr-refcard.dvi
-%DVIPSParameters: dpi=600, compressed
-%DVIPSSource: TeX output 2007.03.20:1952
-%%BeginProcSet: texc.pro
+%DVIPSCommandLine: dvips -t a4 -t landscape fr-refcard.dvi
+%DVIPSParameters: dpi=600
+%DVIPSSource: TeX output 2007.03.22:0018
+%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
@@ -30,22 +31,10 @@ df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
-1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
-0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
-sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
-rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
-gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
-/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
-/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
-A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
-get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
-ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
-fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
-{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
-chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
-1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
-forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
+/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
+setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
+restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
@@ -69,202 +58,7 @@ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
%%EndProcSet
-%%BeginProcSet: f7b6d320.enc
-% Thomas Esser, Dec 2002. public domain
-%
-% Encoding for:
-% cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10
-% cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8
-% cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10
-% cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10
-%
-/TeXf7b6d320Encoding [
-/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
-/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve
-/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
-/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand
-/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen
-/period /slash /zero /one /two /three /four /five /six /seven /eight
-/nine /colon /semicolon /exclamdown /equal /questiondown /question /at
-/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X
-/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
-/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u
-/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space
-/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef
-/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute
-/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
-/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-] def
-
-%%EndProcSet
-%%BeginProcSet: 09fbbfac.enc
-% Thomas Esser, Dec 2002. public domain
-%
-% Encoding for:
-% cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9
-/TeX09fbbfacEncoding [
-/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi
-/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown
-/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla
-/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam
-/quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft
-/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
-/two /three /four /five /six /seven /eight /nine /colon /semicolon /less
-/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N
-/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright
-/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l
-/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright
-/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi
-/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown
-/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute
-/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
-/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-] def
-
-%%EndProcSet
-%%BeginProcSet: 74afc74c.enc
-% Thomas Esser, Dec 2002. public domain
-%
-% Encoding for:
-% cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10
-%
-/TeX74afc74cEncoding [
-/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
-/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve
-/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
-/suppress /exclam /quotedblright /numbersign /sterling /percent
-/ampersand /quoteright /parenleft /parenright /asterisk /plus /comma
-/hyphen /period /slash /zero /one /two /three /four /five /six /seven
-/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question
-/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W
-/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
-/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u
-/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space
-/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef
-/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute
-/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
-/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-] def
-
-%%EndProcSet
-%%BeginProcSet: aae443f0.enc
-% Thomas Esser, Dec 2002. public domain
-%
-% Encoding for:
-% cmmi10 cmmi12 cmmi5 cmmi6 cmmi7 cmmi8 cmmi9 cmmib10
-%
-/TeXaae443f0Encoding [
-/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
-/alpha /beta /gamma /delta /epsilon1 /zeta /eta /theta /iota /kappa
-/lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi
-/omega /epsilon /theta1 /pi1 /rho1 /sigma1 /phi1 /arrowlefttophalf
-/arrowleftbothalf /arrowrighttophalf /arrowrightbothalf /arrowhookleft
-/arrowhookright /triangleright /triangleleft /zerooldstyle /oneoldstyle
-/twooldstyle /threeoldstyle /fouroldstyle /fiveoldstyle /sixoldstyle
-/sevenoldstyle /eightoldstyle /nineoldstyle /period /comma /less /slash
-/greater /star /partialdiff /A /B /C /D /E /F /G /H /I /J /K /L /M /N
-/O /P /Q /R /S /T /U /V /W /X /Y /Z /flat /natural /sharp /slurbelow
-/slurabove /lscript /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p
-/q /r /s /t /u /v /w /x /y /z /dotlessi /dotlessj /weierstrass /vector
-/tie /psi /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/space /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi
-/.notdef /.notdef /Omega /alpha /beta /gamma /delta /epsilon1 /zeta /eta
-/theta /iota /kappa /lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon
-/phi /chi /psi /tie /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef
-] def
-
-%%EndProcSet
-%%BeginProcSet: bbad153f.enc
-% Thomas Esser, Dec 2002. public domain
-%
-% Encoding for:
-% cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9
-%
-/TeXbbad153fEncoding [
-/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
-/plusminus /minusplus /circleplus /circleminus /circlemultiply
-/circledivide /circledot /circlecopyrt /openbullet /bullet
-/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal
-/greaterequal /precedesequal /followsequal /similar /approxequal
-/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows
-/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast
-/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup
-/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional
-/prime /infinity /element /owner /triangle /triangleinv /negationslash
-/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur
-/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K
-/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection
-/unionmulti /logicaland /logicalor /turnstileleft /turnstileright
-/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright
-/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv
-/backslash /wreathproduct /radical /coproduct /nabla /integral
-/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section
-/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
-/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef
-/circlemultiply /circledivide /circledot /circlecopyrt /openbullet
-/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset
-/lessequal /greaterequal /precedesequal /followsequal /similar
-/approxequal /propersubset /propersuperset /lessmuch /greatermuch
-/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-] def
-
-%%EndProcSet
-%%BeginProcSet: texps.pro
+%%BeginProcSet: texps.pro 0 0
%!
TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
@@ -281,6 +75,256 @@ forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
end
%%EndProcSet
+%%BeginFont: CMMI8
+%!PS-AdobeFont-1.1: CMMI8 1.100
+%%CreationDate: 1996 Jul 23 07:53:54
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 58 /period put
+readonly def
+/FontBBox{-24 -250 1110 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
+5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC
+4391C9DF440285B8FC159D0E98D4258FC57892DDF753642CD526A96ACEDA4120
+788F22B1D09F149794E66DD1AC2C2B3BC6FEC59D626F427CD5AE9C54C7F78F62
+C36F49B3C2E5E62AFB56DCEE87445A12A942C14AE618D1FE1B11A9CF9FAA1F32
+617B598CE5058715EF3051E228F72F651040AD99A741F247C68007E68C84E9D1
+D0BF99AA5D777D88A7D3CED2EA67F4AE61E8BC0495E7DA382E82DDB2B009DD63
+532C74E3BE5EC555A014BCBB6AB31B8286D7712E0E926F8696830672B8214E9B
+5D0740C16ADF0AFD47C4938F373575C6CA91E46D88DE24E682DEC44B57EA8AF8
+4E57D45646073250D82C4B50CBBB0B369932618301F3D4186277103B53B3C9E6
+DB42D6B30115F67B9D078220D5752644930643BDF9FACF684EBE13E39B65055E
+B1BD054C324962025EC79E1D155936FE32D9F2224353F2A46C3558EF216F6BB2
+A304BAF752BEEC36C4440B556AEFECF454BA7CBBA7537BCB10EBC21047333A89
+8936419D857CD9F59EBA20B0A3D9BA4A0D3395336B4CDA4BA6451B6E4D1370FA
+D9BDABB7F271BC1C6C48D9DF1E5A6FAE788F5609DE3C48D47A67097C547D9817
+AD3A7CCE2B771843D69F860DA4059A71494281C0AD8D4BAB3F67BB6739723C04
+AE05F9E35B2B2CB9C7874C114F57A185C8563C0DCCA93F8096384D71A2994748
+A3C7C8B8AF54961A8838AD279441D9A5EB6C1FE26C98BD025F353124DA68A827
+AE2AF8D25CA48031C242AA433EEEBB8ABA4B96821786C38BACB5F58C3D5DA011
+85B385124C2B6534F3CD1866AF92009D93B97F763AA3D16684AA65F029E776DA
+3BFB75EDD46D562E6A284DB4F2FDBF7CDE7C1F3772CD7B6FD372842A0E07E3EF
+68A98AB9278ADC2D35891543F57ED6DCFE8923368D556F1A8B3E35863112F409
+FBE67FC270328312BAA43A9A372C510717B50AAB01A1E02A9982113E2D7C601C
+B0BDA1C0E081E546A97647B74EE5194C57ACD62502B329FED4D966BDEB4028F0
+F082EDD5DFC8387653D620E9E73FDCE3C155347D5929C3A24D6121AEA46BBF3A
+B1C8A4793FB7F21C84400912C27D9AB0845537103553BF8F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMTI8
+%!PS-AdobeFont-1.1: CMTI8 1.0
+%%CreationDate: 1991 Aug 18 21:07:42
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI8) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI8 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 45 /hyphen put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 121 /y put
+readonly def
+/FontBBox{-35 -250 1190 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
+525003F3DAD7933EB57E7DB1462E9D906F6D8F5BF740206C1EC5F36E00AAFF68
+F3EF6F3A2540E5F9564D1C215BC1E7E69C7D04DA5DB1CF195613C9CBF4BAA360
+84AEF3E10E24877FBE36AD731DC97305BDE6DB1F934909FAF60B8E28561FBC57
+0F5B6225425BFDE8F0C71CD4507B82FF803E9A301397975E38A259DE1E1B4FC0
+06BB1DC2D45B987A2268A77CE8DC025CB0D1B39788BBEE149103950650171C94
+5FED1063050A90BD38605BD9365D1C2AE42A7DA3DDB9A263FE10BD487F63D908
+D4F02758BD9D7BE53E6353A25BEFA29E42B50C1D078A8B3A746EEDB381CCE36C
+93FC4BD1A8D1D6ACD0D355E948CFE397B74D243EB51597D251D0BAE6884D70E8
+FEE119462E1939A9783414DF59EEA5FF1529F13869D1FF0A44935C5198CC5DAA
+E1FD2A17AEEBF4974052D06734A409E26C457C06700C55896C90BB33E044A737
+46590D9FA242819B9527FD59818D8829D4EB2D26A34CC05A2CC063E66F2DF193
+8E4F9670014BC243180E45B51DDB05AD1E6A7F619EE1CE09CFC1A4F02CB7270E
+4482FEDF673EDED38EF3173C475C34BFB3F6623C5E942A7797FEDDD0EF1D54E9
+1D90D7076C0A9687E334907C22F2E7C603388D8D626B0E5A62B7543DCBB575D7
+9A6BE1528EC9BC18570001092524E4FBB02F3B29293BCB4F0EF14A2DD9DB22A5
+BB33455799E8120D2A4862424AA4A382972E2845E042506FC8F6E201D11DD0F2
+09FAD8DC29C3E12B66293ACBFB13FA0F26238981F2CD52B47A8CDE6DF5CDFAAF
+3113E1A6366B806EABA9C34E5D41167CD10D7B639021FB4CFDAE28CE72A93F3C
+E8929A4BB6D48613A88F926E0EB1BE5F6E29CA5350841244E1718987727B7245
+E7DDE2528073015C64AEE3BF18734A0C48AFF16A354C14E1A6D9D5DC96C06E02
+3A1FE4AF93E8349C3293F62C3466B67D25A9533C6DAA4514EA201B79042CB220
+43B3B60E13200B4F47011F95BA2EF1D6548218DCDBC1B00CCAE375F91EB60E32
+9F1198D74BC3768101AB5F2E7BDEA9FE5C1379341C604D835B50B671793DD7EF
+605F60048FC9761FE50647C15C2424EABDC9AF4257F915282EFF1CF447EA3F0B
+EE81FB67B04703215DB6AB3E47B7EE06435234C834DF84A3E0F99D753D596305
+85DD514BA3C5ACCD8BF6BC804AEA170A32B2080B694CF7FE994228ECCAD86C4B
+CB8B963E84D46ED86B2D43DADB277A79DD100777CB0F2022C8AC9DA77D500C73
+D6E15540121B6D82457096083526C7E2697F776239E02C3E64D25AFBFB58474E
+E82672F2FBEA78ED5DCA1BB4FCD627BAAB6AB50232EDBE99D6CC51A287F80DCF
+14CC7DE3DCFF47A1DFA130CF7F502193C6C00B1A7A1515FF7374351238158B97
+AA26F0F2773E81CD03F4A398BEFBDCB450F0FA6450FD48B5A69E37B036BE5F85
+0F0B1AAAB2CF3098AEF32B0902398A6A9E1DB5A0C42DD39E3208C4F8BBEC0A98
+35FC84FF5EB2293644F7E6EF28FAF5F6E5205029CCFF7342BC276958EFFD7817
+5D9F367C6FF151B12353BE9DDCF75196F2C8C8C889BB097A3D9D8FF5D77A7184
+D9F3EAC4493E94DC73886AFD7652ADBF562189B0B85FA5AEA4CA44558D70A408
+4A276D6B0BCF6ED2F5E42E97933AEC978D286B3D0A99C6C7AB10AC6D1C36B07D
+EA2F47489D4C2A55A6902C665B7321DD5324C6CE172349E5C6561B5F1CBBFD6E
+B5FBBB914307020B218D68C45BB2E9A0BE81C9E8D5D71BC7851CD2922656337A
+9659E8E0A8F240903FC34DA589EC6D1FE6CF17D238576472C0CD1E0EB21A46B5
+5B9DACB6CA3B094E51386E45C506D55EE3AC95AF333EBD0305084697383F054D
+61680900B82CB80D030270CA9C614A373B0B5B26F8465AE581967C6A336D8C44
+21CED60606DF99F05AFC4C37F53D2D97450B78F1211A2682414780DFF7F6AC6E
+750071385D6DC87B58D3D13E286F70B11A692F4BF57BC828C6AA98C44EFE13F8
+44535F79F5458B03AAE3ECEBF2EFD4AA83316E839EF7EBADEA22C17FF039FA85
+498379D857AE78AC68CCC7D1EB2FE84D465AA452F43EC1AFEFE568E42F13E0BC
+1CDF5C873F8E3952713BD9A472E6FC9CDE8DDD9281EE3554C22A0D591C91D3E4
+0B3162930BB6F0AC229EE1C847EC39BF81DDDE1A0B0EC7BC51A05AE93B3A891A
+3FEB85C68C88AADD29FD39F9DB30FB250D41EBB1124ED0069CDC49B3359D8689
+05DCE2A27EFF35751E51E2C4AEA7DC8B2AF546AB58D6BE81DDD38A3A0833AB62
+E54F54ABC2BB67EF06678D0AA3AB0B240FDFD510404D87A1EA75D5005984B7D0
+DE9EE818E8F99BA9FD646FEAB795E5048E0710CEB0CBD8CA39754BCF7957C646
+532525C2B94D55B1AF534778D653BD50DCECF8DFA4CFD08092AA4DD3D8BB43E9
+6F40CE1B0B25287C46AA961061A0AE3714A465E39694B6E62410ECB1F409F939
+51CE57A12C3CB5B4332A3BDEF4C13917982A0A4527440CAD427F1284E6534D68
+201DA7E10B4DC25CCD025DB0D7E0906C59E235CBF747ED10C3300C1BA42BF434
+1A3C9605F0D568CD938B0DEB5C5E8390309BDFA89EFA3E5F226A24910EAB3791
+0361A08FE539B158072E96BC988AB061736F7DD19DEB61DB5738F2B43682C3E7
+12D709F9E149DA4602201AD24F42BBBEDA49118A93A7F26B703AECDE574441EE
+DAF7C634669C0D907B18BF4EAE198E9F3DD8F743FDBDBB2FF8C6650F17115FFF
+890F0FA7B873022FABADAD05C42B65FE98E870568D2CF828CDFF7C1EEEB5BF4B
+5E695EA05518191A5E8D34EB22091935E0816F8B49AFDCC44811D12D3CA85A57
+8C67D67D400ECEBADAABDC5F7D4E1DE4E330FD1A954B925E2A5B1D0CFF2D80D5
+F668367C28480C7EC3359C781279E8928DB03E274855F7001ABCCE243ED7C259
+67D4705EE2211FEF30D8E82F9EA0838B905A9FB986D1DD200524B74EC4B1AF8B
+A0216BBCE594588D8C28A527BC85306960D73D85D96B652B88462881EA065E0C
+84485D21B22E71768A81037FA08C48EA83AEC7118DA808CC62783E7DFB121A87
+0A8DA5BC6AD5B8C8ABD057D94DCD627E2CF3D6AACC031BCD50FF49C658EABCF1
+E6ED48E7B3A550782F077CCE21EFB7368B0D12EDF21BDA1DCD30D523A8B94729
+1E339B18677721963F0F9FF961CA6B065A881546683125114FB8BFBF996BA299
+9CA4E3F5BD5C0D614E2515BB6AAFD9D16E1F0C0409A524D91DAD55BB9630C810
+B1DF32BC5820AA059559A5095BF09750F21E3AECAD39CDB3277D06B78E2A0A08
+533EF557F6815F1C361B2417D27F7D9EFA5C2DB0B2655938C8E9E1E36C411E70
+7D57FD9EAFA6FD2C4D3A40D2F35C176E0522C6D0969A2DB598553D9C0A1940D2
+F3D8241AB8DB63E8426BF19B093D99DECC9E2633FE5C77EE55951036A7E19CC6
+27A2DDA74A95F870306ACF9945AA4FE9E10F1FBC43830B2D817016290E50F988
+7283F8E409B5BD2048CF8E8465DC3EC57EE47A7BB678093183B453FC60A8CD67
+6CE6E21A859B1EEACCB9E0A3DC1AEF41C74FE0E0245587A5E1F107BBA11C2B86
+91690DB7158BDAA3F2D82A820A36B3684CC11CCC4802C5F8135FAABDDD50091E
+97AE58FE38F088A7348D08F1B9A14BFEB8E97D81066D5C244DBDD9ABECECE72C
+6A91E31A815E2B22652F7813BDF07DEF9CBD0E8BB6E7999511289A0CE3CCF502
+14D9A77E29615479657F8BE9AA3EBAC9DD08A04EE7A160A1C528BD6C2CE79E67
+8913543117C32977841E710DCE7C0DAE68888C8EBEBD9883B9F9AF86B1C5790E
+E520337D14F18FB14686356E4F1248B3E884634480E683DDDFE4B0221AF0825C
+AF3B27DC3156F1E0B5E8D75063A10A81A78698BE4E1A4C2F49D2E530AF1ED966
+8EF252D3CBEACAD0394B9546D51768C195A23A041EC1E3F21AC91C498515EDCF
+5A9977F9D72ADBBED88D5E3FFEC64A087FAB9DBDB268608247B977E435E4CE34
+F0C543383384541FF88669E53446065864769D5D3957C64011D7C93FC147B093
+9FA961A60BDDF97F1A3BF53CC18D306DFCFE04DF980F026428E84140542171F0
+F706A48EDEC416DC58F006761686EBA99598962F6E1BEC8E78AEA474CF0AD890
+A72B9906BC891564ECD5440FE6047DB452171AF35C33C24D8A23E41C112D93B5
+F1B422386DFBE80ABBF7BD43F152F0451B7B0DB2D71B75575CB5256C94F40AE2
+E8DB4CABF990502BD74BE028E14C1972E666932E04E79B743B3357737F31D08B
+EB9755DF6C89C185A7F13DA21A6E6E526A9089B11C6BB1F5247E31685B028F52
+555F98CAB929558BA7BCDEAE76F93E7B00B214543EBEA0FA375B624B4553C133
+16D6E2B846FAA862F9DCBD8FCB2A59EADE462BC8FDF8DC56B888C6C5ECF9BBB2
+4197F4DDA197A9405F639643A4334545A8004F05963A05747B4905A319411086
+9A691FF410F400E7E569CF8EA99102A57A569C223B8CF8A4B285ADAEDB238FB4
+5FCCC3A9EB063BFB1F9263D8B31D8AE580B6B8F1F311388B509E224F7E600A98
+DE394C80D1CC6391D45160FC7CE92B0CD7E74B0844DD0F3562B14833A563FE6A
+E5942191AA6BAE176278E9EC30533FE310F0694745C024929A65E4C411DAAF0C
+F3539203284EDADDC1E27FF0EC2FED41AAD7A3CDCBF2B4177647CAEFA2FDD380
+F6483BB02F87E1B66F1F5F8B23DE0ED2EAF4C540A5D392D6B49B0BDF15DEDC09
+13DF0F14E0E49389A82445230CB58704CDF21591EC4E721119F4786523A16BA1
+95F9288C0704DE543FD38496FC59B15143CA8BA06584BE7E6C9F09DD4F207C09
+F2086D39D48B652E45BD2FC4E2C4BC1FE534CC1109E177C7494E0914CD0E45BB
+C8461B6A6FEAC2A2742CB9B3441DB0340DA91F6C6BA5EF79D6363F68A52F3300
+7CF46E9F6D5A7E33762852D4BA13A1825AFCF10B00CF175EB0059D272DBAB911
+30D027A1C1AAF745E0D69B71FB455C1363AF42B7A00B142D9C8ADDF4CE9801AF
+71C666C1A6773BF48F35076FED27423E1CD18139F3D8B0A3E1AE44C55382FC66
+942021B7C1E3451D679218810F816DA083A644A378D6ADEECCC212169B96FEBF
+744AD8C249E092F87CE696C926ED9E61B728674F39DFB645FF5AA6D742B73CF3
+37536ABDB80094DD7CB7D0FC30B6370F8CF9B145F65F4220FA592AF67383108C
+3739E4FD2E0878AF00DDEE092CCD14B1E749941F342701F07097A4DF0EE5AB3A
+B3D9BFE0B1060ADAFA7D4E3392218E5A7AEFE4CC01827ACD6903C2412270367B
+FC75D8C1E290C5489BF2ADE1B3FA6E11B5BCF37FFBC42D0B3E7A7435D6AA7E8F
+62B96A05C15CF7025EE1B0D9CC2580A11A1F187DE686E6F8ABBE658382B212CC
+D9BAB099DD7ED5EC269FF8CAC8C16E101B7AFE3BF9854884FF0746A1B0423FFC
+468342D5D31CEA0EDD7EB5FEEDDB129B7C55DDA20291A18592079BD75D8DCFA1
+2182EB1AB128A319FFB027164B5F9505754A4B1C8DFAD7FF0C892D97FEA8F506
+C65585142BB9F986886117C7CFC66EE962D1609DC1DD36930A6525D1ED03AA93
+282605FCC5C7C651D657EB8ED0A55EE348994C18FF6AEF1D8D669273B6EE450E
+709E6F60358F225E209AD70E96778E8375F41BCEFF74D46D595C0819C85E60DC
+DB702C6AB7E90FEA2EB9EC299FDA15BE8A807EEBEB1BAFD628BB94B1E28EBD60
+B6DAFF828C2C80821C8ECE963DC90E750EB00E3418BD0858AC6595012D32C308
+DDF9F30191779BFD58D93AF0DFEDE67AD6902FCF8C953CF52188311EDD0D005C
+BD31ADEE0825CE1C25725EA2D6C9E5D8D9034C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
%%BeginFont: CMSY6
%!PS-AdobeFont-1.1: CMSY6 1.0
%%CreationDate: 1991 Aug 15 07:21:34
@@ -301,10 +345,9 @@ end readonly def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
+dup 13 /circlecopyrt put
readonly def
/FontBBox{-4 -948 1329 786}readonly def
-/UniqueID 5000816 def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
@@ -358,10 +401,60 @@ end readonly def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
+dup 18 /grave put
+dup 19 /acute put
+dup 24 /cedilla put
+dup 39 /quoteright put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 73 /I put
+dup 74 /J put
+dup 77 /M put
+dup 78 /N put
+dup 80 /P put
+dup 83 /S put
+dup 85 /U put
+dup 86 /V put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 121 /y put
+dup 122 /z put
readonly def
/FontBBox{-20 -250 1193 750}readonly def
-/UniqueID 5000789 def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
@@ -645,241 +738,6 @@ C7C3F47741E0C8427FA2511D5FDB08F03555E7D4B2CFE592EF027D7FF58199A6
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont
-%%BeginFont: CMMI8
-%!PS-AdobeFont-1.1: CMMI8 1.100
-%%CreationDate: 1996 Jul 23 07:53:54
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.100) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMMI8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMMI8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/FontBBox{-24 -250 1110 750}readonly def
-/UniqueID 5087383 def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
-5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC
-4391C9DF440285B8FC159D0E98D4258FC57892DDF753642CD526A96ACEDA4120
-788F22B1D09F149794E66DD1AC2C2B3BC6FEC59D626F427CD5AE9C54C7F78F62
-C36F49B3C2E5E62AFB56DCEE87445A12A942C14AE618D1FE1B11A9CF9FAA1F32
-617B598CE5058715EF3051E228F72F651040AD99A741F247C68007E68C84E9D1
-D0BF99AA5D777D88A7D3CED2EA67F4AE61E8BC0495E7DA382E82DDB2B009DD63
-532C74E3BE5EC555A014BCBB6AB31B8286D7712E0E926F8696830672B8214E9B
-5D0740C16ADF0AFD47C4938F373575C6CA91E46D88DE24E682DEC44B57EA8AF8
-4E57D45646073250D82C4B50CBBB0B369932618301F3D4186277103B53B3C9E6
-DB42D6B30115F67B9D078220D5752644930643BDF9FACF684EBE13E39B65055E
-B1BD054C324962025EC79E1D155936FE32D9F2224353F2A46C3558EF216F6BB2
-A304BAF752BEEC36C4440B556AEFECF454BA7CBBA7537BCB10EBC21047333A89
-8936419D857CD9F59EBA20B0A3D9BA4A0D3395336B4CDA4BA6451B6E4D1370FA
-D9BDABB7F271BC1C6C48D9DF1E5A6FAE788F5609DE3C48D47A67097C547D9817
-AD3A7CCE2B771843D69F860DA4059A71494281C0AD8D4BAB3F67BB6739723C04
-AE05F9E35B2B2CB9C7874C114F57A185C8563C0DCCA93F8096384D71A2994748
-A3C7C8B8AF54961A8838AD279441D9A5EB6C1FE26C98BD025F353124DA68A827
-AE2AF8D25CA48031C242AA433EEEBB8ABA4B96821786C38BACB5F58C3D5DA011
-85B385124C2B6534F3CD1866AF92009D93B97F763AA3D16684AA65F029E776DA
-3BFB75EDD46D562E6A284DB4F2FDBF7CDE7C1F3772CD7B6FD372842A0E07E3EF
-68A98AB9278ADC2D35891543F57ED6DCFE8923368D556F1A8B3E35863112F409
-FBE67FC270328312BAA43A9A372C510717B50AAB01A1E02A9982113E2D7C601C
-B0BDA1C0E081E546A97647B74EE5194C57ACD62502B329FED4D966BDEB4028F0
-F082EDD5DFC8387653D620E9E73FDCE3C155347D5929C3A24D6121AEA46BBF3A
-B1C8A4793FB7F21C84400912C27D9AB0845537103553BF8F
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont
-%%BeginFont: CMTI8
-%!PS-AdobeFont-1.1: CMTI8 1.0
-%%CreationDate: 1991 Aug 18 21:07:42
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTI8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMTI8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/FontBBox{-35 -250 1190 750}readonly def
-/UniqueID 5000826 def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
-525003F3DAD7933EB57E7DB1462E9D906F6D8F5BF740206C1EC5F36E00AAFF68
-F3EF6F3A2540E5F9564D1C215BC1E7E69C7D04DA5DB1CF195613C9CBF4BAA360
-84AEF3E10E24877FBE36AD731DC97305BDE6DB1F934909FAF60B8E28561FBC57
-0F5B6225425BFDE8F0C71CD4507B82FF803E9A301397975E38A259DE1E1B4FC0
-06BB1DC2D45B987A2268A77CE8DC025CB0D1B39788BBEE149103950650171C94
-5FED1063050A90BD38605BD9365D1C2AE42A7DA3DDB9A263FE10BD487F63D908
-D4F02758BD9D7BE53E6353A25BEFA29E42B50C1D078A8B3A746EEDB381CCE36C
-93FC4BD1A8D1D6ACD0D355E948CFE397B74D243EB51597D251D0BAE6884D70E8
-FEE119462E1939A9783414DF59EEA5FF1529F13869D1FF0A44935C5198CC5DAA
-E1FD2A17AEEBF4974052D06734A409E26C457C06700C55896C90BB33E044A737
-46590D9FA242819B9527FD59818D8829D4EB2D26A34CC05A2CC063E66F2DF193
-8E4F9670014BC243180E45B51DDB05AD1E6A7F619EE1CE09CFC1A4F02CB7270E
-4482FEDF673EDED38EF3173C475C34BFB3F6623C5E942A7797FEDDD0EF1D54E9
-1D90D7076C0A9687E334907C22F2E7C603388D8D626B0E5A62B7543DCBB575D7
-9A6BE1528EC9BC18570001092524E4FBB02F3B29293BCB4F0EF14A2DD9DB22A5
-BB33455799E8120D2A4862424AA4A382972E2845E042506FC8F6E201D11DD0F2
-09FAD8DC29C3E12B66293ACBFB13FA0F26238981F2CD52B47A8CDE6DF5CDFAAF
-3113E1A6366B806EABA9C34E5D41167CD10D7B639021FB4CFDAE28CE72A93F3C
-E8929A4BB6D48613A88F926E0EB1BE5F6E29CA5350841244E1718987727B7245
-E7DDE2528073015C64AEE3BF18734A0C48AFF16A354C14E1A6D9D5DC96C06E02
-3A1FE4AF93E8349C3293F62C3466B67D25A9533C6DAA4514EA201B79042CB220
-43B3B60E13200B4F47011F95BA2EF1D6548218DCDBC1B00CCAE375F91EB60E32
-9F1198D74BC3768101AB5F2E7BDEA9FE5C1379341C604D835B50B671793DD7EF
-605F60048FC9761FE50647C15C2424EABDC9AF4257F915282EFF1CF447EA3F0B
-EE81FB67B04703215DB6AB3E47B7EE06435234C834DF84A3E0F99D753D596305
-85DD514BA3C5ACCD8BF6BC804AEA170A32B2080B694CF7FE994228ECCAD86C4B
-CB8B963E84D46ED86B2D43DADB277A79DD100777CB0F2022C8AC9DA77D500C73
-D6E15540121B6D82457096083526C7E2697F776239E02C3E64D25AFBFB58474E
-E82672F2FBEA78ED5DCA1BB4FCD627BAAB6AB50232EDBE99D6CC51A287F80DCF
-14CC7DE3DCFF47A1DFA130CF7F502193C6C00B1A7A1515FF7374351238158B97
-AA26F0F2773E81CD03F4A398BEFBDCB450F0FA6450FD48B5A69E37B036BE5F85
-0F0B1AAAB2CF3098AEF32B0902398A6A9E1DB5A0C42DD39E3208C4F8BBEC0A98
-35FC84FF5EB2293644F7E6EF28FAF5F6E5205029CCFF7342BC276958EFFD7817
-5D9F367C6FF151B12353BE9DDCF75196F2C8C8C889BB097A3D9D8FF5D77A7184
-D9F3EAC4493E94DC73886AFD7652ADBF562189B0B85FA5AEA4CA44558D70A408
-4A276D6B0BCF6ED2F5E42E97933AEC978D286B3D0A99C6C7AB10AC6D1C36B07D
-EA2F47489D4C2A55A6902C665B7321DD5324C6CE172349E5C6561B5F1CBBFD6E
-B5FBBB914307020B218D68C45BB2E9A0BE81C9E8D5D71BC7851CD2922656337A
-9659E8E0A8F240903FC34DA589EC6D1FE6CF17D238576472C0CD1E0EB21A46B5
-5B9DACB6CA3B094E51386E45C506D55EE3AC95AF333EBD0305084697383F054D
-61680900B82CB80D030270CA9C614A373B0B5B26F8465AE581967C6A336D8C44
-21CED60606DF99F05AFC4C37F53D2D97450B78F1211A2682414780DFF7F6AC6E
-750071385D6DC87B58D3D13E286F70B11A692F4BF57BC828C6AA98C44EFE13F8
-44535F79F5458B03AAE3ECEBF2EFD4AA83316E839EF7EBADEA22C17FF039FA85
-498379D857AE78AC68CCC7D1EB2FE84D465AA452F43EC1AFEFE568E42F13E0BC
-1CDF5C873F8E3952713BD9A472E6FC9CDE8DDD9281EE3554C22A0D591C91D3E4
-0B3162930BB6F0AC229EE1C847EC39BF81DDDE1A0B0EC7BC51A05AE93B3A891A
-3FEB85C68C88AADD29FD39F9DB30FB250D41EBB1124ED0069CDC49B3359D8689
-05DCE2A27EFF35751E51E2C4AEA7DC8B2AF546AB58D6BE81DDD38A3A0833AB62
-E54F54ABC2BB67EF06678D0AA3AB0B240FDFD510404D87A1EA75D5005984B7D0
-DE9EE818E8F99BA9FD646FEAB795E5048E0710CEB0CBD8CA39754BCF7957C646
-532525C2B94D55B1AF534778D653BD50DCECF8DFA4CFD08092AA4DD3D8BB43E9
-6F40CE1B0B25287C46AA961061A0AE3714A465E39694B6E62410ECB1F409F939
-51CE57A12C3CB5B4332A3BDEF4C13917982A0A4527440CAD427F1284E6534D68
-201DA7E10B4DC25CCD025DB0D7E0906C59E235CBF747ED10C3300C1BA42BF434
-1A3C9605F0D568CD938B0DEB5C5E8390309BDFA89EFA3E5F226A24910EAB3791
-0361A08FE539B158072E96BC988AB061736F7DD19DEB61DB5738F2B43682C3E7
-12D709F9E149DA4602201AD24F42BBBEDA49118A93A7F26B703AECDE574441EE
-DAF7C634669C0D907B18BF4EAE198E9F3DD8F743FDBDBB2FF8C6650F17115FFF
-890F0FA7B873022FABADAD05C42B65FE98E870568D2CF828CDFF7C1EEEB5BF4B
-5E695EA05518191A5E8D34EB22091935E0816F8B49AFDCC44811D12D3CA85A57
-8C67D67D400ECEBADAABDC5F7D4E1DE4E330FD1A954B925E2A5B1D0CFF2D80D5
-F668367C28480C7EC3359C781279E8928DB03E274855F7001ABCCE243ED7C259
-67D4705EE2211FEF30D8E82F9EA0838B905A9FB986D1DD200524B74EC4B1AF8B
-A0216BBCE594588D8C28A527BC85306960D73D85D96B652B88462881EA065E0C
-84485D21B22E71768A81037FA08C48EA83AEC7118DA808CC62783E7DFB121A87
-0A8DA5BC6AD5B8C8ABD057D94DCD627E2CF3D6AACC031BCD50FF49C658EABCF1
-E6ED48E7B3A550782F077CCE21EFB7368B0D12EDF21BDA1DCD30D523A8B94729
-1E339B18677721963F0F9FF961CA6B065A881546683125114FB8BFBF996BA299
-9CA4E3F5BD5C0D614E2515BB6AAFD9D16E1F0C0409A524D91DAD55BB9630C810
-B1DF32BC5820AA059559A5095BF09750F21E3AECAD39CDB3277D06B78E2A0A08
-533EF557F6815F1C361B2417D27F7D9EFA5C2DB0B2655938C8E9E1E36C411E70
-7D57FD9EAFA6FD2C4D3A40D2F35C176E0522C6D0969A2DB598553D9C0A1940D2
-F3D8241AB8DB63E8426BF19B093D99DECC9E2633FE5C77EE55951036A7E19CC6
-27A2DDA74A95F870306ACF9945AA4FE9E10F1FBC43830B2D817016290E50F988
-7283F8E409B5BD2048CF8E8465DC3EC57EE47A7BB678093183B453FC60A8CD67
-6CE6E21A859B1EEACCB9E0A3DC1AEF41C74FE0E0245587A5E1F107BBA11C2B86
-91690DB7158BDAA3F2D82A820A36B3684CC11CCC4802C5F8135FAABDDD50091E
-97AE58FE38F088A7348D08F1B9A14BFEB8E97D81066D5C244DBDD9ABECECE72C
-6A91E31A815E2B22652F7813BDF07DEF9CBD0E8BB6E7999511289A0CE3CCF502
-14D9A77E29615479657F8BE9AA3EBAC9DD08A04EE7A160A1C528BD6C2CE79E67
-8913543117C32977841E710DCE7C0DAE68888C8EBEBD9883B9F9AF86B1C5790E
-E520337D14F18FB14686356E4F1248B3E884634480E683DDDFE4B0221AF0825C
-AF3B27DC3156F1E0B5E8D75063A10A81A78698BE4E1A4C2F49D2E530AF1ED966
-8EF252D3CBEACAD0394B9546D51768C195A23A041EC1E3F21AC91C498515EDCF
-5A9977F9D72ADBBED88D5E3FFEC64A087FAB9DBDB268608247B977E435E4CE34
-F0C543383384541FF88669E53446065864769D5D3957C64011D7C93FC147B093
-9FA961A60BDDF97F1A3BF53CC18D306DFCFE04DF980F026428E84140542171F0
-F706A48EDEC416DC58F006761686EBA99598962F6E1BEC8E78AEA474CF0AD890
-A72B9906BC891564ECD5440FE6047DB452171AF35C33C24D8A23E41C112D93B5
-F1B422386DFBE80ABBF7BD43F152F0451B7B0DB2D71B75575CB5256C94F40AE2
-E8DB4CABF990502BD74BE028E14C1972E666932E04E79B743B3357737F31D08B
-EB9755DF6C89C185A7F13DA21A6E6E526A9089B11C6BB1F5247E31685B028F52
-555F98CAB929558BA7BCDEAE76F93E7B00B214543EBEA0FA375B624B4553C133
-16D6E2B846FAA862F9DCBD8FCB2A59EADE462BC8FDF8DC56B888C6C5ECF9BBB2
-4197F4DDA197A9405F639643A4334545A8004F05963A05747B4905A319411086
-9A691FF410F400E7E569CF8EA99102A57A569C223B8CF8A4B285ADAEDB238FB4
-5FCCC3A9EB063BFB1F9263D8B31D8AE580B6B8F1F311388B509E224F7E600A98
-DE394C80D1CC6391D45160FC7CE92B0CD7E74B0844DD0F3562B14833A563FE6A
-E5942191AA6BAE176278E9EC30533FE310F0694745C024929A65E4C411DAAF0C
-F3539203284EDADDC1E27FF0EC2FED41AAD7A3CDCBF2B4177647CAEFA2FDD380
-F6483BB02F87E1B66F1F5F8B23DE0ED2EAF4C540A5D392D6B49B0BDF15DEDC09
-13DF0F14E0E49389A82445230CB58704CDF21591EC4E721119F4786523A16BA1
-95F9288C0704DE543FD38496FC59B15143CA8BA06584BE7E6C9F09DD4F207C09
-F2086D39D48B652E45BD2FC4E2C4BC1FE534CC1109E177C7494E0914CD0E45BB
-C8461B6A6FEAC2A2742CB9B3441DB0340DA91F6C6BA5EF79D6363F68A52F3300
-7CF46E9F6D5A7E33762852D4BA13A1825AFCF10B00CF175EB0059D272DBAB911
-30D027A1C1AAF745E0D69B71FB455C1363AF42B7A00B142D9C8ADDF4CE9801AF
-71C666C1A6773BF48F35076FED27423E1CD18139F3D8B0A3E1AE44C55382FC66
-942021B7C1E3451D679218810F816DA083A644A378D6ADEECCC212169B96FEBF
-744AD8C249E092F87CE696C926ED9E61B728674F39DFB645FF5AA6D742B73CF3
-37536ABDB80094DD7CB7D0FC30B6370F8CF9B145F65F4220FA592AF67383108C
-3739E4FD2E0878AF00DDEE092CCD14B1E749941F342701F07097A4DF0EE5AB3A
-B3D9BFE0B1060ADAFA7D4E3392218E5A7AEFE4CC01827ACD6903C2412270367B
-FC75D8C1E290C5489BF2ADE1B3FA6E11B5BCF37FFBC42D0B3E7A7435D6AA7E8F
-62B96A05C15CF7025EE1B0D9CC2580A11A1F187DE686E6F8ABBE658382B212CC
-D9BAB099DD7ED5EC269FF8CAC8C16E101B7AFE3BF9854884FF0746A1B0423FFC
-468342D5D31CEA0EDD7EB5FEEDDB129B7C55DDA20291A18592079BD75D8DCFA1
-2182EB1AB128A319FFB027164B5F9505754A4B1C8DFAD7FF0C892D97FEA8F506
-C65585142BB9F986886117C7CFC66EE962D1609DC1DD36930A6525D1ED03AA93
-282605FCC5C7C651D657EB8ED0A55EE348994C18FF6AEF1D8D669273B6EE450E
-709E6F60358F225E209AD70E96778E8375F41BCEFF74D46D595C0819C85E60DC
-DB702C6AB7E90FEA2EB9EC299FDA15BE8A807EEBEB1BAFD628BB94B1E28EBD60
-B6DAFF828C2C80821C8ECE963DC90E750EB00E3418BD0858AC6595012D32C308
-DDF9F30191779BFD58D93AF0DFEDE67AD6902FCF8C953CF52188311EDD0D005C
-BD31ADEE0825CE1C25725EA2D6C9E5D8D9034C
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont
%%BeginFont: CMBX8
%!PS-AdobeFont-1.1: CMBX8 1.0
%%CreationDate: 1991 Aug 20 16:36:07
@@ -900,10 +758,34 @@ end readonly def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
+dup 12 /fi put
+dup 18 /grave put
+dup 19 /acute put
+dup 39 /quoteright put
+dup 45 /hyphen put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 120 /x put
readonly def
/FontBBox{-59 -250 1235 750}readonly def
-/UniqueID 5000766 def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
@@ -1079,10 +961,82 @@ end readonly def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
+dup 33 /exclam put
+dup 34 /quotedbl put
+dup 35 /numbersign put
+dup 36 /dollar put
+dup 37 /percent put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 58 /colon put
+dup 60 /less put
+dup 62 /greater put
+dup 63 /question put
+dup 64 /at put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 76 /L put
+dup 77 /M put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 87 /W put
+dup 91 /bracketleft put
+dup 92 /backslash put
+dup 93 /bracketright put
+dup 94 /asciicircum put
+dup 95 /underscore put
+dup 96 /quoteleft put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /braceleft put
+dup 124 /bar put
+dup 125 /braceright put
readonly def
/FontBBox{-5 -232 545 699}readonly def
-/UniqueID 5000830 def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
@@ -1481,10 +1435,54 @@ end readonly def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
+dup 12 /fi put
+dup 18 /grave put
+dup 19 /acute put
+dup 39 /quoteright put
+dup 45 /hyphen put
+dup 65 /A put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 73 /I put
+dup 74 /J put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 94 /circumflex put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 120 /x put
readonly def
/FontBBox{-301 -250 1164 946}readonly def
-/UniqueID 5000768 def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
@@ -1794,10 +1792,69 @@ end readonly def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
+dup 11 /ff put
+dup 12 /fi put
+dup 14 /ffi put
+dup 16 /dotlessi put
+dup 18 /grave put
+dup 19 /acute put
+dup 27 /oe put
+dup 34 /quotedblright put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 49 /one put
+dup 50 /two put
+dup 57 /nine put
+dup 58 /colon put
+dup 65 /A put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 73 /I put
+dup 76 /L put
+dup 78 /N put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 85 /U put
+dup 88 /X put
+dup 92 /quotedblleft put
+dup 94 /circumflex put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /endash put
readonly def
/FontBBox{-36 -250 1070 750}readonly def
-/UniqueID 5000791 def
currentdict end
currentfile eexec
D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
@@ -2130,496 +2187,496 @@ E1A74AC8024558EE17551D308B1593F1E2A4D23FD570BC70E035B232D946FB9C
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont
-TeXDict begin 52099146 40258431 1000 600 600 (fr-refcard.dvi)
-@start /Fa 242[61 13[{ TeXbbad153fEncoding ReEncodeFont }1
-49.8132 /CMSY6 rf /Fb 133[27 32 1[43 32 34 24 24 24 32
+TeXDict begin 55387786 39139632 1000 600 600 (fr-refcard.dvi)
+@start /Fa 197[20 58[{}1 66.4176 /CMMI8 rf /Fb 134[35
+3[38 24 29 30 1[36 36 40 58 18 2[22 1[33 1[33 36 33 33
+36 51[26 45[{}18 66.4176 /CMTI8 rf /Fc 242[61 13[{}1
+49.8132 /CMSY6 rf /Fd 133[27 32 1[43 32 34 24 24 24 32
34 30 34 50 18 32 1[18 34 30 19 27 34 27 34 30 10[45
45 1[34 2[41 1[45 54 2[31 22 1[47 39 41 1[43 42 45 9[30
-30 30 1[30 30 30 30 1[18 21 18 4[18 14[27 4[30 30 18[{
- TeXf7b6d320Encoding ReEncodeFont }52 49.8132 /CMR6 rf
-/Fc 197[20 58[{ TeXaae443f0Encoding ReEncodeFont }1 66.4176
-/CMMI8 rf /Fd 134[35 3[38 24 29 30 1[36 36 40 58 18 2[22
-1[33 1[33 36 33 33 36 51[26 45[{ TeX74afc74cEncoding ReEncodeFont }18
-66.4176 /CMTI8 rf /Fe 135[43 1[43 45 32 32 34 43 45 41
+30 30 1[30 30 30 30 1[18 21 18 4[18 14[27 4[30 30 18[{}52
+49.8132 /CMR6 rf /Fe 135[43 1[43 45 32 32 34 43 45 41
45 68 23 2[23 45 41 25 37 45 36 45 40 51[27 5[23 19[41
-41 5[45 12[{ TeXf7b6d320Encoding ReEncodeFont }26 66.4176
-/CMBX8 rf /Ff 130[35 35 35 35 35 35 35 35 35 35 35 35
+41 5[45 12[{}26 66.4176 /CMBX8 rf /Ff 130[35 35 35 35
35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 3[35 2[35 35 35 1[35 2[35 35 4[35 35 35
-35 35 35 35 35 35 35 1[35 1[35 4[35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 1[35 35 35 35 35 33[{
- TeX09fbbfacEncoding ReEncodeFont }74 66.4176 /CMTT8
-rf /Fg 135[60 1[60 64 45 45 47 60 64 57 64 95 32 2[32
-64 57 35 53 64 51 64 56 2[57 7[87 1[80 64 86 86 78 86
-1[109 69 1[59 43 2[72 75 88 83 1[87 19[38 5[32 19[57
-57 5[64 12[{ TeXf7b6d320Encoding ReEncodeFont }43 99.6264
+35 35 35 35 35 35 35 35 35 35 35 35 35 3[35 2[35 35 35
+1[35 2[35 35 4[35 35 35 35 35 35 35 35 35 35 1[35 1[35
+4[35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 1[35 35
+35 35 35 33[{}74 66.4176 /CMTT8 rf /Fg 135[60 1[60 64
+45 45 47 60 64 57 64 95 32 2[32 64 57 35 53 64 51 64
+56 2[57 7[87 1[80 64 86 86 78 86 1[109 69 1[59 43 2[72
+75 88 83 1[87 19[38 5[32 19[57 57 5[64 12[{}43 99.6264
/CMBX10 rf /Fh 132[35 31 37 37 51 37 39 27 28 28 37 39
35 39 59 20 37 22 20 39 35 22 31 39 31 39 35 2[35 1[35
3[53 2[53 1[39 52 1[48 1[53 1[44 2[25 1[55 46 48 54 51
1[53 6[20 35 6[35 35 2[20 24 20 2[27 27 20 4[35 6[55
-7[35 35 1[20 1[59 1[39 41 11[{ TeXf7b6d320Encoding ReEncodeFont }61
-66.4176 /CMR8 rf /Fi 139[53 54 57 3[76 115 6[42 63 76
-61 1[67 11[106 6[108 6[108 1[90 1[99 47[69 19[{
- TeXf7b6d320Encoding ReEncodeFont }16 119.552 /CMBX10
-rf end
+7[35 35 1[20 1[59 1[39 41 11[{}61 66.4176 /CMR8 rf /Fi
+139[53 54 57 3[76 115 6[42 63 76 61 1[67 11[106 6[108
+6[108 1[90 1[99 47[69 19[{}16 119.552 /CMBX10 rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
+%%BeginPaperSize: a4
+a4
+%%EndPaperSize
@landscape end
%%EndSetup
%%Page: 1 1
TeXDict begin @landscape 1 0 bop -540 -364 a Fi(Carte)46
b(de)g(r)m(\023)-66 b(ef)m(\023)g(erence)46 b(de)g(GNU)f(Emacs)205
--272 y Fh(\(p)r(our)24 b(la)f(v)n(ersion)h(22\))-450
--65 y Fg(Lancemen)m(t)36 b(d'Emacs)-450 85 y Fh(P)n(our)22
+-280 y Fh(\(p)r(our)24 b(la)f(v)n(ersion)h(22\))-450
+-101 y Fg(Lancemen)m(t)36 b(d'Emacs)-450 12 y Fh(P)n(our)22
b(lancer)h(GNU)g(Emacs)f(22,)h(il)f(su\016t)h(de)g(tap)r(er)g(son)f
-(nom)h(:)31 b Ff(emacs)-450 177 y Fh(P)n(our)24 b(c)n(harger)g(un)g
+(nom)h(:)31 b Ff(emacs)-450 106 y Fh(P)n(our)24 b(c)n(harger)g(un)g
(\014c)n(hier)f(\022)-35 b(a)22 b(\023)-33 b(editer,)24
-b(v)n(oir)f(Fic)n(hiers,)g(ci-dessous.)-450 380 y Fg(Quitter)37
-b(Emacs)-450 563 y Fh(susp)r(end)24 b(Emacs)g(\(ou)h(l'iconi\014e)e
-(sous)h(X\))379 b Ff(C-z)-450 669 y Fh(quitter)24 b(d)n(\023)-33
+b(v)n(oir)f(Fic)n(hiers,)g(ci-dessous.)-450 280 y Fg(Quitter)37
+b(Emacs)-450 434 y Fh(susp)r(end)24 b(Emacs)g(\(ou)h(l'iconi\014e)e
+(sous)h(X\))379 b Ff(C-z)-450 540 y Fh(quitter)24 b(d)n(\023)-33
b(e\014nitiv)n(emen)n(t)26 b(Emacs)616 b Ff(C-x)36 b(C-c)-450
-888 y Fg(Fic)m(hiers)-450 1051 y Fe(lire)23 b Fh(un)h(\014c)n(hier)f
-(dans)h(Emacs)694 b Ff(C-x)36 b(C-f)-450 1157 y Fe(sauv)n(egarder)22
+731 y Fg(Fic)m(hiers)-450 866 y Fe(lire)23 b Fh(un)h(\014c)n(hier)f
+(dans)h(Emacs)694 b Ff(C-x)36 b(C-f)-450 972 y Fe(sauv)n(egarder)22
b Fh(un)i(\014c)n(hier)g(sur)f(disque)439 b Ff(C-x)36
-b(C-s)-450 1264 y Fh(sauv)n(egarder)25 b Fe(tous)e Fh(les)g(\014c)n
-(hiers)633 b Ff(C-x)36 b(s)-450 1370 y Fe(ins)n(\023)-39
+b(C-s)-450 1078 y Fh(sauv)n(egarder)25 b Fe(tous)e Fh(les)g(\014c)n
+(hiers)633 b Ff(C-x)36 b(s)-450 1184 y Fe(ins)n(\023)-39
b(erer)23 b Fh(le)h(con)n(ten)n(u)h(d'un)f(autre)g(\014c)n(hier)g(dans)
-g(ce)-379 1476 y(tamp)r(on)1204 b Ff(C-x)36 b(i)-450
-1582 y Fh(remplacer)24 b(ce)g(\014c)n(hier)g(par)f(le)h(\014c)n(hier)f
-(v)n(oulu)312 b Ff(C-x)36 b(C-v)-452 1689 y Fh(\023)-33
+g(ce)-379 1291 y(tamp)r(on)1204 b Ff(C-x)36 b(i)-450
+1397 y Fh(remplacer)24 b(ce)g(\014c)n(hier)g(par)f(le)h(\014c)n(hier)f
+(v)n(oulu)312 b Ff(C-x)36 b(C-v)-452 1503 y Fh(\023)-33
b(ecrire)23 b(le)h(tamp)r(on)g(dans)g(un)g(\014c)n(hier)g(donn)n(\023)
--33 b(e)324 b Ff(C-x)36 b(C-w)-450 1795 y Fh(bascule)24
+-33 b(e)324 b Ff(C-x)36 b(C-w)-450 1609 y Fh(bascule)24
b(du)g(mo)r(de)g(lecture-seule)h(du)f(tamp)r(on)229 b
-Ff(C-x)36 b(C-q)-450 2014 y Fg(Obtenir)h(de)g(l'aide)-450
-2164 y Fh(Le)27 b(syst)n(\022)-33 b(eme)27 b(d'aide)g(est)g(simple.)40
+Ff(C-x)36 b(C-q)-450 1800 y Fg(Obtenir)h(de)g(l'aide)-450
+1913 y Fh(Le)27 b(syst)n(\022)-33 b(eme)27 b(d'aide)g(est)g(simple.)40
b(F)-6 b(aites)27 b Ff(C-h)h Fh(\(ou)f Ff(F1)p Fh(\))h(et)f(suiv)n(ez)g
-(les)-450 2228 y(instructions.)38 b(Si)26 b(v)n(ous)g(d)n(\023)-33
+(les)-450 1982 y(instructions.)38 b(Si)26 b(v)n(ous)g(d)n(\023)-33
b(ebutez,)28 b(faites)e Ff(C-h)36 b(t)26 b Fh(p)r(our)g(suivre)g(un)g
-Fe(di-)-450 2291 y(dacticiel)p Fh(.)-450 2397 y(supprimer)d(la)g(fen)n
-(^)-33 b(etre)24 b(d'aide)682 b Ff(C-x)36 b(1)-450 2503
+Fe(di-)-450 2048 y(dacticiel)p Fh(.)-450 2154 y(supprimer)d(la)g(fen)n
+(^)-33 b(etre)24 b(d'aide)682 b Ff(C-x)36 b(1)-450 2260
y Fh(faire)23 b(d)n(\023)-33 b(e\014ler)24 b(la)f(fen)n(^)-33
-b(etre)24 b(d'aide)645 b Ff(C-M-v)-450 2638 y Fh(aprop)r(os)24
+b(etre)24 b(d'aide)645 b Ff(C-M-v)-450 2395 y Fh(aprop)r(os)24
b(:)35 b(mon)n(trer)24 b(les)f(commandes)i(con)n(tenan)n(t)-379
-2745 y(une)f(certaine)h(c)n(ha)-8 b(^)-27 b(\020ne)847
-b Ff(C-h)36 b(a)-450 2851 y Fh(d)n(\023)-33 b(ecrire)23
+2501 y(une)f(certaine)h(c)n(ha)-8 b(^)-27 b(\020ne)847
+b Ff(C-h)36 b(a)-450 2608 y Fh(d)n(\023)-33 b(ecrire)23
b(la)h(fonction)g(lanc)n(\023)-33 b(ee)25 b(par)f(une)g(touc)n(he)258
-b Ff(C-h)36 b(k)-450 2957 y Fh(d)n(\023)-33 b(ecrire)23
-b(une)i(fonction)898 b Ff(C-h)36 b(f)-450 3063 y Fh(obtenir)24
+b Ff(C-h)36 b(k)-450 2714 y Fh(d)n(\023)-33 b(ecrire)23
+b(une)i(fonction)898 b Ff(C-h)36 b(f)-450 2820 y Fh(obtenir)24
b(des)g(informations)f(sp)n(\023)-33 b(eci\014ques)25
-b(au)f(mo)r(de)124 b Ff(C-h)36 b(m)-450 3283 y Fg(R)n(\023)-55
-b(ecup)n(\023)g(eration)36 b(des)h(erreurs)-450 3465
+b(au)f(mo)r(de)124 b Ff(C-h)36 b(m)-450 3011 y Fg(R)n(\023)-55
+b(ecup)n(\023)g(eration)36 b(des)h(erreurs)-450 3165
y Fe(a)n(v)n(orter)21 b Fh(une)k(commande)f(partiellemen)n(t)h(tap)n
-(\023)-33 b(ee)-379 3571 y(ou)24 b(ex)n(\023)-33 b(ecut)n(\023)g(ee)
-1084 b Ff(C-g)-450 3678 y Fe(r)n(\023)-39 b(ecup)n(\023)g(erer)24
-b Fh(les)f(\014c)n(hier)h(p)r(erdus)g(par)f(un)-379 3784
+(\023)-33 b(ee)-379 3271 y(ou)24 b(ex)n(\023)-33 b(ecut)n(\023)g(ee)
+1084 b Ff(C-g)-450 3377 y Fe(r)n(\023)-39 b(ecup)n(\023)g(erer)24
+b Fh(les)f(\014c)n(hier)h(p)r(erdus)g(par)f(un)-379 3483
y(crash)g(du)h(syst)n(\022)-33 b(eme)669 b Ff(M-x)36
-b(recover-session)-450 3890 y Fe(ann)n(uler)23 b Fh(une)h(mo)r
+b(recover-session)-450 3590 y Fe(ann)n(uler)23 b Fh(une)h(mo)r
(di\014cation)h(non)f(souhait)n(\023)-33 b(ee)16 b Ff(C-x)36
-b(u,)g(C-_)g Fh(ou)g Ff(C-/)-450 3996 y Fh(restaurer)24
+b(u,)g(C-_)g Fh(ou)g Ff(C-/)-450 3696 y Fh(restaurer)24
b(un)f(tamp)r(on)i(a)n(v)n(ec)g(son)f(con)n(ten)n(u)-379
-4103 y(initial)1015 b Ff(M-x)36 b(revert-buffer)-450
-4209 y Fh(r)n(\023)-33 b(ea\016c)n(her)24 b(un)e(\023)-33
-b(ecran)24 b(p)r(erturb)n(\023)-33 b(e)653 b Ff(C-l)1746
--364 y Fg(Rec)m(herc)m(he)36 b(incr)n(\023)-55 b(emen)m(tale)1746
--201 y Fh(rec)n(herc)n(her)24 b(v)n(ers)g(l'a)n(v)l(an)n(t)823
-b Ff(C-s)1746 -95 y Fh(rec)n(herc)n(her)24 b(v)n(ers)g(l'arri)n(\022)
--33 b(ere)787 b Ff(C-r)1746 12 y Fh(rec)n(herc)n(her)24
+3802 y(initial)1015 b Ff(M-x)36 b(revert-buffer)-450
+3908 y Fh(r)n(\023)-33 b(ea\016c)n(her)24 b(un)e(\023)-33
+b(ecran)24 b(p)r(erturb)n(\023)-33 b(e)653 b Ff(C-l)-341
+4131 y Fd(c)-358 4133 y Fc(\015)20 b Fd(2007)j(F)-5 b(ree)21
+b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)27 b(P)n(ermissions)21
+b(au)g(dos.)27 b(v2.3)1746 -364 y Fg(Rec)m(herc)m(he)36
+b(incr)n(\023)-55 b(emen)m(tale)1746 -230 y Fh(rec)n(herc)n(her)24
+b(v)n(ers)g(l'a)n(v)l(an)n(t)823 b Ff(C-s)1746 -123 y
+Fh(rec)n(herc)n(her)24 b(v)n(ers)g(l'arri)n(\022)-33
+b(ere)787 b Ff(C-r)1746 -17 y Fh(rec)n(herc)n(her)24
b(v)n(ers)g(l'a)n(v)l(an)n(t)g(par)g(expression)1817
-118 y(rationnelle)1115 b Ff(C-M-s)1746 224 y Fh(rec)n(herc)n(her)24
+89 y(rationnelle)1115 b Ff(C-M-s)1746 196 y Fh(rec)n(herc)n(her)24
b(v)n(ers)g(l'arri)n(\022)-33 b(ere)22 b(par)h(expression)1817
-330 y(rationnelle)1115 b Ff(C-M-r)1746 465 y Fh(s)n(\023)-33
+302 y(rationnelle)1115 b Ff(C-M-r)1746 437 y Fh(s)n(\023)-33
b(electionner)25 b(la)e(c)n(ha)-8 b(^)-27 b(\020ne)25
b(de)f(rec)n(herc)n(he)h(pr)n(\023)-33 b(ec)n(\023)g(eden)n(te)101
-b Ff(M-p)1746 571 y Fh(s)n(\023)-33 b(electionner)25
+b Ff(M-p)1746 543 y Fh(s)n(\023)-33 b(electionner)25
b(la)e(c)n(ha)-8 b(^)-27 b(\020ne)25 b(de)f(rec)n(herc)n(he)h(suiv)l
-(an)n(te)176 b Ff(M-n)1746 678 y Fh(sortir)23 b(de)h(la)f(rec)n(herc)n
+(an)n(te)176 b Ff(M-n)1746 649 y Fh(sortir)23 b(de)h(la)f(rec)n(herc)n
(he)i(incr)n(\023)-33 b(emen)n(tale)451 b Ff(RET)1746
-784 y Fh(ann)n(uler)24 b(l'e\013et)g(du)g(dernier)f(caract)n(\022)-33
-b(ere)446 b Ff(DEL)1746 890 y Fh(ann)n(uler)24 b(la)f(rec)n(herc)n(he)i
-(en)f(cours)615 b Ff(C-g)1746 1001 y Fh(Refaites)17 b
+755 y Fh(ann)n(uler)24 b(l'e\013et)g(du)g(dernier)f(caract)n(\022)-33
+b(ere)446 b Ff(DEL)1746 862 y Fh(ann)n(uler)24 b(la)f(rec)n(herc)n(he)i
+(en)f(cours)615 b Ff(C-g)1746 972 y Fh(Refaites)17 b
Ff(C-s)g Fh(ou)g Ff(C-r)h Fh(p)r(our)e(r)n(\023)-33 b(ep)n(\023)g(eter)
18 b(la)e(rec)n(herc)n(he)i(dans)f(une)g(direction)1746
-1064 y(quelconque.)67 b(Si)34 b(Emacs)h(est)h(encore)g(en)f(train)g(de)
-g(c)n(herc)n(her,)j Ff(C-g)1746 1128 y Fh(n'ann)n(ule)24
+1038 y(quelconque.)67 b(Si)34 b(Emacs)h(est)h(encore)g(en)f(train)g(de)
+g(c)n(herc)n(her,)j Ff(C-g)1746 1105 y Fh(n'ann)n(ule)24
b(que)h(ce)f(qui)f(n'a)h(pas)e(\023)-33 b(et)n(\023)g(e)25
-b(fait.)1746 1331 y Fg(D)n(\023)-55 b(eplacemen)m(ts)1746
-1489 y Fe(en)n(tit)n(\023)-39 b(e)26 b(sur)i(laquelle)e(se)h(d)n(\023)
+b(fait.)1746 1280 y Fg(D)n(\023)-55 b(eplacemen)m(ts)1746
+1409 y Fe(en)n(tit)n(\023)-39 b(e)26 b(sur)i(laquelle)e(se)h(d)n(\023)
-39 b(eplacer)210 b(en)28 b(arri)n(\022)-39 b(ere)69
-b(en)27 b(a)n(v)-5 b(an)n(t)1746 1553 y Fh(caract)n(\022)-33
-b(ere)992 b Ff(C-b)313 b(C-f)1746 1617 y Fh(mot)1148
-b Ff(M-b)313 b(M-f)1746 1681 y Fh(ligne)1124 b Ff(C-p)313
-b(C-n)1746 1752 y Fh(aller)23 b(au)h(d)n(\023)-33 b(ebut)25
+b(en)27 b(a)n(v)-5 b(an)n(t)1746 1475 y Fh(caract)n(\022)-33
+b(ere)992 b Ff(C-b)313 b(C-f)1746 1531 y Fh(mot)1148
+b Ff(M-b)313 b(M-f)1746 1586 y Fh(ligne)1124 b Ff(C-p)313
+b(C-n)1746 1658 y Fh(aller)23 b(au)h(d)n(\023)-33 b(ebut)25
b(\(ou)f(\022)-35 b(a)24 b(la)g(\014n\))g(de)g(la)f(ligne)105
-b Ff(C-a)313 b(C-e)1746 1816 y Fh(phrase)1069 b Ff(M-a)313
-b(M-e)1746 1879 y Fh(paragraphe)925 b Ff(M-{)313 b(M-})1746
-1943 y Fh(page)1129 b Ff(C-x)36 b([)242 b(C-x)36 b(])1746
-2007 y Fh(s-expression)901 b Ff(C-M-b)243 b(C-M-f)1746
-2071 y Fh(fonction)1021 b Ff(C-M-a)243 b(C-M-e)1746 2134
+b Ff(C-a)313 b(C-e)1746 1727 y Fh(phrase)1069 b Ff(M-a)313
+b(M-e)1746 1793 y Fh(paragraphe)925 b Ff(M-{)313 b(M-})1746
+1858 y Fh(page)1129 b Ff(C-x)36 b([)242 b(C-x)36 b(])1746
+1922 y Fh(s-expression)901 b Ff(C-M-b)243 b(C-M-f)1746
+1988 y Fh(fonction)1021 b Ff(C-M-a)243 b(C-M-e)1746 2044
y Fh(aller)23 b(au)h(d)n(\023)-33 b(ebut)25 b(\(ou)f(\022)-35
b(a)24 b(la)g(\014n\))g(du)g(tamp)r(on)84 b Ff(M-<)313
-b(M->)1746 2257 y Fh(passer)24 b(\022)-35 b(a)23 b(l')n(\023)-33
-b(ecran)24 b(suiv)l(an)n(t)793 b Ff(C-v)1746 2363 y Fh(passer)24
+b(M->)1746 2166 y Fh(passer)24 b(\022)-35 b(a)23 b(l')n(\023)-33
+b(ecran)24 b(suiv)l(an)n(t)793 b Ff(C-v)1746 2273 y Fh(passer)24
b(\022)-35 b(a)23 b(l')n(\023)-33 b(ecran)24 b(pr)n(\023)-33
-b(ec)n(\023)g(eden)n(t)718 b Ff(M-v)1746 2469 y Fh(d)n(\023)-33
+b(ec)n(\023)g(eden)n(t)718 b Ff(M-v)1746 2379 y Fh(d)n(\023)-33
b(e\014ler)24 b(l')n(\023)-33 b(ecran)23 b(v)n(ers)h(la)f(droite)668
-b Ff(C-x)36 b(<)1746 2576 y Fh(d)n(\023)-33 b(e\014ler)24
+b Ff(C-x)36 b(<)1746 2485 y Fh(d)n(\023)-33 b(e\014ler)24
b(l')n(\023)-33 b(ecran)23 b(v)n(ers)h(la)f(gauc)n(he)640
-b Ff(C-x)36 b(>)1746 2682 y Fh(placer)24 b(la)f(ligne)h(couran)n(te)h
+b Ff(C-x)36 b(>)1746 2591 y Fh(placer)24 b(la)f(ligne)h(couran)n(te)h
(au)f(cen)n(tre)h(de)f(l')n(\023)-33 b(ecran)162 b Ff(C-u)36
-b(C-l)1746 2901 y Fg(D)n(\023)-55 b(etruire)36 b(et)i(supprimer)1746
-3059 y Fe(en)n(tit)n(\023)-39 b(e)26 b(\022)-40 b(a)26
+b(C-l)1746 2782 y Fg(D)n(\023)-55 b(etruire)36 b(et)i(supprimer)1746
+2911 y Fe(en)n(tit)n(\023)-39 b(e)26 b(\022)-40 b(a)26
b(supprimer)648 b(en)28 b(arri)n(\022)-39 b(ere)69 b(en)28
-b(a)n(v)-5 b(an)n(t)1746 3123 y Fh(caract)n(\022)-33
+b(a)n(v)-5 b(an)n(t)1746 2981 y Fh(caract)n(\022)-33
b(ere)25 b(\(suppression,)f(pas)g(destruction\))84 b
-Ff(DEL)313 b(C-d)1746 3187 y Fh(mot)1187 b Ff(M-DEL)243
-b(M-d)1746 3250 y Fh(ligne)24 b(\(jusqu'\022)-35 b(a)23
-b(la)h(\014n\))685 b Ff(M-0)37 b(C-k)171 b(C-k)1746 3314
-y Fh(phrase)1108 b Ff(C-x)37 b(DEL)171 b(M-k)1746 3378
+Ff(DEL)313 b(C-d)1746 3045 y Fh(mot)1187 b Ff(M-DEL)243
+b(M-d)1746 3101 y Fh(ligne)24 b(\(jusqu'\022)-35 b(a)23
+b(la)h(\014n\))685 b Ff(M-0)37 b(C-k)171 b(C-k)1746 3170
+y Fh(phrase)1108 b Ff(C-x)37 b(DEL)171 b(M-k)1746 3234
y Fh(s-expression)940 b Ff(M--)37 b(C-M-k)101 b(C-M-k)1746
-3497 y Fh(d)n(\023)-33 b(etruire)24 b(une)g Fe(r)n(\023)-39
-b(egion)890 b Ff(C-w)1746 3603 y Fh(copier)24 b(une)g(r)n(\023)-33
+3353 y Fh(d)n(\023)-33 b(etruire)24 b(une)g Fe(r)n(\023)-39
+b(egion)890 b Ff(C-w)1746 3459 y Fh(copier)24 b(une)g(r)n(\023)-33
b(egion)24 b(dans)g(le)f(kill)g(ring)477 b Ff(M-w)1746
-3709 y Fh(d)n(\023)-33 b(etruire)24 b(jusqu'\022)-35
-b(a)23 b(l'o)r(ccurrence)h(suiv)l(an)n(te)h(de)f Fd(c)l(ar)147
-b Ff(M-z)36 b Fd(c)l(ar)1746 3844 y Fh(r)n(\023)-33 b(ecup)n(\023)g
+3565 y Fh(d)n(\023)-33 b(etruire)24 b(jusqu'\022)-35
+b(a)23 b(l'o)r(ccurrence)h(suiv)l(an)n(te)h(de)f Fb(c)l(ar)147
+b Ff(M-z)36 b Fb(c)l(ar)1746 3700 y Fh(r)n(\023)-33 b(ecup)n(\023)g
(erer)24 b(la)f(derni)n(\022)-33 b(ere)24 b(c)n(hose)h(d)n(\023)-33
-b(etruite)423 b Ff(C-y)1746 3950 y Fh(remplacer)24 b(la)f(derni)n(\022)
+b(etruite)423 b Ff(C-y)1746 3807 y Fh(remplacer)24 b(la)f(derni)n(\022)
-33 b(ere)24 b(r)n(\023)-33 b(ecup)n(\023)g(eration)24
-b(par)g(ce)g(qui)1817 4057 y(a)d(\023)-33 b(et)n(\023)g(e)25
+b(par)g(ce)g(qui)1817 3913 y(a)d(\023)-33 b(et)n(\023)g(e)25
b(d)n(\023)-33 b(etruit)24 b(a)n(v)l(an)n(t)868 b Ff(M-y)3942
--364 y Fg(Marquer)3942 -182 y Fh(placer)24 b(la)f(marque)h(ici)901
-b Ff(C-@)36 b Fh(ou)f Ff(C-SPC)3940 -75 y Fh(\023)-33
+-364 y Fg(Marquer)3942 -210 y Fh(placer)24 b(la)f(marque)h(ici)901
+b Ff(C-@)36 b Fh(ou)f Ff(C-SPC)3940 -104 y Fh(\023)-33
b(ec)n(hanger)25 b(le)f(p)r(oin)n(t)g(et)g(la)g(marque)570
-b Ff(C-x)36 b(C-x)3942 60 y Fh(placer)24 b(la)f(marque)h
-Fd(ar)l(g)30 b Fe(mots)23 b Fh(plus)g(loin)388 b Ff(M-@)3942
-166 y Fh(marquer)23 b(le)h Fe(paragraphe)755 b Ff(M-h)3942
-272 y Fh(marquer)23 b(la)h Fe(page)989 b Ff(C-x)36 b(C-p)3942
-378 y Fh(marquer)23 b(la)h Fe(s-expression)724 b Ff(C-M-@)3942
-485 y Fh(marquer)23 b(la)h Fe(fonction)864 b Ff(C-M-h)3942
-591 y Fh(marquer)23 b(tout)i(le)f Fe(tamp)r(on)730 b
-Ff(C-x)36 b(h)3942 810 y Fg(Remplacemen)m(t)g(in)m(teractif)3942
-993 y Fh(remplacer)24 b(in)n(teractiv)n(emen)n(t)h(une)g(c)n(ha)-8
+b Ff(C-x)36 b(C-x)3942 31 y Fh(placer)24 b(la)f(marque)h
+Fb(ar)l(g)30 b Fe(mots)23 b Fh(plus)g(loin)388 b Ff(M-@)3942
+137 y Fh(marquer)23 b(le)h Fe(paragraphe)755 b Ff(M-h)3942
+243 y Fh(marquer)23 b(la)h Fe(page)989 b Ff(C-x)36 b(C-p)3942
+350 y Fh(marquer)23 b(la)h Fe(s-expression)724 b Ff(C-M-@)3942
+456 y Fh(marquer)23 b(la)h Fe(fonction)864 b Ff(C-M-h)3942
+562 y Fh(marquer)23 b(tout)i(le)f Fe(tamp)r(on)730 b
+Ff(C-x)36 b(h)3942 753 y Fg(Remplacemen)m(t)g(in)m(teractif)3942
+907 y Fh(remplacer)24 b(in)n(teractiv)n(emen)n(t)h(une)g(c)n(ha)-8
b(^)-27 b(\020ne)24 b(de)g(texte)86 b Ff(M-\045)3942
-1099 y Fh(en)24 b(utilisan)n(t)g(les)f(expressions)4013
-1205 y(rationnelles)594 b Ff(M-x)36 b(query-replace-regexp)3942
-1315 y Fh(Les)22 b(r)n(\023)-33 b(ep)r(onses)23 b(admises)f(dans)h(le)f
+1013 y Fh(en)24 b(utilisan)n(t)g(les)f(expressions)4013
+1119 y(rationnelles)594 b Ff(M-x)36 b(query-replace-regexp)3942
+1230 y Fh(Les)22 b(r)n(\023)-33 b(ep)r(onses)23 b(admises)f(dans)h(le)f
(mo)r(de)h(de)g(remplacemen)n(t)h(in)n(teractif)3942
-1379 y(son)n(t)g(:)3942 1485 y Fe(remplacer)f Fh(celle-l\022)-35
+1285 y(son)n(t)g(:)3942 1391 y Fe(remplacer)f Fh(celle-l\022)-35
b(a,)22 b(passer)i(\022)-35 b(a)24 b(la)f(suiv)l(an)n(te)280
-b Ff(SPC)3942 1591 y Fh(remplacer)24 b(celle-l\022)-35
-b(a,)22 b(rester)i(l\022)-35 b(a)679 b Ff(,)3942 1698
+b Ff(SPC)3942 1498 y Fh(remplacer)24 b(celle-l\022)-35
+b(a,)22 b(rester)i(l\022)-35 b(a)679 b Ff(,)3942 1604
y Fe(passer)23 b Fh(\022)-35 b(a)24 b(la)g(suiv)l(an)n(te)g(sans)g
-(remplacer)400 b Ff(DEL)3942 1804 y Fh(remplacer)24 b(toutes)h(les)e
-(corresp)r(ondances)4013 1910 y(suiv)l(an)n(tes)1162
-b Ff(!)3942 2016 y Fe(rev)n(enir)23 b Fh(\022)-35 b(a)24
+(remplacer)400 b Ff(DEL)3942 1710 y Fh(remplacer)24 b(toutes)h(les)e
+(corresp)r(ondances)4013 1816 y(suiv)l(an)n(tes)1162
+b Ff(!)3942 1923 y Fe(rev)n(enir)23 b Fh(\022)-35 b(a)24
b(la)f(corresp)r(ondance)i(pr)n(\023)-33 b(ec)n(\023)g(eden)n(te)279
-b Ff(^)3942 2123 y Fe(sortir)22 b Fh(du)i(remplacemen)n(t)h(in)n
-(teractif)460 b Ff(RET)3942 2229 y Fh(en)n(trer)24 b(dans)g(l')n(\023)
+b Ff(^)3942 2029 y Fe(sortir)22 b Fh(du)i(remplacemen)n(t)h(in)n
+(teractif)460 b Ff(RET)3942 2135 y Fh(en)n(trer)24 b(dans)g(l')n(\023)
-33 b(edition)23 b(r)n(\023)-33 b(ecursiv)n(e)24 b(\()p
-Ff(C-M-c)h Fh(p)r(our)4013 2335 y(sortir\))1247 b Ff(C-r)3942
-2554 y Fg(F)-10 b(en)n(^)-55 b(etres)37 b(m)m(ultiples)3942
-2712 y Fh(Lorsqu'il)25 b(y)i(a)f(deux)i(commandes,)g(la)e(seconde)i
-(est)f(une)g(commande)3942 2776 y(iden)n(tique)e(\022)-35
+Ff(C-M-c)h Fh(p)r(our)4013 2241 y(sortir\))1247 b Ff(C-r)3942
+2432 y Fg(F)-10 b(en)n(^)-55 b(etres)37 b(m)m(ultiples)3942
+2561 y Fh(Lorsqu'il)25 b(y)i(a)f(deux)i(commandes,)g(la)e(seconde)i
+(est)f(une)g(commande)3942 2627 y(iden)n(tique)e(\022)-35
b(a)24 b(la)f(premi)n(\022)-33 b(ere)23 b(p)r(our)h(un)g(cadre)g(au)g
-(lieu)f(d'une)i(fen)n(^)-33 b(etre.)3942 2868 y(supprimer)23
+(lieu)f(d'une)i(fen)n(^)-33 b(etre.)3942 2721 y(supprimer)23
b(toutes)i(les)e(autres)h(fen)n(^)-33 b(etres)117 b Ff(C-x)36
-b(1)212 b(C-x)37 b(5)e(1)3942 2932 y Fh(diviser)23 b(la)g(fen)n(^)-33
+b(1)212 b(C-x)37 b(5)e(1)3942 2787 y Fh(diviser)23 b(la)g(fen)n(^)-33
b(etre)25 b(horizon)n(talemen)n(t)184 b Ff(C-x)36 b(2)212
-b(C-x)37 b(5)e(2)3942 2996 y Fh(supprimer)23 b(cette)i(fen)n(^)-33
+b(C-x)37 b(5)e(2)3942 2843 y Fh(supprimer)23 b(cette)i(fen)n(^)-33
b(etre)499 b Ff(C-x)36 b(0)212 b(C-x)37 b(5)e(0)3942
-3115 y Fh(diviser)23 b(la)g(fen)n(^)-33 b(etre)25 b(v)n(erticalemen)n
-(t)561 b Ff(C-x)36 b(3)3942 3250 y Fh(faire)23 b(d)n(\023)-33
+2962 y Fh(diviser)23 b(la)g(fen)n(^)-33 b(etre)25 b(v)n(erticalemen)n
+(t)561 b Ff(C-x)36 b(3)3942 3096 y Fh(faire)23 b(d)n(\023)-33
b(e\014ler)24 b(l'autre)f(fen)n(^)-33 b(etre)708 b Ff(C-M-v)3942
-3360 y Fh(placer)24 b(le)f(curseur)h(dans)g(une)g(autre)h(fen)n(^)-33
-b(etre)25 b Ff(C-x)36 b(o)212 b(C-x)37 b(5)e(o)3942 3424
+3207 y Fh(placer)24 b(le)f(curseur)h(dans)g(une)g(autre)h(fen)n(^)-33
+b(etre)25 b Ff(C-x)36 b(o)212 b(C-x)37 b(5)e(o)3942 3273
y Fh(s)n(\023)-33 b(electionner)25 b(le)e(tamp)r(on)i(dans)4025
-3488 y(l'autre)f(fen)n(^)-33 b(etre)731 b Ff(C-x)36 b(4)g(b)141
-b(C-x)37 b(5)e(b)3942 3551 y Fh(a\016c)n(her)24 b(le)g(tamp)r(on)g
+3338 y(l'autre)f(fen)n(^)-33 b(etre)731 b Ff(C-x)36 b(4)g(b)141
+b(C-x)37 b(5)e(b)3942 3394 y Fh(a\016c)n(her)24 b(le)g(tamp)r(on)g
(dans)g(l'autre)g(fen)n(^)-33 b(etre)69 b Ff(C-x)36 b(4)g(C-o)71
-b(C-x)37 b(5)e(C-o)3942 3615 y Fh(c)n(harger)24 b(un)g(\014c)n(hier)g
+b(C-x)37 b(5)e(C-o)3942 3460 y Fh(c)n(harger)24 b(un)g(\014c)n(hier)g
(dans)g(l'autre)f(fen)n(^)-33 b(etre)89 b Ff(C-x)36 b(4)g(f)141
-b(C-x)37 b(5)e(f)3942 3679 y Fh(c)n(harger)24 b(un)g(\014c)n(hier)g(en)
-g(lecture)g(seule)4025 3743 y(dans)g(l'autre)g(fen)n(^)-33
+b(C-x)37 b(5)e(f)3942 3525 y Fh(c)n(harger)24 b(un)g(\014c)n(hier)g(en)
+g(lecture)g(seule)4025 3591 y(dans)g(l'autre)g(fen)n(^)-33
b(etre)566 b Ff(C-x)36 b(4)g(r)141 b(C-x)37 b(5)e(r)3942
-3806 y Fh(lancer)24 b(Dired)f(dans)h(l'autre)g(fen)n(^)-33
+3647 y Fh(lancer)24 b(Dired)f(dans)h(l'autre)g(fen)n(^)-33
b(etre)246 b Ff(C-x)36 b(4)g(d)141 b(C-x)37 b(5)e(d)3942
-3870 y Fh(trouv)n(er)24 b(un)g(tag)h(dans)f(l'autre)f(fen)n(^)-33
+3703 y Fh(trouv)n(er)24 b(un)g(tag)h(dans)f(l'autre)f(fen)n(^)-33
b(etre)179 b Ff(C-x)36 b(4)g(.)141 b(C-x)37 b(5)e(.)3942
-3989 y Fh(agrandir)23 b(la)h(fen)n(^)-33 b(etre)941 b
-Ff(C-x)36 b(^)3942 4095 y Fh(rap)r(etisser)23 b(la)h(fen)n(^)-33
-b(etre)903 b Ff(C-x)36 b({)3940 4201 y Fh(\023)-33 b(elargir)23
+3821 y Fh(agrandir)23 b(la)h(fen)n(^)-33 b(etre)941 b
+Ff(C-x)36 b(^)3942 3928 y Fh(rap)r(etisser)23 b(la)h(fen)n(^)-33
+b(etre)903 b Ff(C-x)36 b({)3940 4034 y Fh(\023)-33 b(elargir)23
b(la)g(fen)n(^)-33 b(etre)1004 b Ff(C-x)36 b(})p eop
end
%%Page: 2 2
TeXDict begin @landscape 2 1 bop -450 -364 a Fg(F)-10
-b(ormater)-450 -233 y Fh(inden)n(ter)24 b(la)g Fe(ligne)f
+b(ormater)-450 -268 y Fh(inden)n(ter)24 b(la)g Fe(ligne)f
Fh(couran)n(te)i(\(d)n(\023)-33 b(ep)r(end)25 b(du)f(mo)r(de\))109
-b Ff(TAB)-450 -127 y Fh(inden)n(ter)24 b(la)g Fe(r)n(\023)-39
+b Ff(TAB)-450 -161 y Fh(inden)n(ter)24 b(la)g Fe(r)n(\023)-39
b(egion)22 b Fh(couran)n(te)k(\(d)n(\023)-33 b(ep)r(end)25
-b(du)-379 -21 y(mo)r(de\))1247 b Ff(C-M-\\)-450 86 y
+b(du)-379 -55 y(mo)r(de\))1247 b Ff(C-M-\\)-450 51 y
Fh(inden)n(ter)24 b(la)g Fe(s-expression)g Fh(couran)n(te)h(\(d)n(\023)
--33 b(ep)r(end)-379 192 y(du)24 b(mo)r(de\))1145 b Ff(C-M-q)-450
-298 y Fh(inden)n(ter)24 b(la)g(r)n(\023)-33 b(egion)24
-b(sur)f Fd(ar)l(g)30 b Fh(colonnes)443 b Ff(C-x)36 b(TAB)-450
-425 y Fh(ins)n(\023)-33 b(erer)23 b(un)h(newline)g(apr)n(\022)-33
-b(es)23 b(le)h(p)r(oin)n(t)507 b Ff(C-o)-450 531 y Fh(d)n(\023)-33
+-33 b(ep)r(end)-379 157 y(du)24 b(mo)r(de\))1145 b Ff(C-M-q)-450
+264 y Fh(inden)n(ter)24 b(la)g(r)n(\023)-33 b(egion)24
+b(sur)f Fb(ar)l(g)30 b Fh(colonnes)443 b Ff(C-x)36 b(TAB)-450
+389 y Fh(ins)n(\023)-33 b(erer)23 b(un)h(newline)g(apr)n(\022)-33
+b(es)23 b(le)h(p)r(oin)n(t)507 b Ff(C-o)-450 495 y Fh(d)n(\023)-33
b(eplacer)24 b(le)g(reste)g(de)g(la)f(ligne)h(v)n(ers)g(le)f(bas)326
-b Ff(C-M-o)-450 637 y Fh(supprimer)23 b(les)g(lignes)g(blanc)n(hes)i
+b Ff(C-M-o)-450 601 y Fh(supprimer)23 b(les)g(lignes)g(blanc)n(hes)i
(autour)g(du)e(p)r(oin)n(t)105 b Ff(C-x)36 b(C-o)-450
-744 y Fh(joindre)23 b(la)h(ligne)f(\022)-35 b(a)24 b(la)f(pr)n(\023)-33
+708 y Fh(joindre)23 b(la)h(ligne)f(\022)-35 b(a)24 b(la)f(pr)n(\023)-33
b(ec)n(\023)g(eden)n(te)26 b(\(\022)-35 b(a)25 b(la)e(suiv)l(an)n(te)
--379 850 y(a)n(v)n(ec)h(arg\))1161 b Ff(M-^)-450 956
+-379 814 y(a)n(v)n(ec)h(arg\))1161 b Ff(M-^)-450 920
y Fh(supprimer)23 b(tous)h(les)f(espaces)i(autour)g(du)f(p)r(oin)n(t)
-184 b Ff(M-\\)-450 1062 y Fh(mettre)24 b(exactemen)n(t)j(un)d(espace)h
-(\022)-35 b(a)24 b(l'emplacemen)n(t)-379 1169 y(du)g(p)r(oin)n(t)1178
-b Ff(M-SPC)-450 1295 y Fh(remplir)22 b(le)i(paragraphe)845
-b Ff(M-q)-450 1402 y Fh(placer)24 b(la)f(marge)h(droite)833
-b Ff(C-x)36 b(f)-450 1508 y Fh(d)n(\023)-33 b(e\014nir)24
+184 b Ff(M-\\)-450 1027 y Fh(mettre)24 b(exactemen)n(t)j(un)d(espace)h
+(\022)-35 b(a)24 b(l'emplacemen)n(t)-379 1133 y(du)g(p)r(oin)n(t)1178
+b Ff(M-SPC)-450 1258 y Fh(remplir)22 b(le)i(paragraphe)845
+b Ff(M-q)-450 1364 y Fh(placer)24 b(la)f(marge)h(droite)833
+b Ff(C-x)36 b(f)-450 1471 y Fh(d)n(\023)-33 b(e\014nir)24
b(le)f(pr)n(\023)-33 b(e\014xe)24 b(par)g(lequel)g(commencera)-379
-1614 y(c)n(haque)h(ligne)1060 b Ff(C-x)36 b(.)-450 1741
+1577 y(c)n(haque)h(ligne)1060 b Ff(C-x)36 b(.)-450 1702
y Fh(d)n(\023)-33 b(e\014nir)24 b(la)f(fon)n(te)1061
-b Ff(M-o)-450 1920 y Fg(Mo)s(di\014er)37 b(la)h(casse)-450
-2051 y Fh(mettre)24 b(le)g(mot)g(en)g(ma)t(juscules)634
-b Ff(M-u)-450 2157 y Fh(mettre)24 b(le)g(mot)g(en)g(min)n(uscules)638
-b Ff(M-l)-450 2263 y Fh(mettre)24 b(le)g(mot)g(en)g(capitales)704
-b Ff(M-c)-450 2390 y Fh(mettre)24 b(la)g(r)n(\023)-33
+b Ff(M-o)-450 1845 y Fg(Mo)s(di\014er)37 b(la)h(casse)-450
+1941 y Fh(mettre)24 b(le)g(mot)g(en)g(ma)t(juscules)634
+b Ff(M-u)-450 2048 y Fh(mettre)24 b(le)g(mot)g(en)g(min)n(uscules)638
+b Ff(M-l)-450 2154 y Fh(mettre)24 b(le)g(mot)g(en)g(capitales)704
+b Ff(M-c)-450 2279 y Fh(mettre)24 b(la)g(r)n(\023)-33
b(egion)24 b(en)g(ma)t(juscules)563 b Ff(C-x)36 b(C-u)-450
-2496 y Fh(mettre)24 b(la)g(r)n(\023)-33 b(egion)24 b(en)g(min)n
-(uscules)567 b Ff(C-x)36 b(C-l)-450 2675 y Fg(Le)i(mini-tamp)s(on)-450
-2801 y Fh(Les)24 b(touc)n(hes)h(suiv)l(an)n(tes)g(son)n(t)f
-(utilisables)f(dans)h(le)g(mini-tamp)r(on)f(:)-450 2911
+2386 y Fh(mettre)24 b(la)g(r)n(\023)-33 b(egion)24 b(en)g(min)n
+(uscules)567 b Ff(C-x)36 b(C-l)-450 2529 y Fg(Le)i(mini-tamp)s(on)-450
+2620 y Fh(Les)24 b(touc)n(hes)h(suiv)l(an)n(tes)g(son)n(t)f
+(utilisables)f(dans)h(le)g(mini-tamp)r(on)f(:)-450 2729
y(compl)n(\023)-33 b(eter)24 b(autan)n(t)i(que)e(p)r(ossible)587
-b Ff(TAB)-450 3018 y Fh(compl)n(\023)-33 b(eter)24 b(un)g(mot)963
-b Ff(SPC)-450 3124 y Fh(compl)n(\023)-33 b(eter)24 b(et)h(ex)n(\023)-33
-b(ecuter)848 b Ff(RET)-450 3230 y Fh(mon)n(trer)24 b(les)f(compl)n
+b Ff(TAB)-450 2835 y Fh(compl)n(\023)-33 b(eter)24 b(un)g(mot)963
+b Ff(SPC)-450 2941 y Fh(compl)n(\023)-33 b(eter)24 b(et)h(ex)n(\023)-33
+b(ecuter)848 b Ff(RET)-450 3048 y Fh(mon)n(trer)24 b(les)f(compl)n
(\023)-33 b(etions)25 b(p)r(ossibles)481 b Ff(?)-450
-3336 y Fh(rec)n(herc)n(her)24 b(l'en)n(tr)n(\023)-33
+3154 y Fh(rec)n(herc)n(her)24 b(l'en)n(tr)n(\023)-33
b(ee)24 b(pr)n(\023)-33 b(ec)n(\023)g(eden)n(te)26 b(du)e(mini-tamp)r
-(on)74 b Ff(M-p)-450 3443 y Fh(rec)n(herc)n(her)24 b(l'en)n(tr)n(\023)
+(on)74 b Ff(M-p)-450 3260 y Fh(rec)n(herc)n(her)24 b(l'en)n(tr)n(\023)
-33 b(ee)24 b(suiv)l(an)n(te)h(du)f(mini-tamp)r(on)-379
-3549 y(ou)g(le)f(d)n(\023)-33 b(efaut)1075 b Ff(M-n)-450
-3655 y Fh(rec)n(herc)n(her)24 b(\022)-35 b(a)24 b(reb)r(ours)g(par)f
-(expr.)35 b(rationnelle)-379 3761 y(dans)24 b(l'historique)931
-b Ff(M-r)-450 3868 y Fh(rec)n(herc)n(her)24 b(v)n(ers)g(l'a)n(v)l(an)n
-(t)g(par)g(expr.)35 b(rationnelle)-379 3974 y(dans)24
-b(l'historique)931 b Ff(M-s)-450 4080 y Fh(ann)n(uler)24
-b(la)f(commande)852 b Ff(C-g)-450 4183 y Fh(F)-6 b(aites)39
+3367 y(ou)g(le)f(d)n(\023)-33 b(efaut)1075 b Ff(M-n)-450
+3473 y Fh(rec)n(herc)n(her)24 b(\022)-35 b(a)24 b(reb)r(ours)g(par)f
+(expr.)35 b(rationnelle)-379 3579 y(dans)24 b(l'historique)931
+b Ff(M-r)-450 3685 y Fh(rec)n(herc)n(her)24 b(v)n(ers)g(l'a)n(v)l(an)n
+(t)g(par)g(expr.)35 b(rationnelle)-379 3792 y(dans)24
+b(l'historique)931 b Ff(M-s)-450 3898 y Fh(ann)n(uler)24
+b(la)f(commande)852 b Ff(C-g)-450 3999 y Fh(F)-6 b(aites)39
b Ff(C-x)d(ESC)g(ESC)j Fh(p)r(our)d(\023)-33 b(editer)39
b(et)g(r)n(\023)-33 b(ep)n(\023)g(eter)39 b(la)f(derni)n(\022)-33
-b(ere)38 b(com-)-450 4246 y(mande)33 b(a)n(y)n(an)n(t)g(utilis)n(\023)
+b(ere)38 b(com-)-450 4064 y(mande)33 b(a)n(y)n(an)n(t)g(utilis)n(\023)
-33 b(e)32 b(le)g(minitamp)r(on.)56 b(F)-6 b(aites)32
-b Ff(F10)h Fh(p)r(our)f(activ)n(er)-450 4310 y(la)23
+b Ff(F10)h Fh(p)r(our)f(activ)n(er)-450 4130 y(la)23
b(barre)h(de)g(men)n(u)g(utilisan)n(t)g(le)f(minitamp)r(on.)1656
-364 y Fi(Carte)46 b(de)g(r)m(\023)-66 b(ef)m(\023)g(erence)46
-b(de)g(GNU)f(Emacs)1746 -146 y Fg(T)-10 b(amp)s(ons)1746
-36 y Fh(s)n(\023)-33 b(electionner)25 b(un)f(autre)g(tamp)r(on)604
-b Ff(C-x)36 b(b)1744 143 y Fh(\023)-33 b(en)n(um)n(\023)g(erer)24
+b(de)g(GNU)f(Emacs)1746 -175 y Fg(T)-10 b(amp)s(ons)1746
+-21 y Fh(s)n(\023)-33 b(electionner)25 b(un)f(autre)g(tamp)r(on)604
+b Ff(C-x)36 b(b)1744 85 y Fh(\023)-33 b(en)n(um)n(\023)g(erer)24
b(tous)g(les)f(tamp)r(ons)684 b Ff(C-x)36 b(C-b)1746
-249 y Fh(supprimer)23 b(un)h(tamp)r(on)839 b Ff(C-x)36
-b(k)1746 467 y Fg(T)-10 b(ransp)s(oser)1746 650 y Fh(transp)r(oser)24
+192 y Fh(supprimer)23 b(un)h(tamp)r(on)839 b Ff(C-x)36
+b(k)1746 382 y Fg(T)-10 b(ransp)s(oser)1746 535 y Fh(transp)r(oser)24
b(des)g Fe(caract)n(\022)-39 b(eres)687 b Ff(C-t)1746
-756 y Fh(transp)r(oser)24 b(des)g Fe(mots)872 b Ff(M-t)1746
-862 y Fh(transp)r(oser)24 b(des)g Fe(lignes)844 b Ff(C-x)36
-b(C-t)1746 969 y Fh(transp)r(oser)24 b(des)g Fe(s-expressions)585
-b Ff(C-M-t)1746 1188 y Fg(V)n(\023)-55 b(eri\014er)37
-b(l'orthographe)1746 1370 y Fh(v)n(\023)-33 b(eri\014er)23
+642 y Fh(transp)r(oser)24 b(des)g Fe(mots)872 b Ff(M-t)1746
+748 y Fh(transp)r(oser)24 b(des)g Fe(lignes)844 b Ff(C-x)36
+b(C-t)1746 854 y Fh(transp)r(oser)24 b(des)g Fe(s-expressions)585
+b Ff(C-M-t)1746 1045 y Fg(V)n(\023)-55 b(eri\014er)37
+b(l'orthographe)1746 1199 y Fh(v)n(\023)-33 b(eri\014er)23
b(l'orthographe)i(du)f(mot)g(couran)n(t)359 b Ff(M-$)1746
-1476 y Fh(v)n(\023)-33 b(eri\014er)23 b(l'orthographe)i(de)f(tous)g
-(les)f(mots)1817 1583 y(d'une)h(r)n(\023)-33 b(egion)816
-b Ff(M-x)36 b(ispell-region)1746 1689 y Fh(v)n(\023)-33
+1305 y Fh(v)n(\023)-33 b(eri\014er)23 b(l'orthographe)i(de)f(tous)g
+(les)f(mots)1817 1411 y(d'une)h(r)n(\023)-33 b(egion)816
+b Ff(M-x)36 b(ispell-region)1746 1517 y Fh(v)n(\023)-33
b(eri\014er)23 b(l'orthographe)i(de)f(tout)h(le)e(tamp)r(on)37
-b Ff(M-x)f(ispell-buffer)1746 1907 y Fg(T)-10 b(ags)1746
-2090 y Fh(trouv)n(er)24 b(un)g(tag)h(\(une)f(d)n(\023)-33
-b(e\014nition\))564 b Ff(M-.)1746 2196 y Fh(trouv)n(er)24
+b Ff(M-x)f(ispell-buffer)1746 1707 y Fg(T)-10 b(ags)1746
+1861 y Fh(trouv)n(er)24 b(un)g(tag)h(\(une)f(d)n(\023)-33
+b(e\014nition\))564 b Ff(M-.)1746 1967 y Fh(trouv)n(er)24
b(l'o)r(ccurrence)g(suiv)l(an)n(te)h(du)f(tag)400 b Ff(C-u)36
-b(M-.)1746 2302 y Fh(sp)n(\023)-33 b(eci\014er)24 b(un)g(nouv)n(eau)h
+b(M-.)1746 2074 y Fh(sp)n(\023)-33 b(eci\014er)24 b(un)g(nouv)n(eau)h
(\014c)n(hier)f(de)g(tags)187 b Ff(M-x)36 b(visit-tags-table)1746
-2437 y Fh(rec)n(herc)n(her)24 b(par)g(expr.)35 b(rationnelles)24
-b(dans)1817 2543 y(tous)g(les)f(\014c)n(hiers)h(du)g(tableau)h(de)f
-(tags)131 b Ff(M-x)36 b(tags-search)1746 2650 y Fh(lancer)24
-b(un)g(remplacemen)n(t)h(in)n(teractif)f(sur)1817 2756
+2208 y Fh(rec)n(herc)n(her)24 b(par)g(expr.)35 b(rationnelles)24
+b(dans)1817 2315 y(tous)g(les)f(\014c)n(hiers)h(du)g(tableau)h(de)f
+(tags)131 b Ff(M-x)36 b(tags-search)1746 2421 y Fh(lancer)24
+b(un)g(remplacemen)n(t)h(in)n(teractif)f(sur)1817 2527
y(tous)g(les)f(\014c)n(hiers)652 b Ff(M-x)37 b(tags-query-replace)1746
-2862 y Fh(con)n(tin)n(uer)25 b(la)e(derni)n(\022)-33
+2633 y Fh(con)n(tin)n(uer)25 b(la)e(derni)n(\022)-33
b(ere)24 b(rec)n(herc)n(he)h(de)f(tags)g(ou)g(le)1817
-2969 y(remplacemen)n(t)g(in)n(teractif)710 b Ff(M-,)1746
-3188 y Fg(Shells)1746 3351 y Fh(ex)n(\023)-33 b(ecuter)25
-b(une)g(commande)g(shell)606 b Ff(M-!)1746 3457 y Fh(lancer)24
+2740 y(remplacemen)n(t)g(in)n(teractif)710 b Ff(M-,)1746
+2930 y Fg(Shells)1746 3065 y Fh(ex)n(\023)-33 b(ecuter)25
+b(une)g(commande)g(shell)606 b Ff(M-!)1746 3171 y Fh(lancer)24
b(une)g(commande)h(shell)e(sur)g(la)h(r)n(\023)-33 b(egion)271
-b Ff(M-|)1746 3563 y Fh(\014ltrer)23 b(la)h(r)n(\023)-33
+b Ff(M-|)1746 3277 y Fh(\014ltrer)23 b(la)h(r)n(\023)-33
b(egion)23 b(a)n(v)n(ec)i(une)f(commande)h(shell)246
-b Ff(C-u)36 b(M-|)1746 3670 y Fh(lancer)24 b(un)g(shell)f(dans)h(la)f
+b Ff(C-u)36 b(M-|)1746 3384 y Fh(lancer)24 b(un)g(shell)f(dans)h(la)f
(fen)n(^)-33 b(etre)25 b Ff(*shell*)318 b(M-x)36 b(shell)3942
--364 y Fg(Rectangles)3942 -182 y Fh(copier)24 b(le)f(rectangle)i(dans)f
-(le)g(registre)459 b Ff(C-x)36 b(r)f(r)3942 -75 y Fh(d)n(\023)-33
+-364 y Fg(Rectangles)3942 -210 y Fh(copier)24 b(le)f(rectangle)i(dans)f
+(le)g(registre)459 b Ff(C-x)36 b(r)f(r)3942 -104 y Fh(d)n(\023)-33
b(etruire)24 b(le)f(rectangle)893 b Ff(C-x)36 b(r)f(k)3942
-31 y Fh(r)n(\023)-33 b(ecup)n(\023)g(erer)24 b(le)f(rectangle)850
-b Ff(C-x)36 b(r)f(y)3942 137 y Fh(ouvrir)23 b(le)g(rectangle,)i(en)f(d)
+2 y Fh(r)n(\023)-33 b(ecup)n(\023)g(erer)24 b(le)f(rectangle)850
+b Ff(C-x)36 b(r)f(y)3942 109 y Fh(ouvrir)23 b(le)g(rectangle,)i(en)f(d)
n(\023)-33 b(ecalan)n(t)25 b(le)f(texte)h(\022)-35 b(a)4013
-243 y(droite)1260 b Ff(C-x)36 b(r)f(o)3942 350 y Fh(vider)23
-b(le)h(rectangle)981 b Ff(C-x)36 b(r)f(c)3942 456 y Fh(pr)n(\023)-33
+215 y(droite)1260 b Ff(C-x)36 b(r)f(o)3942 321 y Fh(vider)23
+b(le)h(rectangle)981 b Ff(C-x)36 b(r)f(c)3942 427 y Fh(pr)n(\023)-33
b(e\014xer)24 b(c)n(haque)h(ligne)f(a)n(v)n(ec)h(une)f(c)n(ha)-8
-b(^)-27 b(\020ne)369 b Ff(C-x)36 b(r)f(t)3942 675 y Fg(Abr)n(\023)-55
-b(eviations)3942 838 y Fh(a)t(jouter)24 b(une)g(abr)n(\023)-33
+b(^)-27 b(\020ne)369 b Ff(C-x)36 b(r)f(t)3942 618 y Fg(Abr)n(\023)-55
+b(eviations)3942 752 y Fh(a)t(jouter)24 b(une)g(abr)n(\023)-33
b(eviation)25 b(globale)547 b Ff(C-x)36 b(a)f(g)3942
-945 y Fh(a)t(jouter)24 b(une)g(abr)n(\023)-33 b(eviation)25
+859 y Fh(a)t(jouter)24 b(une)g(abr)n(\023)-33 b(eviation)25
b(lo)r(cale)f(au)g(mo)r(de)300 b Ff(C-x)36 b(a)f(l)3942
-1051 y Fh(a)t(jouter)24 b(une)g(expansion)h(globale)f(p)r(our)g(cette)
-4013 1157 y(abr)n(\023)-33 b(eviation)1094 b Ff(C-x)36
-b(a)f(i)h(g)3942 1263 y Fh(a)t(jouter)24 b(une)g(expansion)h(lo)r(cale)
-f(au)g(mo)r(de)g(p)r(our)4013 1370 y(cette)h(abr)n(\023)-33
-b(eviation)922 b Ff(C-x)36 b(a)f(i)h(l)3942 1476 y Fh(faire)23
-b(une)h(expansion)h(explicite)f(de)g(cette)4013 1582
+965 y Fh(a)t(jouter)24 b(une)g(expansion)h(globale)f(p)r(our)g(cette)
+4013 1071 y(abr)n(\023)-33 b(eviation)1094 b Ff(C-x)36
+b(a)f(i)h(g)3942 1178 y Fh(a)t(jouter)24 b(une)g(expansion)h(lo)r(cale)
+f(au)g(mo)r(de)g(p)r(our)4013 1284 y(cette)h(abr)n(\023)-33
+b(eviation)922 b Ff(C-x)36 b(a)f(i)h(l)3942 1390 y Fh(faire)23
+b(une)h(expansion)h(explicite)f(de)g(cette)4013 1496
y(abr)n(\023)-33 b(eviation)1094 b Ff(C-x)36 b(a)f(e)3942
-1717 y Fh(faire)23 b(une)h(expansion)h(dynamique)g(du)f(mot)4013
-1823 y(pr)n(\023)-33 b(ec)n(\023)g(eden)n(t)1146 b Ff(M-/)3942
-2043 y Fg(Expressions)39 b(rationnelles)3942 2225 y Fh(un)24
+1631 y Fh(faire)23 b(une)h(expansion)h(dynamique)g(du)f(mot)4013
+1737 y(pr)n(\023)-33 b(ec)n(\023)g(eden)n(t)1146 b Ff(M-/)3942
+1928 y Fg(Expressions)39 b(rationnelles)3942 2082 y Fh(un)24
b(unique)g(caract)n(\022)-33 b(ere)25 b(quelconque,)g(sauf)f(une)g
-(\014n)4013 2331 y(de)g(ligne)1201 b Ff(.)70 b Fh(\(p)r(oin)n(t\))3942
-2437 y(z)n(\023)-33 b(ero)24 b(r)n(\023)-33 b(ep)n(\023)g(etition)25
-b(ou)f(plus)816 b Ff(*)3942 2544 y Fh(une)24 b(r)n(\023)-33
+(\014n)4013 2188 y(de)g(ligne)1201 b Ff(.)70 b Fh(\(p)r(oin)n(t\))3942
+2294 y(z)n(\023)-33 b(ero)24 b(r)n(\023)-33 b(ep)n(\023)g(etition)25
+b(ou)f(plus)816 b Ff(*)3942 2401 y Fh(une)24 b(r)n(\023)-33
b(ep)n(\023)g(etition)25 b(ou)f(plus)832 b Ff(+)3942
-2650 y Fh(z)n(\023)-33 b(ero)24 b(ou)g(une)g(r)n(\023)-33
-b(ep)n(\023)g(etition)834 b Ff(?)3942 2756 y Fh(caract)n(\022)-33
+2507 y Fh(z)n(\023)-33 b(ero)24 b(ou)g(une)g(r)n(\023)-33
+b(ep)n(\023)g(etition)834 b Ff(?)3942 2613 y Fh(caract)n(\022)-33
b(ere)25 b(sp)n(\023)-33 b(ecial)24 b(p)r(our)f(quoter)i(l'expression)e
-(ra-)4013 2863 y(tionnelle)h Fd(c)1121 b Ff(\\)p Fd(c)3942
-2969 y Fh(alternativ)n(e)25 b(\(\\ou"\))960 b Ff(\\|)3942
-3075 y Fh(regroup)r(emen)n(t)1089 b Ff(\\\()35 b Fc(:)12
-b(:)f(:)35 b Ff(\\\))3942 3181 y Fh(le)23 b(m)n(^)-33
-b(eme)24 b(texte)i(que)e(dans)g(le)g Fd(n)5 b Fh(i)n(\022)-33
-b(eme)24 b(group)r(e)264 b Ff(\\)p Fd(n)3942 3288 y Fh(limite)23
-b(de)h(mot)1096 b Ff(\\b)3942 3394 y Fh(non)24 b(limite)f(de)h(mot)959
-b Ff(\\B)3942 3504 y Fe(en)n(tit)n(\023)-39 b(e)499 b(d)n(\023)-39
-b(ebut)258 b(\014n)3942 3568 y Fh(ligne)558 b Ff(^)427
-b($)3942 3632 y Fh(mot)582 b Ff(\\<)392 b(\\>)3942 3696
-y Fh(tamp)r(on)467 b Ff(\\`)392 b(\\')3942 3759 y Fe(classe)27
+(ra-)4013 2720 y(tionnelle)h Fb(c)1121 b Ff(\\)p Fb(c)3942
+2826 y Fh(alternativ)n(e)25 b(\(\\ou"\))960 b Ff(\\|)3942
+2932 y Fh(regroup)r(emen)n(t)1089 b Ff(\\\()35 b Fa(:)12
+b(:)f(:)35 b Ff(\\\))3942 3038 y Fh(le)23 b(m)n(^)-33
+b(eme)24 b(texte)i(que)e(dans)g(le)g Fb(n)5 b Fh(i)n(\022)-33
+b(eme)24 b(group)r(e)264 b Ff(\\)p Fb(n)3942 3145 y Fh(limite)23
+b(de)h(mot)1096 b Ff(\\b)3942 3251 y Fh(non)24 b(limite)f(de)h(mot)959
+b Ff(\\B)3942 3361 y Fe(en)n(tit)n(\023)-39 b(e)499 b(d)n(\023)-39
+b(ebut)258 b(\014n)3942 3417 y Fh(ligne)558 b Ff(^)427
+b($)3942 3483 y Fh(mot)582 b Ff(\\<)392 b(\\>)3942 3539
+y Fh(tamp)r(on)467 b Ff(\\`)392 b(\\')3942 3604 y Fe(classe)27
b(de)g(caract)n(\022)-39 b(ere)41 b(corresp)r(ond)70
b(corresp)r(ond)27 b(\022)-40 b(a)26 b(d'autres)3942
-3823 y Fh(ensem)n(ble)e(explicite)147 b Ff([)35 b Fc(:)12
-b(:)f(:)35 b Ff(])239 b([^)36 b Fc(:)12 b(:)f(:)35 b
-Ff(])3942 3887 y Fh(caract)n(\022)-33 b(ere)25 b(de)f(mot)186
-b Ff(\\w)392 b(\\W)3942 3951 y Fh(caract)n(\022)-33 b(ere)25
-b(a)n(v)n(ec)g(la)3984 4014 y(syn)n(taxe)g Fd(c)371 b
-Ff(\\s)p Fd(c)359 b Ff(\\S)p Fd(c)p eop end
+3670 y Fh(ensem)n(ble)e(explicite)147 b Ff([)35 b Fa(:)12
+b(:)f(:)35 b Ff(])239 b([^)36 b Fa(:)12 b(:)f(:)35 b
+Ff(])3942 3736 y Fh(caract)n(\022)-33 b(ere)25 b(de)f(mot)186
+b Ff(\\w)392 b(\\W)3942 3791 y Fh(caract)n(\022)-33 b(ere)25
+b(a)n(v)n(ec)g(la)3984 3847 y(syn)n(taxe)g Fb(c)371 b
+Ff(\\s)p Fb(c)359 b Ff(\\S)p Fb(c)p eop end
%%Page: 3 3
TeXDict begin @landscape 3 2 bop -450 -364 a Fg(Jeux)38
b(de)f(caract)n(\022)-55 b(eres)37 b(in)m(ternationaux)-450
--201 y Fh(indiquer)23 b(la)h(langue)g(principale)631
-b Ff(C-x)36 b(RET)g(l)-450 -95 y Fh(mon)n(trer)24 b(toutes)h(les)e(m)n
+-230 y Fh(indiquer)23 b(la)h(langue)g(principale)631
+b Ff(C-x)36 b(RET)g(l)-450 -123 y Fh(mon)n(trer)24 b(toutes)h(les)e(m)n
(\023)-33 b(etho)r(des)25 b(de)f(saisie)29 b Ff(M-x)36
-b(list-input-methods)-450 12 y Fh(activ)n(er)24 b(ou)g(d)n(\023)-33
+b(list-input-methods)-450 -17 y Fh(activ)n(er)24 b(ou)g(d)n(\023)-33
b(esactiv)n(er)25 b(la)f(m)n(\023)-33 b(etho)r(de)25
-b(de)f(saisie)229 b Ff(C-\\)-450 118 y Fh(c)n(hoisir)23
+b(de)f(saisie)229 b Ff(C-\\)-450 89 y Fh(c)n(hoisir)23
b(le)g(syst)n(\022)-33 b(eme)25 b(de)f(co)r(dage)h(p)r(our)f(la)f(com-)
--379 224 y(mande)h(suiv)l(an)n(te)963 b Ff(C-x)36 b(RET)g(c)-450
-330 y Fh(mon)n(trer)24 b(tous)g(les)f(syst)n(\022)-33
+-379 196 y(mande)h(suiv)l(an)n(te)963 b Ff(C-x)36 b(RET)g(c)-450
+302 y Fh(mon)n(trer)24 b(tous)g(les)f(syst)n(\022)-33
b(emes)25 b(de)f(co)r(dage)64 b Ff(M-x)36 b(list-coding-systems)-450
-437 y Fh(c)n(hoisir)23 b(le)g(syst)n(\022)-33 b(eme)25
+408 y Fh(c)n(hoisir)23 b(le)g(syst)n(\022)-33 b(eme)25
b(de)f(co)r(dage)h(pr)n(\023)-33 b(ef)n(\023)g(er)n(\023)g(e)85
-b Ff(M-x)36 b(prefer-coding-system)-450 656 y Fg(Info)-450
-819 y Fh(en)n(trer)24 b(dans)g(le)f(visualisateur)h(de)g(la)g(do)r
-(cumen)n(ta-)-379 925 y(tion)g(Info)1174 b Ff(C-h)36
-b(i)-450 1031 y Fh(c)n(herc)n(her)24 b(une)h(fonction)f(ou)g(une)h(v)l
-(ariable)e(pr)n(\023)-33 b(ecise)-379 1138 y(dans)24
-b(Info)1154 b Ff(C-h)36 b(S)-450 1248 y Fh(Se)24 b(d)n(\023)-33
-b(eplacer)25 b(dans)f(un)f(n\033ud)i(:)-379 1367 y(une)f(page)h(plus)e
-(bas)891 b Ff(SPC)-379 1473 y Fh(une)24 b(page)h(plus)e(haut)853
-b Ff(DEL)-379 1579 y Fh(d)n(\023)-33 b(ebut)25 b(du)e(n\033ud)967
-b Ff(.)70 b Fh(\(p)r(oin)n(t\))-450 1690 y(P)n(asser)23
-b(de)h(n\033ud)g(en)h(n\033ud)f(:)-379 1796 y(n\033ud)g
-Fe(suiv)-5 b(an)n(t)991 b Ff(n)-379 1902 y Fh(n\033ud)24
+b Ff(M-x)36 b(prefer-coding-system)-450 599 y Fg(Info)-450
+733 y Fh(en)n(trer)24 b(dans)g(le)f(visualisateur)h(de)g(la)g(do)r
+(cumen)n(ta-)-379 839 y(tion)g(Info)1174 b Ff(C-h)36
+b(i)-450 946 y Fh(c)n(herc)n(her)24 b(une)h(fonction)f(ou)g(une)h(v)l
+(ariable)e(pr)n(\023)-33 b(ecise)-379 1052 y(dans)24
+b(Info)1154 b Ff(C-h)36 b(S)-450 1162 y Fh(Se)24 b(d)n(\023)-33
+b(eplacer)25 b(dans)f(un)f(n\033ud)i(:)-379 1281 y(une)f(page)h(plus)e
+(bas)891 b Ff(SPC)-379 1387 y Fh(une)24 b(page)h(plus)e(haut)853
+b Ff(DEL)-379 1494 y Fh(d)n(\023)-33 b(ebut)25 b(du)e(n\033ud)967
+b Ff(.)70 b Fh(\(p)r(oin)n(t\))-450 1604 y(P)n(asser)23
+b(de)h(n\033ud)g(en)h(n\033ud)f(:)-379 1710 y(n\033ud)g
+Fe(suiv)-5 b(an)n(t)991 b Ff(n)-379 1816 y Fh(n\033ud)24
b Fe(pr)n(\023)-39 b(ec)n(\023)g(eden)n(t)898 b Ff(p)-379
-2008 y Fh(aller)22 b Fe(plus)i(haut)953 b Ff(u)-379 2114
+1922 y Fh(aller)22 b Fe(plus)i(haut)953 b Ff(u)-379 2029
y Fh(c)n(hoisir)23 b(un)g(sujet)h(de)g(men)n(u)h(par)e(son)h(nom)277
-b Ff(m)-379 2221 y Fh(c)n(hoisir)23 b(le)g Fd(n)5 b Fh(i)n(\022)-33
-b(eme)24 b(sujet)g(de)g(men)n(u)g(par)g(son)-379 2327
-y(n)n(um)n(\023)-33 b(ero)23 b(\(1{9\))1029 b Fd(n)-379
-2433 y Fh(suivre)23 b(une)h(r)n(\023)-33 b(ef)n(\023)g(erence)24
+b Ff(m)-379 2135 y Fh(c)n(hoisir)23 b(le)g Fb(n)5 b Fh(i)n(\022)-33
+b(eme)24 b(sujet)g(de)g(men)n(u)g(par)g(son)-379 2241
+y(n)n(um)n(\023)-33 b(ero)23 b(\(1{9\))1029 b Fb(n)-379
+2347 y Fh(suivre)23 b(une)h(r)n(\023)-33 b(ef)n(\023)g(erence)24
b(crois)n(\023)-33 b(ee)24 b(\(on)h(revien)n(t)f(a)n(v)n(ec)-379
-2539 y Ff(l)p Fh(\))1378 b Ff(f)-379 2646 y Fh(rev)n(enir)23
+2454 y Ff(l)p Fh(\))1378 b Ff(f)-379 2560 y Fh(rev)n(enir)23
b(au)h(dernier)f(n\033ud)h(visit)n(\023)-33 b(e)509 b
-Ff(l)-379 2752 y Fh(rev)n(enir)23 b(au)h(n\033ud)g(du)g(r)n(\023)-33
-b(ep)r(ertoire)509 b Ff(d)-379 2858 y Fh(aller)22 b(au)i(n\033ud)g(de)h
-(plus)e(haut)i(niv)n(eau)f(du)-379 2965 y(\014c)n(hier)f(Info)1110
-b Ff(t)-379 3071 y Fh(aller)22 b(sur)i(n'imp)r(orte)f(quel)h(n\033ud)g
-(par)f(son)h(nom)111 b Ff(g)-450 3181 y Fh(Autres)24
-b(:)-379 3286 y(lancer)f(le)h Fe(didacticiel)e Fh(Info)652
-b Ff(h)-379 3393 y Fh(c)n(herc)n(her)24 b(un)g(sujet)g(dans)g(l'index)
-518 b Ff(i)-379 3499 y Fh(rec)n(herc)n(her)24 b(les)f(n\033uds)h(a)n(v)
-n(ec)h(une)f(expression)-379 3605 y(rationnelle)1115
-b Ff(s)-379 3711 y Fe(quitter)22 b Fh(Info)1051 b Ff(q)1746
--364 y Fg(Registres)1746 -227 y Fh(sauv)n(er)24 b(la)f(r)n(\023)-33
+Ff(l)-379 2666 y Fh(rev)n(enir)23 b(au)h(n\033ud)g(du)g(r)n(\023)-33
+b(ep)r(ertoire)509 b Ff(d)-379 2773 y Fh(aller)22 b(au)i(n\033ud)g(de)h
+(plus)e(haut)i(niv)n(eau)f(du)-379 2879 y(\014c)n(hier)f(Info)1110
+b Ff(t)-379 2985 y Fh(aller)22 b(sur)i(n'imp)r(orte)f(quel)h(n\033ud)g
+(par)f(son)h(nom)111 b Ff(g)-450 3095 y Fh(Autres)24
+b(:)-379 3201 y(lancer)f(le)h Fe(didacticiel)e Fh(Info)652
+b Ff(h)-379 3307 y Fh(c)n(herc)n(her)24 b(un)g(sujet)g(dans)g(l'index)
+518 b Ff(i)-379 3413 y Fh(rec)n(herc)n(her)24 b(les)f(n\033uds)h(a)n(v)
+n(ec)h(une)f(expression)-379 3519 y(rationnelle)1115
+b Ff(s)-379 3626 y Fe(quitter)22 b Fh(Info)1051 b Ff(q)1746
+-364 y Fg(Registres)1746 -244 y Fh(sauv)n(er)24 b(la)f(r)n(\023)-33
b(egion)24 b(dans)g(un)g(registre)506 b Ff(C-x)36 b(r)f(s)1746
--121 y Fh(ins)n(\023)-33 b(erer)23 b(le)g(con)n(ten)n(u)j(du)e
+-138 y Fh(ins)n(\023)-33 b(erer)23 b(le)g(con)n(ten)n(u)j(du)e
(registre)f(dans)h(le)g(tamp)r(on)117 b Ff(C-x)36 b(r)f(i)1746
-2 y Fh(sauv)n(er)24 b(la)f(v)l(aleur)h(du)g(p)r(oin)n(t)g(dans)g(un)g
-(registre)222 b Ff(C-x)36 b(r)f(SPC)1746 109 y Fh(sauter)24
+-11 y Fh(sauv)n(er)24 b(la)f(v)l(aleur)h(du)g(p)r(oin)n(t)g(dans)g(un)g
+(registre)222 b Ff(C-x)36 b(r)f(SPC)1746 95 y Fh(sauter)24
b(au)g(p)r(oin)n(t)g(sauv)n(\023)-33 b(e)25 b(dans)f(le)f(registre)355
-b Ff(C-x)36 b(r)f(j)1746 271 y Fg(Macros)j(cla)m(vier)1746
-388 y Fe(lancer)23 b Fh(la)g(d)n(\023)-33 b(e\014nition)25
+b Ff(C-x)36 b(r)f(j)1746 244 y Fg(Macros)j(cla)m(vier)1746
+344 y Fe(lancer)23 b Fh(la)g(d)n(\023)-33 b(e\014nition)25
b(d'une)f(macro)g(cla)n(vier)277 b Ff(C-x)36 b(\()1746
-494 y Fe(terminer)23 b Fh(la)g(d)n(\023)-33 b(e\014nition)25
+451 y Fe(terminer)23 b Fh(la)g(d)n(\023)-33 b(e\014nition)25
b(d'une)f(macro)f(cla)n(vier)183 b Ff(C-x)36 b(\))1746
-601 y Fe(ex)n(\023)-39 b(ecuter)24 b Fh(la)f(derni)n(\022)-33
+557 y Fe(ex)n(\023)-39 b(ecuter)24 b Fh(la)f(derni)n(\022)-33
b(ere)24 b(macro)g(cla)n(vier)f(d)n(\023)-33 b(e\014nie)203
-b Ff(C-x)36 b(e)1746 707 y Fh(a)t(jouter)24 b(\022)-35
+b Ff(C-x)36 b(e)1746 663 y Fh(a)t(jouter)24 b(\022)-35
b(a)24 b(la)f(derni)n(\022)-33 b(ere)24 b(macro)g(cla)n(vier)446
-b Ff(C-u)36 b(C-x)g(\()1746 813 y Fh(donner)24 b(un)g(nom)g(\022)-35
+b Ff(C-u)36 b(C-x)g(\()1746 770 y Fh(donner)24 b(un)g(nom)g(\022)-35
b(a)24 b(la)f(derni)n(\022)-33 b(ere)24 b(macro)1817
-919 y(cla)n(vier)996 b Ff(M-x)36 b(name-last-kbd-macro)1746
-1026 y Fh(ins)n(\023)-33 b(erer)23 b(une)h(d)n(\023)-33
-b(e\014nition)25 b(Lisp)e(dans)h(le)1817 1132 y(tamp)r(on)960
-b Ff(M-x)36 b(insert-kbd-macro)1746 1294 y Fg(Commandes)i(de)f(gestion)
-h(d'Emacs)g(Lisp)1744 1431 y Fh(\023)-33 b(ev)l(aluer)24
+876 y(cla)n(vier)996 b Ff(M-x)36 b(name-last-kbd-macro)1746
+982 y Fh(ins)n(\023)-33 b(erer)23 b(une)h(d)n(\023)-33
+b(e\014nition)25 b(Lisp)e(dans)h(le)1817 1088 y(tamp)r(on)960
+b Ff(M-x)36 b(insert-kbd-macro)1746 1237 y Fg(Commandes)i(de)f(gestion)
+h(d'Emacs)g(Lisp)1744 1357 y Fh(\023)-33 b(ev)l(aluer)24
b(la)g Fe(s-expression)f Fh(situ)n(\023)-33 b(ee)25 b(a)n(v)l(an)n(t)g
-(le)e(p)r(oin)n(t)115 b Ff(C-x)36 b(C-e)1744 1537 y Fh(\023)-33
+(le)e(p)r(oin)n(t)115 b Ff(C-x)36 b(C-e)1744 1463 y Fh(\023)-33
b(ev)l(aluer)24 b(la)g Fe(defun)g Fh(couran)n(te)707
-b Ff(C-M-x)1744 1643 y Fh(\023)-33 b(ev)l(aluer)24 b(la)g
+b Ff(C-M-x)1744 1570 y Fh(\023)-33 b(ev)l(aluer)24 b(la)g
Fe(r)n(\023)-39 b(egion)726 b Ff(M-x)36 b(eval-region)1746
-1750 y Fh(lire)23 b(et)f(\023)-33 b(ev)l(aluer)24 b(le)g(mini-tamp)r
-(on)593 b Ff(M-:)1746 1856 y Fh(c)n(harger)24 b(\022)-35
+1676 y Fh(lire)23 b(et)f(\023)-33 b(ev)l(aluer)24 b(le)g(mini-tamp)r
+(on)593 b Ff(M-:)1746 1782 y Fh(c)n(harger)24 b(\022)-35
b(a)24 b(partir)f(du)h(r)n(\023)-33 b(ep)r(ertoire)23
-b(syst)n(\022)-33 b(eme)1817 1962 y(standard)926 b Ff(M-x)36
-b(load-library)1746 2124 y Fg(P)m(ersonnalisation)g(simple)1746
-2261 y Fh(p)r(ersonnaliser)23 b(les)h(v)l(ariables)f(et)h(les)g(fon)n
-(tes)81 b Ff(M-x)36 b(customize)1746 2364 y Fh(Cr)n(\023)-33
+b(syst)n(\022)-33 b(eme)1817 1888 y(standard)926 b Ff(M-x)36
+b(load-library)1746 2037 y Fg(P)m(ersonnalisation)g(simple)1746
+2157 y Fh(p)r(ersonnaliser)23 b(les)h(v)l(ariables)f(et)h(les)g(fon)n
+(tes)81 b Ff(M-x)36 b(customize)1746 2263 y Fh(Cr)n(\023)-33
b(eation)23 b(de)g(liaisons)f(de)h(touc)n(hes)h(globales)f(en)g(Emacs)g
-(Lisp)f(\(exem-)1746 2437 y(ples\):)1746 2518 y Ff(\(global-set-key)40
-b("\\C-cg")d('goto-line\))1746 2581 y(\(global-set-key)j("\\M-#")d
-('query-replace-regexp\))1755 2729 y Fg(\023)1746 2753
-y(Ecriture)g(de)h(commandes)1746 2857 y Ff(\(defun)f
-Fd(nom-c)l(ommande)43 b Ff(\()p Fd(ar)l(gs)5 b Ff(\))1817
-2921 y(")p Fd(do)l(cumentation)g Ff(")38 b(\(interactive)g(")p
-Fd(template)5 b Ff("\))1817 2985 y Fd(b)l(o)l(dy)h Ff(\))1746
-3066 y Fh(Exemple)24 b(:)1746 3146 y Ff(\(defun)37 b
+(Lisp)f(\(exem-)1746 2336 y(ples\):)1746 2425 y Ff(\(global-set-key)40
+b("\\C-cg")d('goto-line\))1746 2493 y(\(global-set-key)j("\\M-#")d
+('query-replace-regexp\))1755 2627 y Fg(\023)1746 2651
+y(Ecriture)g(de)h(commandes)1746 2731 y Ff(\(defun)f
+Fb(nom-c)l(ommande)43 b Ff(\()p Fb(ar)l(gs)5 b Ff(\))1817
+2796 y(")p Fb(do)l(cumentation)g Ff(")38 b(\(interactive)g(")p
+Fb(template)5 b Ff("\))1817 2862 y Fb(b)l(o)l(dy)h Ff(\))1746
+2948 y Fh(Exemple)24 b(:)1746 3034 y Ff(\(defun)37 b
(cette-ligne-en-haut-de-)q(la-f)q(ene)q(tre)42 b(\(line\))1746
-3210 y("Repositionne)d(la)d(ligne)h(du)e(point)i(en)f(haut)g(de)g(la)g
-(fenetre.)1746 3274 y(Avec)g(ARG,)h(place)g(le)e(point)i(sur)f(la)g
-(ligne)h(ARG.")1817 3338 y(\(interactive)h("P"\))1817
-3401 y(\(recenter)f(\(if)g(\(null)f(line\))2311 3465
-y(0)2240 3529 y(\(prefix-numeric-value)41 b(line\)\)\)\))1746
-3610 y Fh(La)21 b(sp)n(\023)-33 b(eci\014cation)23 b
+3090 y("Repositionne)d(la)d(ligne)h(du)e(point)i(en)f(haut)g(de)g(la)g
+(fenetre.)1746 3145 y(Avec)g(ARG,)h(place)g(le)e(point)i(sur)f(la)g
+(ligne)h(ARG.")1817 3213 y(\(interactive)h("P"\))1817
+3269 y(\(recenter)f(\(if)g(\(null)f(line\))2311 3324
+y(0)2240 3380 y(\(prefix-numeric-value)41 b(line\)\)\)\))1746
+3468 y Fh(La)21 b(sp)n(\023)-33 b(eci\014cation)23 b
Ff(interactive)h Fh(indique)d(commen)n(t)h(lire)e(in)n(teractiv)n(e-)
-1746 3674 y(men)n(t)28 b(les)f(param)n(\022)-33 b(etres.)42
+1746 3534 y(men)n(t)28 b(les)f(param)n(\022)-33 b(etres.)42
b(F)-6 b(aites)28 b Ff(C-h)36 b(f)f(interactive)30 b
-Fh(p)r(our)e(plus)e(de)1746 3737 y(pr)n(\023)-33 b(ecisions.)2039
-3817 y Fb(Cop)n(yrigh)n(t)2342 3815 y(c)2325 3817 y Fa(\015)21
-b Fb(2007)i(F)-5 b(ree)21 b(Soft)n(w)n(are)i(F)-5 b(oundation,)20
-b(Inc.)2179 3868 y(v2.3)h(p)r(our)f(GNU)g(Emacs)h(v)n(ersion)h(22,)f
-(2006)2309 3919 y(conception)g(de)f(Stephen)g(Gildea)2220
-3983 y(traduction)h(fran\030)-27 b(caise)21 b(d')2831
-3970 y(\023)2826 3983 y(Eric)f(Jacob)r(oni)1746 4051
+Fh(p)r(our)e(plus)e(de)1746 3599 y(pr)n(\023)-33 b(ecisions.)2039
+3682 y Fd(Cop)n(yrigh)n(t)2342 3680 y(c)2325 3682 y Fc(\015)21
+b Fd(2007)i(F)-5 b(ree)21 b(Soft)n(w)n(are)i(F)-5 b(oundation,)20
+b(Inc.)2179 3727 y(v2.3)h(p)r(our)f(GNU)g(Emacs)h(v)n(ersion)h(22,)f
+(2006)2309 3771 y(conception)g(de)f(Stephen)g(Gildea)2220
+3835 y(traduction)h(fran\030)-27 b(caise)21 b(d')2831
+3822 y(\023)2826 3835 y(Eric)f(Jacob)r(oni)1746 3900
y(V)-5 b(ous)22 b(p)r(ouv)n(ez)g(faire)g(et)g(distribuer)f(des)h
(copies)g(de)f(cette)i(carte,)f(p)r(ourvu)f(que)h(la)1746
-4102 y(note)16 b(de)g(cop)n(yrigh)n(t)g(et)h(cette)f(note)g(de)g(p)r
+3944 y(note)16 b(de)g(cop)n(yrigh)n(t)g(et)h(cette)f(note)g(de)g(p)r
(ermission)f(soien)n(t)h(conserv)n(\023)-29 b(ees)19
-b(sur)c(toutes)1746 4153 y(les)21 b(copies.)1746 4221
+b(sur)c(toutes)1746 3989 y(les)21 b(copies.)1746 4054
y(P)n(our)e(les)g(copies)g(du)f(man)n(uel)g(GNU)g(Emacs,)g(\023)-29
b(ecriv)n(ez)20 b(\022)-30 b(a)19 b(la)g(F)-5 b(ree)19
-b(Soft)n(w)n(are)i(F)-5 b(oun-)1746 4272 y(dation,)29
+b(Soft)n(w)n(are)i(F)-5 b(oun-)1746 4098 y(dation,)29
b(Inc.,)g(51)g(F)-5 b(ranklin)28 b(Street,)h(Fifth)f(Flo)r(or,)h
-(Boston,)i(MA)d(02110-1301)1746 4323 y(USA.)p eop end
+(Boston,)i(MA)d(02110-1301)1746 4143 y(USA.)p eop end
%%Trailer
userdict /end-hook known{end-hook}if
diff --git a/etc/fr-refcard.tex b/etc/fr-refcard.tex
index 0184064cccd..dcbed8347dc 100644
--- a/etc/fr-refcard.tex
+++ b/etc/fr-refcard.tex
@@ -11,7 +11,7 @@
% Set letterpaper to 0 for A4 paper, 1 for letter (US) paper. Useful
% only when columnsperpage is 2 or 3.
-\letterpaper=1
+\letterpaper=0
% Nothing else needs to be changed below this line.
% Copyright (C) 1987, 1993, 1996, 1997, 2001, 2002, 2003, 2004,
@@ -216,8 +216,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
% section - new major section. Argument is section name.
\outer\def\section#1{\par\filbreak
- \vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
- \vskip 2ex plus 1ex minus 1.5ex}
+ \vskip 2ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
+ \vskip 1ex plus 1ex minus 1.5ex}
\newdimen\keyindent
@@ -327,6 +327,8 @@ les instructions. Si vous d\'ebutez, faites \kbd{C-h t} pour suivre un
\metax{restaurer un tampon avec son contenu initial}{M-x revert-buffer}
\key{r\'eafficher un \'ecran perturb\'e}{C-l}
+\shortcopyrightnotice
+
\section{Recherche incr\'ementale}
\key{rechercher vers l'avant}{C-s}
@@ -345,9 +347,6 @@ direction quelconque.
Si Emacs est encore en train de chercher, \kbd{C-g} n'annule que ce
qui n'a pas \'et\'e fait.
-%% Why was this here?
-%\shortcopyrightnotice
-
\section{D\'eplacements}
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
diff --git a/etc/refcard.ps b/etc/refcard.ps
index 7e79f255048..3c124072686 100644
--- a/etc/refcard.ps
+++ b/etc/refcard.ps
@@ -4,14 +4,14 @@
%%Pages: 2
%%PageOrder: Ascend
%%Orientation: Landscape
-%%BoundingBox: 0 0 595 842
+%%BoundingBox: 0 0 612 792
%%DocumentFonts: CMBX10 CMR8 CMTT8 CMBX8 CMR6 CMSY6 CMTI8 CMMI8
-%%DocumentPaperSizes: a4
+%%DocumentPaperSizes: Letter
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -t landscape refcard.dvi
+%DVIPSCommandLine: dvips -t letter -t landscape refcard.dvi
%DVIPSParameters: dpi=600
-%DVIPSSource: TeX output 2007.01.20:1513
+%DVIPSSource: TeX output 2007.03.22:0022
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -2140,7 +2140,7 @@ B37C730F954856C8BB7DFED1ECDAF30AF7FDB675F727F6FFB931B81476DE3F0B
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%%EndFont
-TeXDict begin 55387786 39139632 1000 600 600 (refcard.dvi)
+TeXDict begin 52099146 40258431 1000 600 600 (refcard.dvi)
@start /Fa 197[20 58[{}1 66.4176 /CMMI8 rf /Fb 134[35
3[38 24 29 30 1[36 36 40 58 18 2[22 36 33 1[33 36 33
33 36 51[26 45[{}19 66.4176 /CMTI8 rf /Fc 242[61 13[{}1
@@ -2169,7 +2169,9 @@ TeXDict begin 55387786 39139632 1000 600 600 (refcard.dvi)
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
-%%PaperSize: A4
+%%BeginPaperSize: Letter
+letter
+%%EndPaperSize
@landscape end
%%EndSetup
%%Page: 1 1
diff --git a/lib-src/makefile.w32-in b/lib-src/makefile.w32-in
index 38e12bdb643..3ae5220c5f1 100644
--- a/lib-src/makefile.w32-in
+++ b/lib-src/makefile.w32-in
@@ -24,7 +24,7 @@ ALL = make-docfile hexl ctags etags movemail ebrowse sorted-doc digest-doc emacs
.PHONY: $(ALL)
-VERSION = 22.0.96
+VERSION = 22.0.98
LOCAL_FLAGS = -DWINDOWSNT -DDOS_NT -DSTDC_HEADERS=1 -DNO_LDAV=1 \
-DNO_ARCHIVES=1 -DHAVE_CONFIG_H=1 -I../nt/inc \
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 47b9b292aa7..9fc26846057 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,694 @@
+2007-04-17 Glenn Morris <rgm@gnu.org>
+
+ * calendar/cal-dst.el (calendar-dst-find-startend): If YEAR cannot
+ be encoded, fall back to current year.
+
+2007-04-14 Kevin Ryde <user42@zip.com.au>
+
+ * arc-mode.el (archive-lzh-summarize): Only apply the "downcase if
+ all upcase" rule to OS-ID 0 "generic". Always downcase for OS-ID
+ M "MSDOS".
+
+2007-04-16 Chong Yidong <cyd@stupidchicken.com>
+
+ * progmodes/python.el (python-end-of-block): Avoid looping forever
+ if python-next-statement fails.
+
+2007-04-16 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
+
+ * textmodes/bibtex.el (bibtex-entry-field-alist): Use defcustom.
+
+2007-04-16 Dan Nicolaescu <dann@ics.uci.edu>
+
+ * progmodes/perl-mode.el (perl-indent-level): Mark as safe local var.
+ * progmodes/cperl-mode.el (cperl-indent-level): Likewise.
+
+2007-04-15 Jay Belanger <belanger@truman.edu>
+
+ * calc/calc.el (calc-version): New function.
+ (calc-trail-mode): Shorten the title.
+
+2007-04-15 Chong Yidong <cyd@stupidchicken.com>
+
+ * mail/footnote.el (footnote-style): Clarify docstring to state
+ that customizing this only applies to future footnotes.
+
+2007-04-15 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
+
+ * textmodes/bibtex.el (bibtex-field-list): Use functionp.
+ (bibtex-make-field): Check that INIT is a string. Use functionp.
+
+2007-04-14 Glenn Morris <rgm@gnu.org>
+
+ * complete.el (PC-goto-end): New buffer-local variable.
+ (PC-do-completion-end): Make buffer-local.
+ (partial-completion-mode) <choose-completion-string-functions>:
+ Do not go to the end of the minibuffer if PC-goto-end is non-nil.
+ (PC-do-completion): New optional fourth argument GOTO-END. Add a
+ doc string. Set PC-goto-end for choose-completion.
+ (PC-lisp-complete-symbol): Pass non-nil GOTO-END arg to
+ PC-do-completion.
+
+ * textmodes/bibtex.el (bibtex-insert-kill): Pass non-nil NODELIM
+ arg to bibtex-make-field.
+ (bibtex-make-field): Add optional fourth arg NODELIM. Insert
+ delimiters around INIT unless this arg is non-nil.
+
+2007-04-14 Nick Roberts <nickrob@snap.net.nz>
+
+ * tmm.el (tmm-get-keybind): Use copy-sequence to ensure that the
+ global map isn't modified
+
+2007-04-14 Glenn Morris <rgm@gnu.org>
+
+ * calendar/appt.el (appt-disp-window): Do not split small windows.
+ Suggested by Jeff Miller <jmiller@cablespeed.com>.
+
+2007-04-13 Chong Yidong <cyd@stupidchicken.com>
+
+ * progmodes/compile.el (compilation-start): Revert 2007-03-25
+ change.
+
+ * files.el: Ditto.
+
+2007-04-13 Juanma Barranquero <lekktu@gmail.com>
+
+ * cus-edit.el (minibuffer, auto-save): Fix typos in docstrings.
+
+ * term.el (term-buffer-maximum-size, term-exec, term-escape-char)
+ (term-set-escape-char, term-termcap-format, term-get-old-input-default)
+ (term-skip-prompt, term-send-string, term-send-region, term-pager-page)
+ (term-pager-help): Fix typos in docstrings.
+
+ * wid-edit.el (widget-documentation): Fix typo in docstring.
+
+ * progmodes/ebnf2ps.el (ebnf-insert-style, ebnf-merge-style):
+ Fix typos in error messages.
+
+2007-04-13 Martin Rudalics <rudalics@gmx.at>
+
+ * emacs-lisp/edebug.el (edebug-pop-to-buffer): Don't select
+ window marked as dedicated.
+
+ * mail/footnote.el (footnote-latin-string): New variable.
+ (footnote-latin-regexp): Redefined as regexp alternative.
+ (Footnote-latin): Use footnote-latin-string instead of
+ footnote-latin-regexp.
+
+2007-04-13 Glenn Morris <rgm@gnu.org>
+
+ * tmm.el (tmm-get-keybind): Use car-safe to avoid errors with
+ inherited keymaps.
+
+2007-04-12 Chong Yidong <cyd@stupidchicken.com>
+
+ * outline.el (outline-get-next-sibling): Clarify docstring.
+ (outline-get-last-sibling): Handle case where we are at the first
+ heading. Clarify docstring.
+
+2007-04-12 Nick Roberts <nickrob@snap.net.nz>
+
+ * progmodes/gud.el (gud-minor-mode-map): Make go button same
+ length as stop button to lessen flicker.
+ (jdb): Add gud-print.
+ (gud-find-expr): Jdb prints the expression with the value, so
+ don't insert it in the output.
+
+2007-04-11 Jason Rumney <jasonr@gnu.org>
+
+ * dnd.el (dnd-get-local-file-name): Decode both upper and lower
+ case hex. Do not try to decode non-hex letters.
+
+2007-04-11 Markus Triska <markus.triska@gmx.at>
+
+ * emacs-lisp/byte-opt.el (byte-optimize-backward-char)
+ (byte-optimize-backward-word): Remove (move to bytecomp.el).
+ (byte-optimize-form-code-walker): Evaluate pure function calls if
+ possible.
+ (byte-optimize-all-constp): New function.
+
+ * emacs-lisp/bytecomp.el (byte-compile-char-before): Improve
+ numeric argument case.
+ (byte-compile-backward-char, byte-compile-backward-word): New
+ functions, performing rewriting previously done in byte-opt.el.
+ Fix their "Fixme" item (restriction to numeric arguments).
+
+2007-04-11 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * desktop.el (desktop-save, desktop-create-buffer): Replace mapcar with
+ dolist.
+ (after-init-hook): Don't quote lambda.
+ (desktop-first-buffer): Don't wrap it in eval-when-compile.
+ (desktop-internal-v2s): Remove unused var `el'.
+ (desktop-buffer-major-mode, desktop-buffer-locals): Move out of
+ desktop-restore-file-buffer.
+ (desktop-buffer-ok-count, desktop-buffer-fail-count): Move out of
+ desktop-create-buffer.
+
+2007-04-10 Chong Yidong <cyd@stupidchicken.com>
+
+ * woman.el (woman-decode-buffer): Postpone macro-set check...
+ (woman-decode-region): ...to here.
+
+2007-04-10 Thien-Thi Nguyen <ttn@gnu.org>
+
+ * startup.el (tty-handle-args): Use %S to log ARGS.
+
+2007-04-10 Glenn Morris <rgm@gnu.org>
+
+ * dframe.el (dframe-frame-mode): Do not set auto-show-mode, since
+ it is obsolete and has no effect.
+
+ * dos-w32.el (default-buffer-file-type): Add defvar to quieten
+ byte-compiler.
+
+ * progmodes/cperl-mode.el (cperl-mode): Remove unnecessary call to
+ obsolete function make-local-hook.
+
+ * progmodes/dcl-mode.el (top-level): Move (require 'tempo) to
+ start to quieten byte-compiler.
+
+2007-04-10 Markus Triska <markus.triska@gmx.at>
+
+ * emacs-lisp/byte-opt.el (byte-optimize-char-before): Remove (move
+ to bytecomp.el as byte-compile-char-before).
+ * emacs-lisp/bytecomp.el (byte-compile-char-before):
+ New function (modified replacement for byte-optimize-char-before in
+ byte-opt.el).
+
+2007-04-09 Alan Mackenzie <acm@muc.de>
+
+ * startup.el (inhibit-splash-screen): Emphatically state that it
+ can't be set in site-start.el.
+
+2007-04-09 Masatake YAMATO <jet@gyve.org>
+
+ * progmodes/cc-subword.el (c-capitalize-subword): More closely
+ mimic the behavior of `capitalize-word'. Do not move point with a
+ negative argument. Based on tiny change by Paul Curry.
+
+2007-04-09 Paul Curry <dashteacup@gmail.com> (tiny change)
+
+ * progmodes/cc-subword.el (c-downcase-subword, c-upcase-subword):
+ Don't move point if ARG is negative.
+
+2007-04-09 Alan Mackenzie <acm@muc.de>
+
+ Changes to make `narrow-to-defun' and `mark-defun' work properly
+ in CC Mode:
+
+ * progmodes/cc-defs.el (c-beginning-of-defun-1):
+ * progmodes/cc-cmds.el (c-beginning-of-defun, c-end-of-defun):
+ Bind beginning/end-of-defun-function to nil around calls to
+ beginning/end-of-defun.
+
+ * progmodes/cc-langs.el (beginning-of-defun-function)
+ (end-of-defun-function): New c-lang-setvar's.
+
+ * progmodes/cc-awk.el (c-awk-beginning-of-defun): Add "(or arg
+ (setq arg 1))" to enable non-interactive call.
+
+2007-04-09 Eli Zaretskii <eliz@gnu.org>
+
+ * simple.el (set-mark-command): Doc fix.
+
+2007-04-09 Nick Roberts <nickrob@snap.net.nz>
+
+ * progmodes/gud.el (gdb): Restore existing session if user
+ tries to start a second one in graphical mode.
+
+2007-04-08 Martin Rudalics <rudalics@gmx.at>
+
+ * cus-start.el <scroll-preserve-screen-position>: Add choices.
+
+2007-04-08 Johan Bockg,Ae(Brd <bojohan+news@dd.chalmers.se>
+
+ * term/xterm.el (terminal-init-xterm): Fix key definitions.
+ Add binding for C-M-SPC.
+
+2007-04-08 Richard Stallman <rms@gnu.org>
+
+ * pcomplete.el (pcomplete-read-event): One single definition,
+ and not a defsubst.
+
+2007-04-08 Chong Yidong <cyd@stupidchicken.com>
+
+ * progmodes/cc-cmds.el (c-end-of-defun): Tidy up, to eliminate
+ byte-compiler warning "value unused".
+
+2007-04-08 Andreas Schwab <schwab@suse.de>
+
+ * term/xterm.el (terminal-init-xterm): Add bindings for keypad keys.
+
+2007-04-07 Glenn Morris <rgm@gnu.org>
+
+ * calendar/calendar.el (diary-font-lock-keywords, diary-live-p):
+ Autoload these functions.
+ (diary-date-forms): Add a custom :set form.
+
+ * calendar/diary-lib.el (diary-set-maybe-redraw): Move definition
+ before first use.
+ (diary-font-lock-keywords): New function with old code for
+ initialization of variable of same name.
+
+2007-04-07 David Hansen <david.hansen@gmx.net> (tiny change)
+
+ * progmodes/cc-cmds.el (c-electric-paren): Fix space-before-funcall
+ clean-up: only insert space when on identifier, etc.
+
+2007-04-07 Chong Yidong <cyd@stupidchicken.com>
+
+ * progmodes/grep.el (grep-find-use-xargs): Rewrite docstring.
+
+ * net/tls.el (open-tls-stream): Properly handle case where there
+ is no associated buffer.
+
+2007-04-07 Glenn Morris <rgm@gnu.org>
+
+ * ffap.el (ffap-file-at-point): Lower the priority of the
+ ffap-ftp-sans-slash-regexp check.
+
+2007-04-06 Alan Mackenzie <acm@muc.de>
+
+ Fix fontification of labels, and other things with ":".
+
+ * progmodes/cc-engine.el (c-forward-label): The function now
+ returns 'goto-target, 'qt-2kwds-colon, 'qt-1kwd-colon, as well as
+ the former t.
+
+ * progmodes/cc-fonts.el (c-font-lock-declarations): Interpret the
+ new return code from c-forward-label, fontifying tokens properly.
+ Add some general comments throughout the file.
+
+2007-04-06 Chong Yidong <cyd@stupidchicken.com>
+
+ * textmodes/flyspell.el (flyspell-duplicate, flyspell-incorrect):
+ Revert 2006-01-27 change.
+
+ * diff-mode.el (diff-mode): Revert 2007-03-04 change.
+
+ * menu-bar.el (menu-bar-tools-menu): Revert 2003-07-25 change.
+
+ * desktop.el (desktop-create-buffer, desktop-save):
+ Revert 2004-11-12 change for lack of copyright papers.
+
+ * dired-x.el (dired-guess-shell-case-fold-search): Delete var.
+ (dired-guess-default): Respect case.
+
+ * isearch.el (isearch-forward): Revert 1998-08-26 doc change.
+
+ * emacs-lisp/byte-opt.el (byte-optimize-pure-func): Remove function;
+ was originally checked in as byte-optimize-concat on 1997-11-02.
+
+ * mail/sendmail.el (mail-text, mail-mode): Revert extant pieces of
+ 1995-05-19 doc changes.
+
+2007-04-06 Kim F. Storm <storm@cua.dk>
+
+ * loadhist.el (read-feature): Reimplement. New optional arg LOADED-P.
+ (unload-feature): Update interactive spec accordingly.
+
+ * progmodes/grep.el (grep-program): Remove commentary about zgrep.
+
+2007-04-06 John Paul Wallington <jpw@pobox.com>
+
+ * subr.el (with-case-table): Use `make-symbol' to avoid variable
+ capture. Restore the table in the same buffer.
+
+ * font-lock.el (lisp-font-lock-keywords-2): Add `with-case-table'.
+
+2007-04-05 Chong Yidong <cyd@stupidchicken.com>
+
+ * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
+ Print entire form.
+
+2007-04-05 Nick Roberts <nickrob@snap.net.nz>
+
+ * progmodes/gdb-ui.el (breakpoint-disabled): Tweak face (again)
+ for low-color displays.
+
+2007-04-05 Glenn Morris <rgm@gnu.org>
+
+ * play/5x5.el, play/animate.el, play/dissociate.el, play/doctor.el,
+ * play/gomoku.el, play/landmark.el, play/tetris.el, play/zone.el:
+ Seed random number generator on loading.
+
+ * emacs-lisp/authors.el (top-level): Provide self.
+
+ * play/animate.el (top-level): Provide self.
+
+2007-04-04 Alan Mackenzie <acm@muc.de>
+
+ * progmodes/cc-vars.el (c-special-indent-hook): Amend doc-string
+ to mention c-syntactic-indentation.
+
+2007-04-04 Chong Yidong <cyd@stupidchicken.com>
+
+ * subr.el (with-case-table): New macro.
+
+ * international/mule.el (ascii-case-table): New var.
+
+ * mail/smtpmail.el (smtpmail-via-smtp): Use ascii-case-table when
+ downcasing.
+
+2007-04-03 Nick Roberts <nickrob@snap.net.nz>
+
+ * progmodes/gud.el (gud-minor-mode-map): Simplify.
+
+ * t-mouse.el (t-mouse-make-event-element): Don't use the left edge
+ of the window if we're outside it e.g menu-bar.
+
+ * xt-mouse.el (xterm-mouse-event): Don't use the left edge of the
+ window if we're outside it e.g menu-bar.
+
+2007-04-03 Eli Zaretskii <eliz@gnu.org>
+
+ * mail/rmail.el (rmail-convert-to-babyl-format): Don't try to
+ decode base-64 encoded body if its content-type is something other
+ than text/* or message/*.
+
+2007-04-03 Juanma Barranquero <lekktu@gmail.com>
+
+ * simple.el (activate-mark-hook): Fix typo in docstring.
+
+2007-04-03 Nick Roberts <nickrob@snap.net.nz>
+
+ * tmm.el (tmm-c-prompt): Initialize.
+ (tmm-menubar): Deal with extended menu-items at top level.
+ (tmm-get-keybind): Handle bindings redefined/undefined locally.
+ (tmm-prompt): Handle visibility of top level menu-items.
+
+ * progmodes/gud.el (gud-menu-map): Simplify.
+ (gud-minor-mode-map): Add tool-bar like bindings to the text mode
+ menubar.
+
+2007-04-02 Chong Yidong <cyd@stupidchicken.com>
+
+ * mail/smtpmail.el (smtpmail-via-smtp): Revert last change.
+
+ * comint.el (comint-send-input): Widen the buffer first.
+
+ * info.el (Info-fontify-maximum-menu-size): Revert to 100000.
+
+2007-04-01 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/lisp-mode.el (lisp-fill-paragraph): Only obey
+ emacs-lisp-docstring-fill-column in emacs-lisp-mode.
+
+ * newcomment.el (comment-search-forward): Discard comment starters
+ before point.
+
+2007-04-01 Guanpeng Xu <herberteuler@hotmail.com>
+
+ * mouse.el (mouse-set-secondary): Update mouse-secondary-overlay.
+
+2007-04-01 Chong Yidong <cyd@stupidchicken.com>
+
+ * mail/smtpmail.el (smtpmail-via-smtp): Use standard case table
+ when downcasing.
+
+ * button.el (previous-button): Rewrite to account for adjacent buttons.
+
+2007-04-01 J.D. Smith <jdsmith@as.arizona.edu>
+
+ * progmodes/idlwave.el (idlwave-auto-fill):
+ Revert paragraph-separate change.
+
+ * progmodes/idlw-shell.el (idlwave-shell-break-in):
+ Simplify module calc.
+ (idlwave-shell-set-bp-in-module): Compute module.
+
+2007-03-31 Glenn Morris <rgm@gnu.org>
+
+ * emacs-lisp/timer.el (run-at-time): Doc fix.
+
+ * emacs-lisp/warnings.el (display-warning): If we create the
+ buffer displaying the warning, disable undo there.
+
+2007-03-31 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp.el (tramp-register-file-name-handler)
+ (tramp-register-completion-file-name-handler): New defsubst,
+ derived from `tramp-register-file-name-handlers'. The split is
+ necessary because Tramp's file name handlers must be registered at
+ different startup places.
+
+2007-03-31 Chong Yidong <cyd@stupidchicken.com>
+
+ * progmodes/hideshow.el (turn-off-hideshow): New function.
+ (hs-minor-mode): Use it instead of a lambda expression in
+ change-major-mode-hook.
+
+2007-03-31 David Kastrup <dak@gnu.org>
+
+ * woman.el (woman-Cyg-to-Win): Don't convert cons cells
+ corresponding to MANPATH_MAP entries.
+ (woman-man.conf-path, woman-parse-man.conf): Doc fix.
+ (woman-parse-man.conf): Use more discriminating man.conf name.
+ (woman-parse-man.conf): Parse MANPATH_MAP entries.
+ (woman-manpath): Doc fix and type fix.
+ (woman-cached-data): Check for MANPATH_MAP entries.
+ (woman-expand-directory-path): Treat MANPATH_MAP entries.
+
+2007-03-31 Stuart Herring <herring@lanl.gov>
+
+ * emacs-lisp/sregex.el (sregexq): Doc fix.
+
+2007-03-31 Markus Triska <markus.triska@gmx.at>
+
+ * flymake.el (flymake-err-line-patterns): Doc fix.
+
+2007-03-30 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * info.el (info-tool-bar-map): Use "exit" for Info-exit.
+ Move to the right.
+
+2007-03-30 Alan Mackenzie <acm@muc.de>
+
+ * progmodes/cc-cmds.el (c-forward-to-nth-EOF-}): Fix EOB bug.
+
+2007-03-30 Thien-Thi Nguyen <ttn@gnu.org>
+
+ * emacs-lisp/ewoc.el (ewoc--insert-new-node): Take additional arg DLL.
+ Use it, passed in explicitly, instead of from the dynamic binding.
+ (ewoc-create, ewoc-enter-before): Update to use new call sequence.
+
+2007-03-30 Juanma Barranquero <lekktu@gmail.com>
+
+ * simple.el (blink-matching-open): When in minibuffer, don't
+ search for a match inside the prompt.
+
+2007-03-30 Nick Roberts <nickrob@snap.net.nz>
+
+ * tmm.el (tmm-menubar): Select the right menu item with the mouse.
+ (tmm-prompt): Don't make the mouse user select the first menu
+ item twice.
+
+2007-03-30 Chong Yidong <cyd@stupidchicken.com>
+
+ * eshell/esh-proc.el (eshell/kill): Tweak regexp to recognize
+ SIGUSR1 and SIGUSR2.
+
+2007-03-29 Kim F. Storm <storm@cua.dk>
+
+ * ido.el (ido-read-internal): When reading file or dir, only override
+ minibuffer-local-filename-completion-map, otherwise only override
+ minibuffer-local-completion-map.
+
+2007-03-29 Glenn Morris <rgm@gnu.org>
+
+ * complete.el (partial-completion-mode): Set PC-do-completion-end
+ to nil after use.
+ (PC-lisp-complete-symbol): Create and use a marker at `end',
+ rather than using point-marker.
+
+2007-03-28 Chong Yidong <cyd@stupidchicken.com>
+
+ * simple.el (next-error-highlight): Doc fix.
+ (compose-mail): Revert 2007-03-19 change.
+
+2007-03-28 Richard Stallman <rms@gnu.org>
+
+ * emacs-lisp/edebug.el (edebug-display): Don't go to
+ edebug-outside-buffer if it is dead.
+
+2007-03-28 Juanma Barranquero <lekktu@gmail.com>
+
+ * view.el (view-mode): Fix typos in docstring.
+
+2007-03-28 Stephen Berman <Stephen.Berman@gmx.net>
+
+ * recentf.el (recentf-save-file): Add a custom :set function.
+
+2007-03-28 Glenn Morris <rgm@gnu.org>
+
+ * complete.el (PC-do-completion-end): New variable.
+ (partial-completion-mode) <choose-completion-string-functions>:
+ Use PC-do-completion-end in the non-minibuffer case to replace the
+ correct amount of text.
+ (PC-do-completion): Set PC-do-completion-end for c-c-s-f.
+ (PC-lisp-complete-symbol): Give marker the after-insertion type,
+ to deal with improvements inserted after point.
+
+2007-03-28 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * button.el (make-text-button): Add explicit `button' property.
+ (default-button): Don't put a `button' property on it.
+
+ * progmodes/python.el (python-mode): Skip comments when parsing.
+
+ * vc-arch.el (vc-with-current-file-buffer): New macro.
+ (vc-arch-file-source-p): Use it to avoid infloop.
+
+2007-03-28 David Hansen <david.hansen@gmx.net> (tiny change)
+
+ * emacs-lisp/lisp.el (lisp-complete-symbol):
+ Fix call to get-buffer-window to find windows in other frames.
+
+2007-03-28 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * comint.el (comint-proc-query, comint-dynamic-list-completions):
+ Fix calls to get-buffer-window to find windows in other frames.
+ Reported by David Hansen <david.hansen@gmx.net>.
+
+2007-03-27 Kevin Ryde <user42@zip.com.au>
+
+ * info.el (Info-display-images-node): On a text-only terminal,
+ show the "text" or "alt" parts of the image blobs.
+
+2007-03-27 Glenn Morris <rgm@gnu.org>
+
+ * complete.el (PC-do-completion): Compute completion-base-size in
+ the non-filename case, rather than setting to nil.
+ (PC-lisp-complete-end): New variable.
+ (PC-lisp-complete-symbol): Use PC-lisp-complete-end to store the
+ original end in a series of consecutive invocations.
+
+ * calendar/calendar.el (calendar-mode-hook): Declare it.
+
+ * calendar/diary-lib.el (diary-live-p): Do not check for
+ diary-selective-display.
+
+2007-03-26 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * replace.el (occur-next-error): *Occur* might not be displayed in the
+ selected frame. Reported by David Hansen <david.hansen@gmx.net>.
+
+2007-03-26 Richard Stallman <rms@gnu.org>
+
+ * textmodes/flyspell.el (flyspell-large-region):
+ Use ispell-call-process-region.
+
+2007-03-26 Johan Bockg,Ae(Brd <bojohan+sf@dd.chalmers.se>
+
+ * emacs-lisp/bytecomp.el (byte-compile-file-form-defmumble):
+ Use prin1 instead of princ.
+
+2007-03-25 Chong Yidong <cyd@stupidchicken.com>
+
+ * faces.el (face-set-after-frame-default): Revert 2007-03-10 change.
+ Merge in X resources before global face.
+
+ * progmodes/compile.el (compilation-start): Save compilation-directory
+ rather than default-directory as local var.
+ (compilation-directory): Mark as safe local var.
+
+ * files.el: Don't mark default-directory as a safe local var.
+
+2007-03-25 Alan Mackenzie <acm@muc.de>
+
+ * progmodes/cc-mode.el (c-before-change): Fix BOB bug.
+ * progmodes/cc-engine.el: Fix typo.
+
+2007-03-25 Juri Linkov <juri@jurta.org>
+
+ * compare-w.el (compare-windows): Rename customization group
+ `compare-w' to `compare-windows'.
+ (compare-windows-whitespace, compare-ignore-whitespace)
+ (compare-ignore-case, compare-windows-sync)
+ (compare-windows-sync-string-size, compare-windows-recenter)
+ (compare-windows-highlight, compare-windows): Change group name in
+ the `group' tag from `compare-w' to `compare-windows'.
+ (compare-windows-sync): Add option `nil' for no sync. Doc fix.
+
+2007-03-24 Markus Triska <markus.triska@gmx.at>
+
+ * expand.el: Change example to always enable abbrev-mode,
+ and remove redundant `function'.
+ (expand-abbrev-hook): Add autoload cookie.
+
+2007-03-24 Ryan Yeske <rcyeske@gmail.com>
+
+ * emacs-lisp/testcover.el (testcover-start, testcover-end)
+ (testcover-mark-all, testcover-unmark-all): Add prompts to
+ interactive specs.
+
+2007-03-24 Jason Rumney <jasonr@gnu.org>
+
+ * autorevert.el (find-file-hook, auto-revert-tail-mode):
+ Use file size in bytes for auto-revert-tail-pos not characters.
+
+2007-03-24 Thien-Thi Nguyen <ttn@gnu.org>
+
+ * vc-rcs.el (vc-rcs-annotate-command):
+ Set text property :vc-annotate-prefix on the annotation text.
+ (vc-rcs-annotate-time): Instead of searching for ": ",
+ search for end of text propertized with :vc-annotate-prefix.
+
+2007-03-24 Martin Rudalics <rudalics@gmx.at>
+
+ * whitespace.el (top level): Remove calls putting
+ permanent-local nil property since these are no-ops.
+
+ * man.el (Man-support-local-filenames): Assure that
+ default-directory exists when doing call-process.
+
+2007-03-23 David Vazquez <xeos00@gmail.com> (tiny change)
+
+ * progmodes/m4-mode.el (m4-m4-buffer, m4-m4-region):
+ Fix omission bug: Use m4-program-options to construct shell command.
+
+2007-03-23 David Kastrup <dak@gnu.org>
+
+ * progmodes/cc-mode.el (c-make-emacs-variables-local):
+ Use `mapcar' rather than `mapcan' to silence compiler warning.
+
+2007-03-22 Ralf Angeli <angeli@caeruleus.net>
+
+ * textmodes/reftex.el, textmodes/reftex-vars.el,
+ * textmodes/reftex-toc.el, textmodes/reftex-sel.el,
+ * textmodes/reftex-ref.el, textmodes/reftex-parse.el,
+ * textmodes/reftex-index.el, textmodes/reftex-global.el,
+ * textmodes/reftex-dcr.el, textmodes/reftex-cite.el,
+ * textmodes/reftex-auc.el: Add maintainer address.
+
+2007-03-22 Carsten Dominik <dominik@science.uva.nl>
+
+ * textmodes/org.el (org-agenda-mode, org-table-edit-formulas):
+ Make sure that `global-font-lock-mode' does not turn on font-lock
+ in these buffers.
+
+2007-03-21 Kim F. Storm <storm@cua.dk>
+
+ * xt-mouse.el (xt-mouse-epoch): New variable.
+ (xterm-mouse-event): Use float-time.
+
+2007-03-21 Nick Roberts <nickrob@snap.net.nz>
+
+ * xt-mouse.el (xterm-mouse-event): Compute a timestamp using
+ current-time.
+
+2007-03-21 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * complete.el (read-file-name-internal): Don't add the final > if the
+ completion is not finished (re-application of this patch, which was
+ accidentally undone by Eli).
+
+2007-03-21 Chong Yidong <cyd@stupidchicken.com>
+
+ * emulation/viper.el (viper-non-hook-settings): Handle mouse
+ clicks in describe-key and describe-key-briefly advice a little better.
+
2007-03-21 Juanma Barranquero <lekktu@gmail.com>
* server.el (server-process-filter): Cancel any pending isearch.
@@ -71,8 +762,8 @@
2007-03-19 Martin Rudalics <rudalics@gmx.at>
- * font-lock.el (lisp-font-lock-keywords-1): Highlight
- define-globalized-minor-mode as a keyword.
+ * font-lock.el (lisp-font-lock-keywords-1):
+ Highlight define-globalized-minor-mode as a keyword.
2007-03-19 Kim F. Storm <storm@cua.dk>
@@ -110,8 +801,7 @@
2007-03-18 Detlev Zundel <dzu@gnu.org>
* emacs-lisp/re-builder.el (reb-update-overlays): Do not mark
- zero-width regexps as invalid but rather at least count them
- correctly.
+ zero-width regexps as invalid but rather at least count them correctly.
2007-03-18 Thien-Thi Nguyen <ttn@gnu.org>
@@ -143,8 +833,8 @@
2007-03-17 Chong Yidong <cyd@stupidchicken.com>
- * simple.el (line-move-1): Respect
- `inhibit-line-move-field-capture' property.
+ * simple.el (line-move-1):
+ Respect `inhibit-line-move-field-capture' property.
2007-03-13 Chong Yidong <cyd@stupidchicken.com>
@@ -157,7 +847,7 @@
2007-03-12 Lawrence Mitchell <wence@gmx.li> (tiny change)
* tempo.el (tempo-insert): Deal with 'r> if it appears
- specified with a prompt argument.
+ specified with a prompt argument.
2007-03-12 Carsten Dominik <dominik@science.uva.nl>
@@ -403,7 +1093,7 @@
* emacs-lisp/lisp-mode.el (calculate-lisp-indent):
Redo previous change.
-2007-03-04 Kevin Rodgers <kevin.d.rodgers@gmail.com> (tiny change)
+2007-03-04 Kevin Rodgers <kevin.d.rodgers@gmail.com> (tiny change)
* diff-mode.el (diff-mode): Doc fix.
@@ -493,7 +1183,7 @@
* ps-print.el: Replace (defvar VAR nil) by (defvar VAR).
(ps-setup): Print which Emacsen is running ps-print package.
-2007-03-01 Stuart Herring <herring@lanl.gov> (tiny change)
+2007-03-01 Stuart Herring <herring@lanl.gov>
* files.el (set-auto-mode-0): Use `indirect-function'.
(hack-one-local-variable): Don't reapply current major mode.
@@ -537,7 +1227,7 @@
* help.el (where-is): Fail gracefully when not passed a command.
-2007-02-28 Stuart Herring <herring@lanl.gov> (tiny change)
+2007-02-28 Stuart Herring <herring@lanl.gov>
* find-lisp.el (find-lisp-default-directory-predicate):
Fix bug: Do symlink check on expanded filename.
@@ -1437,7 +2127,7 @@
2007-01-27 Guanpeng Xu <herberteuler@hotmail.com>
* add-log.el (add-log-current-defun): Skip the semicolon ``;'' for
- enum/union/struct/class definition.
+ enum/union/struct/class definition.
Revert change to call `forward-sexp' multiple times.
2007-01-27 Chong Yidong <cyd@stupidchicken.com>
@@ -2044,7 +2734,7 @@
* international/mule-cmds.el (select-safe-coding-system-interactively):
Fix message.
-2006-12-30 Kevin Rodgers <kevin.d.rodgers@gmail.com> (tiny change)
+2006-12-30 Kevin Rodgers <kevin.d.rodgers@gmail.com> (tiny change)
* files.el (backup-buffer): Show entire backup file name in msg.
@@ -2501,20 +3191,20 @@
2006-12-09 Martin Rudalics <rudalics@gmx.at>
* wdired.el (wdired-change-to-wdired-mode, wdired-finish-edit)
- (wdired-search-and-rename): Simplify code.
+ (wdired-search-and-rename): Simplify code.
(wdired-preprocess-files, wdired-preprocess-perms): Make
- read-only property of preceding character rear-nonsticky to
- avoid that it can be modified. Put old-name and old-link
- properties on character preceding name and replace
- put-text-property by add-text-properties.
- (wdired-get-filename, wdired-get-previous-link): Get old-name
- and old-link properties from character preceding name and
- simplify code.
+ read-only property of preceding character rear-nonsticky to
+ avoid that it can be modified. Put old-name and old-link
+ properties on character preceding name and replace
+ put-text-property by add-text-properties.
+ (wdired-get-filename, wdired-get-previous-link): Get old-name
+ and old-link properties from character preceding name and
+ simplify code.
(wdired-preprocess-perms, wdired-set-bit, wdired-toggle-bit)
- (wdired-perms-to-number): Make local-map property
- rear-nonsticky to avoid that text following permissions may be
- modified. Use add-text-properties instead of put-text-property
- when changing a permission bit.
+ (wdired-perms-to-number): Make local-map property
+ rear-nonsticky to avoid that text following permissions may be
+ modified. Use add-text-properties instead of put-text-property
+ when changing a permission bit.
(wdired-change-to-dired-mode): Remove stickiness properties.
2006-12-09 Juanma Barranquero <lekktu@gmail.com>
@@ -12650,7 +13340,7 @@
English aspell dictionary is installed, use the first entry of
ispell-dictionary-alist-1.
-2006-01-27 Kevin Rodgers <ihs_4664@yahoo.com> (tiny change)
+2006-01-27 Kevin Rodgers <ihs_4664@yahoo.com> (tiny change)
* textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate):
Doc fix.
@@ -14672,7 +15362,7 @@
(hi-lock-find-patterns, hi-lock-font-lock-hook):
Replace hi-lock-buffer-mode with hi-lock-mode.
-2005-12-10 Kevin Rodgers <ihs_4664@yahoo.com> (tiny change)
+2005-12-10 Kevin Rodgers <ihs_4664@yahoo.com> (tiny change)
* emacs-lisp/lisp.el (lisp-complete-symbol): Regenerate the
completion list, even after a partial completion has been
diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el
index 1b0f3a3d584..8630d3e8b06 100644
--- a/lisp/arc-mode.el
+++ b/lisp/arc-mode.el
@@ -1415,7 +1415,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(time2 (archive-l-e (+ p 17) 2)) ;and UNIX format in level 2 header.)
(hdrlvl (char-after (+ p 20))) ;header level
thsize ;total header size (base + extensions)
- fnlen efnname fiddle ifnname width p2
+ fnlen efnname osid fiddle ifnname width p2
neh ;beginning of next extension header (level 1 and 2)
mode modestr uid gid text dir prname
gname uname modtime moddate)
@@ -1474,7 +1474,22 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(setq thsize (- neh p))))
(if (= hdrlvl 0) ;total header size
(setq thsize hsize))
- (setq fiddle (if efnname (string= efnname (upcase efnname))))
+ ;; OS ID field not present in level 0 header, use code 0 "generic"
+ ;; in that case as per lha program header.c get_header()
+ (setq osid (cond ((= hdrlvl 0) 0)
+ ((= hdrlvl 1) (char-after (+ p 22 fnlen 2)))
+ ((= hdrlvl 2) (char-after (+ p 23)))))
+ ;; Filename fiddling must follow the lha program, otherwise the name
+ ;; passed to "lha pq" etc won't match (which for an extract silently
+ ;; results in no output). As of version 1.14i it goes from the OS ID,
+ ;; - For 'M' MSDOS: msdos_to_unix_filename() downcases always, and
+ ;; converts "\" to "/".
+ ;; - For 0 generic: generic_to_unix_filename() downcases if there's
+ ;; no lower case already present, and converts "\" to "/".
+ ;; - For 'm' MacOS: macos_to_unix_filename() changes "/" to ":" and
+ ;; ":" to "/"
+ (setq fiddle (cond ((= ?M osid) t)
+ ((= 0 osid) (string= efnname (upcase efnname)))))
(setq ifnname (if fiddle (downcase efnname) efnname))
(setq prname (if dir (concat dir ifnname) ifnname))
(setq width (if prname (string-width prname) 0))
diff --git a/lisp/autorevert.el b/lisp/autorevert.el
index bd9d6fe76e8..170ca4b88c2 100644
--- a/lisp/autorevert.el
+++ b/lisp/autorevert.el
@@ -278,7 +278,7 @@ the list of old buffers.")
(add-hook 'find-file-hook
(lambda ()
(set (make-local-variable 'auto-revert-tail-pos)
- (save-restriction (widen) (1- (point-max))))))
+ (nth 7 (file-attributes buffer-file-name)))))
;; Functions:
@@ -341,7 +341,7 @@ Use `auto-revert-mode' for changes other than appends!"
(add-hook 'before-save-hook (lambda () (auto-revert-tail-mode 0)) nil t)
(or (local-variable-p 'auto-revert-tail-pos) ; don't lose prior position
(set (make-local-variable 'auto-revert-tail-pos)
- (save-restriction (widen) (1- (point-max)))))
+ (nth 7 (file-attributes buffer-file-name))))
;; let auto-revert-mode set up the mechanism for us if it isn't already
(or auto-revert-mode
(let ((auto-revert-tail-mode t))
diff --git a/lisp/button.el b/lisp/button.el
index d3c4cd8ea9e..423aef5f78f 100644
--- a/lisp/button.el
+++ b/lisp/button.el
@@ -89,9 +89,6 @@ Mode-specific keymaps may want to use this as their parent keymap.")
;; Prevent insertions adjacent to the text-property buttons from
;; inheriting its properties.
(put 'default-button 'rear-nonsticky t)
-;; Text property buttons don't have a `button' property of their own, so
-;; they inherit this.
-(put 'default-button 'button t)
;; A `category-symbol' property for the default button type
(put 'button 'button-category-symbol 'default-button)
@@ -316,7 +313,11 @@ Also see `insert-text-button'."
(setcar (cdr type-entry)
(button-category-symbol (car (cdr type-entry))))))
;; Now add all the text properties at once
- (add-text-properties beg end properties)
+ (add-text-properties beg end
+ ;; Each button should have a non-eq `button'
+ ;; property so that next-single-property-change can
+ ;; detect boundaries reliably.
+ (cons 'button (cons (list t) properties)))
;; Return something that can be used to get at the button.
beg)
@@ -365,16 +366,29 @@ instead of starting at the next button."
(next-button pos))))
(defun previous-button (pos &optional count-current)
- "Return the Nth button before position POS in the current buffer.
+ "Return the previous button before position POS in the current buffer.
If COUNT-CURRENT is non-nil, count any button at POS in the search,
instead of starting at the next button."
- (unless count-current
- (setq pos (previous-single-char-property-change pos 'button)))
- (and (> pos (point-min))
- (or (button-at (1- pos))
- ;; We must have originally been on a button, and are now in
- ;; the inter-button space. Recurse to find a button.
- (previous-button pos))))
+ (let ((button (button-at pos)))
+ (if button
+ (if count-current
+ button
+ ;; We started out on a button, so move to its start and look
+ ;; for the previous button boundary.
+ (setq pos (previous-single-char-property-change
+ (button-start button) 'button))
+ (let ((new-button (button-at pos)))
+ (if new-button
+ ;; We are in a button again; this can happen if there
+ ;; are adjacent buttons (or at bob).
+ (unless (= pos (button-start button)) new-button)
+ ;; We are now in the space between buttons.
+ (previous-button pos))))
+ ;; We started out in the space between buttons.
+ (setq pos (previous-single-char-property-change pos 'button))
+ (or (button-at pos)
+ (and (> pos (point-min))
+ (button-at (1- pos)))))))
;; User commands
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index 75e1c83df03..12b1dc6da02 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -1148,6 +1148,11 @@ If nil, selections displayed but ignored.")
(defvar calc-alg-map) ; Defined in calc-ext.el
+(defun calc-version ()
+ "Return version of this version of Calc."
+ (interactive)
+ (message (concat "Calc version " calc-version)))
+
(defun calc-mode ()
"Calculator major mode.
@@ -1258,8 +1263,7 @@ commands given here will actually operate on the *Calculator* stack."
(set (make-local-variable 'calc-main-buffer) buf))
(when (= (buffer-size) 0)
(let ((buffer-read-only nil))
- (insert (propertize (concat "Emacs Calculator v" calc-version
- " by Dave Gillespie\n")
+ (insert (propertize (concat "Emacs Calculator Trail\n")
'font-lock-face 'italic))))
(run-mode-hooks 'calc-trail-mode-hook))
diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el
index 82fa0e66dbf..02865c994e3 100644
--- a/lisp/calendar/appt.el
+++ b/lisp/calendar/appt.el
@@ -233,8 +233,8 @@ The variable `appt-audible' controls the audible reminder."
;; vars appt-msg-window and appt-visible are dropped.
(let ((appt-display-format
(if (eq appt-display-format 'ignore)
- (cond (appt-msg-window 'window)
- (appt-visible 'echo))
+ (cond (appt-msg-window 'window)
+ (appt-visible 'echo))
appt-display-format)))
(cond ((eq appt-display-format 'window)
(funcall appt-disp-window-function
@@ -457,7 +457,9 @@ NEW-TIME is a string giving the date."
(same-window-p (buffer-name appt-disp-buf)))
;; By default, split the bottom window and use the lower part.
(appt-select-lowest-window)
- (select-window (split-window)))
+ ;; Split the window, unless it's too small to do so.
+ (when (>= (window-height) (* 2 window-min-height))
+ (select-window (split-window))))
(switch-to-buffer appt-disp-buf))
(calendar-set-mode-line
(format " Appointment in %s minutes. %s " min-to-app new-time))
diff --git a/lisp/calendar/cal-china.el b/lisp/calendar/cal-china.el
index a838141db1c..7f6646dda64 100644
--- a/lisp/calendar/cal-china.el
+++ b/lisp/calendar/cal-china.el
@@ -43,12 +43,6 @@
;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
;; and Nachum Dershowitz, Cambridge University Press (2001).
-;; Comments, corrections, and improvements should be sent to
-;; Edward M. Reingold Department of Computer Science
-;; (217) 333-6733 University of Illinois at Urbana-Champaign
-;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
-;; Urbana, Illinois 61801
-
;;; Code:
(defvar date)
diff --git a/lisp/calendar/cal-coptic.el b/lisp/calendar/cal-coptic.el
index 23de17a16a8..b5cf96949c6 100644
--- a/lisp/calendar/cal-coptic.el
+++ b/lisp/calendar/cal-coptic.el
@@ -34,12 +34,6 @@
;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
;; and Nachum Dershowitz, Cambridge University Press (2001).
-;; Comments, corrections, and improvements should be sent to
-;; Edward M. Reingold Department of Computer Science
-;; (217) 333-6733 University of Illinois at Urbana-Champaign
-;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
-;; Urbana, Illinois 61801
-
;;; Code:
(defvar date)
diff --git a/lisp/calendar/cal-dst.el b/lisp/calendar/cal-dst.el
index 3aea69b8ccf..6159d7e9dc1 100644
--- a/lisp/calendar/cal-dst.el
+++ b/lisp/calendar/cal-dst.el
@@ -31,12 +31,6 @@
;; This collection of functions implements the features of calendar.el and
;; holiday.el that deal with daylight saving time.
-;; Comments, corrections, and improvements should be sent to
-;; Edward M. Reingold Department of Computer Science
-;; (217) 333-6733 University of Illinois at Urbana-Champaign
-;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
-;; Urbana, Illinois 61801
-
;;; Code:
(require 'calendar)
@@ -266,12 +260,20 @@ Returns a list (YEAR START END), where START and END are
expressions that when evaluated return the start and end dates,
respectively. This function first attempts to use pre-calculated
data from `calendar-dst-transition-cache', otherwise it calls
-`calendar-dst-find-data' (and adds the results to the cache)."
+`calendar-dst-find-data' (and adds the results to the cache).
+If dates in YEAR cannot be handled by `encode-time' (e.g. if they
+are too large to be represented as a lisp integer), then rather
+than an error this function returns the result appropriate for
+the current year."
(let ((e (assoc year calendar-dst-transition-cache))
f)
(or e
(progn
- (setq e (calendar-dst-find-data (encode-time 1 0 0 1 1 year))
+ (setq e (calendar-dst-find-data
+ (condition-case nil
+ (encode-time 1 0 0 1 1 year)
+ (error
+ (encode-time 1 0 0 1 1 (nth 5 (decode-time))))))
f (nth 4 e)
e (list year f (nth 5 e))
calendar-dst-transition-cache
diff --git a/lisp/calendar/cal-french.el b/lisp/calendar/cal-french.el
index 99af7042472..439dbd34632 100644
--- a/lisp/calendar/cal-french.el
+++ b/lisp/calendar/cal-french.el
@@ -37,12 +37,6 @@
;; E. M. Reingold, N. Dershowitz, and S. M. Clamen, Software--Practice and
;; Experience, Volume 23, Number 4 (April, 1993), pages 383-404.
-;; Comments, corrections, and improvements should be sent to
-;; Edward M. Reingold Department of Computer Science
-;; (217) 333-6733 University of Illinois at Urbana-Champaign
-;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
-;; Urbana, Illinois 61801
-
;;; Code:
(defvar date)
diff --git a/lisp/calendar/cal-hebrew.el b/lisp/calendar/cal-hebrew.el
index a61bea8eacf..9f32d9df471 100644
--- a/lisp/calendar/cal-hebrew.el
+++ b/lisp/calendar/cal-hebrew.el
@@ -35,12 +35,6 @@
;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
;; and Nachum Dershowitz, Cambridge University Press (2001).
-;; Comments, corrections, and improvements should be sent to
-;; Edward M. Reingold Department of Computer Science
-;; (217) 333-6733 University of Illinois at Urbana-Champaign
-;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
-;; Urbana, Illinois 61801
-
;;; Code:
(defvar date)
diff --git a/lisp/calendar/cal-islam.el b/lisp/calendar/cal-islam.el
index 28faed4d397..57c0f9de65e 100644
--- a/lisp/calendar/cal-islam.el
+++ b/lisp/calendar/cal-islam.el
@@ -34,12 +34,6 @@
;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
;; and Nachum Dershowitz, Cambridge University Press (2001).
-;; Comments, corrections, and improvements should be sent to
-;; Edward M. Reingold Department of Computer Science
-;; (217) 333-6733 University of Illinois at Urbana-Champaign
-;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
-;; Urbana, Illinois 61801
-
;;; Code:
(defvar date)
diff --git a/lisp/calendar/cal-iso.el b/lisp/calendar/cal-iso.el
index 93b39cd4d15..052087e2558 100644
--- a/lisp/calendar/cal-iso.el
+++ b/lisp/calendar/cal-iso.el
@@ -34,12 +34,6 @@
;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
;; and Nachum Dershowitz, Cambridge University Press (2001).
-;; Comments, corrections, and improvements should be sent to
-;; Edward M. Reingold Department of Computer Science
-;; (217) 333-6733 University of Illinois at Urbana-Champaign
-;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
-;; Urbana, Illinois 61801
-
;;; Code:
(defvar date)
diff --git a/lisp/calendar/cal-julian.el b/lisp/calendar/cal-julian.el
index 768e57bbab5..ff6a3f72e1b 100644
--- a/lisp/calendar/cal-julian.el
+++ b/lisp/calendar/cal-julian.el
@@ -34,12 +34,6 @@
;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
;; and Nachum Dershowitz, Cambridge University Press (2001).
-;; Comments, corrections, and improvements should be sent to
-;; Edward M. Reingold Department of Computer Science
-;; (217) 333-6733 University of Illinois at Urbana-Champaign
-;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
-;; Urbana, Illinois 61801
-
;;; Code:
(defvar date)
diff --git a/lisp/calendar/cal-mayan.el b/lisp/calendar/cal-mayan.el
index 20703cb85b6..2cb6d31022e 100644
--- a/lisp/calendar/cal-mayan.el
+++ b/lisp/calendar/cal-mayan.el
@@ -43,8 +43,6 @@
;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
;; Urbana, Illinois 61801
-;; Comments, improvements, and bug reports should be sent to Reingold.
-
;; Technical details of the Mayan calendrical calculations can be found in
;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
;; and Nachum Dershowitz, Cambridge University Press (2001), and in
diff --git a/lisp/calendar/cal-menu.el b/lisp/calendar/cal-menu.el
index 1320f778cc6..25929976dbd 100644
--- a/lisp/calendar/cal-menu.el
+++ b/lisp/calendar/cal-menu.el
@@ -31,12 +31,6 @@
;; This collection of functions implements menu bar and popup menu support for
;; calendar.el.
-;; Comments, corrections, and improvements should be sent to
-;; Edward M. Reingold Department of Computer Science
-;; (217) 333-6733 University of Illinois at Urbana-Champaign
-;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
-;; Urbana, Illinois 61801
-
;;; Code:
(defvar displayed-month)
diff --git a/lisp/calendar/cal-move.el b/lisp/calendar/cal-move.el
index b12289c7456..3a08b98bf00 100644
--- a/lisp/calendar/cal-move.el
+++ b/lisp/calendar/cal-move.el
@@ -30,12 +30,6 @@
;; This collection of functions implements movement in the calendar for
;; calendar.el.
-;; Comments, corrections, and improvements should be sent to
-;; Edward M. Reingold Department of Computer Science
-;; (217) 333-6733 University of Illinois at Urbana-Champaign
-;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
-;; Urbana, Illinois 61801
-
;;; Code:
(defvar displayed-month)
diff --git a/lisp/calendar/cal-persia.el b/lisp/calendar/cal-persia.el
index 6055de121af..a37f9c1f27e 100644
--- a/lisp/calendar/cal-persia.el
+++ b/lisp/calendar/cal-persia.el
@@ -30,16 +30,6 @@
;; This collection of functions implements the features of calendar.el and
;; diary.el that deal with the Persian calendar.
-;; Technical details of all the calendrical calculations can be found in
-;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
-;; and Nachum Dershowitz, Cambridge University Press (2001).
-
-;; Comments, corrections, and improvements should be sent to
-;; Edward M. Reingold Department of Computer Science
-;; (217) 333-6733 University of Illinois at Urbana-Champaign
-;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
-;; Urbana, Illinois 61801
-
;;; Code:
(defvar date)
diff --git a/lisp/calendar/cal-x.el b/lisp/calendar/cal-x.el
index b7f1748ff34..5f2c89e82c5 100644
--- a/lisp/calendar/cal-x.el
+++ b/lisp/calendar/cal-x.el
@@ -31,12 +31,6 @@
;; This collection of functions implements dedicated frames in X for
;; calendar.el.
-;; Comments, corrections, and improvements should be sent to
-;; Edward M. Reingold Department of Computer Science
-;; (217) 333-6733 University of Illinois at Urbana-Champaign
-;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
-;; Urbana, Illinois 61801
-
;;; Code:
(require 'calendar)
diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el
index fa7a68acd30..03f9a95fe37 100644
--- a/lisp/calendar/calendar.el
+++ b/lisp/calendar/calendar.el
@@ -90,12 +90,6 @@
;; reingold@cs.uiuc.edu with the SUBJECT "send-paper-cal" (no quotes) and
;; the message BODY containing your mailing address (snail).
-;; Comments, corrections, and improvements should be sent to
-;; Edward M. Reingold Department of Computer Science
-;; (217) 333-6733 University of Illinois at Urbana-Champaign
-;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
-;; Urbana, Illinois 61801
-
;;; Code:
(defvar displayed-month)
@@ -301,6 +295,11 @@ calendar."
:type 'boolean
:group 'holidays)
+(defcustom calendar-mode-hook nil
+ "Hook run when entering `calendar-mode'."
+ :type 'hook
+ :group 'calendar-hooks)
+
;;;###autoload
(defcustom calendar-load-hook nil
"List of functions to be called after the calendar is first loaded.
@@ -624,6 +623,10 @@ See the documentation of `diary-date-forms' for an explanation."
(choice symbol regexp)))))
:group 'diary)
+(autoload 'diary-font-lock-keywords "diary-lib")
+(autoload 'diary-live-p "diary-lib")
+(defvar diary-font-lock-keywords)
+
(defcustom diary-date-forms
(if european-calendar-style
european-date-diary-pattern
@@ -661,6 +664,15 @@ a portion of the first word of the diary entry."
(repeat (list :inline t :format "%v"
(symbol :tag "Keyword")
(choice symbol regexp)))))
+ :initialize 'custom-initialize-default
+ :set (lambda (symbol value)
+ (unless (equal value (eval symbol))
+ (custom-set-default symbol value)
+ (setq diary-font-lock-keywords (diary-font-lock-keywords))
+ ;; Need to redraw not just to get new font-locking, but also
+ ;; to pick up any newly recognized entries.
+ (and (diary-live-p)
+ (diary))))
:group 'diary)
;;;###autoload
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index 72620a7f9bb..df01a508031 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -29,12 +29,6 @@
;; This collection of functions implements the diary features as described
;; in calendar.el.
-;; Comments, corrections, and improvements should be sent to
-;; Edward M. Reingold Department of Computer Science
-;; (217) 333-6733 University of Illinois at Urbana-Champaign
-;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
-;; Urbana, Illinois 61801
-
;;; Code:
(require 'calendar)
@@ -263,6 +257,16 @@ search."
(setq attr-list (cdr attr-list)))))
(list entry ret-attr))))
+(defun diary-set-maybe-redraw (symbol value)
+ "Set SYMBOL's value to VALUE, and redraw the diary if necessary.
+Redraws the diary if it is being displayed (note this is not the same as
+just visiting the `diary-file'), and SYMBOL's value is to be changed."
+ (let ((oldvalue (eval symbol)))
+ (custom-set-default symbol value)
+ (and (not (equal value oldvalue))
+ (diary-live-p)
+ ;; Note this assumes diary was called without prefix arg.
+ (diary))))
;; This can be removed once the kill/yank treatment of invisible text
;; (see etc/TODO) is fixed. -- gm
@@ -292,27 +296,22 @@ Only used if `diary-header-line-flag' is non-nil."
(defvar diary-saved-point) ; internal
+;; The first version of this also checked for diary-selective-display
+;; in the non-fancy case. This was an attempt to distinguish between
+;; displaying the diary and just visiting the diary file. However,
+;; when using fancy diary, calling diary when there are no entries to
+;; display does not create the fancy buffer, nor does it switch on
+;; selective-display in the diary buffer. This means some
+;; customizations will not take effect, eg:
+;; http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-03/msg00466.html
+;; So the check for selective-display was dropped. This means the
+;; diary will be displayed if one customizes a diary variable while
+;; just visiting the diary-file. This is i) unlikely, and ii) no great loss.
(defun diary-live-p ()
- "Return non-nil if the diary is being displayed.
-This is not the same as just visiting the `diary-file'."
+ "Return non-nil if the diary is being displayed."
(or (get-buffer fancy-diary-buffer)
- (when diary-file
- (let ((dbuff (find-buffer-visiting
- (substitute-in-file-name diary-file))))
- (when dbuff
- (with-current-buffer dbuff
- diary-selective-display))))))
-
-(defun diary-set-maybe-redraw (symbol value)
- "Set SYMBOL's value to VALUE, and redraw the diary if necessary.
-Redraws the diary if it is being displayed (note this is not the same as
-just visiting the `diary-file'), and SYMBOL's value is to be changed."
- (let ((oldvalue (eval symbol)))
- (custom-set-default symbol value)
- (and (not (equal value oldvalue))
- (diary-live-p)
- ;; Note this assumes diary was called without prefix arg.
- (diary))))
+ (and diary-file
+ (find-buffer-visiting (substitute-in-file-name diary-file)))))
(defcustom number-of-diary-entries 1
"Specifies how many days of diary entries are to be displayed initially.
@@ -1990,51 +1989,53 @@ names."
(eval-when-compile (require 'cal-hebrew)
(require 'cal-islam))
-(defvar diary-font-lock-keywords
- (append
- (diary-font-lock-date-forms calendar-month-name-array
- nil calendar-month-abbrev-array)
- (when (or (memq 'mark-hebrew-diary-entries
- nongregorian-diary-marking-hook)
- (memq 'list-hebrew-diary-entries
- nongregorian-diary-listing-hook))
- (require 'cal-hebrew)
- (diary-font-lock-date-forms
- calendar-hebrew-month-name-array-leap-year
- hebrew-diary-entry-symbol))
- (when (or (memq 'mark-islamic-diary-entries
- nongregorian-diary-marking-hook)
- (memq 'list-islamic-diary-entries
- nongregorian-diary-listing-hook))
- (require 'cal-islam)
- (diary-font-lock-date-forms
- calendar-islamic-month-name-array
- islamic-diary-entry-symbol))
- (list
- (cons
- (concat "^" (regexp-quote diary-include-string) ".*$")
- 'font-lock-keyword-face)
- (cons
- (concat "^" (regexp-quote diary-nonmarking-symbol)
- "?\\(" (regexp-quote sexp-diary-entry-symbol) "\\)")
- '(1 font-lock-reference-face))
- (cons
- (concat "^" (regexp-quote diary-nonmarking-symbol))
- 'font-lock-reference-face)
- (cons
- (concat "^" (regexp-quote diary-nonmarking-symbol)
- "?\\(" (regexp-quote hebrew-diary-entry-symbol) "\\)")
- '(1 font-lock-reference-face))
- (cons
- (concat "^" (regexp-quote diary-nonmarking-symbol)
- "?\\(" (regexp-quote islamic-diary-entry-symbol) "\\)")
- '(1 font-lock-reference-face))
- '(diary-font-lock-sexps . font-lock-keyword-face)
- `(,(concat "\\(^\\|\\s-\\)"
- diary-time-regexp "\\(-" diary-time-regexp "\\)?")
- . 'diary-time)))
- "Forms to highlight in `diary-mode'.")
-
+(defun diary-font-lock-keywords ()
+ "Return a value for the variable `diary-font-lock-keywords'."
+ (append
+ (diary-font-lock-date-forms calendar-month-name-array
+ nil calendar-month-abbrev-array)
+ (when (or (memq 'mark-hebrew-diary-entries
+ nongregorian-diary-marking-hook)
+ (memq 'list-hebrew-diary-entries
+ nongregorian-diary-listing-hook))
+ (require 'cal-hebrew)
+ (diary-font-lock-date-forms
+ calendar-hebrew-month-name-array-leap-year
+ hebrew-diary-entry-symbol))
+ (when (or (memq 'mark-islamic-diary-entries
+ nongregorian-diary-marking-hook)
+ (memq 'list-islamic-diary-entries
+ nongregorian-diary-listing-hook))
+ (require 'cal-islam)
+ (diary-font-lock-date-forms
+ calendar-islamic-month-name-array
+ islamic-diary-entry-symbol))
+ (list
+ (cons
+ (concat "^" (regexp-quote diary-include-string) ".*$")
+ 'font-lock-keyword-face)
+ (cons
+ (concat "^" (regexp-quote diary-nonmarking-symbol)
+ "?\\(" (regexp-quote sexp-diary-entry-symbol) "\\)")
+ '(1 font-lock-reference-face))
+ (cons
+ (concat "^" (regexp-quote diary-nonmarking-symbol))
+ 'font-lock-reference-face)
+ (cons
+ (concat "^" (regexp-quote diary-nonmarking-symbol)
+ "?\\(" (regexp-quote hebrew-diary-entry-symbol) "\\)")
+ '(1 font-lock-reference-face))
+ (cons
+ (concat "^" (regexp-quote diary-nonmarking-symbol)
+ "?\\(" (regexp-quote islamic-diary-entry-symbol) "\\)")
+ '(1 font-lock-reference-face))
+ '(diary-font-lock-sexps . font-lock-keyword-face)
+ `(,(concat "\\(^\\|\\s-\\)"
+ diary-time-regexp "\\(-" diary-time-regexp "\\)?")
+ . 'diary-time))))
+
+(defvar diary-font-lock-keywords (diary-font-lock-keywords)
+ "Forms to highlight in `diary-mode'.")
;; Following code from Dave Love <fx@gnu.org>.
;; Import Outlook-format appointments from mail messages in Gnus or
diff --git a/lisp/calendar/holidays.el b/lisp/calendar/holidays.el
index 6f53a47221a..fc6e6315916 100644
--- a/lisp/calendar/holidays.el
+++ b/lisp/calendar/holidays.el
@@ -45,12 +45,6 @@
;; reingold@cs.uiuc.edu with the SUBJECT "send-paper-cal" (no quotes) and
;; the message BODY containing your mailing address (snail).
-;; Comments, corrections, and improvements should be sent to
-;; Edward M. Reingold Department of Computer Science
-;; (217) 333-6733 University of Illinois at Urbana-Champaign
-;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
-;; Urbana, Illinois 61801
-
;;; Code:
(defvar displayed-month)
diff --git a/lisp/calendar/lunar.el b/lisp/calendar/lunar.el
index 33da7cef8e0..8aa062d69c3 100644
--- a/lisp/calendar/lunar.el
+++ b/lisp/calendar/lunar.el
@@ -43,12 +43,6 @@
;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
;; and Nachum Dershowitz, Cambridge University Press (2001).
-;; Comments, corrections, and improvements should be sent to
-;; Edward M. Reingold Department of Computer Science
-;; (217) 333-6733 University of Illinois at Urbana-Champaign
-;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
-;; Urbana, Illinois 61801
-
;;; Code:
(defvar date)
diff --git a/lisp/calendar/solar.el b/lisp/calendar/solar.el
index c4a8352a8d8..4281c0e1307 100644
--- a/lisp/calendar/solar.el
+++ b/lisp/calendar/solar.el
@@ -53,12 +53,6 @@
;; ``Calendrical Calculations: The Millennium Edition'' by Edward M. Reingold
;; and Nachum Dershowitz, Cambridge University Press (2001).
-;; Comments, corrections, and improvements should be sent to
-;; Edward M. Reingold Department of Computer Science
-;; (217) 333-6733 University of Illinois at Urbana-Champaign
-;; reingold@cs.uiuc.edu 1304 West Springfield Avenue
-;; Urbana, Illinois 61801
-
;;; Code:
(defvar date)
diff --git a/lisp/comint.el b/lisp/comint.el
index ee102c423b4..7d81f357e22 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -1502,6 +1502,7 @@ Similarly for Soar, Scheme, etc."
;; Note that the input string does not include its terminal newline.
(let ((proc (get-buffer-process (current-buffer))))
(if (not proc) (error "Current buffer has no process")
+ (widen)
(let* ((pmark (process-mark proc))
(intxt (if (>= (point) (marker-position pmark))
(progn (if comint-eol-on-send (end-of-line))
@@ -1646,8 +1647,8 @@ and moves the prompt overlay."
(let ((inhibit-read-only t)
(inhibit-modification-hooks t))
(add-text-properties (overlay-start comint-last-prompt-overlay)
- (overlay-end comint-last-prompt-overlay)
- (overlay-properties comint-last-prompt-overlay)))))
+ (overlay-end comint-last-prompt-overlay)
+ (overlay-properties comint-last-prompt-overlay)))))
(defun comint-carriage-motion (start end)
"Interpret carriage control characters in the region from START to END.
@@ -2593,7 +2594,7 @@ its response can be seen."
(proc-mark (process-mark proc)))
(display-buffer proc-buf)
(set-buffer proc-buf) ; but it's not the selected *window*
- (let ((proc-win (get-buffer-window proc-buf))
+ (let ((proc-win (get-buffer-window proc-buf 0))
(proc-pt (marker-position proc-mark)))
(comint-send-string proc str) ; send the query
(accept-process-output proc) ; wait for some output
@@ -2959,7 +2960,7 @@ See also `comint-dynamic-complete-filename'."
(defun comint-dynamic-list-completions (completions)
"List in help buffer sorted COMPLETIONS.
Typing SPC flushes the help buffer."
- (let ((window (get-buffer-window "*Completions*")))
+ (let ((window (get-buffer-window "*Completions*" 0)))
(setq completions (sort completions 'string-lessp))
(if (and (eq last-command this-command)
window (window-live-p window) (window-buffer window)
diff --git a/lisp/compare-w.el b/lisp/compare-w.el
index e81c6cd3bc2..19ad84e11c0 100644
--- a/lisp/compare-w.el
+++ b/lisp/compare-w.el
@@ -32,7 +32,7 @@
;;; Code:
-(defgroup compare-w nil
+(defgroup compare-windows nil
"Compare text between windows."
:prefix "compare-"
:group 'tools)
@@ -52,18 +52,18 @@ any text before that point.
If the function returns the same value for both windows, then the
whitespace is considered to match, and is skipped."
:type '(choice regexp function)
- :group 'compare-w)
+ :group 'compare-windows)
(defcustom compare-ignore-whitespace nil
"*Non-nil means `compare-windows' ignores whitespace."
:type 'boolean
- :group 'compare-w
+ :group 'compare-windows
:version "22.1")
(defcustom compare-ignore-case nil
"*Non-nil means `compare-windows' ignores case differences."
:type 'boolean
- :group 'compare-w)
+ :group 'compare-windows)
(defcustom compare-windows-sync 'compare-windows-sync-default-function
"*Function or regexp that is used to synchronize points in two
@@ -87,10 +87,11 @@ regexp containing some field separator or a newline, depending on
the nature of the difference units separator. The variable can
be made buffer-local.
-If the value of this variable is `nil', then function `ding' is
-called to beep or flash the screen when points are mismatched."
- :type '(choice regexp function)
- :group 'compare-w
+If the value of this variable is `nil' (option \"No sync\"), then
+no synchronization is performed, and the function `ding' is called
+to beep or flash the screen when points are mismatched."
+ :type '(choice function regexp (const :tag "No sync" nil))
+ :group 'compare-windows
:version "22.1")
(defcustom compare-windows-sync-string-size 32
@@ -102,7 +103,7 @@ difference regions more coarse-grained.
The default value 32 is good for the most cases."
:type 'integer
- :group 'compare-w
+ :group 'compare-windows
:version "22.1")
(defcustom compare-windows-recenter nil
@@ -113,7 +114,7 @@ matching points side-by-side.
The value `(-1 0)' is useful if windows are split vertically,
and the value `((4) (4))' for horizontally split windows."
:type '(list sexp sexp)
- :group 'compare-w
+ :group 'compare-windows
:version "22.1")
(defcustom compare-windows-highlight t
@@ -125,13 +126,13 @@ out all highlighting later with the command `compare-windows-dehighlight'."
:type '(choice (const :tag "No highlighting" nil)
(const :tag "Persistent highlighting" persistent)
(other :tag "Highlight until next command" t))
- :group 'compare-w
+ :group 'compare-windows
:version "22.1")
(defface compare-windows
'((t :inherit lazy-highlight))
"Face for highlighting of compare-windows difference regions."
- :group 'compare-w
+ :group 'compare-windows
:version "22.1")
(defvar compare-windows-overlay1 nil)
diff --git a/lisp/complete.el b/lisp/complete.el
index ce5094d1aef..b1bb36f9dfa 100644
--- a/lisp/complete.el
+++ b/lisp/complete.el
@@ -187,6 +187,17 @@ If nil, means use the colon-separated path in the variable $INCPATH instead."
(define-key global-map [remap lisp-complete-symbol] 'PC-lisp-complete-symbol)))))
+(defvar PC-do-completion-end nil
+ "Internal variable used by `PC-do-completion'.")
+
+(make-variable-buffer-local 'PC-do-completion-end)
+
+(defvar PC-goto-end nil
+ "Internal variable set in `PC-do-completion', used in
+`choose-completion-string-functions'.")
+
+(make-variable-buffer-local 'PC-goto-end)
+
;;;###autoload
(define-minor-mode partial-completion-mode
"Toggle Partial Completion mode.
@@ -239,7 +250,16 @@ second TAB brings up the `*Completions*' buffer."
(if partial-completion-mode 'add-hook 'remove-hook)
'choose-completion-string-functions
(lambda (choice buffer mini-p base-size)
- (if mini-p (goto-char (point-max)))
+ ;; When completing M-: (lisp- ) with point before the ), it is
+ ;; not appropriate to go to point-max (unlike the filename case).
+ (if (and (not PC-goto-end)
+ mini-p)
+ (goto-char (point-max))
+ ;; Need a similar hack for the non-minibuffer-case -- gm.
+ (when PC-do-completion-end
+ (goto-char PC-do-completion-end)
+ (setq PC-do-completion-end nil)))
+ (setq PC-goto-end nil)
nil))
;; Build the env-completion and mapping table.
(when (and partial-completion-mode (null PC-env-vars-alist))
@@ -410,13 +430,19 @@ of `minibuffer-completion-table' and the minibuffer contents.")
(let ((result (try-completion string alist predicate)))
(if (eq result t) string result)))
-(defun PC-do-completion (&optional mode beg end)
+;; TODO document MODE magic...
+(defun PC-do-completion (&optional mode beg end goto-end)
+ "Internal function to do the work of partial completion.
+Text to be completed lies between BEG and END. Normally when
+replacing text in the minibuffer, this function replaces up to
+point-max (as is appropriate for completing a file name). If
+GOTO-END is non-nil, however, it instead replaces up to END."
(or beg (setq beg (minibuffer-prompt-end)))
(or end (setq end (point-max)))
(let* ((table minibuffer-completion-table)
(pred minibuffer-completion-predicate)
(filename (funcall PC-completion-as-file-name-predicate))
- (dirname nil) ; non-nil only if a filename is being completed
+ (dirname nil) ; non-nil only if a filename is being completed
;; The following used to be "(dirlength 0)" which caused the erasure of
;; the entire buffer text before `point' when inserting a completion
;; into a buffer.
@@ -681,7 +707,7 @@ of `minibuffer-completion-table' and the minibuffer contents.")
(forward-char 1)
(if (and (< (point) end)
(and (looking-at " ")
- (memq (aref prefix i)
+ (memq (aref prefix i)
PC-delims-list)))
;; replace " " by the actual delimiter
(progn
@@ -689,12 +715,12 @@ of `minibuffer-completion-table' and the minibuffer contents.")
(insert (substring prefix i (1+ i))))
;; insert a new character
(progn
- (and filename (looking-at "\\*")
- (progn
- (delete-char 1)
- (setq end (1- end))))
+ (and filename (looking-at "\\*")
+ (progn
+ (delete-char 1)
+ (setq end (1- end))))
(setq improved t)
- (insert (substring prefix i (1+ i)))
+ (insert (substring prefix i (1+ i)))
(setq end (1+ end)))))
(setq i (1+ i)))
(or pt (setq pt (point)))
@@ -729,7 +755,7 @@ of `minibuffer-completion-table' and the minibuffer contents.")
;; We changed it... would it be complete without the space?
(if (test-completion (buffer-substring 1 (1- end))
- table pred)
+ table pred)
(delete-region (1- end) end)))
(if improved
@@ -743,13 +769,30 @@ of `minibuffer-completion-table' and the minibuffer contents.")
(and completion-auto-help
(eq last-command this-command))
(eq mode 'help))
- (with-output-to-temp-buffer "*Completions*"
- (display-completion-list (sort helpposs 'string-lessp))
- (with-current-buffer standard-output
- ;; Record which part of the buffer we are completing
- ;; so that choosing a completion from the list
- ;; knows how much old text to replace.
- (setq completion-base-size dirlength)))
+ (let ((prompt-end (minibuffer-prompt-end)))
+ (with-output-to-temp-buffer "*Completions*"
+ (display-completion-list (sort helpposs 'string-lessp))
+ (setq PC-do-completion-end end
+ PC-goto-end goto-end)
+ (with-current-buffer standard-output
+ ;; Record which part of the buffer we are completing
+ ;; so that choosing a completion from the list
+ ;; knows how much old text to replace.
+ ;; This was briefly nil in the non-dirname case.
+ ;; However, if one calls PC-lisp-complete-symbol
+ ;; on "(ne-f" with point on the hyphen, PC offers
+ ;; all completions starting with "(ne", some of
+ ;; which do not match the "-f" part (maybe it
+ ;; should not, but it does). In such cases,
+ ;; completion gets confused trying to figure out
+ ;; how much to replace, so we tell it explicitly
+ ;; (ie, the number of chars in the buffer before beg).
+ ;;
+ ;; Note that choose-completion-string-functions
+ ;; plays around with point.
+ (setq completion-base-size (if dirname
+ dirlength
+ (- beg prompt-end))))))
(PC-temp-minibuffer-message " [Next char not unique]"))
nil)))))
@@ -799,6 +842,10 @@ of `minibuffer-completion-table' and the minibuffer contents.")
(setq quit-flag nil
unread-command-events '(7))))))))
+;; Does not need to be buffer-local (?) because only used when one
+;; PC-l-c-s immediately follows another.
+(defvar PC-lisp-complete-end nil
+ "Internal variable used by `PC-lisp-complete-symbol'.")
(defun PC-lisp-complete-symbol ()
"Perform completion on Lisp symbol preceding point.
@@ -811,6 +858,12 @@ Otherwise, all symbols with function definitions, values
or properties are considered."
(interactive)
(let* ((end (point))
+ ;; To complete the word under point, rather than just the portion
+ ;; before point, use this:
+;;; (save-excursion
+;;; (with-syntax-table lisp-mode-syntax-table
+;;; (forward-sexp 1)
+;;; (point))))
(beg (save-excursion
(with-syntax-table lisp-mode-syntax-table
(backward-sexp 1)
@@ -825,7 +878,39 @@ or properties are considered."
(or (boundp sym) (fboundp sym)
(symbol-plist sym))))))
(PC-not-minibuffer t))
- (PC-do-completion nil beg end)))
+ ;; http://lists.gnu.org/archive/html/emacs-devel/2007-03/msg01211.html
+ ;;
+ ;; This deals with cases like running PC-l-c-s on "M-: (n-f".
+ ;; The first call to PC-l-c-s expands this to "(ne-f", and moves
+ ;; point to the hyphen [1]. If one calls PC-l-c-s immediately after,
+ ;; then without the last-command check, one is offered all
+ ;; completions of "(ne", which is presumably not what one wants.
+ ;;
+ ;; This is arguably (at least, it seems to be the existing intended
+ ;; behaviour) what one _does_ want if point has been explicitly
+ ;; positioned on the hyphen. Note that if PC-do-completion (qv) binds
+ ;; completion-base-size to nil, then completion does not replace the
+ ;; correct amount of text in such cases.
+ ;;
+ ;; Neither of these problems occur when using PC for filenames in the
+ ;; minibuffer, because in that case PC-do-completion is called without
+ ;; an explicit value for END, and so uses (point-max). This is fine for
+ ;; a filename, because the end of the filename must be at the end of
+ ;; the minibuffer. The same is not true for lisp symbols.
+ ;;
+ ;; [1] An alternate fix would be to not move point to the hyphen
+ ;; in such cases, but that would make the behaviour different from
+ ;; that for filenames. It seems PC moves point to the site of the
+ ;; first difference between the possible completions.
+ ;;
+ ;; Alternatively alternatively, maybe end should be computed in
+ ;; the same way as beg. That would change the behaviour though.
+ (if (equal last-command 'PC-lisp-complete-symbol)
+ (PC-do-completion nil beg PC-lisp-complete-end t)
+ (if PC-lisp-complete-end
+ (move-marker PC-lisp-complete-end end)
+ (setq PC-lisp-complete-end (copy-marker end t)))
+ (PC-do-completion nil beg end t))))
(defun PC-complete-as-file-name ()
"Perform completion on file names preceding point.
@@ -1026,10 +1111,11 @@ absolute rather than relative to some directory on the SEARCH-PATH."
(if (string-match "<\\([^\"<>]*\\)>?\\'" (ad-get-arg 0))
(let* ((string (ad-get-arg 0))
(action (ad-get-arg 2))
- (name (substring string (match-beginning 1) (match-end 1)))
+ (name (match-string 1 string))
(str2 (substring string (match-beginning 0)))
(completion-table
- (mapcar (lambda (x) (format "<%s>" x))
+ (mapcar (lambda (x)
+ (format (if (string-match "/\\'" x) "<%s" "<%s>") x))
(PC-include-file-all-completions
name (PC-include-file-path)))))
(setq ad-return-value
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index d8fdf966374..4dae3bab018 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -422,7 +422,7 @@
:group 'development)
(defgroup minibuffer nil
- "Controling the behavior of the minibuffer."
+ "Controlling the behavior of the minibuffer."
:link '(custom-manual "(emacs)Minibuffer")
:group 'environment)
@@ -443,7 +443,7 @@
:group 'environment)
(defgroup auto-save nil
- "Preventing accidential loss of data."
+ "Preventing accidental loss of data."
:group 'files)
(defgroup processes-basics nil
diff --git a/lisp/cus-start.el b/lisp/cus-start.el
index b7aa673f1b8..a4f5d580718 100644
--- a/lisp/cus-start.el
+++ b/lisp/cus-start.el
@@ -338,7 +338,11 @@ since it could result in memory overflow and make Emacs crash."
(split-height-threshold windows integer)
(window-min-height windows integer)
(window-min-width windows integer)
- (scroll-preserve-screen-position windows boolean)
+ (scroll-preserve-screen-position
+ windows (choice
+ (const :tag "Off (nil)" :value nil)
+ (const :tag "Full screen (t)" :value t)
+ (other :tag "Always" 1)))
(display-buffer-reuse-frames windows boolean "21.1")
;; xdisp.c
(scroll-step windows integer)
diff --git a/lisp/desktop.el b/lisp/desktop.el
index 4328b8e3839..92f6a448574 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -45,9 +45,9 @@
;; "Saving Emacs Sessions" in the GNU Emacs Manual.
;; When the desktop module is loaded, the function `desktop-kill' is
-;; added to the `kill-emacs-hook'. This function is responsible for
+;; added to the `kill-emacs-hook'. This function is responsible for
;; saving the desktop when Emacs is killed. Furthermore an anonymous
-;; function is added to the `after-init-hook'. This function is
+;; function is added to the `after-init-hook'. This function is
;; responsible for loading the desktop when Emacs is started.
;; Special handling.
@@ -55,12 +55,12 @@
;; Variables `desktop-buffer-mode-handlers' and `desktop-minor-mode-handlers'
;; are supplied to handle special major and minor modes respectively.
;; `desktop-buffer-mode-handlers' is an alist of major mode specific functions
-;; to restore a desktop buffer. Elements must have the form
+;; to restore a desktop buffer. Elements must have the form
;;
;; (MAJOR-MODE . RESTORE-BUFFER-FUNCTION).
;;
;; Functions listed are called by `desktop-create-buffer' when `desktop-read'
-;; evaluates the desktop file. Buffers with a major mode not specified here,
+;; evaluates the desktop file. Buffers with a major mode not specified here,
;; are restored by the default handler `desktop-restore-file-buffer'.
;; `desktop-minor-mode-handlers' is an alist of functions to restore
;; non-standard minor modes. Elements must have the form
@@ -85,7 +85,7 @@
;; '(bar-mode . bar-desktop-restore))
;; in the module itself, and make shure that the mode function is
-;; autoloaded. See the docstrings of `desktop-buffer-mode-handlers' and
+;; autoloaded. See the docstrings of `desktop-buffer-mode-handlers' and
;; `desktop-minor-mode-handlers' for more info.
;; Minor modes.
@@ -100,7 +100,7 @@
;; The variables `desktop-minor-mode-table' and `desktop-minor-mode-handlers'
;; are used to handle non-conventional minor modes. `desktop-save' uses
;; `desktop-minor-mode-table' to map minor mode variables to minor mode
-;; functions before writing `desktop-minor-modes'. If a minor mode has a
+;; functions before writing `desktop-minor-modes'. If a minor mode has a
;; variable name that is different form its function name, an entry
;; (NAME RESTORE-FUNCTION)
@@ -619,8 +619,7 @@ QUOTE may be `may' (value may be quoted),
(setq newlist (cons q.txt newlist)))
(setq p (cdr p)))
(if p
- (let ((last (desktop-internal-v2s p))
- (el (car newlist)))
+ (let ((last (desktop-internal-v2s p)))
(or anynil (setq anynil (null (car last))))
(or anynil
(setq newlist (cons '(must . ".") newlist)))
@@ -782,7 +781,8 @@ See also `desktop-base-file-name'."
";; 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)
+ (dolist (varspec desktop-globals-to-save)
+ (desktop-outvar varspec))
(if (memq 'kill-ring desktop-globals-to-save)
(insert
"(setq kill-ring-yank-pointer (nthcdr "
@@ -790,22 +790,20 @@ See also `desktop-base-file-name'."
" 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)
+ (dolist (l info)
+ (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)
+ (dolist (e l)
+ (insert "\n " (desktop-value-to-string e)))
+ (insert ")\n\n")))
(setq default-directory dirname)
(let ((coding-system-for-write 'emacs-mule))
(write-region (point-min) (point-max) filename nil 'nomessage)))))
@@ -941,14 +939,13 @@ directory DIRNAME."
(desktop-clear)
(desktop-read desktop-dirname))
+(defvar desktop-buffer-major-mode)
+(defvar desktop-buffer-locals)
;; ----------------------------------------------------------------------------
(defun desktop-restore-file-buffer (desktop-buffer-file-name
desktop-buffer-name
desktop-buffer-misc)
"Restore a file buffer."
- (eval-when-compile ; Just to silence the byte compiler
- (defvar desktop-buffer-major-mode)
- (defvar desktop-buffer-locals))
(if desktop-buffer-file-name
(if (or (file-exists-p desktop-buffer-file-name)
(let ((msg (format "Desktop: File \"%s\" no longer exists."
@@ -985,8 +982,12 @@ directory DIRNAME."
;; called from Desktop file only.
;; Just to silence the byte compiler.
-(eval-when-compile
- (defvar desktop-first-buffer)) ; Dynamically bound in `desktop-read'
+
+(defvar desktop-first-buffer) ; Dynamically bound in `desktop-read'
+
+;; Bound locally in `desktop-read'.
+(defvar desktop-buffer-ok-count)
+(defvar desktop-buffer-fail-count)
(defun desktop-create-buffer
(desktop-file-version
@@ -1000,10 +1001,6 @@ directory DIRNAME."
desktop-buffer-misc
&optional
desktop-buffer-locals)
- ;; Just to silence the byte compiler. Bound locally in `desktop-read'.
- (eval-when-compile
- (defvar desktop-buffer-ok-count)
- (defvar desktop-buffer-fail-count))
;; To make desktop files with relative file names possible, we cannot
;; allow `default-directory' to change. Therefore we save current buffer.
(save-current-buffer
@@ -1045,21 +1042,22 @@ directory DIRNAME."
((equal '(nil) desktop-buffer-minor-modes) ; backwards compatible
(auto-fill-mode 0))
(t
- (mapc #'(lambda (minor-mode)
- ;; Give minor mode module a chance to add a handler.
- (desktop-load-file minor-mode)
- (let ((handler (cdr (assq minor-mode desktop-minor-mode-handlers))))
- (if handler
- (funcall handler desktop-buffer-locals)
- (when (functionp minor-mode)
- (funcall minor-mode 1)))))
- desktop-buffer-minor-modes)))
- ;; Even though point and mark are non-nil when written by `desktop-save',
- ;; they may be modified by handlers wanting to set point or mark themselves.
+ (dolist (minor-mode desktop-buffer-minor-modes)
+ ;; Give minor mode module a chance to add a handler.
+ (desktop-load-file minor-mode)
+ (let ((handler (cdr (assq minor-mode desktop-minor-mode-handlers))))
+ (if handler
+ (funcall handler desktop-buffer-locals)
+ (when (functionp minor-mode)
+ (funcall minor-mode 1)))))))
+ ;; Even though point and mark are non-nil when written by
+ ;; `desktop-save', they may be modified by handlers wanting to set
+ ;; point or mark themselves.
(when desktop-buffer-point
(goto-char
(condition-case err
- ;; Evaluate point. Thus point can be something like '(search-forward ...
+ ;; Evaluate point. Thus point can be something like
+ ;; '(search-forward ...
(eval desktop-buffer-point)
(error (message "%s" (error-message-string err)) 1))))
(when desktop-buffer-mark
@@ -1167,7 +1165,7 @@ If there are no buffers left to create, kill the timer."
;; functions are processed after `after-init-hook'.
(add-hook
'after-init-hook
- '(lambda ()
+ (lambda ()
(let ((key "--no-desktop"))
(when (member key command-line-args)
(setq command-line-args (delete key command-line-args))
@@ -1176,5 +1174,5 @@ If there are no buffers left to create, kill the timer."
(provide 'desktop)
-;;; arch-tag: 221907c3-1771-4fd3-9c2e-c6f700c6ede9
+;; arch-tag: 221907c3-1771-4fd3-9c2e-c6f700c6ede9
;;; desktop.el ends here
diff --git a/lisp/dframe.el b/lisp/dframe.el
index a640540a46a..eda6d45bf21 100644
--- a/lisp/dframe.el
+++ b/lisp/dframe.el
@@ -354,9 +354,7 @@ CREATE-HOOK are hooks to run after creating a frame."
t))))
;; Enable mouse tracking in emacs
(if dframe-track-mouse-function
- (set (make-local-variable 'track-mouse) t)) ;this could be messy.
- ;; disable auto-show-mode for Emacs
- (setq auto-show-mode nil))
+ (set (make-local-variable 'track-mouse) t))) ;this could be messy.
;;;; DISABLED: This causes problems for users with multiple frames.
;;;; ;; Set this up special just for the passed in buffer
;;;; ;; Terminal minibuffer stuff does not require this.
diff --git a/lisp/diff-mode.el b/lisp/diff-mode.el
index 543e1bd6a39..3cd2fb37dbb 100644
--- a/lisp/diff-mode.el
+++ b/lisp/diff-mode.el
@@ -985,8 +985,7 @@ See `after-change-functions' for the meaning of BEG, END and LEN."
(define-derived-mode diff-mode fundamental-mode "Diff"
"Major mode for viewing/editing context diffs.
Supports unified and context diffs as well as (to a lesser extent)
-normal diffs. If you edit the buffer manually, diff-mode will try
-to update the hunk headers for you on-the-fly.
+normal diffs.
When the buffer is read-only, the ESC prefix is not necessary.
If you edit the buffer manually, diff-mode will try to update the hunk
@@ -996,9 +995,6 @@ You can also switch between context diff and unified diff with \\[diff-context->
or vice versa with \\[diff-unified->context] and you can also reverse the direction of
a diff with \\[diff-reverse-direction].
-When the buffer is read-only, the Meta- modifier is not necessary
-to run the Diff mode commands:
-
\\{diff-mode-map}"
(set (make-local-variable 'font-lock-defaults) diff-font-lock-defaults)
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index 1a1cdd5a542..f5e6250b475 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -45,12 +45,8 @@
;; (add-hook 'dired-load-hook
;; (function (lambda ()
;; (load "dired-x")
-;; ;; Set global variables here. For example:
+;; ;; Set variables here. For example:
;; ;; (setq dired-guess-shell-gnutar "gtar")
-;; )))
-;; (add-hook 'dired-mode-hook
-;; (function (lambda ()
-;; ;; Set buffer-local variables here. For example:
;; ;; (dired-omit-mode 1)
;; )))
;;
@@ -1130,17 +1126,11 @@ You can set this variable in your ~/.emacs. For example, to add rules for
:group 'dired-x
:type '(alist :key-type regexp :value-type (repeat sexp)))
-(defcustom dired-guess-shell-case-fold-search t
- "If non-nil, `dired-guess-shell-alist-default' and
-`dired-guess-shell-alist-user' are matched case-insensitively."
- :group 'dired-x
- :type 'boolean)
-
(defun dired-guess-default (files)
"Guess a shell commands for FILES. Return command or list of commands.
See `dired-guess-shell-alist-user'."
- (let* ((case-fold-search dired-guess-shell-case-fold-search)
+ (let* ((case-fold-search t)
;; Prepend the user's alist to the default alist.
(alist (append dired-guess-shell-alist-user
dired-guess-shell-alist-default))
diff --git a/lisp/dnd.el b/lisp/dnd.el
index 2b523476a4f..df081539cf0 100644
--- a/lisp/dnd.el
+++ b/lisp/dnd.el
@@ -146,7 +146,7 @@ Return nil if URI is not a local file."
(substring uri (match-end 0))))))
(when (and f must-exist)
(setq f (replace-regexp-in-string
- "%[A-Z0-9][A-Z0-9]"
+ "%[A-Fa-f0-9][A-Fa-f0-9]"
(lambda (arg)
(format "%c" (string-to-number (substring arg 1) 16)))
f nil t))
diff --git a/lisp/dos-w32.el b/lisp/dos-w32.el
index 94ba5def7b5..aeebb9c3d08 100644
--- a/lisp/dos-w32.el
+++ b/lisp/dos-w32.el
@@ -74,6 +74,9 @@ against the file name, and TYPE is nil for text, t for binary.")
(setq alist (cdr alist)))
found)))
+;; Silence compiler. Defined in src/buffer.c on DOS_NT.
+(defvar default-buffer-file-type)
+
;; Don't check for untranslated file systems here.
(defun find-buffer-file-type (filename)
(let ((match (find-buffer-file-type-match filename))
diff --git a/lisp/emacs-lisp/authors.el b/lisp/emacs-lisp/authors.el
index d93d80e0c8e..31464269567 100644
--- a/lisp/emacs-lisp/authors.el
+++ b/lisp/emacs-lisp/authors.el
@@ -688,5 +688,7 @@ the Emacs source tree, from which to build the file."
(authors root)
(write-file file)))
+(provide 'authors)
+
;;; arch-tag: 659d5900-5ff2-43b0-954c-a315cc1e4dc1
;;; authors.el ends here
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index dd7e042499c..2c9dc8e3314 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -545,8 +545,8 @@
(eq (car-safe (nth 2 last)) 'cdr)
(eq (cadr (nth 2 last)) var))))
(progn
- (byte-compile-warn "value returned by `%s' is not used"
- (prin1-to-string (car form)))
+ (byte-compile-warn "value returned from %s is unused"
+ (prin1-to-string form))
nil)))
(byte-compile-log " %s called for effect; deleted" fn)
;; appending a nil here might not be necessary, but it can't hurt.
@@ -557,8 +557,20 @@
;; Otherwise, no args can be considered to be for-effect,
;; even if the called function is for-effect, because we
;; don't know anything about that function.
- (cons fn (mapcar 'byte-optimize-form (cdr form)))))))
-
+ (let ((args (mapcar #'byte-optimize-form (cdr form))))
+ (if (and (get fn 'pure)
+ (byte-optimize-all-constp args))
+ (list 'quote (apply fn (mapcar #'eval args)))
+ (cons fn args)))))))
+
+(defun byte-optimize-all-constp (list)
+ "Non-nil iff all elements of LIST satisfy `byte-compile-constp'."
+ (let ((constant t))
+ (while (and list constant)
+ (unless (byte-compile-constp (car list))
+ (setq constant nil))
+ (setq list (cdr list)))
+ constant))
(defun byte-optimize-form (form &optional for-effect)
"The source-level pass of the optimizer."
@@ -1117,55 +1129,6 @@
(byte-optimize-predicate form))
form))
-(put 'concat 'byte-optimizer 'byte-optimize-pure-func)
-(put 'symbol-name 'byte-optimizer 'byte-optimize-pure-func)
-(put 'regexp-opt 'byte-optimizer 'byte-optimize-pure-func)
-(put 'regexp-quote 'byte-optimizer 'byte-optimize-pure-func)
-(put 'string-to-syntax 'byte-optimizer 'byte-optimize-pure-func)
-(defun byte-optimize-pure-func (form)
- "Do constant folding for pure functions.
-This assumes that the function will not have any side-effects and that
-its return value depends solely on its arguments.
-If the function can signal an error, this might change the semantics
-of FORM by signaling the error at compile-time."
- (let ((args (cdr form))
- (constant t))
- (while (and args constant)
- (or (byte-compile-constp (car args))
- (setq constant nil))
- (setq args (cdr args)))
- (if constant
- (list 'quote (eval form))
- form)))
-
-;; Avoid having to write forward-... with a negative arg for speed.
-;; Fixme: don't be limited to constant args.
-(put 'backward-char 'byte-optimizer 'byte-optimize-backward-char)
-(defun byte-optimize-backward-char (form)
- (cond ((and (= 2 (safe-length form))
- (numberp (nth 1 form)))
- (list 'forward-char (eval (- (nth 1 form)))))
- ((= 1 (safe-length form))
- '(forward-char -1))
- (t form)))
-
-(put 'backward-word 'byte-optimizer 'byte-optimize-backward-word)
-(defun byte-optimize-backward-word (form)
- (cond ((and (= 2 (safe-length form))
- (numberp (nth 1 form)))
- (list 'forward-word (eval (- (nth 1 form)))))
- ((= 1 (safe-length form))
- '(forward-word -1))
- (t form)))
-
-(put 'char-before 'byte-optimizer 'byte-optimize-char-before)
-(defun byte-optimize-char-before (form)
- (cond ((= 2 (safe-length form))
- `(char-after (1- ,(nth 1 form))))
- ((= 1 (safe-length form))
- '(char-after (1- (point))))
- (t form)))
-
;; Fixme: delete-char -> delete-region (byte-coded)
;; optimize string-as-unibyte, string-as-multibyte, string-make-unibyte,
;; string-make-multibyte for constant args.
@@ -1290,6 +1253,18 @@ of FORM by signaling the error at compile-time."
(setq side-effect-and-error-free-fns (cdr side-effect-and-error-free-fns)))
nil)
+
+;; pure functions are side-effect free functions whose values depend
+;; only on their arguments. For these functions, calls with constant
+;; arguments can be evaluated at compile time. This may shift run time
+;; errors to compile time.
+
+(let ((pure-fns
+ '(concat symbol-name regexp-opt regexp-quote string-to-syntax)))
+ (while pure-fns
+ (put (car pure-fns) 'pure t)
+ (setq pure-fns (cdr pure-fns)))
+ nil)
(defun byte-compile-splice-in-already-compiled-code (form)
;; form is (byte-code "..." [...] n)
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index f74e48c4635..f1761c125ac 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -2341,7 +2341,7 @@ list that represents a doc string reference.
(eq (car (car (cdr tail))) 'declare))
(let ((declaration (car (cdr tail))))
(setcdr tail (cdr (cdr tail)))
- (princ `(if macro-declaration-function
+ (prin1 `(if macro-declaration-function
(funcall macro-declaration-function
',name ',declaration))
outbuffer)))))
@@ -3148,6 +3148,9 @@ That command is designed for interactive use only" fn))
;; more complicated compiler macros
+(byte-defop-compiler char-before)
+(byte-defop-compiler backward-char)
+(byte-defop-compiler backward-word)
(byte-defop-compiler list)
(byte-defop-compiler concat)
(byte-defop-compiler fset)
@@ -3159,6 +3162,34 @@ That command is designed for interactive use only" fn))
(byte-defop-compiler19 (/ byte-quo) byte-compile-quo)
(byte-defop-compiler19 nconc)
+(defun byte-compile-char-before (form)
+ (cond ((= 2 (length form))
+ (byte-compile-form (list 'char-after (if (numberp (nth 1 form))
+ (1- (nth 1 form))
+ `(1- ,(nth 1 form))))))
+ ((= 1 (length form))
+ (byte-compile-form '(char-after (1- (point)))))
+ (t (byte-compile-subr-wrong-args form "0-1"))))
+
+;; backward-... ==> forward-... with negated argument.
+(defun byte-compile-backward-char (form)
+ (cond ((= 2 (length form))
+ (byte-compile-form (list 'forward-char (if (numberp (nth 1 form))
+ (- (nth 1 form))
+ `(- ,(nth 1 form))))))
+ ((= 1 (length form))
+ (byte-compile-form '(forward-char -1)))
+ (t (byte-compile-subr-wrong-args form "0-1"))))
+
+(defun byte-compile-backward-word (form)
+ (cond ((= 2 (length form))
+ (byte-compile-form (list 'forward-word (if (numberp (nth 1 form))
+ (- (nth 1 form))
+ `(- ,(nth 1 form))))))
+ ((= 1 (length form))
+ (byte-compile-form '(forward-word -1)))
+ (t (byte-compile-subr-wrong-args form "0-1"))))
+
(defun byte-compile-list (form)
(let ((count (length (cdr form))))
(cond ((= count 0)
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index 2777ea775e9..9ae33599f09 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -364,31 +364,39 @@ Return the result of the last expression in BODY."
(defun edebug-pop-to-buffer (buffer &optional window)
;; Like pop-to-buffer, but select window where BUFFER was last shown.
- ;; Select WINDOW if it provided and it still exists. Otherwise,
+ ;; Select WINDOW if it is provided and still exists. Otherwise,
;; if buffer is currently shown in several windows, choose one.
;; Otherwise, find a new window, possibly splitting one.
- (setq window (if (and (windowp window) (edebug-window-live-p window)
- (eq (window-buffer window) buffer))
- window
- (if (eq (window-buffer (selected-window)) buffer)
- (selected-window)
- (edebug-get-buffer-window buffer))))
- (if window
- (select-window window)
- (if (one-window-p)
- (split-window))
- ;; (message "next window: %s" (next-window)) (sit-for 1)
- (if (eq (get-buffer-window edebug-trace-buffer) (next-window))
- ;; Don't select trace window
- nil
- (select-window (next-window))))
- (set-window-buffer (selected-window) buffer)
- (set-window-hscroll (selected-window) 0);; should this be??
+ (setq window
+ (cond
+ ((and (windowp window) (edebug-window-live-p window)
+ (eq (window-buffer window) buffer))
+ window)
+ ((eq (window-buffer (selected-window)) buffer)
+ ;; Selected window already displays BUFFER.
+ (selected-window))
+ ((edebug-get-buffer-window buffer))
+ ((one-window-p 'nomini)
+ ;; When there's one window only, split it.
+ (split-window))
+ ((let ((trace-window (get-buffer-window edebug-trace-buffer)))
+ (catch 'found
+ (dolist (elt (window-list nil 'nomini))
+ (unless (or (eq elt (selected-window)) (eq elt trace-window)
+ (window-dedicated-p elt))
+ ;; Found a non-dedicated window not showing
+ ;; `edebug-trace-buffer', use it.
+ (throw 'found elt))))))
+ ;; All windows are dedicated or show `edebug-trace-buffer', split
+ ;; selected one.
+ (t (split-window))))
+ (select-window window)
+ (set-window-buffer window buffer)
+ (set-window-hscroll window 0);; should this be??
;; Selecting the window does not set the buffer until command loop.
;;(set-buffer buffer)
)
-
(defun edebug-get-displayed-buffer-points ()
;; Return a list of buffer point pairs, for all displayed buffers.
(let (list)
@@ -2755,7 +2763,8 @@ MSG is printed after `::::} '."
) ; if edebug-save-windows
;; Restore current buffer always, in case application needs it.
- (set-buffer edebug-outside-buffer)
+ (if (buffer-name edebug-outside-buffer)
+ (set-buffer edebug-outside-buffer))
;; Restore point, and mark.
;; Needed even if restoring windows because
;; that doesn't restore point and mark in the current buffer.
diff --git a/lisp/emacs-lisp/ewoc.el b/lisp/emacs-lisp/ewoc.el
index 3649757f782..9fec81ec2c5 100644
--- a/lisp/emacs-lisp/ewoc.el
+++ b/lisp/emacs-lisp/ewoc.el
@@ -191,8 +191,9 @@ BUT if it is the header or the footer in EWOC return nil instead."
(not (eq dll node))))
(setq node (ewoc--node-right node))))))
-(defun ewoc--insert-new-node (node data pretty-printer)
+(defun ewoc--insert-new-node (node data pretty-printer dll)
"Insert before NODE a new node for DATA, displayed by PRETTY-PRINTER.
+Fourth arg DLL -- from `(ewoc--dll EWOC)' -- is for internal purposes.
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
@@ -262,8 +263,8 @@ fourth arg NOSEP non-nil inhibits this."
(unless header (setq header ""))
(unless footer (setq footer ""))
(setf (ewoc--node-start-marker dll) (copy-marker pos)
- foot (ewoc--insert-new-node dll footer hf-pp)
- head (ewoc--insert-new-node foot header hf-pp)
+ foot (ewoc--insert-new-node dll footer hf-pp dll)
+ head (ewoc--insert-new-node foot header hf-pp dll)
(ewoc--hf-pp new-ewoc) hf-pp
(ewoc--footer new-ewoc) foot
(ewoc--header new-ewoc) head))
@@ -301,7 +302,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--insert-new-node node data (ewoc--pretty-printer ewoc))))
+ (ewoc--insert-new-node node data (ewoc--pretty-printer ewoc) dll)))
(defun ewoc-next (ewoc node)
"Return the node in EWOC that follows NODE.
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 09cb8436c89..164756dfdc3 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -1280,7 +1280,8 @@ and initial semicolons."
"\\|\\s-*\\([(;:\"]\\|`(\\|#'(\\)"))
(paragraph-separate
(concat paragraph-separate "\\|\\s-*\".*[,\\.]$"))
- (fill-column (if (integerp emacs-lisp-docstring-fill-column)
+ (fill-column (if (and (integerp emacs-lisp-docstring-fill-column)
+ (derived-mode-p 'emacs-lisp-mode))
emacs-lisp-docstring-fill-column
fill-column)))
(fill-paragraph justify))
diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el
index 947b4063ad4..5254a8389b4 100644
--- a/lisp/emacs-lisp/lisp.el
+++ b/lisp/emacs-lisp/lisp.el
@@ -582,8 +582,7 @@ symbols with function definitions are considered. Otherwise, all
symbols with function definitions, values or properties are
considered."
(interactive)
-
- (let ((window (get-buffer-window "*Completions*")))
+ (let ((window (get-buffer-window "*Completions*" 0)))
(if (and (eq last-command this-command)
window (window-live-p window) (window-buffer window)
(buffer-name (window-buffer window)))
diff --git a/lisp/emacs-lisp/sregex.el b/lisp/emacs-lisp/sregex.el
index 447691d4046..8041aefc077 100644
--- a/lisp/emacs-lisp/sregex.el
+++ b/lisp/emacs-lisp/sregex.el
@@ -425,7 +425,7 @@ Here are the clauses allowed in an `sregex' or `sregexq' expression:
Stands for \"\\\\'\", matching the empty string at the end of text.
- the symbol `point'
- Stands for \"\\\\=\", matching the empty string at point.
+ Stands for \"\\\\=\\=\", matching the empty string at point.
- the symbol `word-boundary'
Stands for \"\\\\b\", matching the empty string at the beginning or
diff --git a/lisp/emacs-lisp/testcover.el b/lisp/emacs-lisp/testcover.el
index d8c171e111d..7d7e788523b 100644
--- a/lisp/emacs-lisp/testcover.el
+++ b/lisp/emacs-lisp/testcover.el
@@ -190,7 +190,7 @@ call to one of the `testcover-1value-functions'."
changes the instrumentation from edebug to testcover--much faster, no
problems with type-ahead or post-command-hook, etc. If BYTE-COMPILE is
non-nil, byte-compiles each function after instrumenting."
- (interactive "f")
+ (interactive "fStart covering file: ")
(let ((buf (find-file filename))
(load-read-function 'testcover-read)
(edebug-all-defs t))
@@ -428,10 +428,10 @@ FUN should be `testcover-reinstrument' for compositional functions,
list)
result))
-(defun testcover-end (buffer)
+(defun testcover-end (filename)
"Turn off instrumentation of all macros and functions in FILENAME."
- (interactive "b")
- (let ((buf (find-file-noselect buffer)))
+ (interactive "fStop covering file: ")
+ (let ((buf (find-file-noselect filename)))
(eval-buffer buf t)))
@@ -513,7 +513,7 @@ eliminated by adding more test cases."
(defun testcover-mark-all (&optional buffer)
"Mark all forms in BUFFER that did not get completley tested during
coverage tests. This function creates many overlays."
- (interactive "b")
+ (interactive "bMark forms in buffer: ")
(if buffer
(switch-to-buffer buffer))
(goto-char 1)
@@ -523,7 +523,7 @@ coverage tests. This function creates many overlays."
(defun testcover-unmark-all (buffer)
"Remove all overlays from FILENAME."
- (interactive "b")
+ (interactive "bUnmark forms in buffer: ")
(condition-case nil
(progn
(set-buffer buffer)
diff --git a/lisp/emacs-lisp/timer.el b/lisp/emacs-lisp/timer.el
index db6586838bb..092611632ca 100644
--- a/lisp/emacs-lisp/timer.el
+++ b/lisp/emacs-lisp/timer.el
@@ -360,11 +360,16 @@ This function is called, by name, directly by the C code."
(defun run-at-time (time repeat function &rest args)
"Perform an action at time TIME.
Repeat the action every REPEAT seconds, if REPEAT is non-nil.
-TIME should be a string like \"11:23pm\", nil meaning now, a number of seconds
-from now, a value from `current-time', or t (with non-nil REPEAT)
-meaning the next integral multiple of REPEAT.
-REPEAT may be an integer or floating point number.
-The action is to call FUNCTION with arguments ARGS.
+TIME should be one of: a string giving an absolute time like
+\"11:23pm\" (the acceptable formats are those recognized by
+`diary-entry-time'; note that such times are interpreted as times
+today, even if in the past); a string giving a relative time like
+\"2 hours 35 minutes\" (the acceptable formats are those
+recognized by `timer-duration'); nil meaning now; a number of
+seconds from now; a value from `encode-time'; or t (with non-nil
+REPEAT) meaning the next integral multiple of REPEAT. REPEAT may
+be an integer or floating point number. The action is to call
+FUNCTION with arguments ARGS.
This function returns a timer object which you can use in `cancel-timer'."
(interactive "sRun at time: \nNRepeat interval: \naFunction: ")
@@ -385,7 +390,7 @@ This function returns a timer object which you can use in `cancel-timer'."
(if (numberp time)
(setq time (timer-relative-time (current-time) time)))
- ;; Handle relative times like "2 hours and 35 minutes"
+ ;; Handle relative times like "2 hours 35 minutes"
(if (stringp time)
(let ((secs (timer-duration time)))
(if secs
diff --git a/lisp/emacs-lisp/warnings.el b/lisp/emacs-lisp/warnings.el
index b75f0fd242f..99b0b3f3448 100644
--- a/lisp/emacs-lisp/warnings.el
+++ b/lisp/emacs-lisp/warnings.el
@@ -218,8 +218,9 @@ Default is :warning.
but raise suspicion of a possible problem.
:debug -- info for debugging only.
-BUFFER-NAME, if specified, is the name of the buffer for logging the
-warning. By default, it is `*Warnings*'.
+BUFFER-NAME, if specified, is the name of the buffer for logging
+the warning. By default, it is `*Warnings*'. If this function
+has to create the buffer, it disables undo in the buffer.
See the `warnings' custom group for user customization features.
@@ -227,16 +228,22 @@ See also `warning-series', `warning-prefix-function' and
`warning-fill-prefix' for additional programming features."
(unless level
(setq level :warning))
+ (unless buffer-name
+ (setq buffer-name "*Warnings*"))
(if (assq level warning-level-aliases)
(setq level (cdr (assq level warning-level-aliases))))
(or (< (warning-numeric-level level)
(warning-numeric-level warning-minimum-log-level))
(warning-suppress-p type warning-suppress-log-types)
(let* ((typename (if (consp type) (car type) type))
- (buffer (get-buffer-create (or buffer-name "*Warnings*")))
+ (old (get-buffer buffer-name))
+ (buffer (get-buffer-create buffer-name))
(level-info (assq level warning-levels))
start end)
(with-current-buffer buffer
+ ;; If we created the buffer, disable undo.
+ (unless old
+ (setq buffer-undo-list t))
(goto-char (point-max))
(when (and warning-series (symbolp warning-series))
(setq warning-series
diff --git a/lisp/emulation/viper.el b/lisp/emulation/viper.el
index ddd37b16cc2..67ec3660c65 100644
--- a/lisp/emulation/viper.el
+++ b/lisp/emulation/viper.el
@@ -1027,14 +1027,46 @@ It also can't undo some Viper settings."
(defadvice describe-key (before viper-describe-key-ad protect activate)
"Force to read key via `viper-read-key-sequence'."
- (interactive (list (viper-read-key-sequence "Describe key: "))
- ))
+ (interactive (let (key)
+ (setq key (viper-read-key-sequence
+ "Describe key (or click or menu item): "))
+ (list key
+ (prefix-numeric-value current-prefix-arg)
+ ;; If KEY is a down-event, read also the
+ ;; corresponding up-event.
+ (and (vectorp key)
+ (let ((last-idx (1- (length key))))
+ (and (eventp (aref key last-idx))
+ (memq 'down (event-modifiers
+ (aref key last-idx)))))
+ (or (and (eventp (aref key 0))
+ (memq 'down (event-modifiers
+ (aref key 0)))
+ ;; For the C-down-mouse-2 popup
+ ;; menu, there is no subsequent up-event.
+ (= (length key) 1))
+ (and (> (length key) 1)
+ (eventp (aref key 1))
+ (memq 'down (event-modifiers (aref key 1)))))
+ (read-event))))))
(defadvice describe-key-briefly
(before viper-describe-key-briefly-ad protect activate)
"Force to read key via `viper-read-key-sequence'."
- (interactive (list (viper-read-key-sequence "Describe key briefly: "))))
-
+ (interactive (let (key)
+ (setq key (viper-read-key-sequence
+ "Describe key (or click or menu item): "))
+ ;; If KEY is a down-event, read and discard the
+ ;; corresponding up-event.
+ (and (vectorp key)
+ (let ((last-idx (1- (length key))))
+ (and (eventp (aref key last-idx))
+ (memq 'down (event-modifiers (aref key last-idx)))))
+ (read-event))
+ (list key
+ (if current-prefix-arg
+ (prefix-numeric-value current-prefix-arg))
+ 1))))
(defadvice find-file (before viper-add-suffix-advice activate)
"Use `read-file-name' for reading arguments."
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index 62e7eaa21fe..70ffa4ede48 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -1,3 +1,259 @@
+2007-04-01 Michael Olson <mwolson@gnu.org>
+
+ * erc.el (erc-version-string): Release ERC 5.2.
+
+ * erc-auto.in, erc-chess.el, erc-list.el, erc-speak.el:
+ * erc-viper.el: Update copyright notices.
+
+ * erc.texi: Make Emacs Lisp source code in this document
+ essentially public domain. Update version to 5.2.
+ (Obtaining ERC): Mention extras tarball.
+ (Releases): Mention local GNU mirror.
+ (Sample Configuration): Remove notice.
+
+ * FOR-RELEASE (5.3): Add item for erc-nicklist.
+ Mark NEWS as done. Mark extras tarball as done.
+
+ * Makefile (VERSION): Increment to 5.2.
+ (TESTING): Remove.
+ (EXTRAS): New variable containing the contents of our "Emacs 22
+ extras" tarball.
+ (SOURCE): Remove $(TESTING).
+ (MISC): Add COPYING and ChangeLog.06. Fix ChangeLog.NNNN ->
+ ChangeLog.NN.
+ (release): Use $(SNAPDIR) instead of erc-$(VERSION).
+ (extras): New rule which implements the building of the extras
+ tarball.
+ (upload-extras): New rule to upload the extras tarball. It's
+ yucky to replicate upload, but oh well.
+
+ * NEWS: Mention extras tarball. Note which files have been
+ renamed. Note that erc-list is enabled by default, except in
+ Emacs 22.
+
+ * README.extras: New file which serves as a README for the extras
+ tarball.
+
+2007-03-31 Michael Olson <mwolson@gnu.org>
+
+ * NEWS: Update for the 5.2 release.
+
+ * FOR-RELEASE: Finish up 5.2 manual item. Add documentation item
+ for 5.3.
+
+ * erc.texi (Sample Session): Flesh out. Mention #erc.
+ (Modules): Defer to 5.3 release.
+ (Advanced Usage): Move Sample Configuration chapter ahead of
+ unfinished chapters.
+ (Sample Configuration): Write.
+ (Options): Mention how to see available ERC options. Defer to 5.3
+ release.
+ (Tips and Tricks): Remove, since it seems better to just include
+ tips and tricks in the sample configuration, commented out.
+
+ * erc-bbdb.el (erc-bbdb-search-name-and-create): Make prompt more
+ informative about how to skip merging.
+ (erc-bbdb-insinuate-and-show-entry-1): Move contents of
+ erc-bbdb-insinuate-and-show-entry here.
+ (erc-bbdb-insinuate-and-show-entry): Run
+ erc-bbdb-insinuate-and-show-entry-1 "outside" of the calling
+ function, so that we can avoid triggering a process-filter error
+ if the user hits C-g.
+
+2007-03-30 Michael Olson <mwolson@gnu.org>
+
+ * FOR-RELEASE: Solve C-c C-SPC keybinding dilemma.
+
+ * erc-autoaway.el (erc-autoaway-idle-method): Use `if' rather than
+ `cond' and `set' rather than `set-default'.
+
+ * erc-log.el: Avoid compiler warning by requiring erc-network
+ during compilation.
+ (erc-generate-log-file-name-function): Add tag to each option.
+ Add erc-generate-log-file-name-network.
+ (erc-generate-log-file-name-network): New function which generates
+ a log file name that uses network name rather than server name,
+ when possible.
+
+ * erc-track.el (track): Assimilate track-when-inactive module,
+ since there's no need to have two modules in one file -- an option
+ will do. Remove track-modified-channels alias. Call
+ erc-track-minor-mode-maybe, and tear down the minor mode when
+ disabling.
+ (erc-track-when-inactive): New option which determines whether to
+ track visible buffers when inactive. The default is not to do so.
+ (erc-track-visibility): Mention erc-track-when-inactive.
+ (erc-buffer-visible): Use erc-track-when-inactive.
+ (erc-track-enable-keybindings): New option which determines
+ whether to enable the global-level tracking keybindings. The
+ default is to do so, unless they would override another binding,
+ in which case we prompt the user about it.
+ (erc-track-minor-mode-map): Move global keybindings here.
+ (erc-track-minor-mode): New minor mode which only enables the
+ keybindings and does nothing else.
+ (erc-track-minor-mode-maybe): New function which starts
+ erc-track-minor-mode, but only if it hasn't already been started,
+ an ERC buffer exists, and the user OK's it, depending on the value
+ of `erc-track-enable-keybindings'.
+ (erc-track-switch-buffer): Display a message if someone calls this
+ without first enabling erc-track-mode.
+
+2007-03-17 Michael Olson <mwolson@gnu.org>
+
+ * erc.texi (Development): Mention ErcDevelopment page on
+ emacswiki.
+ (Getting Started): Mention ~/.emacs.d/.ercrc.el and the Customize
+ interface.
+ (Sample Session): New section that has a very rough draft for a
+ sample ERC session.
+ (Special Features): New section that explains some of the special
+ features of ERC. Taken from ErcFeatures on emacswiki, with
+ enhancements.
+
+2007-03-12 Diane Murray <disumu@x3y2z1.net>
+
+ * erc-autoaway.el (erc-autoaway-idle-method): When setting the new
+ value, disable and re-enable `erc-autoaway-mode' only if it was
+ already enabled. This fixes a bug where autoaway was enabled just
+ by loading the file.
+
+2007-03-10 Diane Murray <disumu@x3y2z1.net>
+
+ * erc-capab.el: Added more information to the Usage section.
+ (erc-capab-identify-prefix): Doc fix.
+ (erc-capab-identify-unidentified): New face.
+ (290): Removed. Definition moved to erc-backend.el.
+ (erc-capab-identify-send-messages): Renamed from
+ `erc-capab-send-identify-messages'.
+ (erc-capab-identify-setup): Use it.
+ (erc-capab-identify-get-unidentified-nickname): Renamed from
+ `erc-capab-get-unidentified-nickname'.
+ (erc-capab-identify-add-prefix): Use it. Use
+ `erc-capab-identify-unidentified' as the face.
+
+ * erc-backend.el (290): Moved here from erc-capab.el.
+
+ * erc.el (erc-select): Added an autoload cookie.
+ (erc-message-type-member, erc-restore-text-properties): Use
+ `erc-get-parsed-vector'.
+ (erc-auto-query): Set the default to 'bury since many new users
+ expect private messages from others to be in dedicated query
+ buffers, not the server buffer.
+ (erc-common-server-suffixes): Use "freenode" for freenode.net, not
+ "OPN". Added oftc.net.
+
+ * NEWS: Added note about erc-auto-query's new default setting.
+
+2007-03-03 Michael Olson <mwolson@gnu.org>
+
+ * erc.el (erc-open, erc): Docfixes.
+
+2007-03-02 Michael Olson <mwolson@gnu.org>
+
+ * FOR-RELEASE: Make section for 5.3 release and move erc-backend
+ cleanup there. Awaiting discussion before doing other things.
+ Add tasks for merging filename changes from the 5.2 release
+ branch, and for making a tarball of modules not in Emacs 22. Add
+ item to remind me to update NEWS. Mark backtab entry as done.
+
+ * erc-button.el (button): Add call to `erc-button-add-keys'.
+ (erc-button-keys-added): New variable tracking whether we've added
+ the keys yet.
+ (erc-button-add-keys): New function that adds the <backtab> key to
+ erc-mode-map.
+
+ * erc.texi: Change version to 5.2 (pre-release).
+
+2007-02-15 Michael Olson <mwolson@gnu.org>
+
+ * CREDITS: Update.
+
+ * erc-backend.el (erc-server-send-ping-interval): Change to use a
+ default of 30 seconds. Improve customize interface.
+ (erc-server-send-ping-timeout): New option that determines when to
+ consider a connection stalled and restart it. The default is
+ after 120 seconds.
+ (erc-server-send-ping): Use erc-server-send-ping-timeout instead
+ of erc-server-send-ping-interval. If
+ erc-server-send-ping-timeout is nil, do not ever kill and restart
+ a hung IRC process.
+
+ * erc.el (erc-modules): Include the name of the module in its
+ description. This should make it easier for people to find and
+ enable a particular module.
+
+2007-02-15 Vivek Dasmohapatra <vivek@etla.org>
+
+ * erc.el (erc-cmd-RECONNECT): Kill old process if it is still
+ alive.
+ (erc-message-english-PART): Properly escape "%" characters in
+ reason.
+
+ * erc-backend.el (erc-server-reconnecting): New variable that is
+ set when the user requests a reconnect, but the old process is
+ still alive. This forces the reconnect to work even though the
+ process is killed manually during reconnect.
+ (erc-server-connect): Initialize it.
+ (erc-server-reconnect-p): Use it.
+ (erc-process-sentinel-1): Set it to nil after the first reconnect
+ attempt.
+
+2007-02-07 Diane Murray <disumu@x3y2z1.net>
+
+ * erc-menu.el (erc-menu-definition): Fixed so that the separator
+ is between "Current channel" and "Pals, fools and other keywords",
+ not at the bottom of the "Current channel" submenu.
+
+2007-01-25 Diane Murray <disumu@x3y2z1.net>
+
+ * erc-networks.el (erc-server-alist): Removed SSL server for now
+ since `erc-server-select' doesn't know to use `erc-ssl'.
+
+ * erc-networks.el (erc-server-alist, erc-networks-alist): Added
+ definitions for oftc.net.
+
+ * erc-services.el (erc-nickserv-alist): Fixed OFTC message regexp.
+
+2007-01-22 Michael Olson <mwolson@gnu.org>
+
+ * erc-backend.el (erc-server-error-occurred): New variable that
+ indicates when an error has been signaled by the server. This
+ should fix an infinite reconnect bug when giving some servers a
+ bogus :full-name. Thanks to Angelina Carlton for the report.
+ (erc-server-connect): Initialize erc-server-error-occurred.
+ (erc-server-reconnect-p): Use it.
+ (ERROR): Set it.
+
+ * erc-services.el (erc-nickserv-alist): Alphabetize and add Ars
+ and QuakeNet. Standardize look of entries. Fix type mismatch
+ error in customize interface.
+ (erc-nickserv-passwords): Alphabetize and add missing entries from
+ erc-nickserv-alist.
+
+2007-01-21 Michael Olson <mwolson@gnu.org>
+
+ * erc.el (erc-header-line-format): Document how to disable the
+ header line, and add a customization type for it. Also, make the
+ changes take effect immediately.
+
+2007-01-19 Michael Olson <mwolson@gnu.org>
+
+ * erc.texi (Modules): Document new menu module. Thanks to Leo
+ for noticing.
+
+2007-01-16 Diane Murray <disumu@x3y2z1.net>
+
+ * erc-stamp.el (erc-insert-timestamp-left): Fixed so that the
+ whitespace string filler is hidden correctly when timestamps are
+ hidden.
+ (erc-toggle-timestamps): New function to use instead of
+ `erc-show-timestamps' and `erc-hide-timestamps'.
+
+ * erc.el (erc-restore-text-properties): Moved here from
+ erc-fill.el since it could be useful in general.
+
+ * erc-fill.el (erc-restore-text-properties): Removed.
+
2007-01-13 Michael Olson <mwolson@gnu.org>
* erc.el (erc-command-regexp): New variable that is used to match
@@ -73,6 +329,10 @@
(erc-format-lag-time): New function.
(erc-update-mode-line-buffer): Use it.
+2007-01-10 Michael Olson <mwolson@gnu.org>
+
+ * erc.el: Fix typo in url-irc-function instructions.
+
2007-01-09 Michael Olson <mwolson@gnu.org>
* erc.el (erc-system-name): New option that determines the system
@@ -89,1260 +349,10 @@
(erc-menu-add, erc-menu-remove): New functions that add and remove
the ERC menu.
-2006-12-28 Michael Olson <mwolson@gnu.org>
-
- * erc-list.el: Change header to mention that this is part of ERC,
- rather than GNU Emacs.
-
- * erc-networks.el (erc-server-alist): Add Ars OpenIRC and
- LinuxChix networks. Thanks to Angelina Carlton for mentioning
- them. Properly escape periods in Konfido.Net and Kewl.Org.
- (erc-networks-alist): Add entries for Ars and LinuxChix, though
- the latter does not actually provide an announced network name.
-
- * erc-services.el (erc-nickserv-identify-mode): Add 'both method,
- which waits for a NickServ message if the network supports it,
- otherwise sends the password after connecting.
- (erc-nickserv-identify-mode): Default to 'both.
- (erc-nickserv-passwords): Add OFTC and Azzurra to custom options.
- (erc-nickserv-alist): Indentation fix.
- (erc-nickserv-identify-on-connect)
- (erc-nickserv-identify-on-nick-change): Handle 'both method.
-
-2006-12-28 Leo <sdl.web@gmail.com> (tiny change)
-
- * erc.el (erc-iswitchb): Wrap body in unwind-protect so that
- hitting C-g does not leave iswitchb-mode on.
-
-2006-12-27 Michael Olson <mwolson@gnu.org>
-
- * erc.el (erc-cmd-RECONNECT): New command that calls
- erc-server-reconnect.
-
- * erc-backend.el (erc-server-reconnect-count): New server variable
- that keeps track of reconnection attempts.
- (erc-server-reconnect-attempts): New option that determines the
- number of reconnection attempts that ERC will make per server.
- (erc-server-reconnect-timeout): New option that determines the
- amount of time, in seconds, that ERC will wait between successive
- reconnect attempts.
- (erc-server-reconnect): New function that reestablishes the
- current IRC connection. Move some commands from
- erc-process-sentinel-1 here.
- (erc-process-sentinel-1): If we have been disconnected, loop until
- we either reconnect or run out of attempts.
- (erc-server-reconnect-p): Move higher and make this a defsubst,
- since I'm worried about the current buffer changing from
- underneath us. Implement limit of number of reconnect attempts..
-
- * erc.texi (Getting Started): Update for /RECONNECT command.
-
-2006-12-26 Michael Olson <mwolson@gnu.org>
-
- * erc.el (erc-open): Restore old point correctly, or at least get
- closer to doing so than before.
-
-2006-12-13 Leo <sdl.web@gmail.com> (tiny change)
-
- * erc.el (erc-iswitchb): Temporarily enable iswitchb mode if it
- isn't active already, instead of leaving it on.
-
-2006-12-10 Juanma Barranquero <lekktu@gmail.com>
-
- * erc-ezbounce.el (erc-ezb-init-session-list): Doc fix.
-
-2006-12-08 Michael Olson <mwolson@gnu.org>
-
- * erc.el: Re-evaluate contributions from a contributor, and found
- them under 15 lines of non-obvious code, so it is safe to remove
- the copyright notice.
- (erc-modules): Remove list module.
-
- * erc-list.el: Remove, since a contributor who has not completed
- their assignment has contributed significantly more than 15 lines
- of code to this file.
-
-2006-11-28 Juanma Barranquero <lekktu@gmail.com>
-
- * erc.el (erc-cmd-BANLIST, erc-cmd-MASSUNBAN): Simplify.
- (erc-prompt-for-channel-key, erc-ignore-reply-list, erc-send-post-hook)
- (erc-active-buffer, erc-join-buffer, erc-frame-alist, erc-with-buffer)
- (erc-modules, erc-display-message-highlight, erc-process-input-line)
- (erc-cmd-HELP, erc-server-hooks, erc-echo-notice-in-user-buffers)
- (erc-format-my-nick, erc-echo-notice-in-user-and-target-buffers)
- (erc-echo-notice-in-first-user-buffer, erc-connection-established)
- (erc-update-user-nick, erc-update-channel-member, erc-highlight-notice)
- (erc-command-symbol, erc-add-query, erc-process-script-line)
- (erc-determine-parameters, erc-client-info, erc-popup-input-buffer):
- (erc-script-echo): Fix typos in docstrings.
- (erc-channel-user-op-p, erc-channel-user-voice-p, erc-startup-file-list)
- (define-erc-module, erc-once-with-server-event)
- (erc-once-with-server-event-global, erc-debug-irc-protocol)
- (erc-log-irc-protocol, erc-cmd-LOAD, erc-update-user)
- (erc-update-current-channel-member, erc-load-script):
- (erc-mode-line-away-status-format): Doc fixes.
-
-2006-11-20 Andrea Russo <rastandy@inventati.org> (tiny change)
-
- * erc-dcc.el (erc-dcc-chat-setup): Initialize `erc-input-marker'
- before calling `erc-display-prompt'.
-
-2006-11-24 Juanma Barranquero <lekktu@gmail.com>
-
- * erc.el (erc-after-connect, erc-open-ssl-stream)
- (erc-display-line-1, erc-display-line):
- * erc-backend.el (005): Fix space/tab mixup in docstrings.
-
-2006-11-20 Michael Olson <mwolson@gnu.org>
-
- * erc.el (erc-version-string): Call this Version 5.2 stable
- pre-release, since it diverges slightly from our 5.2 branch, in
- that unstable features are not included.
- (erc-update-modules): Display better error message when module not
- found.
-
-2006-11-12 Michael Olson <mwolson@gnu.org>
-
- * erc-log.el: Save all log buffers when Emacs exits, in case
- someone ignores the warning about open processes. Remove the
- advice code in the commentary.
- (erc-save-query-buffers): Docfix.
- (erc-log-save-all-buffers): New function that saves all ERC
- buffers to logs.
- (erc-current-logfile): Fix bug in filename selection, where the
- current buffer was erroneously being preferred over the given
- buffer.
-
-2006-11-08 Michael Olson <mwolson@gnu.org>
-
- * erc.el (erc-string-to-port): Avoid error when a numerical port
- is passed. Thanks to Zekeriya KOÇ for the report.
-
-2006-11-08 Åukasz Demianiuk <ldemianiuk@gmail.com> (tiny change)
-
- * erc.el (erc-header-line): Fix typo.
-
-2006-11-06 Juanma Barranquero <lekktu@gmail.com>
-
- * erc-dcc.el (erc-dcc-send-file): Fix typo in error message.
-
- * erc.el (read-passwd):
- * erc-autoaway.el (erc-autoaway-reestablish-idletimer):
- * erc-truncate.el (truncate): Fix typo in docstring.
-
-2006-10-21 Michael Olson <mwolson@gnu.org>
-
- * erc.el (erc-iswitchb): Fix bug when hitting C-c C-b without
- first loading iswitchb. Thanks to Leo for the report.
-
-2006-10-10 Michael Olson <mwolson@gnu.org>
-
- * erc.el (erc-default-port): Make the default be 6667 instead of
- ircd. since Mac OS X apparently has problems with looking up that
- port name.
-
- * erc-backend.el (353): Receive names after displaying the initial
- message, instead of before.
-
-2006-10-05 Diane Murray <disumu@x3y2z1.net>
-
- * erc.el (erc-my-nick-face): New face.
- (erc): Use FULL-NAME argument, not `erc-user-full-name'. This
- fixes a bug where the :full-name argument passed to the function
- was not respected.
- (erc-format-my-nick): Use `erc-my-nick-face'. This should help
- make it easier to find messages you sent in conversations when
- `erc-show-my-nick' is non-nil.
- (erc-compute-server): Doc fix.
-
-2006-10-01 John J Foerch <jjfoerch@earthlink.net> (tiny change)
-
- * erc-stamp.el (erc-insert-timestamp-right): Exclude the newline
- from the erc-timestamp field.
-
-2006-09-11 Michael Olson <mwolson@gnu.org>
-
- * erc-nicklist.el (erc-nicklist-insert-contents): Add missing
- parenthesis. Thanks to Stephan Stahl for the report.
-
-2006-09-10 Eric Hanchrow <offby1@blarg.net> (tiny change)
-
- * erc.el (erc-cmd-IGNORE): Prompt user if this might be a regexp
- instead of a single user.
-
-2006-09-10 Michael Olson <mwolson@gnu.org>
-
- * erc.el (erc-generate-new-buffer-name): If this is a server
- buffer and a process exists already, create a new buffer.
- (erc-open): If the IRC session was continued, restore the old
- point. Thanks to Stephan Stahl for the report.
- (erc-member-ignore-case): Coding style tweak.
- (erc-cmd-UNIGNORE): Quote the user before comparison. If we don't
- find the user listed verbatim, try to match them against the list
- using string-match. In this case, prompt as to whether the regexp
- should be removed.
- (erc-ignored-user-p): Remove CL-ism.
-
- * erc-autoaway.el (erc-autoaway-possibly-set-away): Check to see
- whether we are already away.
-
- * erc-menu.el: Fix potential compiler warning.
-
-2006-09-07 Diane Murray <disumu@x3y2z1.net>
-
- * erc.el: Updated Commentary and URL.
- (erc-iswitchb, erc-display-line, erc-set-modes, erc-update-modes)
- (erc-arrange-session-in-multiple-windows): No need to check if
- `erc-server-process' is bound.
- (erc-server-buffer-live-p): Doc fix.
- (erc-part-from-channel): Don't use any initial contents at prompt.
- (erc-format-nick, erc-format-@nick): Doc fix. Use `when'.
- (s367): Fixed to support only banmask and channel which is the
- standard. Also, there's no reason to add a message to each banned
- user entry trying to persuade the user to use /banlist instead of
- /mode #channel +b. That part of the message was a little
- confusing, anyways.
- (s367-set-by): New catalog entry. The user who set the ban and
- the time of ban seem to be specific to only certain servers such
- as freenode.
-
- * erc-autoaway.el (erc-autoaway-idletimer): Doc fix.
-
- * erc-backend.el (erc-server-process-alive): No need to check if
- `erc-server-process' is bound.
- (367): Use s367 or s367-set-by where appropriate.
-
- * erc-compat.el: Fixed URL.
-
- * erc-dcc.el: Updated copyright years. Added Usage section.
- Changed supported Emacs version number from 21.3.50 to 22 in
- Commentary.
-
- * erc-ibuffer.el (erc-server-name, erc-target, erc-away): No need
- to check if `erc-server-process' is bound.
-
- * erc-nicklist.el: Added to the Commentary section an explanation
- that `erc-nicklist-quit' should be called from within the nicklist
- buffer. Set file coding to utf-8 so a contributor's name is
- displayed correctly.
- (erc-nicklist-icons-directory): Use customize type directory
- instead of string.
- (erc-nicklist-insert-contents): Set bbdb-nick to an empty string
- if it wasn't found. This fixes a bug where an error would occur
- when using `string=' on bbdb-nick if it was nil.
-
- * erc-replace.el: Removed URL from file information since it
- doesn't exist.
-
- * erc-sound.el: Updated copyright years. Fixed Commentary and
- added Usage section.
- (define-erc-module): Add and remove `erc-ctcp-query-SOUND' to
- `erc-ctcp-query-SOUND-hook' here. Removed the keybinding
- definitions.
- (erc-play-sound, erc-default-sound, erc-cmd-SOUND)
- (erc-ctcp-query-SOUND): Doc fix.
- (erc-play-command): Removed, not necessary anymore.
- (erc-ctcp-query-SOUND-hook): Set to nil as default. Moved up
- higher in code, added docstring.
- (erc-play-sound): Use `play-sound-file'. It exists in GNU Emacs
- as well since version 21 or earlier. Removed commented-out older
- version of function.
-
- * NEWS: Fixed formatting, added channel tracking change.
-
-2006-09-03 Diane Murray <disumu@x3y2z1.net>
-
- * erc.el: M-x erc RET can now be used to start ERC.
- (erc-open): Renamed from `erc'.
- (erc-before-connect): Change erc-select to erc.
- (erc): Renamed from `erc-select'. Use `erc-open'.
- (erc-select): Defined as alias of `erc'.
- (erc-ssl): Renamed from `erc-select-ssl'. Use `erc'.
- (erc-select-ssl): Defined as alias of `erc-ssl'.
- (erc-cmd-SERVER): Use `erc'.
- (erc-query, erc-handle-irc-url): Use `erc-open'.
-
- * erc-backend.el (erc-process-sentinel-1, JOIN): Use `erc-open'.
-
- * erc-menu.el (erc-menu-definition): Use `erc'.
-
- * erc-networks.el: Updated copyright years.
- (erc-server-select): Use keyword arguments when calling `erc'.
-
- * erc.texi (Getting Started, Connecting): Changed erc-select to
- erc.
-
- * NEWS: Added note about these changes.
-
-2006-08-20 Diane Murray <disumu@x3y2z1.net>
-
- * erc-backend.el (erc-process-sentinel-1): Doc fix. Let
- `erc-server-reconnect-p' check all condition cases.
- (erc-server-reconnect-p): Moved rest of checks from
- `erc-process-sentinel-1' to here. Now takes an argument, EVENT.
-
-2006-08-21 Diane Murray <disumu@x3y2z1.net>
-
- * erc-track.el (erc-track-mode-line-mouse-face): New variable.
- (erc-make-mode-line-buffer-name): Add help-echo and mouse-face
- properties to channel name.
-
-2006-08-20 Michael Olson <mwolson@gnu.org>
-
- * erc.el (erc-with-server-buffer): New macro that switches to the
- current ERC server buffer and runs some code. If no server buffer
- is available, return nil. This is a useful way to access
- variables in the server buffer.
- (erc-open-server-buffer-p): New function that returns non-nil if
- the given buffer is an ERC server buffer that has an open IRC
- process.
-
-2006-08-14 Diane Murray <disumu@x3y2z1.net>
-
- * erc-menu.el: Updated copyright years. Removed EmacsWiki URL.
- (erc-menu-definition): Name the menu "ERC" instead of "IRC" to
- avoid confusion with rcirc and other clients.
-
- * erc-backend.el (erc-server-banned): New variable.
- (erc-server-connect): Set `erc-server-banned' to nil.
- (erc-process-sentinel-1): Use `erc-server-reconnect-p'.
- (erc-server-reconnect-p): New function. Return non-nil if the
- user wants automatic reconnects and if the user has not been
- banned from the server. This should fix a bug where ERC gets into
- a loop trying to reconnect with no way to stop it when the user is
- denied access to the server due to a server ban. It might also
- help when Tor users are blocked from freenode if freenode servers
- send the 465 message before disconnecting.
- (465): Handle "banned from server" error notices.
-
-2006-08-13 Romain Francoise <romain@orebokech.com>
-
- * erc-match.el (erc-log-matches-make-buffer): End `y-or-n-p'
- prompt with a space.
-
-2006-08-11 Michael Olson <mwolson@gnu.org>
-
- * erc-fill.el (erc-fill): Skip any initial empty lines so that we
- avoid errors when inserting disconnect messages and other messages
- that begin with newlines.
-
-2006-08-07 Michael Olson <mwolson@gnu.org>
-
- * erc-backend.el (erc-process-sentinel-1): Use erc-display-message
- in several places instead of inserting text.
- (erc-process-sentinel): Move to the input-marker before removing
- the prompt.
-
- * erc.el (erc-port): Fix customization options.
- (erc-display-message): Handle null type explicitly. Previously,
- this was relying on a chance side-effect. Cosmetic indentation
- tweak.
- (english): Add 'finished and 'terminated entries to the catalog.
- Add initial and terminal newlines to 'disconnected and
- 'disconnected-noreconnect entries. Avoid long lines.
-
-2006-08-06 Michael Olson <mwolson@gnu.org>
-
- * erc-backend.el (erc-server-send-queue): Update from Circe
- version of this function.
-
- * erc.el (erc-arrange-session-in-multiple-windows): Fix bug with
- multi-tty Emacs.
- (erc-select-startup-file): Fix bug introduced by recent change.
-
-2006-08-05 Michael Olson <mwolson@gnu.org>
-
- * erc-log.el (erc-log-standardize-name): New function that returns
- a filename that is safe for use for a log file.
- (erc-current-logfile): Use it.
-
- * erc.el (erc-startup-file-list): Search in ~/.emacs.d first,
- since that is a fairly standard directory.
- (erc-select-startup-file): Re-write to use
- convert-standard-filename, which will ensure that MS-DOS systems
- look for the _ercrc.el file.
-
-2006-08-02 Michael Olson <mwolson@gnu.org>
-
- * erc.el (erc-version-string): Release ERC 5.1.4.
-
- * Makefile, NEWS, erc.texi: Update for the 5.1.4 release.
-
- * erc.el (erc-active-buffer): Fix bug that caused messages to go
- to the wrong buffer. Thanks to offby1 for the report.
-
- * erc-backend.el (erc-coding-system-for-target): Handle case where
- target is nil. Thanks to Kai Fan for the patch.
-
-2006-07-29 Michael Olson <mwolson@gnu.org>
-
- * erc-log.el (erc-log-setup-logging): Don't offer to save the
- buffer. It will be saved automatically killed. Thanks to Johan
- Bockgård and Tassilo Horn for pointing this out.
-
-2006-07-27 Johan Bockgård <bojohan@users.sourceforge.net>
-
- * erc.el (define-erc-module): Make find-function and find-variable
- find the names constructed by `define-erc-module' in Emacs 22.
-
-2006-07-14 Michael Olson <mwolson@gnu.org>
-
- * erc-log.el (log): Make sure that we enable logging on
- already-opened buffers as well, in case the user toggles this
- module after loading ERC. Also be sure to remove logging ability
- from all ERC buffers when the module is disabled.
- (erc-log-setup-logging): Set buffer-file-name to nil rather than
- the empty string. This should fix some errors that occur when
- quitting Emacs without first killing all ERC buffers.
- (erc-log-disable-logging): New function that removes the logging
- ability from the current buffer.
-
- * erc-spelling.el (spelling): Use dolist and buffer-live-p.
-
-2006-07-12 Michael Olson <mwolson@gnu.org>
-
- * erc-match.el (erc-log-matches): Bind inhibit-read-only rather
- than call toggle-read-only.
-
- * erc.el (erc-handle-irc-url): Move here from erc-goodies.el and
- add autoload cookie.
-
-2006-07-09 Michael Olson <mwolson@gnu.org>
-
- * erc.el (erc-version-string): Release ERC 5.1.3.
-
- * erc.texi: Update for the 5.1.3 release.
-
- * erc-autoaway.el (erc-autoaway-set-back): Fix bug after returning
- from being set automatically away and current buffer is not an ERC
- buffer.
-
- * erc-identd.el: Fix compiler error.
-
- * erc.texi (Development): Use @subheading instead of @subsection.
- (Advanced Usage): Add menu.
- (Connecting): Fully document how to connect to an IRC server.
- (Options, Tips and Tricks, Sample Configuration): New unwritten
- sections.
-
- * erc.el (erc-server, erc-port, erc-nick, erc-nick-uniquifier)
- (erc-user-full-name, erc-password): Docfixes and customization
- interface tweaks.
- (erc-try-new-nick-p): Rename from
- `erc-manual-set-nick-on-bad-nick-p' and invert meaning.
- (erc-nickname-in-use): Use `erc-try-new-nick-p'. Check the length
- of `erc-nick-uniquifier', in case someone wants multiple
- characters.
- (erc-compute-server, erc-compute-nick, erc-compute-full-name)
- (erc-compute-port): Docfixes.
-
- * erc-log.el (log): Move all add-hook calls here, rather than
- executing them immediately, and also cause them to be un-hooked
- when the module is removed.
- (erc-save-buffer-on-part): Move next to
- `erc-save-queries-on-quit'.
- (erc-save-buffer-on-quit, erc-save-queries-on-quit): Default to t.
- (erc-log-write-after-send, erc-log-write-after-insert): Default to
- nil. This makes things fast, but reasonably failsafe, by default.
-
-2006-07-08 Michael Olson <mwolson@gnu.org>
-
- * erc-log.el (erc-log-insert-log-on-open): Make this nil by
- default, since most IRC clients don't do this.
- (erc-log-write-after-send): New option that determines whether the
- log file will be written to after every sent message.
- (erc-log-write-after-insert): New option that determines whether
- the log file will be written to when new text is added to a logged
- ERC buffer.
- (log): Use the aforementioned options.
-
- * erc.texi (Modules): Document the "completion" module.
-
- * erc-pcomplete.el (pcomplete-erc-nicks): Make sure that we don't
- have a nil element in the list when ignore-self is non-nil.
-
-2006-07-05 Michael Olson <mwolson@gnu.org>
-
- * erc.el (erc-modules): Add the `page' module to the list.
-
- * erc.texi (Modules): Add entries for `list' and `page' modules.
- Change "spell" to "spelling".
- (History): Use past tense throughout.
-
-2006-07-02 Michael Olson <mwolson@gnu.org>
-
- * erc-backend.el (erc-call-hooks): Fix (stringp nil) error that
- can happen when doing /PART.
-
- * erc.el (erc-quit-reason-various-alist)
- (erc-part-reason-various-alist): In the example, use "^$" as an
- example, since "" matches anything.
- (erc-quit-reason-various, erc-part-reason-various): If no argument
- is given, and no matches are found, use our default reason instead
- of "nil".
-
-2006-06-30 Michael Olson <mwolson@gnu.org>
-
- * erc.texi (Modules): Mention identd.
- (Releases): Update mailing list address and download location.
- (Development): Refactor. Provide updated directions for Arch.
- Make URLs clickable.
- (Keystroke Summary): Typo fix. Use more Texinfo syntax.
- (Getting Started): Give simpler example. We do not need to
- explicitly load every module.
- (History): Update.
-
- * erc.el (erc-version-modules): Remove, since we do not use this
- function anymore.
- (erc-latest-version, erc-ediff-latest-version): Remove, since this
- was only useful back when ERC consisted of one file.
- (erc-modules): Add line for identd.
- (erc-get-channel-mode-from-keypress): Typo fix.
-
- * erc-imenu.el: Remove unnecessary lines in header.
-
- * erc-goodies.el (erc-handle-irc-url): Docfix.
-
- * erc-identd.el: Define an ERC module for this.
- (erc-identd-start): Don't create a process buffer if possible.
- Otherwise, use conventional hidden names for process buffers.
-
-2006-06-29 Michael Olson <mwolson@gnu.org>
-
- * erc-backend.el (erc-coding-system-for-target): Match
- case-insensitively. Use a pattern match instead of `assoc', as
- per the documentation for `erc-encoding-coding-alist'.
-
- * erc-track.el (erc-track-shorten-aggressively): Fix typo.
-
-2006-06-27 Michael Olson <mwolson@gnu.org>
-
- * erc.el: Update maintainer information and URLs.
-
-2006-06-14 Michael Olson <mwolson@gnu.org>
-
- * erc.el (erc-active-buffer): If the active buffer has been
- deleted, default to the server buffer.
- (erc-toggle-flood-control): When the user hits C-c C-f, make flood
- control really toggle, not unconditionally turn off.
-
-2006-06-12 Michael Olson <mwolson@gnu.org>
-
- * NEWS: Add items since the 5.1.2 release.
-
- * erc-autoaway.el (erc-autoaway-caused-away): New variable that
- indicates whether the current away status was caused by this
- module.
- (erc-autoaway-set-back): Only set back if this module set the user
- away.
- (erc-autoaway-set-away): Update `erc-autoaway-caused-away'.
- (erc-autoaway-reset-indicators): New function that resets some
- indicators when the user is no longer away.
- (autoaway): Add the above function to the 305 hook.
-
-2006-06-05 Romain Francoise <romain@orebokech.com>
-
- * erc.texi (History): Fix various typos.
-
-2006-06-04 Michael Olson <mwolson@gnu.org>
-
- * erc-autoaway.el (erc-autoaway-idle-method): Move after the
- definition of the autoaway module.
- (autoaway): Don't do anything if erc-autoaway-idle-method is
- unbound. This prevents an error on startup.
-
-2006-06-03 Michael Olson <mwolson@gnu.org>
-
- * erc-autoaway.el: Thanks to Mark Plaksin for the ideas and patch.
- (erc-autoaway-idle-method): Renamed from
- `erc-autoaway-use-emacs-idle'. We have more than two choices for
- how to do this, so it's best to make this take symbol values.
- Improve documentation. Remove warning against Emacs idle-time;
- the point is moot now that we get user idle time via a different
- method. Make sure we disable and re-enable the module when
- changing this value.
- (autoaway): Conditionalize on the above option. If using the idle
- timer or user idle methods, don't add anything to the
- send-completed or server-001 hooks, since it is unnecessary.
- (erc-autoaway-reestablish-idletimer, erc-autoaway-message):
- Docfix.
- (erc-autoaway-idle-seconds): Use erc-autoaway-idle-method.
- (erc-autoaway-reset-idle-irc): Renamed from
- `erc-autoaway-reset-idle'. Don't pass line to
- `erc-autoaway-set-away', since it is not used.
- (erc-autoaway-reset-idle-user): New function that resets the idle
- state for user idle time.
- (erc-autoaway-set-back): Remove line argument, since it is not
- used.
-
-2006-06-01 Michael Olson <mwolson@gnu.org>
-
- * erc.el (erc-buffer-filter): Make sure all buffers returned from
- this are live.
-
-2006-05-01 Edward O'Connor <ted@oconnor.cx>
-
- * erc-goodies.el (erc-handle-irc-url): New function, suitable as
- a value for `url-irc-function'.
-
-2006-04-18 Diane Murray <disumu@x3y2z1.net>
-
- * erc-pcomplete.el (pcomplete-erc-nicks): Added new optional
- argument IGNORE-SELF. If this is non-nil, don't return the user's
- current nickname. Doc fix.
- (pcomplete/erc-mode/complete-command): Don't complete the current
- nickname.
-
-2006-04-05 Diane Murray <disumu@x3y2z1.net>
-
- * erc.el (erc-cmd-SV): Removed the exclamation point. Show the
- build date as it's shown in `emacs-version'.
-
- * erc-capab.el (erc-capab-identify-add-prefix): Insert the prefix
- with the same face property as the previous character.
-
-2006-04-02 Michael Olson <mwolson@gnu.org>
-
- * erc-backend.el, erc-ezbounce.el, erc-join.el, erc-netsplit.el,
- erc.el: Make sure to include a newline inside of negated classes,
- so that a newline is not matched.
-
-2006-04-01 Michael Olson <mwolson@gnu.org>
-
- * erc-backend.el (erc-server-connect-function): Don't try to
- detect the existence of the `open-network-stream-nowait' function,
- since I can't find it in Emacs21, XEmacs21, or Emacs22.
-
-2006-03-26 Michael Olson <mwolson@gnu.org>
-
- * erc.el (erc-header-line): New face that will be used to colorize
- the text of the header-line, provided that
- `erc-header-line-face-method' is non-nil.
- (erc-prompt-face): Fix formatting.
- (erc-header-line-face-method): New option that determines the
- method used for colorizing header-line text. This may be a
- function, nil, or non-nil.
- (erc-update-mode-line-buffer): Use the aforementioned option and
- face to colorize the header-line text, if that is what the user
- wants.
- (erc-send-input): If flood control is not activated, don't split
- the input line.
-
-2006-03-25 Michael Olson <mwolson@gnu.org>
-
- * erc.el (erc-cmd-QUOTE): Install patch from Aravind Gottipati
- that fixes the case where there is no leading whitespace. Only
- remove the first space character, though.
-
- * erc-identd.el (erc-identd-start): Fix a bug by making sure that
- erc-identd-process is set properly.
- (erc-identd-start, erc-identd-stop): Add autoload cookies.
- (erc-identd-start): Pass :host parameter so this works with Emacs
- 22.
-
-2006-03-09 Diane Murray <disumu@x3y2z1.net>
-
- * erc-button.el (erc-button-keymap): Use <backtab> rather than
- <C-tab> for `erc-button-previous' as it is a more standard key
- binding for this type of function.
-
-2006-02-28 Diane Murray <disumu@x3y2z1.net>
-
- * erc-capab.el: Removed things that were accidentally committed on
- 2006-02-20. Removed Todo section.
- (erc-capab-unidentified): Removed.
-
-2006-02-26 Michael Olson <mwolson@gnu.org>
-
- * erc-capab.el: Use (eval-when-compile (require 'cl)).
- (erc-capab-unidentified): Fix compiler warning by specifying
- group.
-
-2006-02-20 Diane Murray <disumu@x3y2z1.net>
-
- * erc-capab.el (erc-capab-send-identify-messages): Fixed comment
- to explain thoughts better. `erc-server-parameters' is an
- associated list when it's set, not a string.
-
-2006-02-19 Michael Olson <mwolson@gnu.org>
-
- * erc-capab.el (erc-capab-send-identify-messages): Make sure some
- parameters are strings before using them. Thanks to Alejandro
- Benitez for the report.
-
- * erc.el (erc-version-string): Release ERC 5.1.2.
-
-2006-02-19 Diane Murray <disumu@x3y2z1.net>
-
- * erc-button.el (erc-button-keymap): Bind `erc-button-previous' to
- <C-tab>.
- (erc-button-previous): New function.
-
-2006-02-15 Michael Olson <mwolson@gnu.org>
-
- * NEWS: Add category for ERC 5.2.
-
- * erc.el (erc): Move to the end of the buffer when a continued
- session is detected. Thanks to e1f and indio for the report and
- testing a potential fix.
-
-2006-02-14 Michael Olson <mwolson@gnu.org>
-
- * debian/changelog: Prepare a new Debian package.
-
- * Makefile (debprepare): New rule that creates an ERC snapshot
- directory for use in both new Debian releases and revisions for
- Debian packages.
- (debrelease, debrevision-mwolson): Use debprepare.
-
- * NEWS: Bring up-to-date.
-
- * erc-stamp.el (erc-insert-timestamp-right): For now, put
- timestamps before rather than after erc-fill-column when
- erc-timestamp-right-column is nil. This way we won't surprise
- anyone unpleasantly, or so it is hoped.
-
-2006-02-13 Michael Olson <mwolson@gnu.org>
-
- * erc-dcc.el: Use (eval-when-compile (require 'cl)).
-
-2006-02-12 Michael Olson <mwolson@gnu.org>
-
- * erc-autoaway.el, erc-dcc.el, erc-ezbounce.el, erc-fill.el
- * erc-goodies.el, erc-hecomplete.el, erc-ibuffer.el, erc-identd.el
- * erc-imenu.el, erc-join.el, erc-lang.el, erc-list.el, erc-log.el
- * erc-match.el, erc-menu.el, erc-netsplit.el, erc-networks.el
- * erc-notify.el, erc-page.el, erc-pcomplete.el, erc-replace.el
- * erc-ring.el, erc-services.el, erc-sound.el, erc-speedbar.el
- * erc-spelling.el, erc-track.el, erc-truncate.el, erc-xdcc.el:
- Add 2006 to copyright years, to comply with the changed guidelines.
-
-2006-02-11 Michael Olson <mwolson@gnu.org>
-
- * erc.el (erc-update-modules): Handle erc-capab-identify
- correctly. Make some requirements shorter, so that it's easier to
- see why they are needed.
-
- * erc-capab.el: Add autoload cookie for capab-identify.
- (erc-capab-send-identify-messages, erc-capab-identify-activate):
- Minor whitespace fix in code.
-
- * erc-stamp.el (erc-timestamp-use-align-to): Renamed from
- `erc-timestamp-right-align-by-pixel'. Set the default based on
- whether we are in Emacs 22, and using X. Improve documentation.
- (erc-insert-aligned): Remove calculation of offset, since
- :align-to pos works after all. Unlike the previous solution, this
- one works when erc-stamp.el is compiled.
- (erc-insert-timestamp-right): Don't add length of string, and then
- later remove its displayed width. This puts timestamps after
- erc-fill-column when erc-timestamp-right-column is nil, rather
- than before it. It also fixes a subtle bug. Remove use of
- `current-window', since there is no variable by that name in
- Emacs21, Emacs22, or XEmacs21 beta. Check to see whether
- `erc-fill-column' is non-nil before using it.
-
-2006-02-11 Diane Murray <disumu@x3y2z1.net>
-
- * erc-list.el: Define `list' module which sets the alias
- `erc-cmd-LIST' to `erc-list-channels' when enabled and
- `erc-list-channels-simple' when disabled.
- (erc-list-channels): Was `erc-cmd-LIST', renamed.
- (erc-list-channels-simple): New function.
-
- * erc.el (erc-modules): Added `list' to enabled modules. Changed
- `capab-identify' description. Moved customization options left in
- source code.
-
- * erc-menu.el (erc-menu-definition): Use `erc-list-channels'.
-
- * erc-capab.el: Put a little more detail into Usage section.
- (define-erc-module): Run `erc-capab-identify-setup' in all open
- server buffers when enabling.
- (erc-capab-identify-setup): Make PROC and PARSED optional
- arguments.
- (erc-capab-identify-add-prefix): Simplified nickname regexp. This
- should now also match nicknames that are formatted differently
- than the default.
-
- * erc-spelling.el (define-erc-module): Make sure there's a buffer
- before calling `with-current-buffer'.
-
-2006-02-10 Michael Olson <mwolson@gnu.org>
-
- * Makefile (debbuild): Split from debrelease.
- (debrevision-mwolson): New rule that causes a Debian revision to
- be built.
-
- * erc.el (erc-migrate-modules): Use a better algorithm. Thanks to
- Johan Bockgård.
- (erc-modules): Change use of 'pcomplete to 'completion.
-
-2006-02-09 Diane Murray <disumu@x3y2z1.net>
-
- * erc.el (erc-get-parsed-vector, erc-get-parsed-vector-nick)
- * erc-capab.el: Require erc.
- (erc-capab-send-identify-messages): Use `erc-server-send'.
- (erc-capab-identify-remove/set-identified-flag): Use 1 and 0 as
- the flags so we can also check whether the `erc-identified' text
- property is there at all.
- (erc-capab-identify-add-prefix): Use `erc-capab-find-parsed'.
- This fixes a bug where the prefix wasn't inserted when timestamps
- are inserted on the right. Tweaked nickname regexp.
- (erc-capab-find-parsed): New function.
- (erc-capab-get-unidentified-nickname): Updated to check for 0
- flag. Only get nickname if there's a nickuserhost associated with
- this message.
-
- * erc-capab.el: New file. Adds the new module
- `erc-capab-identify', which allows flagging of unidentified users
- on servers running an ircd based on dancer - irc.freenode.net, for
- example.
-
- * erc.el (erc-modules): Added `capab-identify' to options.
- (erc-get-parsed-vector, erc-get-parsed-vector-nick)
- (erc-get-parsed-vector-type): Moved here from erc-match.el.
-
- * erc-match.el (erc-get-parsed-vector, erc-get-parsed-vector-nick)
- (erc-get-parsed-vector-type): Moved these functions to erc.el
- since they can be useful outside of the text matching module.
-
- * NEWS: Added erc-capab.el.
-
- * erc-dcc.el, erc-stamp.el, erc-xdcc.el: Changed "Emacs IRC Client"
- to "ERC".
-
-2006-02-07 Michael Olson <mwolson@gnu.org>
-
- * ChangeLog.01, ChangeLog.02, ChangeLog.03, ChangeLog.04,
- ChangeLog.05: Rename from ChangeLog.NNNN in order to disambiguate
- the filenames in DOS.
-
- * erc-goodies.el: Comment fix.
-
- * erc-hecomplete.el: Rename from erc-complete.el. Update
- commentary. Use define-erc-module so that it's possible to
- actually use this.
- (erc-hecomplete): Rename function from `erc-complete'.
- (erc-hecomplete): Rename group from `erc-old-complete'. Docfix.
-
- * erc-join.el: Rename from erc-autojoin.el.
-
- * erc-networks.el: Rename from erc-nets.el.
-
- * erc-services.el: Rename from erc-nickserv.el.
-
- * erc-stamp.el (erc-insert-aligned): Don't take 3rd argument. Use
- the simpler `indent-to' function when
- `erc-timestamp-right-align-by-pixel' is nil.
- (erc-insert-timestamp-right): If the timestamp goes on the
- following line, don't add timestamp properties to the spaces in
- front of it.
-
- * erc.el (erc-migrate-modules): New function that eases migration
- of module names.
- (erc-modules): Call erc-migrate-modules in the :get accessor.
- (erc-modules, erc-update-modules): Update for new modules names.
- (erc-cmd-SMV): Remove, since this does not give useful output due
- to the version strings being removed from ERC modules.
-
-2006-02-05 Michael Olson <mwolson@gnu.org>
-
- * erc-spelling.el (erc-spelling-init): If
- `erc-spelling-dictionaries' is nil, do not set
- ispell-local-dictionary. Before, it was being set to nil, which
- was causing a long delay while the ispell process restarted.
- (erc-spelling-unhighlight-word): New function that removes
- flyspell properties from a spell-checked word.
- (erc-spelling-flyspell-verify): Don't spell-check nicks or words
- that have '/' before them.
-
-2006-02-04 Michael Olson <mwolson@gnu.org>
-
- * erc-autojoin.el: Use (eval-when-compile (require 'cl)).
-
- * erc-complete.el (erc-nick-completion-exclude-myself)
- (erc-try-complete-nick): Use better function for getting list of
- channel users.
-
- * erc-goodies.el: Docfix.
-
- * erc-stamp.el: Use new arch tagline, since the other one wasn't
- being treated properly.
-
- * erc.el (erc-version-string): Release ERC 5.1.1.
-
-2006-02-03 Zhang Wei <id.brep@gmail.com>
-
- * erc.el (erc-version-string): Don't hard-code Emacs version.
- (erc-version): Use emacs-version.
-
-2006-01-31 Michael Olson <mwolson@gnu.org>
-
- * erc-stamp.el: Update copyright years.
-
-2006-01-30 Simon Josefsson <jas@extundo.com>
-
- * erc.el (erc-open-ssl-stream): Use tls.el.
-
-2006-01-30 Michael Olson <mwolson@gnu.org>
-
- * erc-stamp.el (erc-timestamp-right-align-by-pixel): New option
- that determines whether to use pixel values to align right
- timestamps. The default is not to do so, since it only works with
- Emacs22 on X, and even then some people have trouble.
- (erc-insert-aligned): Use `erc-timestamp-right-align-by-pixel'.
-
-2006-01-29 Michael Olson <mwolson@gnu.org>
-
- * ChangeLog, ChangeLog.2005, ChangeLog.2004, ChangeLog.2003,
- ChangeLog.2002, ChangeLog.2001: Add "See ChangeLog.NNNN" line for
- earlier changes. Use utf-8 encoding. Fix some accent typos.
-
- * erc-speedbar.el (erc-speedbar-buttons): Fix reference to free
- variable.
- (erc-speedbar-goto-buffer): Fix compiler warning.
-
- * erc-ibuffer.el: Use `define-ibuffer-filter' instead of
- `ibuffer-degine-limiter'. Use `define-ibuffer-column' instead of
- `ibuffer-define-column'. Require 'ibuf-ext so that the macros
- work without compiler warnings.
-
- * man/erc.texi (Obtaining ERC, Installation): Note that these
- sections may be skipped if using the version of ERC that comes
- with Emacs.
-
-2006-01-29 Edward O'Connor <ted@oconnor.cx>
-
- * erc-viper.el: Remove. Now that ERC is included in Emacs, these
- work-arounds live in Viper itself.
-
-2006-01-28 Michael Olson <mwolson@gnu.org>
-
- * erc-*.el, erc.texi, NEWS: Add Arch taglines as per Emacs
- guidelines.
-
- * erc-*.el: Space out copyright years like the rest of Emacs. Use
- the Emacs copyright statement. Refer to ourselves as ERC rather
- than "Emacs IRC Client", since there are now several IRC clients
- for Emacs.
-
- * erc-compat.el (erc-emacs-build-time): Define as a variable.
-
- * erc-log.el (erc-log-setup-logging): Use write-file-functions.
-
- * erc-ibuffer.el: Require 'erc.
-
- * erc-stamp.el (erc-insert-aligned): Only use the special text
- property when window-system is X.
-
- * erc.texi: Adapt for inclusion in Emacs.
-
-2006-01-28 Johan Bockgård <bojohan@users.sourceforge.net>
-
- * erc.el (erc-format-message): More `cl' breakage; don't use
- `oddp'.
-
-2006-01-27 Michael Olson <mwolson@gnu.org>
-
- * debian/changelog: Update for new release.
-
- * debian/control (Description): Update.
-
- * debian/rules: Concatenate ChangeLog for 2005.
-
- * Makefile (MISC): Include ChangeLog.2005 and erc.texi.
- (debrelease, release): Copy images directory.
-
- * NEWS: Spelling fixes. Add items for recent changes.
-
- * erc.el (erc): Move call to erc-update-modules before the call to
- erc-mode. This should fix a timestamp display issue.
- (erc-version-string): Release ERC 5.1.
-
-2006-01-26 Michael Olson <mwolson@gnu.org>
-
- * erc-stamp.el (erc-insert-aligned): New function that inserts
- text in an perfectly-aligned way relative to the right margin. It
- only works well with Emacs22. A sane fallback is provided for
- other versions of Emacs.
- (erc-insert-timestamp-right): Use the new function.
-
-2006-01-25 Edward O'Connor <ted@oconnor.cx>
-
- * erc.el (erc-modules): Ensure that `erc-button-mode' gets enabled
- before `erc-match-mode'.
-
- * erc-match.el (match): Append `erc-match-message' to
- `erc-insert-modify-hook'.
-
-2006-01-25 Michael Olson <mwolson@gnu.org>
-
- * FOR-RELEASE: Mark last release requirement as done.
-
- * Makefile (realclean, distclean): Remove docs.
-
- * erc.texi: Take care of all pre-5.1 items.
-
- * erc-backend.el (erc-server-send, erc-server-send-queue): Wrap
- `process-send-string' in `condition-case' to avoid an error when
- quitting ERC.
-
- * erc-stamp.el (erc-insert-timestamp-right): Try to deal with
- variable-width characters in the timestamp and on the same line.
- The latter is a kludge, but it seems to work with most of the
- input I've thrown at it so far. It's certainly better than going
- past the end of line consistently when we have variable-width
- characters on the same line. When `erc-timestamp-intangible' is
- non-nil, add intangible properties to the whitespace as well, so
- that hitting <end> does what you'd expect.
-
- * erc.el (erc-flood-protect, erc-toggle-flood-control): Update
- this to only use boolean values for `erc-flood-protect'. Update
- documentation.
- (erc-cmd-QUIT): Set the active buffer to be the server buffer, so
- that any QUIT-related messages go there.
- (erc): Try to be more clever about re-using channel buffers when
- automatically re-connecting. Thanks to e1f for noticing.
-
-2006-01-23 Michael Olson <mwolson@gnu.org>
-
- * ChangeLog.2005: Remove erroneous line.
-
- * FOR-RELEASE: Make that the Makefile tweaking is complete.
- (NEWS): Mark as done.
-
- * Makefile (MANUAL): New option indicating the name of the manual.
- (PREFIX, ELISPDIR, INFODIR): New options that specify the
- directories to install lisp code and info manuals to. PREFIX is
- used only by ELISPDIR and INFODIR.
- (all): Call `lisp' and create the manual.
- (lisp): Compile lisp code.
- (%.info, %.html): New rules that make Info files and HTML files,
- respectively, from a TexInfo source.
- (doc): Create both the Info and HTML versions of the manual. This
- is for the user -- we never call it automatically.
- (install-info): Install Info files.
- (install-bin): Install compiled and source Lisp files.
- (todo): Remove, since it seems pointless.
-
- * NEWS: Update.
-
- * README: Add Installation instructions. Tweak layout.
-
- * erc.texi: Work on some pre-5.1 items.
-
- * erc-stamp.el, erc-track.el: Move some functions and options in
- order to get rid of a few compiler warnings.
-
- * erc.el (erc-modules): Enable readonly by default. This will
- prevent new users from accidentally removing old messages, which
- could be disconcerting. Also enable stamp by default, since
- timestamps are a fairly standard feature among IRC clients.
-
- * erc-button.el: Munge whitespace.
-
- * erc-identd.el (erc-identd-start): Instead of throwing an error,
- just try to use the obsolete function.
-
-2006-01-22 Michael Olson <mwolson@gnu.org>
-
- * erc-backend.el (erc-decode-string-from-target): Make sure that
- we have a string as an argument. If not, coerce it to the empty
- string. Hopefully, this will work painlessly around an edge case
- related to quitting ERC around the same time a message comes in.
-
-2006-01-22 Johan Bockgård <bojohan@users.sourceforge.net>
-
- * erc-track.el: Use `(eval-when-compile (require 'cl))' (for
- `case'). Doc fixes.
- (erc-find-parsed-property): Simplify.
- (erc-track-get-active-buffer): Fix logic. Simplify.
- (erc-track-switch-buffer): Remove unused variable `dir'. Simplify.
-
- * erc-speak.el: Doc fixes.
- (erc-speak-region): `propertize' --> `erc-propertize'.
-
- * erc-dcc.el (erc-dcc-chat-parse-output): `propertize' -->
- `erc-propertize'.
-
- * erc-button.el (erc-button-add-button): Take erc-fill-prefix into
- account when wrapping URLs.
-
- * erc-bbdb.el (erc-bbdb-elide-display): Doc fix.
-
- * erc-backend.el (define-erc-response-handler): Doc fix.
-
-2006-01-22 Michael Olson <mwolson@gnu.org>
-
- * erc.el (erc-update-modules): Use `require' instead of `load',
- but prevent it from causing errors, in order to preserve the
- previous behavior.
-
-2006-01-21 Michael Olson <mwolson@gnu.org>
-
- * FOR-RELEASE (Source): Mark cl task as done.
- * Makefile (erc-auto.el): Call erc-generate-autoloads rather than
- generate-autoloads.
- (erc-auto.el, %.elc): Don't show command, just its output.
+See ChangeLog.06 for earlier changes.
- * NEWS: Add items from 2005-01-01 to 2005-08-13.
-
- * debian/copyright (Copyright): Update.
-
- * erc-auto.in (erc-generate-autoloads): Rename from
- generate-autoloads.
-
- * erc.el, erc-autoaway.el, erc-backend.el: Use
- erc-server-process-alive instead of erc-process-alive.
-
- * erc.el, erc-backend.el, erc-ezbounce.el, erc-list.el,
- erc-log.el, erc-match.el, erc-nets.el, erc-netsplit.el,
- erc-nicklist.el, erc-nickserv.el, erc-notify.el, erc-pcomplete.el:
- Use (eval-when-compile (require 'cl)), so that compilation doesn't
- fail.
-
- * erc-fill.el, erc-truncate.el: Whitespace munging.
-
- * erc.el: Update copyright notice. Remove eval-after-load code.
- (erc-with-buffer): Docfix.
- (erc-once-with-server-event, erc-once-with-server-event-global)
- (erc-with-buffer, erc-with-all-buffers-of-server): Use erc-gensym
- instead of gensym.
- (erc-banlist-update): Use erc-delete-if instead of delete-if.
- (erc): Call `erc-update-modules' here.
-
- * erc-backend.el: Require 'erc-compat to minimize compiler
- warnings.
- (erc-decode-parsed-server-response): Docfix.
- (erc-server-process-alive): Move here from erc.el and rename from
- `erc-process-alive'.
- (erc-server-send, erc-remove-channel-users): Make sure process is
- alive before sending data to it.
-
- * erc-bbdb.el: Update copyright years.
- (erc-bbdb-whois): Remove overexuberant comment.
-
- * erc-button.el: Require erc-fill, since we make liberal use of
- `erc-fill-column'.
-
- * erc-compat.el (erc-const-expr-p, erc-list*, erc-assert): New
- functions, the latter of which provides an `assert' equivalent.
- (erc-remove-if-not): New function that provides a simple
- implementation of `remove-if-not'.
- (erc-gensym): New function that provides a simple implementation
- of `gensym'.
- (erc-delete-if): New function that provides a simple
- implementation of `delete-if'.
- (erc-member-if): New function that provides a simple
- implementation of `member-if'.
- (field-end): Remove this, since it is unused, and later versions
- of XEmacs have this function already.
- (erc-function-arglist): Moved here from erc.el.
- (erc-delete-dups): New compatibility function for dealing with
- XEmacs.
- (erc-subseq): New function copied from cl-extra.el.
-
- * erc-dcc.el: Require pcomplete during compilation to avoid
- compiler warnings.
- (erc-unpack-int, erc-dcc-send-filter)
- (erc-dcc-get-filter): Use erc-assert instead of assert.
- (pcomplete/erc-mode/DCC): Use erc-remove-if-not instead of
- remove-if-not.
-
- * erc-match.el (erc-log-matches): Fix compiler warning.
-
- * erc-nicklist.el: Update copyright notice.
- (erc-nicklist-menu): Change use of caadr to (car (cadr ...)).
- (erc-nicklist-bitlbee-connected-p): Remove.
- (erc-nicklist-insert-medium-name-or-icon): Accept channel
- argument. Use it to determine whether we are on bitlbee. Now
- that bitlbee names its channel "&bitlbee", this is trivial.
- (erc-nicklist-insert-contents): Pass channel as specified above.
- Don't try to determine whether we are on bitlbee here.
- (erc-nicklist-channel-users-info): Use erc-remove-if-not instead
- of remove-if-not.
- (erc-nicklist-search-for-nick): Use erc-member-if instead of
- member-if.
-
- * erc-notify.el (erc-notify-QUIT): Use erc-delete-if with a
- partially-evaluated lambda expression instead of `delete' and
- `find'.
-
- * erc-track.el: Use erc-assert.
- (erc-track-modified-channels): Remove use of `return'.
- (erc-track-modified-channels): Use `cadr' instead of `second',
- since otherwise we would need yet another eval-when-compile line.
-
-2006-01-19 Michael Olson <mwolson@gnu.org>
-
- * erc-backend.el (erc-process-sentinel-1): Remove attempt to
- detect SIGPIPE, since it doesn't work.
-
-2006-01-10 Diane Murray <disumu@x3y2z1.net>
-
- * erc-spelling.el: Updated copyright years.
- (define-erc-module): Enable/disable `flyspell-mode' for all open
- ERC buffers as well.
- (erc-spelling-dictionaries): Reworded customize description.
-
- * erc.el (erc-command-symbol): New function.
- (erc-extract-command-from-line): Use `erc-command-symbol'. This
- fixes a bug where "Symbol's function definition is void:
- erc-cmd-LIST" would be shown after typing /list at the prompt (the
- command was interned because erc-menu.el uses it and is enabled by
- default whereas erc-list.el is not).
-
- * NEWS: Started a list of renamed variables.
-
- * erc.el: Reworded the message sent when defining variable
- aliases.
- (erc-command-indicator-face): Doc fix.
- (erc-modules): Enable the match module by default which makes
- current nickname highlighting on as the default.
-
- * erc-button.el: Updated copyright years.
- (erc-button): New face.
- (erc-button-face): Use `erc-button'.
- (erc-button-nickname-face): New customizable variable.
- (erc-button-add-nickname-buttons, erc-button-add-buttons-1): Send
- new argument to `erc-button-add-button'.
- (erc-button-add-button): Doc fix. Added new argument to function
- definition, NICK-P. If it's a nickname, use
- `erc-button-nickname-face', otherwise use `erc-button-face'. This
- makes channel tracking and buttons work better together when
- `erc-button-buttonize-nicks' is enabled, since there is a nickname
- on just about every line.
-
- * erc-track.el (erc-track-use-faces): Doc fix.
- (erc-track-faces-priority-list): Added `erc-button' to list.
- (erc-track-priority-faces-only): Doc fix.
-
-2006-01-09 Diane Murray <disumu@x3y2z1.net>
-
- * erc-button.el (erc-button-url-regexp): Use `concat' so the
- regexp is not one long line.
- (erc-button-alist): Fixed so that customizing works correctly.
- Reorganized. Removed lambda functions with more than two lines.
- Doc fix.
- (erc-button-describe-symbol, erc-button-beats-to-time): New
- functions. Moved from `erc-button-alist'.
-
-2006-01-07 Michael Olson <mwolson@gnu.org>
-
- * erc-backend.el (erc-process-sentinel-1): Don't try to re-open a
- process if a SIGPIPE occurs. This happens when a new message
- comes in at the same time a /quit is requested.
- (erc-process-sentinel): Use string-match rather than string= to do
- these comparisons. Matching literal newlines makes me nervous.
-
- * erc-track.el (erc-track-remove-from-mode-line): Handle case
- where global-mode-string is not a list. Emacs22 permits this.
-
-
-See ChangeLog.05 for earlier changes.
-
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -1366,4 +376,4 @@ See ChangeLog.05 for earlier changes.
;; add-log-time-zone-rule: t
;; End:
-;; arch-tag: 865a75f6-2bcb-46df-bf0c-b514dadf688a
+;; arch-tag: 3369b6e5-96b1-4b32-96cd-9a905c747496
diff --git a/lisp/erc/ChangeLog.06 b/lisp/erc/ChangeLog.06
new file mode 100644
index 00000000000..f7d891cb5f6
--- /dev/null
+++ b/lisp/erc/ChangeLog.06
@@ -0,0 +1,1457 @@
+2006-12-28 Michael Olson <mwolson@gnu.org>
+
+ * erc-list.el: Change header to mention that this is part of ERC,
+ rather than GNU Emacs.
+
+ * erc-networks.el (erc-server-alist): Add Ars OpenIRC and
+ LinuxChix networks. Thanks to Angelina Carlton for mentioning
+ them. Properly escape periods in Konfido.Net and Kewl.Org.
+ (erc-networks-alist): Add entries for Ars and LinuxChix, though
+ the latter does not actually provide an announced network name.
+
+ * erc-services.el (erc-nickserv-identify-mode): Add 'both method,
+ which waits for a NickServ message if the network supports it,
+ otherwise sends the password after connecting.
+ (erc-nickserv-identify-mode): Default to 'both.
+ (erc-nickserv-passwords): Add OFTC and Azzurra to custom options.
+ (erc-nickserv-alist): Indentation fix.
+ (erc-nickserv-identify-on-connect)
+ (erc-nickserv-identify-on-nick-change): Handle 'both method.
+
+2006-12-28 Leo <sdl.web@gmail.com> (tiny change)
+
+ * erc.el (erc-iswitchb): Wrap body in unwind-protect so that
+ hitting C-g does not leave iswitchb-mode on.
+
+2006-12-27 Michael Olson <mwolson@gnu.org>
+
+ * erc.el (erc-cmd-RECONNECT): New command that calls
+ erc-server-reconnect.
+
+ * erc-backend.el (erc-server-reconnect-count): New server variable
+ that keeps track of reconnection attempts.
+ (erc-server-reconnect-attempts): New option that determines the
+ number of reconnection attempts that ERC will make per server.
+ (erc-server-reconnect-timeout): New option that determines the
+ amount of time, in seconds, that ERC will wait between successive
+ reconnect attempts.
+ (erc-server-reconnect): New function that reestablishes the
+ current IRC connection. Move some commands from
+ erc-process-sentinel-1 here.
+ (erc-process-sentinel-1): If we have been disconnected, loop until
+ we either reconnect or run out of attempts.
+ (erc-server-reconnect-p): Move higher and make this a defsubst,
+ since I'm worried about the current buffer changing from
+ underneath us. Implement limit of number of reconnect attempts..
+
+ * erc.texi (Getting Started): Update for /RECONNECT command.
+
+2006-12-26 Michael Olson <mwolson@gnu.org>
+
+ * erc.el (erc-open): Restore old point correctly, or at least get
+ closer to doing so than before.
+
+2006-12-13 Leo <sdl.web@gmail.com> (tiny change)
+
+ * erc.el (erc-iswitchb): Temporarily enable iswitchb mode if it
+ isn't active already, instead of leaving it on.
+
+2006-12-10 Juanma Barranquero <lekktu@gmail.com>
+
+ * erc-ezbounce.el (erc-ezb-init-session-list): Doc fix.
+
+2006-12-08 Michael Olson <mwolson@gnu.org>
+
+ * erc.el: Re-evaluate contributions from a contributor, and found
+ them under 15 lines of non-obvious code, so it is safe to remove
+ the copyright notice.
+ (erc-modules): Remove list module.
+
+ * erc-list.el: Remove, since a contributor who has not completed
+ their assignment has contributed significantly more than 15 lines
+ of code to this file.
+
+2006-11-28 Juanma Barranquero <lekktu@gmail.com>
+
+ * erc.el (erc-cmd-BANLIST, erc-cmd-MASSUNBAN): Simplify.
+ (erc-prompt-for-channel-key, erc-ignore-reply-list, erc-send-post-hook)
+ (erc-active-buffer, erc-join-buffer, erc-frame-alist, erc-with-buffer)
+ (erc-modules, erc-display-message-highlight, erc-process-input-line)
+ (erc-cmd-HELP, erc-server-hooks, erc-echo-notice-in-user-buffers)
+ (erc-format-my-nick, erc-echo-notice-in-user-and-target-buffers)
+ (erc-echo-notice-in-first-user-buffer, erc-connection-established)
+ (erc-update-user-nick, erc-update-channel-member, erc-highlight-notice)
+ (erc-command-symbol, erc-add-query, erc-process-script-line)
+ (erc-determine-parameters, erc-client-info, erc-popup-input-buffer):
+ (erc-script-echo): Fix typos in docstrings.
+ (erc-channel-user-op-p, erc-channel-user-voice-p, erc-startup-file-list)
+ (define-erc-module, erc-once-with-server-event)
+ (erc-once-with-server-event-global, erc-debug-irc-protocol)
+ (erc-log-irc-protocol, erc-cmd-LOAD, erc-update-user)
+ (erc-update-current-channel-member, erc-load-script):
+ (erc-mode-line-away-status-format): Doc fixes.
+
+2006-11-20 Andrea Russo <rastandy@inventati.org> (tiny change)
+
+ * erc-dcc.el (erc-dcc-chat-setup): Initialize `erc-input-marker'
+ before calling `erc-display-prompt'.
+
+2006-11-24 Juanma Barranquero <lekktu@gmail.com>
+
+ * erc.el (erc-after-connect, erc-open-ssl-stream)
+ (erc-display-line-1, erc-display-line):
+ * erc-backend.el (005): Fix space/tab mixup in docstrings.
+
+2006-11-20 Michael Olson <mwolson@gnu.org>
+
+ * erc.el (erc-version-string): Call this Version 5.2 stable
+ pre-release, since it diverges slightly from our 5.2 branch, in
+ that unstable features are not included.
+ (erc-update-modules): Display better error message when module not
+ found.
+
+2006-11-12 Michael Olson <mwolson@gnu.org>
+
+ * erc-log.el: Save all log buffers when Emacs exits, in case
+ someone ignores the warning about open processes. Remove the
+ advice code in the commentary.
+ (erc-save-query-buffers): Docfix.
+ (erc-log-save-all-buffers): New function that saves all ERC
+ buffers to logs.
+ (erc-current-logfile): Fix bug in filename selection, where the
+ current buffer was erroneously being preferred over the given
+ buffer.
+
+2006-11-08 Michael Olson <mwolson@gnu.org>
+
+ * erc.el (erc-string-to-port): Avoid error when a numerical port
+ is passed. Thanks to Zekeriya KOÇ for the report.
+
+2006-11-08 Åukasz Demianiuk <ldemianiuk@gmail.com> (tiny change)
+
+ * erc.el (erc-header-line): Fix typo.
+
+2006-11-06 Juanma Barranquero <lekktu@gmail.com>
+
+ * erc-dcc.el (erc-dcc-send-file): Fix typo in error message.
+
+ * erc.el (read-passwd):
+ * erc-autoaway.el (erc-autoaway-reestablish-idletimer):
+ * erc-truncate.el (truncate): Fix typo in docstring.
+
+2006-10-21 Michael Olson <mwolson@gnu.org>
+
+ * erc.el (erc-iswitchb): Fix bug when hitting C-c C-b without
+ first loading iswitchb. Thanks to Leo for the report.
+
+2006-10-10 Michael Olson <mwolson@gnu.org>
+
+ * erc.el (erc-default-port): Make the default be 6667 instead of
+ ircd. since Mac OS X apparently has problems with looking up that
+ port name.
+
+ * erc-backend.el (353): Receive names after displaying the initial
+ message, instead of before.
+
+2006-10-05 Diane Murray <disumu@x3y2z1.net>
+
+ * erc.el (erc-my-nick-face): New face.
+ (erc): Use FULL-NAME argument, not `erc-user-full-name'. This
+ fixes a bug where the :full-name argument passed to the function
+ was not respected.
+ (erc-format-my-nick): Use `erc-my-nick-face'. This should help
+ make it easier to find messages you sent in conversations when
+ `erc-show-my-nick' is non-nil.
+ (erc-compute-server): Doc fix.
+
+2006-10-01 John J Foerch <jjfoerch@earthlink.net> (tiny change)
+
+ * erc-stamp.el (erc-insert-timestamp-right): Exclude the newline
+ from the erc-timestamp field.
+
+2006-09-11 Michael Olson <mwolson@gnu.org>
+
+ * erc-nicklist.el (erc-nicklist-insert-contents): Add missing
+ parenthesis. Thanks to Stephan Stahl for the report.
+
+2006-09-10 Eric Hanchrow <offby1@blarg.net> (tiny change)
+
+ * erc.el (erc-cmd-IGNORE): Prompt user if this might be a regexp
+ instead of a single user.
+
+2006-09-10 Michael Olson <mwolson@gnu.org>
+
+ * erc.el (erc-generate-new-buffer-name): If this is a server
+ buffer and a process exists already, create a new buffer.
+ (erc-open): If the IRC session was continued, restore the old
+ point. Thanks to Stephan Stahl for the report.
+ (erc-member-ignore-case): Coding style tweak.
+ (erc-cmd-UNIGNORE): Quote the user before comparison. If we don't
+ find the user listed verbatim, try to match them against the list
+ using string-match. In this case, prompt as to whether the regexp
+ should be removed.
+ (erc-ignored-user-p): Remove CL-ism.
+
+ * erc-autoaway.el (erc-autoaway-possibly-set-away): Check to see
+ whether we are already away.
+
+ * erc-menu.el: Fix potential compiler warning.
+
+2006-09-07 Diane Murray <disumu@x3y2z1.net>
+
+ * erc.el: Updated Commentary and URL.
+ (erc-iswitchb, erc-display-line, erc-set-modes, erc-update-modes)
+ (erc-arrange-session-in-multiple-windows): No need to check if
+ `erc-server-process' is bound.
+ (erc-server-buffer-live-p): Doc fix.
+ (erc-part-from-channel): Don't use any initial contents at prompt.
+ (erc-format-nick, erc-format-@nick): Doc fix. Use `when'.
+ (s367): Fixed to support only banmask and channel which is the
+ standard. Also, there's no reason to add a message to each banned
+ user entry trying to persuade the user to use /banlist instead of
+ /mode #channel +b. That part of the message was a little
+ confusing, anyways.
+ (s367-set-by): New catalog entry. The user who set the ban and
+ the time of ban seem to be specific to only certain servers such
+ as freenode.
+
+ * erc-autoaway.el (erc-autoaway-idletimer): Doc fix.
+
+ * erc-backend.el (erc-server-process-alive): No need to check if
+ `erc-server-process' is bound.
+ (367): Use s367 or s367-set-by where appropriate.
+
+ * erc-compat.el: Fixed URL.
+
+ * erc-dcc.el: Updated copyright years. Added Usage section.
+ Changed supported Emacs version number from 21.3.50 to 22 in
+ Commentary.
+
+ * erc-ibuffer.el (erc-server-name, erc-target, erc-away): No need
+ to check if `erc-server-process' is bound.
+
+ * erc-nicklist.el: Added to the Commentary section an explanation
+ that `erc-nicklist-quit' should be called from within the nicklist
+ buffer. Set file coding to utf-8 so a contributor's name is
+ displayed correctly.
+ (erc-nicklist-icons-directory): Use customize type directory
+ instead of string.
+ (erc-nicklist-insert-contents): Set bbdb-nick to an empty string
+ if it wasn't found. This fixes a bug where an error would occur
+ when using `string=' on bbdb-nick if it was nil.
+
+ * erc-replace.el: Removed URL from file information since it
+ doesn't exist.
+
+ * erc-sound.el: Updated copyright years. Fixed Commentary and
+ added Usage section.
+ (define-erc-module): Add and remove `erc-ctcp-query-SOUND' to
+ `erc-ctcp-query-SOUND-hook' here. Removed the keybinding
+ definitions.
+ (erc-play-sound, erc-default-sound, erc-cmd-SOUND)
+ (erc-ctcp-query-SOUND): Doc fix.
+ (erc-play-command): Removed, not necessary anymore.
+ (erc-ctcp-query-SOUND-hook): Set to nil as default. Moved up
+ higher in code, added docstring.
+ (erc-play-sound): Use `play-sound-file'. It exists in GNU Emacs
+ as well since version 21 or earlier. Removed commented-out older
+ version of function.
+
+ * NEWS: Fixed formatting, added channel tracking change.
+
+2006-09-03 Diane Murray <disumu@x3y2z1.net>
+
+ * erc.el: M-x erc RET can now be used to start ERC.
+ (erc-open): Renamed from `erc'.
+ (erc-before-connect): Change erc-select to erc.
+ (erc): Renamed from `erc-select'. Use `erc-open'.
+ (erc-select): Defined as alias of `erc'.
+ (erc-ssl): Renamed from `erc-select-ssl'. Use `erc'.
+ (erc-select-ssl): Defined as alias of `erc-ssl'.
+ (erc-cmd-SERVER): Use `erc'.
+ (erc-query, erc-handle-irc-url): Use `erc-open'.
+
+ * erc-backend.el (erc-process-sentinel-1, JOIN): Use `erc-open'.
+
+ * erc-menu.el (erc-menu-definition): Use `erc'.
+
+ * erc-networks.el: Updated copyright years.
+ (erc-server-select): Use keyword arguments when calling `erc'.
+
+ * erc.texi (Getting Started, Connecting): Changed erc-select to
+ erc.
+
+ * README: Changed erc-select to erc.
+
+ * NEWS: Added note about these changes.
+
+ * FOR-RELEASE: Marked this item as done.
+
+2006-08-21 Diane Murray <disumu@x3y2z1.net>
+
+ * erc-track.el (erc-track-mode-line-mouse-face): New variable.
+ (erc-make-mode-line-buffer-name): Add help-echo and mouse-face
+ properties to channel name.
+
+2006-08-20 Michael Olson <mwolson@gnu.org>
+
+ * erc-identd.el (erc-identd): New customization group.
+ (erc-identd-port): New option that specifies the port to use if
+ none is given as an argument to erc-identd-start.
+ (identd): Place erc-identd-quickstart in erc-connect-pre-hook
+ instead of erc-identd-start so that we deal with the different
+ meaning of the first argument.
+ (erc-identd-start): Use erc-identd-port.
+ (erc-identd-quickstart): New function that ignores any arguments
+ and calls erc-identd-start.
+
+ * erc.el (erc-with-server-buffer): New macro that switches to the
+ current ERC server buffer and runs some code. If no server buffer
+ is available, return nil. This is a useful way to access
+ variables in the server buffer.
+ (erc-get-server-user, erc-add-server-user)
+ (erc-remove-server-user, erc-change-user-nickname)
+ (erc-get-server-nickname-list, erc-get-server-nickname-alist)
+ (erc-ison-p, erc-active-buffer, erc-cmd-IGNORE)
+ (erc-cmd-UNIGNORE, erc-cmd-IDLE, erc-cmd-NICK, erc-cmd-BANLIST)
+ (erc-cmd-MASSUNBAN, erc-nickname-in-use, erc-ignored-user-p)
+ (erc-format-channel-modes): Use it.
+ (erc-once-with-server-event, erc-once-with-server-event-global)
+ (erc-with-buffer, erc-with-all-buffers-of-server): Use make-symbol
+ instead of gensym.
+ (erc-open-server-buffer-p): New function that returns non-nil if
+ the given buffer is an ERC server buffer that has an open IRC
+ process.
+ (erc-with-buffer): Use buffer-live-p here to set a good example,
+ though it isn't really needed here.
+ (erc-away): Mention erc-away-time.
+ (erc): Don't propagate the erc-away setting, since it makes more
+ sense to access it from the server buffer. Set up the prompt
+ before connecting rather than after. Run erc-connect-pre-hook
+ with the buffer as an argument, instead of no arguments.
+ (erc-cmd-GAWAY): Use erc-open-server-buffer-p instead of
+ erc-server-buffer-p so that only open connections are set away.
+ (erc-cmd-GQUIT): Use erc-open-server-buffer-p.
+ (erc-process-away): Docfix. Don't set erc-away in channel
+ buffers.
+ (erc-set-current-nick): Make this uniform with the style used in
+ erc-current-nick.
+ (erc-away-time): Rename from erc-away-p, since this is no longer a
+ boolean-style predicate.
+ (erc-format-away-status): Use it.
+ (erc-initialize-log-marker): Accept a `buffer' argument.
+ (erc-connect-pre-hook): Docfix.
+ (erc-connection-established): Make sure this runs in the correct
+ buffer.
+ (erc-set-initial-user-mode): Accept a `buffer' argument.
+
+ * erc-stamp.el (erc-add-timestamp): Use erc-away-time.
+
+ * erc-spelling.el (erc-spelling-init): Use
+ erc-with-server-buffer. Accept `buffer' argument.
+ (spelling): Call erc-spelling-init with the `buffer' argument.
+
+ * erc-speedbar.el (erc-speedbar-buttons): Use erc-server-buffer-p.
+
+ * erc-pcomplete.el (pcomplete/erc-mode/UNIGNORE)
+ (pcomplete-erc-all-nicks): Use erc-with-server-buffer.
+
+ * erc-notify.el (erc-notify-timer, erc-cmd-NOTIFY): Use
+ erc-with-server-buffer.
+
+ * erc-networks.el (erc-network, erc-current-network)
+ (erc-network-name): Use erc-with-server-buffer.
+
+ * erc-netsplit.el (erc-cmd-WHOLEFT): Use erc-with-server-buffer.
+
+ * erc-match.el (erc-log-matches, erc-log-matches-come-back): Use
+ erc-away-time.
+
+ * erc-log.el (log): Use erc-away-time. Remove unnecessary check.
+ Pass `buffer' argument to erc-log-setup-logging instead of setting
+ the current buffer. Ditto for erc-log-disable-logging.
+ (erc-log-setup-logging, erc-log-disable-loggin): Accept a `buffer'
+ argument.
+
+ * erc-list.el (erc-chanlist): Use erc-with-server-buffer.
+
+ * erc-ibuffer.el (erc-away): Use erc-away-time.
+
+ * erc-dcc.el (erc-dcc-get-filter): Temporarily make the buffer
+ read only instead of permanently doing so.
+
+ * erc-compat.el (erc-gensym, *erc-sym-counter*): Remove, since
+ Emacs Lisp has make-symbol, which is better.
+
+ * erc-chess.el (erc-chess-handler, erc-cmd-CHESS): Use
+ erc-with-server-buffer.
+
+ * erc-capab.el (capab-identify): Only deal with server buffers
+ that have an open IRC process.
+ (erc-capab-identify-add-prefix): Use erc-with-server-buffer.
+
+ * erc-backend.el (erc-server-connected): Docfix. Recommend the
+ `erc-server-process-alive' function.
+ (erc-coding-system-for-target): Supply a default target if one is
+ not given.
+ (erc-server-send): Simplify slightly.
+ (erc-call-hooks): Use erc-with-server-buffer.
+ (erc-server-connect, erc-server-setup-periodical-ping): Accept
+ `buffer' argument.
+
+ * erc-autoaway.el (erc-autoaway-reestablish-idletimer): Move
+ higher to avoid an automatic load snafu.
+ (erc-autoaway-some-server-buffer): New function that returns an
+ ERC server buffer with a live connection, or nil otherwise.
+ (erc-autoaway-insinuate-maybe): New function that adds the
+ autoaway reset function to post-command-hook if at least one ERC
+ process is alive.
+ (erc-autoaway-remove-maybe): New function that removes the
+ autoaway reset function from post-command-hook if no ERC process
+ is alive.
+ (autoaway): Don't touch post-command-hook unless an IRC process is
+ already open. Remove our addition to post-command-hook as soon as
+ there are no more IRC processes open. Reset the indicators before
+ connecting to an IRC server, which fixes a bug when re-connecting.
+ (erc-autoaway-reset-idle-user): Call erc-autoaway-remove-maybe if
+ there are no more IRC processes open.
+ (erc-autoaway-set-back): Pick an open IRC process. Accept an
+ argument which is a function call if we can't find one.
+ (erc-autoaway-some-open-server-buffer): New function which returns
+ an ERC server buffer with an open connection and a user that is
+ not away.
+ (erc-autoaway-possibly-set-away, erc-autoaway-set-away): Use it.
+ (erc-autoaway-set-away): Accept a `notest' argument which is used
+ to avoid testing the same thing twice.
+ (erc-autoaway-last-sent-time, erc-autoaway-caused-away): Move
+ higher in file to fix byte-compile warning.
+
+2006-08-20 Diane Murray <disumu@x3y2z1.net>
+
+ * erc-backend.el (erc-process-sentinel-1): Doc fix. Let
+ `erc-server-reconnect-p' check all condition cases.
+ (erc-server-reconnect-p): Moved rest of checks from
+ `erc-process-sentinel-1' to here. Now takes an argument, EVENT.
+
+2006-08-14 Diane Murray <disumu@x3y2z1.net>
+
+ * erc-menu.el: Updated copyright years. Removed EmacsWiki URL.
+ (erc-menu-definition): Name the menu "ERC" instead of "IRC" to
+ avoid confusion with rcirc and other clients.
+
+ * erc-backend.el (erc-server-banned): New variable.
+ (erc-server-connect): Set `erc-server-banned' to nil.
+ (erc-process-sentinel-1): Use `erc-server-reconnect-p'.
+ (erc-server-reconnect-p): New function. Return non-nil if the
+ user wants automatic reconnects and if the user has not been
+ banned from the server. This should fix a bug where ERC gets into
+ a loop trying to reconnect with no way to stop it when the user is
+ denied access to the server due to a server ban. It might also
+ help when Tor users are blocked from freenode if freenode servers
+ send the 465 message before disconnecting.
+ (465): Handle "banned from server" error notices.
+
+2006-08-13 Romain Francoise <romain@orebokech.com>
+
+ * erc-match.el (erc-log-matches-make-buffer): End `y-or-n-p'
+ prompt with a space.
+
+2006-08-13 Michael Olson <mwolson@gnu.org>
+
+ * erc-backend.el (erc-server-timed-out): New variable that
+ indicates whether the current connection has timed out due to
+ failure to respond to a ping.
+ (erc-server-send-ping): Set erc-server-timed-out to t.
+ (erc-server-connect): Initialize erc-server-timed-out to nil.
+ (erc-process-sentinel-1): Consult erc-server-timed-out.
+
+2006-08-11 Michael Olson <mwolson@gnu.org>
+
+ * erc-fill.el (erc-fill): Skip any initial empty lines so that we
+ avoid errors when inserting disconnect messages and other messages
+ that begin with newlines.
+
+2006-08-07 Michael Olson <mwolson@gnu.org>
+
+ * erc-backend.el (erc-process-sentinel-1): Use erc-display-message
+ in several places instead of inserting text.
+ (erc-process-sentinel): Move to the input-marker before removing
+ the prompt.
+
+ * erc.el (erc-port): Fix customization options.
+ (erc-display-message): Handle null type explicitly. Previously,
+ this was relying on a chance side-effect. Cosmetic indentation
+ tweak.
+ (english): Add 'finished and 'terminated entries to the catalog.
+ Add initial and terminal newlines to 'disconnected and
+ 'disconnected-noreconnect entries. Avoid long lines.
+ (erc-cmd-QUIT): Bind the current erc-server-process to
+ server-proc. If the IRC server responds quickly, it is possible
+ for the connection to close, and hence server buffer to be killed,
+ if erc-kill-server-buffer-on-quit is non-nil. This avoids that
+ problem.
+
+2006-08-06 Michael Olson <mwolson@gnu.org>
+
+ * erc-backend.el (erc-server-send-queue): Update from Circe
+ version of this function.
+ (erc-server-ping-timer-alist): New variable that keeps track of
+ ping timers according to their associated server.
+ (erc-server-last-received-time): New variable that specifies the
+ time of the last message we received from the server. This is
+ used to detect hung processes.
+ (erc-server-send-ping): New function that sends a ping to the IRC
+ process corresponding with the given buffer. Split from
+ erc-server-setup-periodical-ping. If the server buffer no longer
+ exists, cancel the timer. If the server process has not given us
+ a message, including PING responses, since the last PING, kill it.
+ This is necessary to deal with some aberrant freenode behavior.
+ Idea taken from rcirc.
+ (erc-server-setup-periodical-ping): Rename from
+ erc-server-setup-periodical-server-ping.
+ (erc-server-filter-function): Use erc-current-time instead of
+ current-time.
+
+ * erc.el (erc-arrange-session-in-multiple-windows): Fix bug with
+ multi-tty Emacs.
+ (erc-select-startup-file): Fix bug introduced by recent change.
+ (erc-cmd-QUIT): If the IRC process has not terminated itself
+ within 4 seconds of completing our quit-hook, kill it manually.
+ Freenode in particular needs this.
+ (erc-connection-established): Use erc-server-setup-periodical-ping
+ instead of erc-server-setup-periodical-server-ping.
+
+2006-08-05 Michael Olson <mwolson@gnu.org>
+
+ * erc-log.el (erc-log-standardize-name): New function that returns
+ a filename that is safe for use for a log file.
+ (erc-current-logfile): Use it.
+
+ * erc.el (erc-startup-file-list): Search in ~/.emacs.d first,
+ since that is a fairly standard directory.
+ (erc-select-startup-file): Re-write to use
+ convert-standard-filename, which will ensure that MS-DOS systems
+ look for the _ercrc.el file.
+
+2006-08-02 Michael Olson <mwolson@gnu.org>
+
+ * erc.el (erc-version-string): Release ERC 5.1.4.
+
+ * Makefile, NEWS, erc.texi: Update for the 5.1.4 release.
+
+ * erc.el (erc-active-buffer): Fix bug that caused messages to go
+ to the wrong buffer. Thanks to offby1 for the report.
+
+ * erc-backend.el (erc-coding-system-for-target): Handle case where
+ target is nil. Thanks to Kai Fan for the patch.
+
+2006-07-29 Michael Olson <mwolson@gnu.org>
+
+ * erc-log.el (erc-log-setup-logging): Don't offer to save the
+ buffer. It will be saved automatically killed. Thanks to Johan
+ Bockgård and Tassilo Horn for pointing this out.
+
+2006-07-27 Johan Bockgård <bojohan@users.sourceforge.net>
+
+ * erc.el (define-erc-module): Make find-function and find-variable
+ find the names constructed by `define-erc-module' in Emacs 22.
+
+2006-07-14 Michael Olson <mwolson@gnu.org>
+
+ * erc-log.el (log): Make sure that we enable logging on
+ already-opened buffers as well, in case the user toggles this
+ module after loading ERC. Also be sure to remove logging ability
+ from all ERC buffers when the module is disabled.
+ (erc-log-setup-logging): Set buffer-file-name to nil rather than
+ the empty string. This should fix some errors that occur when
+ quitting Emacs without first killing all ERC buffers.
+ (erc-log-disable-logging): New function that removes the logging
+ ability from the current buffer.
+
+ * erc-spelling.el (spelling): Use dolist and buffer-live-p.
+
+2006-07-12 Michael Olson <mwolson@gnu.org>
+
+ * erc-match.el (erc-log-matches): Bind inhibit-read-only rather
+ than call toggle-read-only.
+
+ * erc.el (erc-handle-irc-url): Move here from erc-goodies.el and
+ add autoload cookie.
+
+2006-07-09 Michael Olson <mwolson@gnu.org>
+
+ * erc.el (erc-version-string): Release ERC 5.1.3.
+
+ * erc.texi: Update for the 5.1.3 release.
+
+ * erc-autoaway.el (erc-autoaway-set-back): Fix bug after returning
+ from being set automatically away and current buffer is not an ERC
+ buffer.
+
+ * erc-identd.el: Fix compiler error.
+
+ * erc.texi (Development): Use @subheading instead of @subsection.
+ (Advanced Usage): Add menu.
+ (Connecting): Fully document how to connect to an IRC server.
+ (Options, Tips and Tricks, Sample Configuration): New unwritten
+ sections.
+
+ * erc.el (erc-server, erc-port, erc-nick, erc-nick-uniquifier)
+ (erc-user-full-name, erc-password): Docfixes and customization
+ interface tweaks.
+ (erc-try-new-nick-p): Rename from
+ `erc-manual-set-nick-on-bad-nick-p' and invert meaning.
+ (erc-nickname-in-use): Use `erc-try-new-nick-p'. Check the length
+ of `erc-nick-uniquifier', in case someone wants multiple
+ characters.
+ (erc-compute-server, erc-compute-nick, erc-compute-full-name)
+ (erc-compute-port): Docfixes.
+
+ * erc-log.el (log): Move all add-hook calls here, rather than
+ executing them immediately, and also cause them to be un-hooked
+ when the module is removed.
+ (erc-save-buffer-on-part): Move next to
+ `erc-save-queries-on-quit'.
+ (erc-save-buffer-on-quit, erc-save-queries-on-quit): Default to t.
+ (erc-log-write-after-send, erc-log-write-after-insert): Default to
+ nil. This makes things fast, but reasonably failsafe, by default.
+
+2006-07-08 Michael Olson <mwolson@gnu.org>
+
+ * erc-log.el (erc-log-insert-log-on-open): Make this nil by
+ default, since most IRC clients don't do this.
+ (erc-log-write-after-send): New option that determines whether the
+ log file will be written to after every sent message.
+ (erc-log-write-after-insert): New option that determines whether
+ the log file will be written to when new text is added to a logged
+ ERC buffer.
+ (log): Use the aforementioned options.
+
+ * erc.texi (Modules): Document the "completion" module.
+
+ * erc-pcomplete.el (pcomplete-erc-nicks): Make sure that we don't
+ have a nil element in the list when ignore-self is non-nil.
+
+2006-07-05 Michael Olson <mwolson@gnu.org>
+
+ * erc.el (erc-modules): Use `set' instead of `set-default', since
+ this setting should never be buffer-local. Add the `page' module
+ to the list.
+
+ * erc.texi (Modules): Add entries for `list' and `page' modules.
+ Change "spell" to "spelling".
+ (History): Use past tense throughout.
+
+2006-07-02 Michael Olson <mwolson@gnu.org>
+
+ * erc-backend.el (erc-call-hooks): Fix (stringp nil) error that
+ can happen when doing /PART.
+
+ * erc.el (erc-quit-reason-various-alist)
+ (erc-part-reason-various-alist): In the example, use "^$" as an
+ example, since "" matches anything.
+ (erc-quit-reason-various, erc-part-reason-various): If no argument
+ is given, and no matches are found, use our default reason instead
+ of "nil".
+
+2006-06-30 Michael Olson <mwolson@gnu.org>
+
+ * erc.texi (Modules): Mention identd.
+ (Releases): Update mailing list address and download location.
+ (Development): Refactor. Provide updated directions for Arch.
+ Make URLs clickable.
+ (Keystroke Summary): Typo fix. Use more Texinfo syntax.
+ (Getting Started): Give simpler example. We do not need to
+ explicitly load every module.
+ (History): Update.
+
+ * erc-autoaway.el, erc-join.el, erc-backend.el, erc-bbdb.el:
+ erc-button.el, erc-chess.el, erc-compat.el, erc-hecomplete.el:
+ erc-dcc.el, erc-ezbounce.el, erc-fill.el, erc-ibuffer.el:
+ erc-imenu.el, erc-list.el, erc-log.el, erc-match.el, erc-menu.el:
+ erc-networks.el, erc-netsplit.el, erc-nicklist.el:
+ erc-services.el, erc-pcomplete.el, erc-replace.el, erc-ring.el:
+ erc-speedbar.el, erc-spelling.el, erc-stamp.el, erc-track.el:
+ erc.el: Remove version strings.
+
+ * erc.el (erc-cmd-SMV): Remove, since we do not have meaningful
+ module versions anymore.
+ (erc-version-modules): Remove, since we do not use this function
+ anymore.
+ (erc-latest-version, erc-ediff-latest-version): Remove, since this
+ was only useful back when ERC consisted of one file.
+ (erc-modules): Add line for identd.
+ (erc-get-channel-mode-from-keypress): Typo fix.
+
+ * erc-imenu.el: Remove unnecessary lines in header.
+
+ * erc-goodies.el (erc-handle-irc-url): Docfix.
+
+ * erc-identd.el: Define an ERC module for this.
+ (erc-identd-start): Don't create a process buffer if possible.
+ Otherwise, use conventional hidden names for process buffers.
+
+2006-06-29 Michael Olson <mwolson@gnu.org>
+
+ * erc-backend.el (erc-coding-system-for-target): Match
+ case-insensitively. Use a pattern match instead of `assoc', as
+ per the documentation for `erc-encoding-coding-alist'.
+
+ * erc-track.el (erc-track-shorten-aggressively): Fix typo.
+
+2006-06-27 Michael Olson <mwolson@gnu.org>
+
+ * erc.el: Update maintainer information and URLs.
+
+2006-06-14 Michael Olson <mwolson@gnu.org>
+
+ * erc.el (erc-active-buffer): If the active buffer has been
+ deleted, default to the server buffer.
+ (erc-toggle-flood-control): When the user hits C-c C-f, make flood
+ control really toggle, not unconditionally turn off.
+
+2006-06-12 Michael Olson <mwolson@gnu.org>
+
+ * NEWS: Add items since the 5.1.2 release.
+
+ * erc-autoaway.el (erc-autoaway-caused-away): New variable that
+ indicates whether the current away status was caused by this
+ module.
+ (erc-autoaway-set-back): Only set back if this module set the user
+ away.
+ (erc-autoaway-set-away): Update `erc-autoaway-caused-away'.
+ (erc-autoaway-reset-indicators): New function that resets some
+ indicators when the user is no longer away.
+ (autoaway): Add the above function to the 305 hook.
+
+2006-06-05 Romain Francoise <romain@orebokech.com>
+
+ * erc.texi (History): Fix various typos.
+
+2006-06-04 Michael Olson <mwolson@gnu.org>
+
+ * erc-autoaway.el (erc-autoaway-idle-method): Move after the
+ definition of the autoaway module.
+ (autoaway): Don't do anything if erc-autoaway-idle-method is
+ unbound. This prevents an error on startup.
+
+2006-06-03 Michael Olson <mwolson@gnu.org>
+
+ * erc-autoaway.el: Thanks to Mark Plaksin for the ideas and patch.
+ (erc-autoaway-idle-method): Renamed from
+ `erc-autoaway-use-emacs-idle'. We have more than two choices for
+ how to do this, so it's best to make this take symbol values.
+ Improve documentation. Remove warning against Emacs idle-time;
+ the point is moot now that we get user idle time via a different
+ method. Make sure we disable and re-enable the module when
+ changing this value.
+ (autoaway): Conditionalize on the above option. If using the idle
+ timer or user idle methods, don't add anything to the
+ send-completed or server-001 hooks, since it is unnecessary.
+ (erc-autoaway-reestablish-idletimer, erc-autoaway-message):
+ Docfix.
+ (erc-autoaway-idle-seconds): Use erc-autoaway-idle-method.
+ (erc-autoaway-reset-idle-irc): Renamed from
+ `erc-autoaway-reset-idle'. Don't pass line to
+ `erc-autoaway-set-away', since it is not used.
+ (erc-autoaway-reset-idle-user): New function that resets the idle
+ state for user idle time.
+ (erc-autoaway-set-back): Remove line argument, since it is not
+ used.
+
+2006-06-01 Michael Olson <mwolson@gnu.org>
+
+ * erc.el (erc-buffer-filter): Make sure all buffers returned from
+ this are live.
+
+2006-05-01 Edward O'Connor <ted@oconnor.cx>
+
+ * erc-goodies.el (erc-handle-irc-url): New function, suitable as
+ a value for `url-irc-function'.
+
+2006-04-18 Diane Murray <disumu@x3y2z1.net>
+
+ * erc-pcomplete.el (pcomplete-erc-nicks): Added new optional
+ argument IGNORE-SELF. If this is non-nil, don't return the user's
+ current nickname. Doc fix.
+ (pcomplete/erc-mode/complete-command): Don't complete the current
+ nickname.
+
+2006-04-05 Diane Murray <disumu@x3y2z1.net>
+
+ * erc.el (erc-cmd-SV): Removed the exclamation point. Show the
+ build date as it's shown in `emacs-version'.
+
+ * erc-capab.el (erc-capab-identify-add-prefix): Insert the prefix
+ with the same face property as the previous character.
+
+2006-04-02 Michael Olson <mwolson@gnu.org>
+
+ * erc-backend.el, erc-ezbounce.el, erc-join.el, erc-netsplit.el,
+ erc.el: Make sure to include a newline inside of negated classes,
+ so that a newline is not matched.
+
+2006-04-01 Michael Olson <mwolson@gnu.org>
+
+ * erc-backend.el (erc-server-connect-function): Don't try to
+ detect the existence of the `open-network-stream-nowait' function,
+ since I can't find it in Emacs21, XEmacs21, or Emacs22.
+
+2006-03-27 Michael Olson <mwolson@gnu.org>
+
+ * erc.texi: Update direntry. Remove unneeded local variables.
+
+2006-03-26 Michael Olson <mwolson@gnu.org>
+
+ * erc.el (erc-header-line): New face that will be used to colorize
+ the text of the header-line, provided that
+ `erc-header-line-face-method' is non-nil.
+ (erc-prompt-face): Fix formatting.
+ (erc-header-line-face-method): New option that determines the
+ method used for colorizing header-line text. This may be a
+ function, nil, or non-nil.
+ (erc-update-mode-line-buffer): Use the aforementioned option and
+ face to colorize the header-line text, if that is what the user
+ wants.
+ (erc-send-input): If flood control is not activated, don't split
+ the input line.
+
+2006-03-25 Michael Olson <mwolson@gnu.org>
+
+ * erc.el (erc-cmd-QUOTE): Install patch from Aravind Gottipati
+ that fixes the case where there is no leading whitespace. Only
+ remove the first space character, though.
+
+ * erc-identd.el (erc-identd-start): Fix a bug by making sure that
+ erc-identd-process is set properly.
+ (erc-identd-start, erc-identd-stop): Add autoload cookies.
+ (erc-identd-start): Pass :host parameter so this works with Emacs
+ 22.
+
+2006-03-09 Diane Murray <disumu@x3y2z1.net>
+
+ * erc-button.el (erc-button-keymap): Use <backtab> rather than
+ <C-tab> for `erc-button-previous' as it is a more standard key
+ binding for this type of function.
+
+2006-02-28 Diane Murray <disumu@x3y2z1.net>
+
+ * erc-capab.el: Removed things that were accidentally committed on
+ 2006-02-20. Removed Todo section.
+ (erc-capab-unidentified): Removed.
+
+2006-02-26 Michael Olson <mwolson@gnu.org>
+
+ * erc-capab.el: Use (eval-when-compile (require 'cl)).
+ (erc-capab-unidentified): Fix compiler warning by specifying
+ group.
+
+2006-02-20 Diane Murray <disumu@x3y2z1.net>
+
+ * erc-capab.el (erc-capab-send-identify-messages): Fixed comment
+ to explain thoughts better. `erc-server-parameters' is an
+ associated list when it's set, not a string.
+
+2006-02-19 Michael Olson <mwolson@gnu.org>
+
+ * erc-capab.el (erc-capab-send-identify-messages): Make sure some
+ parameters are strings before using them. Thanks to Alejandro
+ Benitez for the report.
+
+ * erc.el (erc-version-string): Release ERC 5.1.2.
+
+2006-02-19 Diane Murray <disumu@x3y2z1.net>
+
+ * erc-button.el (erc-button-keymap): Bind `erc-button-previous' to
+ <C-tab>.
+ (erc-button-previous): New function.
+
+2006-02-15 Michael Olson <mwolson@gnu.org>
+
+ * NEWS: Add category for ERC 5.2.
+
+ * erc.el (erc): Move to the end of the buffer when a continued
+ session is detected. Thanks to e1f and indio for the report and
+ testing a potential fix.
+
+2006-02-14 Michael Olson <mwolson@gnu.org>
+
+ * debian/changelog: Prepare a new Debian package.
+
+ * Makefile (debprepare): New rule that creates an ERC snapshot
+ directory for use in both new Debian releases and revisions for
+ Debian packages.
+ (debrelease, debrevision-mwolson): Use debprepare.
+
+ * NEWS: Bring up-to-date.
+
+ * erc-stamp.el (erc-insert-timestamp-right): For now, put
+ timestamps before rather than after erc-fill-column when
+ erc-timestamp-right-column is nil. This way we won't surprise
+ anyone unpleasantly, or so it is hoped.
+
+2006-02-13 Michael Olson <mwolson@gnu.org>
+
+ * erc-dcc.el: Use (eval-when-compile (require 'cl)).
+
+2006-02-12 Michael Olson <mwolson@gnu.org>
+
+ * erc-autoaway.el, erc-dcc.el, erc-ezbounce.el, erc-fill.el
+ * erc-goodies.el, erc-hecomplete.el, erc-ibuffer.el, erc-identd.el
+ * erc-imenu.el, erc-join.el, erc-lang.el, erc-list.el, erc-log.el
+ * erc-match.el, erc-menu.el, erc-netsplit.el, erc-networks.el
+ * erc-notify.el, erc-page.el, erc-pcomplete.el, erc-replace.el
+ * erc-ring.el, erc-services.el, erc-sound.el, erc-speedbar.el
+ * erc-spelling.el, erc-track.el, erc-truncate.el, erc-xdcc.el:
+ Add 2006 to copyright years, to comply with the changed guidelines.
+
+2006-02-11 Michael Olson <mwolson@gnu.org>
+
+ * erc.el (erc-update-modules): Handle erc-capab-identify
+ correctly. Make some requirements shorter, so that it's easier to
+ see why they are needed.
+
+ * erc-capab.el: Add autoload cookie for capab-identify.
+ (erc-capab-send-identify-messages, erc-capab-identify-activate):
+ Minor whitespace fix in code.
+
+ * erc-stamp.el (erc-timestamp-use-align-to): Renamed from
+ `erc-timestamp-right-align-by-pixel'. Set the default based on
+ whether we are in Emacs 22, and using X. Improve documentation.
+ (erc-insert-aligned): Remove calculation of offset, since
+ :align-to pos works after all. Unlike the previous solution, this
+ one works when erc-stamp.el is compiled.
+ (erc-insert-timestamp-right): Don't add length of string, and then
+ later remove its displayed width. This puts timestamps after
+ erc-fill-column when erc-timestamp-right-column is nil, rather
+ than before it. It also fixes a subtle bug. Remove use of
+ `current-window', since there is no variable by that name in
+ Emacs21, Emacs22, or XEmacs21 beta. Check to see whether
+ `erc-fill-column' is non-nil before using it.
+
+2006-02-11 Diane Murray <disumu@x3y2z1.net>
+
+ * erc-list.el: Define `list' module which sets the alias
+ `erc-cmd-LIST' to `erc-list-channels' when enabled and
+ `erc-list-channels-simple' when disabled.
+ (erc-list-channels): Was `erc-cmd-LIST', renamed.
+ (erc-list-channels-simple): New function.
+
+ * erc.el (erc-modules): Added `list' to enabled modules. Changed
+ `capab-identify' description. Moved customization options left in
+ source code.
+
+ * erc-menu.el (erc-menu-definition): Use `erc-list-channels'.
+
+ * erc-capab.el: Put a little more detail into Usage section.
+ (define-erc-module): Run `erc-capab-identify-setup' in all open
+ server buffers when enabling.
+ (erc-capab-identify-setup): Make PROC and PARSED optional
+ arguments.
+ (erc-capab-identify-add-prefix): Simplified nickname regexp. This
+ should now also match nicknames that are formatted differently
+ than the default.
+
+ * erc-spelling.el (define-erc-module): Make sure there's a buffer
+ before calling `with-current-buffer'.
+
+2006-02-10 Michael Olson <mwolson@gnu.org>
+
+ * Makefile (debbuild): Split from debrelease.
+ (debrevision-mwolson): New rule that causes a Debian revision to
+ be built.
+
+ * erc.el (erc-migrate-modules): Use a better algorithm. Thanks to
+ Johan Bockgård.
+ (erc-modules): Change use of 'pcomplete to 'completion.
+
+2006-02-09 Diane Murray <disumu@x3y2z1.net>
+
+ * erc.el (erc-get-parsed-vector, erc-get-parsed-vector-nick)
+ * erc-capab.el: Require erc.
+ (erc-capab-send-identify-messages): Use `erc-server-send'.
+ (erc-capab-identify-remove/set-identified-flag): Use 1 and 0 as
+ the flags so we can also check whether the `erc-identified' text
+ property is there at all.
+ (erc-capab-identify-add-prefix): Use `erc-capab-find-parsed'.
+ This fixes a bug where the prefix wasn't inserted when timestamps
+ are inserted on the right. Tweaked nickname regexp.
+ (erc-capab-find-parsed): New function.
+ (erc-capab-get-unidentified-nickname): Updated to check for 0
+ flag. Only get nickname if there's a nickuserhost associated with
+ this message.
+
+ * erc-capab.el: New file. Adds the new module
+ `erc-capab-identify', which allows flagging of unidentified users
+ on servers running an ircd based on dancer - irc.freenode.net, for
+ example.
+
+ * erc.el (erc-modules): Added `capab-identify' to options.
+ (erc-get-parsed-vector, erc-get-parsed-vector-nick)
+ (erc-get-parsed-vector-type): Moved here from erc-match.el.
+
+ * erc-match.el (erc-get-parsed-vector, erc-get-parsed-vector-nick)
+ (erc-get-parsed-vector-type): Moved these functions to erc.el
+ since they can be useful outside of the text matching module.
+
+ * NEWS: Added erc-capab.el.
+
+ * erc-dcc.el, erc-stamp.el, erc-xdcc.el: Changed "Emacs IRC Client"
+ to "ERC".
+
+2006-02-07 Michael Olson <mwolson@gnu.org>
+
+ * ChangeLog.01, ChangeLog.02, ChangeLog.03, ChangeLog.04,
+ ChangeLog.05: Rename from ChangeLog.NNNN in order to disambiguate
+ the filenames in DOS.
+
+ * erc-goodies.el: Comment fix.
+
+ * erc-hecomplete.el: Rename from erc-complete.el. Update
+ commentary. Use define-erc-module so that it's possible to
+ actually use this.
+ (erc-hecomplete): Rename function from `erc-complete'.
+ (erc-hecomplete): Rename group from `erc-old-complete'. Docfix.
+
+ * erc-join.el: Rename from erc-autojoin.el.
+
+ * erc-networks.el: Rename from erc-nets.el.
+
+ * erc-services.el: Rename from erc-nickserv.el.
+
+ * erc-stamp.el (erc-insert-aligned): Don't take 3rd argument. Use
+ the simpler `indent-to' function when
+ `erc-timestamp-right-align-by-pixel' is nil.
+ (erc-insert-timestamp-right): If the timestamp goes on the
+ following line, don't add timestamp properties to the spaces in
+ front of it.
+
+ * erc.el (erc-migrate-modules): New function that eases migration
+ of module names.
+ (erc-modules): Call erc-migrate-modules in the :get accessor.
+ (erc-modules, erc-update-modules): Update for new modules names.
+ (erc-cmd-SMV): Remove, since this does not give useful output due
+ to the version strings being removed from ERC modules.
+
+2006-02-05 Michael Olson <mwolson@gnu.org>
+
+ * erc-spelling.el (erc-spelling-init): If
+ `erc-spelling-dictionaries' is nil, do not set
+ ispell-local-dictionary. Before, it was being set to nil, which
+ was causing a long delay while the ispell process restarted.
+ (erc-spelling-unhighlight-word): New function that removes
+ flyspell properties from a spell-checked word.
+ (erc-spelling-flyspell-verify): Don't spell-check nicks or words
+ that have '/' before them.
+
+2006-02-04 Michael Olson <mwolson@gnu.org>
+
+ * erc-autojoin.el: Use (eval-when-compile (require 'cl)).
+
+ * erc-complete.el (erc-nick-completion-exclude-myself)
+ (erc-try-complete-nick): Use better function for getting list of
+ channel users.
+
+ * erc-goodies.el: Docfix.
+
+ * erc-stamp.el: Use new arch tagline, since the other one wasn't
+ being treated properly.
+
+ * erc.el (erc-version-string): Release ERC 5.1.1.
+
+2006-02-03 Zhang Wei <id.brep@gmail.com>
+
+ * erc.el (erc-version-string): Don't hard-code Emacs version.
+ (erc-version): Use emacs-version.
+
+2006-01-31 Michael Olson <mwolson@gnu.org>
+
+ * erc-stamp.el: Update copyright years.
+
+2006-01-30 Simon Josefsson <jas@extundo.com>
+
+ * erc.el (erc-open-ssl-stream): Use tls.el.
+
+2006-01-30 Michael Olson <mwolson@gnu.org>
+
+ * erc-stamp.el (erc-timestamp-right-align-by-pixel): New option
+ that determines whether to use pixel values to align right
+ timestamps. The default is not to do so, since it only works with
+ Emacs22 on X, and even then some people have trouble.
+ (erc-insert-aligned): Use `erc-timestamp-right-align-by-pixel'.
+
+2006-01-29 Michael Olson <mwolson@gnu.org>
+
+ * ChangeLog, ChangeLog.2005, ChangeLog.2004, ChangeLog.2003,
+ ChangeLog.2002, ChangeLog.2001: Add "See ChangeLog.NNNN" line for
+ earlier changes. Use utf-8 encoding. Fix some accent typos.
+
+ * erc-speedbar.el (erc-speedbar-buttons): Fix reference to free
+ variable.
+ (erc-speedbar-goto-buffer): Fix compiler warning.
+
+ * erc-ibuffer.el: Use `define-ibuffer-filter' instead of
+ `ibuffer-degine-limiter'. Use `define-ibuffer-column' instead of
+ `ibuffer-define-column'. Require 'ibuf-ext so that the macros
+ work without compiler warnings.
+
+ * man/erc.texi (Obtaining ERC, Installation): Note that these
+ sections may be skipped if using the version of ERC that comes
+ with Emacs.
+
+2006-01-29 Edward O'Connor <ted@oconnor.cx>
+
+ * erc-viper.el: Remove. Now that ERC is included in Emacs, these
+ work-arounds live in Viper itself.
+
+2006-01-28 Michael Olson <mwolson@gnu.org>
+
+ * erc-*.el, erc.texi, NEWS: Add Arch taglines as per Emacs
+ guidelines.
+
+ * erc-*.el: Space out copyright years like the rest of Emacs. Use
+ the Emacs copyright statement. Refer to ourselves as ERC rather
+ than "Emacs IRC Client", since there are now several IRC clients
+ for Emacs.
+
+ * erc-compat.el (erc-emacs-build-time): Define as a variable.
+
+ * erc-log.el (erc-log-setup-logging): Use write-file-functions.
+
+ * erc-ibuffer.el: Require 'erc.
+
+ * erc-stamp.el (erc-insert-aligned): Only use the special text
+ property when window-system is X.
+
+ * erc.texi: Adapt for inclusion in Emacs.
+
+2006-01-28 Johan Bockgård <bojohan@users.sourceforge.net>
+
+ * erc.el (erc-format-message): More `cl' breakage; don't use
+ `oddp'.
+
+2006-01-27 Michael Olson <mwolson@gnu.org>
+
+ * debian/changelog: Update for new release.
+
+ * debian/control (Description): Update.
+
+ * debian/rules: Concatenate ChangeLog for 2005.
+
+ * Makefile (MISC): Include ChangeLog.2005 and erc.texi.
+ (debrelease, release): Copy images directory.
+
+ * NEWS: Spelling fixes. Add items for recent changes.
+
+ * erc.el (erc): Move call to erc-update-modules before the call to
+ erc-mode. This should fix a timestamp display issue.
+ (erc-version-string): Release ERC 5.1.
+
+2006-01-26 Michael Olson <mwolson@gnu.org>
+
+ * erc-stamp.el (erc-insert-aligned): New function that inserts
+ text in an perfectly-aligned way relative to the right margin. It
+ only works well with Emacs22. A sane fallback is provided for
+ other versions of Emacs.
+ (erc-insert-timestamp-right): Use the new function.
+
+2006-01-25 Edward O'Connor <ted@oconnor.cx>
+
+ * erc.el (erc-modules): Ensure that `erc-button-mode' gets enabled
+ before `erc-match-mode'.
+
+ * erc-match.el (match): Append `erc-match-message' to
+ `erc-insert-modify-hook'.
+
+2006-01-25 Michael Olson <mwolson@gnu.org>
+
+ * FOR-RELEASE: Mark last release requirement as done.
+
+ * Makefile (realclean, distclean): Remove docs.
+
+ * erc.texi: Take care of all pre-5.1 items.
+
+ * erc-backend.el (erc-server-send, erc-server-send-queue): Wrap
+ `process-send-string' in `condition-case' to avoid an error when
+ quitting ERC.
+
+ * erc-stamp.el (erc-insert-timestamp-right): Try to deal with
+ variable-width characters in the timestamp and on the same line.
+ The latter is a kludge, but it seems to work with most of the
+ input I've thrown at it so far. It's certainly better than going
+ past the end of line consistently when we have variable-width
+ characters on the same line. When `erc-timestamp-intangible' is
+ non-nil, add intangible properties to the whitespace as well, so
+ that hitting <end> does what you'd expect.
+
+ * erc.el (erc-flood-protect, erc-toggle-flood-control): Update
+ this to only use boolean values for `erc-flood-protect'. Update
+ documentation.
+ (erc-cmd-QUIT): Set the active buffer to be the server buffer, so
+ that any QUIT-related messages go there.
+ (erc): Try to be more clever about re-using channel buffers when
+ automatically re-connecting. Thanks to e1f for noticing.
+
+2006-01-23 Michael Olson <mwolson@gnu.org>
+
+ * ChangeLog.2005: Remove erroneous line.
+
+ * FOR-RELEASE: Make that the Makefile tweaking is complete.
+ (NEWS): Mark as done.
+
+ * Makefile (MANUAL): New option indicating the name of the manual.
+ (PREFIX, ELISPDIR, INFODIR): New options that specify the
+ directories to install lisp code and info manuals to. PREFIX is
+ used only by ELISPDIR and INFODIR.
+ (all): Call `lisp' and create the manual.
+ (lisp): Compile lisp code.
+ (%.info, %.html): New rules that make Info files and HTML files,
+ respectively, from a TexInfo source.
+ (doc): Create both the Info and HTML versions of the manual. This
+ is for the user -- we never call it automatically.
+ (install-info): Install Info files.
+ (install-bin): Install compiled and source Lisp files.
+ (todo): Remove, since it seems pointless.
+
+ * NEWS: Update.
+
+ * README: Add Installation instructions. Tweak layout.
+
+ * erc.texi: Work on some pre-5.1 items.
+
+ * erc-stamp.el, erc-track.el: Move some functions and options in
+ order to get rid of a few compiler warnings.
+
+ * erc.el (erc-modules): Enable readonly by default. This will
+ prevent new users from accidentally removing old messages, which
+ could be disconcerting. Also enable stamp by default, since
+ timestamps are a fairly standard feature among IRC clients.
+
+ * erc-button.el: Munge whitespace.
+
+ * erc-identd.el (erc-identd-start): Instead of throwing an error,
+ just try to use the obsolete function.
+
+2006-01-22 Michael Olson <mwolson@gnu.org>
+
+ * erc-backend.el (erc-decode-string-from-target): Make sure that
+ we have a string as an argument. If not, coerce it to the empty
+ string. Hopefully, this will work painlessly around an edge case
+ related to quitting ERC around the same time a message comes in.
+
+2006-01-22 Johan Bockgård <bojohan@users.sourceforge.net>
+
+ * erc-track.el: Use `(eval-when-compile (require 'cl))' (for
+ `case'). Doc fixes.
+ (erc-find-parsed-property): Simplify.
+ (erc-track-get-active-buffer): Fix logic. Simplify.
+ (erc-track-switch-buffer): Remove unused variable `dir'. Simplify.
+
+ * erc-speak.el: Doc fixes.
+ (erc-speak-region): `propertize' --> `erc-propertize'.
+
+ * erc-dcc.el (erc-dcc-chat-parse-output): `propertize' -->
+ `erc-propertize'.
+
+ * erc-button.el (erc-button-add-button): Take erc-fill-prefix into
+ account when wrapping URLs.
+
+ * erc-bbdb.el (erc-bbdb-elide-display): Doc fix.
+
+ * erc-backend.el (define-erc-response-handler): Doc fix.
+
+2006-01-22 Michael Olson <mwolson@gnu.org>
+
+ * erc.el (erc-update-modules): Use `require' instead of `load',
+ but prevent it from causing errors, in order to preserve the
+ previous behavior.
+
+2006-01-21 Michael Olson <mwolson@gnu.org>
+
+ * FOR-RELEASE (Source): Mark cl task as done.
+
+ * Makefile (erc-auto.el): Call erc-generate-autoloads rather than
+ generate-autoloads.
+ (erc-auto.el, %.elc): Don't show command, just its output.
+
+ * NEWS: Add items from 2005-01-01 to 2005-08-13.
+
+ * debian/copyright (Copyright): Update.
+
+ * erc-auto.in (erc-generate-autoloads): Rename from
+ generate-autoloads.
+
+ * erc.el, erc-autoaway.el, erc-backend.el: Use
+ erc-server-process-alive instead of erc-process-alive.
+
+ * erc.el, erc-backend.el, erc-ezbounce.el, erc-list.el,
+ erc-log.el, erc-match.el, erc-nets.el, erc-netsplit.el,
+ erc-nicklist.el, erc-nickserv.el, erc-notify.el, erc-pcomplete.el:
+ Use (eval-when-compile (require 'cl)), so that compilation doesn't
+ fail.
+
+ * erc-fill.el, erc-truncate.el: Whitespace munging.
+
+ * erc.el: Update copyright notice. Remove eval-after-load code.
+ (erc-with-buffer): Docfix.
+ (erc-once-with-server-event, erc-once-with-server-event-global)
+ (erc-with-buffer, erc-with-all-buffers-of-server): Use erc-gensym
+ instead of gensym.
+ (erc-banlist-update): Use erc-delete-if instead of delete-if.
+ (erc): Call `erc-update-modules' here.
+
+ * erc-backend.el: Require 'erc-compat to minimize compiler
+ warnings.
+ (erc-decode-parsed-server-response): Docfix.
+ (erc-server-process-alive): Move here from erc.el and rename from
+ `erc-process-alive'.
+ (erc-server-send, erc-remove-channel-users): Make sure process is
+ alive before sending data to it.
+
+ * erc-bbdb.el: Update copyright years.
+ (erc-bbdb-whois): Remove overexuberant comment.
+
+ * erc-button.el: Require erc-fill, since we make liberal use of
+ `erc-fill-column'.
+
+ * erc-compat.el (erc-const-expr-p, erc-list*, erc-assert): New
+ functions, the latter of which provides an `assert' equivalent.
+ (erc-remove-if-not): New function that provides a simple
+ implementation of `remove-if-not'.
+ (erc-gensym): New function that provides a simple implementation
+ of `gensym'.
+ (erc-delete-if): New function that provides a simple
+ implementation of `delete-if'.
+ (erc-member-if): New function that provides a simple
+ implementation of `member-if'.
+ (field-end): Remove this, since it is unused, and later versions
+ of XEmacs have this function already.
+ (erc-function-arglist): Moved here from erc.el.
+ (erc-delete-dups): New compatibility function for dealing with
+ XEmacs.
+ (erc-subseq): New function copied from cl-extra.el.
+
+ * erc-dcc.el: Require pcomplete during compilation to avoid
+ compiler warnings.
+ (erc-unpack-int, erc-dcc-send-filter)
+ (erc-dcc-get-filter): Use erc-assert instead of assert.
+ (pcomplete/erc-mode/DCC): Use erc-remove-if-not instead of
+ remove-if-not.
+
+ * erc-match.el (erc-log-matches): Fix compiler warning.
+
+ * erc-nicklist.el: Update copyright notice.
+ (erc-nicklist-menu): Change use of caadr to (car (cadr ...)).
+ (erc-nicklist-bitlbee-connected-p): Remove.
+ (erc-nicklist-insert-medium-name-or-icon): Accept channel
+ argument. Use it to determine whether we are on bitlbee. Now
+ that bitlbee names its channel "&bitlbee", this is trivial.
+ (erc-nicklist-insert-contents): Pass channel as specified above.
+ Don't try to determine whether we are on bitlbee here.
+ (erc-nicklist-channel-users-info): Use erc-remove-if-not instead
+ of remove-if-not.
+ (erc-nicklist-search-for-nick): Use erc-member-if instead of
+ member-if.
+
+ * erc-notify.el (erc-notify-QUIT): Use erc-delete-if with a
+ partially-evaluated lambda expression instead of `delete' and
+ `find'.
+
+ * erc-track.el: Use erc-assert.
+ (erc-track-modified-channels): Remove use of `return'.
+ (erc-track-modified-channels): Use `cadr' instead of `second',
+ since otherwise we would need yet another eval-when-compile line.
+
+2006-01-19 Michael Olson <mwolson@gnu.org>
+
+ * erc-backend.el (erc-process-sentinel-1): Remove attempt to
+ detect SIGPIPE, since it doesn't work.
+
+2006-01-10 Diane Murray <disumu@x3y2z1.net>
+
+ * erc-spelling.el: Updated copyright years.
+ (define-erc-module): Enable/disable `flyspell-mode' for all open
+ ERC buffers as well.
+ (erc-spelling-dictionaries): Reworded customize description.
+
+ * erc.el (erc-command-symbol): New function.
+ (erc-extract-command-from-line): Use `erc-command-symbol'. This
+ fixes a bug where "Symbol's function definition is void:
+ erc-cmd-LIST" would be shown after typing /list at the prompt (the
+ command was interned because erc-menu.el uses it and is enabled by
+ default whereas erc-list.el is not).
+
+ * NEWS: Started a list of renamed variables.
+
+ * erc.el: Reworded the message sent when defining variable
+ aliases.
+ (erc-command-indicator-face): Doc fix.
+ (erc-modules): Enable the match module by default which makes
+ current nickname highlighting on as the default.
+
+ * erc-button.el: Updated copyright years.
+ (erc-button): New face.
+ (erc-button-face): Use `erc-button'.
+ (erc-button-nickname-face): New customizable variable.
+ (erc-button-add-nickname-buttons, erc-button-add-buttons-1): Send
+ new argument to `erc-button-add-button'.
+ (erc-button-add-button): Doc fix. Added new argument to function
+ definition, NICK-P. If it's a nickname, use
+ `erc-button-nickname-face', otherwise use `erc-button-face'. This
+ makes channel tracking and buttons work better together when
+ `erc-button-buttonize-nicks' is enabled, since there is a nickname
+ on just about every line.
+
+ * erc-track.el (erc-track-use-faces): Doc fix.
+ (erc-track-faces-priority-list): Added `erc-button' to list.
+ (erc-track-priority-faces-only): Doc fix.
+
+2006-01-09 Diane Murray <disumu@x3y2z1.net>
+
+ * erc-button.el (erc-button-url-regexp): Use `concat' so the
+ regexp is not one long line.
+ (erc-button-alist): Fixed so that customizing works correctly.
+ Reorganized. Removed lambda functions with more than two lines.
+ Doc fix.
+ (erc-button-describe-symbol, erc-button-beats-to-time): New
+ functions. Moved from `erc-button-alist'.
+
+2006-01-07 Michael Olson <mwolson@gnu.org>
+
+ * erc-backend.el (erc-process-sentinel-1): Don't try to re-open a
+ process if a SIGPIPE occurs. This happens when a new message
+ comes in at the same time a /quit is requested.
+ (erc-process-sentinel): Use string-match rather than string= to do
+ these comparisons. Matching literal newlines makes me nervous.
+
+ * erc-track.el (erc-track-remove-from-mode-line): Handle case
+ where global-mode-string is not a list. Emacs22 permits this.
+
+
+See ChangeLog.05 for earlier changes.
+
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+ This file is part of GNU Emacs.
+
+ GNU Emacs is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ GNU Emacs is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GNU Emacs; see the file COPYING. If not, write to the
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+
+;; Local Variables:
+;; coding: utf-8
+;; add-log-time-zone-rule: t
+;; End:
+
+;; arch-tag: 865a75f6-2bcb-46df-bf0c-b514dadf688a
diff --git a/lisp/erc/erc-autoaway.el b/lisp/erc/erc-autoaway.el
index 9d90d0ae5e9..91a1150802b 100644
--- a/lisp/erc/erc-autoaway.el
+++ b/lisp/erc/erc-autoaway.el
@@ -40,6 +40,49 @@ yourself back when you type something."
"The Emacs idletimer.
This is only used when `erc-autoaway-idle-method' is set to 'emacs.")
+(defvar erc-autoaway-last-sent-time (erc-current-time)
+ "The last time the user sent something.")
+
+(defvar erc-autoaway-caused-away nil
+ "Indicates whether this module was responsible for setting the
+user's away status.")
+
+(eval-when-compile (defvar erc-autoaway-idle-seconds))
+
+(defun erc-autoaway-reestablish-idletimer ()
+ "Reestablish the Emacs idletimer.
+If `erc-autoaway-idle-method' is 'emacs, you must call this
+function each time you change `erc-autoaway-idle-seconds'."
+ (interactive)
+ (when erc-autoaway-idletimer
+ (erc-cancel-timer erc-autoaway-idletimer))
+ (setq erc-autoaway-idletimer
+ (run-with-idle-timer erc-autoaway-idle-seconds
+ t
+ 'erc-autoaway-set-away
+ erc-autoaway-idle-seconds)))
+
+(defun erc-autoaway-some-server-buffer ()
+ "Return some ERC server buffer if its connection is alive.
+If none is found, return nil."
+ (car (erc-buffer-list #'erc-open-server-buffer-p)))
+
+(defun erc-autoaway-insinuate-maybe (&optional server &rest ignored)
+ "Add autoaway reset function to `post-command-hook' if at least one
+ERC process is alive.
+
+This is used when `erc-autoaway-idle-method' is 'user."
+ (when (or server (erc-autoaway-some-server-buffer))
+ (add-hook 'post-command-hook 'erc-autoaway-reset-idle-user)))
+
+(defun erc-autoaway-remove-maybe (&rest ignored)
+ "Remove the autoaway reset function from `post-command-hook' if
+no ERC process is alive.
+
+This is used when `erc-autoaway-idle-method' is 'user."
+ (unless (erc-autoaway-some-server-buffer)
+ (remove-hook 'post-command-hook 'erc-autoaway-reset-idle-user)))
+
;;;###autoload (autoload 'erc-autoaway-mode "erc-autoaway")
(define-erc-module autoaway nil
"In ERC autoaway mode, you can be set away automatically.
@@ -65,24 +108,31 @@ set you no longer away.
Related variables: `erc-public-away-p' and `erc-away-nickname'."
;; Enable:
((when (boundp 'erc-autoaway-idle-method)
+ (add-hook 'erc-connect-pre-hook 'erc-autoaway-reset-indicators)
+ (setq erc-autoaway-last-sent-time (erc-current-time))
(cond
((eq erc-autoaway-idle-method 'irc)
(add-hook 'erc-send-completed-hook 'erc-autoaway-reset-idle-irc)
(add-hook 'erc-server-001-functions 'erc-autoaway-reset-idle-irc))
((eq erc-autoaway-idle-method 'user)
- (add-hook 'post-command-hook 'erc-autoaway-reset-idle-user))
+ (add-hook 'erc-after-connect 'erc-autoaway-insinuate-maybe)
+ (add-hook 'erc-disconnected-hook 'erc-autoaway-remove-maybe)
+ (erc-autoaway-insinuate-maybe))
((eq erc-autoaway-idle-method 'emacs)
(erc-autoaway-reestablish-idletimer)))
(add-hook 'erc-timer-hook 'erc-autoaway-possibly-set-away)
(add-hook 'erc-server-305-functions 'erc-autoaway-reset-indicators)))
;; Disable:
((when (boundp 'erc-autoaway-idle-method)
+ (remove-hook 'erc-connect-pre-hook 'erc-autoaway-reset-indicators)
(cond
((eq erc-autoaway-idle-method 'irc)
(remove-hook 'erc-send-completed-hook 'erc-autoaway-reset-idle-irc)
(remove-hook 'erc-server-001-functions 'erc-autoaway-reset-idle-irc))
((eq erc-autoaway-idle-method 'user)
- (remove-hook 'post-command-hook 'erc-autoaway-reset-idle-user))
+ (remove-hook 'post-command-hook 'erc-autoaway-reset-idle-user)
+ (remove-hook 'erc-after-connect 'erc-autoaway-insinuate-maybe)
+ (remove-hook 'erc-disconnected-hook 'erc-autoaway-remove-maybe))
((eq erc-autoaway-idle-method 'emacs)
(erc-cancel-timer erc-autoaway-idletimer)
(setq erc-autoaway-idletimer nil)))
@@ -104,9 +154,12 @@ definitions of being idle."
(const :tag "Emacs idle time" emacs)
(const :tag "Last IRC action" irc))
:set (lambda (sym val)
- (erc-autoaway-disable)
- (set-default sym val)
- (erc-autoaway-enable)))
+ (if erc-autoaway-mode
+ (progn
+ (erc-autoaway-disable)
+ (set sym val)
+ (erc-autoaway-enable))
+ (set sym val))))
(defcustom erc-auto-set-away t
"*If non-nil, set away after `erc-autoaway-idle-seconds' seconds of idling.
@@ -133,21 +186,6 @@ See `erc-auto-discard-away'."
:group 'erc-autoaway
:type 'regexp)
-(eval-when-compile (defvar erc-autoaway-idle-seconds))
-
-(defun erc-autoaway-reestablish-idletimer ()
- "Reestablish the Emacs idletimer.
-If `erc-autoaway-idle-method' is 'emacs, you must call this
-function each time you change `erc-autoaway-idle-seconds'."
- (interactive)
- (when erc-autoaway-idletimer
- (erc-cancel-timer erc-autoaway-idletimer))
- (setq erc-autoaway-idletimer
- (run-with-idle-timer erc-autoaway-idle-seconds
- t
- 'erc-autoaway-set-away
- erc-autoaway-idle-seconds)))
-
(defcustom erc-autoaway-idle-seconds 1800
"*Number of seconds after which ERC will set you automatically away.
If you are changing this variable using lisp instead of customizing it,
@@ -167,19 +205,12 @@ in seconds."
:group 'erc-autoaway
:type 'string)
-(defvar erc-autoaway-last-sent-time (erc-current-time)
- "The last time the user sent something.")
-
-(defvar erc-autoaway-caused-away nil
- "Indicates whether this module was responsible for setting the
-user's away status.")
-
(defun erc-autoaway-reset-idle-user (&rest stuff)
"Reset the stored user idle time.
This is one global variable since a user talking on one net can
talk on another net too."
(when erc-auto-discard-away
- (erc-autoaway-set-back))
+ (erc-autoaway-set-back #'erc-autoaway-remove-maybe))
(setq erc-autoaway-last-sent-time (erc-current-time)))
(defun erc-autoaway-reset-idle-irc (line &rest stuff)
@@ -192,12 +223,24 @@ talk on another net too."
(erc-autoaway-set-back))
(setq erc-autoaway-last-sent-time (erc-current-time)))
-(defun erc-autoaway-set-back ()
- "Discard the away state globally."
- (let ((server-buffer (car (erc-buffer-list #'erc-server-buffer-p))))
- (when (and erc-autoaway-caused-away
- (with-current-buffer server-buffer (erc-away-p)))
- (erc-cmd-GAWAY ""))))
+(defun erc-autoaway-set-back (&optional none-alive-func)
+ "Discard the away state globally.
+
+NONE-ALIVE-FUNC is the function to call if no ERC processes are alive."
+ (let ((server-buffer (erc-autoaway-some-server-buffer)))
+ (if (and erc-autoaway-caused-away
+ (buffer-live-p server-buffer)
+ (with-current-buffer server-buffer erc-away))
+ (erc-cmd-GAWAY "")
+ (when none-alive-func (funcall none-alive-func)))))
+
+(defun erc-autoaway-some-open-server-buffer ()
+ "Return some ERC server buffer if its connection is alive and the
+user is not away.
+If none is found, return nil."
+ (car (erc-buffer-list (lambda ()
+ (and (erc-open-server-buffer-p)
+ (not erc-away))))))
(defun erc-autoaway-possibly-set-away (current-time)
"Set autoaway when `erc-auto-set-away' is true and the idletime is
@@ -207,7 +250,7 @@ exceeds `erc-autoaway-idle-seconds'."
;; whenever the server sends something to the client.
(when (and erc-auto-set-away
(not erc-autoaway-caused-away)
- (not (erc-away-p)))
+ (erc-autoaway-some-open-server-buffer))
(let ((idle-time (erc-time-diff erc-autoaway-last-sent-time
current-time)))
(when (>= idle-time erc-autoaway-idle-seconds)
@@ -215,15 +258,17 @@ exceeds `erc-autoaway-idle-seconds'."
nil 'notice nil
(format "Setting automatically away after %i seconds of idle-time"
idle-time))
- (erc-autoaway-set-away idle-time)))))
+ (erc-autoaway-set-away idle-time t)))))
+
+(defun erc-autoaway-set-away (idle-time &optional notest)
+ "Set the away state globally.
-(defun erc-autoaway-set-away (idle-time)
- "Set the away state globally."
+If NOTEST is specified, do not check to see whether there is an
+activer server buffer available."
;; Note that the idle timer runs, even when Emacs is inactive. In
;; order to prevent flooding when we connect, we test for an
;; existing process.
- (when (and (erc-server-process-alive)
- (not (erc-away-p)))
+ (when (or notest (erc-autoaway-some-open-server-buffer))
(setq erc-autoaway-caused-away t)
(erc-cmd-GAWAY (format erc-autoaway-message idle-time))))
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index fbe6f22e1d6..08cb738d360 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -174,9 +174,15 @@ WALLCHOPS - supports sending messages to all operators in a channel")
;;; Server and connection state
+(defvar erc-server-ping-timer-alist nil
+ "Mapping of server buffers to their specific ping timer.")
+
(defvar erc-server-connected nil
- "Non-nil if the `current-buffer' is associated with an open IRC connection.
-This variable is buffer-local.")
+ "Non-nil if the current buffer has been used by ERC to establish
+an IRC connection.
+
+If you wish to determine whether an IRC connection is currently
+active, use the `erc-server-process-alive' function instead.")
(make-variable-buffer-local 'erc-server-connected)
(defvar erc-server-reconnect-count 0
@@ -187,10 +193,23 @@ This variable is buffer-local.")
"Non-nil if the user requests a quit.")
(make-variable-buffer-local 'erc-server-quitting)
+(defvar erc-server-reconnecting nil
+ "Non-nil if the user requests an explicit reconnect, and the
+current IRC process is still alive.")
+(make-variable-buffer-local 'erc-server-reconnecting)
+
+(defvar erc-server-timed-out nil
+ "Non-nil if the IRC server failed to respond to a ping.")
+(make-variable-buffer-local 'erc-server-timed-out)
+
(defvar erc-server-banned nil
"Non-nil if the user is denied access because of a server ban.")
(make-variable-buffer-local 'erc-server-banned)
+(defvar erc-server-error-occurred nil
+ "Non-nil if the user triggers some server error.")
+(make-variable-buffer-local 'erc-server-error-occurred)
+
(defvar erc-server-lines-sent nil
"Line counter.")
(make-variable-buffer-local 'erc-server-lines-sent)
@@ -210,6 +229,11 @@ This is useful for flood protection.")
This is useful for flood protection.")
(make-variable-buffer-local 'erc-server-last-ping-time)
+(defvar erc-server-last-received-time nil
+ "Time the last message was received from the server.
+This is useful for detecting hung connections.")
+(make-variable-buffer-local 'erc-server-last-received-time)
+
(defvar erc-server-lag nil
"Calculated server lag time in seconds.
This variable is only set in a server buffer.")
@@ -387,11 +411,24 @@ protection algorithm."
;; Ping handling
-(defcustom erc-server-send-ping-interval 90
+(defcustom erc-server-send-ping-interval 30
"*Interval of sending pings to the server, in seconds.
If this is set to nil, pinging the server is disabled."
:group 'erc-server
- :type '(choice (const nil) (integer :tag "Seconds")))
+ :type '(choice (const :tag "Disabled" nil)
+ (integer :tag "Seconds")))
+
+(defcustom erc-server-send-ping-timeout 120
+ "*If the time between ping and response is greater than this, reconnect.
+The time is in seconds.
+
+This must be greater than or equal to the value for
+`erc-server-send-ping-interval'.
+
+If this is set to nil, never try to reconnect."
+ :group 'erc-server
+ :type '(choice (const :tag "Disabled" nil)
+ (integer :tag "Seconds")))
(defvar erc-server-ping-handler nil
"This variable holds the periodic ping timer.")
@@ -424,20 +461,40 @@ Currently this is called by `erc-send-input'."
(upcase-word 1)
(buffer-string)))
-(defun erc-server-setup-periodical-server-ping (&rest ignore)
- "Set up a timer to periodically ping the current server."
- (and erc-server-ping-handler (erc-cancel-timer erc-server-ping-handler))
- (when erc-server-send-ping-interval
- (setq erc-server-ping-handler
- (run-with-timer
- 4 erc-server-send-ping-interval
- (lambda (buf)
- (when (buffer-live-p buf)
- (with-current-buffer buf
- (erc-server-send
- (format "PING %.0f"
- (erc-current-time))))))
- (current-buffer)))))
+(defun erc-server-send-ping (buf)
+ "Send a ping to the IRC server buffer in BUF.
+Additionally, detect whether the IRC process has hung."
+ (if (buffer-live-p buf)
+ (with-current-buffer buf
+ (if (and erc-server-send-ping-timeout
+ (>
+ (erc-time-diff (erc-current-time)
+ erc-server-last-received-time)
+ erc-server-send-ping-timeout))
+ (progn
+ ;; if the process is hung, kill it
+ (setq erc-server-timed-out t)
+ (delete-process erc-server-process))
+ (erc-server-send (format "PING %.0f" (erc-current-time)))))
+ ;; remove timer if the server buffer has been killed
+ (let ((timer (assq buf erc-server-ping-timer-alist)))
+ (when timer
+ (erc-cancel-timer (cdr timer))
+ (setcdr timer nil)))))
+
+(defun erc-server-setup-periodical-ping (buffer)
+ "Set up a timer to periodically ping the current server.
+The current buffer is given by BUFFER."
+ (with-current-buffer buffer
+ (and erc-server-ping-handler (erc-cancel-timer erc-server-ping-handler))
+ (when erc-server-send-ping-interval
+ (setq erc-server-ping-handler (run-with-timer
+ 4 erc-server-send-ping-interval
+ #'erc-server-send-ping
+ buffer))
+ (setq erc-server-ping-timer-alist (cons (cons buffer
+ erc-server-ping-handler)
+ erc-server-ping-timer-alist)))))
(defun erc-server-process-alive ()
"Return non-nil when `erc-server-process' is open or running."
@@ -447,40 +504,47 @@ Currently this is called by `erc-send-input'."
;;;; Connecting to a server
-(defun erc-server-connect (server port)
- "Perform the connection and login.
-We will store server variables in the current buffer."
+(defun erc-server-connect (server port buffer)
+ "Perform the connection and login using the specified SERVER and PORT.
+We will store server variables in the buffer given by BUFFER."
(let ((msg (erc-format-message 'connect ?S server ?p port)))
(message "%s" msg)
- (setq erc-server-process
- (funcall erc-server-connect-function
- (format "erc-%s-%s" server port)
- (current-buffer) server port))
- (message "%s...done" msg))
- ;; Misc server variables
- (setq erc-server-quitting nil)
- (setq erc-server-banned nil)
- (setq erc-server-last-sent-time (erc-current-time))
- (setq erc-server-last-ping-time (erc-current-time))
- (setq erc-server-lines-sent 0)
- ;; last peers (sender and receiver)
- (setq erc-server-last-peers '(nil . nil))
- ;; process handlers
- (set-process-sentinel erc-server-process 'erc-process-sentinel)
- (set-process-filter erc-server-process 'erc-server-filter-function)
- ;; we do our own encoding and decoding
- (when (fboundp 'set-process-coding-system)
- (set-process-coding-system erc-server-process 'raw-text))
- (set-marker (process-mark erc-server-process) (point))
+ (let ((process (funcall erc-server-connect-function
+ (format "erc-%s-%s" server port)
+ nil server port)))
+ (message "%s...done" msg)
+ ;; Misc server variables
+ (with-current-buffer buffer
+ (setq erc-server-process process)
+ (setq erc-server-quitting nil)
+ (setq erc-server-reconnecting nil)
+ (setq erc-server-timed-out nil)
+ (setq erc-server-banned nil)
+ (setq erc-server-error-occurred nil)
+ (let ((time (erc-current-time)))
+ (setq erc-server-last-sent-time time)
+ (setq erc-server-last-ping-time time)
+ (setq erc-server-last-received-time time))
+ (setq erc-server-lines-sent 0)
+ ;; last peers (sender and receiver)
+ (setq erc-server-last-peers '(nil . nil)))
+ ;; we do our own encoding and decoding
+ (when (fboundp 'set-process-coding-system)
+ (set-process-coding-system process 'raw-text))
+ ;; process handlers
+ (set-process-sentinel process 'erc-process-sentinel)
+ (set-process-filter process 'erc-server-filter-function)
+ (set-process-buffer process buffer)))
(erc-log "\n\n\n********************************************\n")
- (message (erc-format-message 'login ?n (erc-current-nick)))
+ (message (erc-format-message
+ 'login ?n
+ (with-current-buffer buffer (erc-current-nick))))
;; wait with script loading until we receive a confirmation (first
;; MOTD line)
(if (eq erc-server-connect-function 'open-network-stream-nowait)
;; it's a bit unclear otherwise that it's attempting to establish a
;; connection
- (erc-display-message nil nil (current-buffer)
- "Opening connection..\n")
+ (erc-display-message nil nil buffer "Opening connection..\n")
(erc-login)))
(defun erc-server-reconnect ()
@@ -501,6 +565,7 @@ Make sure you are in an ERC buffer when running this."
(defun erc-server-filter-function (process string)
"The process filter for the ERC server."
(with-current-buffer (process-buffer process)
+ (setq erc-server-last-received-time (erc-current-time))
;; If you think this is written in a weird way - please refer to the
;; docstring of `erc-server-processing-p'
(if erc-server-processing-p
@@ -529,16 +594,20 @@ Make sure you are in an ERC buffer when running this."
(defsubst erc-server-reconnect-p (event)
"Return non-nil if ERC should attempt to reconnect automatically.
EVENT is the message received from the closed connection process."
- (and erc-server-auto-reconnect
- (not erc-server-banned)
- ;; make sure we don't infinitely try to reconnect, unless the
- ;; user wants that
- (or (eq erc-server-reconnect-attempts t)
- (and (integerp erc-server-reconnect-attempts)
- (< erc-server-reconnect-count erc-server-reconnect-attempts)))
- (not (string-match "^deleted" event))
- ;; open-network-stream-nowait error for connection refused
- (not (string-match "^failed with code 111" event))))
+ (or erc-server-reconnecting
+ (and erc-server-auto-reconnect
+ (not erc-server-banned)
+ (not erc-server-error-occurred)
+ ;; make sure we don't infinitely try to reconnect, unless the
+ ;; user wants that
+ (or (eq erc-server-reconnect-attempts t)
+ (and (integerp erc-server-reconnect-attempts)
+ (< erc-server-reconnect-count
+ erc-server-reconnect-attempts)))
+ (or erc-server-timed-out
+ (not (string-match "^deleted" event)))
+ ;; open-network-stream-nowait error for connection refused
+ (not (string-match "^failed with code 111" event)))))
(defun erc-process-sentinel-1 (event)
"Called when `erc-process-sentinel' has decided that we're disconnecting.
@@ -562,6 +631,7 @@ Conditionally try to reconnect and take appropriate action."
(if (erc-server-reconnect-p event)
(condition-case err
(progn
+ (setq erc-server-reconnecting nil)
(erc-server-reconnect)
(setq erc-server-reconnect-count 0))
(error (when (integerp erc-server-reconnect-attempts)
@@ -611,6 +681,7 @@ Conditionally try to reconnect and take appropriate action."
"Return the coding system or cons cell appropriate for TARGET.
This is determined via `erc-encoding-coding-alist' or
`erc-server-coding-system'."
+ (unless target (setq target (erc-default-target)))
(or (when target
(let ((case-fold-search t))
(catch 'match
@@ -656,14 +727,11 @@ See `erc-server-flood-margin' for an explanation of the flood
protection algorithm."
(erc-log (concat "erc-server-send: " string "(" (buffer-name) ")"))
(setq erc-server-last-sent-time (erc-current-time))
- (let ((buf (erc-server-buffer))
- (encoding (erc-coding-system-for-target
- (or target (erc-default-target)))))
+ (let ((encoding (erc-coding-system-for-target target)))
(when (consp encoding)
(setq encoding (car encoding)))
- (if (and buf
- (erc-server-process-alive))
- (with-current-buffer buf
+ (if (erc-server-process-alive)
+ (erc-with-server-buffer
(let ((str (concat string "\r\n")))
(if forcep
(progn
@@ -903,10 +971,8 @@ Finds hooks by looking in the `erc-server-responses' hashtable."
(let ((hook (or (erc-get-hook (erc-response.command message))
'erc-default-server-functions)))
(run-hook-with-args-until-success hook process message)
- (let ((server-buffer (erc-server-buffer)))
- (when (buffer-live-p server-buffer)
- (with-current-buffer server-buffer
- (run-hook-with-args 'erc-timer-hook (erc-current-time)))))))
+ (erc-with-server-buffer
+ (run-hook-with-args 'erc-timer-hook (erc-current-time)))))
(add-hook 'erc-default-server-functions 'erc-handle-unknown-server-response)
@@ -1062,6 +1128,7 @@ add things to `%s' instead."
(define-erc-response-handler (ERROR)
"Handle an ERROR command from the server." nil
+ (setq erc-server-error-occurred t)
(erc-display-message
parsed 'error nil 'ERROR
?s (erc-response.sender parsed) ?c (erc-response.contents parsed)))
@@ -1446,6 +1513,9 @@ A server may send more than one 005 message."
See `erc-display-server-message'." nil
(erc-display-server-message proc parsed))
+(define-erc-response-handler (290)
+ "Handle dancer-ircd CAPAB messages." nil nil)
+
(define-erc-response-handler (301)
"AWAY notice." nil
(erc-display-message parsed 'notice 'active 's301
diff --git a/lisp/erc/erc-button.el b/lisp/erc/erc-button.el
index 1fd224fb956..435c72bba23 100644
--- a/lisp/erc/erc-button.el
+++ b/lisp/erc/erc-button.el
@@ -56,10 +56,12 @@
"This mode buttonizes all messages according to `erc-button-alist'."
((add-hook 'erc-insert-modify-hook 'erc-button-add-buttons 'append)
(add-hook 'erc-send-modify-hook 'erc-button-add-buttons 'append)
- (add-hook 'erc-complete-functions 'erc-button-next))
+ (add-hook 'erc-complete-functions 'erc-button-next)
+ (add-hook 'erc-mode-hook 'erc-button-add-keys))
((remove-hook 'erc-insert-modify-hook 'erc-button-add-buttons)
(remove-hook 'erc-send-modify-hook 'erc-button-add-buttons)
- (remove-hook 'erc-complete-functions 'erc-button-next)))
+ (remove-hook 'erc-complete-functions 'erc-button-next)
+ (remove-hook 'erc-mode-hook 'erc-button-add-keys)))
;; Make XEmacs use `erc-button-face'.
(when (featurep 'xemacs)
@@ -241,6 +243,16 @@ PAR is a number of a regexp grouping whose text will be passed to
This syntax table should make all the legal nick characters word
constituents.")
+(defvar erc-button-keys-added nil
+ "Internal variable used to keep track of whether we've added the
+global-level ERC button keys yet.")
+
+(defun erc-button-add-keys ()
+ "Add ERC mode-level button movement keys. This is only done once."
+ (unless erc-button-keys-added
+ (define-key erc-mode-map (kbd "<backtab>") 'erc-button-previous)
+ (setq erc-button-keys-added t)))
+
(defun erc-button-add-buttons ()
"Find external references in the current buffer and make buttons of them.
\"External references\" are things like URLs, as
diff --git a/lisp/erc/erc-capab.el b/lisp/erc/erc-capab.el
index 268c4bfe68a..b7ccade02e0 100644
--- a/lisp/erc/erc-capab.el
+++ b/lisp/erc/erc-capab.el
@@ -56,8 +56,10 @@
;; (erc-capab-identify-mode 1)
;; `erc-capab-identify-prefix' will now be added to the beginning of
-;; unidentified users' nicknames. The default is an asterisk, "*". If
-;; the value of this variable is nil or you disable this module (see
+;; unidentified users' nicknames. The default is an asterisk, "*".
+;; You can customize the prefix and the face used to display it,
+;; `erc-capab-identify-unidentified'. If the value of
+;; `erc-capab-identify-prefix' is nil or you disable this module (see
;; `erc-capab-identify-disable'), no prefix will be inserted, but the
;; flag sent by the server will still be stripped.
@@ -73,14 +75,19 @@
:group 'erc)
(defcustom erc-capab-identify-prefix "*"
- "The prefix used for unidentified users."
+ "The prefix used for unidentified users.
+
+If you change this from the default \"*\", be sure to use a
+character not found in IRC nicknames to avoid confusion."
:group 'erc-capab
:type '(choice string (const nil)))
-;;; Define module:
+(defface erc-capab-identify-unidentified '((t)) ; same as `erc-default-face'
+ "Face to use for `erc-capab-identify-prefix'."
+ :group 'erc-capab
+ :group 'erc-faces)
-(define-erc-response-handler (290)
- "Handle dancer-ircd CAPAB messages." nil nil)
+;;; Define module:
;;;###autoload (autoload 'erc-capab-identify-mode "erc-capab" nil t)
(define-erc-module capab-identify nil
@@ -124,9 +131,9 @@ Optional argument PARSED is the current message, a response struct.
These arguments are sent to this function when called as a hook in
`erc-server-005-functions'."
(unless erc-capab-identify-sent
- (erc-capab-send-identify-messages)))
+ (erc-capab-identify-send-messages)))
-(defun erc-capab-send-identify-messages ()
+(defun erc-capab-identify-send-messages ()
"Send CAPAB IDENTIFY messages if the server supports it."
(when (and (stringp erc-server-version)
(string-match "^\\(dancer-ircd\\|hyperion\\)" erc-server-version)
@@ -175,7 +182,7 @@ PARSED is an `erc-parsed' response struct."
(when (and erc-capab-identify-prefix
(erc-with-server-buffer erc-capab-identify-activated))
(goto-char (or (erc-find-parsed-property) (point-min)))
- (let ((nickname (erc-capab-get-unidentified-nickname
+ (let ((nickname (erc-capab-identify-get-unidentified-nickname
(erc-get-parsed-vector (point)))))
(when (and nickname
(goto-char (point-min))
@@ -183,10 +190,9 @@ PARSED is an `erc-parsed' response struct."
(re-search-forward (regexp-quote nickname) nil t))
(goto-char (match-beginning 0))
(insert (erc-propertize erc-capab-identify-prefix
- 'face (get-char-property (- (point) 1)
- 'face)))))))
+ 'face 'erc-capab-identify-unidentified))))))
-(defun erc-capab-get-unidentified-nickname (parsed)
+(defun erc-capab-identify-get-unidentified-nickname (parsed)
"Return the nickname of the user if unidentified.
PARSED is an `erc-parsed' response struct."
(when (and (erc-response-p parsed)
diff --git a/lisp/erc/erc-compat.el b/lisp/erc/erc-compat.el
index 60cbe992d19..dcfcfe84c98 100644
--- a/lisp/erc/erc-compat.el
+++ b/lisp/erc/erc-compat.el
@@ -161,14 +161,6 @@ avoid corrupting the original SEQ."
(setq newseq (cons el newseq))))
(nreverse newseq)))
-;; Provide a simpler replacement for `gensym'.
-(defvar *erc-sym-counter* 0)
-(defun erc-gensym ()
- "Generate a new uninterned symbol."
- (let ((num (prog1 *erc-sym-counter*
- (setq *erc-sym-counter* (1+ *erc-sym-counter*)))))
- (make-symbol (format "*erc-sym-%d*" num))))
-
;; Copied from cl-extra.el
(defun erc-subseq (seq start &optional end)
"Return the subsequence of SEQ from START to END.
diff --git a/lisp/erc/erc-fill.el b/lisp/erc/erc-fill.el
index 26ca86f04c6..fc1c71babdf 100644
--- a/lisp/erc/erc-fill.el
+++ b/lisp/erc/erc-fill.el
@@ -1,6 +1,7 @@
;;; erc-fill.el --- Filling IRC messages in various ways
-;; Copyright (C) 2001, 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2002, 2003, 2004, 2006,
+;; 2007 Free Software Foundation, Inc.
;; Author: Andreas Fuchs <asf@void.at>
;; Mario Lang <mlang@delysid.org>
@@ -187,14 +188,6 @@ You can put this on `erc-insert-modify-hook' and/or `erc-send-modify-hook'."
(length (format-time-string erc-timestamp-format))
0))
-(defun erc-restore-text-properties ()
- "Restore the property 'erc-parsed for the region."
- (let* ((parsed-posn (text-property-not-all (point-min) (point-max)
- 'erc-parsed nil))
- (parsed-prop (when parsed-posn
- (get-text-property parsed-posn 'erc-parsed))))
- (put-text-property (point-min) (point-max) 'erc-parsed parsed-prop)))
-
(provide 'erc-fill)
;;; erc-fill.el ends here
diff --git a/lisp/erc/erc-ibuffer.el b/lisp/erc/erc-ibuffer.el
index 5266d837d64..25ad1319bd6 100644
--- a/lisp/erc/erc-ibuffer.el
+++ b/lisp/erc/erc-ibuffer.el
@@ -127,8 +127,7 @@
(define-ibuffer-column erc-away (:name "A")
(if (and erc-server-process
(processp erc-server-process)
- (with-current-buffer (process-buffer erc-server-process)
- erc-away))
+ (erc-away-time))
"A"
" "))
diff --git a/lisp/erc/erc-identd.el b/lisp/erc/erc-identd.el
index c7f7c615e92..8a70a743edb 100644
--- a/lisp/erc/erc-identd.el
+++ b/lisp/erc/erc-identd.el
@@ -42,12 +42,26 @@
(defvar erc-identd-process nil)
+(defgroup erc-identd nil
+ "Run a local identd server."
+ :group 'erc)
+
+(defcustom erc-identd-port 8113
+ "Port to run the identd server on if not specified in the argument for
+`erc-identd-start'.
+
+This can be either a string or a number."
+ :group 'erc-identd
+ :type '(choice (const :tag "None" nil)
+ (integer :tag "Port number")
+ (string :tag "Port string")))
+
;;;###autoload (autoload 'erc-identd-mode "erc-identd")
(define-erc-module identd nil
"This mode launches an identd server on port 8113."
- ((add-hook 'erc-connect-pre-hook 'erc-identd-start)
+ ((add-hook 'erc-connect-pre-hook 'erc-identd-quickstart)
(add-hook 'erc-disconnected-hook 'erc-identd-stop))
- ((remove-hook 'erc-connect-pre-hook 'erc-identd-start)
+ ((remove-hook 'erc-connect-pre-hook 'erc-identd-quickstart)
(remove-hook 'erc-disconnected-hook 'erc-identd-stop)))
(defun erc-identd-filter (proc string)
@@ -71,12 +85,11 @@ run from inetd. The idea is to provide a simple identd server
when you need one, without having to install one globally on your
system."
(interactive (list (read-string "Serve identd requests on port: " "8113")))
- (if (null port)
- (setq port 8113)
- (if (stringp port)
- (setq port (string-to-number port))))
- (if erc-identd-process
- (delete-process erc-identd-process))
+ (unless port (setq port erc-identd-port))
+ (when (stringp port)
+ (setq port (string-to-number port)))
+ (when erc-identd-process
+ (delete-process erc-identd-process))
(setq erc-identd-process
(make-network-process :name "identd"
:buffer nil
@@ -85,6 +98,11 @@ system."
:filter 'erc-identd-filter))
(set-process-query-on-exit-flag erc-identd-process nil))
+(defun erc-identd-quickstart (&rest ignored)
+ "Start the identd server with the default port.
+The default port is specified by `erc-identd-port'."
+ (erc-identd-start))
+
;;;###autoload
(defun erc-identd-stop (&rest ignore)
(interactive)
diff --git a/lisp/erc/erc-log.el b/lisp/erc/erc-log.el
index 22c9b3622d3..9801192bca0 100644
--- a/lisp/erc/erc-log.el
+++ b/lisp/erc/erc-log.el
@@ -85,7 +85,9 @@
;;; Code:
(require 'erc)
-(eval-when-compile (require 'cl))
+(eval-when-compile
+ (require 'erc-networks)
+ (require 'cl))
(defgroup erc-log nil
"Logging facilities for ERC."
@@ -100,10 +102,12 @@ NICK is the current nick,
SERVER and PORT are the parameters used to connect BUFFERs
`erc-server-process'."
:group 'erc-log
- :type '(choice (const erc-generate-log-file-name-long)
- (const erc-generate-log-file-name-short)
- (const erc-generate-log-file-name-with-date)
- (symbol)))
+ :type '(choice (const :tag "Long style" erc-generate-log-file-name-long)
+ (const :tag "Long, but with network name rather than server"
+ erc-generate-log-file-name-network)
+ (const :tag "Short" erc-generate-log-file-name-short)
+ (const :tag "With date" erc-generate-log-file-name-with-date)
+ (symbol :tag "Other function")))
(defcustom erc-truncate-buffer-on-save nil
"Truncate any ERC (channel, query, server) buffer when it is saved."
@@ -197,7 +201,7 @@ also be a predicate function. To only log when you are not set away, use:
\(setq erc-enable-logging
(lambda (buffer)
(with-current-buffer buffer
- (not erc-away))))"
+ (null (erc-away-time)))))"
;; enable
((when erc-log-write-after-insert
(add-hook 'erc-insert-post-hook 'erc-save-buffer-in-logs))
@@ -211,8 +215,7 @@ also be a predicate function. To only log when you are not set away, use:
;; append, so that 'erc-initialize-log-marker runs first
(add-hook 'erc-connect-pre-hook 'erc-log-setup-logging 'append)
(dolist (buffer (erc-buffer-list))
- (when (buffer-live-p buffer)
- (with-current-buffer buffer (erc-log-setup-logging)))))
+ (erc-log-setup-logging buffer)))
;; disable
((remove-hook 'erc-insert-post-hook 'erc-save-buffer-in-logs)
(remove-hook 'erc-send-post-hook 'erc-save-buffer-in-logs)
@@ -223,30 +226,38 @@ also be a predicate function. To only log when you are not set away, use:
(remove-hook 'erc-part-hook 'erc-conditional-save-buffer)
(remove-hook 'erc-connect-pre-hook 'erc-log-setup-logging)
(dolist (buffer (erc-buffer-list))
- (when (buffer-live-p buffer)
- (with-current-buffer buffer (erc-log-disable-logging))))))
+ (erc-log-disable-logging buffer))))
(define-key erc-mode-map "\C-c\C-l" 'erc-save-buffer-in-logs)
;;; functionality referenced from erc.el
-(defun erc-log-setup-logging ()
+(defun erc-log-setup-logging (buffer)
"Setup the buffer-local logging variables in the current buffer.
-This function is destined to be run from `erc-connect-pre-hook'."
- (when (erc-logging-enabled)
- (auto-save-mode -1)
- (setq buffer-file-name nil)
- (set (make-local-variable 'write-file-functions)
- '(erc-save-buffer-in-logs))
- (when erc-log-insert-log-on-open
- (ignore-errors (insert-file-contents (erc-current-logfile))
- (move-marker erc-last-saved-position
- (1- (point-max)))))))
-
-(defun erc-log-disable-logging ()
- "Disable logging in the current buffer."
- (when (erc-logging-enabled)
- (setq buffer-offer-save nil
- erc-enable-logging nil)))
+This function is destined to be run from `erc-connect-pre-hook'.
+The current buffer is given by BUFFER."
+ (when (erc-logging-enabled buffer)
+ (with-current-buffer buffer
+ (auto-save-mode -1)
+ (setq buffer-file-name nil)
+ (cond ((boundp 'write-file-functions)
+ (set (make-local-variable 'write-file-functions)
+ '(erc-save-buffer-in-logs)))
+ ((boundp 'local-write-file-hooks)
+ (setq local-write-file-hooks '(erc-save-buffer-in-logs)))
+ (t
+ (set (make-local-variable 'write-file-hooks)
+ '(erc-save-buffer-in-logs))))
+ (when erc-log-insert-log-on-open
+ (ignore-errors (insert-file-contents (erc-current-logfile))
+ (move-marker erc-last-saved-position
+ (1- (point-max))))))))
+
+(defun erc-log-disable-logging (buffer)
+ "Disable logging in BUFFER."
+ (when (erc-logging-enabled buffer)
+ (with-current-buffer buffer
+ (setq buffer-offer-save nil
+ erc-enable-logging nil))))
(defun erc-log-all-but-server-buffers (buffer)
"Returns t if logging should be enabled in BUFFER.
@@ -340,6 +351,19 @@ This function is a possible value for `erc-generate-log-file-name-function'."
;; we need a make-safe-file-name function.
(convert-standard-filename file)))
+(defun erc-generate-log-file-name-network (buffer target nick server port)
+ "Generates a log-file name using the network name rather than server name.
+This results in a file name of the form #channel!nick@network.txt.
+This function is a possible value for `erc-generate-log-file-name-function'."
+ (require 'erc-networks)
+ (let ((file (concat
+ (if target (concat target "!"))
+ nick "@"
+ (or (with-current-buffer buffer (erc-network-name)) server)
+ ".txt")))
+ ;; we need a make-safe-file-name function.
+ (convert-standard-filename file)))
+
;;;###autoload
(defun erc-save-buffer-in-logs (&optional buffer)
"Append BUFFER contents to the log file, if logging is enabled.
diff --git a/lisp/erc/erc-match.el b/lisp/erc/erc-match.el
index 50e4cfbc521..35ba1b13492 100644
--- a/lisp/erc/erc-match.el
+++ b/lisp/erc/erc-match.el
@@ -1,6 +1,7 @@
;;; erc-match.el --- Highlight messages matching certain regexps
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2004, 2005, 2006,
+;; 2007 Free Software Foundation, Inc.
;; Author: Andreas Fuchs <asf@void.at>
;; Keywords: comm, faces
@@ -540,7 +541,7 @@ deactivate/activate match logging in the latter. See
(when (and
(or (eq erc-log-matches-flag t)
(and (eq erc-log-matches-flag 'away)
- erc-away))
+ (erc-away-time)))
match-buffer-name)
(let ((line (format-spec erc-log-match-format
(format-spec-make
@@ -572,7 +573,7 @@ deactivate/activate match logging in the latter. See
(defun erc-log-matches-come-back (proc parsed)
"Display a notice that messages were logged while away."
- (when (and erc-away
+ (when (and (erc-away-time)
(eq erc-log-matches-flag 'away))
(mapc
(lambda (match-type)
@@ -583,7 +584,7 @@ deactivate/activate match logging in the latter. See
(with-current-buffer buffer
(get-text-property (1- (point-max))
'timestamp))))
- (away-time (erc-emacs-time-to-erc-time erc-away)))
+ (away-time (erc-emacs-time-to-erc-time (erc-away-time))))
(when (and away-time last-msg-time
(erc-time-gt last-msg-time away-time))
(erc-display-message
diff --git a/lisp/erc/erc-menu.el b/lisp/erc/erc-menu.el
index a5826625bde..888da702d62 100644
--- a/lisp/erc/erc-menu.el
+++ b/lisp/erc/erc-menu.el
@@ -1,6 +1,7 @@
;; erc-menu.el -- Menu-bar definitions for ERC
-;; Copyright (C) 2001, 2002, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2002, 2004, 2005, 2006,
+;; 2007 Free Software Foundation, Inc.
;; Author: Mario Lang <mlang@delysid.org>
;; Keywords: comm, processes, menu
@@ -75,8 +76,8 @@
(erc-channel-user-op-p (erc-current-nick))]
["Set a key..." erc-set-channel-key
(erc-channel-user-op-p (erc-current-nick))])
- ["Leave this channel..." erc-part-from-channel erc-channel-users]
- "-")
+ ["Leave this channel..." erc-part-from-channel erc-channel-users])
+ "-"
(list "Pals, fools and other keywords"
["Add pal..." erc-add-pal]
["Delete pal..." erc-delete-pal]
diff --git a/lisp/erc/erc-netsplit.el b/lisp/erc/erc-netsplit.el
index 567c91cc075..b4c26b1bb88 100644
--- a/lisp/erc/erc-netsplit.el
+++ b/lisp/erc/erc-netsplit.el
@@ -184,7 +184,7 @@ join from that split has been detected or not.")
;;;###autoload
(defun erc-cmd-WHOLEFT ()
"Show who's gone."
- (with-current-buffer (erc-server-buffer)
+ (erc-with-server-buffer
(if (null erc-netsplit-list)
(erc-display-message
nil 'notice 'active
diff --git a/lisp/erc/erc-networks.el b/lisp/erc/erc-networks.el
index 9f8c5528d04..4631ceae3ae 100644
--- a/lisp/erc/erc-networks.el
+++ b/lisp/erc/erc-networks.el
@@ -317,6 +317,7 @@
("Novernet: Random server" Novernet "irc.novernet.com" ((6665 6669) 7000 ))
("Nullrouted: Random server" Nullrouted "irc.nullrouted.org" ((6666 6669) 7000 ))
("NullusNet: Random server" NullusNet "irc.nullus.net" 6667)
+ ("OFTC: Random server" OFTC "irc.oftc.net" ((6667 6670) 7000))
("OpChat: Random server" OpChat "irc.opchat.org" ((6667 6669)))
("Othernet: Random server" Othernet "irc.othernet.org" 6667)
("Othernet: US, FL, Miami" Othernet "miami.fl.us.othernet.org" 6667)
@@ -611,6 +612,7 @@ PORTS is either a number, a list of numbers, or a list of port ranges."
(Novernet "novernet.com")
(Nullrouted "nullrouted.org")
(NullusNet "nullus.net")
+ (OFTC "oftc.net")
(OpChat "opchat.org")
(Openprojects "openprojects.net")
(Othernet "othernet.org")
@@ -737,12 +739,12 @@ search for a match in `erc-networks-alist'."
(defun erc-network ()
"Return the value of `erc-network' for the current server."
- (with-current-buffer (erc-server-buffer) erc-network))
+ (erc-with-server-buffer erc-network))
(defun erc-current-network ()
"Deprecated. Use `erc-network' instead. Return the name of this server's
network as a symbol."
- (with-current-buffer (erc-server-buffer)
+ (erc-with-server-buffer
(intern (downcase (symbol-name erc-network)))))
(erc-make-obsolete 'erc-current-network 'erc-network
@@ -750,7 +752,7 @@ network as a symbol."
(defun erc-network-name ()
"Returns the name of the current network as a string."
- (with-current-buffer (erc-server-buffer) (symbol-name erc-network)))
+ (erc-with-server-buffer (symbol-name erc-network)))
(defun erc-set-network-name (proc parsed)
"Set `erc-network' to the value returned by `erc-determine-network'."
diff --git a/lisp/erc/erc-notify.el b/lisp/erc/erc-notify.el
index 82784c624c0..d34e38ade43 100644
--- a/lisp/erc/erc-notify.el
+++ b/lisp/erc/erc-notify.el
@@ -121,8 +121,7 @@ changes."
(ison-list (delete "" (split-string
(erc-response.contents parsed))))
(new-list ison-list)
- (old-list (with-current-buffer (erc-server-buffer)
- erc-last-ison)))
+ (old-list (erc-with-server-buffer erc-last-ison)))
(while new-list
(when (not (erc-member-ignore-case (car new-list) old-list))
(run-hook-with-args 'erc-notify-signon-hook server (car new-list))
@@ -204,7 +203,7 @@ with args, toggle notify status of people."
(cond
((null args)
;; Print current notificated people (online)
- (let ((ison (with-current-buffer (erc-server-buffer) erc-last-ison)))
+ (let ((ison (erc-with-server-buffer erc-last-ison)))
(if (not ison)
(erc-display-message
nil 'notice 'active "No ison-list yet!")
diff --git a/lisp/erc/erc-pcomplete.el b/lisp/erc/erc-pcomplete.el
index 951ba25898c..f207bcc1b8b 100644
--- a/lisp/erc/erc-pcomplete.el
+++ b/lisp/erc/erc-pcomplete.el
@@ -180,7 +180,7 @@ the most recent speakers are listed first."
(while (pcomplete-here (pcomplete-erc-nicks))))
(defun pcomplete/erc-mode/UNIGNORE ()
- (pcomplete-here (with-current-buffer (erc-server-buffer) erc-ignore-list)))
+ (pcomplete-here (erc-with-server-buffer erc-ignore-list)))
;;; Functions that provide possible completions.
@@ -233,7 +233,7 @@ If optional argument IGNORE-SELF is non-nil, don't return the current nick."
(defun pcomplete-erc-all-nicks (&optional postfix)
"Returns a list of all nicks on the current server."
(let (nicks)
- (with-current-buffer (process-buffer erc-server-process)
+ (erc-with-server-buffer
(maphash (lambda (nick user)
(setq nicks (cons (concat nick postfix) nicks)))
erc-server-users))
diff --git a/lisp/erc/erc-ring.el b/lisp/erc/erc-ring.el
index 911a154e915..95c313a23f6 100644
--- a/lisp/erc/erc-ring.el
+++ b/lisp/erc/erc-ring.el
@@ -1,6 +1,7 @@
;; erc-ring.el -- Command history handling for erc using ring.el
-;; Copyright (C) 2001, 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2002, 2003, 2004, 2006,
+;; 2007 Free Software Foundation, Inc.
;; Author: Alex Schroeder <alex@gnu.org>
;; Keywords: comm
diff --git a/lisp/erc/erc-services.el b/lisp/erc/erc-services.el
index 5d03a7b6365..a2cc1b19782 100644
--- a/lisp/erc/erc-services.el
+++ b/lisp/erc/erc-services.el
@@ -168,15 +168,18 @@ Example of use:
:type '(repeat
(list :tag "Network"
(choice :tag "Network name"
- (const freenode)
- (const OFTC)
+ (const Ars)
+ (const Austnet)
+ (const Azzurra)
+ (const BitlBee)
+ (const BRASnet)
(const DALnet)
+ (const freenode)
(const GalaxyNet)
- (const SlashNET)
- (const BRASnet)
(const iip)
- (const Austnet)
- (const Azzurra)
+ (const OFTC)
+ (const QuakeNet)
+ (const SlashNET)
(symbol :tag "Network name"))
(repeat :tag "Nickname and password"
(cons :tag "Identity"
@@ -186,68 +189,63 @@ Example of use:
;; Variables:
(defcustom erc-nickserv-alist
- '((BitlBee
- nil
- nil
+ '((Ars
+ nil nil
+ "Census"
+ "IDENTIFY" nil nil)
+ (Austnet
+ "NickOP!service@austnet.org"
+ "/msg\\s-NickOP@austnet.org\\s-identify\\s-<password>"
+ "nickop@austnet.org"
+ "identify" nil nil)
+ (Azzurra
+ "NickServ!service@azzurra.org"
+ "/ns\\s-IDENTIFY\\s-password"
+ "NickServ"
+ "IDENTIFY" nil nil)
+ (BitlBee
+ nil nil
"&bitlbee"
- "identify"
- nil)
+ "identify" nil nil)
+ (BRASnet
+ "NickServ!services@brasnet.org"
+ "/NickServ\\s-IDENTIFY\\s-senha"
+ "NickServ"
+ "IDENTIFY" nil "")
(DALnet
"NickServ!service@dal.net"
"/msg\\s-NickServ@services.dal.net\\s-IDENTIFY\\s-<password>"
"NickServ@services.dal.net"
- "IDENTIFY"
- nil)
+ "IDENTIFY" nil nil)
(freenode
"NickServ!NickServ@services."
"/msg\\s-NickServ\\s-IDENTIFY\\s-<password>"
"NickServ"
- "IDENTIFY"
- nil)
+ "IDENTIFY" nil nil)
(GalaxyNet
"NS!nickserv@galaxynet.org"
"Please\\s-change\\s-nicks\\s-or\\s-authenticate."
"NS@services.galaxynet.org"
- "AUTH"
- t)
- (SlashNET
- "NickServ!services@services.slashnet.org"
- "/msg\\s-NickServ\\s-IDENTIFY\\s-password"
- "NickServ@services.slashnet.org"
- "IDENTIFY"
- nil)
+ "AUTH" t nil)
(iip
"Trent@anon.iip"
"type\\s-/squery\\s-Trent\\s-identify\\s-<password>"
"Trent@anon.iip"
- "IDENTIFY"
- nil
- "SQUERY")
- (BRASnet
- "NickServ!services@brasnet.org"
- "/NickServ\\s-IDENTIFY\\s-senha"
- "NickServ"
- "IDENTIFY"
- nil
- "")
- (Austnet
- "NickOP!service@austnet.org"
- "/msg\\s-NickOP@austnet.org\\s-identify\\s-<password>"
- "nickop@austnet.org"
- "identify"
- nil)
- (Azzurra
- "NickServ!service@azzurra.org"
- "/ns\\s-IDENTIFY\\s-password"
- "NickServ"
- "IDENTIFY"
- nil)
+ "IDENTIFY" nil "SQUERY")
(OFTC
"NickServ!services@services.oftc.net"
- "/msg\\s-NickServ\\s-IDENTIFY\\s-\^_password"
+ "type\\s-/msg\\s-NickServ\\s-IDENTIFY\\s-password."
"NickServ"
- "IDENTIFY"
- nil))
+ "IDENTIFY" nil nil)
+ (QuakeNet
+ nil nil
+ "Q@CServe.quakenet.org"
+ "auth" t nil)
+ (SlashNET
+ "NickServ!services@services.slashnet.org"
+ "/msg\\s-NickServ\\s-IDENTIFY\\s-password"
+ "NickServ@services.slashnet.org"
+ "IDENTIFY" nil nil))
"Alist of NickServer details, sorted by network.
Every element in the list has the form
\(SYMBOL NICKSERV REGEXP NICK KEYWORD USE-CURRENT ANSWER)
@@ -265,8 +263,10 @@ ANSWER is the command to use for the answer. The default is 'privmsg.
:type '(repeat
(list :tag "Nickserv data"
(symbol :tag "Network name")
- (string :tag "Nickserv's nick!user@host")
- (regexp :tag "Identify request sent by Nickserv")
+ (choice (string :tag "Nickserv's nick!user@host")
+ (const :tag "No message sent by Nickserv" nil))
+ (choice (regexp :tag "Identify request sent by Nickserv")
+ (const :tag "No message sent by Nickserv" nil))
(string :tag "Identify to")
(string :tag "Identify keyword")
(boolean :tag "Use current nick in identify message?")
diff --git a/lisp/erc/erc-speedbar.el b/lisp/erc/erc-speedbar.el
index 551b83fb5ac..0d88589838e 100644
--- a/lisp/erc/erc-speedbar.el
+++ b/lisp/erc/erc-speedbar.el
@@ -1,6 +1,7 @@
;;; erc-speedbar.el --- Speedbar support for ERC
-;; Copyright (C) 2001, 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2002, 2003, 2004, 2006,
+;; 2007 Free Software Foundation, Inc.
;; Author: Mario Lang <mlang@delysid.org>
;; Contributor: Eric M. Ludlam <eric@siege-engine.com>
@@ -113,7 +114,7 @@ This will add a speedbar major display mode."
(erase-buffer)
(let (serverp chanp queryp)
(with-current-buffer buffer
- (setq serverp (eq buffer (process-buffer erc-server-process)))
+ (setq serverp (erc-server-buffer-p))
(setq chanp (erc-channel-p (erc-default-target)))
(setq queryp (erc-query-buffer-p)))
(cond (serverp
diff --git a/lisp/erc/erc-spelling.el b/lisp/erc/erc-spelling.el
index 484ddb36d52..a15ca17987f 100644
--- a/lisp/erc/erc-spelling.el
+++ b/lisp/erc/erc-spelling.el
@@ -41,12 +41,10 @@
;; called AFTER the server buffer is initialized.
((add-hook 'erc-connect-pre-hook 'erc-spelling-init)
(dolist (buffer (erc-buffer-list))
- (when (buffer-live-p buffer)
- (with-current-buffer buffer (erc-spelling-init)))))
+ (erc-spelling-init buffer)))
((remove-hook 'erc-connect-pre-hook 'erc-spelling-init)
(dolist (buffer (erc-buffer-list))
- (when (buffer-live-p buffer)
- (with-current-buffer buffer (flyspell-mode 0))))))
+ (with-current-buffer buffer (flyspell-mode 0)))))
(defcustom erc-spelling-dictionaries nil
"An alist mapping buffer names to dictionaries.
@@ -60,24 +58,22 @@ name here."
(string :tag "Dictionary"))))
:group 'erc-spelling)
-(defun erc-spelling-init ()
- "Enable flyspell mode in an ERC buffer."
- (let ((name (downcase (buffer-name)))
- (dicts erc-spelling-dictionaries))
- (when dicts
- (while (and dicts
- (not (string= name (downcase (caar dicts)))))
- (setq dicts (cdr dicts)))
- (setq ispell-local-dictionary
- (if dicts
- (cadr (car dicts))
- (let ((server (erc-server-buffer)))
- (if server
- (with-current-buffer server
- ispell-local-dictionary)
- nil))))))
- (setq flyspell-generic-check-word-p 'erc-spelling-flyspell-verify)
- (flyspell-mode 1))
+(defun erc-spelling-init (buffer)
+ "Enable flyspell mode in an ERC buffer.
+The current buffer is given by BUFFER."
+ (with-current-buffer buffer
+ (let ((name (downcase (buffer-name)))
+ (dicts erc-spelling-dictionaries))
+ (when dicts
+ (while (and dicts
+ (not (string= name (downcase (caar dicts)))))
+ (setq dicts (cdr dicts)))
+ (setq ispell-local-dictionary
+ (if dicts
+ (cadr (car dicts))
+ (erc-with-server-buffer ispell-local-dictionary)))))
+ (setq flyspell-generic-check-word-p 'erc-spelling-flyspell-verify)
+ (flyspell-mode 1)))
(defun erc-spelling-unhighlight-word (word)
"Unhighlight the given WORD.
diff --git a/lisp/erc/erc-stamp.el b/lisp/erc/erc-stamp.el
index 5a9977aaead..0b8017ffe0b 100644
--- a/lisp/erc/erc-stamp.el
+++ b/lisp/erc/erc-stamp.el
@@ -147,7 +147,7 @@ or `erc-send-modify-hook'."
(error "Timestamp function unbound"))
(when (and (fboundp erc-insert-away-timestamp-function)
erc-away-timestamp-format
- (with-current-buffer (erc-server-buffer) erc-away)
+ (erc-away-time)
(not erc-timestamp-format))
(funcall erc-insert-away-timestamp-function
(erc-format-timestamp ct erc-away-timestamp-format)))
@@ -203,6 +203,7 @@ space before a right timestamp in any saved logs."
(s (if ignore-p (make-string len ? ) string)))
(unless ignore-p (setq erc-timestamp-last-inserted string))
(erc-put-text-property 0 len 'field 'erc-timestamp s)
+ (erc-put-text-property 0 len 'invisible 'timestamp s)
(insert s)))
(defun erc-insert-aligned (string pos)
@@ -319,6 +320,21 @@ set, and timestamping is already active."
(setq erc-hide-timestamps nil)
(erc-munge-invisibility-spec))
+(defun erc-toggle-timestamps ()
+ "Hide or show timestamps in ERC buffers.
+
+Note that timestamps can only be shown for a message using this
+function if `erc-timestamp-format' was set and timestamping was
+enabled when the message was inserted."
+ (interactive)
+ (if erc-hide-timestamps
+ (setq erc-hide-timestamps nil)
+ (setq erc-hide-timestamps t))
+ (mapc (lambda (buffer)
+ (with-current-buffer buffer
+ (erc-munge-invisibility-spec)))
+ (erc-buffer-list)))
+
(defun erc-echo-timestamp (before now)
"Print timestamp text-property of an IRC message.
Argument BEFORE is where point was before it got moved and
diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el
index 0fa550a5838..4a8b673d46b 100644
--- a/lisp/erc/erc-track.el
+++ b/lisp/erc/erc-track.el
@@ -1,6 +1,7 @@
;;; erc-track.el --- Track modified channel buffers
-;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2004, 2005, 2006,
+;; 2007 Free Software Foundation, Inc.
;; Author: Mario Lang <mlang@delysid.org>
;; Keywords: comm, faces
@@ -46,12 +47,33 @@
"Track active buffers and show activity in the modeline."
:group 'erc)
+(defcustom erc-track-enable-keybindings 'ask
+ "Whether to enable the ERC track keybindings, namely:
+`C-c C-SPC' and `C-c C-@', which both do the same thing.
+
+The default is to check to see whether these keys are used
+already: if not, then enable the ERC track minor mode, which
+provides these keys. Otherwise, do not touch the keys.
+
+This can alternatively be set to either t or nil, which indicate
+respectively always to enable ERC track minor mode or never to
+enable ERC track minor mode.
+
+The reason for using this default value is to both (1) adhere to
+the Emacs development guidelines which say not to touch keys of
+the form C-c C-<something> and also (2) to meet the expectations
+of long-time ERC users, many of whom rely on these keybindings."
+ :group 'erc-track
+ :type '(choice (const :tag "Ask, if used already" ask)
+ (const :tag "Enable" t)
+ (const :tag "Disable" nil)))
+
(defcustom erc-track-visibility t
"Where do we look for buffers to determine their visibility?
The value of this variable determines, when a buffer is considered
visible or invisible. New messages in invisible buffers are tracked,
while switching to visible buffers when they are tracked removes them
-from the list. See also `erc-track-when-inactive-mode'.
+from the list. See also `erc-track-when-inactive'.
Possible values are:
@@ -488,45 +510,124 @@ START is the minimum length of the name used."
(equal (erc-unique-substrings '("abc" "abcdefg"))
'("abc" "abcd"))))))
+;;; Minor mode
+
+;; Play nice with other IRC clients (and Emacs development rules) by
+;; making this a minor mode
+
+(defvar erc-track-minor-mode-map (make-sparse-keymap)
+ "Keymap for rcirc track minor mode.")
+
+(define-key erc-track-minor-mode-map (kbd "C-c C-@") 'erc-track-switch-buffer)
+(define-key erc-track-minor-mode-map (kbd "C-c C-SPC")
+ 'erc-track-switch-buffer)
+
+;;;###autoload
+(define-minor-mode erc-track-minor-mode
+ "Global minor mode for tracking ERC buffers and showing activity in the
+mode line.
+
+This exists for the sole purpose of providing the C-c C-SPC and
+C-c C-@ keybindings. Make sure that you have enabled the track
+module, otherwise the keybindings will not do anything useful."
+ :init-value nil
+ :lighter ""
+ :keymap erc-track-minor-mode-map
+ :global t
+ :group 'erc-track)
+
+(defun erc-track-minor-mode-maybe ()
+ "Enable `erc-track-minor-mode', depending on `erc-track-enable-keybindings'."
+ (unless (or erc-track-minor-mode
+ ;; don't start the minor mode until we have an ERC
+ ;; process running, because we don't want to prompt the
+ ;; user while starting Emacs
+ (null (erc-buffer-list)))
+ (cond ((eq erc-track-enable-keybindings 'ask)
+ (let ((key (or (and (key-binding (kbd "C-c C-SPC")) "C-SPC")
+ (and (key-binding (kbd "C-c C-@")) "C-@"))))
+ (if key
+ (if (y-or-n-p
+ (concat "The C-c " key " binding is in use;"
+ " override it for tracking? "))
+ (progn
+ (message (concat "Will change it; set"
+ " `erc-track-enable-keybindings'"
+ " to disable this message"))
+ (sleep-for 3)
+ (erc-track-minor-mode 1))
+ (message (concat "Not changing it; set"
+ " `erc-track-enable-keybindings'"
+ " to disable this message"))
+ (sleep-for 3))
+ (erc-track-minor-mode 1))))
+ ((eq erc-track-enable-keybindings t)
+ (erc-track-minor-mode 1))
+ (t nil))))
+
;;; Module
;;;###autoload (autoload 'erc-track-mode "erc-track" nil t)
-(define-erc-module track track-modified-channels
+(define-erc-module track nil
"This mode tracks ERC channel buffers with activity."
- ((erc-track-add-to-mode-line erc-track-position-in-mode-line)
- (setq erc-modified-channels-object (erc-modified-channels-object nil))
- (erc-update-mode-line)
- (if (featurep 'xemacs)
- (defadvice switch-to-buffer (after erc-update (&rest args) activate)
- (erc-modified-channels-update))
- (add-hook 'window-configuration-change-hook 'erc-modified-channels-update))
- (add-hook 'erc-insert-post-hook 'erc-track-modified-channels)
- (add-hook 'erc-disconnected-hook 'erc-modified-channels-update))
- ((erc-track-remove-from-mode-line)
- (if (featurep 'xemacs)
- (ad-disable-advice 'switch-to-buffer 'after 'erc-update)
- (remove-hook 'window-configuration-change-hook
- 'erc-modified-channels-update))
- (remove-hook 'erc-disconnected-hook 'erc-modified-channels-update)
- (remove-hook 'erc-insert-post-hook 'erc-track-modified-channels)))
-
-;;;###autoload (autoload 'erc-track-when-inactive-mode "erc-track" nil t)
-(define-erc-module track-when-inactive nil
- "This mode enables channel tracking even for visible buffers,
-if you are inactivity."
- ((if (featurep 'xemacs)
- (defadvice switch-to-buffer (after erc-update-when-inactive (&rest args) activate)
- (erc-user-is-active))
- (add-hook 'window-configuration-change-hook 'erc-user-is-active))
- (add-hook 'erc-send-completed-hook 'erc-user-is-active)
- (add-hook 'erc-server-001-functions 'erc-user-is-active))
- ((erc-track-remove-from-mode-line)
- (if (featurep 'xemacs)
- (ad-disable-advice 'switch-to-buffer 'after 'erc-update-when-inactive)
- (remove-hook 'window-configuration-change-hook 'erc-user-is-active))
- (remove-hook 'erc-send-completed-hook 'erc-user-is-active)
- (remove-hook 'erc-server-001-functions 'erc-user-is-active)
- (remove-hook 'erc-timer-hook 'erc-user-is-active)))
+ ;; Enable:
+ ((when (boundp 'erc-track-when-inactive)
+ (if erc-track-when-inactive
+ (progn
+ (if (featurep 'xemacs)
+ (defadvice switch-to-buffer (after erc-update-when-inactive
+ (&rest args) activate)
+ (erc-user-is-active))
+ (add-hook 'window-configuration-change-hook 'erc-user-is-active))
+ (add-hook 'erc-send-completed-hook 'erc-user-is-active)
+ (add-hook 'erc-server-001-functions 'erc-user-is-active))
+ (erc-track-add-to-mode-line erc-track-position-in-mode-line)
+ (setq erc-modified-channels-object (erc-modified-channels-object nil))
+ (erc-update-mode-line)
+ (if (featurep 'xemacs)
+ (defadvice switch-to-buffer (after erc-update (&rest args) activate)
+ (erc-modified-channels-update))
+ (add-hook 'window-configuration-change-hook
+ 'erc-modified-channels-update))
+ (add-hook 'erc-insert-post-hook 'erc-track-modified-channels)
+ (add-hook 'erc-disconnected-hook 'erc-modified-channels-update))
+ ;; enable the tracking keybindings
+ (erc-track-minor-mode-maybe)))
+ ;; Disable:
+ ((when (boundp 'erc-track-when-inactive)
+ (erc-track-remove-from-mode-line)
+ (if erc-track-when-inactive
+ (progn
+ (if (featurep 'xemacs)
+ (ad-disable-advice 'switch-to-buffer 'after
+ 'erc-update-when-inactive)
+ (remove-hook 'window-configuration-change-hook
+ 'erc-user-is-active))
+ (remove-hook 'erc-send-completed-hook 'erc-user-is-active)
+ (remove-hook 'erc-server-001-functions 'erc-user-is-active)
+ (remove-hook 'erc-timer-hook 'erc-user-is-active))
+ (if (featurep 'xemacs)
+ (ad-disable-advice 'switch-to-buffer 'after 'erc-update)
+ (remove-hook 'window-configuration-change-hook
+ 'erc-modified-channels-update))
+ (remove-hook 'erc-disconnected-hook 'erc-modified-channels-update)
+ (remove-hook 'erc-insert-post-hook 'erc-track-modified-channels))
+ ;; disable the tracking keybindings
+ (when erc-track-minor-mode
+ (erc-track-minor-mode -1)))))
+
+(defcustom erc-track-when-inactive nil
+ "Enable channel tracking even for visible buffers, if you are
+inactive."
+ :group 'erc-track
+ :type 'boolean
+ :set (lambda (sym val)
+ (if erc-track-mode
+ (progn
+ (erc-track-disable)
+ (set sym val)
+ (erc-track-enable))
+ (set sym val))))
;;; Visibility
@@ -545,7 +646,7 @@ only consider active buffers visible.")
(defun erc-buffer-visible (buffer)
"Return non-nil when the buffer is visible."
- (if erc-track-when-inactive-mode
+ (if erc-track-when-inactive
(when erc-buffer-activity; could be nil
(and (get-buffer-window buffer erc-track-visibility)
(<= (erc-time-diff erc-buffer-activity (erc-current-time))
@@ -815,7 +916,9 @@ relative to `erc-track-switch-direction'"
switch back to the last non-ERC buffer visited. Next is defined by
`erc-track-switch-direction', a negative argument will reverse this."
(interactive "p")
- (when erc-track-mode
+ (if (not erc-track-mode)
+ (message (concat "Enable the ERC track module if you want to use the"
+ " tracking minor mode"))
(cond (erc-modified-channels-alist
;; if we're not in erc-mode, set this buffer to return to
(unless (eq major-mode 'erc-mode)
@@ -828,12 +931,6 @@ switch back to the last non-ERC buffer visited. Next is defined by
(buffer-live-p erc-track-last-non-erc-buffer))
(switch-to-buffer erc-track-last-non-erc-buffer)))))
-;; These bindings are global, because they pop us from any other
-;; buffer to an active ERC buffer!
-
-(global-set-key (kbd "C-c C-@") 'erc-track-switch-buffer)
-(global-set-key (kbd "C-c C-SPC") 'erc-track-switch-buffer)
-
(provide 'erc-track)
;;; erc-track.el ends here
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 927dce02d64..37c2c2e0883 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -66,7 +66,7 @@
;;; Code:
-(defconst erc-version-string "Version 5.2 stable pre-release"
+(defconst erc-version-string "Version 5.2"
"ERC version. This is used by function `erc-version'.")
(eval-when-compile (require 'cl))
@@ -324,7 +324,7 @@ Each function should accept two arguments, NEW-NICK and OLD-NICK."
(defcustom erc-connect-pre-hook '(erc-initialize-log-marker)
"Hook called just before `erc' calls `erc-connect'.
-Functions are run in the buffer-to-be."
+Functions are passed a buffer as the first argument."
:group 'erc-hooks
:type 'hook)
@@ -392,14 +392,14 @@ in the current buffer's `erc-channel-users' hash table."
(defsubst erc-get-server-user (nick)
"Finds the USER corresponding to NICK in the current server's
`erc-server-users' hash table."
- (with-current-buffer (process-buffer erc-server-process)
+ (erc-with-server-buffer
(gethash (erc-downcase nick) erc-server-users)))
(defsubst erc-add-server-user (nick user)
"This function is for internal use only.
Adds USER with nickname NICK to the `erc-server-users' hash table."
- (with-current-buffer (process-buffer erc-server-process)
+ (erc-with-server-buffer
(puthash (erc-downcase nick) user erc-server-users)))
(defsubst erc-remove-server-user (nick)
@@ -410,7 +410,7 @@ hash table. This user is not removed from the
`erc-channel-users' lists of other buffers.
See also: `erc-remove-user'."
- (with-current-buffer (process-buffer erc-server-process)
+ (erc-with-server-buffer
(remhash (erc-downcase nick) erc-server-users)))
(defun erc-change-user-nickname (user new-nick)
@@ -421,7 +421,7 @@ Changes the nickname of USER to NEW-NICK in the
other buffers are also changed."
(let ((nick (erc-server-user-nickname user)))
(setf (erc-server-user-nickname user) new-nick)
- (with-current-buffer (process-buffer erc-server-process)
+ (erc-with-server-buffer
(remhash (erc-downcase nick) erc-server-users)
(puthash (erc-downcase new-nick) user erc-server-users))
(dolist (buf (erc-server-user-buffers user))
@@ -514,16 +514,15 @@ See also: `erc-sort-channel-users-by-activity'"
(defun erc-get-server-nickname-list ()
"Returns a list of known nicknames on the current server."
- (if (erc-server-process-alive)
- (with-current-buffer (erc-server-buffer)
- (let (nicks)
- (when (hash-table-p erc-server-users)
- (maphash (lambda (n user)
- (setq nicks
- (cons (erc-server-user-nickname user)
- nicks)))
- erc-server-users)
- nicks)))))
+ (erc-with-server-buffer
+ (let (nicks)
+ (when (hash-table-p erc-server-users)
+ (maphash (lambda (n user)
+ (setq nicks
+ (cons (erc-server-user-nickname user)
+ nicks)))
+ erc-server-users)
+ nicks))))
(defun erc-get-channel-nickname-list ()
"Returns a list of known nicknames on the current channel."
@@ -538,16 +537,15 @@ See also: `erc-sort-channel-users-by-activity'"
(defun erc-get-server-nickname-alist ()
"Returns an alist of known nicknames on the current server."
- (if (erc-server-process-alive)
- (with-current-buffer (erc-server-buffer)
- (let (nicks)
- (when (hash-table-p erc-server-users)
- (maphash (lambda (n user)
- (setq nicks
- (cons (cons (erc-server-user-nickname user) nil)
- nicks)))
- erc-server-users)
- nicks)))))
+ (erc-with-server-buffer
+ (let (nicks)
+ (when (hash-table-p erc-server-users)
+ (maphash (lambda (n user)
+ (setq nicks
+ (cons (cons (erc-server-user-nickname user) nil)
+ nicks)))
+ erc-server-users)
+ nicks))))
(defun erc-get-channel-nickname-alist ()
"Returns an alist of known nicknames on the current channel."
@@ -1293,7 +1291,7 @@ capabilities."
(unless (erc-server-buffer-p)
(error
"You should only run `erc-once-with-server-event' in a server buffer"))
- (let ((fun (erc-gensym))
+ (let ((fun (make-symbol "fun"))
(hook (erc-get-hook event)))
(put fun 'erc-original-buffer (current-buffer))
(fset fun `(lambda (proc parsed)
@@ -1316,7 +1314,7 @@ not be run.
When FORMS execute, the current buffer is the server buffer associated with the
connection over which the data was received that triggered EVENT."
- (let ((fun (erc-gensym))
+ (let ((fun (make-symbol "fun"))
(hook (erc-get-hook event)))
(fset fun `(lambda (proc parsed)
(remove-hook ',hook ',fun)
@@ -1370,7 +1368,7 @@ If BUFFER is nil, the current buffer is used."
(defun erc-ison-p (nick)
"Return non-nil if NICK is online."
(interactive "sNick: ")
- (with-current-buffer (erc-server-buffer)
+ (erc-with-server-buffer
(let ((erc-online-p 'unknown))
(erc-once-with-server-event
303
@@ -1420,7 +1418,7 @@ server buffer.")
(defun erc-active-buffer ()
"Return the value of `erc-active-buffer' for the current server.
Defaults to the server buffer."
- (with-current-buffer (erc-server-buffer)
+ (erc-with-server-buffer
(if (buffer-live-p erc-active-buffer)
erc-active-buffer
(setq erc-active-buffer (current-buffer)))))
@@ -1603,10 +1601,10 @@ See `erc-get-buffer' for details.
See also `with-current-buffer'.
\(fn (TARGET [PROCESS]) BODY...)"
- (let ((buf (erc-gensym))
- (proc (erc-gensym))
- (target (erc-gensym))
- (process (erc-gensym)))
+ (let ((buf (make-symbol "buf"))
+ (proc (make-symbol "proc"))
+ (target (make-symbol "target"))
+ (process (make-symbol "process")))
`(let* ((,target ,(car spec))
(,process ,(cadr spec))
(,buf (if (bufferp ,target)
@@ -1616,7 +1614,7 @@ See also `with-current-buffer'.
erc-server-process))))
(if (and ,target ,proc)
(erc-get-buffer ,target ,proc))))))
- (when ,buf
+ (when (buffer-live-p ,buf)
(with-current-buffer ,buf
,@body)))))
(put 'erc-with-buffer 'lisp-indent-function 1)
@@ -1671,8 +1669,8 @@ FORMS will be evaluated in all buffers having the process PROCESS and
where PRED matches or in all buffers of the server process if PRED is
nil."
;; Make the evaluation have the correct order
- (let ((pre (erc-gensym))
- (pro (erc-gensym)))
+ (let ((pre (make-symbol "pre"))
+ (pro (make-symbol "pro")))
`(let ((,pro ,process)
(,pre ,pred))
(mapcar (lambda (buffer)
@@ -1755,7 +1753,10 @@ all channel buffers on all servers."
(make-variable-buffer-local 'erc-invitation)
(defvar erc-away nil
- "Non-nil indicates that we are away.")
+ "Non-nil indicates that we are away.
+
+Use `erc-away-time' to access this if you might be in a channel
+buffer rather than a server buffer.")
(make-variable-buffer-local 'erc-away)
(defvar erc-channel-list nil
@@ -1813,43 +1814,43 @@ removed from the list will be disabled."
:type
'(set
:greedy t
- (const :tag "Set away status automatically" autoaway)
- (const :tag "Join channels automatically" autojoin)
- (const :tag "Buttonize URLs, nicknames, and other text" button)
- (const
- :tag
- "Mark unidentified users on freenode and other servers supporting CAPAB"
- capab-identify)
- (const :tag "Wrap long lines" fill)
- (const :tag "Launch an identd server on port 8113" identd)
- (const :tag "Highlight or remove IRC control characters"
+ (const :tag "autoaway: Set away status automatically" autoaway)
+ (const :tag "autojoin: Join channels automatically" autojoin)
+ (const :tag "button: Buttonize URLs, nicknames, and other text" button)
+ (const :tag "capab: Mark unidentified users on servers supporting CAPAB"
+ capab-identify)
+ (const :tag "completion: Complete nicknames and commands (programmable)"
+ completion)
+ (const :tag "hecomplete: Complete nicknames and commands (old)" hecomplete)
+ (const :tag "fill: Wrap long lines" fill)
+ (const :tag "identd: Launch an identd server on port 8113" identd)
+ (const :tag "irccontrols: Highlight or remove IRC control characters"
irccontrols)
- (const :tag "Save buffers in logs" log)
- (const :tag "Highlight pals, fools, and other keywords" match)
- (const :tag "Display a menu in ERC buffers" menu)
- (const :tag "Detect netsplits" netsplit)
- (const :tag "Don't display non-IRC commands after evaluation"
+ (const :tag "log: Save buffers in logs" log)
+ (const :tag "match: Highlight pals, fools, and other keywords" match)
+ (const :tag "menu: Display a menu in ERC buffers" menu)
+ (const :tag "netsplit: Detect netsplits" netsplit)
+ (const :tag "noncommands: Don't display non-IRC commands after evaluation"
noncommands)
- (const :tag "Notify when the online status of certain users changes"
+ (const :tag
+ "notify: Notify when the online status of certain users changes"
notify)
- (const :tag "Complete nicknames and commands (programmable)"
- completion)
- (const :tag "Complete nicknames and commands (old)" hecomplete)
- (const :tag "Process CTCP PAGE requests from IRC" page)
- (const :tag "Make displayed lines read-only" readonly)
- (const :tag "Replace text in messages" replace)
- (const :tag "Enable an input history" ring)
- (const :tag "Scroll to the bottom of the buffer" scrolltobottom)
- (const :tag "Identify to Nickserv (IRC Services) automatically"
+ (const :tag "page: Process CTCP PAGE requests from IRC" page)
+ (const :tag "readonly: Make displayed lines read-only" readonly)
+ (const :tag "replace: Replace text in messages" replace)
+ (const :tag "ring: Enable an input history" ring)
+ (const :tag "scrolltobottom: Scroll to the bottom of the buffer"
+ scrolltobottom)
+ (const :tag "services: Identify to Nickserv (IRC Services) automatically"
services)
- (const :tag "Convert smileys to pretty icons" smiley)
- (const :tag "Play sounds when you receive CTCP SOUND requests"
+ (const :tag "smiley: Convert smileys to pretty icons" smiley)
+ (const :tag "sound: Play sounds when you receive CTCP SOUND requests"
sound)
- (const :tag "Add timestamps to messages" stamp)
- (const :tag "Check spelling" spelling)
- (const :tag "Track channel activity in the mode-line" track)
- (const :tag "Truncate buffers to a certain size" truncate)
- (const :tag "Translate morse code in messages" unmorse)
+ (const :tag "stamp: Add timestamps to messages" stamp)
+ (const :tag "spelling: Check spelling" spelling)
+ (const :tag "track: Track channel activity in the mode-line" track)
+ (const :tag "truncate: Truncate buffers to a certain size" truncate)
+ (const :tag "unmorse: Translate morse code in messages" unmorse)
(repeat :tag "Others" :inline t symbol))
:group 'erc)
@@ -1902,9 +1903,7 @@ removed from the list will be disabled."
(defun erc-open (&optional server port nick full-name
connect passwd tgt-list channel process)
- "ERC is a powerful, modular, and extensible IRC client.
-
-Connect to SERVER on PORT as NICK with FULL-NAME.
+ "Connect to SERVER on PORT as NICK with FULL-NAME.
If CONNECT is non-nil, connect to the server. Otherwise assume
already connected and just create a separate buffer for the new
@@ -1969,10 +1968,6 @@ Returns the buffer for the given server or channel."
(erc-set-active-buffer buffer)
;; last invitation channel
(setq erc-invitation nil)
- ;; away flag
- ;; Should only be used in session-buffers
- (setq erc-away (let ((serverbuf (erc-server-buffer)))
- (and serverbuf (with-current-buffer serverbuf erc-away))))
;; Server channel list
(setq erc-channel-list ())
;; login-time 'nick in use' error
@@ -1987,25 +1982,25 @@ Returns the buffer for the given server or channel."
(setq erc-dbuf
(when erc-log-p
(get-buffer-create (concat "*ERC-DEBUG: " server "*"))))
- (erc-determine-parameters server port nick full-name)
-
- ;; Saving log file on exit
- (run-hooks 'erc-connect-pre-hook)
-
- (when connect
- (erc-server-connect erc-session-server erc-session-port))
- (erc-update-mode-line)
- (set-marker erc-insert-marker (point))
+ ;; set up prompt
(unless continued-session
(goto-char (point-max))
(insert "\n"))
- (set-marker (process-mark erc-server-process) (point))
(if continued-session
(goto-char old-point)
(set-marker erc-insert-marker (point))
(erc-display-prompt)
(goto-char (point-max)))
+ (erc-determine-parameters server port nick full-name)
+
+ ;; Saving log file on exit
+ (run-hook-with-args 'erc-connect-pre-hook buffer)
+
+ (when connect
+ (erc-server-connect erc-session-server erc-session-port buffer))
+ (erc-update-mode-line)
+
;; Now display the buffer in a window as per user wishes.
(unless (eq buffer old-buffer)
(when erc-log-p
@@ -2016,11 +2011,13 @@ Returns the buffer for the given server or channel."
buffer))
-(defun erc-initialize-log-marker ()
- "Initialize the `erc-last-saved-position' marker to a sensible position."
+(defun erc-initialize-log-marker (buffer)
+ "Initialize the `erc-last-saved-position' marker to a sensible position.
+BUFFER is the current buffer."
+ (with-current-buffer buffer
(setq erc-last-saved-position (make-marker))
(move-marker erc-last-saved-position
- (1- (marker-position erc-insert-marker))))
+ (1- (marker-position erc-insert-marker)))))
;; interactive startup
@@ -2120,8 +2117,12 @@ functions in here get called with the parameters SERVER and NICK."
(nick (erc-compute-nick))
password
(full-name (erc-compute-full-name)))
- "Select connection parameters and run ERC.
-Non-interactively, it takes keyword arguments
+ "ERC is a powerful, modular, and extensible IRC client.
+This function is the main entry point for ERC.
+
+It permits you to select connection parameters, and then starts ERC.
+
+Non-interactively, it takes the keyword arguments
(server (erc-compute-server))
(port (erc-compute-port))
(nick (erc-compute-nick))
@@ -2132,12 +2133,13 @@ That is, if called with
(erc :server \"irc.freenode.net\" :full-name \"Harry S Truman\")
-server and full-name will be set to those values, whereas
+then the server and full-name will be set to those values, whereas
`erc-compute-port', `erc-compute-nick' and `erc-compute-full-name' will
be invoked for the values of the other parameters."
(interactive (erc-select-read-args))
(erc-open server port nick full-name t password))
+;;;###autoload
(defalias 'erc-select 'erc)
(defun erc-ssl (&rest r)
@@ -2428,7 +2430,7 @@ See also `erc-format-message' and `erc-display-line'."
This function relies on the erc-parsed text-property being
present."
- (let ((prop-val (get-text-property position 'erc-parsed)))
+ (let ((prop-val (erc-get-parsed-vector position)))
(and prop-val (member (erc-response.command prop-val) list))))
(defvar erc-send-input-line-function 'erc-send-input-line)
@@ -2586,20 +2588,19 @@ If no USER argument is specified, list the contents of `erc-ignore-list'."
(erc-display-line
(erc-make-notice (format "Now ignoring %s" user))
'active)
- (with-current-buffer (erc-server-buffer)
- (add-to-list 'erc-ignore-list user)))
- (if (null (with-current-buffer (erc-server-buffer) erc-ignore-list))
+ (erc-with-server-buffer (add-to-list 'erc-ignore-list user)))
+ (if (null (erc-with-server-buffer erc-ignore-list))
(erc-display-line (erc-make-notice "Ignore list is empty") 'active)
(erc-display-line (erc-make-notice "Ignore list:") 'active)
(mapc #'(lambda (item)
(erc-display-line (erc-make-notice item)
'active))
- (with-current-buffer (erc-server-buffer) erc-ignore-list))))
+ (erc-with-server-buffer erc-ignore-list))))
t)
(defun erc-cmd-UNIGNORE (user)
"Remove the user specified in USER from the ignore list."
- (let ((ignored-nick (car (with-current-buffer (erc-server-buffer)
+ (let ((ignored-nick (car (erc-with-server-buffer
(erc-member-ignore-case (regexp-quote user)
erc-ignore-list)))))
(unless ignored-nick
@@ -2614,7 +2615,7 @@ If no USER argument is specified, list the contents of `erc-ignore-list'."
(erc-display-line
(erc-make-notice (format "No longer ignoring %s" user))
'active)
- (with-current-buffer (erc-server-buffer)
+ (erc-with-server-buffer
(setq erc-ignore-list (delete ignored-nick erc-ignore-list)))))
t)
@@ -2673,8 +2674,8 @@ If no reason is given, unset away status."
"Mark the user as being away everywhere, the reason being indicated by LINE."
;; on all server buffers.
(erc-with-all-buffers-of-server nil
- #'erc-server-buffer-p
- (erc-cmd-AWAY line)))
+ #'erc-open-server-buffer-p
+ (erc-cmd-AWAY line)))
(put 'erc-cmd-GAWAY 'do-not-parse-args t)
(defun erc-cmd-CTCP (nick cmd &rest args)
@@ -2866,10 +2867,9 @@ If SERVER is non-nil, use that, rather than the current server."
(defun erc-cmd-IDLE (nick)
"Show the length of time NICK has been idle."
- (let ((serverbuf (erc-server-buffer))
- (origbuf (current-buffer))
+ (let ((origbuf (current-buffer))
symlist)
- (with-current-buffer serverbuf
+ (erc-with-server-buffer
(add-to-list 'symlist
(cons (erc-once-with-server-event
311 `(string= ,nick
@@ -3027,8 +3027,8 @@ The rest of LINE is the message to send."
(defun erc-cmd-NICK (nick)
"Change current nickname to NICK."
(erc-log (format "cmd: NICK: %s (erc-bad-nick: %S)" nick erc-bad-nick))
- (let ((nicklen (cdr (assoc "NICKLEN" (with-current-buffer (erc-server-buffer)
- erc-server-parameters)))))
+ (let ((nicklen (cdr (assoc "NICKLEN" (erc-with-server-buffer
+ erc-server-parameters)))))
(and nicklen (> (length nick) (string-to-number nicklen))
(erc-display-message
nil 'notice 'active 'nick-too-long
@@ -3167,7 +3167,8 @@ the message given by REASON."
((string-match "^\\s-*\\(.*\\)$" reason)
(let* ((s (match-string 1 reason))
(buffer (erc-server-buffer))
- (reason (funcall erc-quit-reason (if (equal s "") nil s))))
+ (reason (funcall erc-quit-reason (if (equal s "") nil s)))
+ server-proc)
(with-current-buffer (if (and buffer
(bufferp buffer))
buffer
@@ -3175,10 +3176,18 @@ the message given by REASON."
(erc-log (format "cmd: QUIT: %s" reason))
(setq erc-server-quitting t)
(erc-set-active-buffer (erc-server-buffer))
+ (setq server-proc erc-server-process)
(erc-server-send (format "QUIT :%s" reason)))
- (run-hook-with-args 'erc-quit-hook erc-server-process)
+ (run-hook-with-args 'erc-quit-hook server-proc)
(when erc-kill-queries-on-quit
- (erc-kill-query-buffers erc-server-process)))
+ (erc-kill-query-buffers server-proc))
+ ;; if the process has not been killed within 4 seconds, kill it
+ (run-at-time 4 nil
+ (lambda (proc)
+ (when (and (processp proc)
+ (memq (process-status proc) '(run open)))
+ (delete-process proc)))
+ server-proc))
t)
(t nil)))
@@ -3189,9 +3198,7 @@ the message given by REASON."
(defun erc-cmd-GQUIT (reason)
"Disconnect from all servers at once with the same quit REASON."
- (erc-with-all-buffers-of-server nil #'(lambda ()
- (and (erc-server-buffer-p)
- (erc-server-process-alive)))
+ (erc-with-all-buffers-of-server nil #'erc-open-server-buffer-p
(erc-cmd-QUIT reason)))
(defalias 'erc-cmd-GQ 'erc-cmd-GQUIT)
@@ -3199,8 +3206,17 @@ the message given by REASON."
(defun erc-cmd-RECONNECT ()
"Try to reconnect to the current IRC server."
- (setq erc-server-reconnect-count 0)
- (erc-server-reconnect)
+ (let ((buffer (or (erc-server-buffer) (current-buffer)))
+ (process nil))
+ (with-current-buffer (if (bufferp buffer) buffer (current-buffer))
+ (setq erc-server-quitting nil)
+ (setq erc-server-reconnecting t)
+ (setq erc-server-reconnect-count 0)
+ (setq process (get-buffer-process (erc-server-buffer)))
+ (if process
+ (delete-process process)
+ (erc-server-reconnect))
+ (setq erc-server-reconnecting nil)))
t)
(defun erc-cmd-SERVER (server)
@@ -3373,7 +3389,7 @@ The ban list is fetched from the server if necessary."
(setq erc-server-367-functions 'erc-banlist-store
erc-channel-banlist nil)
;; fetch the ban list then callback
- (with-current-buffer (erc-server-buffer)
+ (erc-with-server-buffer
(erc-once-with-server-event
368
`(with-current-buffer ,chnl-name
@@ -3443,7 +3459,7 @@ Unban all currently banned users in the current channel."
(let ((old-367-hook erc-server-367-functions))
(setq erc-server-367-functions 'erc-banlist-store)
;; fetch the ban list then callback
- (with-current-buffer (erc-server-buffer)
+ (erc-with-server-buffer
(erc-once-with-server-event
368
`(with-current-buffer ,chnl
@@ -3737,7 +3753,7 @@ To change how this query window is displayed, use `let' to bind
(erc-update-mode-line)
buf))
-(defcustom erc-auto-query nil
+(defcustom erc-auto-query 'bury
"If non-nil, create a query buffer each time you receive a private message.
If the buffer doesn't already exist it is created. This can be
@@ -3811,7 +3827,7 @@ See also `erc-display-error-notice'."
(setq erc-nick-change-attempt-count (+ erc-nick-change-attempt-count 1))
(let ((newnick (nth 1 erc-default-nicks))
(nicklen (cdr (assoc "NICKLEN"
- (with-current-buffer (erc-server-buffer)
+ (erc-with-server-buffer
erc-server-parameters)))))
(setq erc-bad-nick t)
;; try to use a different nick
@@ -4101,24 +4117,29 @@ See also: `erc-echo-notice-in-user-buffers',
"Run just after connection.
Set user modes and run `erc-after-connect' hook."
- (unless erc-server-connected ; only once per session
- (let ((server (or erc-server-announced-name (erc-response.sender parsed)))
- (nick (car (erc-response.command-args parsed ))))
- (setq erc-server-connected t)
- (erc-update-mode-line)
- (erc-set-initial-user-mode nick)
- (erc-server-setup-periodical-server-ping)
- (run-hook-with-args 'erc-after-connect server nick))))
-
-(defun erc-set-initial-user-mode (nick)
- "If `erc-user-mode' is non-nil for NICK, set the user modes."
- (when erc-user-mode
- (let ((mode (if (functionp erc-user-mode)
- (funcall erc-user-mode)
- erc-user-mode)))
- (when (stringp mode)
- (erc-log (format "changing mode for %s to %s" nick mode))
- (erc-server-send (format "MODE %s %s" nick mode))))))
+ (with-current-buffer (process-buffer proc)
+ (unless erc-server-connected ; only once per session
+ (let ((server (or erc-server-announced-name
+ (erc-response.sender parsed)))
+ (nick (car (erc-response.command-args parsed)))
+ (buffer (process-buffer proc)))
+ (setq erc-server-connected t)
+ (erc-update-mode-line)
+ (erc-set-initial-user-mode nick buffer)
+ (erc-server-setup-periodical-ping buffer)
+ (run-hook-with-args 'erc-after-connect server nick)))))
+
+(defun erc-set-initial-user-mode (nick buffer)
+ "If `erc-user-mode' is non-nil for NICK, set the user modes.
+The server buffer is given by BUFFER."
+ (with-current-buffer buffer
+ (when erc-user-mode
+ (let ((mode (if (functionp erc-user-mode)
+ (funcall erc-user-mode)
+ erc-user-mode)))
+ (when (stringp mode)
+ (erc-log (format "changing mode for %s to %s" nick mode))
+ (erc-server-send (format "MODE %s %s" nick mode)))))))
(defun erc-display-error-notice (parsed string)
"Display STRING as an error notice.
@@ -4345,14 +4366,12 @@ If non-nil, return from being away."
erc-nick)))
(cond
(away-p
- (erc-with-all-buffers-of-server proc nil
- (setq erc-away (current-time))))
+ (setq erc-away (current-time)))
(t
(let ((away-time erc-away))
;; away must be set to NIL BEFORE sending anything to prevent
;; an infinite recursion
- (erc-with-all-buffers-of-server proc nil
- (setq erc-away nil))
+ (setq erc-away nil)
(save-excursion
(set-buffer (erc-active-buffer))
(when erc-public-away-p
@@ -5037,8 +5056,9 @@ strings over to the next call."
(defun erc-set-current-nick (nick)
"Set the current nickname to NICK."
- (with-current-buffer (or (erc-server-buffer)
- (current-buffer))
+ (with-current-buffer (if (buffer-live-p (erc-server-buffer))
+ (erc-server-buffer)
+ (current-buffer))
(setq erc-server-current-nick nick)))
(defun erc-current-nick ()
@@ -5119,7 +5139,7 @@ Takes a full SPEC of a user in the form \"nick!login@host\", and
matches against all the regexp's in `erc-ignore-list'. If any
match, returns that regexp."
(catch 'found
- (dolist (ignored (with-current-buffer (erc-server-buffer) erc-ignore-list))
+ (dolist (ignored (erc-with-server-buffer erc-ignore-list))
(if (string-match ignored spec)
(throw 'found ignored)))))
@@ -5673,12 +5693,12 @@ entry of `channel-members'."
""))
user))))
-(defun erc-away-p ()
- "Return t if the current ERC process is set away."
- (save-excursion
- (and (erc-server-buffer-live-p)
- (set-buffer (process-buffer erc-server-process))
- erc-away)))
+(defun erc-away-time ()
+ "Return non-nil if the current ERC process is set away.
+
+In particular, the time that we were set away is returned.
+See `current-time' for details on the time format."
+ (erc-with-server-buffer erc-away))
;; Mode line handling
@@ -5706,9 +5726,17 @@ The following characters are replaced:
"A string to be formatted and shown in the header-line in `erc-mode'.
Only used starting in Emacs 21.
+Set this to nil if you do not want the header line to be
+displayed.
+
See `erc-mode-line-format' for which characters are can be used."
:group 'erc-mode-line-and-header
- :type 'string)
+ :set (lambda (sym val)
+ (set sym val)
+ (when (fboundp 'erc-update-mode-line)
+ (erc-update-mode-line nil)))
+ :type '(choice (const :tag "Disabled" nil)
+ string))
(defcustom erc-header-line-uses-help-echo-p t
"Show the contents of the header line in the echo area or as a tooltip
@@ -5734,7 +5762,8 @@ Otherwise, use the `erc-header-line' face."
(defcustom erc-common-server-suffixes
'(("openprojects.net$" . "OPN")
- ("freenode.net$" . "OPN"))
+ ("freenode.net$" . "freenode")
+ ("oftc.net$" . "OFTC"))
"Alist of common server name suffixes.
This variable is used in mode-line display to save screen
real estate. Set it to nil if you want to avoid changing
@@ -5786,9 +5815,7 @@ This should be a string with substitution variables recognized by
(defun erc-format-away-status ()
"Return a formatted `erc-mode-line-away-status-format'
if `erc-away' is non-nil."
- (let ((a (when (erc-server-buffer-live-p)
- (with-current-buffer (process-buffer erc-server-process)
- erc-away))))
+ (let ((a (erc-away-time)))
(if a
(format-time-string erc-mode-line-away-status-format a)
"")))
@@ -5813,9 +5840,7 @@ if `erc-away' is non-nil."
(defun erc-format-lag-time ()
"Return the estimated lag time to server, `erc-server-lag'."
- (let ((lag (when (erc-server-buffer-live-p)
- (with-current-buffer (process-buffer erc-server-process)
- erc-server-lag))))
+ (let ((lag (erc-with-server-buffer erc-server-lag)))
(cond (lag (format "lag:%.0f" lag))
(t ""))))
@@ -6137,7 +6162,8 @@ functions."
(format "%s (%s@%s) has left channel %s%s"
nick user host channel
(if (not (string= reason ""))
- (format ": %s" reason)
+ (format ": %s"
+ (erc-replace-regexp-in-string "%" "%%" reason))
"")))))
@@ -6232,6 +6258,13 @@ This function should be on `erc-kill-channel-hook'."
"Find the next occurrence of the `erc-parsed' text property."
(text-property-not-all (point-min) (point-max) 'erc-parsed nil))
+(defun erc-restore-text-properties ()
+ "Restore the property 'erc-parsed for the region."
+ (let ((parsed-posn (erc-find-parsed-property)))
+ (put-text-property
+ (point-min) (point-max)
+ 'erc-parsed (when parsed-posn (erc-get-parsed-vector parsed-posn)))))
+
(defun erc-get-parsed-vector (point)
"Return the whole parsed vector on POINT."
(get-text-property point 'erc-parsed))
@@ -6263,8 +6296,7 @@ Otherwise, connect to HOST:PORT as USER and /join CHANNEL."
(lambda ()
(and (string-equal erc-session-server host)
(= erc-session-port port)
- erc-server-connected
- (eq (erc-server-buffer) (current-buffer))))))))
+ (erc-open-server-buffer-p)))))))
(with-current-buffer (or server-buffer (current-buffer))
(if (and server-buffer channel)
(erc-cmd-JOIN channel)
diff --git a/lisp/eshell/esh-proc.el b/lisp/eshell/esh-proc.el
index d3dabbf04b5..96d8255a3ab 100644
--- a/lisp/eshell/esh-proc.el
+++ b/lisp/eshell/esh-proc.el
@@ -181,7 +181,7 @@ The signals which will cause this to happen are matched by
(setq signum (abs (string-to-number id))))
((stringp id)
(let (case-fold-search)
- (if (string-match "^-\\([A-Z]+\\)$" id)
+ (if (string-match "^-\\([A-Z]+[12]?\\)$" id)
(setq signum
(intern (concat "SIG" (match-string 1 id))))
(error "kill: bad signal spec `%s'" id))))
diff --git a/lisp/expand.el b/lisp/expand.el
index ebcf90ccfc2..c34c18b4483 100644
--- a/lisp/expand.el
+++ b/lisp/expand.el
@@ -51,17 +51,17 @@
;;
;; and enter Abbrev mode with the following hook :
;;
-;; (add-hook 'c-mode-hook (function (lambda ()
-;; (expand-add-abbrevs c-mode-abbrev-table c-expand-list)
-;; (abbrev-mode))))
+;; (add-hook 'c-mode-hook
+;; (lambda ()
+;; (expand-add-abbrevs c-mode-abbrev-table c-expand-list)
+;; (abbrev-mode 1)))
;;
;; you can also init some post-process hooks :
;;
;; (add-hook 'expand-load-hook
-;; (function
-;; (lambda ()
-;; (add-hook 'expand-expand-hook 'indent-according-to-mode)
-;; (add-hook 'expand-jump-hook 'indent-according-to-mode))))
+;; (lambda ()
+;; (add-hook 'expand-expand-hook 'indent-according-to-mode)
+;; (add-hook 'expand-jump-hook 'indent-according-to-mode)))
;;
;; Remarks:
;;
@@ -336,6 +336,7 @@ This variable is local to a buffer.")
'expand-abbrev-hook)))
(put 'expand-abbrev-hook 'no-self-insert t)
+;;;###autoload
(defun expand-abbrev-hook ()
"Abbrev hook used to do the expansion job of expand abbrevs.
See `expand-add-abbrevs'. Value is non-nil if expansion was done."
diff --git a/lisp/faces.el b/lisp/faces.el
index 904db10efa5..47fb2fa0295 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -1803,13 +1803,9 @@ Initialize colors of certain faces from frame parameters."
(condition-case ()
(progn
(face-spec-set face (face-user-default-spec face) frame)
- (internal-merge-in-global-face face frame)
(if (memq (window-system frame) '(x w32 mac))
(make-face-x-resource-internal face frame))
- ;; If the user has customized the face, don't let X
- ;; resources override the customizations.
- (if (get face 'theme-face)
- (custom-theme-recalc-face face)))
+ (internal-merge-in-global-face face frame))
(error nil)))
;; Apply the attributes specified by frame parameters. This
;; rewrites parameters changed by make-face-x-resource-internal
diff --git a/lisp/ffap.el b/lisp/ffap.el
index e49c77f4d47..5bba729fce3 100644
--- a/lisp/ffap.el
+++ b/lisp/ffap.el
@@ -1147,7 +1147,8 @@ which may actually result in an url rather than a filename."
(error nil))
string))
(abs (file-name-absolute-p name))
- (default-directory default-directory))
+ (default-directory default-directory)
+ (oname name))
(unwind-protect
(cond
;; Immediate rejects (/ and // and /* are too common in C/C++):
@@ -1164,13 +1165,7 @@ which may actually result in an url rather than a filename."
(not abs) (string-match ffap-shell-prompt-regexp name)
(ffap-file-exists-string (substring name (match-end 0)))))
;; Accept remote names without actual checking (too slow):
- ((if abs
- (ffap-file-remote-p name)
- ;; Try adding a leading "/" (common omission in ftp file names):
- (and
- ffap-ftp-sans-slash-regexp
- (string-match ffap-ftp-sans-slash-regexp name)
- (ffap-file-remote-p (concat "/" name)))))
+ ((and abs (ffap-file-remote-p name)))
;; Ok, not remote, try the existence test even if it is absolute:
((and abs (ffap-file-exists-string name)))
;; If it contains a colon, get rid of it (and return if exists)
@@ -1193,6 +1188,14 @@ which may actually result in an url rather than a filename."
(ffap-file-remote-p try)
(ffap-file-exists-string try))))))
try))
+ ;; Try adding a leading "/" (common omission in ftp file names).
+ ;; Note that this uses oname, which still has any colon part.
+ ;; This should have a lower priority than the alist stuff,
+ ;; else it matches things like "ffap.el:1234:56:Warning".
+ ((and (not abs)
+ ffap-ftp-sans-slash-regexp
+ (string-match ffap-ftp-sans-slash-regexp oname)
+ (ffap-file-remote-p (concat "/" oname))))
;; Alist failed? Try to guess an active remote connection
;; from buffer variables, and try once more, both as an
;; absolute and relative file name on that remote host.
diff --git a/lisp/files.el b/lisp/files.el
index f11c6d37834..39d9d6a78b2 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -2435,14 +2435,14 @@ asking you for confirmation."
(mapc (lambda (pair)
(put (car pair) 'safe-local-variable (cdr pair)))
- '((buffer-read-only . booleanp) ;; C source code
- (default-directory . stringp) ;; C source code
- (fill-column . integerp) ;; C source code
- (indent-tabs-mode . booleanp) ;; C source code
- (left-margin . integerp) ;; C source code
- (no-update-autoloads . booleanp)
- (tab-width . integerp) ;; C source code
- (truncate-lines . booleanp))) ;; C source code
+ '((buffer-read-only . booleanp) ;; C source code
+ (default-directory . stringp) ;; C source code
+ (fill-column . integerp) ;; C source code
+ (indent-tabs-mode . booleanp) ;; C source code
+ (left-margin . integerp) ;; C source code
+ (no-update-autoloads . booleanp)
+ (tab-width . integerp) ;; C source code
+ (truncate-lines . booleanp))) ;; C source code
(put 'c-set-style 'safe-local-eval-function t)
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index eb2a7964cec..162db36311f 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -2226,7 +2226,7 @@ other modes in which C preprocessor directives are used. e.g. `asm-mode' and
"condition-case" "track-mouse"
"eval-after-load" "eval-and-compile" "eval-when-compile"
"eval-when" "eval-at-startup" "eval-next-after-load"
- "with-category-table"
+ "with-case-table" "with-category-table"
"with-current-buffer" "with-electric-help"
"with-local-quit" "with-no-warnings"
"with-output-to-string" "with-output-to-temp-buffer"
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index add0bb47c25..8f094dd6537 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,73 @@
+2007-04-10 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * gnus-msg.el (gnus-inews-yank-articles): Use
+ message-exchange-point-and-mark instead of exchange-point-and-mark.
+
+2007-04-09 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * message.el (message-yank-original): Make sure cited text ends with
+ newline; don't exchange point and mark.
+
+2007-04-07 Chong Yidong <cyd@stupidchicken.com>
+
+ * tls.el (open-tls-stream): Properly handle case where there
+ is no associated buffer.
+
+2007-04-03 Thien-Thi Nguyen <ttn@gnu.org>
+
+ * gnus-msg.el (gnus-inews-yank-articles): Fix bug: After
+ message-yank-original, make sure (< mark TEXT point).
+
+2007-03-31 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * nnmail.el (nnmail-spool-file): Mark as obsolete.
+ (nnmail-get-new-mail): Reformat.
+
+ * gnus-registry.el (gnus-registry-cache-save): Add FIXME comment.
+
+ * gmm-utils.el: Fix Commentary.
+ (gmm-tool-bar-from-list): Fix typo in doc string.
+
+2007-03-27 Thien-Thi Nguyen <ttn@gnu.org>
+
+ * message.el (message-yank-original): Fix bug:
+ Don't switch point and mark unnecessarily.
+
+2007-03-25 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
+
+ * gnus-msg.el (gnus-setup-message, gnus-inews-add-send-actions): Move
+ evaluation of gnus-extended-version to ensure correct generation of the
+ User-Agent header when message-generate-headers-first is used.
+
+2007-03-24 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * gnus-art.el (gnus-button-alist): Also catch `<f1> k ...'.
+ (gnus-treat-display-x-face): Fix doc string.
+
+2007-03-20 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
+
+ * message.el (message-required-news-headers):
+ * gnus-util.el (gnus-intern-safe): Fix typo in docstring.
+
+2007-03-15 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * message.el (message-generate-new-buffers): Change the meaning of the
+ nil value; add `standard' to the choices; treat t as `unique'; improve
+ doc string.
+ (gnus-select-frame-set-input-focus): Autoload.
+ (message-buffer-name): Search for the existing message buffer if
+ message-generate-new-buffers is nil or `standard'; treat the value t of
+ message-generate-new-buffers as `unique'.
+ (message-pop-to-buffer): Raise the frame already displaying the message
+ buffer; clear the echo area after querying.
+ (message-setup): Pass the `continue' argument to compose-mail.
+ (message-mail): Prefer `switch-function' if it is given; search for the
+ existing message buffer if the `continue' argument is non-nil; pass
+ continue and switch-function arguments to compose-mail by way of
+ message-setup.
+ (message-mail-other-window): Adjust argument of message-setup.
+ (message-mail-other-frame): Ditto.
+
2007-02-28 Katsumi Yamaoka <yamaoka@jpl.org>
* message.el (message-make-in-reply-to): Quote name containing
@@ -1514,15 +1584,6 @@
* gnus-start.el (gnus-no-server-1): Mention
`gnus-level-default-subscribed' in doc string.
-2005-11-26 Dave Love <fx@gnu.org>
-
- * tls.el (open-tls-stream): Rename arg SERVICE to PORT.
- (tls-program, tls-success): Provide openssl alternative.
-
- * starttls.el: Doc fixes.
- (starttls-open-stream-gnutls, starttls-open-stream): Rename arg
- SERVICE to PORT.
-
2005-12-09 Reiner Steib <Reiner.Steib@gmx.de>
* gnus-start.el (gnus-start-draft-setup): Enforce
@@ -2577,14 +2638,6 @@
* gnus-art.el (gnus-emphasis-alist): Disable the strikethru thingy.
-2005-06-02 Katsumi Yamaoka <yamaoka@jpl.org>
-
- * pop3.el (pop3-md5): Run md5 in the binary mode.
- (pop3-md5-program-args): New variable.
-
- * starttls.el (starttls-set-process-query-on-exit-flag):
- Use eval-and-compile.
-
2005-05-31 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus-art.el (article-display-x-face): Replace
@@ -2620,16 +2673,6 @@
(nntp-open-ssl-stream): Ditto.
(nntp-open-tls-stream): Ditto.
- * pgg.el: Don't bind itimer vars; don't autoload itimer functions.
- (pgg-run-at-time-1): New macro.
- (pgg-run-at-time): Use it.
-
- * starttls.el (starttls-set-process-query-on-exit-flag): Alias to
- set-process-query-on-exit-flag or process-kill-without-query.
- (starttls-open-stream-gnutls): Use it instead of
- process-kill-without-query.
- (starttls-open-stream): Ditto.
-
2005-05-31 Simon Josefsson <jas@extundo.com>
* imap.el (imap-ssl-open): Use imap-process-connection-type,
@@ -3547,13 +3590,6 @@
* gnus-msg.el (gnus-summary-resend-default-address): Add :version.
- * tls.el (tls-process-connection-type, tls-success)
- (tls-certtool-program): Add :version.
-
- * starttls.el (starttls-gnutls-program, starttls-use-gnutls)
- (starttls-extra-arguments, starttls-process-connection-type)
- (starttls-connect, starttls-failure, starttls-success):
-
* spam-stat.el (spam-stat): Add :version.
* sieve.el (sieve): Add :version.
@@ -4041,12 +4077,6 @@
* message.el (message-tokenize-header): Fix 2004-09-06 change
which used point-min in the wrong place.
-2004-10-12 Simon Josefsson <jas@extundo.com>
-
- * net/tls.el (tls-certtool-program): New variable.
- (tls-certificate-information): New function, based on
- ssl-certificate-information.
-
2004-10-11 Reiner Steib <Reiner.Steib@gmx.de>
* message.el (message-bury): Use `window-dedicated-p'.
@@ -4486,19 +4516,6 @@
* sieve.el (sieve-deactivate-all): Fix format string mismatch.
-2004-05-26 Simon Josefsson <jas@extundo.com>
-
- * starttls.el: Merge with my GNUTLS based starttls.el.
- (starttls-gnutls-program, starttls-use-gnutls)
- (starttls-extra-arguments, starttls-process-connection-type)
- (starttls-connect, starttls-failure, starttls-success): New variables.
- (starttls-program, starttls-extra-args): Doc fix.
- (starttls-negotiate-gnutls, starttls-open-stream-gnutls):
- New functions.
- (starttls-negotiate, starttls-open-stream):
- Check `starttls-use-gnutls' and pass on to corresponding *-gnutls
- function if it is set.
-
2004-08-30 Andreas Schwab <schwab@suse.de>
* rfc2231.el (rfc2231-parse-string): Restore whitespace syntax for
diff --git a/lisp/gnus/gmm-utils.el b/lisp/gnus/gmm-utils.el
index 84b69edb575..9241e96d042 100644
--- a/lisp/gnus/gmm-utils.el
+++ b/lisp/gnus/gmm-utils.el
@@ -26,7 +26,7 @@
;; This library provides self-contained utility functions. The functions are
;; used in Gnus, Message and MML, but within this library there are no
-;; dependencies on Gnus, Message, or MML or Gnus.
+;; dependencies on Gnus, Message, or MML.
;;; Code:
@@ -217,7 +217,7 @@ Within each entry of ICON-LIST, the first element is a menu
command, the second element is an icon file name and the third
element is a test function. You can use \\[describe-key]
<menu-entry> to find out the name of a menu command. The fourth
-and all following elements are passed a the PROPS argument to the
+and all following elements are passed as the PROPS argument to the
function `tool-bar-local-item'.
If ZAP-LIST is a list, remove those item from the default
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index c6ac13af6c9..552f3a68f49 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -1332,7 +1332,7 @@ See Info node `(gnus)Customizing Articles' for details."
(executable-find "icontopbm")))
'head)
"Display X-Face headers.
-Valid values are nil, t, `head', `last', an integer or a predicate.
+Valid values are nil and `head'.
See Info node `(gnus)Customizing Articles' and Info node
`(gnus)X-Face' for details."
:group 'gnus-article-treat
@@ -6620,7 +6620,7 @@ positives are possible."
0 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-function 2)
("\\b\\(C-h\\|<?[Ff]1>?\\)[ \t\n]+v[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET"
0 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-variable 2)
- ("`\\(\\b\\(C-h\\|<?[Ff]1>?\\)[ \t\n]+k[ \t\n]+\\([^']+\\)\\)'"
+ ("`\\(\\(C-h\\|<?[Ff]1>?\\)[ \t\n]+k[ \t\n]+\\([^']+\\)\\)'"
;; Unlike the other regexps we really have to require quoting
;; here to determine where it ends.
1 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-key 3)
diff --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el
index cace5028f96..055fc75626a 100644
--- a/lisp/gnus/gnus-msg.el
+++ b/lisp/gnus/gnus-msg.el
@@ -393,6 +393,13 @@ Thank you for your help in stamping out bugs.
(setq mml-buffer-list nil)
(add-hook 'message-header-setup-hook 'gnus-inews-insert-gcc)
(add-hook 'message-header-setup-hook 'gnus-inews-insert-archive-gcc)
+ ;; message-newsreader and message-mailer were formerly set in
+ ;; gnus-inews-add-send-actions, but this is too late when
+ ;; message-generate-headers-first is used. --ansel
+ (add-hook 'message-mode-hook
+ (lambda nil
+ (setq message-newsreader
+ (setq message-mailer (gnus-extended-version)))))
;; #### FIXME: for a reason that I did not manage to identify yet,
;; the variable `gnus-newsgroup-name' does not honor a dynamically
;; scoped or setq'ed value from a caller like `C-u gnus-summary-mail'.
@@ -514,7 +521,6 @@ Gcc: header for archiving purposes."
(setq message-post-method
`(lambda (arg)
(gnus-post-method arg ,gnus-newsgroup-name)))
- (setq message-newsreader (setq message-mailer (gnus-extended-version)))
(message-add-action
`(when (gnus-buffer-exists-p ,buffer)
(set-window-configuration ,winconf))
@@ -765,6 +771,7 @@ active, the entire article will be yanked."
(nnheader-narrow-to-headers)
(nnheader-parse-naked-head)))))
(message-yank-original)
+ (message-exchange-point-and-mark)
(setq beg (or beg (mark t))))
(when articles
(insert "\n")))
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index f32ed6f1414..3e4d3d0127c 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -154,6 +154,8 @@ way."
(gnus-load file)
(gnus-message 5 "Reading %s...done" file))))
+;; FIXME: Get rid of duplicated code, cf. `gnus-save-newsrc-file' in
+;; `gnus-start.el'. --rsteib
(defun gnus-registry-cache-save ()
"Save the registry cache file."
(interactive)
diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el
index 4f8e8539e88..25d6dfd47b6 100644
--- a/lisp/gnus/gnus-util.el
+++ b/lisp/gnus/gnus-util.el
@@ -122,7 +122,7 @@ This is a compatibility function for different Emacsen."
(put 'gnus-eval-in-buffer-window 'edebug-form-spec '(form body))
(defmacro gnus-intern-safe (string hashtable)
- "Set hash value. Arguments are STRING, VALUE, and HASHTABLE."
+ "Get hash value. Arguments are STRING and HASHTABLE."
`(let ((symbol (intern ,string ,hashtable)))
(or (boundp symbol)
(set symbol nil))
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 55a7653dba1..baf98611308 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -226,7 +226,7 @@ Also see `message-required-news-headers' and
"*Headers to be generated or prompted for when posting an article.
RFC977 and RFC1036 require From, Date, Newsgroups, Subject,
Message-ID. Organization, Lines, In-Reply-To, Expires, and
-User-Agent are optional. If don't you want message to insert some
+User-Agent are optional. If you don't want message to insert some
header, remove it from this list."
:group 'message-news
:group 'message-headers
@@ -433,16 +433,36 @@ nil means let mailer mail back a message to report errors."
:type 'boolean)
(defcustom message-generate-new-buffers 'unique
- "*Non-nil means create a new message buffer whenever `message-setup' is called.
-If this is a function, call that function with three parameters: The type,
-the to address and the group name. (Any of these may be nil.) The function
-should return the new buffer name."
+ "*Say whether to create a new message buffer to compose a message.
+Valid values include:
+
+nil
+ Generate the buffer name in the Message way (e.g., *mail*, *news*,
+ *mail to whom*, *news on group*, etc.) and continue editing in the
+ existing buffer of that name. If there is no such buffer, it will
+ be newly created.
+
+`unique' or t
+ Create the new buffer with the name generated in the Message way.
+
+`unsent'
+ Similar to `unique' but the buffer name begins with \"*unsent \".
+
+`standard'
+ Similar to nil but the buffer name is simpler like *mail message*.
+
+function
+ If this is a function, call that function with three parameters:
+ The type, the To address and the group name (any of these may be nil).
+ The function should return the new buffer name."
:group 'message-buffers
:link '(custom-manual "(message)Message Buffers")
- :type '(choice (const :tag "off" nil)
- (const :tag "unique" unique)
- (const :tag "unsent" unsent)
- (function fun)))
+ :type '(choice (const nil)
+ (sexp :tag "unique" :format "unique\n" :value unique
+ :match (lambda (widget value) (memq value '(unique t))))
+ (const unsent)
+ (const standard)
+ (function :format "\n %{%t%}: %v")))
(defcustom message-kill-buffer-on-exit nil
"*Non-nil means that the message buffer will be killed after sending a message."
@@ -1622,7 +1642,8 @@ functionality to work."
(autoload 'rmail-output "rmailout")
(autoload 'gnus-delay-article "gnus-delay")
(autoload 'gnus-make-local-hook "gnus-util")
- (autoload 'gnus-extract-address-components "gnus-util"))
+ (autoload 'gnus-extract-address-components "gnus-util")
+ (autoload 'gnus-select-frame-set-input-focus "gnus-util"))
@@ -3325,12 +3346,16 @@ prefix, and don't delete any headers."
(delete-windows-on message-reply-buffer t)
(push-mark (save-excursion
(insert-buffer-substring message-reply-buffer)
+ (unless (bolp)
+ (insert ?\n))
(point)))
(unless arg
- (funcall message-cite-function))
- (message-exchange-point-and-mark)
- (unless (bolp)
- (insert ?\n))
+ (funcall message-cite-function)
+ (unless (eq (char-before (mark t)) ?\n)
+ (let ((pt (point)))
+ (goto-char (mark t))
+ (insert-before-markers ?\n)
+ (goto-char pt))))
(unless modified
(setq message-checksum (message-checksum))))))
@@ -5501,7 +5526,7 @@ between beginning of field and beginning of line."
"Return a new (unique) buffer name based on TYPE and TO."
(cond
;; Generate a new buffer name The Message Way.
- ((eq message-generate-new-buffers 'unique)
+ ((memq message-generate-new-buffers '(unique t))
(generate-new-buffer-name
(concat "*" type
(if to
@@ -5525,20 +5550,51 @@ between beginning of field and beginning of line."
"")
(if (and group (not (string= group ""))) (concat " on " group) "")
"*")))
- ;; Use standard name.
+ ;; Search for the existing message buffer with the specified name.
(t
- (format "*%s message*" type))))
+ (let* ((new (if (eq message-generate-new-buffers 'standard)
+ (generate-new-buffer-name (concat "*" type " message*"))
+ (let ((message-generate-new-buffers 'unique))
+ (message-buffer-name type to group))))
+ (regexp (concat "\\`"
+ (regexp-quote
+ (if (string-match "<[0-9]+>\\'" new)
+ (substring new 0 (match-beginning 0))
+ new))
+ "\\(?:<\\([0-9]+\\)>\\)?\\'"))
+ (case-fold-search nil))
+ (or (cdar
+ (last
+ (sort
+ (delq nil
+ (mapcar
+ (lambda (b)
+ (when (and (string-match regexp (setq b (buffer-name b)))
+ (eq (with-current-buffer b major-mode)
+ 'message-mode))
+ (cons (string-to-number (or (match-string 1 b) "1"))
+ b)))
+ (buffer-list)))
+ 'car-less-than-car)))
+ new)))))
(defun message-pop-to-buffer (name)
"Pop to buffer NAME, and warn if it already exists and is modified."
(let ((buffer (get-buffer name)))
(if (and buffer
(buffer-name buffer))
- (progn
- (set-buffer (pop-to-buffer buffer))
+ (let ((window (get-buffer-window buffer 0)))
+ (if window
+ ;; Raise the frame already displaying the message buffer.
+ (progn
+ (gnus-select-frame-set-input-focus (window-frame window))
+ (select-window window))
+ (set-buffer (pop-to-buffer buffer)))
(when (and (buffer-modified-p)
- (not (y-or-n-p
- "Message already being composed; erase? ")))
+ (not (prog1
+ (y-or-n-p
+ "Message already being composed; erase? ")
+ (message nil))))
(error "Message being composed")))
(set-buffer (pop-to-buffer name)))
(erase-buffer)
@@ -5598,7 +5654,8 @@ between beginning of field and beginning of line."
nil
mua)))
-(defun message-setup (headers &optional replybuffer actions switch-function)
+(defun message-setup (headers &optional replybuffer actions
+ continue switch-function)
(let ((mua (message-mail-user-agent))
subject to field yank-action)
(if (not (and message-this-is-mail mua))
@@ -5621,7 +5678,7 @@ between beginning of field and beginning of line."
(format "%s" (car item))
(cdr item)))
headers)
- nil switch-function yank-action actions)))))
+ continue switch-function yank-action actions)))))
(defun message-headers-to-generate (headers included-headers excluded-headers)
"Return a list that includes all headers from HEADERS.
@@ -5770,11 +5827,21 @@ are not included."
other-headers continue switch-function
yank-action send-actions)
"Start editing a mail message to be sent.
-OTHER-HEADERS is an alist of header/value pairs."
+OTHER-HEADERS is an alist of header/value pairs. CONTINUE says whether
+to continue editing a message already being composed. SWITCH-FUNCTION
+is a function used to switch to and display the mail buffer."
(interactive)
(let ((message-this-is-mail t) replybuffer)
(unless (message-mail-user-agent)
- (message-pop-to-buffer (message-buffer-name "mail" to)))
+ (funcall
+ (or switch-function 'message-pop-to-buffer)
+ ;; Search for the existing message buffer if `continue' is non-nil.
+ (let ((message-generate-new-buffers
+ (when (or (not continue)
+ (eq message-generate-new-buffers 'standard)
+ (functionp message-generate-new-buffers))
+ message-generate-new-buffers)))
+ (message-buffer-name "mail" to))))
;; FIXME: message-mail should do something if YANK-ACTION is not
;; insert-buffer.
(and (consp yank-action) (eq (car yank-action) 'insert-buffer)
@@ -5783,7 +5850,7 @@ OTHER-HEADERS is an alist of header/value pairs."
(nconc
`((To . ,(or to "")) (Subject . ,(or subject "")))
(when other-headers other-headers))
- replybuffer send-actions)
+ replybuffer send-actions continue switch-function)
;; FIXME: Should return nil if failure.
t))
@@ -6655,7 +6722,7 @@ you."
(message-pop-to-buffer (message-buffer-name "mail" to))))
(let ((message-this-is-mail t))
(message-setup `((To . ,(or to "")) (Subject . ,(or subject "")))
- nil nil 'switch-to-buffer-other-window)))
+ nil nil nil 'switch-to-buffer-other-window)))
;;;###autoload
(defun message-mail-other-frame (&optional to subject)
@@ -6670,7 +6737,7 @@ you."
(message-pop-to-buffer (message-buffer-name "mail" to))))
(let ((message-this-is-mail t))
(message-setup `((To . ,(or to "")) (Subject . ,(or subject "")))
- nil nil 'switch-to-buffer-other-frame)))
+ nil nil nil 'switch-to-buffer-other-frame)))
;;;###autoload
(defun message-news-other-window (&optional newsgroups subject)
diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el
index 736e58cd5a2..b080088b2ef 100644
--- a/lisp/gnus/nnmail.el
+++ b/lisp/gnus/nnmail.el
@@ -247,6 +247,10 @@ This variable is a list of mail source specifiers.
This variable is obsolete; `mail-sources' should be used instead."
:group 'nnmail-files
:type 'sexp)
+(make-obsolete-variable 'nnmail-spool-file
+ "This option is obsolete in Gnus 5.9. \
+Use `mail-sources' instead.")
+;; revision 5.29 / p0-85 / Gnus 5.9
(defcustom nnmail-resplit-incoming nil
"*If non-nil, re-split incoming procmail sorted mail."
@@ -1749,7 +1753,8 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
&optional group spool-func)
"Read new incoming mail."
(let* ((sources (or mail-sources
- (if (listp nnmail-spool-file) nnmail-spool-file
+ (if (listp nnmail-spool-file)
+ nnmail-spool-file
(list nnmail-spool-file))))
fetching-sources
(group-in group)
diff --git a/lisp/help.el b/lisp/help.el
index d0783dd0351..926c43c300d 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -642,7 +642,7 @@ temporarily enables it to allow getting help on disabled items and buttons."
(list
key
(prefix-numeric-value current-prefix-arg)
- ;; If KEY is a down-event, read and discard the
+ ;; If KEY is a down-event, read and include the
;; corresponding up-event. Note that there are also
;; down-events on scroll bars and mode lines: the actual
;; event then is in the second element of the vector.
diff --git a/lisp/ido.el b/lisp/ido.el
index 3eef048390e..80ed82c2583 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -1940,8 +1940,14 @@ If INITIAL is non-nil, it specifies the initial input string."
(if (and ido-matches (eq ido-try-merged-list 'auto))
(setq ido-try-merged-list t))
(let
- ((minibuffer-local-completion-map ido-completion-map)
- (minibuffer-local-filename-completion-map ido-completion-map)
+ ((minibuffer-local-completion-map
+ (if (memq ido-cur-item '(file dir))
+ minibuffer-local-completion-map
+ ido-completion-map))
+ (minibuffer-local-filename-completion-map
+ (if (memq ido-cur-item '(file dir))
+ ido-completion-map
+ minibuffer-local-filename-completion-map))
(max-mini-window-height (or ido-max-window-height
(and (boundp 'max-mini-window-height) max-mini-window-height)))
(ido-completing-read t)
diff --git a/lisp/info.el b/lisp/info.el
index ec2ff23b57e..6f9b1863ee4 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -145,7 +145,7 @@ The Lisp code is executed when the node is selected.")
:type 'boolean
:group 'info)
-(defcustom Info-fontify-maximum-menu-size 1000000
+(defcustom Info-fontify-maximum-menu-size 100000
"*Maximum size of menu to fontify if `font-lock-mode' is non-nil.
Set to nil to disable node fontification."
:type 'integer
@@ -1315,16 +1315,25 @@ any double quotes or backslashes must be escaped (\\\",\\\\)."
nil t)
(let* ((start (match-beginning 1))
(parameter-alist (Info-split-parameter-string (match-string 2)))
- (src (cdr (assoc-string "src" parameter-alist)))
- (image-file (if src (if (file-name-absolute-p src) src
- (concat default-directory src))
- ""))
- (image (if (file-exists-p image-file)
- (create-image image-file)
- "[broken image]")))
- (if (not (get-text-property start 'display))
- (add-text-properties
- start (point) `(display ,image rear-nonsticky (display)))))))
+ (src (cdr (assoc-string "src" parameter-alist))))
+ (if (display-images-p)
+ (let* ((image-file (if src (if (file-name-absolute-p src) src
+ (concat default-directory src))
+ ""))
+ (image (if (file-exists-p image-file)
+ (create-image image-file)
+ "[broken image]")))
+ (if (not (get-text-property start 'display))
+ (add-text-properties
+ start (point) `(display ,image rear-nonsticky (display)))))
+ ;; text-only display, show alternative text if provided, or
+ ;; otherwise a clue that there's meant to be a picture
+ (delete-region start (point))
+ (insert (or (cdr (assoc-string "text" parameter-alist))
+ (cdr (assoc-string "alt" parameter-alist))
+ (and src
+ (concat "[image:" src "]"))
+ "[image]"))))))
(set-buffer-modified-p nil)))
;; Texinfo 4.7 adds cookies of the form ^@^H[NAME CONTENTS ^@^H].
@@ -3235,7 +3244,6 @@ If FORK is non-nil, it i spassed to `Info-goto-node'."
(defvar info-tool-bar-map
(if (display-graphic-p)
(let ((map (make-sparse-keymap)))
- (tool-bar-local-item-from-menu 'Info-exit "close" map Info-mode-map)
(tool-bar-local-item-from-menu 'Info-history-back "left-arrow" map Info-mode-map)
(tool-bar-local-item-from-menu 'Info-history-forward "right-arrow" map Info-mode-map)
(tool-bar-local-item-from-menu 'Info-prev "prev-node" map Info-mode-map)
@@ -3245,6 +3253,7 @@ If FORK is non-nil, it i spassed to `Info-goto-node'."
(tool-bar-local-item-from-menu 'Info-goto-node "jump-to" map Info-mode-map)
(tool-bar-local-item-from-menu 'Info-index "index" map Info-mode-map)
(tool-bar-local-item-from-menu 'Info-search "search" map Info-mode-map)
+ (tool-bar-local-item-from-menu 'Info-exit "exit" map Info-mode-map)
map)))
(defvar Info-menu-last-node nil)
diff --git a/lisp/international/mule.el b/lisp/international/mule.el
index fc7b0276a0f..e873aadb8b4 100644
--- a/lisp/international/mule.el
+++ b/lisp/international/mule.el
@@ -392,6 +392,20 @@ code-point in CCS. Currently not supported and just ignored."
char))))))))
+;; Save the ASCII case table in case we need it later. Some locales
+;; (such as Turkish) modify the case behavior of ASCII characters,
+;; which can interfere with networking code that uses ASCII strings.
+
+(defvar ascii-case-table
+ ;; Code copied from copy-case-table to avoid requiring case-table.el
+ (let ((tbl (copy-sequence (standard-case-table)))
+ (up (char-table-extra-slot (standard-case-table) 0)))
+ (if up (set-char-table-extra-slot tbl 0 (copy-sequence up)))
+ (set-char-table-extra-slot tbl 1 nil)
+ (set-char-table-extra-slot tbl 2 nil)
+ tbl)
+ "Case table for the ASCII character set.")
+
;; Coding system stuff
;; Coding system is a symbol that has the property `coding-system'.
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 8c248dbc255..f246de141f4 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -531,8 +531,7 @@ Type \\[isearch-yank-char] to yank char from buffer onto end of search\
string and search for it.
Type \\[isearch-yank-line] to yank rest of line onto end of search string\
and search for it.
-Type \\[isearch-yank-kill] to yank last killed text onto end of search string\
- and search for it.
+Type \\[isearch-yank-kill] to yank the last string of killed text.
Type \\[isearch-quote-char] to quote control character to search for it.
\\[isearch-abort] while searching or when search has failed cancels input\
back to what has
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index f9dac3493f1..3932fd83f52 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -4,7 +4,7 @@
;;;### (autoloads (5x5-crack 5x5-crack-xor-mutate 5x5-crack-mutating-best
;;;;;; 5x5-crack-mutating-current 5x5-crack-randomly 5x5) "5x5"
-;;;;;; "play/5x5.el" (17888 36936))
+;;;;;; "play/5x5.el" (17963 21010))
;;; Generated autoloads from play/5x5.el
(autoload (quote 5x5) "5x5" "\
@@ -852,7 +852,7 @@ Not documented
;;;***
;;;### (autoloads (animate-birthday-present animate-sequence animate-string)
-;;;;;; "animate" "play/animate.el" (17888 32280))
+;;;;;; "animate" "play/animate.el" (17963 21010))
;;; Generated autoloads from play/animate.el
(autoload (quote animate-string) "animate" "\
@@ -1611,7 +1611,7 @@ Calls `update-directory-autoloads' on the command line arguments.
;;;### (autoloads (global-auto-revert-mode turn-on-auto-revert-tail-mode
;;;;;; auto-revert-tail-mode turn-on-auto-revert-mode auto-revert-mode)
-;;;;;; "autorevert" "autorevert.el" (17963 19298))
+;;;;;; "autorevert" "autorevert.el" (17963 20867))
;;; Generated autoloads from autorevert.el
(autoload (quote auto-revert-mode) "autorevert" "\
@@ -2598,8 +2598,8 @@ name of buffer configuration.
;;;***
;;;### (autoloads (insert-text-button make-text-button insert-button
-;;;;;; make-button define-button-type) "button" "button.el" (17888
-;;;;;; 32278))
+;;;;;; make-button define-button-type) "button" "button.el" (17963
+;;;;;; 21008))
;;; Generated autoloads from button.el
(defvar button-map (let ((map (make-sparse-keymap))) (define-key map " " (quote push-button)) (define-key map [mouse-2] (quote push-button)) map) "\
@@ -2687,7 +2687,7 @@ Also see `make-text-button'.
;;;;;; batch-byte-compile-if-not-done display-call-tree byte-compile
;;;;;; compile-defun byte-compile-file byte-recompile-directory
;;;;;; byte-force-recompile byte-compile-warnings-safe-p) "bytecomp"
-;;;;;; "emacs-lisp/bytecomp.el" (17963 19282))
+;;;;;; "emacs-lisp/bytecomp.el" (17963 20998))
;;; Generated autoloads from emacs-lisp/bytecomp.el
(put 'byte-compile-dynamic 'safe-local-variable 'booleanp)
(put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp)
@@ -2925,7 +2925,7 @@ See the documentation for `calculator-mode' for more information.
;;;;;; mark-holidays-in-calendar view-calendar-holidays-initially
;;;;;; calendar-remove-frame-by-deleting mark-diary-entries-in-calendar
;;;;;; view-diary-entries-initially calendar-offset) "calendar"
-;;;;;; "calendar/calendar.el" (17963 20580))
+;;;;;; "calendar/calendar.el" (17963 20998))
;;; Generated autoloads from calendar/calendar.el
(defvar calendar-offset 0 "\
@@ -3523,7 +3523,7 @@ it fails.
;;;***
;;;### (autoloads (c-guess-basic-syntax) "cc-engine" "progmodes/cc-engine.el"
-;;;;;; (17963 19063))
+;;;;;; (17963 20867))
;;; Generated autoloads from progmodes/cc-engine.el
(autoload (quote c-guess-basic-syntax) "cc-engine" "\
@@ -3535,7 +3535,7 @@ Return the syntactic context of the current line.
;;;### (autoloads (pike-mode idl-mode java-mode objc-mode c++-mode
;;;;;; c-mode c-initialize-cc-mode) "cc-mode" "progmodes/cc-mode.el"
-;;;;;; (17963 19063))
+;;;;;; (17963 20867))
;;; Generated autoloads from progmodes/cc-mode.el
(autoload (quote c-initialize-cc-mode) "cc-mode" "\
@@ -3751,7 +3751,7 @@ and exists only for compatibility reasons.
;;;***
-;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (17888 36581))
+;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (17963 21010))
;;; Generated autoloads from progmodes/cc-vars.el
(put 'c-basic-offset 'safe-local-variable 'integerp)
(put 'c-backslash-column 'safe-local-variable 'integerp)
@@ -4483,7 +4483,7 @@ read/written by MS-DOS software, or for display on the MS-DOS terminal.
;;;### (autoloads (comint-redirect-results-list-from-process comint-redirect-results-list
;;;;;; comint-redirect-send-command-to-process comint-redirect-send-command
;;;;;; comint-run make-comint make-comint-in-buffer) "comint" "comint.el"
-;;;;;; (17963 19298))
+;;;;;; (17963 21008))
;;; Generated autoloads from comint.el
(defvar comint-output-filter-functions (quote (comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt)) "\
@@ -4573,8 +4573,8 @@ REGEXP-GROUP is the regular expression group in REGEXP to use.
;;;***
-;;;### (autoloads (compare-windows) "compare-w" "compare-w.el" (17888
-;;;;;; 32279))
+;;;### (autoloads (compare-windows) "compare-w" "compare-w.el" (17963
+;;;;;; 20867))
;;; Generated autoloads from compare-w.el
(autoload (quote compare-windows) "compare-w" "\
@@ -4611,7 +4611,7 @@ on third call it again advances points to the next difference and so on.
;;;;;; compilation-shell-minor-mode compilation-mode compilation-start
;;;;;; compile compilation-disable-input compile-command compilation-search-path
;;;;;; compilation-ask-about-save compilation-window-height compilation-mode-hook)
-;;;;;; "compile" "progmodes/compile.el" (17963 19298))
+;;;;;; "compile" "progmodes/compile.el" (17963 20998))
;;; Generated autoloads from progmodes/compile.el
(defvar compilation-mode-hook nil "\
@@ -4647,6 +4647,7 @@ describing how the process finished.")
Functions to call when a compilation process finishes.
Each function is called with two arguments: the compilation buffer,
and a string describing how the process finished.")
+(put 'compilation-directory 'safe-local-variable 'stringp)
(defvar compilation-ask-about-save t "\
*Non-nil means \\[compile] asks which buffers to save before compiling.
@@ -4773,7 +4774,7 @@ This is the value of `next-error-function' in Compilation buffers.
;;;***
;;;### (autoloads (partial-completion-mode) "complete" "complete.el"
-;;;;;; (17963 19063))
+;;;;;; (17963 21000))
;;; Generated autoloads from complete.el
(defvar partial-completion-mode nil "\
@@ -6751,7 +6752,7 @@ Not documented
;;;***
;;;### (autoloads (diary-mode diary-mail-entries diary) "diary-lib"
-;;;;;; "calendar/diary-lib.el" (17963 20580))
+;;;;;; "calendar/diary-lib.el" (17963 20998))
;;; Generated autoloads from calendar/diary-lib.el
(autoload (quote diary) "diary-lib" "\
@@ -6848,9 +6849,6 @@ You can also switch between context diff and unified diff with \\[diff-context->
or vice versa with \\[diff-unified->context] and you can also reverse the direction of
a diff with \\[diff-reverse-direction].
-When the buffer is read-only, the Meta- modifier is not necessary
-to run the Diff mode commands:
-
\\{diff-mode-map}
\(fn)" t nil)
@@ -7671,7 +7669,7 @@ for users who call this function in `.emacs'.
;;;***
;;;### (autoloads (dissociated-press) "dissociate" "play/dissociate.el"
-;;;;;; (17888 32280))
+;;;;;; (17963 21010))
;;; Generated autoloads from play/dissociate.el
(autoload (quote dissociated-press) "dissociate" "\
@@ -7732,7 +7730,7 @@ Locate SOA record and increment the serial field.
;;;***
-;;;### (autoloads (doctor) "doctor" "play/doctor.el" (17888 32280))
+;;;### (autoloads (doctor) "doctor" "play/doctor.el" (17963 21010))
;;; Generated autoloads from play/doctor.el
(autoload (quote doctor) "doctor" "\
@@ -8488,7 +8486,7 @@ With prefix arg NOCONFIRM, execute current line as-is without editing.
;;;### (autoloads (edebug-all-forms edebug-all-defs edebug-eval-top-level-form
;;;;;; edebug-basic-spec edebug-all-forms edebug-all-defs) "edebug"
-;;;;;; "emacs-lisp/edebug.el" (17963 19041))
+;;;;;; "emacs-lisp/edebug.el" (17963 20999))
;;; Generated autoloads from emacs-lisp/edebug.el
(defvar edebug-all-defs nil "\
@@ -9196,7 +9194,7 @@ Not documented
;;;***
;;;### (autoloads (erc-handle-irc-url erc erc-select-read-args) "erc"
-;;;;;; "erc/erc.el" (17888 32279))
+;;;;;; "erc/erc.el" (17963 21006))
;;; Generated autoloads from erc/erc.el
(autoload (quote erc-select-read-args) "erc" "\
@@ -9205,8 +9203,12 @@ Prompt the user for values of nick, server, port, and password.
\(fn)" nil nil)
(autoload (quote erc) "erc" "\
-Select connection parameters and run ERC.
-Non-interactively, it takes keyword arguments
+ERC is a powerful, modular, and extensible IRC client.
+This function is the main entry point for ERC.
+
+It permits you to select connection parameters, and then starts ERC.
+
+Non-interactively, it takes the keyword arguments
(server (erc-compute-server))
(port (erc-compute-port))
(nick (erc-compute-nick))
@@ -9217,12 +9219,14 @@ That is, if called with
(erc :server \"irc.freenode.net\" :full-name \"Harry S Truman\")
-server and full-name will be set to those values, whereas
+then the server and full-name will be set to those values, whereas
`erc-compute-port', `erc-compute-nick' and `erc-compute-full-name' will
be invoked for the values of the other parameters.
\(fn &key (SERVER (erc-compute-server)) (PORT (erc-compute-port)) (NICK (erc-compute-nick)) PASSWORD (FULL-NAME (erc-compute-full-name)))" t nil)
+(defalias (quote erc-select) (quote erc))
+
(autoload (quote erc-handle-irc-url) "erc" "\
Use ERC to IRC on HOST:PORT in CHANNEL as USER with PASSWORD.
If ERC is already connected to HOST:PORT, simply /join CHANNEL.
@@ -9232,26 +9236,26 @@ Otherwise, connect to HOST:PORT as USER and /join CHANNEL.
;;;***
-;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (17888
-;;;;;; 32279))
+;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (17963
+;;;;;; 21006))
;;; Generated autoloads from erc/erc-autoaway.el
(autoload 'erc-autoaway-mode "erc-autoaway")
;;;***
-;;;### (autoloads nil "erc-button" "erc/erc-button.el" (17888 32279))
+;;;### (autoloads nil "erc-button" "erc/erc-button.el" (17963 21006))
;;; Generated autoloads from erc/erc-button.el
(autoload 'erc-button-mode "erc-button" nil t)
;;;***
-;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (17888 32277))
+;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (17963 21006))
;;; Generated autoloads from erc/erc-capab.el
(autoload 'erc-capab-identify-mode "erc-capab" nil t)
;;;***
-;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (17888 32279))
+;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (17963 21006))
;;; Generated autoloads from erc/erc-compat.el
(autoload 'erc-define-minor-mode "erc-compat")
@@ -9352,8 +9356,8 @@ Add EZBouncer convenience functions to ERC.
;;;***
-;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (17888
-;;;;;; 32279))
+;;;### (autoloads (erc-fill) "erc-fill" "erc/erc-fill.el" (17963
+;;;;;; 21006))
;;; Generated autoloads from erc/erc-fill.el
(autoload 'erc-fill-mode "erc-fill" nil t)
@@ -9373,7 +9377,7 @@ You can put this on `erc-insert-modify-hook' and/or `erc-send-modify-hook'.
;;;***
;;;### (autoloads (erc-identd-stop erc-identd-start) "erc-identd"
-;;;;;; "erc/erc-identd.el" (17888 32279))
+;;;;;; "erc/erc-identd.el" (17963 21006))
;;; Generated autoloads from erc/erc-identd.el
(autoload 'erc-identd-mode "erc-identd")
@@ -9412,7 +9416,7 @@ Not documented
;;;***
;;;### (autoloads (erc-save-buffer-in-logs erc-logging-enabled) "erc-log"
-;;;;;; "erc/erc-log.el" (17888 32279))
+;;;;;; "erc/erc-log.el" (17963 21006))
;;; Generated autoloads from erc/erc-log.el
(autoload 'erc-log-mode "erc-log" nil t)
@@ -9444,7 +9448,7 @@ You can save every individual message by putting this function on
;;;### (autoloads (erc-delete-dangerous-host erc-add-dangerous-host
;;;;;; erc-delete-keyword erc-add-keyword erc-delete-fool erc-add-fool
;;;;;; erc-delete-pal erc-add-pal) "erc-match" "erc/erc-match.el"
-;;;;;; (17888 32279))
+;;;;;; (17963 21006))
;;; Generated autoloads from erc/erc-match.el
(autoload 'erc-match-mode "erc-match")
@@ -9490,14 +9494,14 @@ Delete dangerous-host interactively to `erc-dangerous-hosts'.
;;;***
-;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (17888 32279))
+;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (17963 21006))
;;; Generated autoloads from erc/erc-menu.el
(autoload 'erc-menu-mode "erc-menu" nil t)
;;;***
;;;### (autoloads (erc-cmd-WHOLEFT) "erc-netsplit" "erc/erc-netsplit.el"
-;;;;;; (17888 32279))
+;;;;;; (17963 21006))
;;; Generated autoloads from erc/erc-netsplit.el
(autoload 'erc-netsplit-mode "erc-netsplit")
@@ -9509,7 +9513,7 @@ Show who's gone.
;;;***
;;;### (autoloads (erc-server-select erc-determine-network) "erc-networks"
-;;;;;; "erc/erc-networks.el" (17888 32279))
+;;;;;; "erc/erc-networks.el" (17963 21006))
;;; Generated autoloads from erc/erc-networks.el
(autoload (quote erc-determine-network) "erc-networks" "\
@@ -9527,7 +9531,7 @@ Interactively select a server to connect to using `erc-server-alist'.
;;;***
;;;### (autoloads (pcomplete/erc-mode/NOTIFY erc-cmd-NOTIFY) "erc-notify"
-;;;;;; "erc/erc-notify.el" (17888 32279))
+;;;;;; "erc/erc-notify.el" (17963 21006))
;;; Generated autoloads from erc/erc-notify.el
(autoload 'erc-notify-mode "erc-notify" nil t)
@@ -9551,8 +9555,8 @@ Not documented
;;;***
-;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (17888
-;;;;;; 32279))
+;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (17963
+;;;;;; 21006))
;;; Generated autoloads from erc/erc-pcomplete.el
(autoload 'erc-completion-mode "erc-pcomplete" nil t)
@@ -9564,14 +9568,14 @@ Not documented
;;;***
-;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (17888 32279))
+;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (17963 21006))
;;; Generated autoloads from erc/erc-ring.el
(autoload 'erc-ring-mode "erc-ring" nil t)
;;;***
;;;### (autoloads (erc-nickserv-identify erc-nickserv-identify-mode)
-;;;;;; "erc-services" "erc/erc-services.el" (17888 32279))
+;;;;;; "erc-services" "erc/erc-services.el" (17963 21006))
;;; Generated autoloads from erc/erc-services.el
(autoload 'erc-services-mode "erc-services" nil t)
@@ -9595,7 +9599,7 @@ When called interactively, read the password using `read-passwd'.
;;;***
;;;### (autoloads (erc-speedbar-browser) "erc-speedbar" "erc/erc-speedbar.el"
-;;;;;; (17888 32279))
+;;;;;; (17963 21006))
;;; Generated autoloads from erc/erc-speedbar.el
(autoload (quote erc-speedbar-browser) "erc-speedbar" "\
@@ -9606,23 +9610,39 @@ This will add a speedbar major display mode.
;;;***
-;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (17888
-;;;;;; 32279))
+;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (17963
+;;;;;; 21006))
;;; Generated autoloads from erc/erc-spelling.el
(autoload 'erc-spelling-mode "erc-spelling" nil t)
;;;***
-;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (17888 32279))
+;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (17963 21006))
;;; Generated autoloads from erc/erc-stamp.el
(autoload 'erc-timestamp-mode "erc-stamp" nil t)
;;;***
-;;;### (autoloads nil "erc-track" "erc/erc-track.el" (17888 32279))
+;;;### (autoloads (erc-track-minor-mode) "erc-track" "erc/erc-track.el"
+;;;;;; (17963 21006))
;;; Generated autoloads from erc/erc-track.el
+
+(defvar erc-track-minor-mode nil "\
+Non-nil if Erc-Track minor mode is enabled.
+See the command `erc-track-minor-mode' for a description of this minor-mode.")
+
+(custom-autoload (quote erc-track-minor-mode) "erc-track" nil)
+
+(autoload (quote erc-track-minor-mode) "erc-track" "\
+Global minor mode for tracking ERC buffers and showing activity in the
+mode line.
+
+This exists for the sole purpose of providing the C-c C-SPC and
+C-c C-@ keybindings. Make sure that you have enabled the track
+module, otherwise the keybindings will not do anything useful.
+
+\(fn &optional ARG)" t nil)
(autoload 'erc-track-mode "erc-track" nil t)
- (autoload 'erc-track-when-inactive-mode "erc-track" nil t)
;;;***
@@ -10344,8 +10364,8 @@ Edit the hotlist of directory servers in a specialized buffer.
;;;***
-;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (17888
-;;;;;; 32279))
+;;;### (autoloads (ewoc-create) "ewoc" "emacs-lisp/ewoc.el" (17963
+;;;;;; 21003))
;;; Generated autoloads from emacs-lisp/ewoc.el
(autoload (quote ewoc-create) "ewoc" "\
@@ -10416,7 +10436,8 @@ file modes.
;;;***
;;;### (autoloads (expand-jump-to-next-slot expand-jump-to-previous-slot
-;;;;;; expand-add-abbrevs) "expand" "expand.el" (17888 32279))
+;;;;;; expand-abbrev-hook expand-add-abbrevs) "expand" "expand.el"
+;;;;;; (17963 20867))
;;; Generated autoloads from expand.el
(autoload (quote expand-add-abbrevs) "expand" "\
@@ -10443,6 +10464,12 @@ If ARG is omitted, point is placed at the end of the expanded text.
\(fn TABLE ABBREVS)" nil nil)
+(autoload (quote expand-abbrev-hook) "expand" "\
+Abbrev hook used to do the expansion job of expand abbrevs.
+See `expand-add-abbrevs'. Value is non-nil if expansion was done.
+
+\(fn)" nil nil)
+
(autoload (quote expand-jump-to-previous-slot) "expand" "\
Move the cursor to the previous slot in the last abbrev expansion.
This is used only in conjunction with `expand-add-abbrevs'.
@@ -11317,7 +11344,7 @@ Not documented
;;;***
;;;### (autoloads (flymake-mode-off flymake-mode-on flymake-mode)
-;;;;;; "flymake" "progmodes/flymake.el" (17888 36581))
+;;;;;; "flymake" "progmodes/flymake.el" (17963 21005))
;;; Generated autoloads from progmodes/flymake.el
(autoload (quote flymake-mode) "flymake" "\
@@ -11341,7 +11368,7 @@ Turn flymake mode off.
;;;### (autoloads (flyspell-buffer flyspell-region flyspell-mode-off
;;;;;; turn-off-flyspell turn-on-flyspell flyspell-mode flyspell-prog-mode)
-;;;;;; "flyspell" "textmodes/flyspell.el" (17888 32281))
+;;;;;; "flyspell" "textmodes/flyspell.el" (17963 20998))
;;; Generated autoloads from textmodes/flyspell.el
(autoload (quote flyspell-prog-mode) "flyspell" "\
@@ -11679,7 +11706,7 @@ and choose the directory as the fortune-file.
;;;***
;;;### (autoloads (gdb-enable-debug gdba) "gdb-ui" "progmodes/gdb-ui.el"
-;;;;;; (17963 18447))
+;;;;;; (17963 21011))
;;; Generated autoloads from progmodes/gdb-ui.el
(autoload (quote gdba) "gdb-ui" "\
@@ -11831,7 +11858,7 @@ at places they belong to.
;;;***
;;;### (autoloads (gmm-tool-bar-from-list gmm-widget-p gmm-error
-;;;;;; gmm-message) "gmm-utils" "gnus/gmm-utils.el" (17888 32279))
+;;;;;; gmm-message) "gmm-utils" "gnus/gmm-utils.el" (17963 21006))
;;; Generated autoloads from gnus/gmm-utils.el
(autoload (quote gmm-message) "gmm-utils" "\
@@ -11862,7 +11889,7 @@ Within each entry of ICON-LIST, the first element is a menu
command, the second element is an icon file name and the third
element is a test function. You can use \\[describe-key]
<menu-entry> to find out the name of a menu command. The fourth
-and all following elements are passed a the PROPS argument to the
+and all following elements are passed as the PROPS argument to the
function `tool-bar-local-item'.
If ZAP-LIST is a list, remove those item from the default
@@ -12022,7 +12049,7 @@ If CLEAN, obsolete (ignore).
;;;***
;;;### (autoloads (gnus-article-prepare-display) "gnus-art" "gnus/gnus-art.el"
-;;;;;; (17888 36581))
+;;;;;; (17963 21004))
;;; Generated autoloads from gnus/gnus-art.el
(autoload (quote gnus-article-prepare-display) "gnus-art" "\
@@ -12373,7 +12400,7 @@ Update the .newsrc.eld file to reflect the change of nntp server.
;;;***
;;;### (autoloads (gnus-button-reply gnus-button-mailto gnus-msg-mail)
-;;;;;; "gnus-msg" "gnus/gnus-msg.el" (17888 32279))
+;;;;;; "gnus-msg" "gnus/gnus-msg.el" (17963 21010))
;;; Generated autoloads from gnus/gnus-msg.el
(autoload (quote gnus-msg-mail) "gnus-msg" "\
@@ -12510,7 +12537,7 @@ Add NUM into sorted LIST by side effect.
;;;***
;;;### (autoloads (gnus-registry-install-hooks gnus-registry-initialize)
-;;;;;; "gnus-registry" "gnus/gnus-registry.el" (17888 32279))
+;;;;;; "gnus-registry" "gnus/gnus-registry.el" (17963 21006))
;;; Generated autoloads from gnus/gnus-registry.el
(autoload (quote gnus-registry-initialize) "gnus-registry" "\
@@ -12613,7 +12640,7 @@ Add the window configuration CONF to `gnus-buffer-configuration'.
;;;***
-;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (17888 32280))
+;;;### (autoloads (gomoku) "gomoku" "play/gomoku.el" (17963 21010))
;;; Generated autoloads from play/gomoku.el
(autoload (quote gomoku) "gomoku" "\
@@ -12713,10 +12740,10 @@ The default find program for `grep-find-command'.
This variable's value takes effect when `grep-compute-defaults' is called.")
(defvar grep-find-use-xargs nil "\
-Whether \\[grep-find] uses the `xargs' utility by default.
-
-If `exec', it uses `find -exec'; if `gnu', it uses `find -print0' and `xargs -0';
-if not nil and not `gnu', it uses `find -print' and `xargs'.
+Non-nil means that `grep-find' uses the `xargs' utility by default.
+If `exec', use `find -exec'.
+If `gnu', use `find -print0' and `xargs -0'.
+Any other non-nil value means to use `find -print' and `xargs'.
This variable's value takes effect when `grep-compute-defaults' is called.")
@@ -12824,7 +12851,7 @@ the form \"WINDOW-ID PIXMAP-ID\". Value is non-nil if successful.
;;;***
;;;### (autoloads (gdb-script-mode jdb pdb perldb xdb dbx sdb gdb)
-;;;;;; "gud" "progmodes/gud.el" (17963 19063))
+;;;;;; "gud" "progmodes/gud.el" (17963 21011))
;;; Generated autoloads from progmodes/gud.el
(autoload (quote gdb) "gud" "\
@@ -13535,8 +13562,8 @@ how the hiding is done:
;;;***
-;;;### (autoloads (hs-minor-mode) "hideshow" "progmodes/hideshow.el"
-;;;;;; (17963 19041))
+;;;### (autoloads (turn-off-hideshow hs-minor-mode) "hideshow" "progmodes/hideshow.el"
+;;;;;; (17963 21006))
;;; Generated autoloads from progmodes/hideshow.el
(defvar hs-special-modes-alist (quote ((c-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) (c++-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning) (bibtex-mode ("^@\\S(*\\(\\s(\\)" 1)) (java-mode "{" "}" "/[*/]" nil hs-c-like-adjust-block-beginning))) "\
@@ -13588,6 +13615,11 @@ Key bindings:
\(fn &optional ARG)" t nil)
+(autoload (quote turn-off-hideshow) "hideshow" "\
+Unconditionally turn off `hs-minor-mode'.
+
+\(fn)" nil nil)
+
;;;***
;;;### (autoloads (global-highlight-changes highlight-compare-with-file
@@ -14545,7 +14577,7 @@ with no args, if that value is non-nil.
;;;***
;;;### (autoloads (idlwave-shell) "idlw-shell" "progmodes/idlw-shell.el"
-;;;;;; (17888 37036))
+;;;;;; (17963 21008))
;;; Generated autoloads from progmodes/idlw-shell.el
(autoload (quote idlwave-shell) "idlw-shell" "\
@@ -14571,7 +14603,7 @@ See also the variable `idlwave-shell-prompt-pattern'.
;;;***
;;;### (autoloads (idlwave-mode) "idlwave" "progmodes/idlwave.el"
-;;;;;; (17888 36588))
+;;;;;; (17963 21008))
;;; Generated autoloads from progmodes/idlwave.el
(autoload (quote idlwave-mode) "idlwave" "\
@@ -14707,7 +14739,7 @@ The main features of this mode are
;;;;;; ido-find-file-in-dir ido-switch-buffer-other-frame ido-insert-buffer
;;;;;; ido-kill-buffer ido-display-buffer ido-switch-buffer-other-window
;;;;;; ido-switch-buffer ido-mode ido-mode) "ido" "ido.el" (17963
-;;;;;; 19298))
+;;;;;; 21001))
;;; Generated autoloads from ido.el
(defvar ido-mode nil "\
@@ -15501,7 +15533,7 @@ of `inferior-lisp-program'). Runs the hooks from
;;;### (autoloads (Info-speedbar-browser Info-goto-emacs-key-command-node
;;;;;; Info-goto-emacs-command-node Info-mode info-apropos Info-index
;;;;;; Info-directory Info-on-current-buffer info-standalone info-emacs-manual
-;;;;;; info info-other-window) "info" "info.el" (17888 36929))
+;;;;;; info info-other-window) "info" "info.el" (17963 21008))
;;; Generated autoloads from info.el
(autoload (quote info-other-window) "info" "\
@@ -16612,7 +16644,7 @@ Not documented
;;;***
;;;### (autoloads (lm lm-test-run) "landmark" "play/landmark.el"
-;;;;;; (17888 32280))
+;;;;;; (17963 21010))
;;; Generated autoloads from play/landmark.el
(defalias (quote landmark-repeat) (quote lm-test-run))
@@ -17148,8 +17180,8 @@ This function is suitable for execution in a .emacs file.
;;;***
-;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (17888
-;;;;;; 32281))
+;;;### (autoloads (m4-mode) "m4-mode" "progmodes/m4-mode.el" (17963
+;;;;;; 20866))
;;; Generated autoloads from progmodes/m4-mode.el
(autoload (quote m4-mode) "m4-mode" "\
@@ -17593,7 +17625,7 @@ Previous contents of that buffer are killed first.
;;;***
-;;;### (autoloads (man-follow man) "man" "man.el" (17888 32280))
+;;;### (autoloads (man-follow man) "man" "man.el" (17963 20867))
;;; Generated autoloads from man.el
(defalias (quote manual-entry) (quote man))
@@ -17678,7 +17710,7 @@ turn on menu bars; otherwise, turn off menu bars.
;;;;;; message-cite-function message-yank-prefix message-citation-line-function
;;;;;; message-send-mail-function message-user-organization-file
;;;;;; message-signature-separator message-from-style) "message"
-;;;;;; "gnus/message.el" (17963 18449))
+;;;;;; "gnus/message.el" (17963 20999))
;;; Generated autoloads from gnus/message.el
(defvar message-from-style (quote default) "\
@@ -17816,7 +17848,9 @@ M-RET `message-newline-and-reformat' (break the line and reformat).
(autoload (quote message-mail) "message" "\
Start editing a mail message to be sent.
-OTHER-HEADERS is an alist of header/value pairs.
+OTHER-HEADERS is an alist of header/value pairs. CONTINUE says whether
+to continue editing a message already being composed. SWITCH-FUNCTION
+is a function used to switch to and display the mail buffer.
\(fn &optional TO SUBJECT OTHER-HEADERS CONTINUE SWITCH-FUNCTION YANK-ACTION SEND-ACTIONS)" t nil)
@@ -18976,7 +19010,7 @@ Open a network connection to HOST on PORT.
;;;;;; uncomment-region comment-kill comment-set-column comment-indent
;;;;;; comment-indent-default comment-normalize-vars comment-multi-line
;;;;;; comment-padding comment-style comment-column) "newcomment"
-;;;;;; "newcomment.el" (17888 32280))
+;;;;;; "newcomment.el" (17963 21008))
;;; Generated autoloads from newcomment.el
(defalias (quote indent-for-comment) (quote comment-indent))
@@ -19507,7 +19541,7 @@ The Custom feature is intended to make this obsolete.
;;;;;; org-remember-handler org-remember org-remember-apply-template
;;;;;; org-remember-annotation org-store-link orgtbl-mode turn-on-orgtbl
;;;;;; org-global-cycle org-cycle org-mode) "org" "textmodes/org.el"
-;;;;;; (17963 19299))
+;;;;;; (17963 20865))
;;; Generated autoloads from textmodes/org.el
(autoload (quote org-mode) "org" "\
@@ -21663,7 +21697,7 @@ If EXTENSION is any other symbol, it is ignored.
;;;***
;;;### (autoloads (jython-mode python-mode run-python) "python" "progmodes/python.el"
-;;;;;; (17963 19313))
+;;;;;; (17963 20999))
;;; Generated autoloads from progmodes/python.el
(add-to-list (quote interpreter-mode-alist) (quote ("jython" . jython-mode)))
@@ -22122,7 +22156,7 @@ Construct a regexp interactively.
;;;***
-;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (17888 32281))
+;;;### (autoloads (recentf-mode) "recentf" "recentf.el" (17963 20999))
;;; Generated autoloads from recentf.el
(defvar recentf-mode nil "\
@@ -22295,7 +22329,7 @@ refilling if they would cause auto-filling.
;;;***
;;;### (autoloads (reftex-reset-scanning-information reftex-mode
-;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (17888 32281))
+;;;;;; turn-on-reftex) "reftex" "textmodes/reftex.el" (17963 20865))
;;; Generated autoloads from textmodes/reftex.el
(autoload (quote turn-on-reftex) "reftex" "\
@@ -22345,7 +22379,7 @@ This enforces rescanning the buffer on next use.
;;;***
;;;### (autoloads (reftex-citation) "reftex-cite" "textmodes/reftex-cite.el"
-;;;;;; (17888 32281))
+;;;;;; (17963 20865))
;;; Generated autoloads from textmodes/reftex-cite.el
(autoload (quote reftex-citation) "reftex-cite" "\
@@ -22375,7 +22409,7 @@ While entering the regexp, completion on knows citation keys is possible.
;;;***
;;;### (autoloads (reftex-isearch-minor-mode) "reftex-global" "textmodes/reftex-global.el"
-;;;;;; (17888 32281))
+;;;;;; (17963 20865))
;;; Generated autoloads from textmodes/reftex-global.el
(autoload (quote reftex-isearch-minor-mode) "reftex-global" "\
@@ -22392,7 +22426,7 @@ With no argument, this command toggles
;;;***
;;;### (autoloads (reftex-index-phrases-mode) "reftex-index" "textmodes/reftex-index.el"
-;;;;;; (17888 32281))
+;;;;;; (17963 20865))
;;; Generated autoloads from textmodes/reftex-index.el
(autoload (quote reftex-index-phrases-mode) "reftex-index" "\
@@ -22425,7 +22459,7 @@ Here are all local bindings.
;;;***
;;;### (autoloads (reftex-all-document-files) "reftex-parse" "textmodes/reftex-parse.el"
-;;;;;; (17888 32281))
+;;;;;; (17963 20865))
;;; Generated autoloads from textmodes/reftex-parse.el
(autoload (quote reftex-all-document-files) "reftex-parse" "\
@@ -22437,8 +22471,8 @@ of master file.
;;;***
-;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (17888
-;;;;;; 32281))
+;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (17963
+;;;;;; 20865))
;;; Generated autoloads from textmodes/reftex-vars.el
(put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
(put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
@@ -22666,7 +22700,7 @@ variable.
;;;;;; rmail-highlight-face rmail-highlighted-headers rmail-retry-ignored-headers
;;;;;; rmail-displayed-headers rmail-ignored-headers rmail-dont-reply-to-names
;;;;;; rmail-movemail-variant-p) "rmail" "mail/rmail.el" (17963
-;;;;;; 18438))
+;;;;;; 21010))
;;; Generated autoloads from mail/rmail.el
(autoload (quote rmail-movemail-variant-p) "rmail" "\
@@ -23961,16 +23995,16 @@ Like Text Mode but with these additional commands:
\\[mail-send-and-exit] mail-send-and-exit (send the message and exit)
Here are commands that move to a header field (and create it if there isn't):
- \\[mail-to] move to To: \\[mail-subject] move to Subject:
- \\[mail-cc] move to CC: \\[mail-bcc] move to BCC:
+ \\[mail-to] move to To: \\[mail-subject] move to Subj:
+ \\[mail-bcc] move to BCC: \\[mail-cc] move to CC:
\\[mail-fcc] move to FCC: \\[mail-reply-to] move to Reply-To:
\\[mail-mail-reply-to] move to Mail-Reply-To:
\\[mail-mail-followup-to] move to Mail-Followup-To:
-\\[mail-text] mail-text (move to beginning of message text).
+\\[mail-text] move to message text.
\\[mail-signature] mail-signature (insert `mail-signature-file' file).
\\[mail-yank-original] mail-yank-original (insert current message, in Rmail).
\\[mail-fill-yanked-message] mail-fill-yanked-message (fill what was yanked).
-\\[mail-sent-via] mail-sent-via (add a Sent-via field for each To or CC).
+\\[mail-sent-via] mail-sent-via (add a sent-via field for each To or CC).
Turning on Mail mode runs the normal hooks `text-mode-hook' and
`mail-mode-hook' (in that order).
@@ -24445,7 +24479,7 @@ Turning on Sieve mode runs `sieve-mode-hook'.
;;;***
-;;;### (autoloads nil "simple" "simple.el" (17963 19313))
+;;;### (autoloads nil "simple" "simple.el" (17963 21011))
;;; Generated autoloads from simple.el
(put 'fill-prefix 'safe-local-variable 'string-or-null-p)
@@ -24648,7 +24682,7 @@ interactively. If there's no argument, do it at the current buffer
;;;***
;;;### (autoloads (smtpmail-send-queued-mail smtpmail-send-it) "smtpmail"
-;;;;;; "mail/smtpmail.el" (17888 36928))
+;;;;;; "mail/smtpmail.el" (17963 21010))
;;; Generated autoloads from mail/smtpmail.el
(autoload (quote smtpmail-send-it) "smtpmail" "\
@@ -25708,7 +25742,7 @@ Studlify-case the current buffer.
;;;***
-;;;### (autoloads (locate-library) "subr" "subr.el" (17963 19313))
+;;;### (autoloads (locate-library) "subr" "subr.el" (17963 21011))
;;; Generated autoloads from subr.el
(autoload (quote locate-library) "subr" "\
@@ -25762,7 +25796,7 @@ before, and `sc-post-hook' is run after the guts of this function.
;;;***
-;;;### (autoloads (t-mouse-mode) "t-mouse" "t-mouse.el" (17963 19313))
+;;;### (autoloads (t-mouse-mode) "t-mouse" "t-mouse.el" (17963 21011))
;;; Generated autoloads from t-mouse.el
(defvar t-mouse-mode nil "\
@@ -26591,7 +26625,7 @@ subprocess started.
;;;***
;;;### (autoloads (testcover-this-defun) "testcover" "emacs-lisp/testcover.el"
-;;;;;; (17888 32279))
+;;;;;; (17963 20867))
;;; Generated autoloads from emacs-lisp/testcover.el
(autoload (quote testcover-this-defun) "testcover" "\
@@ -26601,7 +26635,7 @@ Start coverage on function under point.
;;;***
-;;;### (autoloads (tetris) "tetris" "play/tetris.el" (17963 18455))
+;;;### (autoloads (tetris) "tetris" "play/tetris.el" (17963 21010))
;;; Generated autoloads from play/tetris.el
(autoload (quote tetris) "tetris" "\
@@ -27577,7 +27611,7 @@ relative only to the time worked today, and not to past time.
;;;### (autoloads (with-timeout run-with-idle-timer add-timeout run-with-timer
;;;;;; run-at-time cancel-function-timers cancel-timer) "timer"
-;;;;;; "emacs-lisp/timer.el" (17888 32279))
+;;;;;; "emacs-lisp/timer.el" (17963 21006))
;;; Generated autoloads from emacs-lisp/timer.el
(defalias (quote disable-timeout) (quote cancel-timer))
@@ -27597,11 +27631,16 @@ and idle timers such as are scheduled by `run-with-idle-timer'.
(autoload (quote run-at-time) "timer" "\
Perform an action at time TIME.
Repeat the action every REPEAT seconds, if REPEAT is non-nil.
-TIME should be a string like \"11:23pm\", nil meaning now, a number of seconds
-from now, a value from `current-time', or t (with non-nil REPEAT)
-meaning the next integral multiple of REPEAT.
-REPEAT may be an integer or floating point number.
-The action is to call FUNCTION with arguments ARGS.
+TIME should be one of: a string giving an absolute time like
+\"11:23pm\" (the acceptable formats are those recognized by
+`diary-entry-time'; note that such times are interpreted as times
+today, even if in the past); a string giving a relative time like
+\"2 hours 35 minutes\" (the acceptable formats are those
+recognized by `timer-duration'); nil meaning now; a number of
+seconds from now; a value from `encode-time'; or t (with non-nil
+REPEAT) meaning the next integral multiple of REPEAT. REPEAT may
+be an integer or floating point number. The action is to call
+FUNCTION with arguments ARGS.
This function returns a timer object which you can use in `cancel-timer'.
@@ -27700,7 +27739,7 @@ PATTERN regexp.
;;;***
;;;### (autoloads (tmm-prompt tmm-menubar-mouse tmm-menubar) "tmm"
-;;;;;; "tmm.el" (17888 32281))
+;;;;;; "tmm.el" (17963 21011))
;;; Generated autoloads from tmm.el
(define-key global-map "\M-`" 'tmm-menubar)
(define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse)
@@ -27972,7 +28011,7 @@ BUFFER defaults to `trace-buffer'.
;;;### (autoloads (tramp-unload-tramp tramp-completion-handle-file-name-completion
;;;;;; tramp-completion-handle-file-name-all-completions tramp-unload-file-name-handlers
;;;;;; tramp-file-name-handler tramp-completion-file-name-regexp
-;;;;;; tramp-file-name-regexp) "tramp" "net/tramp.el" (17963 19047))
+;;;;;; tramp-file-name-regexp) "tramp" "net/tramp.el" (17963 21006))
;;; Generated autoloads from net/tramp.el
(defvar tramp-unified-filenames (not (featurep (quote xemacs))) "\
@@ -28056,11 +28095,15 @@ Falls back to normal file name handler if no tramp file name handler exists.
Invoke tramp file name completion handler.
Falls back to normal file name handler if no tramp file name handler exists." (let ((fn (assoc operation tramp-completion-file-name-handler-alist))) (if fn (save-match-data (apply (cdr fn) args)) (tramp-completion-run-real-handler operation args))))
-(defsubst tramp-register-file-name-handlers nil "\
-Add tramp file name handlers to `file-name-handler-alist'." (add-to-list (quote file-name-handler-alist) (cons tramp-file-name-regexp (quote tramp-file-name-handler))) (when (or (not (boundp (quote partial-completion-mode))) (symbol-value (quote partial-completion-mode)) (featurep (quote ido))) (add-to-list (quote file-name-handler-alist) (cons tramp-completion-file-name-regexp (quote tramp-completion-file-name-handler))) (put (quote tramp-completion-file-name-handler) (quote safe-magic) t)) (let ((jka (rassoc (quote jka-compr-handler) file-name-handler-alist))) (when jka (setq file-name-handler-alist (cons jka (delete jka file-name-handler-alist))))))
+(defsubst tramp-register-file-name-handler nil "\
+Add tramp file name handler to `file-name-handler-alist'." (add-to-list (quote file-name-handler-alist) (cons tramp-file-name-regexp (quote tramp-file-name-handler))) (let ((jka (rassoc (quote jka-compr-handler) file-name-handler-alist))) (when jka (setq file-name-handler-alist (cons jka (delete jka file-name-handler-alist))))))
+
+(defsubst tramp-register-completion-file-name-handler nil "\
+Add tramp completion file name handler to `file-name-handler-alist'." (when (or (not (boundp (quote partial-completion-mode))) (symbol-value (quote partial-completion-mode)) (featurep (quote ido))) (add-to-list (quote file-name-handler-alist) (cons tramp-completion-file-name-regexp (quote tramp-completion-file-name-handler))) (put (quote tramp-completion-file-name-handler) (quote safe-magic) t)) (let ((jka (rassoc (quote jka-compr-handler) file-name-handler-alist))) (when jka (setq file-name-handler-alist (cons jka (delete jka file-name-handler-alist))))))
+(tramp-register-file-name-handler)
(add-hook
'after-init-hook
- '(lambda () (tramp-register-file-name-handlers)))
+ '(lambda () (tramp-register-completion-file-name-handler)))
(autoload (quote tramp-unload-file-name-handlers) "tramp" "\
Not documented
@@ -28774,7 +28817,7 @@ Not documented
;;;***
;;;### (autoloads (url-http-options url-http-file-attributes url-http-file-exists-p
-;;;;;; url-http) "url-http" "url/url-http.el" (17888 36646))
+;;;;;; url-http) "url-http" "url/url-http.el" (17963 21008))
;;; Generated autoloads from url/url-http.el
(autoload (quote url-http) "url-http" "\
@@ -29487,7 +29530,7 @@ colors. `vc-annotate-background' specifies the background color.
;;;***
-;;;### (autoloads nil "vc-arch" "vc-arch.el" (17888 32281))
+;;;### (autoloads nil "vc-arch" "vc-arch.el" (17963 20999))
;;; Generated autoloads from vc-arch.el
(defun vc-arch-registered (file)
(if (vc-find-root file "{arch}/=tagging-method")
@@ -29518,7 +29561,7 @@ colors. `vc-annotate-background' specifies the background color.
;;;***
;;;### (autoloads (vc-rcs-master-templates) "vc-rcs" "vc-rcs.el"
-;;;;;; (17888 32281))
+;;;;;; (17963 20867))
;;; Generated autoloads from vc-rcs.el
(defvar vc-rcs-master-templates (quote ("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) "\
@@ -30208,8 +30251,8 @@ Not documented
;;;### (autoloads (View-exit-and-edit view-mode-enter view-mode view-buffer-other-frame
;;;;;; view-buffer-other-window view-buffer view-file-other-frame
-;;;;;; view-file-other-window view-file) "view" "view.el" (17888
-;;;;;; 32281))
+;;;;;; view-file-other-window view-file) "view" "view.el" (17963
+;;;;;; 20999))
;;; Generated autoloads from view.el
(defvar view-mode nil "\
@@ -30372,7 +30415,7 @@ p searches backward for last regular expression.
\\[View-leave] quit View mode and maybe switch buffers, but don't kill this buffer.
\\[View-kill-and-leave] quit View mode, kill current buffer and go back to other buffer.
-The effect of \\[View-leave] , \\[View-quit] and \\[View-kill-and-leave] depends on how view-mode was entered. If it was
+The effect of \\[View-leave], \\[View-quit] and \\[View-kill-and-leave] depends on how view-mode was entered. If it was
entered by view-file, view-file-other-window, view-file-other-frame, or
\\[dired-view-file] (\\[view-file], \\[view-file-other-window],
\\[view-file-other-frame], or the Dired mode v command),
@@ -30380,7 +30423,7 @@ then \\[View-quit] will try to kill the current buffer.
If view-mode was entered from another buffer, by \\[view-buffer],
\\[view-buffer-other-window], \\[view-buffer-other frame], \\[view-file],
\\[view-file-other-window], or \\[view-file-other-frame],
-then \\[View-leave] , \\[View-quit] and \\[View-kill-and-leave] will return to that buffer.
+then \\[View-leave], \\[View-quit] and \\[View-kill-and-leave] will return to that buffer.
Entry to view-mode runs the normal hook `view-mode-hook'.
@@ -30435,7 +30478,7 @@ Turn on VIP emulation of VI.
;;;***
;;;### (autoloads (viper-mode toggle-viper-mode) "viper" "emulation/viper.el"
-;;;;;; (17888 32279))
+;;;;;; (17963 20865))
;;; Generated autoloads from emulation/viper.el
(autoload (quote toggle-viper-mode) "viper" "\
@@ -30452,7 +30495,7 @@ Turn on Viper emulation of Vi in Emacs. See Info node `(viper)Top'.
;;;***
;;;### (autoloads (warn lwarn display-warning) "warnings" "emacs-lisp/warnings.el"
-;;;;;; (17888 32279))
+;;;;;; (17963 21006))
;;; Generated autoloads from emacs-lisp/warnings.el
(defvar warning-prefix-function nil "\
@@ -30499,8 +30542,9 @@ Default is :warning.
but raise suspicion of a possible problem.
:debug -- info for debugging only.
-BUFFER-NAME, if specified, is the name of the buffer for logging the
-warning. By default, it is `*Warnings*'.
+BUFFER-NAME, if specified, is the name of the buffer for logging
+the warning. By default, it is `*Warnings*'. If this function
+has to create the buffer, it disables undo in the buffer.
See the `warnings' custom group for user customization features.
@@ -30607,7 +30651,7 @@ and off otherwise.
;;;;;; whitespace-buffer whitespace-toggle-ateol-check whitespace-toggle-spacetab-check
;;;;;; whitespace-toggle-indent-check whitespace-toggle-trailing-check
;;;;;; whitespace-toggle-leading-check) "whitespace" "whitespace.el"
-;;;;;; (17888 32281))
+;;;;;; (17963 20867))
;;; Generated autoloads from whitespace.el
(autoload (quote whitespace-toggle-leading-check) "whitespace" "\
@@ -30843,7 +30887,7 @@ With arg, turn Winner mode on if and only if arg is positive.
;;;***
;;;### (autoloads (woman-find-file woman-dired-find-file woman) "woman"
-;;;;;; "woman.el" (17963 19299))
+;;;;;; "woman.el" (17963 21006))
;;; Generated autoloads from woman.el
(autoload (quote woman) "woman" "\
@@ -31017,8 +31061,8 @@ If PARSE-NS is non-nil, then QNAMES are expanded.
;;;***
-;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (17888
-;;;;;; 32281))
+;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (17963
+;;;;;; 21011))
;;; Generated autoloads from xt-mouse.el
(defvar xterm-mouse-mode nil "\
@@ -31088,7 +31132,7 @@ Zippy goes to the analyst.
;;;***
-;;;### (autoloads (zone) "zone" "play/zone.el" (17888 32281))
+;;;### (autoloads (zone) "zone" "play/zone.el" (17963 21010))
;;; Generated autoloads from play/zone.el
(autoload (quote zone) "zone" "\
@@ -31228,7 +31272,7 @@ Zone out, completely.
;;;;;; "url/url-vars.el" "url/vc-dav.el" "vc-hooks.el" "vcursor.el"
;;;;;; "version.el" "vms-patch.el" "vmsproc.el" "vt-control.el"
;;;;;; "vt100-led.el" "w32-fns.el" "w32-vars.el" "widget.el" "window.el"
-;;;;;; "x-dnd.el") (17963 20717 345010))
+;;;;;; "x-dnd.el") (17963 21179 886390))
;;;***
diff --git a/lisp/loadhist.el b/lisp/loadhist.el
index 39d51a280f5..84a865573af 100644
--- a/lisp/loadhist.el
+++ b/lisp/loadhist.el
@@ -111,17 +111,18 @@ A library name is equivalent to the file name that `load-library' would load."
(setq dependents (cons (car x) dependents))))
dependents))
-(defun read-feature (prompt)
- "Read a feature name \(string\) from the minibuffer.
-Prompt with PROMPT and completing from `features', and
-return the feature \(symbol\)."
- (intern (completing-read prompt
- (mapcar (lambda (feature)
- (list (symbol-name feature)))
- features)
- ;; Complete only features loaded from a file
- #'(lambda (f) (feature-file (intern (car f))))
- t)))
+(defun read-feature (prompt &optional loaded-p)
+ "Read feature name from the minibuffer, prompting with string PROMPT.
+If optional second arg LOADED-P is non-nil, the feature must be loaded
+from a file."
+ (intern
+ (completing-read prompt
+ (cons nil features)
+ (and loaded-p
+ #'(lambda (f)
+ (and f ; ignore nil
+ (feature-file f))))
+ loaded-p)))
(defvaralias 'loadhist-hook-functions 'unload-feature-special-hooks)
(defvar unload-feature-special-hooks
@@ -162,7 +163,10 @@ the package's feature list (before anything is unbound) in the
variable `unload-hook-features-list' and could remove features from it
in the event that the package has done something normally-ill-advised,
such as redefining an Emacs function."
- (interactive (list (read-feature "Feature: ") current-prefix-arg))
+ (interactive
+ (list
+ (read-feature "Unload feature: " t)
+ current-prefix-arg))
(unless (featurep feature)
(error "%s is not a currently loaded feature" (symbol-name feature)))
(unless force
diff --git a/lisp/mail/footnote.el b/lisp/mail/footnote.el
index 2dd2e7af175..7992438df25 100644
--- a/lisp/mail/footnote.el
+++ b/lisp/mail/footnote.el
@@ -267,14 +267,17 @@ Wrapping around the alphabet implies successive repetitions of letters."
;; Latin-1
-(defconst footnote-latin-regexp "¹²³ºª§¶"
+(defconst footnote-latin-string "¹²³ºª§¶"
+ "String of Latin-1 footnoting characters.")
+
+(defconst footnote-latin-regexp (concat "[" footnote-latin-string "]")
"Regexp for Latin-1 footnoting characters.")
(defun Footnote-latin (n)
"Latin-1 footnote style.
Use a range of Latin-1 non-ASCII characters for footnoting."
- (string (aref footnote-latin-regexp
- (mod (1- n) (length footnote-latin-regexp)))))
+ (string (aref footnote-latin-string
+ (mod (1- n) (length footnote-latin-string)))))
;;; list of all footnote styles
(defvar footnote-style-alist
@@ -291,14 +294,18 @@ See footnote-han.el, footnote-greek.el and footnote-hebrew.el for more
exciting styles.")
(defcustom footnote-style 'numeric
- "*Style used for footnoting.
+ "*Default style used for footnoting.
numeric == 1, 2, 3, ...
english-lower == a, b, c, ...
english-upper == A, B, C, ...
roman-lower == i, ii, iii, iv, v, ...
roman-upper == I, II, III, IV, V, ...
latin == ¹ ² ³ º ª § ¶
-See also variables `footnote-start-tag' and `footnote-end-tag'."
+See also variables `footnote-start-tag' and `footnote-end-tag'.
+
+Customizing this variable has no effect on buffers already
+displaying footnotes. You can change the style of existing
+buffers using the command `Footnote-set-style'."
:type (cons 'choice (mapcar (lambda (x) (list 'const (car x)))
footnote-style-alist))
:group 'footnote)
@@ -654,7 +661,7 @@ delete the footnote with that number."
(while (< i notes)
(setq alist-ptr (nth i footnote-pointer-marker-alist))
(setq alist-txt (nth i footnote-text-marker-alist))
- (unless (eq (1+ i) (car alist-ptr))
+ (unless (= (1+ i) (car alist-ptr))
(Footnote-renumber (car alist-ptr) (1+ i) alist-ptr alist-txt))
(setq i (1+ i))))))
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 5e534b2d47d..bfdd5048877 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -1959,9 +1959,13 @@ is non-nil if the user has supplied the password interactively.
(base64-header-field-end
(save-excursion
(goto-char start)
- (re-search-forward
- "^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*"
- header-end t))))
+ (and (re-search-forward
+ "^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*"
+ header-end t)
+ ;; Don't try to decode non-text data.
+ (re-search-forward
+ "^content-type:\\(\n?[\t ]\\)\\(text\\|message\\)/"
+ header-end t)))))
(if quoted-printable-header-field-end
(save-excursion
(unless
@@ -2061,10 +2065,16 @@ is non-nil if the user has supplied the password interactively.
"^content-transfer-encoding:\\(\n?[\t ]\\)*quoted-printable\\(\n?[\t ]\\)*"
header-end t)))
(base64-header-field-end
- (save-excursion
- (re-search-forward
- "^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*"
- header-end t)))
+ (and
+ (save-excursion
+ (re-search-forward
+ "^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*"
+ header-end t))
+ ;; Don't decode non-text data.
+ (save-excursion
+ (re-search-forward
+ "^content-type:\\(\n?[\t ]\\)\\(text\\|message\\)/"
+ header-end t))))
(size
;; Get the numeric value from the Content-Length field.
(save-excursion
diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el
index 2bb1a6ed0fa..c0fcdf8ff43 100644
--- a/lisp/mail/sendmail.el
+++ b/lisp/mail/sendmail.el
@@ -620,16 +620,16 @@ Like Text Mode but with these additional commands:
\\[mail-send-and-exit] mail-send-and-exit (send the message and exit)
Here are commands that move to a header field (and create it if there isn't):
- \\[mail-to] move to To: \\[mail-subject] move to Subject:
- \\[mail-cc] move to CC: \\[mail-bcc] move to BCC:
+ \\[mail-to] move to To: \\[mail-subject] move to Subj:
+ \\[mail-bcc] move to BCC: \\[mail-cc] move to CC:
\\[mail-fcc] move to FCC: \\[mail-reply-to] move to Reply-To:
\\[mail-mail-reply-to] move to Mail-Reply-To:
\\[mail-mail-followup-to] move to Mail-Followup-To:
-\\[mail-text] mail-text (move to beginning of message text).
+\\[mail-text] move to message text.
\\[mail-signature] mail-signature (insert `mail-signature-file' file).
\\[mail-yank-original] mail-yank-original (insert current message, in Rmail).
\\[mail-fill-yanked-message] mail-fill-yanked-message (fill what was yanked).
-\\[mail-sent-via] mail-sent-via (add a Sent-via field for each To or CC).
+\\[mail-sent-via] mail-sent-via (add a sent-via field for each To or CC).
Turning on Mail mode runs the normal hooks `text-mode-hook' and
`mail-mode-hook' (in that order)."
(make-local-variable 'mail-reply-action)
@@ -1392,7 +1392,7 @@ Create a Mail-Followup-To field if none."
nil)))
(defun mail-text ()
- "Move point to beginning of message text."
+ "Move point to beginning of text field."
(interactive)
(expand-abbrev)
(goto-char (mail-text-start)))
diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el
index e1e742a1d72..66c4bdd8df7 100644
--- a/lisp/mail/smtpmail.el
+++ b/lisp/mail/smtpmail.el
@@ -691,20 +691,22 @@ This is relative to `smtpmail-queue-dir'.")
(>= (car response-code) 400))
(throw 'done nil)))
(dolist (line (cdr (cdr response-code)))
- (let ((name (mapcar (lambda (s) (intern (downcase s)))
- (split-string (substring line 4) "[ ]"))))
+ (let ((name
+ (with-case-table ascii-case-table
+ (mapcar (lambda (s) (intern (downcase s)))
+ (split-string (substring line 4) "[ ]")))))
(and (eq (length name) 1)
(setq name (car name)))
- (and name
+ (and name
(cond ((memq (if (consp name) (car name) name)
'(verb xvrb 8bitmime onex xone
- expn size dsn etrn
- enhancedstatuscodes
- help xusr
- auth=login auth starttls))
- (setq supported-extensions
- (cons name supported-extensions)))
- (smtpmail-warn-about-unknown-extensions
+ expn size dsn etrn
+ enhancedstatuscodes
+ help xusr
+ auth=login auth starttls))
+ (setq supported-extensions
+ (cons name supported-extensions)))
+ (smtpmail-warn-about-unknown-extensions
(message "Unknown extension %s" name)))))))
(if (and do-starttls
diff --git a/lisp/man.el b/lisp/man.el
index a6aced25e3d..0484c032e34 100644
--- a/lisp/man.el
+++ b/lisp/man.el
@@ -628,7 +628,14 @@ a new value."
(setq Man-support-local-filenames
(with-temp-buffer
(and (equal (condition-case nil
- (call-process manual-program nil t nil "--help")
+ (let ((default-directory
+ ;; Assure that `default-directory' exists
+ ;; and is readable.
+ (if (and (file-directory-p default-directory)
+ (file-readable-p default-directory))
+ default-directory
+ (expand-file-name "~/"))))
+ (call-process manual-program nil t nil "--help"))
(error nil))
0)
(progn
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index 9595fb941f1..023e5286815 100644
--- a/lisp/menu-bar.el
+++ b/lisp/menu-bar.el
@@ -1201,8 +1201,8 @@ mail status in mode line"))
'(menu-item "Compile..." compile
:help "Invoke compiler or Make, view compilation errors"))
(define-key menu-bar-tools-menu [grep]
- '(menu-item "Search Files (with grep)..." grep
- :help "Search files for strings or regexps (with grep)"))
+ '(menu-item "Search Files (Grep)..." grep
+ :help "Search files for strings or regexps (with Grep)"))
;; The "Help" menu items
diff --git a/lisp/mouse.el b/lisp/mouse.el
index 8e9d931c15c..94d19d99a21 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -1521,7 +1521,11 @@ This must be bound to a mouse drag event."
(with-current-buffer (window-buffer (posn-window posn))
(if (numberp (posn-point posn))
(setq beg (posn-point posn)))
- (move-overlay mouse-secondary-overlay beg (posn-point end)))))
+ (move-overlay mouse-secondary-overlay beg (posn-point end))
+ (x-set-selection
+ 'SECONDARY
+ (buffer-substring (overlay-start mouse-secondary-overlay)
+ (overlay-end mouse-secondary-overlay))))))
(defun mouse-drag-secondary (start-event)
"Set the secondary selection to the text that the mouse is dragged over.
diff --git a/lisp/net/tls.el b/lisp/net/tls.el
index 9de74ca19d4..cdbb7bef5a7 100644
--- a/lisp/net/tls.el
+++ b/lisp/net/tls.el
@@ -125,12 +125,17 @@ BUFFER is the buffer (or buffer-name) to associate with the process.
with any buffer
Third arg is name of the host to connect to, or its IP address.
Fourth arg PORT is an integer specifying a port to connect to."
- (let ((cmds tls-program) cmd done)
+ (let ((cmds tls-program)
+ (use-temp-buffer (null buffer))
+ process cmd done)
+ (if use-temp-buffer
+ (setq buffer (generate-new-buffer " TLS")))
(message "Opening TLS connection to `%s'..." host)
(while (and (not done) (setq cmd (pop cmds)))
(message "Opening TLS connection with `%s'..." cmd)
- (let* ((process-connection-type tls-process-connection-type)
- (process (start-process
+ (let ((process-connection-type tls-process-connection-type)
+ response)
+ (setq process (start-process
name buffer shell-file-name shell-command-switch
(format-spec
cmd
@@ -139,7 +144,6 @@ Fourth arg PORT is an integer specifying a port to connect to."
?p (if (integerp port)
(int-to-string port)
port)))))
- response)
(while (and process
(memq (process-status process) '(open run))
(save-excursion
@@ -155,6 +159,9 @@ Fourth arg PORT is an integer specifying a port to connect to."
(delete-process process))))
(message "Opening TLS connection to `%s'...%s"
host (if done "done" "failed"))
+ (when use-temp-buffer
+ (if done (set-process-buffer process nil))
+ (kill-buffer buffer))
done))
(provide 'tls)
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 7ff9b2d956b..20ac73d0f75 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -4422,10 +4422,20 @@ Falls back to normal file name handler if no tramp file name handler exists."
(tramp-completion-run-real-handler operation args)))))
;;;###autoload
-(defsubst tramp-register-file-name-handlers ()
- "Add tramp file name handlers to `file-name-handler-alist'."
+(defsubst tramp-register-file-name-handler ()
+ "Add tramp file name handler to `file-name-handler-alist'."
(add-to-list 'file-name-handler-alist
(cons tramp-file-name-regexp 'tramp-file-name-handler))
+ ;; If jka-compr is already loaded, move it to the front of
+ ;; `file-name-handler-alist'.
+ (let ((jka (rassoc 'jka-compr-handler file-name-handler-alist)))
+ (when jka
+ (setq file-name-handler-alist
+ (cons jka (delete jka file-name-handler-alist))))))
+
+;;;###autoload
+(defsubst tramp-register-completion-file-name-handler ()
+ "Add tramp completion file name handler to `file-name-handler-alist'."
;; `partial-completion-mode' is unknown in XEmacs. So we should
;; load it unconditionally there. In the GNU Emacs case, method/
;; user/host name completion shall be bound to `partial-completion-mode'.
@@ -4443,13 +4453,18 @@ Falls back to normal file name handler if no tramp file name handler exists."
(setq file-name-handler-alist
(cons jka (delete jka file-name-handler-alist))))))
+;; `tramp-file-name-handler' must be registered before evaluation of
+;; site-start and init files, because there might exist remote files
+;; already, f.e. files kept via recentf-mode.
+;;;###autoload(tramp-register-file-name-handler)
;; During autoload, it shall be checked whether
-;; `partial-completion-mode' is active. Therefore registering will be
-;; delayed.
+;; `partial-completion-mode' is active. Therefore registering of
+;; `tramp-completion-file-name-handler' will be delayed.
;;;###autoload(add-hook
;;;###autoload 'after-init-hook
-;;;###autoload '(lambda () (tramp-register-file-name-handlers)))
-(tramp-register-file-name-handlers)
+;;;###autoload '(lambda () (tramp-register-completion-file-name-handler)))
+(tramp-register-file-name-handler)
+(tramp-register-completion-file-name-handler)
;;;###autoload
(defun tramp-unload-file-name-handlers ()
diff --git a/lisp/newcomment.el b/lisp/newcomment.el
index 7fce0f7bde8..b0a166465fa 100644
--- a/lisp/newcomment.el
+++ b/lisp/newcomment.el
@@ -391,7 +391,9 @@ and raises an error or returns nil if NOERROR is non-nil."
pt (or limit (point-max)) nil nil
(list nil nil nil (nth 3 s) nil nil nil nil)
t)))
- (if (not (and (nth 8 s) (not (nth 3 s))))
+ (if (or (not (and (nth 8 s) (not (nth 3 s))))
+ ;; Make sure the comment starts after PT.
+ (< (nth 8 s) pt))
(unless noerror (error "No comment"))
;; We found the comment.
(let ((pos (point))
diff --git a/lisp/outline.el b/lisp/outline.el
index 579997754f2..d0c121a12c4 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -1000,7 +1000,8 @@ Stop at the first and last subheadings of a superior heading."
(error "No following same-level heading"))))))
(defun outline-get-next-sibling ()
- "Move to next heading of the same level, and return point or nil if none."
+ "Move to next heading of the same level, and return point.
+If there is no such heading, return nil."
(let ((level (funcall outline-level)))
(outline-next-visible-heading 1)
(while (and (not (eobp)) (> (funcall outline-level) level))
@@ -1026,15 +1027,18 @@ Stop at the first and last subheadings of a superior heading."
(error "No previous same-level heading"))))))
(defun outline-get-last-sibling ()
- "Move to previous heading of the same level, and return point or nil if none."
- (let ((level (funcall outline-level)))
+ "Move to previous heading of the same level, and return point.
+If there is no such heading, return nil."
+ (let ((opoint (point))
+ (level (funcall outline-level)))
(outline-previous-visible-heading 1)
- (while (and (> (funcall outline-level) level)
- (not (bobp)))
- (outline-previous-visible-heading 1))
- (if (< (funcall outline-level) level)
- nil
- (point))))
+ (when (and (/= (point) opoint) (outline-on-heading-p))
+ (while (and (> (funcall outline-level) level)
+ (not (bobp)))
+ (outline-previous-visible-heading 1))
+ (if (< (funcall outline-level) level)
+ nil
+ (point)))))
(defun outline-headers-as-kill (beg end)
"Save the visible outline headers in region at the start of the kill ring.
diff --git a/lisp/pcomplete.el b/lisp/pcomplete.el
index c4840059f64..c1da9fb9132 100644
--- a/lisp/pcomplete.el
+++ b/lisp/pcomplete.el
@@ -33,7 +33,6 @@
;; To use pcomplete with shell-mode, for example, you will need the
;; following in your .emacs file:
;;
-;; (load "pcmpl-auto")
;; (add-hook 'shell-mode-hook 'pcomplete-shell-setup)
;;
;; Most of the code below simply provides support mechanisms for
@@ -947,10 +946,9 @@ generate the completions list. This means that the hook
(unless (fboundp 'event-matches-key-specifier-p)
(defalias 'event-matches-key-specifier-p 'eq))
-(if (fboundp 'read-event)
- (defsubst pcomplete-read-event (&optional prompt)
- (read-event prompt))
- (defsubst pcomplete-read-event (&optional prompt)
+(defun pcomplete-read-event (&optional prompt)
+ (if (fboundp 'read-event)
+ (read-event prompt)
(aref (read-key-sequence prompt) 0)))
(unless (fboundp 'event-basic-type)
diff --git a/lisp/play/5x5.el b/lisp/play/5x5.el
index 5dad84fadc5..5cf0c37fb62 100644
--- a/lisp/play/5x5.el
+++ b/lisp/play/5x5.el
@@ -519,6 +519,8 @@ in progress because it is an animated attempt."
(y-or-n-p prompt)
t))
+(random t)
+
(provide '5x5)
;;; arch-tag: ec4dabd5-572d-41ea-b48c-ec5ce0d68fa9
diff --git a/lisp/play/animate.el b/lisp/play/animate.el
index 9bad228315a..9d180a5f338 100644
--- a/lisp/play/animate.el
+++ b/lisp/play/animate.el
@@ -189,5 +189,9 @@ You can specify the one's name by NAME; the default value is \"Sarah\"."
(animate-string "my sunshine" 18 34)
(animate-string "to stay!" 19 34))
+(random t)
+
+(provide 'animate)
+
;;; arch-tag: 275289a3-6ac4-41da-b527-a1147045392f
;;; animate.el ends here
diff --git a/lisp/play/dissociate.el b/lisp/play/dissociate.el
index 8f88bdb9788..1c0e89e7c7d 100644
--- a/lisp/play/dissociate.el
+++ b/lisp/play/dissociate.el
@@ -99,6 +99,8 @@ Default is 2."
(funcall search-function overlap opoint t))))))
(sit-for 0))))
+(random t)
+
(provide 'dissociate)
;;; arch-tag: 90d197d1-409b-45c5-a0b5-fbfb2e06334f
diff --git a/lisp/play/doctor.el b/lisp/play/doctor.el
index cd88b9cb315..4c3cc5b4ce8 100644
--- a/lisp/play/doctor.el
+++ b/lisp/play/doctor.el
@@ -1657,6 +1657,8 @@ Hack on previous word, setting global variable OWNER to correct result."
(defun doctor-chat () (doctor-type (doc$ chatlst)))
+(random t)
+
(provide 'doctor)
;; arch-tag: 579380f6-4902-4ea5-bccb-6339e30e1257
diff --git a/lisp/play/gomoku.el b/lisp/play/gomoku.el
index c05a46b90f6..8c04f254a0b 100644
--- a/lisp/play/gomoku.el
+++ b/lisp/play/gomoku.el
@@ -1209,6 +1209,8 @@ If the game is finished, this command requests for another game."
(move-to-column (+ gomoku-x-offset
(* gomoku-square-width (1- gomoku-board-width)))))
+(random t)
+
(provide 'gomoku)
;;; arch-tag: b1b8205e-77fc-4597-b373-3ea2c04311eb
diff --git a/lisp/play/landmark.el b/lisp/play/landmark.el
index 4fe126fec0a..e8d0b21f47d 100644
--- a/lisp/play/landmark.el
+++ b/lisp/play/landmark.el
@@ -1705,6 +1705,8 @@ Use \\[describe-mode] for more info."
;;;allout-layout: (0 : -1 -1 0)
;;;End:
+(random t)
+
(provide 'landmark)
;;; arch-tag: ae5031be-96e6-459e-a3df-1df53117d3f2
diff --git a/lisp/play/tetris.el b/lisp/play/tetris.el
index f1901a129dd..11f6364e609 100644
--- a/lisp/play/tetris.el
+++ b/lisp/play/tetris.el
@@ -652,6 +652,8 @@ tetris-mode keybindings:
(tetris-mode)
(tetris-start-game))
+(random t)
+
(provide 'tetris)
;;; arch-tag: fb780d53-3ff0-49f0-8e19-f7f13cf2d49e
diff --git a/lisp/play/zone.el b/lisp/play/zone.el
index 05f73b8030a..256a316c3cf 100644
--- a/lisp/play/zone.el
+++ b/lisp/play/zone.el
@@ -692,6 +692,7 @@ If nil, `zone-pgm-random-life' chooses a value from 0-3 (inclusive).")
(life (or zone-pgm-random-life-wait (random 4)))
(kill-buffer nil))))
+(random t)
;;;;;;;;;;;;;;;
(provide 'zone)
diff --git a/lisp/progmodes/cc-awk.el b/lisp/progmodes/cc-awk.el
index b0c15bff903..b3e0e381135 100644
--- a/lisp/progmodes/cc-awk.el
+++ b/lisp/progmodes/cc-awk.el
@@ -988,6 +988,7 @@ nor helpful.
Note that this function might do hidden buffer changes. See the
comment at the start of cc-engine.el for more info."
(interactive "p")
+ (or arg (setq arg 1))
(save-match-data
(c-save-buffer-state ; ensures the buffer is writable.
nil
diff --git a/lisp/progmodes/cc-cmds.el b/lisp/progmodes/cc-cmds.el
index 4f9e1947738..79043c87b63 100644
--- a/lisp/progmodes/cc-cmds.el
+++ b/lisp/progmodes/cc-cmds.el
@@ -1262,11 +1262,11 @@ newline cleanups are done if appropriate; see the variable `c-cleanup-list'."
(backward-char)
(skip-chars-backward " \t")
(setq beg (point))
- (c-save-buffer-state () (c-on-identifier))
- ;; Don't add a space into #define FOO()....
- (not (and (c-beginning-of-macro)
- (c-forward-over-cpp-define-id)
- (eq (point) beg)))))
+ (and (c-save-buffer-state () (c-on-identifier))
+ ;; Don't add a space into #define FOO()....
+ (not (and (c-beginning-of-macro)
+ (c-forward-over-cpp-define-id)
+ (eq (point) beg))))))
(save-excursion
(delete-region beg end)
(goto-char beg)
@@ -1477,9 +1477,7 @@ No indentation or other \"electric\" behavior is performed."
(c-syntactic-re-search-forward "{")
(backward-char)
(setq n (1- n)))
- (;; (or (eq where 'at-header) (eq where 'outwith-function)
-;; (eq where 'at-function-end) (eq where 'in-trailer))
- (memq where '(at-header outwith-function at-function-end in-trailer))
+ ((memq where '(at-header outwith-function at-function-end in-trailer))
(c-syntactic-skip-backward "^}")
(when (eq (char-before) ?\})
(backward-sexp)
@@ -1513,7 +1511,8 @@ defun."
(or arg (setq arg 1))
(c-save-buffer-state
- ((start (point))
+ (beginning-of-defun-function end-of-defun-function
+ (start (point))
where paren-state pos)
;; Move back out of any macro/comment/string we happen to be in.
@@ -1526,8 +1525,7 @@ defun."
(if (< arg 0)
;; Move forward to the closing brace of a function.
(progn
- (if ;; (or (eq where 'at-function-end) (eq where 'outwith-function))
- (memq where '(at-function-end outwith-function))
+ (if (memq where '(at-function-end outwith-function))
(setq arg (1+ arg)))
(if (< arg 0)
(setq arg (c-forward-to-nth-EOF-} (- arg) where)))
@@ -1587,13 +1585,11 @@ defun."
((eq where 'in-trailer)
(c-syntactic-skip-backward "^}")
(setq n (1- n)))
- (;; (or (eq where 'at-function-end) (eq where 'outwith-function)
-;; (eq where 'at-header) (eq where 'in-header))
- (memq where '(at-function-end outwith-function at-header in-header))
- (c-syntactic-re-search-forward "{")
- (backward-char)
- (forward-sexp)
- (setq n (1- n)))
+ ((memq where '(at-function-end outwith-function at-header in-header))
+ (when (c-syntactic-re-search-forward "{" nil 'eob)
+ (backward-char)
+ (forward-sexp)
+ (setq n (1- n))))
(t (error "c-forward-to-nth-EOF-}: `where' is %s" where)))
;; Each time round the loop, go forward to a "}" at the outermost level.
@@ -1618,7 +1614,8 @@ the open-parenthesis that starts a defun; see `beginning-of-defun'."
(or arg (setq arg 1))
(c-save-buffer-state
- ((start (point))
+ (beginning-of-defun-function end-of-defun-function
+ (start (point))
where paren-state pos)
;; Move back out of any macro/comment/string we happen to be in.
@@ -1631,15 +1628,12 @@ the open-parenthesis that starts a defun; see `beginning-of-defun'."
(if (< arg 0)
;; Move backwards to the } of a function
(progn
- (if ;; (or (eq where 'at-header) (eq where 'outwith-function))
- (memq where '(at-header outwith-function))
+ (if (memq where '(at-header outwith-function))
(setq arg (1+ arg)))
(if (< arg 0)
(setq arg (c-backward-to-nth-BOF-{ (- arg) where)))
- (when (and (= arg 0)
- (c-syntactic-skip-backward "^}")
- (eq (char-before) ?\}))
- t))
+ (if (= arg 0)
+ (c-syntactic-skip-backward "^}")))
;; Move forward to the } of a function
(if (> arg 0)
diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el
index 43fa0ab5937..8c10df649de 100644
--- a/lisp/progmodes/cc-defs.el
+++ b/lisp/progmodes/cc-defs.el
@@ -74,12 +74,12 @@
; (eval-after-load "font-lock" ; 2006-07-09. font-lock is now preloaded
; '
(if (and (not (featurep 'cc-fix)) ; only load the file once.
- (featurep 'xemacs) ; There is now (2005/12) code in GNU Emacs CVS
- ; to make the call to f-l-c-k throw an error.
- (let (font-lock-keywords)
- (font-lock-compile-keywords '("\\<\\>"))
- font-lock-keywords)) ; did the previous call foul this up?
- (load "cc-fix")) ;)
+ (featurep 'xemacs) ; There is now (2005/12) code in GNU Emacs CVS
+ ; to make the call to f-l-c-k throw an error.
+ (let (font-lock-keywords)
+ (font-lock-compile-keywords '("\\<\\>"))
+ font-lock-keywords)) ; did the previous call foul this up?
+ (load "cc-fix")) ;)
;; The above takes care of the delayed loading, but this is necessary
;; to ensure correct byte compilation.
@@ -708,7 +708,8 @@ be after it."
;; c-parse-state to between 3 and 60 times faster when
;; braces are hung. It can also degrade performance by
;; about as much when braces are not hung.
- '(let (pos)
+ '(let (beginning-of-defun-function end-of-defun-function
+ pos)
(while (not pos)
(save-restriction
(widen)
@@ -731,7 +732,8 @@ be after it."
))
(goto-char pos)))
;; Emacs, which doesn't have buffer-syntactic-context-depth
- (beginning-of-defun))
+ (let (beginning-of-defun-function end-of-defun-function)
+ (beginning-of-defun)))
;; if defun-prompt-regexp is non-nil, b-o-d won't leave us at the
;; open brace.
(and defun-prompt-regexp
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index a901ee07454..717016af7ea 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -1917,9 +1917,8 @@ comment at the start of cc-engine.el for more info."
;; Is the region (beg end) WS, and is there WS (or BOB/EOB) next to the
;; region? This is a "heuristic" function. .....
;;
- ;; The motivation for the second bit is to check whether the removal of this
- ;; space is to check whether removing this region would coalesce two
- ;; symbols.
+ ;; The motivation for the second bit is to check whether removing this
+ ;; region would coalesce two symbols.
;;
;; FIXME!!! This function doesn't check virtual semicolons in any way. Be
;; careful about using this function for, e.g. AWK. (2007/3/7)
@@ -5372,7 +5371,7 @@ comment at the start of cc-engine.el for more info."
;; True if there's a prefix match outside the outermost
;; paren pair that surrounds the declarator.
got-prefix-before-parens
-y ;; True if there's a suffix match outside the outermost
+ ;; True if there's a suffix match outside the outermost
;; paren pair that surrounds the declarator. The value is
;; the position of the first suffix match.
got-suffix-after-parens
@@ -5878,19 +5877,23 @@ y ;; True if there's a suffix match outside the outermost
(defun c-forward-label (&optional assume-markup preceding-token-end limit)
;; Assuming that point is at the beginning of a token, check if it starts a
- ;; label and if so move over it and return t, otherwise don't move and
- ;; return nil. "Label" here means "most things with a colon".
+ ;; label and if so move over it and return non-nil (t in default situations,
+ ;; specific symbols (see below) for interesting situations), otherwise don't
+ ;; move and return nil. "Label" here means "most things with a colon".
;;
;; More precisely, a "label" is regarded as one of:
- ;; (i) a goto target like "foo:";
- ;; (ii) A case label - either the entire construct "case FOO:" or just the
- ;; bare "case", should the colon be missing;
- ;; (iii) a keyword which needs a colon, like "default:" or "private:";
+ ;; (i) a goto target like "foo:" - returns the symbol `goto-target';
+ ;; (ii) A case label - either the entire construct "case FOO:", or just the
+ ;; bare "case", should the colon be missing. We return t;
+ ;; (iii) a keyword which needs a colon, like "default:" or "private:"; We
+ ;; return t;
;; (iv) One of QT's "extended" C++ variants of
- ;; "private:"/"protected:"/"public:"/"more:" looking like "public slots:".
+ ;; "private:"/"protected:"/"public:"/"more:" looking like "public slots:".
+ ;; Returns the symbol `qt-2kwds-colon'.
+ ;; (v) QT's construct "signals:". Returns the symbol `qt-1kwd-colon'.
;; (v) One of the keywords matched by `c-opt-extra-label-key' (without any
;; colon). Currently (2006-03), this applies only to Objective C's
- ;; keywords "@private", "@protected", and "@public".
+ ;; keywords "@private", "@protected", and "@public". Returns t.
;;
;; One of the things which will NOT be recognised as a label is a bit-field
;; element of a struct, something like "int foo:5".
@@ -5919,8 +5922,10 @@ y ;; True if there's a suffix match outside the outermost
;; This function might do hidden buffer changes.
(let ((start (point))
+ label-end
qt-symbol-idx
- macro-start) ; if we're in one.
+ macro-start ; if we're in one.
+ label-type)
(cond
;; "case" or "default" (Doesn't apply to AWK).
((looking-at c-label-kwds-regexp)
@@ -5933,25 +5938,26 @@ y ;; True if there's a suffix match outside the outermost
;; Find the label end.
(goto-char kwd-end)
- (if (and (c-syntactic-re-search-forward
- ;; Stop on chars that aren't allowed in expressions,
- ;; and on operator chars that would be meaningless
- ;; there. FIXME: This doesn't cope with ?: operators.
- "[;{=,@]\\|\\(\\=\\|[^:]\\):\\([^:]\\|\\'\\)"
- limit t t nil 1)
- (match-beginning 2))
-
- (progn
- (goto-char (match-beginning 2)) ; just after the :
- (c-put-c-type-property (1- (point)) 'c-decl-end)
- t)
-
- ;; It's an unfinished label. We consider the keyword enough
- ;; to recognize it as a label, so that it gets fontified.
- ;; Leave the point at the end of it, but don't put any
- ;; `c-decl-end' marker.
- (goto-char kwd-end)
- t)))
+ (setq label-type
+ (if (and (c-syntactic-re-search-forward
+ ;; Stop on chars that aren't allowed in expressions,
+ ;; and on operator chars that would be meaningless
+ ;; there. FIXME: This doesn't cope with ?: operators.
+ "[;{=,@]\\|\\(\\=\\|[^:]\\):\\([^:]\\|\\'\\)"
+ limit t t nil 1)
+ (match-beginning 2))
+
+ (progn ; there's a proper :
+ (goto-char (match-beginning 2)) ; just after the :
+ (c-put-c-type-property (1- (point)) 'c-decl-end)
+ t)
+
+ ;; It's an unfinished label. We consider the keyword enough
+ ;; to recognize it as a label, so that it gets fontified.
+ ;; Leave the point at the end of it, but don't put any
+ ;; `c-decl-end' marker.
+ (goto-char kwd-end)
+ t))))
;; @private, @protected, @public, in Objective C, or similar.
((and c-opt-extra-label-key
@@ -5963,7 +5969,7 @@ y ;; True if there's a suffix match outside the outermost
(when c-record-type-identifiers
(c-record-ref-id (cons (match-beginning 1) (point))))
(c-put-c-type-property (1- (point)) 'c-decl-end)
- t)
+ (setq label-type t))
;; All other cases of labels.
((and c-recognize-colon-labels ; nil for AWK and IDL, otherwise t.
@@ -6039,26 +6045,49 @@ y ;; True if there's a suffix match outside the outermost
(c-forward-syntactic-ws)
(c-forward-label nil pte start))))))))))
+ ;; Point is still at the beginning of the possible label construct.
+ ;;
;; Check that the next nonsymbol token is ":", or that we're in one
;; of QT's "slots" declarations. Allow '(' for the sake of macro
;; arguments. FIXME: Should build this regexp from the language
;; constants.
- (when (c-syntactic-re-search-forward
- "[ \t[:?;{=*/%&|,<>!@+-]" limit t t) ; not at EOB
- (backward-char)
- (setq qt-symbol-idx
- (and (c-major-mode-is 'c++-mode)
- (string-match
- "\\(p\\(r\\(ivate\\|otected\\)\\|ublic\\)\\|more\\)\\>"
- (buffer-substring start (point)))))
- (c-forward-syntactic-ws limit)
- (when (or (looking-at ":\\([^:]\\|\\'\\)") ; A single colon.
- (and qt-symbol-idx
- (search-forward-regexp "\\=slots\\>" limit t)
- (progn (c-forward-syntactic-ws limit)
- (looking-at ":\\([^:]\\|\\'\\)")))) ; A single colon
- (forward-char) ; to after the colon.
- t)))
+ (cond
+ ;; public: protected: private:
+ ((and
+ (c-major-mode-is 'c++-mode)
+ (search-forward-regexp
+ "\\=p\\(r\\(ivate\\|otected\\)\\|ublic\\)\\>[^_]" nil t)
+ (progn (backward-char)
+ (c-forward-syntactic-ws limit)
+ (looking-at ":\\([^:]\\|\\'\\)"))) ; A single colon.
+ (forward-char)
+ (setq label-type t))
+ ;; QT double keyword like "protected slots:" or goto target.
+ ((progn (goto-char start) nil))
+ ((when (c-syntactic-re-search-forward
+ "[ \t\n[:?;{=*/%&|,<>!@+-]" limit t t) ; not at EOB
+ (backward-char)
+ (setq label-end (point))
+ (setq qt-symbol-idx
+ (and (c-major-mode-is 'c++-mode)
+ (string-match
+ "\\(p\\(r\\(ivate\\|otected\\)\\|ublic\\)\\|more\\)\\>"
+ (buffer-substring start (point)))))
+ (c-forward-syntactic-ws limit)
+ (cond
+ ((looking-at ":\\([^:]\\|\\'\\)") ; A single colon.
+ (forward-char)
+ (setq label-type
+ (if (string= "signals" ; Special QT macro
+ (buffer-substring-no-properties start label-end))
+ 'qt-1kwd-colon
+ 'goto-target)))
+ ((and qt-symbol-idx
+ (search-forward-regexp "\\=slots\\>" limit t)
+ (progn (c-forward-syntactic-ws limit)
+ (looking-at ":\\([^:]\\|\\'\\)"))) ; A single colon
+ (forward-char)
+ (setq label-type 'qt-2kwds-colon)))))))
(save-restriction
(narrow-to-region start (point))
@@ -6069,6 +6098,7 @@ y ;; True if there's a suffix match outside the outermost
(while (progn
(when (looking-at c-nonlabel-token-key)
(goto-char start)
+ (setq label-type nil)
(throw 'check-label nil))
(and (c-safe (c-forward-sexp)
(c-forward-syntactic-ws)
@@ -6088,12 +6118,12 @@ y ;; True if there's a suffix match outside the outermost
(c-put-c-type-property (1- (point-max)) 'c-decl-end)
(goto-char (point-max))
- t)))
+ )))
(t
;; Not a label.
- (goto-char start)
- nil))))
+ (goto-char start)))
+ label-type))
(defun c-forward-objc-directive ()
;; Assuming the point is at the beginning of a token, try to move
diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el
index a880ae9a1fe..0df09eda481 100644
--- a/lisp/progmodes/cc-fonts.el
+++ b/lisp/progmodes/cc-fonts.el
@@ -704,8 +704,13 @@ casts and declarations are fontified. Used on level 2 and higher."
))
(defun c-font-lock-complex-decl-prepare (limit)
+ ;; This function will be called from font-lock for a region bounded by POINT
+ ;; and LIMIT, as though it were to identify a keyword for
+ ;; font-lock-keyword-face. It always returns NIL to inhibit this and
+ ;; prevent a repeat invocation. See elisp/lispref page "Search-based
+ ;; Fontification".
+ ;;
;; Called before any of the matchers in `c-complex-decl-matchers'.
- ;; Nil is always returned.
;;
;; This function does hidden buffer changes.
@@ -742,10 +747,15 @@ casts and declarations are fontified. Used on level 2 and higher."
nil)
(defun c-font-lock-<>-arglists (limit)
+ ;; This function will be called from font-lock for a region bounded by POINT
+ ;; and LIMIT, as though it were to identify a keyword for
+ ;; font-lock-keyword-face. It always returns NIL to inhibit this and
+ ;; prevent a repeat invocation. See elisp/lispref page "Search-based
+ ;; Fontification".
+ ;;
;; Fontify types and references in names containing angle bracket
;; arglists from the point to LIMIT. Note that
- ;; `c-font-lock-declarations' already has handled many of them. Nil
- ;; is always returned.
+ ;; `c-font-lock-declarations' already has handled many of them.
;;
;; This function might do hidden buffer changes.
@@ -971,9 +981,14 @@ casts and declarations are fontified. Used on level 2 and higher."
font-lock-keyword-face))
(defun c-font-lock-declarations (limit)
+ ;; This function will be called from font-lock for a region bounded by POINT
+ ;; and LIMIT, as though it were to identify a keyword for
+ ;; font-lock-keyword-face. It always returns NIL to inhibit this and
+ ;; prevent a repeat invocation. See elisp/lispref page "Search-based
+ ;; Fontification".
+ ;;
;; Fontify all the declarations, casts and labels from the point to LIMIT.
- ;; Assumes that strings and comments have been fontified already. Nil is
- ;; always returned.
+ ;; Assumes that strings and comments have been fontified already.
;;
;; This function might do hidden buffer changes.
@@ -1009,6 +1024,7 @@ casts and declarations are fontified. Used on level 2 and higher."
;; `c-forward-decl-or-cast-1' and `c-forward-label' for
;; later fontification.
(c-record-type-identifiers t)
+ label-type
c-record-ref-identifiers
;; Make `c-forward-type' calls mark up template arglists if
;; it finds any. That's necessary so that we later will
@@ -1174,39 +1190,31 @@ casts and declarations are fontified. Used on level 2 and higher."
(c-fontify-recorded-types-and-refs)
nil))
- ;; It was a false alarm.
+ ;; It was a false alarm. Check if we're in a label (or other
+ ;; construct with `:' except bitfield) instead.
(goto-char start-pos)
- ;; The below code attempts to fontify the case constants in
- ;; c-label-face-name, but it cannot catch every case [sic].
- ;; And do we want to fontify case constants anyway?
- (c-forward-label t match-pos nil)
-;;; (when (c-forward-label t match-pos nil)
-;;; ;; Can't use `c-fontify-types-and-refs' here since we
-;;; ;; should use the label face.
-;;; (save-excursion
-;;; (while c-record-ref-identifiers
-;;; (let ((elem (car c-record-ref-identifiers))
-;;; c-record-type-identifiers)
-;;; (goto-char (cdr elem))
-;;; ;; Find the end of any label.
-;;; (while (and (re-search-forward "\\sw\\|:" nil t)
-;;; (progn (backward-char 1) t)
-;;; (or (re-search-forward
-;;; "\\=0[Xx][0-9A-Fa-f]+\\|\\([0-9]+\\)" nil t)
-;;; (c-forward-name)))
-;;; (c-backward-syntactic-ws)
-;;; (let ((end (point)))
-;;; ;; Now find the start of the bit we regard as the label.
-;;; (when (and (c-simple-skip-symbol-backward)
-;;; (not (c-get-char-property (point) 'face)))
-;;; (c-put-font-lock-face (point) end c-label-face-name))
-;;; (goto-char end))))
-;;; (setq c-record-ref-identifiers (cdr c-record-ref-identifiers))))
-;;; ;; `c-forward-label' probably has added a `c-decl-end'
-;;; ;; marker, so return t to `c-find-decl-spots' to signal
-;;; ;; that.
-;;; t)
- )))
+ (when (setq label-type (c-forward-label t match-pos nil))
+ ;; Can't use `c-fontify-types-and-refs' here since we
+ ;; use the label face at times.
+ (cond ((eq label-type 'goto-target)
+ (c-put-font-lock-face (caar c-record-ref-identifiers)
+ (cdar c-record-ref-identifiers)
+ c-label-face-name))
+ ((eq label-type 'qt-1kwd-colon)
+ (c-put-font-lock-face (caar c-record-ref-identifiers)
+ (cdar c-record-ref-identifiers)
+ 'font-lock-keyword-face))
+ ((eq label-type 'qt-2kwds-colon)
+ (mapc
+ (lambda (kwd)
+ (c-put-font-lock-face (car kwd) (cdr kwd)
+ 'font-lock-keyword-face))
+ c-record-ref-identifiers)))
+ (setq c-record-ref-identifiers nil)
+ ;; `c-forward-label' has probably added a `c-decl-end'
+ ;; marker, so return t to `c-find-decl-spots' to signal
+ ;; that.
+ t))))
nil)))
@@ -1285,6 +1293,14 @@ on level 2 only and so aren't combined with `c-complex-decl-matchers'."
"Complex font lock matchers for types and declarations. Used on level
3 and higher."
+ ;; Note: This code in this form dumps a number of funtions into the
+ ;; resulting constant, `c-matchers-3'. At run time, font lock will call
+ ;; each of them as a "FUNCTION" (see Elisp page "Search-based
+ ;; Fontification"). The font lock region is delimited by POINT and the
+ ;; single parameter, LIMIT. Each of these functions returns NIL (thus
+ ;; inhibiting spurious font-lock-keyword-face highlighting and another
+ ;; call).
+
t `(;; Initialize some things before the search functions below.
c-font-lock-complex-decl-prepare
@@ -1397,6 +1413,8 @@ on level 2 only and so aren't combined with `c-complex-decl-matchers'."
;; Fontify the type in C++ "new" expressions.
,@(when (c-major-mode-is 'c++-mode)
+ ;; This pattern is a probably a "(MATCHER . ANCHORED-HIGHLIGHTER)"
+ ;; (see Elisp page "Search-based Fontification").
`(("\\<new\\>"
(c-font-lock-c++-new))))
))
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index fe01ab02ae3..906cbfb19a7 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -221,11 +221,6 @@ the evaluated constant value at compile time."
;; with the group symbol for each group and should return non-nil
;; if that group is to be included.
;;
- ;; OP-FILTER filters the individual operators in each group. It
- ;; can be t to choose all operators, a regexp to test against each
- ;; operator, or a function which will be called for each operator
- ;; and should return non-nil for those to include.
- ;;
;; If XLATE is given, it's a function which is called for each
;; matching operator and its return value is collected instead.
;; If it returns a list, the elements are spliced directly into
@@ -1376,6 +1371,26 @@ EOL terminated statements."
(c-lang-const c-vsemi-status-unknown-p-fn))
+;;; Defun functions
+
+;; The Emacs variables beginning-of-defun-function and
+;; end-of-defun-function will be set so that commands like
+;; `mark-defun' and `narrow-to-defun' work right. The key sequences
+;; C-M-a and C-M-e are, however, bound directly to the CC Mode
+;; functions, allowing optimisation for large n.
+(c-lang-defconst beginning-of-defun-function
+ "Function to which beginning-of-defun-function will be set."
+ t 'c-beginning-of-defun
+ awk 'c-awk-beginning-of-defun)
+(c-lang-setvar beginning-of-defun-function
+ (c-lang-const beginning-of-defun-function))
+
+(c-lang-defconst end-of-defun-function
+ "Function to which end-of-defun-function will be set."
+ t 'c-end-of-defun
+ awk 'c-awk-end-of-defun)
+(c-lang-setvar end-of-defun-function (c-lang-const end-of-defun-function))
+
;;; In-comment text handling.
(c-lang-defconst c-paragraph-start
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el
index 1407b497305..f5da0eecc2e 100644
--- a/lisp/progmodes/cc-mode.el
+++ b/lisp/progmodes/cc-mode.el
@@ -158,8 +158,8 @@
;; These are typically standard emacs variables such as `comment-start'.
(defmacro c-make-emacs-variables-local ()
`(progn
- ,@(mapcan (lambda (init)
- `((make-local-variable ',(car init))))
+ ,@(mapcar (lambda (init)
+ `(make-local-variable ',(car init)))
(cdr c-emacs-variable-inits))))
(defun c-init-language-vars-for (mode)
@@ -509,9 +509,9 @@ preferably use the `c-mode-menu' language constant directly."
type type-pos
marked-id term-pos
(end1
- (if (eq (get-text-property end 'face) 'font-lock-comment-face)
- (previous-single-property-change end 'face)
- end)))
+ (or (and (eq (get-text-property end 'face) 'font-lock-comment-face)
+ (previous-single-property-change end 'face))
+ end)))
(when (>= end1 beg) ; Don't hassle about changes entirely in comments.
;; Find a limit for the search for a `c-type' property
(while
diff --git a/lisp/progmodes/cc-subword.el b/lisp/progmodes/cc-subword.el
index 29494fdc6a7..a6a365d316b 100644
--- a/lisp/progmodes/cc-subword.el
+++ b/lisp/progmodes/cc-subword.el
@@ -218,38 +218,52 @@ Optional argument ARG is the same as for `transpose-words'."
(interactive "*p")
(transpose-subr 'c-forward-subword arg))
-(defun c-capitalize-subword (arg)
- "Do the same as `capitalize-word' but on subwords.
-See the command `c-subword-mode' for a description of subwords.
-Optional argument ARG is the same as for `capitalize-word'."
- (interactive "p")
- (let ((count (abs arg))
- (direction (if (< 0 arg) 1 -1)))
- (dotimes (i count)
- (when (re-search-forward
- (concat "[" c-alpha "]")
- nil t)
- (goto-char (match-beginning 0)))
- (let* ((p (point))
- (pp (1+ p))
- (np (c-forward-subword direction)))
- (upcase-region p pp)
- (downcase-region pp np)
- (goto-char np)))))
+
(defun c-downcase-subword (arg)
"Do the same as `downcase-word' but on subwords.
See the command `c-subword-mode' for a description of subwords.
Optional argument ARG is the same as for `downcase-word'."
(interactive "p")
- (downcase-region (point) (c-forward-subword arg)))
+ (let ((start (point)))
+ (downcase-region (point) (c-forward-subword arg))
+ (when (< arg 0)
+ (goto-char start))))
(defun c-upcase-subword (arg)
"Do the same as `upcase-word' but on subwords.
See the command `c-subword-mode' for a description of subwords.
Optional argument ARG is the same as for `upcase-word'."
(interactive "p")
- (upcase-region (point) (c-forward-subword arg)))
+ (let ((start (point)))
+ (upcase-region (point) (c-forward-subword arg))
+ (when (< arg 0)
+ (goto-char start))))
+
+(defun c-capitalize-subword (arg)
+ "Do the same as `capitalize-word' but on subwords.
+See the command `c-subword-mode' for a description of subwords.
+Optional argument ARG is the same as for `capitalize-word'."
+ (interactive "p")
+ (let ((count (abs arg))
+ (start (point))
+ (advance (if (< arg 0) nil t)))
+ (dotimes (i count)
+ (if advance
+ (progn (re-search-forward
+ (concat "[" c-alpha "]")
+ nil t)
+ (goto-char (match-beginning 0)))
+ (c-backward-subword))
+ (let* ((p (point))
+ (pp (1+ p))
+ (np (c-forward-subword)))
+ (upcase-region p pp)
+ (downcase-region pp np)
+ (goto-char (if advance np p))))
+ (unless advance
+ (goto-char start))))
+
;;
diff --git a/lisp/progmodes/cc-vars.el b/lisp/progmodes/cc-vars.el
index cbf2b44de23..8d28cba79ad 100644
--- a/lisp/progmodes/cc-vars.el
+++ b/lisp/progmodes/cc-vars.el
@@ -890,7 +890,8 @@ Only currently supported behavior is `alignleft'."
(defcustom c-special-indent-hook nil
"*Hook for user defined special indentation adjustments.
-This hook gets called after a line is indented by the mode."
+This hook gets called after each line is indented by the mode. It is only
+called if `c-syntactic-indentation' is non-nil."
:type 'hook
:group 'c)
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index aa77caf0670..ce933cb13d5 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -391,6 +391,7 @@ be added."
,(expand-file-name "compilation.txt" data-directory))
:group 'compilation)
+;;;###autoload(put 'compilation-directory 'safe-local-variable 'stringp)
(defvar compilation-directory nil
"Directory to restore to when doing `recompile'.")
@@ -625,7 +626,7 @@ Faces `compilation-error-face', `compilation-warning-face',
(cons (match-string-no-properties idx) dir))
mouse-face highlight
keymap compilation-button-map
- help-echo "mouse-2: visit this directory")))
+ help-echo "mouse-2: visit destination directory")))
;; Data type `reverse-ordered-alist' retriever. This function retrieves the
;; KEY element from the ALIST, creating it in the right position if not already
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index 0b8287503f8..a07fb5ee44f 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -233,6 +233,7 @@ for constructs with multiline if/unless/while/until/for/foreach condition."
"*Indentation of CPerl statements with respect to containing block."
:type 'integer
:group 'cperl-indentation-details)
+(put 'cperl-indent-level 'safe-local-variable 'integerp)
(defcustom cperl-lineup-step nil
"*`cperl-lineup' will always lineup at multiple of this number.
@@ -1871,9 +1872,7 @@ or as help on variables `cperl-tips', `cperl-problems',
(easy-menu-add cperl-menu)) ; A NOP in Emacs.
(run-mode-hooks 'cperl-mode-hook)
(if cperl-hook-after-change
- (progn
- (make-local-hook 'after-change-functions)
- (add-hook 'after-change-functions 'cperl-after-change-function nil t)))
+ (add-hook 'after-change-functions 'cperl-after-change-function nil t))
;; After hooks since fontification will break this
(if cperl-pod-here-scan
(or cperl-syntaxify-by-font-lock
diff --git a/lisp/progmodes/dcl-mode.el b/lisp/progmodes/dcl-mode.el
index 618de7a3345..bdec1bf9ef4 100644
--- a/lisp/progmodes/dcl-mode.el
+++ b/lisp/progmodes/dcl-mode.el
@@ -71,6 +71,9 @@
;;; Code:
+(require 'tempo)
+
+
;;; *** Customization *****************************************************
@@ -1935,8 +1938,6 @@ section at the end of the current buffer."
;; standard Emacs. I would have liked something closer to the functionality
;; of LSE templates...
-
-(require 'tempo)
(defvar dcl-tempo-tags nil
"Tempo tags for DCL mode.")
diff --git a/lisp/progmodes/ebnf2ps.el b/lisp/progmodes/ebnf2ps.el
index 23ba4b55f33..55f61222796 100644
--- a/lisp/progmodes/ebnf2ps.el
+++ b/lisp/progmodes/ebnf2ps.el
@@ -2609,7 +2609,7 @@ See `ebnf-style-database' documentation."
(and (assoc name ebnf-style-database)
(error "Style name already exists: %s" name))
(or (assoc inherits ebnf-style-database)
- (error "Style inheritance name does'nt exist: %s" inherits))
+ (error "Style inheritance name doesn't exist: %s" inherits))
(setq ebnf-style-database
(cons (cons name (cons inherits (ebnf-check-style-values values)))
ebnf-style-database)))
@@ -2639,7 +2639,7 @@ See `ebnf-style-database' documentation."
See `ebnf-style-database' documentation."
(interactive "SStyle name: \nXStyle values: ")
(let ((style (or (assoc name ebnf-style-database)
- (error "Style name does'nt exist: %s" name)))
+ (error "Style name doesn't exist: %s" name)))
(merge (ebnf-check-style-values values))
val elt new check)
;; modify value of existing variables
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index 8d126c8a413..4903d7d26ec 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -931,8 +931,8 @@ Convert it to flymake internal format."
2 4 nil 5))
;; compilation-error-regexp-alist)
(flymake-reformat-err-line-patterns-from-compile-el compilation-error-regexp-alist-alist))
- "Patterns for matching error/warning lines.
-\(REGEXP FILE-IDX LINE-IDX ERR-TEXT-IDX).
+ "Patterns for matching error/warning lines. Each pattern has the form
+\(REGEXP FILE-IDX LINE-IDX COL-IDX ERR-TEXT-IDX).
Use `flymake-reformat-err-line-patterns-from-compile-el' to add patterns
from compile.el")
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el
index b598f2de1f7..4dbc9893f61 100644
--- a/lisp/progmodes/gdb-ui.el
+++ b/lisp/progmodes/gdb-ui.el
@@ -1771,10 +1771,15 @@ static char *magick[] = {
:group 'gud)
(defface breakpoint-disabled
- ;; We use different values of grey for different background types,
- ;; so that on low-color displays it will end up as something visible
- ;; if it has to be approximated.
- '((t :foreground "grey70"))
+ '((((class color) (min-colors 88)) :foreground "grey70")
+ ;; Ensure that on low-color displays that we end up something visible.
+ (((class color) (min-colors 8) (background light))
+ :foreground "black")
+ (((class color) (min-colors 8) (background dark))
+ :foreground "white")
+ (((type tty) (class mono))
+ :inverse-video t)
+ (t :background "gray"))
"Face for disabled breakpoint icon in fringe."
:group 'gud)
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index fe2bbdec14e..2c43abfd50c 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -315,17 +315,7 @@ Notice that using \\[next-error] or \\[compile-goto-error] modifies
This gets tacked on the end of the generated expressions.")
;;;###autoload
-(defvar grep-program
- ;; Currently zgrep has trouble. It runs egrep instead of grep,
- ;; and it doesn't pass along long options right.
- "grep"
- ;; (if (equal (condition-case nil ; in case "zgrep" isn't in exec-path
- ;; (call-process "zgrep" nil nil nil
- ;; "foo" null-device)
- ;; (error nil))
- ;; 1)
- ;; "zgrep"
- ;; "grep")
+(defvar grep-program "grep"
"The default grep program for `grep-command' and `grep-find-command'.
This variable's value takes effect when `grep-compute-defaults' is called.")
@@ -336,10 +326,10 @@ This variable's value takes effect when `grep-compute-defaults' is called.")
;;;###autoload
(defvar grep-find-use-xargs nil
- "Whether \\[grep-find] uses the `xargs' utility by default.
-
-If `exec', it uses `find -exec'; if `gnu', it uses `find -print0' and `xargs -0';
-if not nil and not `gnu', it uses `find -print' and `xargs'.
+ "Non-nil means that `grep-find' uses the `xargs' utility by default.
+If `exec', use `find -exec'.
+If `gnu', use `find -print0' and `xargs -0'.
+Any other non-nil value means to use `find -print' and `xargs'.
This variable's value takes effect when `grep-compute-defaults' is called.")
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 8db7c28219e..3d252190eff 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -147,8 +147,7 @@ Used to grey out relevant toolbar icons.")
([refresh] "Refresh" . gud-refresh)
([run] menu-item "Run" gud-run
:enable (not gud-running)
- :visible (and (memq gud-minor-mode '(gdbmi gdb dbx jdb))
- (not (eq gud-minor-mode 'gdba))))
+ :visible (memq gud-minor-mode '(gdbmi gdb dbx jdb)))
([go] menu-item (if gdb-active-process "Continue" "Run") gud-go
:visible (and (not gud-running)
(eq gud-minor-mode 'gdba)))
@@ -214,7 +213,45 @@ Used to grey out relevant toolbar icons.")
:name "Gud")
(easy-mmode-defmap gud-minor-mode-map
- `(([menu-bar debug] . ("Gud" . ,gud-menu-map)))
+ (append
+ `(([menu-bar debug] . ("Gud" . ,gud-menu-map)))
+ ;; Get tool bar like functionality from the menu bar on a text only
+ ;; terminal.
+ (unless window-system
+ `(([menu-bar down]
+ . (,(propertize "down" 'face 'font-lock-doc-face) . gud-down))
+ ([menu-bar up]
+ . (,(propertize "up" 'face 'font-lock-doc-face) . gud-up))
+ ([menu-bar finish]
+ . (,(propertize "finish" 'face 'font-lock-doc-face) . gud-finish))
+ ([menu-bar step]
+ . (,(propertize "step" 'face 'font-lock-doc-face) . gud-step))
+ ([menu-bar next]
+ . (,(propertize "next" 'face 'font-lock-doc-face) . gud-next))
+ ([menu-bar until] menu-item
+ ,(propertize "until" 'face 'font-lock-doc-face) gud-until
+ :visible (memq gud-minor-mode '(gdbmi gdba gdb perldb)))
+ ([menu-bar cont] menu-item
+ ,(propertize "cont" 'face 'font-lock-doc-face) gud-cont
+ :visible (not (eq gud-minor-mode 'gdba)))
+ ([menu-bar run] menu-item
+ ,(propertize "run" 'face 'font-lock-doc-face) gud-run
+ :visible (memq gud-minor-mode '(gdbmi gdb dbx jdb)))
+ ([menu-bar go] menu-item
+ ,(propertize " go " 'face 'font-lock-doc-face) gud-go
+ :visible (and (not gud-running)
+ (eq gud-minor-mode 'gdba)))
+ ([menu-bar stop] menu-item
+ ,(propertize "stop" 'face 'font-lock-doc-face) gud-stop-subjob
+ :visible (or gud-running
+ (not (eq gud-minor-mode 'gdba))))
+ ([menu-bar print]
+ . (,(propertize "print" 'face 'font-lock-doc-face) . gud-print))
+ ([menu-bar tools] . undefined)
+ ([menu-bar buffer] . undefined)
+ ([menu-bar options] . undefined)
+ ([menu-bar edit] . undefined)
+ ([menu-bar file] . undefined))))
"Map used in visited files.")
(let ((m (assq 'gud-minor-mode minor-mode-map-alist)))
@@ -686,14 +723,13 @@ text command mode to debug multiple programs within one Emacs
session."
(interactive (list (gud-query-cmdline 'gdb)))
- (if (and gud-comint-buffer
+ (when (and gud-comint-buffer
(buffer-name gud-comint-buffer)
(get-buffer-process gud-comint-buffer)
(with-current-buffer gud-comint-buffer (eq gud-minor-mode 'gdba)))
- (let ((same-window-regexps))
- (display-buffer gud-comint-buffer)
+ (gdb-restore-windows)
(error
- "Multiple debugging requires restarting in text command mode")))
+ "Multiple debugging requires restarting in text command mode"))
(gud-common-init command-line nil 'gud-gdb-marker-filter)
(set (make-local-variable 'gud-minor-mode) 'gdb)
@@ -2268,6 +2304,8 @@ gud, see `gud-mode'."
(gud-def gud-up "up\C-Mwhere" "<" "Up one stack frame.")
(gud-def gud-down "down\C-Mwhere" ">" "Up one stack frame.")
(gud-def gud-run "run" nil "Run the program.") ;if VM start using jdb
+ (gud-def gud-print "print %e" "\C-p" "Evaluate Java expression at point.")
+
(setq comint-prompt-regexp "^> \\|^[^ ]+\\[[0-9]+\\] ")
(setq paragraph-start comint-prompt-regexp)
@@ -2817,7 +2855,9 @@ Obeying it means displaying in another window the specified file and line."
(when (looking-at comint-prompt-regexp)
(set-marker gud-delete-prompt-marker (point))
(set-marker-insertion-type gud-delete-prompt-marker t))
- (insert (concat expr " = ")))))
+ (unless (eq (buffer-local-value 'gud-minor-mode gud-comint-buffer)
+ 'jdb)
+ (insert (concat expr " = "))))))
expr))
;; The next eight functions are hacked from gdbsrc.el by
diff --git a/lisp/progmodes/hideshow.el b/lisp/progmodes/hideshow.el
index 3bc1c55cc7d..9f01787b336 100644
--- a/lisp/progmodes/hideshow.el
+++ b/lisp/progmodes/hideshow.el
@@ -184,7 +184,6 @@
;; (5) Hideshow interacts badly with Ediff and `vc-diff'. At the moment, the
;; suggested workaround is to turn off hideshow entirely, for example:
;;
-;; (defun turn-off-hideshow () (hs-minor-mode -1))
;; (add-hook 'ediff-prepare-buffer-hook 'turn-off-hideshow)
;; (add-hook 'vc-before-checkin-hook 'turn-off-hideshow)
;;
@@ -908,7 +907,7 @@ Key bindings:
(hs-grok-mode-type)
;; Turn off this mode if we change major modes.
(add-hook 'change-major-mode-hook
- (lambda () (hs-minor-mode -1))
+ 'turn-off-hideshow
nil t)
(easy-menu-add hs-minor-mode-menu)
(set (make-local-variable 'line-move-ignore-invisible) t)
@@ -920,6 +919,11 @@ Key bindings:
(hs-show-all)))
(run-hooks 'hs-minor-mode-hook))
+;;;###autoload
+(defun turn-off-hideshow ()
+ "Unconditionally turn off `hs-minor-mode'."
+ (hs-minor-mode -1))
+
;;---------------------------------------------------------------------------
;; load-time actions
diff --git a/lisp/progmodes/idlw-shell.el b/lisp/progmodes/idlw-shell.el
index aa2d1b32d10..bcecdeafa0f 100644
--- a/lisp/progmodes/idlw-shell.el
+++ b/lisp/progmodes/idlw-shell.el
@@ -2698,7 +2698,7 @@ in the current routine."
(class (nth 2 module)))
(if module
(progn
- (setq module (idlwave-make-full-name (nth 2 module) (car module)))
+ (setq module (idlwave-make-full-name class name))
(idlwave-shell-module-source-query module type)
(idlwave-shell-set-bp-in-module name type class))
(error "No identifier at point"))))
@@ -2707,14 +2707,15 @@ in the current routine."
(defun idlwave-shell-set-bp-in-module (name type class)
"Set breakpoint in module. Assumes that `idlwave-shell-sources-alist'
contains an entry for that module."
- (let ((source-file
- (car-safe (cdr-safe
- (or
- (assoc (upcase (idlwave-make-full-name class name))
- idlwave-shell-sources-alist)
- (nth 3 (idlwave-best-rinfo-assoc name type class
- (idlwave-routines)))))))
- buf)
+ (let* ((module (idlwave-make-full-name class name))
+ (source-file
+ (car-safe (cdr-safe
+ (or
+ (assoc (upcase module)
+ idlwave-shell-sources-alist)
+ (nth 3 (idlwave-best-rinfo-assoc name type class
+ (idlwave-routines)))))))
+ buf)
(if (or (not source-file)
(not (file-regular-p source-file))
(not (setq buf
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index c4349e9c092..d29e56ce75d 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -3487,6 +3487,7 @@ if `idlwave-auto-fill-split-string' is non-nil."
(idlwave-indent-line)
;; Prevent actions do-auto-fill which calls indent-line-function.
(let (idlwave-do-actions
+ (paragraph-separate ".")
(fill-nobreak-predicate
(if (and (idlwave-in-quote)
idlwave-auto-fill-split-string)
diff --git a/lisp/progmodes/m4-mode.el b/lisp/progmodes/m4-mode.el
index 734a86b0b99..bd31f731693 100644
--- a/lisp/progmodes/m4-mode.el
+++ b/lisp/progmodes/m4-mode.el
@@ -118,14 +118,19 @@
(defun m4-m4-buffer ()
"Send contents of the current buffer to m4."
(interactive)
- (shell-command-on-region (point-min) (point-max) m4-program "*m4-output*"
- nil)
+ (shell-command-on-region
+ (point-min) (point-max)
+ (mapconcat 'identity (cons m4-program m4-program-options) "\s")
+ "*m4-output*" nil)
(switch-to-buffer-other-window "*m4-output*"))
(defun m4-m4-region ()
"Send contents of the current region to m4."
(interactive)
- (shell-command-on-region (point) (mark) m4-program "*m4-output*" nil)
+ (shell-command-on-region
+ (point) (mark)
+ (mapconcat 'identity (cons m4-program m4-program-options) "\s")
+ "*m4-output*" nil)
(switch-to-buffer-other-window "*m4-output*"))
;;;###autoload
diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el
index 078e94ffbf4..255f63aed41 100644
--- a/lisp/progmodes/perl-mode.el
+++ b/lisp/progmodes/perl-mode.el
@@ -391,6 +391,7 @@ The expansion is entirely correct because it uses the C preprocessor."
"*Indentation of Perl statements with respect to containing block."
:type 'integer
:group 'perl)
+(put 'perl-indent-level 'safe-local-variable 'integerp)
(defcustom perl-continued-statement-offset 4
"*Extra indent for lines not starting new statements."
:type 'integer
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 226d4bdc62d..e57c7e639c9 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -981,11 +981,15 @@ don't move and return nil. Otherwise return t."
(_ (if (python-comment-line-p)
(python-skip-comments/blanks t)))
(ci (current-indentation))
- (open (python-open-block-statement-p)))
+ (open (python-open-block-statement-p))
+ opoint)
(if (and (zerop ci) (not open))
(not (goto-char point))
(catch 'done
- (while (zerop (python-next-statement))
+ (setq opoint (point))
+ (while (and (zerop (python-next-statement))
+ (not (= opoint (point))))
+ (setq opoint (point))
(when (or (and open (<= (current-indentation) ci))
(< (current-indentation) ci))
(python-skip-comments/blanks t)
@@ -2225,6 +2229,7 @@ with skeleton expansions for compound statement templates.
;; . python-font-lock-syntactic-face-function)
))
(set (make-local-variable 'parse-sexp-lookup-properties) t)
+ (set (make-local-variable 'parse-sexp-ignore-comments) t)
(set (make-local-variable 'comment-start) "# ")
(set (make-local-variable 'indent-line-function) #'python-indent-line)
(set (make-local-variable 'indent-region-function) #'python-indent-region)
diff --git a/lisp/recentf.el b/lisp/recentf.el
index 12e4dd7ec57..c55f15c69e9 100644
--- a/lisp/recentf.el
+++ b/lisp/recentf.el
@@ -72,7 +72,14 @@ See the command `recentf-save-list'."
(defcustom recentf-save-file "~/.recentf"
"*File to save the recent list into."
:group 'recentf
- :type 'file)
+ :type 'file
+ :initialize 'custom-initialize-default
+ :set (lambda (symbol value)
+ (let ((oldvalue (eval symbol)))
+ (custom-set-default symbol value)
+ (and (not (equal value oldvalue))
+ recentf-mode
+ (recentf-load-list)))))
(defcustom recentf-save-file-modes 384 ;; 0600
"Mode bits of recentf save file, as an integer, or nil.
diff --git a/lisp/replace.el b/lisp/replace.el
index a42f4ff4b57..a8dfd043c72 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -844,7 +844,8 @@ Compatibility function for \\[next-error] invocations."
#'next-single-property-change)
"No more matches")
;; In case the *Occur* buffer is visible in a nonselected window.
- (set-window-point (get-buffer-window (current-buffer)) (point))
+ (let ((win (get-buffer-window (current-buffer) t)))
+ (if win (set-window-point win (point))))
(occur-mode-goto-occurrence)))
(defface match
diff --git a/lisp/simple.el b/lisp/simple.el
index 5901a1e3067..fc3a0b3d218 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -118,8 +118,10 @@ If no other buffer exists, the buffer `*scratch*' is returned."
(defcustom next-error-highlight 0.5
"*Highlighting of locations in selected source buffers.
-If number, highlight the locus in `next-error' face for given time in seconds.
-If t, highlight the locus indefinitely until some other locus replaces it.
+If a number, highlight the locus in `next-error' face for the given time
+in seconds, or until the next command is executed.
+If t, highlight the locus until the next command is executed, or until
+some other locus replaces it.
If nil, don't highlight the locus in the source buffer.
If `fringe-arrow', indicate the locus by the fringe arrow."
:type '(choice (number :tag "Highlight for specified time")
@@ -3083,7 +3085,7 @@ START and END specify the portion of the current buffer to be copied."
(defvar activate-mark-hook nil
"Hook run when the mark becomes active.
It is also run at the end of a command, if the mark is active and
-it is possible that the region may have changed")
+it is possible that the region may have changed.")
(defvar deactivate-mark-hook nil
"Hook run when the mark becomes inactive.")
@@ -3193,28 +3195,28 @@ will pop twice."
:group 'editing)
(defun set-mark-command (arg)
- "Set mark at where point is, or jump to mark.
-With no prefix argument, set mark, and push old mark position on local
-mark ring; also push mark on global mark ring if last mark was set in
+ "Set mark where point is, or jump to mark.
+Setting the mark also sets the \"region\", which is the closest
+equivalent in Emacs to what some editors call the \"selection\".
+
+With no prefix argument, set mark and push old mark position on local
+mark ring. Also, push mark on global mark ring, if last mark was set in
another buffer. Immediately repeating the command activates
`transient-mark-mode' temporarily.
-With argument, e.g. \\[universal-argument] \\[set-mark-command], \
-jump to mark, and pop a new position
-for mark off the local mark ring \(this does not affect the global
-mark ring\). Use \\[pop-global-mark] to jump to a mark off the global
+With prefix argument \(e.g., \\[universal-argument] \\[set-mark-command]\), \
+jump to mark, and set mark from
+position popped off the local mark ring \(this does not affect the global
+mark ring\). Use \\[pop-global-mark] to jump to a mark popped off the global
mark ring \(see `pop-global-mark'\).
If `set-mark-command-repeat-pop' is non-nil, repeating
-the \\[set-mark-command] command with no prefix pops the next position
+the \\[set-mark-command] command with no prefix argument pops the next position
off the local (or global) mark ring and jumps there.
-With a double \\[universal-argument] prefix argument, e.g. \\[universal-argument] \
-\\[universal-argument] \\[set-mark-command], unconditionally
-set mark where point is.
-
-Setting the mark also sets the \"region\", which is the closest
-equivalent in Emacs to what some editors call the \"selection\".
+With a double \\[universal-argument] prefix argument \(e.g., \\[universal-argument] \
+\\[universal-argument] \\[set-mark-command]\), unconditionally
+set mark where point is, even if `set-mark-command-repeat-pop' is non-nil.
Novice Emacs Lisp programmers often try to use the mark for the wrong
purposes. See the documentation of `set-mark' for more information."
@@ -4468,7 +4470,7 @@ it skips the contents of comments that end before point."
(save-excursion
(save-restriction
(if blink-matching-paren-distance
- (narrow-to-region (max (point-min)
+ (narrow-to-region (max (minibuffer-prompt-end)
(- (point) blink-matching-paren-distance))
oldpos))
(condition-case ()
@@ -4718,16 +4720,9 @@ SEND-ACTIONS is a list of actions to call when the message is sent.
Each action has the form (FUNCTION . ARGS)."
(interactive
(list nil nil nil current-prefix-arg))
- (let ((function (get mail-user-agent 'composefunc))
- result-buffer)
- (if switch-function
- (save-window-excursion
- (prog1
- (funcall function to subject other-headers continue
- nil yank-action send-actions)
- (funcall switch-function (current-buffer))))
- (funcall function to subject other-headers continue
- nil yank-action send-actions))))
+ (let ((function (get mail-user-agent 'composefunc)))
+ (funcall function to subject other-headers continue
+ switch-function yank-action send-actions)))
(defun compose-mail-other-window (&optional to subject other-headers continue
yank-action send-actions)
diff --git a/lisp/startup.el b/lisp/startup.el
index f1cc3e253ae..5b51a14c08f 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -51,8 +51,8 @@ The value is nil if the selected frame is on a text-only-terminal.")
"Non-nil inhibits the startup screen.
It also inhibits display of the initial message in the `*scratch*' buffer.
-This is for use in your personal init file, once you are familiar
-with the contents of the startup screen."
+This is for use in your personal init file (but NOT site-start.el), once
+you are familiar with the contents of the startup screen."
:type 'boolean
:group 'initialization)
@@ -514,7 +514,7 @@ opening the first frame (e.g. open a connection to an X server).")
;; Handle the X-like command-line arguments "-fg", "-bg", "-name", etc.
(defun tty-handle-args (args)
(let (rest)
- (message "%s" args)
+ (message "%S" args)
(while (and args
(not (equal (car args) "--")))
(let* ((argi (pop args))
@@ -961,11 +961,11 @@ opening the first frame (e.g. open a connection to an X server).")
(with-current-buffer (window-buffer)
(deactivate-mark)))
- ;; If the user has a file of abbrevs, read it.
+ ;; If the user has a file of abbrevs, read it.
;; FIXME: after the 22.0 release this should be changed so
;; that it does not read the abbrev file when -batch is used
;; on the command line.
- (when (and (file-exists-p abbrev-file-name)
+ (when (and (file-exists-p abbrev-file-name)
(file-readable-p abbrev-file-name))
(quietly-read-abbrev-file abbrev-file-name))
diff --git a/lisp/subr.el b/lisp/subr.el
index 4b5c5e3f076..bdde66fc885 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -579,7 +579,7 @@ KEY is a string or vector representing a sequence of keystrokes."
;;;; substitute-key-definition and its subroutines.
(defvar key-substitution-in-progress nil
- "Used internally by `substitute-key-definition'.")
+ "Used internally by `substitute-key-definition'.")
(defun substitute-key-definition (olddef newdef keymap &optional oldmap prefix)
"Replace OLDDEF with NEWDEF for any keys in KEYMAP now defined as OLDDEF.
@@ -821,11 +821,11 @@ and `event-end' functions."
(defun posn-set-point (position)
"Move point to POSITION.
Select the corresponding window as well."
- (if (not (windowp (posn-window position)))
- (error "Position not in text area of window"))
- (select-window (posn-window position))
- (if (numberp (posn-point position))
- (goto-char (posn-point position))))
+ (if (not (windowp (posn-window position)))
+ (error "Position not in text area of window"))
+ (select-window (posn-window position))
+ (if (numberp (posn-point position))
+ (goto-char (posn-point position))))
(defsubst posn-x-y (position)
"Return the x and y coordinates in POSITION.
@@ -949,20 +949,26 @@ is converted into a string by expressing it in decimal."
;;;; Obsolescence declarations for variables, and aliases.
(make-obsolete-variable 'directory-sep-char "do not use it." "21.1")
-(make-obsolete-variable 'mode-line-inverse-video "use the appropriate faces instead." "21.1")
-(make-obsolete-variable 'unread-command-char
- "use `unread-command-events' instead. That variable is a list of events
+(make-obsolete-variable
+ 'mode-line-inverse-video
+ "use the appropriate faces instead."
+ "21.1")
+(make-obsolete-variable
+ 'unread-command-char
+ "use `unread-command-events' instead. That variable is a list of events
to reread, so it now uses nil to mean `no event', instead of -1."
- "before 19.15")
+ "before 19.15")
;; Lisp manual only updated in 22.1.
(define-obsolete-variable-alias 'executing-macro 'executing-kbd-macro
- "before 19.34")
+ "before 19.34")
(defvaralias 'x-lost-selection-hooks 'x-lost-selection-functions)
-(make-obsolete-variable 'x-lost-selection-hooks 'x-lost-selection-functions "22.1")
+(make-obsolete-variable 'x-lost-selection-hooks
+ 'x-lost-selection-functions "22.1")
(defvaralias 'x-sent-selection-hooks 'x-sent-selection-functions)
-(make-obsolete-variable 'x-sent-selection-hooks 'x-sent-selection-functions "22.1")
+(make-obsolete-variable 'x-sent-selection-hooks
+ 'x-sent-selection-functions "22.1")
(defvaralias 'messages-buffer-max-lines 'message-log-max)
@@ -1534,7 +1540,7 @@ FILE should be the name of a library, with no directory name."
(when (featurep 'make-network-process)
(defun open-network-stream (name buffer host service)
- "Open a TCP connection for a service to a host.
+ "Open a TCP connection for a service to a host.
Returns a subprocess-object to represent the connection.
Input and output work as for subprocesses; `delete-process' closes it.
@@ -1548,14 +1554,15 @@ BUFFER is the buffer (or buffer name) to associate with the process.
HOST is name of the host to connect to, or its IP address.
SERVICE is name of the service desired, or an integer specifying
a port number to connect to."
- (make-network-process :name name :buffer buffer
- :host host :service service)))
+ (make-network-process :name name :buffer buffer
+ :host host :service service)))
;; compatibility
-(make-obsolete 'process-kill-without-query
- "use `process-query-on-exit-flag' or `set-process-query-on-exit-flag'."
- "22.1")
+(make-obsolete
+ 'process-kill-without-query
+ "use `process-query-on-exit-flag' or `set-process-query-on-exit-flag'."
+ "22.1")
(defun process-kill-without-query (process &optional flag)
"Say no query needed if PROCESS is running when Emacs is exited.
Optional second argument if non-nil says to require a query.
@@ -1588,8 +1595,8 @@ Legitimate radix values are 8, 10 and 16.")
'read-quoted-char-radix 8
"*Radix for \\[quoted-insert] and other uses of `read-quoted-char'.
Legitimate radix values are 8, 10 and 16."
- :type '(choice (const 8) (const 10) (const 16))
- :group 'editing-basics)
+ :type '(choice (const 8) (const 10) (const 16))
+ :group 'editing-basics)
(defun read-quoted-char (&optional prompt)
"Like `read-char', but do not allow quitting.
@@ -2232,9 +2239,9 @@ If UNDO is present and non-nil, it is a function that will be called
(text-properties-at (1- end)))
(put-text-property (1- end) end 'rear-nonsticky t))
- (if (eq yank-undo-function t) ;; not set by FUNCTION
+ (if (eq yank-undo-function t) ;; not set by FUNCTION
(setq yank-undo-function (nth 3 handler))) ;; UNDO
- (if (nth 4 handler) ;; COMMAND
+ (if (nth 4 handler) ;; COMMAND
(setq this-command (nth 4 handler)))))
(defun insert-buffer-substring-no-properties (buffer &optional start end)
@@ -2497,6 +2504,20 @@ in BODY."
(let ((combine-after-change-calls t))
. ,body)
(combine-after-change-execute)))
+
+(defmacro with-case-table (table &rest body)
+ "Execute the forms in BODY with TABLE as the current case table.
+The value returned is the value of the last form in BODY."
+ (declare (indent 1) (debug t))
+ (let ((old-case-table (make-symbol "table"))
+ (old-buffer (make-symbol "buffer")))
+ `(let ((,old-case-table (current-case-table))
+ (,old-buffer (current-buffer)))
+ (unwind-protect
+ (progn (set-case-table ,table)
+ ,@body)
+ (with-current-buffer ,old-buffer
+ (set-case-table ,old-case-table))))))
;;;; Constructing completion tables.
@@ -2765,7 +2786,7 @@ Unless optional argument INPLACE is non-nil, return a new string."
newstr))
(defun replace-regexp-in-string (regexp rep string &optional
- fixedcase literal subexp start)
+ fixedcase literal subexp start)
"Replace all matches for REGEXP with REP in STRING.
Return a new string containing the replacements.
@@ -2815,7 +2836,7 @@ and replace a sub-expression, e.g.
rep
(funcall rep (match-string 0 str)))
fixedcase literal str subexp)
- (cons (substring string start mb) ; unmatched prefix
+ (cons (substring string start mb) ; unmatched prefix
matches)))
(setq start me))
;; Reconstruct a string from the pieces.
@@ -2836,7 +2857,8 @@ that can be added."
(defun remove-from-invisibility-spec (element)
"Remove ELEMENT from `buffer-invisibility-spec'."
(if (consp buffer-invisibility-spec)
- (setq buffer-invisibility-spec (delete element buffer-invisibility-spec))))
+ (setq buffer-invisibility-spec
+ (delete element buffer-invisibility-spec))))
;;;; Syntax tables.
@@ -3182,7 +3204,7 @@ Usually the separator is \".\", but it can be any other string.")
(defvar version-regexp-alist
'(("^[-_+ ]?a\\(lpha\\)?$" . -3)
- ("^[-_+]$" . -3) ; treat "1.2.3-20050920" and "1.2-3" as alpha releases
+ ("^[-_+]$" . -3) ; treat "1.2.3-20050920" and "1.2-3" as alpha releases
("^[-_+ ]cvs$" . -3) ; treat "1.2.3-CVS" as alpha release
("^[-_+ ]?b\\(eta\\)?$" . -2)
("^[-_+ ]?\\(pre\\|rc\\)$" . -1))
@@ -3256,7 +3278,7 @@ See documentation for `version-separator' and `version-regexp-alist'."
;; Change .x.y to 0.x.y
(if (and (>= (length ver) (length version-separator))
(string-equal (substring ver 0 (length version-separator))
- version-separator))
+ version-separator))
(setq ver (concat "0" ver)))
(save-match-data
(let ((i 0)
diff --git a/lisp/t-mouse.el b/lisp/t-mouse.el
index c8a7e9b6536..eca2ce2b9fe 100644
--- a/lisp/t-mouse.el
+++ b/lisp/t-mouse.el
@@ -144,7 +144,7 @@ For example, \"2\" for /dev/tty2."
(event (if w
(posn-at-x-y (- x left) (- y top) w t)
(append (list nil 'menu-bar)
- (nthcdr 2 (posn-at-x-y x y w t))))))
+ (nthcdr 2 (posn-at-x-y x y))))))
(setcar (nthcdr 3 event) time)
event))
diff --git a/lisp/term.el b/lisp/term.el
index a853c12ec39..4ec195662ca 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -627,7 +627,7 @@ executed once when the buffer is created."
"Keyboard map for sending characters directly to the inferior process.")
(defvar term-escape-char nil
"Escape character for char sub-mode of term mode.
-Do not change it directly; use `term-set-escape-char' instead.")
+Do not change it directly; use `term-set-escape-char' instead.")
(defvar term-raw-escape-map nil)
(defvar term-pager-break-map nil)
@@ -714,7 +714,7 @@ Buffer local variable.")
(defvar term-buffer-maximum-size 2048
"*The maximum size in lines for term buffers.
Term buffers are truncated from the top to be no greater than this number.
-Notice that a setting of 0 means 'don't truncate anything'. This variable
+Notice that a setting of 0 means \"don't truncate anything\". This variable
is buffer-local.")
;;;
@@ -856,7 +856,7 @@ is buffer-local.")
;; Set up term-raw-map, etc.
(defun term-set-escape-char (c)
- "Change term-escape-char and keymaps that depend on it."
+ "Change `term-escape-char' and keymaps that depend on it."
(when term-escape-char
(define-key term-raw-map term-escape-char 'term-send-raw))
(setq c (make-string 1 c))
@@ -1100,7 +1100,7 @@ Entry to this mode runs the hooks on `term-mode-hook'."
(make-local-variable 'term-current-face)
(make-local-variable 'term-pending-frame)
(setq term-pending-frame nil)
- ;; Cua-mode's keybindings interfere with the term keybindings, disable it.
+ ;; Cua-mode's keybindings interfere with the term keybindings, disable it.
(set (make-local-variable 'cua-mode) nil)
(run-mode-hooks 'term-mode-hook)
(when (featurep 'xemacs)
@@ -1196,7 +1196,7 @@ without any interpretation."
"Insert the last stretch of killed text at the position clicked on."
(interactive "e\nP")
(if (featurep 'xemacs)
- (term-send-raw-string
+ (term-send-raw-string
(or (condition-case () (x-get-selection) (error ()))
(x-get-cutbuffer)
(error "No selection or cut buffer available")))
@@ -1314,7 +1314,7 @@ commands to use in that buffer.
"Start up a process in buffer for term modes.
Blasts any old process running in the buffer. Doesn't set the buffer mode.
You can use this to cheaply run a series of processes in the same term
-buffer. The hook term-exec-hook is run after each exec."
+buffer. The hook `term-exec-hook' is run after each exec."
(save-excursion
(set-buffer buffer)
(let ((proc (get-buffer-process buffer))) ; Blast any old process.
@@ -1344,7 +1344,7 @@ buffer. The hook term-exec-hook is run after each exec."
(run-hooks 'term-exec-hook)
buffer)))
-(defun term-sentinel (proc msg)
+(defun term-sentinel (proc msg)
"Sentinel for term buffers.
The main purpose is to get rid of the local keymap."
(let ((buffer (process-buffer proc)))
@@ -1404,7 +1404,7 @@ The main purpose is to get rid of the local keymap."
:kb=^?:kD=^[[3~:sc=\\E7:rc=\\E8:r1=\\Ec:"
;;; : -undefine ic
;;; don't define :te=\\E[2J\\E[?47l\\E8:ti=\\E7\\E[?47h\
- "termcap capabilities supported")
+ "Termcap capabilities supported.")
;;; This auxiliary function cranks up the process for term-exec in
;;; the appropriate environment.
@@ -2046,9 +2046,9 @@ Similarly for Soar, Scheme, etc."
(funcall term-input-sender proc input)))))
(defun term-get-old-input-default ()
- "Default for term-get-old-input.
+ "Default for `term-get-old-input'.
Take the current line, and discard any initial text matching
-term-prompt-regexp."
+`term-prompt-regexp'."
(save-excursion
(beginning-of-line)
(term-skip-prompt)
@@ -2068,7 +2068,7 @@ Calls `term-get-old-input' to get old input."
(insert input))))
(defun term-skip-prompt ()
- "Skip past the text matching regexp term-prompt-regexp.
+ "Skip past the text matching regexp `term-prompt-regexp'.
If this takes us past the end of the current line, don't skip at all."
(let ((eol (save-excursion (end-of-line) (point))))
(when (and (looking-at term-prompt-regexp)
@@ -2099,7 +2099,7 @@ If a prefix argument is given (\\[universal-argument]), then no prompt skip
-- go straight to column 0.
The prompt skip is done by skipping text matching the regular expression
-term-prompt-regexp, a buffer local variable."
+`term-prompt-regexp', a buffer local variable."
(interactive "P")
(beginning-of-line)
(when (null arg) (term-skip-prompt)))
@@ -2182,8 +2182,8 @@ If your process is choking on big inputs, try lowering the value.")
(defun term-send-string (proc str)
"Send to PROC the contents of STR as input.
-This is equivalent to process-send-string, except that long input strings
-are broken up into chunks of size term-input-chunk-size. Processes
+This is equivalent to `process-send-string', except that long input strings
+are broken up into chunks of size `term-input-chunk-size'. Processes
are given a chance to output between chunks. This can help prevent processes
from hanging when you send them long inputs on some OS's."
(let* ((len (length str))
@@ -2197,7 +2197,7 @@ from hanging when you send them long inputs on some OS's."
(defun term-send-region (proc start end)
"Send to PROC the region delimited by START and END.
-This is a replacement for process-send-region that tries to keep
+This is a replacement for `process-send-region' that tries to keep
your process from hanging on long inputs. See `term-send-string'."
(term-send-string proc (buffer-substring start end)))
@@ -2876,7 +2876,7 @@ See `term-prompt-regexp'."
;; (setq term-terminal-state 0))
((eq char ?M) ;; scroll reversed (terminfo: ri)
(if (or (< (term-current-row) term-scroll-start)
- (>= (1- (term-current-row))
+ (>= (1- (term-current-row))
term-scroll-start))
;; Scrolling up will not move outside
;; the scroll region.
@@ -2902,7 +2902,7 @@ See `term-prompt-regexp'."
(when term-saved-cursor
(term-goto (nth 0 term-saved-cursor)
(nth 1 term-saved-cursor))
- (setq term-ansi-current-bg-color
+ (setq term-ansi-current-bg-color
(nth 2 term-saved-cursor)
term-ansi-current-bold
(nth 3 term-saved-cursor)
@@ -3190,7 +3190,7 @@ See `term-prompt-regexp'."
(when term-ansi-current-underline
(setq term-current-face
(append '(:underline t) term-current-face))))))
-
+
;;; (message "Debug %S" term-current-face)
(setq term-ansi-face-already-done nil))
@@ -3219,7 +3219,7 @@ See `term-prompt-regexp'."
((eq char ?A)
(term-handle-deferred-scroll)
(let ((tcr (term-current-row)))
- (term-down
+ (term-down
(if (< (- tcr term-terminal-parameter) term-scroll-start)
;; If the amount to move is before scroll start, move
;; to scroll start.
@@ -3231,7 +3231,7 @@ See `term-prompt-regexp'."
((eq char ?B)
(let ((tcr (term-current-row)))
(unless (= tcr (1- term-scroll-end))
- (term-down
+ (term-down
(if (> (+ tcr term-terminal-parameter) term-scroll-end)
(- term-scroll-end 1 tcr)
(max 1 term-terminal-parameter)) t))))
@@ -3495,7 +3495,7 @@ The top-most line is line 0."
((term-pager-continue deficit)))))
(defun term-pager-page (arg)
- "Proceed past the **MORE** break, allowing the next page of output to appear"
+ "Proceed past the **MORE** break, allowing the next page of output to appear."
(interactive "p")
(term-pager-line (* arg term-height)))
@@ -3564,7 +3564,7 @@ The top-most line is line 0."
(put 'term-fake-pager-disable 'menu-enable 'term-pager-count))
(defun term-pager-help ()
- "Provide help on commands available in a terminal-emulator **MORE** break"
+ "Provide help on commands available in a terminal-emulator **MORE** break."
(interactive)
(message "Terminal-emulator pager break help...")
(sit-for 0)
@@ -3606,9 +3606,9 @@ all pending output has been dealt with."))
(defun term-handle-scroll (down)
(let ((scroll-needed
- (- (+ (term-current-row) down)
+ (- (+ (term-current-row) down)
(if (< down 0) term-scroll-start term-scroll-end))))
- (when (or (and (< down 0) (< scroll-needed 0))
+ (when (or (and (< down 0) (< scroll-needed 0))
(and (> down 0) (> scroll-needed 0)))
(let ((save-point (copy-marker (point))) (save-top))
(goto-char term-home-marker)
@@ -3706,7 +3706,7 @@ all pending output has been dealt with."))
;; contain a space, to force the previous line to continue to wrap.
;; We could do this always, but it seems preferable to not add the
;; extra space when wrapped is false.
- (when wrapped
+ (when wrapped
(insert ? ))
(insert ?\n)
(put-text-property saved-point (point) 'face 'default)
@@ -3797,8 +3797,8 @@ Should only be called when point is at the start of a screen line."
;; we need to go one line past it in order to ensure correct
;; scrolling.
(if (< save-current-row term-scroll-start)
- ;; If point is before scroll start,
- (progn
+ ;; If point is before scroll start,
+ (progn
(setq lines (- lines (- term-scroll-start save-current-row)))
(term-down (- term-scroll-start save-current-row))
(setq start (point)))
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index 9ac820dda72..f601976cd63 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -163,6 +163,22 @@
(define-key xterm-function-map "\e[4~" [select])
(define-key xterm-function-map "\e[29~" [print])
+(define-key xterm-function-map "\eOj" [kp-multiply])
+(define-key xterm-function-map "\eOk" [kp-add])
+(define-key xterm-function-map "\eOl" [kp-separator])
+(define-key xterm-function-map "\eOm" [kp-subtract])
+(define-key xterm-function-map "\eOo" [kp-divide])
+(define-key xterm-function-map "\eOp" [kp-0])
+(define-key xterm-function-map "\eOq" [kp-1])
+(define-key xterm-function-map "\eOr" [kp-2])
+(define-key xterm-function-map "\eOs" [kp-3])
+(define-key xterm-function-map "\eOt" [kp-4])
+(define-key xterm-function-map "\eOu" [kp-5])
+(define-key xterm-function-map "\eOv" [kp-6])
+(define-key xterm-function-map "\eOw" [kp-7])
+(define-key xterm-function-map "\eOx" [kp-8])
+(define-key xterm-function-map "\eOy" [kp-9])
+
;; These keys are available in xterm starting from version 216
;; if the modifyOtherKeys resource is set to 1.
@@ -177,7 +193,7 @@
(define-key xterm-function-map "\e[27;5;49~" [?\C-1])
;; Not all C-DIGIT keys have a distinct binding.
(define-key xterm-function-map "\e[27;5;57~" [?\C-9])
-(define-key xterm-function-map "\e[27;5;59~" [(C-\;)])
+(define-key xterm-function-map "\e[27;5;59~" [?\C-\;])
(define-key xterm-function-map "\e[27;5;61~" [?\C-=])
(define-key xterm-function-map "\e[27;5;92~" [?\C-\\])
@@ -186,7 +202,7 @@
(define-key xterm-function-map "\e[27;6;35~" [?\C-#])
(define-key xterm-function-map "\e[27;6;36~" [?\C-$])
(define-key xterm-function-map "\e[27;6;37~" [?\C-%])
-(define-key xterm-function-map "\e[27;6;38~" [(C-&)])
+(define-key xterm-function-map "\e[27;6;38~" [?\C-&])
(define-key xterm-function-map "\e[27;6;40~" [?\C-(])
(define-key xterm-function-map "\e[27;6;41~" [?\C-)])
(define-key xterm-function-map "\e[27;6;42~" [?\C-*])
@@ -194,13 +210,13 @@
(define-key xterm-function-map "\e[27;6;58~" [?\C-:])
(define-key xterm-function-map "\e[27;6;60~" [?\C-<])
(define-key xterm-function-map "\e[27;6;62~" [?\C->])
-(define-key xterm-function-map "\e[27;6;63~" [(C-\?)])
+(define-key xterm-function-map "\e[27;6;63~" [(control ??)])
;; These are the strings emitted for various C-M- combinations
;; for keyboards that the Meta and Alt modifiers are on the same
;; key (usually labeled "Alt").
-(define-key xterm-function-map "\e[27;13;9~" [(C-M-tab)])
-(define-key xterm-function-map "\e[27;13;13~" [(C-M-return)])
+(define-key xterm-function-map "\e[27;13;9~" [C-M-tab])
+(define-key xterm-function-map "\e[27;13;13~" [C-M-return])
(define-key xterm-function-map "\e[27;13;39~" [?\C-\M-\'])
(define-key xterm-function-map "\e[27;13;44~" [?\C-\M-,])
@@ -226,7 +242,7 @@
(define-key xterm-function-map "\e[27;14;35~" [?\C-\M-#])
(define-key xterm-function-map "\e[27;14;36~" [?\C-\M-$])
(define-key xterm-function-map "\e[27;14;37~" [?\C-\M-%])
-(define-key xterm-function-map "\e[27;14;38~" [(C-M-&)])
+(define-key xterm-function-map "\e[27;14;38~" [?\C-\M-&])
(define-key xterm-function-map "\e[27;14;40~" [?\C-\M-(])
(define-key xterm-function-map "\e[27;14;41~" [?\C-\M-)])
(define-key xterm-function-map "\e[27;14;42~" [?\C-\M-*])
@@ -234,11 +250,12 @@
(define-key xterm-function-map "\e[27;14;58~" [?\C-\M-:])
(define-key xterm-function-map "\e[27;14;60~" [?\C-\M-<])
(define-key xterm-function-map "\e[27;14;62~" [?\C-\M->])
-(define-key xterm-function-map "\e[27;14;63~" [(C-M-\?)])
+(define-key xterm-function-map "\e[27;14;63~" [(control meta ??)])
-(define-key xterm-function-map "\e[27;7;9~" [(C-M-tab)])
-(define-key xterm-function-map "\e[27;7;13~" [(C-M-return)])
+(define-key xterm-function-map "\e[27;7;9~" [C-M-tab])
+(define-key xterm-function-map "\e[27;7;13~" [C-M-return])
+(define-key xterm-function-map "\e[27;7;32~" [?\C-\M-\s])
(define-key xterm-function-map "\e[27;7;39~" [?\C-\M-\'])
(define-key xterm-function-map "\e[27;7;44~" [?\C-\M-,])
(define-key xterm-function-map "\e[27;7;45~" [?\C-\M--])
@@ -263,7 +280,7 @@
(define-key xterm-function-map "\e[27;8;35~" [?\C-\M-#])
(define-key xterm-function-map "\e[27;8;36~" [?\C-\M-$])
(define-key xterm-function-map "\e[27;8;37~" [?\C-\M-%])
-(define-key xterm-function-map "\e[27;8;38~" [(C-M-&)])
+(define-key xterm-function-map "\e[27;8;38~" [?\C-\M-&])
(define-key xterm-function-map "\e[27;8;40~" [?\C-\M-(])
(define-key xterm-function-map "\e[27;8;41~" [?\C-\M-)])
(define-key xterm-function-map "\e[27;8;42~" [?\C-\M-*])
@@ -271,13 +288,13 @@
(define-key xterm-function-map "\e[27;8;58~" [?\C-\M-:])
(define-key xterm-function-map "\e[27;8;60~" [?\C-\M-<])
(define-key xterm-function-map "\e[27;8;62~" [?\C-\M->])
-(define-key xterm-function-map "\e[27;8;63~" [(C-M-\?)])
+(define-key xterm-function-map "\e[27;8;63~" [(control meta ??)])
(define-key xterm-function-map "\e[27;2;9~" [S-tab])
(define-key xterm-function-map "\e[27;2;13~" [S-return])
-(define-key xterm-function-map "\e[27;6;9~" [(C-S-tab)])
-(define-key xterm-function-map "\e[27;6;13~" [(C-S-return)])
+(define-key xterm-function-map "\e[27;6;9~" [C-S-tab])
+(define-key xterm-function-map "\e[27;6;13~" [C-S-return])
;; Other versions of xterm might emit these.
(define-key xterm-function-map "\e[A" [up])
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index 06fa3a01186..0545ca85812 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -224,7 +224,7 @@ If parsing fails, try to set this variable to nil."
:group 'bibtex
:type 'boolean)
-(defvar bibtex-entry-field-alist
+(defcustom bibtex-entry-field-alist
'(("Article"
((("author" "Author1 [and Author2 ...] [and others]")
("title" "Title of the article (BibTeX converts it to lowercase)")
@@ -452,7 +452,47 @@ appears in the echo area, INIT is either the initial content of the
field or a function, which is called to determine the initial content
of the field, and ALTERNATIVE-FLAG (either nil or t) marks if the
field is an alternative. ALTERNATIVE-FLAG may be t only in the
-REQUIRED or CROSSREF-REQUIRED lists.")
+REQUIRED or CROSSREF-REQUIRED lists."
+ :group 'bibtex
+ :type '(repeat (list (string :tag "Entry name")
+ (list (repeat :tag "required"
+ (group (string :tag "Field")
+ (string :tag "Comment")
+ (option (choice :tag "Init" :value nil
+ (const nil)
+ (string :tag "string")
+ (function :tag "function")))
+ (option (choice (const nil)
+ (const :tag "Alternative" t)))))
+ (repeat :tag "optional"
+ (group (string :tag "Field")
+ (string :tag "Comment")
+ (option (choice :tag "Init" :value nil
+ (const nil)
+ (string :tag "string")
+ (function :tag "function")))
+ (option (choice (const nil)
+ (const :tag "Alternative" t))))))
+ (option
+ (list :tag "Crossref"
+ (repeat :tag "required"
+ (group (string :tag "Field")
+ (string :tag "Comment")
+ (option (choice :tag "Init" :value nil
+ (const nil)
+ (string :tag "string")
+ (function :tag "function")))
+ (option (choice (const nil)
+ (const :tag "Alternative" t)))))
+ (repeat :tag "optional"
+ (group (string :tag "Field")
+ (string :tag "Comment")
+ (option (choice :tag "Init" :value nil
+ (const nil)
+ (string :tag "string")
+ (function :tag "function")))
+ (option (choice (const nil)
+ (const :tag "Alternative" t))))))))))
(put 'bibtex-entry-field-alist 'risky-local-variable t)
(defcustom bibtex-comment-start "@Comment"
@@ -1785,7 +1825,7 @@ Optional arg COMMA is as in `bibtex-enclosing-field'."
(set-mark (point))
(message "Mark set")
(bibtex-make-field (funcall fun 'bibtex-field-kill-ring-yank-pointer
- bibtex-field-kill-ring) t))
+ bibtex-field-kill-ring) t nil t))
;; insert past the current entry
(bibtex-skip-to-valid-entry)
(set-mark (point))
@@ -2831,7 +2871,7 @@ and `bibtex-user-optional-fields'."
(push (list "key"
"Used for reference key creation if author and editor fields are missing"
(if (or (stringp bibtex-include-OPTkey)
- (fboundp bibtex-include-OPTkey))
+ (functionp bibtex-include-OPTkey))
bibtex-include-OPTkey))
optional))
(if (member-ignore-case entry-type bibtex-include-OPTcrossref)
@@ -3020,7 +3060,7 @@ interactive calls."
(if comment (message "%s" (nth 1 comment))
(message "No comment available")))))
-(defun bibtex-make-field (field &optional move interactive)
+(defun bibtex-make-field (field &optional move interactive nodelim)
"Make a field named FIELD in current BibTeX entry.
FIELD is either a string or a list of the form
\(FIELD-NAME COMMENT-STRING INIT ALTERNATIVE-FLAG) as in
@@ -3028,7 +3068,8 @@ FIELD is either a string or a list of the form
If MOVE is non-nil, move point past the present field before making
the new field. If INTERACTIVE is non-nil, move point to the end of
the new field. Otherwise move point past the new field.
-MOVE and INTERACTIVE are t when called interactively."
+MOVE and INTERACTIVE are t when called interactively.
+INIT is surrounded by field delimiters, unless NODELIM is non-nil."
(interactive
(list (let ((completion-ignore-case t)
(field-list (bibtex-field-list
@@ -3058,10 +3099,13 @@ MOVE and INTERACTIVE are t when called interactively."
(indent-to-column (+ bibtex-entry-offset
bibtex-text-indentation)))
(let ((init (nth 2 field)))
- (insert (cond ((stringp init) init)
- ((fboundp init) (funcall init))
- (t (concat (bibtex-field-left-delimiter)
- (bibtex-field-right-delimiter))))))
+ (if (not init) (setq init "")
+ (if (functionp init) (setq init (funcall init)))
+ (unless (stringp init) (error "`%s' is not a string" init)))
+ ;; NODELIM is required by `bibtex-insert-kill'
+ (if nodelim (insert init)
+ (insert (bibtex-field-left-delimiter) init
+ (bibtex-field-right-delimiter))))
(when interactive
;; (bibtex-find-text nil nil bibtex-help-message)
(if (memq (preceding-char) '(?} ?\")) (forward-char -1))
diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el
index a6bd082af38..339160db9bd 100644
--- a/lisp/textmodes/flyspell.el
+++ b/lisp/textmodes/flyspell.el
@@ -431,7 +431,7 @@ property of the major mode name.")
(defface flyspell-incorrect
'((((class color)) (:foreground "OrangeRed" :bold t :underline t))
(t (:bold t)))
- "Face used to display a misspelled word in Flyspell."
+ "Face used for marking a misspelled word in Flyspell."
:group 'flyspell)
;; backward-compatibility alias
(put 'flyspell-incorrect-face 'face-alias 'flyspell-incorrect)
@@ -439,7 +439,7 @@ property of the major mode name.")
(defface flyspell-duplicate
'((((class color)) (:foreground "Gold3" :bold t :underline t))
(t (:bold t)))
- "Face used to display subsequent occurrences of a misspelled word.
+ "Face used for marking a misspelled word that appears twice in the buffer.
See also `flyspell-duplicate-distance'."
:group 'flyspell)
;; backward-compatibility alias
@@ -1509,7 +1509,7 @@ The buffer to mark them in is `flyspell-large-region-buffer'."
(if flyspell-issue-message-flag (message "Checking region..."))
(set-buffer curbuf)
(ispell-check-version)
- (let ((c (apply 'call-process-region beg
+ (let ((c (apply 'ispell-call-process-region beg
end
ispell-program-name
nil
diff --git a/lisp/textmodes/org.el b/lisp/textmodes/org.el
index a727fa2df5a..8ee12638dee 100644
--- a/lisp/textmodes/org.el
+++ b/lisp/textmodes/org.el
@@ -5,7 +5,7 @@
;; Author: Carsten Dominik <dominik at science dot uva dot nl>
;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
-;; Version: 4.67c
+;; Version: 4.67d
;;
;; This file is part of GNU Emacs.
;;
@@ -7952,7 +7952,10 @@ Parameters get priority."
entry s)
(switch-to-buffer-other-window "*Edit Formulas*")
(erase-buffer)
- (fundamental-mode)
+ ;; Keep global-font-lock-mode from turning on font-lock-mode
+ (let ((font-lock-global-modes '(not fundamental-mode)))
+ (fundamental-mode))
+ (org-set-local 'font-lock-global-modes (list 'not major-mode))
(org-set-local 'org-pos pos)
(org-set-local 'org-window-configuration wc)
(use-local-map org-edit-formulas-map)
@@ -12945,6 +12948,8 @@ The following commands are available:
(setq org-agenda-undo-list nil
org-agenda-pending-undo-list nil)
(setq major-mode 'org-agenda-mode)
+ ;; Keep global-font-lock-mode from turning on font-lock-mode
+ (org-set-local 'font-lock-global-modes (list 'not major-mode))
(setq mode-name "Org-Agenda")
(use-local-map org-agenda-mode-map)
(easy-menu-add org-agenda-menu)
diff --git a/lisp/textmodes/reftex-auc.el b/lisp/textmodes/reftex-auc.el
index 7930574f0e7..02840a692e7 100644
--- a/lisp/textmodes/reftex-auc.el
+++ b/lisp/textmodes/reftex-auc.el
@@ -4,6 +4,7 @@
;; 2006, 2007 Free Software Foundation, Inc.
;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
;; Version: 4.31
;; This file is part of GNU Emacs.
diff --git a/lisp/textmodes/reftex-cite.el b/lisp/textmodes/reftex-cite.el
index ded1caa12bd..3dcd785dd4d 100644
--- a/lisp/textmodes/reftex-cite.el
+++ b/lisp/textmodes/reftex-cite.el
@@ -4,6 +4,7 @@
;; 2006, 2007 Free Software Foundation, Inc.
;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
;; Version: 4.31
;; This file is part of GNU Emacs.
diff --git a/lisp/textmodes/reftex-dcr.el b/lisp/textmodes/reftex-dcr.el
index bd0d75760b6..60ed932c534 100644
--- a/lisp/textmodes/reftex-dcr.el
+++ b/lisp/textmodes/reftex-dcr.el
@@ -4,8 +4,8 @@
;; 2006, 2007 Free Software Foundation, Inc.
;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
;; Version: 4.31
-;;
;; This file is part of GNU Emacs.
diff --git a/lisp/textmodes/reftex-global.el b/lisp/textmodes/reftex-global.el
index 403e4e84ea8..9ddfb5a4aca 100644
--- a/lisp/textmodes/reftex-global.el
+++ b/lisp/textmodes/reftex-global.el
@@ -4,6 +4,7 @@
;; 2006, 2007 Free Software Foundation, Inc.
;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
;; Version: 4.31
;; This file is part of GNU Emacs.
diff --git a/lisp/textmodes/reftex-index.el b/lisp/textmodes/reftex-index.el
index 25525fef6dd..ee2c2aefcf5 100644
--- a/lisp/textmodes/reftex-index.el
+++ b/lisp/textmodes/reftex-index.el
@@ -4,6 +4,7 @@
;; 2006, 2007 Free Software Foundation, Inc.
;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
;; Version: 4.31
;; This file is part of GNU Emacs.
diff --git a/lisp/textmodes/reftex-parse.el b/lisp/textmodes/reftex-parse.el
index 8ee552b3226..d18b3e85651 100644
--- a/lisp/textmodes/reftex-parse.el
+++ b/lisp/textmodes/reftex-parse.el
@@ -4,8 +4,8 @@
;; 2006, 2007 Free Software Foundation, Inc.
;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
;; Version: 4.31
-;;
;; This file is part of GNU Emacs.
diff --git a/lisp/textmodes/reftex-ref.el b/lisp/textmodes/reftex-ref.el
index a0471f18b82..e95dc16f133 100644
--- a/lisp/textmodes/reftex-ref.el
+++ b/lisp/textmodes/reftex-ref.el
@@ -4,6 +4,7 @@
;; 2006, 2007 Free Software Foundation, Inc.
;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
;; Version: 4.31
;; This file is part of GNU Emacs.
diff --git a/lisp/textmodes/reftex-sel.el b/lisp/textmodes/reftex-sel.el
index 9b9d60d1f62..8f1bb3d13a8 100644
--- a/lisp/textmodes/reftex-sel.el
+++ b/lisp/textmodes/reftex-sel.el
@@ -4,6 +4,7 @@
;; 2006, 2007 Free Software Foundation, Inc.
;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
;; Version: 4.31
;; This file is part of GNU Emacs.
diff --git a/lisp/textmodes/reftex-toc.el b/lisp/textmodes/reftex-toc.el
index 84269dfc091..8d2287b51cb 100644
--- a/lisp/textmodes/reftex-toc.el
+++ b/lisp/textmodes/reftex-toc.el
@@ -3,6 +3,7 @@
;; 2006, 2007 Free Software Foundation, Inc.
;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
;; Version: 4.31
;; This file is part of GNU Emacs.
diff --git a/lisp/textmodes/reftex-vars.el b/lisp/textmodes/reftex-vars.el
index 40e73b49f3d..bfc5581ccac 100644
--- a/lisp/textmodes/reftex-vars.el
+++ b/lisp/textmodes/reftex-vars.el
@@ -4,6 +4,7 @@
;; 2006, 2007 Free Software Foundation, Inc.
;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
;; Version: 4.31
;; This file is part of GNU Emacs.
diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el
index 39141541d82..343a7c5a947 100644
--- a/lisp/textmodes/reftex.el
+++ b/lisp/textmodes/reftex.el
@@ -3,6 +3,7 @@
;; 2006, 2007 Free Software Foundation, Inc.
;; Author: Carsten Dominik <dominik@science.uva.nl>
+;; Maintainer: auctex-devel@gnu.org
;; Version: 4.31
;; Keywords: tex
diff --git a/lisp/tmm.el b/lisp/tmm.el
index f9583e76cee..db2cc0c4c0a 100644
--- a/lisp/tmm.el
+++ b/lisp/tmm.el
@@ -41,7 +41,7 @@
(defvar tmm-short-cuts)
(defvar tmm-old-mb-map nil)
(defvar tmm-old-comp-map)
-(defvar tmm-c-prompt)
+(defvar tmm-c-prompt nil)
(defvar tmm-km-list)
(defvar tmm-next-shortcut-digit)
(defvar tmm-table-undef)
@@ -70,17 +70,22 @@ we make that menu bar item (the one at that position) the default choice."
(list this-one)))))
(setq list (cdr list))))
(if x-position
- (let ((tail menu-bar)
- this-one
- (column 0))
- (while (and tail (< column x-position))
+ (let ((tail menu-bar) (column 0)
+ this-one name visible)
+ (while (and tail (<= column x-position))
(setq this-one (car tail))
- (if (and (consp (car tail))
- (consp (cdr (car tail)))
- (stringp (nth 1 (car tail))))
- (setq column (+ column
- (length (nth 1 (car tail)))
- 1)))
+ (if (and (consp this-one)
+ (consp (cdr this-one))
+ (setq name ;simple menu
+ (cond ((stringp (nth 1 this-one))
+ (nth 1 this-one))
+ ;extended menu
+ ((stringp (nth 2 this-one))
+ (setq visible (plist-get
+ (nthcdr 4 this-one) :visible))
+ (unless (and visible (not (eval visible)))
+ (nth 2 this-one))))))
+ (setq column (+ column (length name) 1)))
(setq tail (cdr tail)))
(setq menu-bar-item (car this-one))))
(tmm-prompt menu-bar nil menu-bar-item)))
@@ -187,14 +192,20 @@ Its value should be an event that has a binding in MENU."
;; We use this to decide the initial minibuffer contents
;; and initial history position.
(if default-item
- (let ((tail menu))
+ (let ((tail menu) visible)
(while (and tail
(not (eq (car-safe (car tail)) default-item)))
;; Be careful to count only the elements of MENU
;; that actually constitute menu bar items.
(if (and (consp (car tail))
(or (stringp (car-safe (cdr (car tail))))
- (eq (car-safe (cdr (car tail))) 'menu-item)))
+ (and
+ (eq (car-safe (cdr (car tail))) 'menu-item)
+ (progn
+ (setq visible
+ (plist-get
+ (nthcdr 4 (car tail)) :visible))
+ (or (not visible) (eval visible))))))
(setq index-of-default (1+ index-of-default)))
(setq tail (cdr tail)))))
(let ((prompt (concat "^." (regexp-quote tmm-mid-prompt))))
@@ -209,21 +220,24 @@ Its value should be an event that has a binding in MENU."
(setq history (append history history history history))
(setq tmm-c-prompt (nth (- history-len 1 index-of-default) history))
(add-hook 'minibuffer-setup-hook 'tmm-add-prompt)
- (save-excursion
- (unwind-protect
- (setq out
- (completing-read
- (concat gl-str " (up/down to change, PgUp to menu): ")
- tmm-km-list nil t nil
- (cons 'history (- (* 2 history-len) index-of-default))))
- (save-excursion
- (remove-hook 'minibuffer-setup-hook 'tmm-add-prompt)
- (if (get-buffer "*Completions*")
- (progn
- (set-buffer "*Completions*")
- (use-local-map tmm-old-comp-map)
- (bury-buffer (current-buffer)))))
- ))))
+ (if default-item
+ (setq out (car (nth index-of-default tmm-km-list)))
+ (save-excursion
+ (unwind-protect
+ (setq out
+ (completing-read
+ (concat gl-str
+ " (up/down to change, PgUp to menu): ")
+ tmm-km-list nil t nil
+ (cons 'history
+ (- (* 2 history-len) index-of-default))))
+ (save-excursion
+ (remove-hook 'minibuffer-setup-hook 'tmm-add-prompt)
+ (if (get-buffer "*Completions*")
+ (progn
+ (set-buffer "*Completions*")
+ (use-local-map tmm-old-comp-map)
+ (bury-buffer (current-buffer))))))))))
(setq choice (cdr (assoc out tmm-km-list)))
(and (null choice)
(> (length out) (length tmm-c-prompt))
@@ -513,7 +527,7 @@ If KEYSEQ is a prefix key that has local and global bindings,
we merge them into a single keymap which shows the proper order of the menu.
However, for the menu bar itself, the value does not take account
of `menu-bar-final-items'."
- (let (allbind bind)
+ (let (allbind bind minorbind localbind globalbind)
(setq bind (key-binding keyseq))
;; If KEYSEQ is a prefix key, then BIND is either nil
;; or a symbol defined as a keymap (which satisfies keymapp).
@@ -524,9 +538,21 @@ of `menu-bar-final-items'."
(progn
;; Otherwise, it is a prefix, so make a list of the subcommands.
;; Make a list of all the bindings in all the keymaps.
- (setq allbind (mapcar 'cdr (minor-mode-key-binding keyseq)))
- (setq allbind (cons (local-key-binding keyseq) allbind))
- (setq allbind (cons (global-key-binding keyseq) allbind))
+ (setq minorbind (mapcar 'cdr (minor-mode-key-binding keyseq)))
+ (setq localbind (local-key-binding keyseq))
+ (setq globalbind (copy-sequence (cdr (global-key-binding keyseq))))
+
+ ;; If items have been redefined/undefined locally, remove them from
+ ;; the global list.
+ (dolist (minor minorbind)
+ (dolist (item (cdr minor))
+ (setq globalbind (assq-delete-all (car-safe item) globalbind))))
+ (dolist (item (cdr localbind))
+ (setq globalbind (assq-delete-all (car-safe item) globalbind)))
+
+ (setq globalbind (cons 'keymap globalbind))
+ (setq allbind (cons globalbind (cons localbind minorbind)))
+
;; Merge all the elements of ALLBIND into one keymap.
(mapc (lambda (in)
(if (and (symbolp in) (keymapp in))
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog
index eb058534f63..8c53d49fdd1 100644
--- a/lisp/url/ChangeLog
+++ b/lisp/url/ChangeLog
@@ -1,3 +1,28 @@
+2007-04-15 Chong Yidong <cyd@stupidchicken.com>
+
+ * url-parse.el (url-generic-parse-url): Revert 2006-10-09 changes.
+
+2007-04-13 Chong Yidong <cyd@stupidchicken.com>
+
+ * url-http.el (url-http-parse-headers): Stop after a set number of
+ redirections. Suggested by Diane Murray.
+
+ * url-vars.el (url-max-redirections): New var.
+
+2007-04-01 Diane Murray <disumu@x3y2z1.net> (tiny change)
+
+ * url-http.el (url-http-handle-cookies): Reverse list returned by
+ `mail-fetch-field', so that cookies are set in the correct order.
+
+ * url-cookie.el (url-cookie-retrieve, url-cookie-host-can-set-p):
+ Deal with wildcard dots in domain values.
+
+2007-03-31 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
+
+ * url-http.el (url-http-mark-connection-as-busy)
+ (url-http-mark-connection-as-free): Clear query-on-exit flag on
+ idle connections.
+
2007-02-04 Chong Yidong <cyd@stupidchicken.com>
* url-http.el (url-http-connection-opened): New variable.
@@ -51,7 +76,7 @@
(url-http-parse-response): Set it.
(url-http-parse-headers): Use it to determine keep-alive behavior.
-2006-11-23 Diane Murray <disumu@x3y2z1.net>
+2006-11-23 Diane Murray <disumu@x3y2z1.net> (tiny change)
* url-http.el (url-http-content-length-after-change-function): Use
`url-lazy-message'.
@@ -160,7 +185,7 @@
getenv returns an empty string for http_proxy. This prevents an
error when calling `format' later on.
-2006-08-31 Diane Murray <disumu@x3y2z1.net>
+2006-08-31 Diane Murray <disumu@x3y2z1.net> (tiny change)
* url-parse.el (url-recreate-url-attributes): New function, code
simply moved from `url-recreate-url'.
@@ -170,7 +195,7 @@
* url-http.el (url-http-create-request):
Use `url-recreate-url-attributes' when setting real-fname.
-2006-08-29 Diane Murray <disumu@x3y2z1.net>
+2006-08-29 Diane Murray <disumu@x3y2z1.net> (tiny change)
* url-cookie.el (url-cookie-write-file): Really don't use versioned
backups.
diff --git a/lisp/url/url-cookie.el b/lisp/url/url-cookie.el
index cfe4f8ecf71..8d729c92369 100644
--- a/lisp/url/url-cookie.el
+++ b/lisp/url/url-cookie.el
@@ -272,7 +272,15 @@ telling Microsoft that."
storage (cdr storage)
cookies (cdr cur))
(if (and (car cur)
- (string-match (concat "^.*" (regexp-quote (car cur)) "$") host))
+ (string-match
+ (concat "^.*"
+ (regexp-quote
+ ;; Remove the dot from wildcard domains
+ ;; before matching.
+ (if (eq ?. (aref (car cur) 0))
+ (substring (car cur) 1)
+ (car cur)))
+ "$") host))
;; The domains match - a possible hit!
(while cookies
(setq cur (car cookies)
@@ -344,7 +352,13 @@ telling Microsoft that."
((>= numdots mindots) ; We have enough dots in domain name
;; Need to check and make sure the host is actually _in_ the
;; domain it wants to set a cookie for though.
- (string-match (concat (regexp-quote domain) "$") host))
+ (string-match (concat (regexp-quote
+ ;; Remove the dot from wildcard domains
+ ;; before matching.
+ (if (eq ?. (aref domain 0))
+ (substring domain 1)
+ domain))
+ "$") host))
(t
nil))))
diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index 1d4d64f0e4d..d9ac81838d4 100644
--- a/lisp/url/url-http.el
+++ b/lisp/url/url-http.el
@@ -87,6 +87,7 @@ request.")
(defun url-http-mark-connection-as-busy (host port proc)
(url-http-debug "Marking connection as busy: %s:%d %S" host port proc)
+ (set-process-query-on-exit-flag proc t)
(puthash (cons host port)
(delq proc (gethash (cons host port) url-http-open-connections))
url-http-open-connections)
@@ -97,6 +98,7 @@ request.")
(when (memq (process-status proc) '(open run connect))
(set-process-buffer proc nil)
(set-process-sentinel proc 'url-http-idle-sentinel)
+ (set-process-query-on-exit-flag proc nil)
(puthash (cons host port)
(cons proc (gethash (cons host port) url-http-open-connections))
url-http-open-connections))
@@ -379,8 +381,8 @@ This allows us to use `mail-fetch-field', etc."
"Handle all set-cookie / set-cookie2 headers in an HTTP response.
The buffer must already be narrowed to the headers, so `mail-fetch-field' will
work correctly."
- (let ((cookies (mail-fetch-field "Set-Cookie" nil nil t))
- (cookies2 (mail-fetch-field "Set-Cookie2" nil nil t)))
+ (let ((cookies (nreverse (mail-fetch-field "Set-Cookie" nil nil t)))
+ (cookies2 (nreverse (mail-fetch-field "Set-Cookie2" nil nil t))))
(and cookies (url-http-debug "Found %d Set-Cookie headers" (length cookies)))
(and cookies2 (url-http-debug "Found %d Set-Cookie2 headers" (length cookies2)))
(while cookies
@@ -554,21 +556,43 @@ should be shown to the user."
(let ((url-request-method url-http-method)
(url-request-data url-http-data)
(url-request-extra-headers url-http-extra-headers))
- ;; Remember that the request was redirected.
- (setf (car url-callback-arguments)
- (nconc (list :redirect redirect-uri)
- (car url-callback-arguments)))
- ;; Put in the current buffer a forwarding pointer to the new
- ;; destination buffer.
- ;; FIXME: This is a hack to fix url-retrieve-synchronously
- ;; without changing the API. Instead url-retrieve should
- ;; either simply not return the "destination" buffer, or it
- ;; should take an optional `dest-buf' argument.
- (set (make-local-variable 'url-redirect-buffer)
- (url-retrieve-internal
- redirect-uri url-callback-function
- url-callback-arguments))
- (url-mark-buffer-as-dead (current-buffer))))))
+ ;; Check existing number of redirects
+ (if (or (< url-max-redirections 0)
+ (and (> url-max-redirections 0)
+ (let ((events (car url-callback-arguments))
+ (old-redirects 0))
+ (while events
+ (if (eq (car events) :redirect)
+ (setq old-redirects (1+ old-redirects)))
+ (and (setq events (cdr events))
+ (setq events (cdr events))))
+ (< old-redirects url-max-redirections))))
+ ;; url-max-redirections hasn't been reached, so go
+ ;; ahead and redirect.
+ (progn
+ ;; Remember that the request was redirected.
+ (setf (car url-callback-arguments)
+ (nconc (list :redirect redirect-uri)
+ (car url-callback-arguments)))
+ ;; Put in the current buffer a forwarding pointer to the new
+ ;; destination buffer.
+ ;; FIXME: This is a hack to fix url-retrieve-synchronously
+ ;; without changing the API. Instead url-retrieve should
+ ;; either simply not return the "destination" buffer, or it
+ ;; should take an optional `dest-buf' argument.
+ (set (make-local-variable 'url-redirect-buffer)
+ (url-retrieve-internal
+ redirect-uri url-callback-function
+ url-callback-arguments))
+ (url-mark-buffer-as-dead (current-buffer)))
+ ;; We hit url-max-redirections, so issue an error and
+ ;; stop redirecting.
+ (url-http-debug "Maximum redirections reached")
+ (setf (car url-callback-arguments)
+ (nconc (list :error (list 'error 'http-redirect-limit
+ redirect-uri))
+ (car url-callback-arguments)))
+ (setq success t))))))
(4 ; Client error
;; 400 Bad Request
;; 401 Unauthorized
diff --git a/lisp/url/url-parse.el b/lisp/url/url-parse.el
index 2b69c54133f..a9a0fb151e9 100644
--- a/lisp/url/url-parse.el
+++ b/lisp/url/url-parse.el
@@ -108,7 +108,7 @@
(defun url-recreate-url-attributes (urlobj)
"Recreate the attributes of an URL string from the parsed URLOBJ."
(when (url-attributes urlobj)
- (concat "?"
+ (concat ";"
(mapconcat (lambda (x)
(if (cdr x)
(concat (car x) "=" (cdr x))
@@ -168,7 +168,7 @@ Format is:
(setq full t)
(forward-char 2)
(setq save-pos (point))
- (skip-chars-forward "^/\\?#")
+ (skip-chars-forward "^/")
(setq host (buffer-substring save-pos (point)))
(if (string-match "^\\([^@]+\\)@" host)
(setq user (match-string 1 host)
@@ -189,25 +189,29 @@ Format is:
(setq port (url-scheme-get-property prot 'default-port)))
;; 3.3. Path
+ ;; Gross hack to preserve ';' in data URLs
(setq save-pos (point))
- (skip-chars-forward "^#?")
- (setq file (buffer-substring save-pos (point)))
;; 3.4. Query
- (when (looking-at "\\?")
- (forward-char 1)
- (setq save-pos (point))
+ (if (string= "data" prot)
+ (goto-char (point-max))
+ ;; Now check for references
(skip-chars-forward "^#")
- ;; RFC 3986 specifies no general way of parsing the query
- ;; string, but `url-parse-args' seems universal enough.
- (setq attr (url-parse-args (buffer-substring save-pos (point)) t)
- attr (nreverse attr)))
-
- ;; 3.5. Fragment
- (when (looking-at "#")
- (forward-char 1)
- (setq refs (buffer-substring (point) (point-max))))
+ (if (eobp)
+ nil
+ (delete-region
+ (point)
+ (progn
+ (skip-chars-forward "#")
+ (setq refs (buffer-substring (point) (point-max)))
+ (point-max))))
+ (goto-char save-pos)
+ (skip-chars-forward "^;")
+ (if (not (eobp))
+ (setq attr (url-parse-args (buffer-substring (point) (point-max)) t)
+ attr (nreverse attr))))
+ (setq file (buffer-substring save-pos (point)))
(if (and host (string-match "%[0-9][0-9]" host))
(setq host (url-unhex-string host)))
(vector prot user pass host port file refs attr full))))))
diff --git a/lisp/url/url-vars.el b/lisp/url/url-vars.el
index 705eb947001..d0bd9a84c05 100644
--- a/lisp/url/url-vars.el
+++ b/lisp/url/url-vars.el
@@ -320,6 +320,12 @@ undefined."
"\\`\\([-a-zA-Z0-9+.]+:\\)"
"A regular expression that will match an absolute URL.")
+(defcustom url-max-redirections 30
+ "*The maximum number of redirection requests to honor in a HTTP connection.
+A negative number means to honor an unlimited number of redirection requests."
+ :type 'integer
+ :group 'url)
+
(defcustom url-confirmation-func 'y-or-n-p
"*What function to use for asking yes or no functions.
Possible values are `yes-or-no-p' or `y-or-n-p', or any function that
diff --git a/lisp/vc-arch.el b/lisp/vc-arch.el
index 0f02db0ba96..488f9108d36 100644
--- a/lisp/vc-arch.el
+++ b/lisp/vc-arch.el
@@ -109,6 +109,19 @@
(defconst vc-arch-tagline-re "^\\W*arch-tag:[ \t]*\\(.*[^ \t\n]\\)")
+(defmacro vc-with-current-file-buffer (file &rest body)
+ (declare (indent 2) (debug t))
+ `(let ((-kill-buf- nil)
+ (-file- ,file))
+ (with-current-buffer (or (find-buffer-visiting -file-)
+ (setq -kill-buf- (generate-new-buffer " temp")))
+ ;; Avoid find-file-literally since it can do many undesirable extra
+ ;; things (among which, call us back into an infinite loop).
+ (if -kill-buf- (insert-file-contents -file-))
+ (unwind-protect
+ (progn ,@body)
+ (if (buffer-live-p -kill-buf-) (kill-buffer -kill-buf-))))))
+
(defun vc-arch-file-source-p (file)
"Can return nil, `maybe' or a non-nil value.
Only the value `maybe' can be trusted :-(."
@@ -122,7 +135,7 @@ Only the value `maybe' can be trusted :-(."
(concat ".arch-ids/" (file-name-nondirectory file) ".id")
(file-name-directory file)))
;; Check the presence of a tagline.
- (with-current-buffer (find-file-noselect file)
+ (vc-with-current-file-buffer file
(save-excursion
(goto-char (point-max))
(or (re-search-backward vc-arch-tagline-re (- (point) 1000) t)
diff --git a/lisp/vc-rcs.el b/lisp/vc-rcs.el
index ae4758169f4..a4b3b11301e 100644
--- a/lisp/vc-rcs.el
+++ b/lisp/vc-rcs.el
@@ -666,6 +666,7 @@ Optional arg REVISION is a revision to annotate from."
" "
(aref rda 0)
ls)
+ :vc-annotate-prefix t
:vc-rcs-r/d/a rda)))
(maphash
(if all-me
@@ -688,9 +689,9 @@ encoded as fractional days."
"Return the time of the next annotation (as fraction of days)
systime, or nil if there is none. Also, reposition point."
(unless (eobp)
- (search-forward ": ")
- (vc-annotate-convert-time
- (aref (get-text-property (point) :vc-rcs-r/d/a) 1))))
+ (prog1 (vc-annotate-convert-time
+ (aref (get-text-property (point) :vc-rcs-r/d/a) 1))
+ (goto-char (next-single-property-change (point) :vc-annotate-prefix)))))
(defun vc-rcs-annotate-extract-revision-at-line ()
(aref (get-text-property (point) :vc-rcs-r/d/a) 0))
@@ -907,7 +908,7 @@ Returns: nil if no headers were found
(vc-file-setprop file 'vc-state
(cond
((eq locking-user 'none) 'up-to-date)
- ((string= locking-user (vc-user-login-name file))
+ ((string= locking-user (vc-user-login-name file))
'edited)
(t locking-user)))
;; If the file has headers, we don't want to query the
diff --git a/lisp/view.el b/lisp/view.el
index f914624d6f6..8dd9e032868 100644
--- a/lisp/view.el
+++ b/lisp/view.el
@@ -438,7 +438,7 @@ p searches backward for last regular expression.
\\[View-leave] quit View mode and maybe switch buffers, but don't kill this buffer.
\\[View-kill-and-leave] quit View mode, kill current buffer and go back to other buffer.
-The effect of \\[View-leave] , \\[View-quit] and \\[View-kill-and-leave] depends on how view-mode was entered. If it was
+The effect of \\[View-leave], \\[View-quit] and \\[View-kill-and-leave] depends on how view-mode was entered. If it was
entered by view-file, view-file-other-window, view-file-other-frame, or
\\[dired-view-file] \(\\[view-file], \\[view-file-other-window],
\\[view-file-other-frame], or the Dired mode v command),
@@ -446,7 +446,7 @@ then \\[View-quit] will try to kill the current buffer.
If view-mode was entered from another buffer, by \\[view-buffer],
\\[view-buffer-other-window], \\[view-buffer-other frame], \\[view-file],
\\[view-file-other-window], or \\[view-file-other-frame],
-then \\[View-leave] , \\[View-quit] and \\[View-kill-and-leave] will return to that buffer.
+then \\[View-leave], \\[View-quit] and \\[View-kill-and-leave] will return to that buffer.
Entry to view-mode runs the normal hook `view-mode-hook'."
(interactive "P")
diff --git a/lisp/whitespace.el b/lisp/whitespace.el
index dc7f691e721..1c670d77458 100644
--- a/lisp/whitespace.el
+++ b/lisp/whitespace.el
@@ -102,42 +102,34 @@ visited by the buffers.")
(defvar whitespace-mode nil
"Non-nil when Whitespace mode (a minor mode) is enabled.")
(make-variable-buffer-local 'whitespace-mode)
-(put 'whitespace-mode 'permanent-local nil)
(defvar whitespace-mode-line nil
"String to display in the mode line for Whitespace mode.")
(make-variable-buffer-local 'whitespace-mode-line)
-(put 'whitespace-mode-line 'permanent-local nil)
(defvar whitespace-check-buffer-leading nil
"Test leading whitespace for file in current buffer if t.")
(make-variable-buffer-local 'whitespace-check-buffer-leading)
-(put 'whitespace-check-buffer-leading 'permanent-local nil)
(defvar whitespace-check-buffer-trailing nil
"Test trailing whitespace for file in current buffer if t.")
(make-variable-buffer-local 'whitespace-check-buffer-trailing)
-(put 'whitespace-check-buffer-trailing 'permanent-local nil)
(defvar whitespace-check-buffer-indent nil
"Test indentation whitespace for file in current buffer if t.")
(make-variable-buffer-local 'whitespace-check-buffer-indent)
-(put 'whitespace-check-buffer-indent 'permanent-local nil)
(defvar whitespace-check-buffer-spacetab nil
"Test Space-followed-by-TABS whitespace for file in current buffer if t.")
(make-variable-buffer-local 'whitespace-check-buffer-spacetab)
-(put 'whitespace-check-buffer-spacetab 'permanent-local nil)
(defvar whitespace-check-buffer-ateol nil
"Test end-of-line whitespace for file in current buffer if t.")
(make-variable-buffer-local 'whitespace-check-buffer-ateol)
-(put 'whitespace-check-buffer-ateol 'permanent-local nil)
(defvar whitespace-highlighted-space nil
"The variable to store the extent to highlight.")
(make-variable-buffer-local 'whitespace-highlighted-space)
-(put 'whitespace-highlighted-space 'permanent-local nil)
;; For flavors of Emacs which don't define `defgroup' and `defcustom'.
(eval-when-compile
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index 035f54b8980..4c560918594 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -84,7 +84,7 @@
:group 'hypermedia)
(defgroup widget-documentation nil
- "Options controling the display of documentation strings."
+ "Options controlling the display of documentation strings."
:group 'widgets)
(defgroup widget-faces nil
diff --git a/lisp/woman.el b/lisp/woman.el
index ffa0ea692ad..43ebd8df013 100644
--- a/lisp/woman.el
+++ b/lisp/woman.el
@@ -486,24 +486,28 @@ As a special case, if PATHS is nil then replace it by calling
(defun woman-Cyg-to-Win (file)
"Convert an absolute filename FILE from Cygwin to Windows form."
- ;; Code taken from w32-symlinks.el
- (if (eq (aref file 0) ?/)
- ;; Try to use Cygwin mount table via `cygpath.exe'.
- (condition-case nil
- (with-temp-buffer
- ;; cygpath -m file
- (call-process "cygpath" nil t nil "-m" file)
- (buffer-substring 1 (buffer-size)))
- (error
- ;; Assume no `cygpath' program available.
- ;; Hack /cygdrive/x/ or /x/ or (obsolete) //x/ to x:/
- (when (string-match "\\`\\(/cygdrive\\|/\\)?/./" file)
- (if (match-string 1) ; /cygdrive/x/ or //x/ -> /x/
- (setq file (substring file (match-end 1))))
- (aset file 0 (aref file 1)) ; /x/ -> xx/
- (aset file 1 ?:)) ; xx/ -> x:/
- file))
- file))
+ ;; MANPATH_MAP conses are not converted since they presumably map
+ ;; Cygwin to Cygwin form.
+ (if (consp file)
+ file
+ ;; Code taken from w32-symlinks.el
+ (if (eq (aref file 0) ?/)
+ ;; Try to use Cygwin mount table via `cygpath.exe'.
+ (condition-case nil
+ (with-temp-buffer
+ ;; cygpath -m file
+ (call-process "cygpath" nil t nil "-m" file)
+ (buffer-substring 1 (buffer-size)))
+ (error
+ ;; Assume no `cygpath' program available.
+ ;; Hack /cygdrive/x/ or /x/ or (obsolete) //x/ to x:/
+ (when (string-match "\\`\\(/cygdrive\\|/\\)?/./" file)
+ (if (match-string 1) ; /cygdrive/x/ or //x/ -> /x/
+ (setq file (substring file (match-end 1))))
+ (aset file 0 (aref file 1)) ; /x/ -> xx/
+ (aset file 1 ?:)) ; xx/ -> x:/
+ file))
+ file)))
;;; User options:
@@ -547,11 +551,12 @@ Change only via `Customization' or the function `add-hook'."
(mapcar 'woman-Cyg-to-Win path)
path))
"*List of dirs to search and/or files to try for man config file.
-A trailing separator (`/' for UNIX etc.) on directories is optional,
-and the filename is used if a directory specified is the first to
-contain the strings \"man\" and \".conf\" (in that order).
-If MANPATH is not set but a config file is found then it is parsed
-instead to provide a default value for `woman-manpath'."
+A trailing separator (`/' for UNIX etc.) on directories is
+optional, and the filename is used if a directory specified is
+the first to start with \"man\" and has an extension starting
+with \".conf\". If MANPATH is not set but a config file is found
+then it is parsed instead to provide a default value for
+`woman-manpath'."
:type '(repeat string)
:group 'woman-interface)
@@ -564,7 +569,9 @@ Concatenate data from all lines in the config file of the form
or
MANDATORY_MANPATH /usr/man
or
- OPTIONAL_MANPATH /usr/man"
+ OPTIONAL_MANPATH /usr/man
+or
+ MANPATH_MAP /opt/bin /opt/man"
;; Functionality suggested by Charles Curley.
(let ((path woman-man.conf-path)
file manpath)
@@ -576,7 +583,7 @@ or
(or (not (file-directory-p file))
(and
(setq file
- (directory-files file t "man.*\\.conf" t))
+ (directory-files file t "\\`man.*\\.conf[a-z]*\\'" t))
(file-readable-p (setq file (car file)))))
;; Parse the file -- if no MANPATH data ignore it:
(with-temp-buffer
@@ -584,8 +591,13 @@ or
(while (re-search-forward
;; `\(?: ... \)' is a "shy group"
"\
-^[ \t]*\\(?:MANDATORY_\\|OPTIONAL_\\)?MANPATH[ \t]+\\(\\S-+\\)" nil t)
- (setq manpath (cons (match-string 1) manpath)))
+^[ \t]*\\(?:\\(?:MANDATORY_\\|OPTIONAL_\\)?MANPATH[ \t]+\\(\\S-+\\)\\|\
+MANPATH_MAP[ \t]+\\(\\S-+\\)[ \t]+\\(\\S-+\\)\\)" nil t)
+ (add-to-list 'manpath
+ (if (match-beginning 1)
+ (match-string 1)
+ (cons (match-string 2)
+ (match-string 3)))))
manpath))
))
(setq path (cdr path)))
@@ -600,6 +612,11 @@ subdirectories of the form `man?', or more precisely subdirectories
selected by the value of `woman-manpath-man-regexp'. Non-directory
and unreadable files are ignored.
+Elements can also be a cons cell indicating a mapping from PATH
+to manual trees: if such an element's car is equal to a path
+element of the environment variable PATH, the cdr of the cons
+cell is included in the directory tree search.
+
If not set then the environment variable MANPATH is used. If no such
environment variable is found, the default list is determined by
consulting the man configuration file if found, which is determined by
@@ -618,7 +635,7 @@ I recommend including drive letters explicitly, e.g.
The MANPATH environment variable may be set using DOS semi-colon-
separated or UN*X/Cygwin colon-separated syntax (but not mixed)."
- :type '(repeat string)
+ :type '(repeat (choice string (cons string string)))
:group 'woman-interface)
(defcustom woman-manpath-man-regexp "[Mm][Aa][Nn]"
@@ -1159,7 +1176,14 @@ Set from the cache by `woman-read-directory-cache'.")
Called both to generate and to check the cache!"
;; Must use substituted paths because values of env vars may change!
(list woman-cache-level
- (mapcar 'substitute-in-file-name woman-manpath)
+ (let (lst path)
+ (dolist (dir woman-manpath (nreverse lst))
+ (when (consp dir)
+ (unless path
+ (setq path
+ (split-string (getenv "PATH") path-separator t)))
+ (setq dir (and (member (car dir) path) (cdr dir))))
+ (when dir (add-to-list 'lst (substitute-in-file-name dir)))))
(mapcar 'substitute-in-file-name woman-path)))
(defun woman-read-directory-cache ()
@@ -1320,10 +1344,15 @@ Ignore any paths that are unreadable or not directories."
;; Allow each path to be a single string or a list of strings:
(if (not (listp woman-manpath)) (setq woman-manpath (list woman-manpath)))
(if (not (listp woman-path)) (setq woman-path (list woman-path)))
- (let (dir head dirs)
+ (let (dir head dirs path)
(while woman-manpath
(setq dir (car woman-manpath)
woman-manpath (cdr woman-manpath))
+ (when (consp dir)
+ (unless path
+ (setq path (split-string (getenv "PATH") path-separator t)))
+ (setq dir (and (member (car dir) path)
+ (cdr dir))))
(if (and dir (woman-file-readable-p dir))
;; NB: `parse-colon-path' creates null elements for
;; redundant (semi-)colons and trailing `/'s!
@@ -2102,18 +2131,6 @@ No external programs are used."
(interactive) ; mainly for testing
(WoMan-log-begin)
(run-hooks 'woman-pre-format-hook)
-
- ;; look for macro sets that woman cannot handle:
- (goto-char (point-min))
- (let ((case-fold-search nil))
- (unless (and (re-search-forward "^\\.SH[ \n]" (point-max) t)
- (progn (goto-char (point-min))
- (re-search-forward "^\\.TH[ \n]" (point-max) t))
- (progn (goto-char (point-min))
- (not (re-search-forward "^\\.\\([pnil]p\\|sh\\)[ \n]"
- (point-max) t))))
- (error "WoMan can only format man pages written with the usual `-man' macros")))
-
(and (boundp 'font-lock-mode) font-lock-mode (font-lock-mode -1))
;; (fundamental-mode)
(let ((start-time (current-time)) ; (HIGH LOW MICROSEC)
@@ -2269,6 +2286,18 @@ Currently set only from '\" t in the first line of the source file.")
;; conditionals and switch source requests:
(woman0-roff-buffer from)
+ ;; Check for macro sets that woman cannot handle. We can only
+ ;; because do this after processing source-switch directives.
+ (goto-char (point-min))
+ (let ((case-fold-search nil))
+ (unless (and (re-search-forward "^\\.SH[ \n]" (point-max) t)
+ (progn (goto-char (point-min))
+ (re-search-forward "^\\.TH[ \n]" (point-max) t))
+ (progn (goto-char (point-min))
+ (not (re-search-forward "^\\.\\([pnil]p\\|sh\\)[ \n]"
+ (point-max) t))))
+ (error "WoMan can only format man pages written with the usual `-man' macros")))
+
;; Process \k escapes BEFORE changing tab width (?):
(goto-char from)
(woman-mark-horizonal-position)
diff --git a/lisp/xt-mouse.el b/lisp/xt-mouse.el
index 899049cef03..ede5f1359f7 100644
--- a/lisp/xt-mouse.el
+++ b/lisp/xt-mouse.el
@@ -50,7 +50,8 @@
;; Mouse events symbols must have an 'event-kind property with
;; the value 'mouse-click.
-(dolist (event-type '(mouse-1 mouse-2 mouse-3))
+(dolist (event-type '(mouse-1 mouse-2 mouse-3
+ M-down-mouse-1 M-down-mouse-2 M-down-mouse-3))
(put event-type 'event-kind 'mouse-click))
(defun xterm-mouse-translate (event)
@@ -108,6 +109,8 @@
;;(defvar xterm-mouse-y 0
;; "Position of last xterm mouse event relative to the frame.")
+(defvar xt-mouse-epoch nil)
+
;; Indicator for the xterm-mouse mode.
(defun xterm-mouse-position-function (pos)
@@ -129,6 +132,13 @@
(let* ((type (- (xterm-mouse-event-read) #o40))
(x (- (xterm-mouse-event-read) #o40 1))
(y (- (xterm-mouse-event-read) #o40 1))
+ ;; Emulate timestamp information. This is accurate enough
+ ;; for default value of mouse-1-click-follows-link (450msec).
+ (timestamp (truncate
+ (* 1000
+ (- (float-time)
+ (or xt-mouse-epoch
+ (setq xt-mouse-epoch (float-time)))))))
(mouse (intern
;; For buttons > 3, the release-event looks
;; differently (see xc/programs/xterm/button.c,
@@ -136,6 +146,11 @@
;; a release-event only, no down-event.
(cond ((>= type 64)
(format "mouse-%d" (- type 60)))
+ ((memq type '(8 9 10))
+ (setq xterm-mouse-last type)
+ (format "M-down-mouse-%d" (- type 7)))
+ ((= type 11)
+ (format "mouse-%d" (- xterm-mouse-last 7)))
((= type 3)
(format "mouse-%d" (+ 1 xterm-mouse-last)))
(t
@@ -150,10 +165,13 @@
(set-terminal-parameter nil 'xterm-mouse-y y)
(setq
last-input-event
- (if w
- (list mouse (posn-at-x-y (- x left) (- y top) w t))
- (list mouse
- (append (list nil 'menu-bar) (nthcdr 2 (posn-at-x-y x y w t))))))))
+ (list mouse
+ (let ((event (if w
+ (posn-at-x-y (- x left) (- y top) w t)
+ (append (list nil 'menu-bar)
+ (nthcdr 2 (posn-at-x-y x y))))))
+ (setcar (nthcdr 3 event) timestamp)
+ event)))))
;;;###autoload
(define-minor-mode xterm-mouse-mode
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index 1510ec19e05..87aae706fc6 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,282 @@
+2007-04-15 Chong Yidong <cyd@stupidchicken.com>
+
+ * frames.texi (Multiple Displays): Add note about "multi-monitor"
+ setups.
+ (Display Feature Testing): Note that display refers to all
+ physical monitors for multi-monitor setups.
+
+2007-04-14 Richard Stallman <rms@gnu.org>
+
+ * lists.texi (Sets And Lists): Clarify `delete' examples.
+ Remove spurious xref to same node.
+ Clarify xref for add-to-list.
+
+2007-04-12 Nick Roberts <nickrob@snap.net.nz>
+
+ * keymaps.texi (Format of Keymaps): Remove spurious ")" from
+ value of lisp-mode-map.
+
+2007-04-11 Karl Berry <karl@gnu.org>
+
+ * anti.texi (Antinews),
+ * display.texi (Overlay Properties) and (Defining Images),
+ * processes.texi (Synchronous Processes) and (Sentinels),
+ * syntax.texi (Syntax Table Internals),
+ * searching.texi (Regexp Special),
+ * nonascii.texi (Default Coding Systems),
+ * text.texi (Special Properties),
+ * minibuf.texi (Basic Completion): Wording to improve breaks in
+ 8.5x11 format.
+ * elisp.texi (smallbook): new @set to more easily switch between
+ smallbook and 8.5x11.
+
+2007-04-11 Richard Stallman <rms@gnu.org>
+
+ * text.texi (Lazy Properties): Minor fix.
+
+2007-04-08 Karl Berry <karl@gnu.org>
+
+ * symbols.texi (Plists and Alists): Period after "vs" in index entries.
+ * macros.texi (Backquote): Downcase Backquote in index entries for
+ consistency.
+
+2007-04-08 Richard Stallman <rms@gnu.org>
+
+ * text.texi (Adaptive Fill): Just describe default,
+ don't show it (since it contains non-ASCII chars).
+
+2007-04-07 Karl Berry <karl@gnu.org>
+
+ * text.texi (Adaptive Fill) [@iftex]: Omit binary characters in
+ adaptive-fill-regexp's value, since they are not in the standard
+ TeX fonts.
+
+2007-04-07 Herbert Euler <herberteuler@hotmail.com>
+
+ * display.texi (Defining Faces): Fix example.
+
+2007-04-07 Karl Berry <karl@gnu.org>
+
+ * display.texi (Button Buffer Commands): Improve page break.
+
+2007-04-07 Richard Stallman <rms@gnu.org>
+
+ * advice.texi (Activation of Advice): Remove redundant index entry.
+
+ * backups.texi: Improve index entries. Remove redundant ones.
+
+ * compile.texi (Byte Compilation): Improve index entry.
+
+ * hash.texi (Creating Hash): Improve index entry.
+
+ * symbols.texi (Definitions): Improve index entry.
+
+ * edebug.texi: Improve index entries. Remove redundant/useless ones.
+
+ * maps.texi (Standard Keymaps): Remove useless index entry.
+
+ * help.texi (Documentation Basics): Remove redundant index entries.
+
+ * customize.texi: Improve index entries.
+ Remove redundant/useless ones.
+
+ * locals.texi (Standard Buffer-Local Variables): Clarify intro text.
+
+ * streams.texi (Output Variables): Improve index entry.
+
+ * abbrevs.texi (Abbrevs): Remove useless index entry.
+
+ * macros.texi (Expansion): Remove useless index entry.
+
+ * text.texi: Improve index entries. Remove redundant/useless ones.
+ (Text Properties, Examining Properties)
+ (Special Properties): Use "property category" instead of "category"
+ to refer to the `category' property.
+
+ * positions.texi: Improve index entries. Remove useless one.
+
+ * lists.texi: Improve index entries. Remove redundant/useless ones.
+
+ * os.texi: Improve index entries.
+ (Timers): Fix previous change.
+
+ * buffers.texi: Improve index entries.
+ (Modification Time): Get rid of term "obsolete buffer".
+
+ * debugging.texi: Improve index entries.
+ (Test Coverage): Add xref to other test coverage ftr.
+
+ * eval.texi: Improve index entry. Remove redundant ones.
+
+ * numbers.texi: Improve index entries. Remove redundant/useless ones.
+
+ * files.texi: Improve index entries. Remove redundant/useless ones.
+
+ * objects.texi: Improve index entries.
+
+ * processes.texi: Improve index entries.
+
+ * modes.texi: Improve index entry. Remove redundant one.
+
+ * nonascii.texi: Improve index entries.
+
+ * internals.texi: Improve index entries.
+
+ * syntax.texi: Improve index entries.
+
+ * keymaps.texi (Active Keymaps): Improve index entries.
+
+ * commands.texi: Improve index entries. Remove redundant/useless ones.
+
+ * frames.texi: Improve index entries. Remove redundant/useless ones.
+
+ * markers.texi: Improve index entries. Remove redundant ones.
+
+ * tips.texi: Improve index entries.
+
+ * loading.texi (Unloading): Improve index entry.
+
+ * variables.texi: Improve index entries. Remove redundant one.
+
+ * sequences.texi: Improve index entry.
+
+ * display.texi: Improve index entries. Remove redundant ones.
+
+ * windows.texi: Improve index entries.
+
+ * searching.texi: Improve index entries. Remove redundant one.
+
+ * strings.texi (Case Tables): Improve last change.
+
+2007-04-04 Chong Yidong <cyd@stupidchicken.com>
+
+ * strings.texi (Case Tables): Document with-case-table and
+ ascii-case-table.
+
+2007-04-03 Karl Berry <karl@gnu.org>
+
+ * processes.texi (Network): Reword to improve page break.
+
+2007-04-03 Eli Zaretskii <eliz@gnu.org>
+
+ * functions.texi (Inline Functions): Describe more disadvantages
+ of defsubst, and make advice against it stronger.
+
+2007-04-02 Karl Berry <karl@gnu.org>
+
+ * backups.texi (Backup Names): Avoid widow words.
+ * modes.texi (Example Major Modes): Align last comment.
+
+2007-04-01 Chong Yidong <cyd@stupidchicken.com>
+
+ * keymaps.texi (Remapping Commands): Document new arg to
+ command-remapping.
+
+2007-04-01 Karl Berry <karl@gnu.org>
+
+ * processes.texi (Low-Level Network): typo.
+ * loading.texi (Hooks for Loading): avoid double "the".
+ * keymaps.texi (Key Sequences): no double "and".
+ (Changing Key Bindings): shorten to improve line break.
+
+2007-03-31 Glenn Morris <rgm@gnu.org>
+
+ * os.texi (Timers): Fix description of run-at-time TIME formats.
+
+2007-03-31 Richard Stallman <rms@gnu.org>
+
+ * display.texi (Invisible Text): Correct buffer-invisibility-spec
+ regarding ellipsis.
+
+2007-03-31 Eli Zaretskii <eliz@gnu.org>
+
+ * intro.texi (nil and t):
+ * symbols.texi (Plists and Alists):
+ * variables.texi (Variable Aliases, Constant Variables):
+ * functions.texi (Defining Functions):
+ * advice.texi (Advising Primitives):
+ * debugging.texi (Syntax Errors, Compilation Errors):
+ * minibuf.texi (Minibuffer Windows):
+ * commands.texi (Adjusting Point):
+ * modes.texi (Syntactic Font Lock, Faces for Font Lock)
+ (Auto Major Mode, Major Mode Conventions):
+ * help.texi (Describing Characters):
+ * files.texi (Create/Delete Dirs, Information about Files)
+ (File Locks, Writing to Files, Reading from Files)
+ (Saving Buffers):
+ * windows.texi (Resizing Windows, Cyclic Window Ordering):
+ * frames.texi (Finding All Frames):
+ * positions.texi (Buffer End, Motion):
+ * markers.texi (The Region):
+ * text.texi (Deletion, Near Point):
+ * display.texi (Displaying Messages, Truncation):
+ * os.texi (Processor Run Time):
+ * tips.texi (Key Binding Conventions, Programming Tips)
+ (Warning Tips, Documentation Tips, Comment Tips):
+ * internals.texi (Memory Usage): Improve indexing.
+
+ * variables.texi (Frame-Local Variables):
+ * functions.texi (Argument List):
+ * loading.texi (Library Search):
+ * streams.texi (Output Variables):
+ * keymaps.texi (Translation Keymaps, Searching Keymaps):
+ * searching.texi (Replacing Match, Search and Replace):
+ * processes.texi (Byte Packing, Decoding Output)
+ (Accepting Output, Network Servers, Shell Arguments):
+ * display.texi (Abstract Display, Image Cache, Scroll Bars):
+ * windows.texi (Window Point, Window Start):
+ * frames.texi (Management Parameters, Frame Parameters, Frame Titles):
+ * commands.texi (Reading Input, Keyboard Events):
+ * minibuf.texi (Reading File Names, Minibuffer Completion)
+ (Recursive Mini):
+ * positions.texi (List Motion):
+ * hash.texi (Hash Tables, Creating Hash, Defining Hash):
+ * numbers.texi (Arithmetic Operations, Math Functions)
+ (Predicates on Numbers, Comparison of Numbers):
+ (Numeric Conversions):
+ * locals.texi (Standard Buffer-Local Variables):
+ * maps.texi (Standard Keymaps):
+ * os.texi (User Identification, System Environment, Recording Input)
+ (X11 Keysyms):
+ * nonascii.texi (Non-ASCII Characters, Splitting Characters):
+ * backups.texi (Backups and Auto-Saving):
+ * customize.texi (Customization, Group Definitions)
+ (Variable Definitions):
+ * compile.texi (Byte Compilation): Improve index entries.
+
+2007-03-31 Karl Berry <karl@gnu.org>
+
+ * macros.texi (Defining Macros): Avoid widow syllable.
+
+2007-03-31 Eli Zaretskii <eliz@gnu.org>
+
+ * elisp.texi (Top): Postscript -> PostScript.
+
+ * display.texi (Images, Postscript Images): Postscript -> PostScript.
+
+2007-03-31 Markus Triska <markus.triska@gmx.at>
+
+ * internals.texi (Writing Emacs Primitives): Untabify `For'.
+
+2007-03-30 Karl Berry <karl@gnu.org>
+
+ * lists.texi (List-related Predicates): Remove spurious @need.
+ (Setcdr): Use @smallexample to improve page break.
+ (Association Lists) <assoc>: Reword to improve page break.
+
+ * strings.texi (String Conversion): Insert blank line to improve
+ page break.
+
+ * numbers.texi (Random Numbers): Use @minus{}.
+ (Math Functions): Use @minus{}.
+
+ * intro.texi (Acknowledgements): Avoid line breaks before middle
+ initials.
+
+2007-03-24 Eli Zaretskii <eliz@gnu.org>
+
+ * errors.texi (Standard Errors): Add an index entry.
+
2007-03-19 Richard Stallman <rms@gnu.org>
* os.texi (Recording Input): recent-keys now gives 300 keys.
diff --git a/lispref/abbrevs.texi b/lispref/abbrevs.texi
index 53f6f194ee1..46e7c3739c4 100644
--- a/lispref/abbrevs.texi
+++ b/lispref/abbrevs.texi
@@ -7,7 +7,7 @@
@node Abbrevs, Processes, Syntax Tables, Top
@chapter Abbrevs and Abbrev Expansion
@cindex abbrev
-@cindex abbrev table
+@c @cindex abbrev table Redundant with "abbrev".
An abbreviation or @dfn{abbrev} is a string of characters that may be
expanded to a longer string. The user can insert the abbrev string and
diff --git a/lispref/advice.texi b/lispref/advice.texi
index 003e12ad833..4d580f9846d 100644
--- a/lispref/advice.texi
+++ b/lispref/advice.texi
@@ -384,7 +384,7 @@ activated advice for @var{function}, it activates the new advice.
@deffn Command ad-deactivate function
This command deactivates the advice for @var{function}.
@cindex deactivating advice
-@cindex advice, deactivating
+@c @cindex advice, deactivating "advice, activating" is just above
@end deffn
@deffn Command ad-update function &optional compile
@@ -673,6 +673,7 @@ Instead they are implemented specially by the advice mechanism.
@node Advising Primitives
@section Advising Primitives
+@cindex advising primitives
Advising a primitive function (also called a ``subr'') is risky.
Some primitive functions are used by the advice mechanism; advising
diff --git a/lispref/anti.texi b/lispref/anti.texi
index de07936d2f4..b258e959a46 100644
--- a/lispref/anti.texi
+++ b/lispref/anti.texi
@@ -433,11 +433,10 @@ The @code{table} argument to @code{translate-region} can no longer be
a char-table; it has to be a string.
@item
-The two functions @code{merge-coding-systems} and
-@code{decode-coding-inserted-region}, and the variable
-@code{auto-coding-functions}, have been deleted. The
-@code{mime-text-unsuitable} coding system property no longer has any
-special meaning.
+The variable @code{auto-coding-functions} and the two functions
+@code{merge-coding-systems} and @code{decode-coding-inserted-region}
+have been deleted. The coding system property
+@code{mime-text-unsuitable} no longer has any special meaning.
@item
If pure storage overflows while dumping, Emacs won't tell you how much
diff --git a/lispref/backups.texi b/lispref/backups.texi
index 893f6df4205..44795557f15 100644
--- a/lispref/backups.texi
+++ b/lispref/backups.texi
@@ -6,6 +6,7 @@
@setfilename ../info/backups
@node Backups and Auto-Saving, Buffers, Files, Top
@chapter Backups and Auto-Saving
+@cindex backups and auto-saving
Backup files and auto-save files are two methods by which Emacs tries
to protect the user from the consequences of crashes or of the user's
@@ -25,10 +26,10 @@ current session.
A @dfn{backup file} is a copy of the old contents of a file you are
editing. Emacs makes a backup file the first time you save a buffer
-into its visited file. Normally, this means that the backup file
-contains the contents of the file as it was before the current editing
-session. The contents of the backup file normally remain unchanged once
-it exists.
+into its visited file. Thus, normally, the backup file contains the
+contents of the file as it was before the current editing session.
+The contents of the backup file normally remain unchanged once it
+exists.
Backups are usually made by renaming the visited file to a new name.
Optionally, you can specify that backup files should be made by copying
@@ -66,11 +67,11 @@ function returns @code{nil}.
@end defun
@defvar buffer-backed-up
- This buffer-local variable indicates whether this buffer's file has
-been backed up on account of this buffer. If it is non-@code{nil}, then
+ This buffer-local variable says whether this buffer's file has
+been backed up on account of this buffer. If it is non-@code{nil},
the backup file has been written. Otherwise, the file should be backed
up when it is next saved (if backups are enabled). This is a
-permanent local; @code{kill-all-local-variables} does not alter it.
+permanent local; @code{kill-all-local-variables} does not alter@tie{}it.
@end defvar
@defopt make-backup-files
@@ -162,7 +163,7 @@ files. If you define it, you may need to change
@node Rename or Copy
@subsection Backup by Renaming or by Copying?
-@cindex backup files, how to make them
+@cindex backup files, rename or copy
There are two ways that Emacs can make a backup file:
@@ -268,12 +269,12 @@ automatically or it can ask the user whether to delete them.
@defopt kept-new-versions
The value of this variable is the number of newest versions to keep
when a new numbered backup is made. The newly made backup is included
-in the count. The default value is 2.
+in the count. The default value is@tie{}2.
@end defopt
@defopt kept-old-versions
The value of this variable is the number of oldest versions to keep
-when a new numbered backup is made. The default value is 2.
+when a new numbered backup is made. The default value is@tie{}2.
@end defopt
If there are backups numbered 1, 2, 3, 5, and 7, and both of these
@@ -294,7 +295,7 @@ Otherwise, they are not deleted at all.
This variable specifies how many of the newest backup versions to keep
in the Dired command @kbd{.} (@code{dired-clean-directory}). That's the
same thing @code{kept-new-versions} specifies when you make a new backup
-file. The default value is 2.
+file. The default is@tie{}2.
@end defopt
@node Backup Names
@@ -306,8 +307,8 @@ If you change one, you probably need to change the rest.
@defun backup-file-name-p filename
This function returns a non-@code{nil} value if @var{filename} is a
-possible name for a backup file. A file with the name @var{filename}
-need not exist; the function just checks the name.
+possible name for a backup file. It just checks the name, not whether
+a file with the name @var{filename} exists.
@smallexample
@group
@@ -417,7 +418,7 @@ automatically compare a file with its most recent backup.
@node Auto-Saving
@section Auto-Saving
-@cindex auto-saving
+@c @cindex auto-saving Lots of symbols starting with auto-save here.
Emacs periodically saves all files that you are visiting; this is
called @dfn{auto-saving}. Auto-saving prevents you from losing more
diff --git a/lispref/buffers.texi b/lispref/buffers.texi
index a0c2d1aa566..e9cafb69fb5 100644
--- a/lispref/buffers.texi
+++ b/lispref/buffers.texi
@@ -593,16 +593,17 @@ current buffer is used.
@node Modification Time
@comment node-name, next, previous, up
-@section Comparison of Modification Time
-@cindex comparison of modification time
-@cindex modification time, comparison of
+@section Buffer Modification Time
+@cindex comparing file modification time
+@cindex modification time of buffer
Suppose that you visit a file and make changes in its buffer, and
meanwhile the file itself is changed on disk. At this point, saving the
buffer would overwrite the changes in the file. Occasionally this may
be what you want, but usually it would lose valuable information. Emacs
therefore checks the file's modification time using the functions
-described below before saving the file.
+described below before saving the file. (@xref{File Attributes},
+for how to examine a file's modification time.)
@defun verify-visited-file-modtime buffer
This function compares what @var{buffer} has recorded for the
@@ -679,12 +680,11 @@ reason.
@end defun
@defun ask-user-about-supersession-threat filename
-@cindex obsolete buffer
This function is used to ask a user how to proceed after an attempt to
-modify an obsolete buffer visiting file @var{filename}. An
-@dfn{obsolete buffer} is an unmodified buffer for which the associated
-file on disk is newer than the last save-time of the buffer. This means
-some other program has probably altered the file.
+modify an buffer visiting file @var{filename} when the file is newer
+than the buffer text. Emacs detects this because the modification
+time of the file on disk is newer than the last save-time of the
+buffer. This means some other program has probably altered the file.
@kindex file-supersession
Depending on the user's answer, the function may return normally, in
diff --git a/lispref/commands.texi b/lispref/commands.texi
index 6cbf6e70099..8354346c35e 100644
--- a/lispref/commands.texi
+++ b/lispref/commands.texi
@@ -116,13 +116,13 @@ controls the reading of arguments for an interactive call.
@node Using Interactive
@subsection Using @code{interactive}
+@cindex arguments, interactive entry
This section describes how to write the @code{interactive} form that
makes a Lisp function an interactively-callable command, and how to
examine a command's @code{interactive} form.
@defspec interactive arg-descriptor
-@cindex argument descriptors
This special form declares that the function in which it appears is a
command, and that it may therefore be called interactively (via
@kbd{M-x} or by entering a key sequence bound to it). The argument
@@ -151,7 +151,6 @@ arguments. This leads quickly to an error if the command requires one
or more arguments.
@item
-@cindex argument prompt
It may be a string; then its contents should consist of a code character
followed by a prompt (which some code characters use and some ignore).
The prompt ends either with the end of the string or with a newline.
@@ -207,7 +206,6 @@ form that is evaluated to get a list of arguments to pass to the
command. Usually this form will call various functions to read input
from the user, most often through the minibuffer (@pxref{Minibuffers})
or directly from the keyboard (@pxref{Reading Input}).
-@cindex argument evaluation form
Providing point or the mark as an argument value is also common, but
if you do this @emph{and} read input (whether using the minibuffer or
@@ -865,6 +863,10 @@ If the last event came from a keyboard macro, the value is @code{macro}.
@node Adjusting Point
@section Adjusting Point After Commands
+@cindex adjusting point
+@cindex invisible/intangible text, and point
+@cindex @code{display} property, and point display
+@cindex @code{composition} property, and point display
It is not easy to display a value of point in the middle of a
sequence of text that has the @code{display}, @code{composition} or
@@ -933,6 +935,7 @@ the current Emacs session. If a symbol has not yet been so used,
@node Keyboard Events
@subsection Keyboard Events
+@cindex keyboard events
There are two kinds of input you can get from the keyboard: ordinary
keys, and function keys. Ordinary keys correspond to characters; the
@@ -1600,19 +1603,19 @@ command in the @code{special-event-map} (@pxref{Active Keymaps}).
The command is called with no arguments, and the specific signal event is
available in @code{last-input-event}. For example:
-@example
+@smallexample
(defun sigusr-handler ()
(interactive)
(message "Caught signal %S" last-input-event))
(define-key special-event-map [sigusr1] 'sigusr-handler)
-@end example
+@end smallexample
To test the signal handler, you can make Emacs send a signal to itself:
-@example
+@smallexample
(signal-process (emacs-pid) 'sigusr1)
-@end example
+@end smallexample
@end table
If one of these events arrives in the middle of a key sequence---that
@@ -1776,8 +1779,7 @@ must be the last element of the list. For example,
@node Accessing Events
@subsection Accessing Events
-@cindex mouse events, accessing the data
-@cindex accessing data of mouse events
+@cindex mouse events, data in
This section describes convenient functions for accessing the data in
a mouse button or motion event.
@@ -1892,7 +1894,6 @@ cons cell @code{(@var{width} . @var{height})}. If the @var{position}
is a buffer position, return the size of the character at that position.
@end defun
-@cindex mouse event, timestamp
@cindex timestamp of a mouse event
@defun posn-timestamp position
Return the timestamp in @var{position}. This is the time at which the
@@ -2077,6 +2078,8 @@ following the recommendations at the beginning of this section.
@node Reading Input
@section Reading Input
+@cindex read input
+@cindex keyboard input
The editor command loop reads key sequences using the function
@code{read-key-sequence}, which uses @code{read-event}. These and other
@@ -2106,7 +2109,6 @@ debugging terminal input.
for example, @code{describe-key} uses it to read the key to describe.
@defun read-key-sequence prompt &optional continue-echo dont-downcase-last switch-frame-ok command-loop
-@cindex key sequence
This function reads a key sequence and returns it as a string or
vector. It keeps reading events until it has accumulated a complete key
sequence; that is, enough to specify a non-prefix command using the
@@ -2539,7 +2541,6 @@ command's key sequence (as returned by e.g. @code{this-command-keys}),
as the events will already have been added once as they were read for
the first time. An element of the form @code{(@code{t} . @var{event})}
forces @var{event} to be added to the current command's key sequence.
-
@end defvar
@defun listify-key-sequence key
@@ -2613,9 +2614,9 @@ like this:
@end defmac
@defun discard-input
-@cindex flush input
-@cindex discard input
-@cindex terminate keyboard macro
+@cindex flushing input
+@cindex discarding input
+@cindex keyboard macro, terminating
This function discards the contents of the terminal input buffer and
cancels any keyboard macro that might be in the process of definition.
It returns @code{nil}.
@@ -2661,7 +2662,6 @@ in the variable @code{special-event-map} (@pxref{Active Keymaps}).
@node Waiting
@section Waiting for Elapsed Time or Input
-@cindex pausing
@cindex waiting
The wait functions are designed to wait for a certain amount of time
@@ -2768,7 +2768,7 @@ about the special behavior of @kbd{C-g} in the command loop. In the
case of @code{read-quoted-char}, this is so that @kbd{C-q} can be used
to quote a @kbd{C-g}.
-@cindex prevent quitting
+@cindex preventing quitting
You can prevent quitting for a portion of a Lisp function by binding
the variable @code{inhibit-quit} to a non-@code{nil} value. Then,
although @kbd{C-g} still sets @code{quit-flag} to @code{t} as usual, the
diff --git a/lispref/compile.texi b/lispref/compile.texi
index 4ed0eb8c1bf..8f5c047fd6b 100644
--- a/lispref/compile.texi
+++ b/lispref/compile.texi
@@ -6,8 +6,9 @@
@setfilename ../info/compile
@node Byte Compilation, Advising Functions, Loading, Top
@chapter Byte Compilation
+@cindex byte compilation
@cindex byte-code
-@cindex compilation
+@cindex compilation (Emacs Lisp)
Emacs Lisp has a @dfn{compiler} that translates functions written
in Lisp into a special representation called @dfn{byte-code} that can be
diff --git a/lispref/customize.texi b/lispref/customize.texi
index 3d7e9b00172..8b1b1a9b91f 100644
--- a/lispref/customize.texi
+++ b/lispref/customize.texi
@@ -186,9 +186,10 @@ choice is the official name of the package, such as MH-E or Gnus.
@end defvar
@node Group Definitions
-@section Defining Custom Groups
+@section Defining Customization Groups
+@cindex define customization group
+@cindex customization groups, defining
-@cindex custom groups, how to define
Each Emacs Lisp package should have one main customization group which
contains all the options, faces and other groups in the package. If the
package has a small number of options and faces, use just one group and
@@ -259,10 +260,10 @@ turn this feature back on, if someone would like to do the work.
@node Variable Definitions
@section Defining Customization Variables
-
+@cindex define customization options
@cindex customization variables, how to define
-@cindex declare user-editable variables
- Use @code{defcustom} to declare user-editable variables.
+
+ Use @code{defcustom} to declare user-customizable variables.
@defmac defcustom option standard doc [keyword value]@dots{}
This construct declares @var{option} as a customizable user option
@@ -701,7 +702,7 @@ The value must be a valid color name, and you can do completion with
@node Composite Types
@subsection Composite Types
-@cindex arguments (of composite type)
+@cindex Composite Types (customization)
When none of the simple types is appropriate, you can use composite
types, which build new types from other types or from specified data.
diff --git a/lispref/debugging.texi b/lispref/debugging.texi
index cce112a0aa0..a427e746b27 100644
--- a/lispref/debugging.texi
+++ b/lispref/debugging.texi
@@ -44,7 +44,7 @@ Afterward, you can examine the file to find out what input was used.
@node Debugger
@section The Lisp Debugger
-@cindex debugger
+@cindex debugger for Emacs Lisp
@cindex Lisp debugger
@cindex break
@@ -675,6 +675,7 @@ If @var{frame-number} is out of range, @code{backtrace-frame} returns
@node Syntax Errors
@section Debugging Invalid Lisp Syntax
+@cindex debugging invalid Lisp syntax
The Lisp reader reports invalid syntax, but cannot say where the real
problem is. For example, the error ``End of file during parsing'' in
@@ -690,6 +691,8 @@ technique is to try @kbd{C-M-e} at the beginning of each defun, and see
if it goes to the place where that defun appears to end. If it does
not, there is a problem in that defun.
+@cindex unbalanced parentheses
+@cindex parenthesis mismatch, debugging
However, unmatched parentheses are the most common syntax errors in
Lisp, and we can give further advice for those cases. (In addition,
just moving point through the code with Show Paren mode enabled might
@@ -796,8 +799,13 @@ Evaluate @var{form}, informing coverage testing that @var{form} should
never return. If it ever does return, you get a run-time error.
@end defmac
+ Edebug also has a coverage testing feature (@pxref{Coverage
+Testing}). These features partly duplicate each other, and it would
+be cleaner to combine them.
+
@node Compilation Errors
@section Debugging Problems in Compilation
+@cindex debugging byte compilation problems
When an error happens during byte compilation, it is normally due to
invalid syntax in the program you are compiling. The compiler prints a
diff --git a/lispref/display.texi b/lispref/display.texi
index f485829725a..0d2a8da8753 100644
--- a/lispref/display.texi
+++ b/lispref/display.texi
@@ -126,6 +126,7 @@ Returns @code{t} if redisplay was performed, or @code{nil} otherwise.
@node Truncation
@section Truncation
@cindex line wrapping
+@cindex line truncation
@cindex continuation lines
@cindex @samp{$} in display
@cindex @samp{\} in display
@@ -216,6 +217,7 @@ explicitly.
@node Displaying Messages
@subsection Displaying Messages in the Echo Area
+@cindex display message in echo area
This section describes the functions for explicitly producing echo
area messages. Many other Emacs features display messages there, too.
@@ -760,10 +762,9 @@ A character is invisible if its @code{invisible} property value
is @var{atom} or if it is a list with @var{atom} as a member.
@item (@var{atom} . t)
-A character is invisible if its @code{invisible} property value
-is @var{atom} or if it is a list with @var{atom} as a member.
-Moreover, if this character is at the end of a line and is followed
-by a visible newline, it displays an ellipsis.
+A character is invisible if its @code{invisible} property value is
+@var{atom} or if it is a list with @var{atom} as a member. Moreover,
+a sequence of such characters displays as an ellipsis.
@end table
@end table
@end defvar
@@ -839,7 +840,7 @@ make it invisible again.
@node Selective Display
@section Selective Display
-@cindex selective display
+@c @cindex selective display Duplicates selective-display
@dfn{Selective display} refers to a pair of related features for
hiding certain lines on the screen.
@@ -1364,7 +1365,7 @@ specify a particular attribute for certain text. @xref{Face
Attributes}.
@item
-A cons cell of the form @code{(foreground-color . @var{color-name})} or
+A cons cell, either of the form @code{(foreground-color . @var{color-name})} or
@code{(background-color . @var{color-name})}. These elements specify
just the foreground color or just the background color.
@@ -1832,6 +1833,7 @@ frame must match one of the @var{value}s specified for it in
@example
@group
+(defface region
'((((class color) (min-colors 88) (background dark))
:background "blue3")
@end group
@@ -2501,7 +2503,6 @@ makes @code{modeline} an alias for the @code{mode-line} face.
@cindex automatic face assignment
@cindex faces, automatic choice
-@cindex Font-Lock mode
This hook is used for automatically assigning faces to text in the
buffer. It is part of the implementation of Font-Lock mode.
@@ -2743,7 +2744,7 @@ does that, this function's value may not be accurate.
@node Fringes
@section Fringes
-@cindex Fringes
+@cindex fringes
The @dfn{fringes} of a window are thin vertical strips down the
sides that are used for displaying bitmaps that indicate truncation,
@@ -3073,7 +3074,7 @@ bitmap's face controls the color to draw it in.
@node Overlay Arrow
@subsection The Overlay Arrow
-@cindex overlay arrow
+@c @cindex overlay arrow Duplicates variable names
The @dfn{overlay arrow} is useful for directing the user's attention
to a particular line in a buffer. For example, in the modes used for
@@ -3131,6 +3132,7 @@ is used.
@node Scroll Bars
@section Scroll Bars
+@cindex scroll bars
Normally the frame parameter @code{vertical-scroll-bars} controls
whether the windows in the frame have vertical scroll bars, and
@@ -3290,7 +3292,6 @@ display specifications and what they mean.
@node Specified Space
@subsection Specified Spaces
@cindex spaces, specified height or width
-@cindex specified spaces
@cindex variable-width spaces
To display a space of specified width and/or height, use a display
@@ -3603,7 +3604,7 @@ libraries (though it is not possible to add new image formats).
The supported image formats include XBM, XPM (this requires the
libraries @code{libXpm} version 3.4k and @code{libz}), GIF (requiring
-@code{libungif} 4.1.0), Postscript, PBM, JPEG (requiring the
+@code{libungif} 4.1.0), PostScript, PBM, JPEG (requiring the
@code{libjpeg} library version v6a), TIFF (requiring @code{libtiff}
v3.4), and PNG (requiring @code{libpng} 1.0.2).
@@ -3658,7 +3659,7 @@ function always returns @code{t}; for other image types, it returns
* XBM Images:: Special features for XBM format.
* XPM Images:: Special features for XPM format.
* GIF Images:: Special features for GIF format.
-* Postscript Images:: Special features for Postscript format.
+* PostScript Images:: Special features for PostScript format.
* Other Image Types:: Various other formats are supported.
* Defining Images:: Convenient ways to define an image for later use.
* Showing Images:: Convenient ways to display an image once it is defined.
@@ -3980,11 +3981,11 @@ every 0.1 seconds.
(run-with-timer 0.1 nil 'display-anim buffer file (1+ idx) max nil)))
@end ignore
-@node Postscript Images
-@subsection Postscript Images
-@cindex Postscript images
+@node PostScript Images
+@subsection PostScript Images
+@cindex postscript images
- To use Postscript for an image, specify image type @code{postscript}.
+ To use PostScript for an image, specify image type @code{postscript}.
This works only if you have Ghostscript installed. You must always use
these three properties:
@@ -3999,15 +4000,15 @@ The value, @var{height}, specifies the height of the image in points
@item :bounding-box @var{box}
The value, @var{box}, must be a list or vector of four integers, which
-specifying the bounding box of the Postscript image, analogous to the
-@samp{BoundingBox} comment found in Postscript files.
+specifying the bounding box of the PostScript image, analogous to the
+@samp{BoundingBox} comment found in PostScript files.
@example
%%BoundingBox: 22 171 567 738
@end example
@end table
- Displaying Postscript images from Lisp data is not currently
+ Displaying PostScript images from Lisp data is not currently
implemented, but it may be implemented by the time you read this.
See the @file{etc/NEWS} file to make sure.
@@ -4137,8 +4138,8 @@ should specify the image as follows:
This function returns a suitable search path for images used by the
Lisp package @var{library}.
-The function searches for @var{image} first in @code{image-load-path}
-(excluding @file{@code{data-directory}/images}) and then in
+The function searches for @var{image} first using @code{image-load-path},
+excluding @file{@code{data-directory}/images}, and then in
@code{load-path}, followed by a path suitable for @var{library}, which
includes @file{../../etc/images} and @file{../etc/images} relative to
the library file itself, and finally in
@@ -4270,6 +4271,7 @@ cache, it can always be displayed, even if the value of
@node Image Cache
@subsection Image Cache
+@cindex image cache
Emacs stores images in an image cache when it displays them, so it can
display them again more efficiently. It removes an image from the cache
@@ -4297,7 +4299,6 @@ are cleared.
@node Buttons
@section Buttons
-@cindex buttons
@cindex buttons in buffers
@cindex clickable buttons in buffers
@@ -4607,15 +4608,11 @@ is skipped over. Returns the button found.
@end deffn
@defun next-button pos &optional count-current
-Return the next button after position @var{pos} in the current buffer.
-If @var{count-current} is non-@code{nil}, count any button at
-@var{pos} in the search, instead of starting at the next button.
-@end defun
-
-@defun previous-button pos &optional count-current
-Return the @var{n}th button before position @var{pos} in the current
-buffer. If @var{count-current} is non-@code{nil}, count any button at
-@var{pos} in the search, instead of starting at the next button.
+@defunx previous-button pos &optional count-current
+Return the next button after (for @code{next-button} or before (for
+@code{previous-button}) position @var{pos} in the current buffer. If
+@var{count-current} is non-@code{nil}, count any button at @var{pos}
+in the search, instead of starting at the next button.
@end defun
@node Abstract Display
@@ -4954,9 +4951,8 @@ ewoc is created to be either @code{nil} or an index into the vector
@node Blinking
@section Blinking Parentheses
@cindex parenthesis matching
-@cindex blinking
+@cindex blinking parentheses
@cindex balancing parentheses
-@cindex close parenthesis
This section describes the mechanism by which Emacs shows a matching
open parenthesis when the user inserts a close parenthesis.
@@ -5328,7 +5324,7 @@ display by sending @var{string} to the terminal.
@node Beeping
@section Beeping
-@cindex beeping
+@c @cindex beeping "beep" is adjacent
@cindex bell
This section describes how to make Emacs ring the bell (or blink the
diff --git a/lispref/edebug.texi b/lispref/edebug.texi
index 4082fdfe5c2..4be030896c5 100644
--- a/lispref/edebug.texi
+++ b/lispref/edebug.texi
@@ -12,9 +12,8 @@
@node Edebug, Syntax Errors, Debugger, Debugging
@section Edebug
-@cindex Edebug mode
+@cindex Edebug debugging facility
-@cindex Edebug
Edebug is a source-level debugger for Emacs Lisp programs with which
you can:
@@ -195,12 +194,6 @@ evaluates, even if not instrumenting it. See also the @kbd{i} command
(@pxref{Jumping}), which steps into the call after instrumenting the
function.
-@cindex special forms (Edebug)
-@cindex interactive commands (Edebug)
-@cindex anonymous lambda expressions (Edebug)
-@cindex Common Lisp (Edebug)
-@pindex cl.el @r{(Edebug)}
-@pindex cl-specs.el
Edebug knows how to instrument all the standard special forms,
@code{interactive} forms with an expression argument, anonymous lambda
expressions, and other defining forms. However, Edebug cannot determine
@@ -441,9 +434,9 @@ breakpoints, the global break condition, and source breakpoints.
@end menu
@node Breakpoints
-@subsubsection Breakpoints
+@subsubsection Edebug Breakpoints
-@cindex breakpoints
+@cindex breakpoints (Edebug)
While using Edebug, you can specify @dfn{breakpoints} in the program you
are testing: these are places where execution should stop. You can set a
breakpoint at any stop point, as defined in @ref{Using Edebug}. For
@@ -867,10 +860,10 @@ lines inserted.
@node Coverage Testing
@subsection Coverage Testing
-@cindex coverage testing
+@cindex coverage testing (Edebug)
@cindex frequency counts
@cindex performance analysis
-Edebug provides rudimentary coverage testing and display of execution
+ Edebug provides rudimentary coverage testing and display of execution
frequency.
Coverage testing works by comparing the result of each expression with
diff --git a/lispref/elisp.texi b/lispref/elisp.texi
index fa9f93208e1..546f1ca4f97 100644
--- a/lispref/elisp.texi
+++ b/lispref/elisp.texi
@@ -7,24 +7,29 @@
@c Version of the manual and of Emacs.
@c Please remember to update the edition number in README as well.
@set VERSION 2.9
-@set EMACSVER 22.0.96
+@set EMACSVER 22.0.98
@dircategory Emacs
@direntry
* Elisp: (elisp). The Emacs Lisp Reference Manual.
@end direntry
-@c So that anyone making the printed manual gets the version we have
-@c tuned to avoid bad line breaks, etc.
+@c for full 8.5x11, comment this out.
+@set smallbook
+
+@ifset smallbook
@smallbook
+@end ifset
@c per rms and peterb, use 10pt fonts for the main text, mostly to
@c save on paper cost. Also, do not declare @setchapternewpage odd,
@c for the same reason. Do this inside @tex for now, so the
@c last-released makeinfo does not complain.
@tex
+@ifset smallbook
@fonttextsize 10
-\global\hbadness=6000 % don't worry about not-too-underfull boxes
+@end ifset
+\global\hbadness=6666 % don't worry about not-too-underfull boxes
@end tex
@c Combine indices.
@@ -61,7 +66,7 @@ Software Foundation raise funds for GNU development.''
@titlepage
@title GNU Emacs Lisp Reference Manual
@subtitle For Emacs Version @value{EMACSVER}
-@subtitle Revision @value{VERSION}, January 2002
+@subtitle Revision @value{VERSION}, April 2007
@author by Bil Lewis, Dan LaLiberte, Richard Stallman
@author and the GNU Manual Group
@@ -1297,7 +1302,7 @@ Images
* XBM Images:: Special features for XBM format.
* XPM Images:: Special features for XPM format.
* GIF Images:: Special features for GIF format.
-* Postscript Images:: Special features for Postscript format.
+* PostScript Images:: Special features for PostScript format.
* Other Image Types:: Various other formats are supported.
* Defining Images:: Convenient ways to define an image for later use.
* Showing Images:: Convenient ways to display an image once
diff --git a/lispref/errors.texi b/lispref/errors.texi
index 98c30fcd4a1..af2df791c39 100644
--- a/lispref/errors.texi
+++ b/lispref/errors.texi
@@ -6,6 +6,7 @@
@setfilename ../info/errors
@node Standard Errors, Standard Buffer-Local Variables, GNU Emacs Internals, Top
@appendix Standard Errors
+@cindex standard errors
Here is the complete list of the error symbols in standard Emacs,
grouped by concept. The list includes each symbol's message (on the
diff --git a/lispref/eval.texi b/lispref/eval.texi
index d085491d2d2..772f502553c 100644
--- a/lispref/eval.texi
+++ b/lispref/eval.texi
@@ -233,7 +233,7 @@ Scheme.
@node Function Indirection
@subsection Symbol Function Indirection
@cindex symbol function indirection
-@cindex indirection
+@cindex indirection for functions
@cindex void function
If the first element of the list is a symbol then evaluation examines
@@ -252,7 +252,6 @@ neither of these things happens, we eventually obtain a non-symbol,
which ought to be a function or other suitable object.
@kindex invalid-function
-@cindex invalid function
More precisely, we should now have a Lisp function (a lambda
expression), a byte-code function, a primitive function, a Lisp macro, a
special form, or an autoload object. Each of these types is a case
@@ -530,7 +529,6 @@ definition loaded from that file. @xref{Autoload}.
@node Quoting
@section Quoting
-@cindex quoting
The special form @code{quote} returns its single argument, as written,
without evaluating it. This provides a way to include constant symbols
diff --git a/lispref/files.texi b/lispref/files.texi
index f13888197c7..f357b1f3814 100644
--- a/lispref/files.texi
+++ b/lispref/files.texi
@@ -296,6 +296,7 @@ in the list @code{find-file-hook}.
@node Saving Buffers
@section Saving Buffers
+@cindex saving buffers
When you edit a file in Emacs, you are actually working on a buffer
that is visiting that file---that is, the contents of the file are
@@ -481,6 +482,7 @@ Name}).
@node Reading from Files
@comment node-name, next, previous, up
@section Reading from Files
+@cindex reading from files
You can copy a file from the disk and insert it into a buffer
using the @code{insert-file-contents} function. Don't use the user-level
@@ -544,6 +546,7 @@ program can read the file, use the function @code{file-local-copy}; see
@node Writing to Files
@comment node-name, next, previous, up
@section Writing to Files
+@cindex writing to files
You can write the contents of a buffer, or part of a buffer, directly
to a file on disk using the @code{append-to-file} and
@@ -647,6 +650,7 @@ with-temp-buffer,, The Current Buffer}.
@node File Locks
@section File Locks
@cindex file locks
+@cindex lock file
When two users edit the same file at the same time, they are likely
to interfere with each other. Emacs tries to prevent this situation
@@ -736,6 +740,7 @@ for its usual definition is in @file{userlock.el}.
@node Information about Files
@section Information about Files
+@cindex file, information about
The functions described in this section all operate on strings that
designate file names. With a few exceptions, all the functions have
@@ -1172,6 +1177,7 @@ value of @code{current-time}; see @ref{Time of Day}.)
@item
The time of last modification as a list of two integers (as above).
+@cindex modification time of file
@item
The time of last status change as a list of two integers (as above).
@@ -1262,13 +1268,13 @@ is on file system number -32252.
@node Locating Files
@subsection How to Locate Files in Standard Places
-@cindex locate files
-@cindex find files
+@cindex locate file in path
+@cindex find file in path
This section explains how to search for a file in a list of
-directories. One example is when you need to look for a program's
-executable file, e.g., to find out whether a given program is
-installed on the user's system. Another example is the search for
+directories (a @dfn{path}). One example is when you need to look for
+a program's executable file, e.g., to find out whether a given program
+is installed on the user's system. Another example is the search for
Lisp libraries (@pxref{Library Search}). Such searches generally need
to try various possible file name extensions, in addition to various
possible directories. Emacs provides a function for such a
@@ -1311,7 +1317,6 @@ For compatibility, @var{predicate} can also be one of the symbols
a list of one or more of these symbols.
@end defun
-@cindex find executable program
@defun executable-find program
This function searches for the executable file of the named
@var{program} and returns the full absolute name of the executable,
@@ -1323,7 +1328,7 @@ in @code{exec-path} and tries all the file-name extensions in
@node Changing Files
@section Changing File Names and Attributes
-@cindex renaming files
+@c @cindex renaming files Duplicates rename-file
@cindex copying files
@cindex deleting files
@cindex linking files
@@ -2459,6 +2464,7 @@ which generate the listing with Lisp code.
@node Create/Delete Dirs
@section Creating and Deleting Directories
+@cindex creating and deleting directories
@c Emacs 19 features
Most Emacs Lisp file-manipulation functions get errors when used on
diff --git a/lispref/frames.texi b/lispref/frames.texi
index 32f9e071f09..527f27385f3 100644
--- a/lispref/frames.texi
+++ b/lispref/frames.texi
@@ -150,6 +150,13 @@ screens belonging to one server, Emacs knows by the similarity in their
names that they share a single keyboard, and it treats them as a single
terminal.
+ Note that some graphical terminals can output to more than a one
+monitor (or other output device) at the same time. On these
+``multi-monitor'' setups, a single @var{display} value controls the
+output to all the physical monitors. In this situation, there is
+currently no platform-independent way for Emacs to distinguish between
+the different physical monitors.
+
@deffn Command make-frame-on-display display &optional parameters
This creates and returns a new frame on display @var{display}, taking
the other frame parameters from @var{parameters}. Aside from the
@@ -193,6 +200,7 @@ that display (@pxref{Deleting Frames}).
@node Frame Parameters
@section Frame Parameters
+@cindex frame parameters
A frame has many parameters that control its appearance and behavior.
Just what parameters a frame has depends on what display mechanism it
@@ -555,6 +563,7 @@ If non-@code{nil}, this frame's window is never split automatically.
@node Management Parameters
@subsubsection Window Management Parameters
+@cindex window manager, and frame parameters
These frame parameters, meaningful only on window system displays,
interact with the window manager.
@@ -885,6 +894,7 @@ Here is an example:
@node Frame Titles
@section Frame Titles
+@cindex frame title
Every frame has a @code{name} parameter; this serves as the default
for the frame title which window systems typically display at the top of
@@ -924,7 +934,7 @@ while processing @code{frame-title-format} or
@node Deleting Frames
@section Deleting Frames
-@cindex deletion of frames
+@cindex deleting frames
Frames remain potentially visible until you explicitly @dfn{delete}
them. A deleted frame cannot appear on the screen, but continues to
@@ -956,6 +966,7 @@ calls the function @code{delete-frame}. @xref{Misc Events}.
@node Finding All Frames
@section Finding All Frames
+@cindex frames, scanning all
@defun frame-list
The function @code{frame-list} returns a list of all the frames that
@@ -1077,7 +1088,7 @@ Displays}.
@node Input Focus
@section Input Focus
@cindex input focus
-@cindex selected frame
+@c @cindex selected frame Duplicates selected-frame
At any time, one frame in Emacs is the @dfn{selected frame}. The selected
window always resides on the selected frame.
@@ -1260,7 +1271,7 @@ to ``lowest.'' Where two windows overlap, the one higher up covers
the one underneath. Even a window at the bottom of the stack can be
seen if no other window overlaps it.
-@cindex raising a frame
+@c @cindex raising a frame redundant with raise-frame
@cindex lowering a frame
A window's place in this ordering is not fixed; in fact, users tend
to change the order frequently. @dfn{Raising} a window means moving
@@ -1315,14 +1326,14 @@ unwanted frames are iconified instead.
@node Mouse Tracking
@section Mouse Tracking
@cindex mouse tracking
-@cindex tracking the mouse
+@c @cindex tracking the mouse Duplicates track-mouse
-Sometimes it is useful to @dfn{track} the mouse, which means to display
+ Sometimes it is useful to @dfn{track} the mouse, which means to display
something to indicate where the mouse is and move the indicator as the
mouse moves. For efficient mouse tracking, you need a way to wait until
the mouse actually moves.
-The convenient way to track the mouse is to ask for events to represent
+ The convenient way to track the mouse is to ask for events to represent
mouse motion. Then you can wait for motion by waiting for an event. In
addition, you can easily handle any other sorts of events that may
occur. That is useful, because normally you don't want to track the
@@ -2015,8 +2026,6 @@ a mouse.
@end defun
@defun display-graphic-p &optional display
-@cindex frames, more than one on display
-@cindex fonts, more than one on display
This function returns @code{t} if @var{display} is a graphic display
capable of displaying several frames and several different fonts at
once. This is true for displays that use a window system such as X, and
@@ -2087,11 +2096,19 @@ This function returns the number of screens associated with the display.
@defun display-pixel-height &optional display
This function returns the height of the screen in pixels.
On a character terminal, it gives the height in characters.
+
+For graphical terminals, note that on ``multi-monitor'' setups this
+refers to the pixel width for all physical monitors associated with
+@var{display}. @xref{Multiple Displays}.
@end defun
@defun display-pixel-width &optional display
This function returns the width of the screen in pixels.
On a character terminal, it gives the width in characters.
+
+For graphical terminals, note that on ``multi-monitor'' setups this
+refers to the pixel width for all physical monitors associated with
+@var{display}. @xref{Multiple Displays}.
@end defun
@defun display-mm-height &optional display
diff --git a/lispref/functions.texi b/lispref/functions.texi
index 084f2a57d50..eedfa8c124f 100644
--- a/lispref/functions.texi
+++ b/lispref/functions.texi
@@ -293,6 +293,7 @@ variables.
@kindex wrong-number-of-arguments
@cindex argument binding
@cindex binding arguments
+@cindex argument lists, features
Our simple sample function, @code{(lambda (a b c) (+ a b c))},
specifies three argument variables, so it must be called with three
@@ -583,6 +584,7 @@ defined is often done deliberately, and there is no way to distinguish
deliberate redefinition from unintentional redefinition.
@end defspec
+@cindex function aliases
@defun defalias name definition &optional docstring
@anchor{Definition of defalias}
This special form defines the symbol @var{name} as a function, with
@@ -1191,17 +1193,22 @@ function except for one thing: when you compile a call to the function,
the function's definition is open-coded into the caller.
Making a function inline makes explicit calls run faster. But it also
-has disadvantages. For one thing, it reduces flexibility; if you change
-the definition of the function, calls already inlined still use the old
-definition until you recompile them. Since the flexibility of
-redefining functions is an important feature of Emacs, you should not
-make a function inline unless its speed is really crucial.
+has disadvantages. For one thing, it reduces flexibility; if you
+change the definition of the function, calls already inlined still use
+the old definition until you recompile them.
Another disadvantage is that making a large function inline can increase
the size of compiled code both in files and in memory. Since the speed
advantage of inline functions is greatest for small functions, you
generally should not make large functions inline.
+Also, inline functions do not behave well with respect to debugging,
+tracing, and advising (@pxref{Advising Functions}). Since ease of
+debugging and the flexibility of redefining functions are important
+features of Emacs, you should not make a function inline, even if it's
+small, unless its speed is really crucial, and you've timed the code
+to verify that using @code{defun} actually has performance problems.
+
It's possible to define a macro to expand into the same code that an
inline function would execute. (@xref{Macros}.) But the macro would be
limited to direct use in expressions---a macro cannot be called with
diff --git a/lispref/hash.texi b/lispref/hash.texi
index 6a7fd26ae8b..c5b68e26d91 100644
--- a/lispref/hash.texi
+++ b/lispref/hash.texi
@@ -7,10 +7,11 @@
@node Hash Tables, Symbols, Sequences Arrays Vectors, Top
@chapter Hash Tables
@cindex hash tables
+@cindex lookup tables
- A hash table is a very fast kind of lookup table, somewhat like
-an alist in that it maps keys to corresponding values. It differs
-from an alist in these ways:
+ A hash table is a very fast kind of lookup table, somewhat like an
+alist (@pxref{Association Lists}) in that it maps keys to
+corresponding values. It differs from an alist in these ways:
@itemize @bullet
@item
@@ -55,6 +56,7 @@ of object and are used only for recording interned symbols
@node Creating Hash
@section Creating Hash Tables
+@cindex creating hash tables
The principal function for creating a hash table is
@code{make-hash-table}.
@@ -212,6 +214,7 @@ arguments---a @var{key} listed in @var{table}, and its associated
@node Defining Hash
@section Defining Hash Comparisons
@cindex hash code
+@cindex define hash comparisons
You can define new methods of key lookup by means of
@code{define-hash-table-test}. In order to use this feature, you need
diff --git a/lispref/help.texi b/lispref/help.texi
index 0939d384a4e..70c7a48c9c4 100644
--- a/lispref/help.texi
+++ b/lispref/help.texi
@@ -91,9 +91,7 @@ list under the property name @code{variable-documentation}. The
function @code{documentation-property} knows how to retrieve it.
@end itemize
-@cindex @file{DOC} (documentation) file
-@cindex @file{emacs/etc/DOC-@var{version}}
-@cindex @file{etc/DOC-@var{version}}
+@cindex @file{DOC-@var{version}} (documentation) file
To save space, the documentation for preloaded functions and variables
(including primitive functions and autoloaded functions) is stored in
the file @file{emacs/etc/DOC-@var{version}}---not inside Emacs. The
@@ -388,6 +386,7 @@ C-g abort-recursive-edit
@node Describing Characters
@section Describing Characters for Help Messages
+@cindex describe characters and events
These functions convert events, key sequences, or characters to
textual descriptions. These descriptions are useful for including
diff --git a/lispref/internals.texi b/lispref/internals.texi
index 60ea9769150..3cd42ed69ff 100644
--- a/lispref/internals.texi
+++ b/lispref/internals.texi
@@ -204,7 +204,7 @@ You should not change this flag in a running Emacs.
@node Garbage Collection
@appendixsec Garbage Collection
-@cindex garbage collector
+@cindex garbage collection
@cindex memory allocation
When a program creates a list or the user defines a new function (such
@@ -441,6 +441,7 @@ point number.
@node Memory Usage
@section Memory Usage
+@cindex memory usage
These functions and variables give information about the total amount
of memory allocation that Emacs has done, broken down by data type.
@@ -530,7 +531,7 @@ usage: (or CONDITIONS ...) */)
@{
val = Feval (XCAR (args));
if (!NILP (val))
- break;
+ break;
args = XCDR (args);
@}
@end group
@@ -715,7 +716,7 @@ with a value that is either @code{t} or @code{nil}. Note that variables
defined with @code{DEFVAR_BOOL} are automatically added to the list
@code{byte-boolean-vars} used by the byte compiler.
-@cindex @code{staticpro}, protect file-scope variables from GC
+@cindex @code{staticpro}, protection from GC
If you define a file-scope C variable of type @code{Lisp_Object},
you must protect it from garbage-collection by calling @code{staticpro}
in @code{syms_of_@var{filename}}, like this:
diff --git a/lispref/intro.texi b/lispref/intro.texi
index c919a46610d..35566603b7c 100644
--- a/lispref/intro.texi
+++ b/lispref/intro.texi
@@ -170,11 +170,11 @@ being described, are formatted like this: @var{first-number}.
@node nil and t
@subsection @code{nil} and @code{t}
-@cindex @code{nil}, uses of
@cindex truth value
@cindex boolean
-@cindex false
+@cindex @code{nil}
+@cindex false
In Lisp, the symbol @code{nil} has three separate meanings: it
is a symbol with the name @samp{nil}; it is the logical truth value
@var{false}; and it is the empty list---the list of zero elements.
@@ -197,7 +197,7 @@ in Lisp programs also.
(setq foo-flag nil) ; @r{Emphasize the truth value @var{false}}
@end example
-@cindex @code{t}, uses of
+@cindex @code{t}
@cindex true
In contexts where a truth value is expected, any non-@code{nil} value
is considered to be @var{true}. However, @code{t} is the preferred way
@@ -535,11 +535,12 @@ The minor version number of Emacs, as an integer. For Emacs version
@section Acknowledgements
This manual was written by Robert Krawitz, Bil Lewis, Dan LaLiberte,
-Richard M. Stallman and Chris Welty, the volunteers of the GNU manual
-group, in an effort extending over several years. Robert J. Chassell
-helped to review and edit the manual, with the support of the Defense
-Advanced Research Projects Agency, ARPA Order 6082, arranged by Warren
-A. Hunt, Jr.@: of Computational Logic, Inc.
+Richard@tie{}M. Stallman and Chris Welty, the volunteers of the GNU
+manual group, in an effort extending over several years.
+Robert@tie{}J. Chassell helped to review and edit the manual, with the
+support of the Defense Advanced Research Projects Agency, ARPA Order
+6082, arranged by Warren@tie{}A. Hunt, Jr.@: of Computational Logic,
+Inc.
Corrections were supplied by Karl Berry, Jim Blandy, Bard Bloom,
Stephane Boucher, David Boyes, Alan Carroll, Richard Davis, Lawrence
diff --git a/lispref/keymaps.texi b/lispref/keymaps.texi
index 0cd653984e9..cd0ae7ec979 100644
--- a/lispref/keymaps.texi
+++ b/lispref/keymaps.texi
@@ -53,7 +53,7 @@ vector. Unless otherwise stated, any Emacs Lisp function that accepts
a key sequence as an argument can handle both representations.
In the string representation, alphanumeric characters ordinarily
-stand for themselves; for example, @code{"a"} represents @kbd{a} and
+stand for themselves; for example, @code{"a"} represents @kbd{a}
and @code{"2"} represents @kbd{2}. Control character events are
prefixed by the substring @code{"\C-"}, and meta characters by
@code{"\M-"}; for example, @code{"\C-x"} represents the key @kbd{C-x}.
@@ -255,7 +255,7 @@ lisp-mode-map
(24 . lisp-send-defun)
keymap
;; @r{@kbd{M-C-q}, treated as @kbd{@key{ESC} C-q}}
- (17 . indent-sexp)))
+ (17 . indent-sexp))
@end group
@group
;; @r{This part is inherited from @code{lisp-mode-shared-map}.}
@@ -697,6 +697,7 @@ An error is signaled if @var{key} is not a string or a vector.
@node Searching Keymaps
@section Searching the Active Keymaps
+@cindex searching active keymaps for keys
After translation of event subsequences (@pxref{Translation
Keymaps}) Emacs looks for them in the active keymaps. Here is a
@@ -1277,7 +1278,7 @@ bindings in a keymap makes no difference for keyboard input, but it
does matter for menu keymaps (@pxref{Menu Keymaps}).
@end defun
- Here is an example that creates a sparse keymap and makes a number of
+ This example creates a sparse keymap and makes a number of
bindings in it:
@smallexample
@@ -1488,17 +1489,22 @@ does not have the effect of remapping @code{kill-line} into
if an ordinary binding specifies @code{my-kill-line}, this keymap will
remap it to @code{my-other-kill-line}.
-@defun command-remapping command &optional position
+@defun command-remapping command &optional position keymaps
This function returns the remapping for @var{command} (a symbol),
given the current active keymaps. If @var{command} is not remapped
(which is the usual situation), or not a symbol, the function returns
@code{nil}. @code{position} can optionally specify a buffer position
or an event position to determine the keymaps to use, as in
@code{key-binding}.
+
+If the optional argument @code{keymaps} is non-@code{nil}, it
+specifies a list of keymaps to search in. This argument is ignored if
+@code{position} is non-@code{nil}.
@end defun
@node Translation Keymaps
@section Keymaps for Translating Sequences of Events
+@cindex keymaps for translating events
This section describes keymaps that are used during reading a key
sequence, to translate certain event sequences into others.
diff --git a/lispref/lists.texi b/lispref/lists.texi
index 24214bbc357..ffe4df2413d 100644
--- a/lispref/lists.texi
+++ b/lispref/lists.texi
@@ -6,7 +6,7 @@
@setfilename ../info/lists
@node Lists, Sequences Arrays Vectors, Strings and Characters, Top
@chapter Lists
-@cindex list
+@cindex lists
@cindex element (of list)
A @dfn{list} represents a sequence of zero or more elements (which may
@@ -30,7 +30,6 @@ the whole list.
@node Cons Cells
@section Lists and Cons Cells
@cindex lists and cons cells
-@cindex @code{nil} and lists
Lists in Lisp are not a primitive data type; they are built up from
@dfn{cons cells}. A cons cell is a data object that represents an
@@ -104,7 +103,6 @@ otherwise. @code{nil} is not a cons cell, although it @emph{is} a list.
@end defun
@defun atom object
-@cindex atoms
This function returns @code{t} if @var{object} is an atom, @code{nil}
otherwise. All objects except cons cells are atoms. The symbol
@code{nil} is an atom and is also a list; it is the only Lisp object
@@ -159,7 +157,6 @@ considered a list and @code{not} when it is considered a truth value
@end example
@end defun
-@need 2000
@node List Elements
@section Accessing Elements of Lists
@@ -991,10 +988,9 @@ x1
@end group
@end example
-@need 4000
Here is the result in box notation:
-@example
+@smallexample
@group
--------------------
| |
@@ -1004,7 +1000,7 @@ x1
| | | | | | | | |
-------------- -------------- --------------
@end group
-@end example
+@end smallexample
@noindent
The second cons cell, which previously held the element @code{b}, still
@@ -1307,7 +1303,7 @@ compare @var{object} against the elements of the list. For example:
@end defun
@defun delq object list
-@cindex deletion of elements
+@cindex deleting list elements
This function destructively removes all elements @code{eq} to
@var{object} from @var{list}. The letter @samp{q} in @code{delq} says
that it uses @code{eq} to compare @var{object} against the elements of
@@ -1370,6 +1366,9 @@ and the @code{(4)} in the @code{sample-list} are not @code{eq}:
(delq '(4) sample-list)
@result{} (a c (4))
@end group
+
+If you want to delete elements that are @code{equal} to a given value,
+use @code{delete} (see below).
@end example
@defun remq object list
@@ -1392,9 +1391,6 @@ sample-list
@result{} (a b c a b c)
@end group
@end example
-@noindent
-The function @code{delq} offers a way to perform this operation
-destructively. See @ref{Sets And Lists}.
@end defun
@defun memql object list
@@ -1452,8 +1448,8 @@ If @code{sequence} is a list, this function destructively removes all
elements @code{equal} to @var{object} from @var{sequence}. For lists,
@code{delete} is to @code{delq} as @code{member} is to @code{memq}: it
uses @code{equal} to compare elements with @var{object}, like
-@code{member}; when it finds an element that matches, it removes the
-element just as @code{delq} would.
+@code{member}; when it finds an element that matches, it cuts the
+element out just as @code{delq} would.
If @code{sequence} is a vector or string, @code{delete} returns a copy
of @code{sequence} with all elements @code{equal} to @code{object}
@@ -1463,8 +1459,22 @@ For example:
@example
@group
-(delete '(2) '((2) (1) (2)))
+(setq l '((2) (1) (2)))
+(delete '(2) l)
@result{} ((1))
+l
+ @result{} ((2) (1))
+;; @r{If you want to change @code{l} reliably,}
+;; @r{write @code{(setq l (delete elt l))}.}
+@end group
+@group
+(setq l '((2) (1) (2)))
+(delete '(1) l)
+ @result{} ((2) (2))
+l
+ @result{} ((2) (2))
+;; @r{In this case, it makes no difference whether you set @code{l},}
+;; @r{but you should do so for the sake of the other case.}
@end group
@group
(delete '(2) [(2) (1) (2)])
@@ -1474,7 +1484,7 @@ For example:
@end defun
@defun remove object sequence
-This function is the non-destructive counterpart of @code{delete}. If
+This function is the non-destructive counterpart of @code{delete}. It
returns a copy of @code{sequence}, a list, vector, or string, with
elements @code{equal} to @code{object} removed. For example:
@@ -1513,7 +1523,8 @@ several @code{equal} occurrences of an element in @var{list},
@end defun
See also the function @code{add-to-list}, in @ref{List Variables},
-for another way to add an element to a list stored in a variable.
+for a way to add an element to a list stored in a variable and used as a
+set.
@node Association Lists
@section Association Lists
@@ -1589,7 +1600,7 @@ of property lists and association lists.
@defun assoc key alist
This function returns the first association for @var{key} in
-@var{alist}. It compares @var{key} against the alist elements using
+@var{alist}, comparing @var{key} against the alist elements using
@code{equal} (@pxref{Equality Predicates}). It returns @code{nil} if no
association in @var{alist} has a @sc{car} @code{equal} to @var{key}.
For example:
diff --git a/lispref/loading.texi b/lispref/loading.texi
index 092befff85a..058ed9c8984 100644
--- a/lispref/loading.texi
+++ b/lispref/loading.texi
@@ -64,22 +64,23 @@ forms in it, and closes the file.
To find the file, @code{load} first looks for a file named
@file{@var{filename}.elc}, that is, for a file whose name is
-@var{filename} with @samp{.elc} appended. If such a file exists, it is
-loaded. If there is no file by that name, then @code{load} looks for a
-file named @file{@var{filename}.el}. If that file exists, it is loaded.
-Finally, if neither of those names is found, @code{load} looks for a
-file named @var{filename} with nothing appended, and loads it if it
-exists. (The @code{load} function is not clever about looking at
-@var{filename}. In the perverse case of a file named @file{foo.el.el},
-evaluation of @code{(load "foo.el")} will indeed find it.)
-
-If Auto Compression mode is enabled, as it is by default, then
-if @code{load} can not find a file, it searches for a compressed
-version of the file before trying other file names. It decompresses
-and loads it if it exists. It looks for compressed versions by
-appending the suffixes in @code{jka-compr-load-suffixes} to the file
-name. The value of this variable must be a list of strings. Its
-standard value is @code{(".gz")}.
+@var{filename} with the extension @samp{.elc} appended. If such a
+file exists, it is loaded. If there is no file by that name, then
+@code{load} looks for a file named @file{@var{filename}.el}. If that
+file exists, it is loaded. Finally, if neither of those names is
+found, @code{load} looks for a file named @var{filename} with nothing
+appended, and loads it if it exists. (The @code{load} function is not
+clever about looking at @var{filename}. In the perverse case of a
+file named @file{foo.el.el}, evaluation of @code{(load "foo.el")} will
+indeed find it.)
+
+If Auto Compression mode is enabled, as it is by default, then if
+@code{load} can not find a file, it searches for a compressed version
+of the file before trying other file names. It decompresses and loads
+it if it exists. It looks for compressed versions by appending each
+of the suffixes in @code{jka-compr-load-suffixes} to the file name.
+The value of this variable must be a list of strings. Its standard
+value is @code{(".gz")}.
If the optional argument @var{nosuffix} is non-@code{nil}, then
@code{load} does not try the suffixes @samp{.elc} and @samp{.el}. In
@@ -220,6 +221,8 @@ it skips the latter group.
@node Library Search
@section Library Search
+@cindex library search
+@cindex find library
When Emacs loads a Lisp library, it searches for the library
in a list of directories specified by the variable @code{load-path}.
@@ -844,7 +847,7 @@ rather than replacing that element. @xref{Eval}.
@node Unloading
@section Unloading
-@cindex unloading
+@cindex unloading packages
@c Emacs 19 feature
You can discard the functions and variables loaded by a library to
@@ -956,7 +959,7 @@ element looks like this:
The key @var{regexp-or-feature} is either a regular expression or a
symbol, and the value is a list of forms. The forms are evaluated when
-the key matches the the absolute true name of the file being
+the key matches the absolute true name of the file being
@code{load}ed or the symbol being @code{provide}d.
@end defvar
diff --git a/lispref/locals.texi b/lispref/locals.texi
index 712c8aa9701..4edbc2a815f 100644
--- a/lispref/locals.texi
+++ b/lispref/locals.texi
@@ -9,6 +9,7 @@
@c The title "Standard Buffer-Local Variables" is too long for
@c smallbook. --rjc 30mar92
@cindex buffer-local variables, general-purpose
+@cindex standard buffer-local variables
The table below lists the general-purpose Emacs variables that
automatically become buffer-local in each buffer. Most become
@@ -16,9 +17,9 @@ buffer-local only when set; a few of them are always local in every
buffer. Many Lisp packages define such variables for their internal
use, but we don't try to list them all here.
-Each minor modes defines a buffer-local variable named
-@samp{@var{modename}-mode}. @xref{Minor Mode Conventions}. Minor
-mode variables will not be listed here.
+ Every buffer-specific minor mode defines a buffer-local variable
+named @samp{@var{modename}-mode}. @xref{Minor Mode Conventions}.
+Minor mode variables will not be listed here.
@table @code
@item auto-fill-function
diff --git a/lispref/macros.texi b/lispref/macros.texi
index 80d8e9c0786..6dea53ac983 100644
--- a/lispref/macros.texi
+++ b/lispref/macros.texi
@@ -140,7 +140,6 @@ uses this feature.
@defun macroexpand-all form &optional environment
-@cindex macro expansion in entire form
@code{macroexpand-all} expands macros like @code{macroexpand}, but
will look for and expand all macros in @var{form}, not just at the
top-level. If no macros are expanded, the return value is @code{eq}
@@ -239,7 +238,7 @@ currently supported:
@table @code
@item (debug @var{edebug-form-spec})
Specify how to step through macro calls for Edebug.
-@xref{Instrumenting Macro Calls}, for more details.
+@xref{Instrumenting Macro Calls}.
@item (indent @var{indent-spec})
Specify how to indent calls to this macro. @xref{Indenting Macros},
@@ -287,7 +286,7 @@ two forms yield identical results:
@end group
@end example
-@findex , @r{(with Backquote)}
+@findex , @r{(with backquote)}
The special marker @samp{,} inside of the argument to backquote
indicates a value that isn't constant. Backquote evaluates the
argument of @samp{,} and puts the value in the list structure:
@@ -319,7 +318,7 @@ structure also. For example:
@end group
@end example
-@findex ,@@ @r{(with Backquote)}
+@findex ,@@ @r{(with backquote)}
@cindex splicing (with backquote)
You can also @dfn{splice} an evaluated value into the resulting list,
using the special marker @samp{,@@}. The elements of the spliced list
diff --git a/lispref/maps.texi b/lispref/maps.texi
index c4d065c355a..724091970c3 100644
--- a/lispref/maps.texi
+++ b/lispref/maps.texi
@@ -6,6 +6,7 @@
@setfilename ../info/maps
@node Standard Keymaps, Standard Hooks, Standard Buffer-Local Variables, Top
@appendix Standard Keymaps
+@cindex standard keymaps
The following symbols are used as the names for various keymaps.
Some of these exist when Emacs is first started, others are
@@ -76,7 +77,6 @@ A full keymap used by Electric Command History mode.
A sparse keymap used by Emacs Lisp mode.
@item esc-map
-@vindex esc-map
A full keymap for @kbd{ESC} (or @kbd{Meta}) commands.
@item facemenu-menu
diff --git a/lispref/markers.texi b/lispref/markers.texi
index b955538fe03..519b8a1316a 100644
--- a/lispref/markers.texi
+++ b/lispref/markers.texi
@@ -176,7 +176,6 @@ buffer unless narrowing is in effect. @xref{Narrowing}.
@end defun
@defun point-max-marker
-@cindex end of buffer marker
This function returns a new marker that points to the end of the
accessible portion of the buffer. This will be the end of the buffer
unless narrowing is in effect. @xref{Narrowing}.
@@ -550,7 +549,7 @@ The return value is not meaningful.
@end defun
@defopt transient-mark-mode
-@cindex Transient Mark mode
+@c @cindex Transient Mark mode Redundant
This variable if non-@code{nil} enables Transient Mark mode, in which
every buffer-modifying primitive sets @code{deactivate-mark}. The
consequence of this is that commands that modify the buffer normally
@@ -629,7 +628,7 @@ more marks than this are pushed onto the @code{mark-ring},
@node The Region
@section The Region
-@cindex region, the
+@cindex region (between point and mark)
The text between point and the mark is known as @dfn{the region}.
Various functions operate on text delimited by point and the mark, but
diff --git a/lispref/minibuf.texi b/lispref/minibuf.texi
index 1abbb148b85..98901df87f8 100644
--- a/lispref/minibuf.texi
+++ b/lispref/minibuf.texi
@@ -767,7 +767,7 @@ completion possibility specified by @var{collection} and
strings, this is true if @var{string} appears in the list and
@var{predicate} is satisfied.
-@code{test-completion} uses @code{completion-regexp-list} in the same
+This function uses @code{completion-regexp-list} in the same
way that @code{try-completion} does.
If @var{predicate} is non-@code{nil} and if @var{collection} contains
@@ -812,6 +812,8 @@ Here is an example of use:
@node Minibuffer Completion
@subsection Completion and the Minibuffer
+@cindex minibuffer completion
+@cindex reading from minibuffer with completion
This section describes the basic interface for reading from the
minibuffer with completion.
@@ -1222,6 +1224,8 @@ and @code{read-input-method-name}, in @ref{Input Methods}.
@node Reading File Names
@subsection Reading File Names
+@cindex read file names
+@cindex prompt for file name
Here is another high-level completion function, designed for reading a
file name. It provides special features including automatic insertion
@@ -1782,6 +1786,7 @@ regular expression).
@node Minibuffer Windows
@section Minibuffer Windows
+@cindex minibuffer windows
These functions access and select minibuffer windows
and test whether they are active.
@@ -1872,6 +1877,7 @@ it erases the entire current buffer.
@node Recursive Mini
@section Recursive Minibuffers
+@cindex recursive minibuffers
These functions and variables deal with recursive minibuffers
(@pxref{Recursive Editing}):
diff --git a/lispref/modes.texi b/lispref/modes.texi
index 6eba02d5a0b..5d91b238fca 100644
--- a/lispref/modes.texi
+++ b/lispref/modes.texi
@@ -252,6 +252,8 @@ Fundamental mode. Rmail mode is a complicated and specialized mode.
@node Major Mode Conventions
@subsection Major Mode Conventions
+@cindex major mode conventions
+@cindex conventions for writing major modes
The code for existing major modes follows various coding conventions,
including conventions for local keymap and syntax table initialization,
@@ -495,6 +497,7 @@ Even if you never load the file more than once, someone else will.
@node Auto Major Mode
@subsection How Emacs Chooses a Major Mode
+@cindex major mode, automatic selection
Based on information in the file name or in the file itself, Emacs
automatically selects a major mode for the new buffer when a file is
@@ -1157,7 +1160,7 @@ if that value is non-nil."
@group
(setq imenu-case-fold-search t)
(set-syntax-table lisp-mode-syntax-table)
- (run-mode-hooks 'lisp-mode-hook)) ; @r{This permits the user to use a}
+ (run-mode-hooks 'lisp-mode-hook)) ; @r{This permits the user to use a}
; @r{hook to customize the mode.}
@end group
@end smallexample
@@ -1697,7 +1700,6 @@ the information in another fashion. This way, customizations made by
the user or by Lisp programs (such as @code{display-time} and major
modes) via changes to those variables remain effective.
-@cindex Shell mode @code{mode-line-format}
Here is an example of a @code{mode-line-format} that might be
useful for @code{shell-mode}, since it contains the host name and default
directory.
@@ -2336,7 +2338,7 @@ Setting this variable makes it buffer-local in the current buffer.
@node Font Lock Mode
@section Font Lock Mode
-@cindex Font Lock Mode
+@cindex Font Lock mode
@dfn{Font Lock mode} is a feature that automatically attaches
@code{face} properties to certain parts of the buffer based on their
@@ -2855,6 +2857,8 @@ set the variable @code{font-lock-defaults}.
@node Faces for Font Lock
@subsection Faces for Font Lock
+@cindex faces for font lock
+@cindex font lock faces
You can make Font Lock mode use any face, but several faces are
defined specifically for Font Lock mode. Each of these symbols is both
@@ -2927,6 +2931,7 @@ directives in C.
@node Syntactic Font Lock
@subsection Syntactic Font Lock
+@cindex syntactic font lock
Syntactic fontification uses the syntax table to find comments and
string constants (@pxref{Syntax Tables}). It highlights them using
diff --git a/lispref/nonascii.texi b/lispref/nonascii.texi
index 3661079c56e..dd0f15c817e 100644
--- a/lispref/nonascii.texi
+++ b/lispref/nonascii.texi
@@ -7,6 +7,7 @@
@node Non-ASCII Characters, Searching and Matching, Text, Top
@chapter Non-@acronym{ASCII} Characters
@cindex multibyte characters
+@cindex characters, multi-byte
@cindex non-@acronym{ASCII} characters
This chapter covers the special issues relating to non-@acronym{ASCII}
@@ -374,7 +375,7 @@ This command displays a list of characters in the character set
@section Characters and Bytes
@cindex bytes and characters
-@cindex introduction sequence
+@cindex introduction sequence (of character)
@cindex dimension (of character set)
In multibyte representation, each character occupies one or more
bytes. Each character set has an @dfn{introduction sequence}, which is
@@ -407,6 +408,7 @@ set's introduction sequence:
@node Splitting Characters
@section Splitting Characters
+@cindex character as bytes
The functions in this section convert between characters and the byte
values used to represent them. For most purposes, there is no need to
@@ -432,6 +434,7 @@ returns a list consisting of the symbol @code{unknown} and @var{character}.
@end example
@end defun
+@cindex generate characters in charsets
@defun make-char charset &optional code1 code2
This function returns the character in character set @var{charset} whose
position codes are @var{code1} and @var{code2}. This is roughly the
@@ -655,7 +658,9 @@ coding system, you'll get Unicode characters (of charset
@code{iso-latin-2} and decode the result with the same coding system,
you'll get Latin-2 characters.
-@cindex end of line conversion
+@cindex EOL conversion
+@cindex end-of-line conversion
+@cindex line end conversion
@dfn{End of line conversion} handles three different conventions used
on various systems for representing end of line in files. The Unix
convention is to use the linefeed character (also called newline). The
@@ -808,9 +813,6 @@ 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}
@@ -1103,11 +1105,11 @@ for decoding (in case @var{operation} does decoding), and
@var{encoding-system} is the coding system for encoding (in case
@var{operation} does encoding).
-The argument @var{operation} should be a symbol, any one of
-@code{insert-file-contents}, @code{write-region},
+The argument @var{operation} is a symbol, one of @code{write-region},
@code{start-process}, @code{call-process}, @code{call-process-region},
-or @code{open-network-stream}. These are the names of the Emacs I/O
-primitives that can do character code and eol conversion.
+@code{insert-file-contents}, or @code{open-network-stream}. These are
+the names of the Emacs I/O primitives that can do character code and
+eol conversion.
The remaining arguments should be the same arguments that might be given
to the corresponding I/O primitive. Depending on the primitive, one
@@ -1163,9 +1165,9 @@ of the right way to use the variable:
(insert-file-contents filename))
@end example
-When its value is non-@code{nil}, @code{coding-system-for-read} takes
-precedence over all other methods of specifying a coding system to use for
-input, including @code{file-coding-system-alist},
+When its value is non-@code{nil}, this variable takes precedence over
+all other methods of specifying a coding system to use for input,
+including @code{file-coding-system-alist},
@code{process-coding-system-alist} and
@code{network-coding-system-alist}.
@end defvar
@@ -1190,8 +1192,8 @@ decoding functions (@pxref{Explicit Encoding}).
@node Explicit Encoding
@subsection Explicit Encoding and Decoding
-@cindex encoding text
-@cindex decoding text
+@cindex encoding in coding systems
+@cindex decoding in coding systems
All the operations that transfer text in and out of Emacs have the
ability to use a coding system to encode or decode the text.
diff --git a/lispref/numbers.texi b/lispref/numbers.texi
index 6e54af3319c..4d7f3e7578a 100644
--- a/lispref/numbers.texi
+++ b/lispref/numbers.texi
@@ -222,6 +222,7 @@ down to an integer.
@node Predicates on Numbers
@section Type Predicates for Numbers
+@cindex predicates for numbers
The functions in this section test for numbers, or for a specific
type of number. The functions @code{integerp} and @code{floatp} can
@@ -267,7 +268,8 @@ if so, @code{nil} otherwise. The argument must be a number.
@node Comparison of Numbers
@section Comparison of Numbers
-@cindex number equality
+@cindex number comparison
+@cindex comparing numbers
To test numbers for numerical equality, you should normally use
@code{=}, not @code{eq}. There can be many distinct floating point
@@ -388,6 +390,8 @@ This function returns the absolute value of @var{number}.
@node Numeric Conversions
@section Numeric Conversions
@cindex rounding in conversions
+@cindex number conversions
+@cindex converting numbers
To convert an integer to floating point, use the function @code{float}.
@@ -480,6 +484,7 @@ depending on your machine.
@node Arithmetic Operations
@section Arithmetic Operations
+@cindex arithmetic operations
Emacs Lisp provides the traditional four arithmetic operations:
addition, subtraction, multiplication, and division. Remainder and modulus
@@ -732,6 +737,8 @@ and returns that value as a floating point number.
@node Bitwise Operations
@section Bitwise Operations on Integers
+@cindex bitwise arithmetic
+@cindex logical arithmetic
In a computer, an integer is represented as a binary number, a
sequence of @dfn{bits} (digits which are either zero or one). A bitwise
@@ -913,8 +920,6 @@ Here are other examples:
@end defun
@defun logand &rest ints-or-markers
-@cindex logical and
-@cindex bitwise and
This function returns the ``logical and'' of the arguments: the
@var{n}th bit is set in the result if, and only if, the @var{n}th bit is
set in all the arguments. (``Set'' means that the value of the bit is 1
@@ -966,8 +971,6 @@ because its binary representation consists entirely of ones. If
@end defun
@defun logior &rest ints-or-markers
-@cindex logical inclusive or
-@cindex bitwise or
This function returns the ``inclusive or'' of its arguments: the @var{n}th bit
is set in the result if, and only if, the @var{n}th bit is set in at least
one of the arguments. If there are no arguments, the result is zero,
@@ -993,8 +996,6 @@ passed just one argument, it returns that argument.
@end defun
@defun logxor &rest ints-or-markers
-@cindex bitwise exclusive or
-@cindex logical exclusive or
This function returns the ``exclusive or'' of its arguments: the
@var{n}th bit is set in the result if, and only if, the @var{n}th bit is
set in an odd number of the arguments. If there are no arguments, the
@@ -1020,8 +1021,6 @@ result is 0, which is an identity element for this operation. If
@end defun
@defun lognot integer
-@cindex logical not
-@cindex bitwise not
This function returns the logical complement of its argument: the @var{n}th
bit is one in the result if, and only if, the @var{n}th bit is zero in
@var{integer}, and vice-versa.
@@ -1039,6 +1038,7 @@ bit is one in the result if, and only if, the @var{n}th bit is zero in
@section Standard Mathematical Functions
@cindex transcendental functions
@cindex mathematical functions
+@cindex floating-point functions
These mathematical functions allow integers as well as floating point
numbers as arguments.
@@ -1066,7 +1066,7 @@ pi/2
@math{\pi/2}
@end tex
(inclusive) whose sine is @var{arg}; if, however, @var{arg} is out of
-range (outside [-1, 1]), it signals a @code{domain-error} error.
+range (outside [@minus{}1, 1]), it signals a @code{domain-error} error.
@end defun
@defun acos arg
@@ -1078,7 +1078,7 @@ pi
@math{\pi}
@end tex
(inclusive) whose cosine is @var{arg}; if, however, @var{arg} is out
-of range (outside [-1, 1]), it signals a @code{domain-error} error.
+of range (outside [@minus{}1, 1]), it signals a @code{domain-error} error.
@end defun
@defun atan y &optional x
@@ -1183,7 +1183,7 @@ generates the same sequence of numbers. Emacs always starts with the
same seed value, so the sequence of values of @code{random} is actually
the same in each Emacs run! For example, in one operating system, the
first call to @code{(random)} after you start Emacs always returns
--1457731, and the second one always returns -7692030. This
+@minus{}1457731, and the second one always returns @minus{}7692030. This
repeatability is helpful for debugging.
If you want random numbers that don't always come out the same, execute
diff --git a/lispref/objects.texi b/lispref/objects.texi
index 3fc11631111..e75cde70202 100644
--- a/lispref/objects.texi
+++ b/lispref/objects.texi
@@ -288,7 +288,7 @@ you @emph{must} use a second @samp{\} to quote it: @samp{?\\}.
@cindex @samp{\a}
@cindex backspace
@cindex @samp{\b}
-@cindex tab
+@cindex tab (ASCII character)
@cindex @samp{\t}
@cindex vertical tab
@cindex @samp{\v}
@@ -296,11 +296,11 @@ you @emph{must} use a second @samp{\} to quote it: @samp{?\\}.
@cindex @samp{\f}
@cindex newline
@cindex @samp{\n}
-@cindex return
+@cindex return (ASCII character)
@cindex @samp{\r}
-@cindex escape
+@cindex escape (ASCII character)
@cindex @samp{\e}
-@cindex space
+@cindex space (ASCII character)
@cindex @samp{\s}
You can express the characters control-g, backspace, tab, newline,
vertical tab, formfeed, space, return, del, and escape as @samp{?\a},
@@ -661,7 +661,7 @@ empty list. The empty list is actually the symbol @code{nil}.
cells are used as part of lists, the phrase @dfn{list structure} has
come to refer to any structure made out of cons cells.
-@cindex atom
+@cindex atoms
Because cons cells are so central to Lisp, we also have a word for
``an object which is not a cons cell.'' These objects are called
@dfn{atoms}.
@@ -753,7 +753,7 @@ buttercup)}, sketched in a different manner:
@end group
@end smallexample
-@cindex @code{nil} in lists
+@cindex @code{nil} as a list
@cindex empty list
A list with no elements in it is the @dfn{empty list}; it is identical
to the symbol @code{nil}. In other words, @code{nil} is both a symbol
@@ -1493,7 +1493,7 @@ uniquely).
@node Window Configuration Type
@subsection Window Configuration Type
-@cindex screen layout
+@cindex window layout in a frame
A @dfn{window configuration} stores information about the positions,
sizes, and contents of the windows in a frame, so you can recreate the
@@ -1507,6 +1507,7 @@ window configurations.
@node Frame Configuration Type
@subsection Frame Configuration Type
@cindex screen layout
+@cindex window layout, all frames
A @dfn{frame configuration} stores information about the positions,
sizes, and contents of the windows in all frames. It is actually
@@ -1998,7 +1999,6 @@ always true.
@end group
@end example
-@cindex equality of strings
Comparison of strings is case-sensitive, but does not take account of
text properties---it compares only the characters in the strings. For
technical reasons, a unibyte string and a multibyte string are
diff --git a/lispref/os.texi b/lispref/os.texi
index 9fde03b650c..498cc857eab 100644
--- a/lispref/os.texi
+++ b/lispref/os.texi
@@ -54,7 +54,7 @@ can customize these actions.
@node Startup Summary
@subsection Summary: Sequence of Actions at Startup
-@cindex initialization
+@cindex initialization of Emacs
@cindex startup of Emacs
@cindex @file{startup.el}
@@ -622,6 +622,7 @@ convenient way to test parts of this string is with
@code{string-match}.
@end defvar
+@cindex system type and name
@defvar system-type
The value of this variable is a symbol indicating the type of operating
system Emacs is operating on. Here is a table of the possible values:
@@ -885,6 +886,7 @@ indicating whether the privilege is currently enabled.
@node User Identification
@section User Identification
+@cindex user identification
@defvar init-file-user
This variable says which user's init files should be used by
@@ -1308,6 +1310,7 @@ the inverse conversion, use @code{float-time}.
@node Processor Run Time
@section Processor Run time
+@cindex processor run time
@defun get-internal-run-time
This function returns the processor run time used by Emacs as a list
@@ -1418,20 +1421,15 @@ the timer runs only once.
@var{time} may specify an absolute or a relative time.
-Absolute times may be specified in a wide variety of formats; this
-function tries to accept all the commonly used date formats. The most
-convenient formats are strings. Valid such formats include these two,
-
-@example
-@var{year}-@var{month}-@var{day} @var{hour}:@var{min}:@var{sec} @var{timezone}
-
-@var{hour}:@var{min}:@var{sec} @var{timezone} @var{month}/@var{day}/@var{year}
-@end example
-
-@noindent
-where in both examples all fields are numbers; the format that
-@code{current-time-string} returns is also allowed, and many others
-as well.
+Absolute times may be specified using a string with a limited variety
+of formats, and are taken to be times @emph{today}, even if already in
+the past. The recognized forms are @samp{@var{xxxx}},
+@samp{@var{x}:@var{xx}}, or @samp{@var{xx}:@var{xx}} (military time),
+and @samp{@var{xx}am}, @samp{@var{xx}AM}, @samp{@var{xx}pm},
+@samp{@var{xx}PM}, @samp{@var{xx}:@var{xx}am},
+@samp{@var{xx}:@var{xx}AM}, @samp{@var{xx}:@var{xx}pm}, or
+@samp{@var{xx}:@var{xx}PM}. A period can be used instead of a colon
+to separate the hour and minute parts.
To specify a relative time as a string, use numbers followed by units.
For example:
@@ -1449,8 +1447,9 @@ For relative time values, Emacs considers a month to be exactly thirty
days, and a year to be exactly 365.25 days.
Not all convenient formats are strings. If @var{time} is a number
-(integer or floating point), that specifies a relative time measured
-in seconds.
+(integer or floating point), that specifies a relative time measured in
+seconds. The result of @code{encode-time} can also be used to specify
+an absolute value for @var{time}.
In most cases, @var{repeat} has no effect on when @emph{first} call
takes place---@var{time} alone specifies that. There is one exception:
@@ -1695,6 +1694,7 @@ is the character Emacs currently uses for quitting, usually @kbd{C-g}.
@node Recording Input
@subsection Recording Input
+@cindex recording input
@defun recent-keys
This function returns a vector containing the last 300 input events from
@@ -1868,6 +1868,7 @@ is called with one argument, a property list that describes the sound.
@node X11 Keysyms
@section Operating on X11 Keysyms
+@cindex X11 keysyms
To define system-specific X11 keysyms, set the variable
@code{system-key-alist}.
@@ -1921,7 +1922,6 @@ how to swap the Meta and Alt modifiers within Emacs:
@node Batch Mode
@section Batch Mode
@cindex batch mode
-@cindex noninteractive use
The command-line option @samp{-batch} causes Emacs to run
noninteractively. In this mode, Emacs does not read commands from the
diff --git a/lispref/positions.texi b/lispref/positions.texi
index 993bc31511f..939b3f75fc1 100644
--- a/lispref/positions.texi
+++ b/lispref/positions.texi
@@ -123,6 +123,7 @@ size of @var{buffer}.
@node Motion
@section Motion
+@cindex motion by chars, words, lines, lists
Motion functions change the value of point, either relative to the
current value of point, relative to the beginning or end of the buffer,
@@ -235,6 +236,7 @@ If this variable is non-@code{nil}, certain motion functions including
@node Buffer End Motion
@subsection Motion to an End of the Buffer
+@cindex move to beginning or end of buffer
To move point to the beginning of the buffer, write:
@@ -642,6 +644,7 @@ beginning of the first screen line. @xref{Minibuffer Contents}.
@cindex sexp motion
@cindex Lisp expression motion
@cindex list motion
+@cindex balanced parenthesis motion
Here are several functions concerned with balanced-parenthesis
expressions (also called @dfn{sexps} in connection with moving across
@@ -827,7 +830,6 @@ Configurations}).
@defspec save-excursion body@dots{}
@cindex mark excursion
@cindex point excursion
-@cindex current buffer excursion
The @code{save-excursion} special form saves the identity of the current
buffer and the values of point and the mark in it, evaluates
@var{body}, and finally restores the buffer and its saved values of
diff --git a/lispref/processes.texi b/lispref/processes.texi
index 2bf545bc9f1..fbc8b785c11 100644
--- a/lispref/processes.texi
+++ b/lispref/processes.texi
@@ -146,6 +146,8 @@ file name.
@node Shell Arguments
@section Shell Arguments
+@cindex arguments for shell commands
+@cindex shell command arguments
Lisp programs sometimes need to run a shell and give it a command
that contains file names that were specified by the user. These
@@ -347,7 +349,7 @@ handler could be different from the handler chosen for the
@var{infile} is on another remote host. Or @code{default-directory}
could be non-special, whereas @var{infile} is on a remote host.)
-If @var{buffer} has the form @code{(@var{real-destination}
+If @var{buffer} is a list of the form @code{(@var{real-destination}
@var{error-destination})}, and @var{error-destination} names a file,
then the same remarks as for @var{infile} apply.
@@ -1236,6 +1238,7 @@ there is no filter function:
@node Decoding Output
@subsection Decoding Process Output
+@cindex decode process output
When Emacs writes process output directly into a multibyte buffer,
it decodes the output according to the process output coding system.
@@ -1285,6 +1288,7 @@ This function returns the filter multibyte flag of @var{process}.
@node Accepting Output
@subsection Accepting Output from Processes
+@cindex accept input from processes
Output from asynchronous subprocesses normally arrives only while
Emacs is waiting for some sort of external event, such as elapsed time
@@ -1328,7 +1332,7 @@ arrived.
@node Sentinels
@section Sentinels: Detecting Process Status Changes
@cindex process sentinel
-@cindex sentinel
+@cindex sentinel (of process)
A @dfn{process sentinel} is a function that is called whenever the
associated process changes status for any reason, including signals
@@ -1624,7 +1628,7 @@ The associated value is the process filter function.
@item :sentinel
The associated value is the process sentinel function.
@item :remote
-In a connection, this is the address in internal format of the remote peer.
+In a connection, the address in internal format of the remote peer.
@item :local
The local address, in internal format.
@item :service
@@ -1643,6 +1647,7 @@ For an ordinary child process, this function always returns @code{t}.
@node Network Servers
@section Network Servers
+@cindex network servers
You create a server by calling @code{make-network-process} with
@code{:server t}. The server will listen for connection requests from
@@ -1722,7 +1727,7 @@ sets its remote peer address to @var{address}.
@section Low-Level Network Access
You can also create network connections by operating at a lower
-level that that of @code{open-network-stream}, using
+level than that of @code{open-network-stream}, using
@code{make-network-process}.
@menu
@@ -2061,8 +2066,9 @@ number @var{p}. @code{format-network-address} converts that to the
string @code{"@var{a}.@var{b}.@var{c}.@var{d}:@var{p}"}.
A nine-element vector @code{[@var{a} @var{b} @var{c} @var{d} @var{e}
-@var{f} @var{g} @var{h} @var{p}]} represents an IPv6 address and port
-number. @code{format-network-address} converts that to the string
+@var{f} @var{g} @var{h} @var{p}]} represents an IPv6 address along
+with a port number. @code{format-network-address} converts that to
+the string
@code{"[@var{a}:@var{b}:@var{c}:@var{d}:@var{e}:@var{f}:@var{g}:@var{h}]:@var{p}"}.
If the vector does not include the port number, @var{p}, or if
@@ -2072,6 +2078,7 @@ If the vector does not include the port number, @var{p}, or if
@node Byte Packing
@section Packing and Unpacking Byte Arrays
+@cindex byte packing and unpacking
This section describes how to pack and unpack arrays of bytes,
usually for binary network protocols. These functions convert byte arrays
diff --git a/lispref/searching.texi b/lispref/searching.texi
index 7fdbdb73d46..10e8c672962 100644
--- a/lispref/searching.texi
+++ b/lispref/searching.texi
@@ -106,7 +106,7 @@ leaves point at the beginning of the match.
@end deffn
@deffn Command word-search-forward string &optional limit noerror repeat
-@cindex word search
+@c @cindex word search Redundant
This function searches forward from point for a ``word'' match for
@var{string}. If it finds a match, it sets point to the end of the
match found, and returns the new value of point.
@@ -220,7 +220,7 @@ a regexp is a very powerful operation. This section explains how to write
regexps; the following section says how to search for them.
@findex re-builder
-@cindex authoring regular expressions
+@cindex regular expressions, developing
For convenient interactive development of regular expressions, you
can use the @kbd{M-x re-builder} command. It provides a convenient
interface for creating regular expressions, by giving immediate visual
@@ -309,17 +309,16 @@ first tries to match all three @samp{a}s; but the rest of the pattern is
The next alternative is for @samp{a*} to match only two @samp{a}s. With
this choice, the rest of the regexp matches successfully.
-@strong{Warning:} Nested repetition operators take a long time,
-or even forever, if they
-lead to ambiguous matching. For example, trying to match the regular
-expression @samp{\(x+y*\)*a} against the string
-@samp{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz} could take hours before it
-ultimately fails. Emacs must try each way of grouping the 35
-@samp{x}s before concluding that none of them can work. Even worse,
-@samp{\(x*\)*} can match the null string in infinitely many ways, so
-it causes an infinite loop. To avoid these problems, check nested
-repetitions carefully, to make sure that they do not cause combinatorial
-explosions in backtracking.
+@strong{Warning:} Nested repetition operators can run for an
+indefinitely long time, if they lead to ambiguous matching. For
+example, trying to match the regular expression @samp{\(x+y*\)*a}
+against the string @samp{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz} could
+take hours before it ultimately fails. Emacs must try each way of
+grouping the @samp{x}s before concluding that none of them can work.
+Even worse, @samp{\(x*\)*} can match the null string in infinitely
+many ways, so it causes an infinite loop. To avoid these problems,
+check nested repetitions carefully, to make sure that they do not
+cause combinatorial explosions in backtracking.
@item @samp{+}
@cindex @samp{+} in regexp
@@ -1186,6 +1185,7 @@ match data around it, to prevent it from being overwritten.
@node Replacing Match
@subsection Replacing the Text that Matched
+@cindex replace matched text
This function replaces all or part of the text matched by the last
search. It works by means of the match data.
@@ -1543,7 +1543,8 @@ associated with it still exists.
@node Search and Replace
@section Search and Replace
-@cindex replacement
+@cindex replacement after search
+@cindex searching and replacing
If you want to find all matches for a regexp in part of the buffer,
and replace them, the best way is to write an explicit loop using
diff --git a/lispref/sequences.texi b/lispref/sequences.texi
index ac5a16e261f..7e66549412b 100644
--- a/lispref/sequences.texi
+++ b/lispref/sequences.texi
@@ -388,7 +388,7 @@ are often useful for objects known to be arrays. @xref{Sequence Functions}.
@node Vectors
@section Vectors
-@cindex vector
+@cindex vector (type)
Arrays in Lisp, like arrays in most languages, are blocks of memory
whose elements can be accessed in constant time. A @dfn{vector} is a
diff --git a/lispref/streams.texi b/lispref/streams.texi
index 9bb66378e5f..7356c119a1e 100644
--- a/lispref/streams.texi
+++ b/lispref/streams.texi
@@ -681,6 +681,7 @@ returns @code{"The buffer is foo"}.
@node Output Variables
@section Variables Affecting Output
+@cindex output-controlling variables
@defvar standard-output
The value of this variable is the default output stream---the stream
diff --git a/lispref/strings.texi b/lispref/strings.texi
index 23f679d5bb9..af5a2fa14d3 100644
--- a/lispref/strings.texi
+++ b/lispref/strings.texi
@@ -586,6 +586,7 @@ first character of @var{string} is the null character, @acronym{ASCII} code
@example
(string-to-char "ABC")
@result{} 65
+
(string-to-char "xyz")
@result{} 120
(string-to-char "")
@@ -1107,6 +1108,30 @@ This function returns the current buffer's case table.
This sets the current buffer's case table to @var{table}.
@end defun
+@defmac with-case-table table body@dots{}
+The @code{with-case-table} macro saves the current case table, makes
+@var{table} the current case table, evaluates the @var{body} forms,
+and finally restores the case table. The return value is the value of
+the last form in @var{body}. The case table is restored even in case
+of an abnormal exit via @code{throw} or error (@pxref{Nonlocal
+Exits}).
+@end defmac
+
+ Some language environments may modify the case conversions of
+@acronym{ASCII} characters; for example, in the Turkish language
+environment, the @acronym{ASCII} character @samp{I} is downcased into
+a Turkish ``dotless i''. This can interfere with code that requires
+ordinary ASCII case conversion, such as implementations of
+@acronym{ASCII}-based network protocols. In that case, use the
+@code{with-case-table} macro with the variable @var{ascii-case-table},
+which stores the unmodified case table for the @acronym{ASCII}
+character set.
+
+@defvar ascii-case-table
+The case table for the @acronym{ASCII} character set. This should not be
+modified by any language environment settings.
+@end defvar
+
The following three functions are convenient subroutines for packages
that define non-@acronym{ASCII} character sets. They modify the specified
case table @var{case-table}; they also modify the standard syntax table.
diff --git a/lispref/symbols.texi b/lispref/symbols.texi
index 4cd4bd42594..7234a75bd59 100644
--- a/lispref/symbols.texi
+++ b/lispref/symbols.texi
@@ -139,7 +139,7 @@ symbol naming a function written in Lisp would have a lambda expression
@node Definitions, Creating Symbols, Symbol Components, Symbols
@section Defining Symbols
-@cindex definition of a symbol
+@cindex definitions of symbols
A @dfn{definition} in Lisp is a special form that announces your
intention to use a certain symbol in a particular way. In Emacs Lisp,
@@ -436,6 +436,8 @@ names, and the other two elements are the corresponding values.
@node Plists and Alists
@subsection Property Lists and Association Lists
+@cindex plist vs. alist
+@cindex alist vs. plist
@cindex property lists vs association lists
Association lists (@pxref{Association Lists}) are very similar to
diff --git a/lispref/syntax.texi b/lispref/syntax.texi
index 47f09944880..340f74632bd 100644
--- a/lispref/syntax.texi
+++ b/lispref/syntax.texi
@@ -6,7 +6,7 @@
@setfilename ../info/syntax
@node Syntax Tables, Abbrevs, Searching and Matching, Top
@chapter Syntax Tables
-@cindex parsing
+@cindex parsing buffer text
@cindex syntax table
@cindex text parsing
@@ -80,7 +80,7 @@ This function returns @code{t} if @var{object} is a syntax table.
@node Syntax Descriptors
@section Syntax Descriptors
-@cindex syntax classes
+@cindex syntax class
This section describes the syntax classes and flags that denote the
syntax of a character, and how they are represented as a @dfn{syntax
@@ -203,7 +203,7 @@ we do not want them to turn off the usual syntactic properties of
other characters in the quotation.
@end deffn
-@deffn {Syntax class} @w{escape}
+@deffn {Syntax class} @w{escape-syntax character}
An @dfn{escape character} (designated by @samp{\}) starts an escape
sequence such as is used in C string and character constants. The
character @samp{\} belongs to this class in both C and Lisp. (In C, it
@@ -253,7 +253,7 @@ English text has no comment characters. In Lisp, the semicolon
(@samp{;}) starts a comment and a newline or formfeed ends one.
@end deffn
-@deffn {Syntax class} @w{inherit}
+@deffn {Syntax class} @w{inherit standard syntax}
This syntax class does not specify a particular syntax. It says to look
in the standard syntax table to find the syntax of this character. The
designator for this syntax class is @samp{@@}.
@@ -1011,8 +1011,9 @@ corresponds to each syntax flag.
@end multitable
@defun string-to-syntax @var{desc}
-This function returns the internal form @code{(@var{syntax-code} .
-@var{matching-char})} corresponding to the syntax descriptor @var{desc}.
+This function returns the internal form corresponding to the syntax
+descriptor @var{desc}, a cons cell @code{(@var{syntax-code}
+. @var{matching-char})}.
@end defun
@defun syntax-after pos
diff --git a/lispref/text.texi b/lispref/text.texi
index 11cf3cf2184..148bf0025a2 100644
--- a/lispref/text.texi
+++ b/lispref/text.texi
@@ -64,6 +64,7 @@ the character after point.
@node Near Point
@section Examining Text Near Point
+@cindex text near point
Many functions are provided to look at the characters around point.
Several simple functions are described here. See also @code{looking-at}
@@ -537,8 +538,9 @@ newlines and tabs like any other characters).
@node Deletion
@section Deleting Text
+@cindex text deletion
-@cindex deletion vs killing
+@cindex deleting text vs killing
Deletion means removing part of the text in a buffer, without saving
it in the kill ring (@pxref{The Kill Ring}). Deleted text can't be
yanked, but can be reinserted using the undo mechanism (@pxref{Undo}).
@@ -594,7 +596,7 @@ The value returned is always @code{nil}.
@end deffn
@deffn Command delete-backward-char count &optional killp
-@cindex delete previous char
+@cindex deleting previous char
This command deletes @var{count} characters directly before point, or
after point if @var{count} is negative. If @var{killp} is
non-@code{nil}, then it saves the deleted characters in the kill ring.
@@ -1348,7 +1350,7 @@ You cannot specify any other buffer.
@end deffn
@deffn Command buffer-disable-undo &optional buffer-or-name
-@cindex disable undo
+@cindex disabling undo
This function discards the undo list of @var{buffer-or-name}, and disables
further recording of undo information. As a result, it is no longer
possible to undo either previous changes or any subsequent changes. If
@@ -1400,7 +1402,7 @@ leak memory if the user waits too long before answering the question.
@node Filling
@comment node-name, next, previous, up
@section Filling
-@cindex filling, explicit
+@cindex filling text
@dfn{Filling} means adjusting the lengths of lines (by moving the line
breaks) so that they are nearly (but no greater than) a specified
@@ -1431,7 +1433,6 @@ as @code{full}.
argument implies the value @code{full} for @var{justify}.
@deffn Command fill-paragraph justify
-@cindex filling a paragraph
This command fills the paragraph at or after point. If
@var{justify} is non-@code{nil}, each line is justified as well.
It uses the ordinary paragraph motion commands to find paragraph
@@ -1678,7 +1679,7 @@ non-@code{nil}, then the line won't be broken there.
@node Adaptive Fill
@section Adaptive Fill Mode
-@cindex Adaptive Fill mode
+@c @cindex Adaptive Fill mode "adaptive-fill-mode" is adjacent.
When @dfn{Adaptive Fill Mode} is enabled, Emacs determines the fill
prefix automatically from the text in each paragraph being filled
@@ -1740,11 +1741,8 @@ Adaptive Fill mode matches this regular expression against the text
starting after the left margin whitespace (if any) on a line; the
characters it matches are that line's candidate for the fill prefix.
-@w{@code{"[ \t]*\\([-!|#%;>*·•‣âƒâ—¦]+[ \t]*\\|(?[0-9]+[.)][ \t]*\\)*"}} is the
-default value. This matches a number enclosed in parentheses or
-followed by a period, or certain punctuation characters, or any
-sequence of these intermingled with whitespace. In particular, it
-matches a sequence of whitespace, possibly empty.
+The default value matches whitespace with certain punctuation
+characters intermingled.
@end defopt
@defopt adaptive-fill-first-line-regexp
@@ -2563,8 +2561,9 @@ property @code{face} specifies the faces for displaying the character
list is to specify a name and ask what value corresponds to it.
If a character has a @code{category} property, we call it the
-@dfn{category} of the character. It should be a symbol. The properties
-of the symbol serve as defaults for the properties of the character.
+@dfn{property category} of the character. It should be a symbol. The
+properties of the symbol serve as defaults for the properties of the
+character.
Copying text between strings and buffers preserves the properties
along with the characters; this includes such diverse functions as
@@ -2611,7 +2610,7 @@ string). The argument @var{object} is optional and defaults to the
current buffer.
If there is no @var{prop} property strictly speaking, but the character
-has a category that is a symbol, then @code{get-text-property} returns
+has a property category that is a symbol, then @code{get-text-property} returns
the @var{prop} property of that symbol.
@end defun
@@ -2958,12 +2957,13 @@ names that control filling and property inheritance. All other names
have no standard meaning, and you can use them as you like.
@table @code
-@cindex category of text character
+@cindex property category of text character
@kindex category @r{(text property)}
@item category
If a character has a @code{category} property, we call it the
-@dfn{category} of the character. It should be a symbol. The properties
-of the symbol serve as defaults for the properties of the character.
+@dfn{property category} of the character. It should be a symbol. The
+properties of this symbol serve as defaults for the properties of the
+character.
@item face
@cindex face codes of text
@@ -2987,13 +2987,13 @@ time you want to specify a particular attribute for certain text.
@xref{Face Attributes}.
@item
-A cons cell of the form @code{(foreground-color . @var{color-name})} or
+A cons cell with the form @code{(foreground-color . @var{color-name})} or
@code{(background-color . @var{color-name})}. These elements specify
just the foreground color or just the background color. @xref{Color
Names}, for the supported forms of @var{color-name}.
-@code{(foreground-color . @var{color-name})} is equivalent to
-specifying @code{(:foreground @var{color-name})}, and likewise for the
+A cons cell of @code{(foreground-color . @var{color-name})} is equivalent to
+specifying @code{(:foreground @var{color-name})}; likewise for the
background.
@end itemize
@@ -3044,7 +3044,6 @@ The character's @code{face} property, or absence of one, is valid.
@end table
@item display
-@kindex display @r{(text property)}
This property activates various features that change the
way text is displayed. For example, it can make text appear taller
or shorter, higher or lower, wider or narrow, or replaced with an image.
@@ -3471,7 +3470,7 @@ once for the same part of the buffer, you can use the variable
@code{buffer-access-fontified-property}.
@defvar buffer-access-fontified-property
-If this value's variable is non-@code{nil}, it is a symbol which is used
+If this variable's value is non-@code{nil}, it is a symbol which is used
as a text property name. A non-@code{nil} value for that text property
means, ``the other text properties for this character have already been
computed.''
diff --git a/lispref/tips.texi b/lispref/tips.texi
index 5f4479a5fd3..ee8caf4953b 100644
--- a/lispref/tips.texi
+++ b/lispref/tips.texi
@@ -6,7 +6,7 @@
@setfilename ../info/tips
@node Tips, GNU Emacs Internals, GPL, Top
@appendix Tips and Conventions
-@cindex tips
+@cindex tips for writing Lisp
@cindex standards of coding style
@cindex coding standards
@@ -148,7 +148,7 @@ to store a list of functions (i.e., the variable is a hook), please
follow the naming conventions for hooks. @xref{Hooks}.
@item
-@cindex unloading packages
+@cindex unloading packages, preparing for
If loading the file adds functions to hooks, define a function
@code{@var{feature}-unload-hook}, where @var{feature} is the name of
the feature the package provides, and make it undo any such changes.
@@ -295,6 +295,7 @@ Otherwise, use your name. See also @xref{Library Headers}.
@node Key Binding Conventions
@section Key Binding Conventions
+@cindex key binding, conventions for
@itemize @bullet
@item
@@ -374,6 +375,7 @@ after @key{ESC}. In these states, you should define @kbd{@key{ESC}
@node Programming Tips
@section Emacs Programming Tips
+@cindex programming conventions
Following these conventions will make your program fit better
into Emacs when it runs.
@@ -559,6 +561,7 @@ the speed. @xref{Inline Functions}.
@node Warning Tips
@section Tips for Avoiding Compiler Warnings
+@cindex byte compiler warnings, how to avoid
@itemize @bullet
@item
@@ -599,6 +602,7 @@ is to put a call to @code{with-no-warnings} around it.
@node Documentation Tips
@section Tips for Documentation Strings
+@cindex documentation strings, conventions and tips
@findex checkdoc-minor-mode
Here are some tips and conventions for the writing of documentation
@@ -863,6 +867,7 @@ describe the most important commands in your major mode, and then use
@node Comment Tips
@section Tips on Writing Comments
+@cindex comments, Lisp convention for
We recommend these conventions for where to put comments and how to
indent them:
diff --git a/lispref/variables.texi b/lispref/variables.texi
index 56732d22db6..9d9dc8260bb 100644
--- a/lispref/variables.texi
+++ b/lispref/variables.texi
@@ -100,10 +100,12 @@ x
@node Constant Variables
@section Variables that Never Change
-@vindex nil
-@vindex t
@kindex setting-constant
@cindex keyword symbol
+@cindex variable with constant value
+@cindex constant variables
+@cindex symbol that evaluates to itself
+@cindex symbol with constant value
In Emacs Lisp, certain symbols normally evaluate to themselves. These
include @code{nil} and @code{t}, as well as any symbol whose name starts
@@ -1079,7 +1081,7 @@ use short names like @code{x}.
@node Buffer-Local Variables
@section Buffer-Local Variables
-@cindex variables, buffer-local
+@cindex variable, buffer-local
@cindex buffer-local variables
Global and local variable bindings are found in most programming
@@ -1520,6 +1522,7 @@ an ordinary evaluated argument.
@node Frame-Local Variables
@section Frame-Local Variables
+@cindex frame-local variables
Just as variables can have buffer-local bindings, they can also have
frame-local bindings. These bindings belong to one frame, and are in
@@ -1719,7 +1722,7 @@ This function returns non-@code{nil} if it is safe to give @var{sym}
the value @var{val}, based on the above criteria.
@end defun
-@cindex risky local variable
+@c @cindex risky local variable Duplicates risky-local-variable
Some variables are considered @dfn{risky}. A variable whose name
ends in any of @samp{-command}, @samp{-frame-alist}, @samp{-function},
@samp{-functions}, @samp{-hook}, @samp{-hooks}, @samp{-form},
@@ -1778,6 +1781,7 @@ properties from string values specified for file local variables.
@node Variable Aliases
@section Variable Aliases
+@cindex variable aliases
It is sometimes useful to make two variables synonyms, so that both
variables always have the same value, and changing either one also
diff --git a/lispref/windows.texi b/lispref/windows.texi
index 5f21b1977bd..22bb43ecaa0 100644
--- a/lispref/windows.texi
+++ b/lispref/windows.texi
@@ -430,7 +430,7 @@ This function always returns @code{nil}.
@node Selecting Windows
@section Selecting Windows
-@cindex selecting windows
+@cindex selecting a window
When a window is selected, the buffer in the window becomes the current
buffer, and the cursor will appear in it.
@@ -572,7 +572,7 @@ In general, within each set of siblings at any level in the window tree,
the order is left to right, or top to bottom.
@defun next-window &optional window minibuf all-frames
-@cindex minibuffer window
+@cindex minibuffer window, and @code{next-window}
This function returns the window following @var{window} in the cyclic
ordering of windows. This is the window that @kbd{C-x o} would select
if typed when @var{window} is selected. If @var{window} is the only
@@ -1195,6 +1195,7 @@ point and the buffer's point always move together; they remain equal.
@noindent
@xref{Positions}, for more details on buffer positions.
+@cindex cursor
As far as the user is concerned, point is where the cursor is, and
when the user switches to another buffer, the cursor jumps to the
position of point in that buffer.
@@ -1223,6 +1224,7 @@ this simply does @code{goto-char}.
@node Window Start
@section The Window Start Position
+@cindex window start position
Each window contains a marker used to keep track of a buffer position
that specifies where in the buffer display should start. This position
@@ -1621,7 +1623,7 @@ Replaces three keystroke sequence C-u 0 C-l."
@node Vertical Scrolling
@section Vertical Fractional Scrolling
-@cindex Vertical Fractional Scrolling
+@cindex vertical fractional scrolling
@dfn{Vertical fractional scrolling} means shifting the image in the
window up or down by a specified multiple or fraction of a line.
@@ -1985,6 +1987,7 @@ in character lines and columns.
@node Resizing Windows
@section Changing the Size of a Window
@cindex window resizing
+@cindex resize window
@cindex changing window size
@cindex window size, changing
@@ -2355,6 +2358,7 @@ configurations.
@node Window Hooks
@section Hooks for Window Scrolling and Changes
+@cindex hooks for window operations
This section describes how a Lisp program can take action whenever a
window displays a different part of its buffer or a different buffer.
diff --git a/mac/ChangeLog b/mac/ChangeLog
index c128ae837e0..d427a71e5c5 100644
--- a/mac/ChangeLog
+++ b/mac/ChangeLog
@@ -1,3 +1,7 @@
+2007-04-09 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * make-package (compver): Don't hardcode processor type.
+
2007-03-20 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* makefile.MPW (dired.c.x, editfns.c.x, fileio.c.x, lread.c.x)
diff --git a/mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings b/mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings
index c84e392b177..c9f8190c883 100644
--- a/mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings
+++ b/mac/Emacs.app/Contents/Resources/English.lproj/InfoPlist.strings
@@ -1,5 +1,5 @@
/* Localized versions of Info.plist keys */
CFBundleName = "Emacs";
-CFBundleShortVersionString = "22.0.96";
-CFBundleGetInfoString = "22.0.96, Copyright (C) 2007 Free Software Foundation, Inc.";
+CFBundleShortVersionString = "22.0.98";
+CFBundleGetInfoString = "22.0.98, Copyright (C) 2007 Free Software Foundation, Inc.";
diff --git a/mac/make-package b/mac/make-package
index a783ef40a50..1db34d2046c 100755
--- a/mac/make-package
+++ b/mac/make-package
@@ -325,7 +325,7 @@ if test "$with_app" == "yes"; then
fi
fi
-compver=powerpc-apple-darwin`uname -r`
+compver=`uname -p`-apple-darwin`uname -r`
if test "$self_contained" = "yes"; then
# Move shared files down to Resources directory
diff --git a/mac/src/Emacs.r b/mac/src/Emacs.r
index f48652dd08d..0a17e379168 100644
--- a/mac/src/Emacs.r
+++ b/mac/src/Emacs.r
@@ -221,10 +221,10 @@ resource 'vers' (1) {
0x22, /* Major revision in BCD */
0x0, /* Minor revision in BCD */
alpha, /* development, alpha, beta, or final (release) */
- 96, /* Non-final release # */
+ 98, /* Non-final release # */
0, /* Region code */
- "22.0.96", /* Short version number */
- "22.0.96, Copyright \0xa9 2007 "
+ "22.0.98", /* Short version number */
+ "22.0.98, Copyright \0xa9 2007 "
"Free Software Foundation, Inc." /* Long version number */
};
diff --git a/man/ChangeLog b/man/ChangeLog
index c2d58789490..b31152b9943 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,186 @@
+2007-04-15 Jay Belanger <belanger@truman.edu>
+
+ * calc.texi (Title page): Remove the date.
+ (Basic Arithmetic): Emphasize that / binds less strongly than *.
+ (The Standard Calc Interface): Change trail title.
+ (Floats): Mention that when non-decimal floats are entered, only
+ approximations are stored.
+ (Copying): Move to the appendices.
+ (GNU Free Documentation License): Add as an appendix.
+
+2007-04-15 Chong Yidong <cyd@stupidchicken.com>
+
+ * ada-mode.texi, autotype.texi, cc-mode.texi, cl.texi:
+ * dired-x.texi, ebrowse.texi, ediff.texi:
+ * emacs-mime.texi, erc.texi, eshell.texi:
+ * eudc.texi, flymake.texi, forms.texi, gnus.texi:
+ * idlwave.texi, message.texi, newsticker.texi, org.texi:
+ * pcl-cvs.texi, pgg.texi, rcirc.texi, reftex.texi, sc.texi:
+ * ses.texi, sieve.texi, smtpmail.texi, speedbar.texi:
+ * tramp.texi, url.texi, vip.texi, viper.texi, widget.texi:
+ * woman.texi: Include GFDL.
+
+ * doclicense.texi: Remove node heading, so that it can be included by
+ other files.
+
+ * emacs.texi: Insert node heading for GFDL.
+
+ * dired-x.texi: Relicence under GFDL. Remove date from title page.
+
+ * calc.texi (Algebraic Tutorial): Emphasize that / binds less strongly
+ than *.
+
+2007-04-14 Carsten Dominik <dominik@science.uva.nl>
+
+ * org.texi (Formula syntax for Calc): Emphasize the operator precedence
+ in Calc.
+
+2007-04-14 Eli Zaretskii <eliz@gnu.org>
+
+ * cmdargs.texi (Colors): Qualify "color of window" index entry by
+ "command line".
+
+ * display.texi (Faces): Refer to "Creating Frames" for face
+ and other frame customizations in .emacs.
+
+ * frames.texi (Creating Frames): Mention that face customizations can
+ be put in .emacs. Add index entries.
+
+2007-04-12 Richard Stallman <rms@gnu.org>
+
+ * glossary.texi (Glossary): Explain `iff'.
+
+2007-04-11 Karl Berry <karl@gnu.org>
+
+ * gnu.texi (Top),
+ * macos.texi (Mac Font Specs),
+ * anti.texi (Antinews),
+ * xresources.texi (Resources),
+ * misc.texi (Emulation),
+ * calendar.texi (Daylight Saving),
+ * dired.texi (Dired and Find),
+ * rmail.texi (Remote Mailboxes),
+ * sending.texi (Mail Headers),
+ * programs.texi (Which Function),
+ * files.texi (Recover),
+ * buffers.texi (Uniquify),
+ * frames.texi (Wheeled Mice),
+ * killing.texi (Rectangles): Wording to improve breaks in
+ 8.5x11 format.
+ * mule.texi (Language Environments): \hbadness=10000 since there's
+ no way to reword.
+ * emacs.texi (smallbook): new @set to more easily switch between
+ smallbook and 8.5x11.
+
+2007-04-11 Richard Stallman <rms@gnu.org>
+
+ * files.texi (File Conveniences): Add xref to Tumme.
+ Delete text about Thumbnail mode.
+
+2007-04-09 Romain Francoise <romain@orebokech.com>
+
+ * faq.texi (New in Emacs 22): Mention improvements to the Windows and
+ Mac OS ports. Make it clear that mouse-1 complements and doesn't
+ replace mouse-2.
+
+2007-04-09 Alan Mackenzie <acm@muc.de>
+
+ * cmdargs.texi (Initial Options): Call "inhibit-splash-screen" by its
+ new name. Insert concept index entries.
+
+2007-04-08 Richard Stallman <rms@gnu.org>
+
+ * url.texi: Fix some indexing.
+ (Disk Caching): Drop discussion of old/other Emacs versions.
+
+2007-04-08 Chong Yidong <cyd@stupidchicken.com>
+
+ * display.texi (Standard Faces): Document prefix arg for
+ list-faces-display.
+
+ * rmail.texi (Rmail Scrolling): Document rmail-end-of-message.
+
+ * woman.texi (Word at point, Interface Options): woman-topic-at-point
+ renamed to woman-use-topic-at-point. Document new behavior.
+
+2007-04-07 Chong Yidong <cyd@stupidchicken.com>
+
+ * url.texi (Disk Caching): Say Emacs 21 "and later".
+
+ * cc-mode.texi (Font Locking Preliminaries): Link to Emacs manual node
+ on Font locking which now mentions JIT lock.
+
+ * killing.texi (Deletion): Rewrite description of M-\ prefix argument.
+
+ * files.texi (Misc File Ops): Rewrite description of
+ insert-file-literally.
+
+2007-04-01 Michael Olson <mwolson@gnu.org>
+
+ * erc.texi: Update for the ERC 5.2 release.
+
+2007-03-31 David Kastrup <dak@gnu.org>
+
+ * woman.texi (Topic, Interface Options): Explain changes semantics of
+ woman-manpath in order to consider MANPATH_MAP entries.
+
+2007-03-31 Eli Zaretskii <eliz@gnu.org>
+
+ * misc.texi (Printing): Postscript -> PostScript.
+
+ * emacs-mime.texi (Non-MIME): Postscript -> PostScript.
+
+ * ack.texi (Acknowledgments): Postscript -> PostScript.
+
+ * custom.texi (Init File, Init Non-ASCII): Fix last change.
+
+ * emacs.texi (Top): Fix the menu due to the change in custom.texi
+ below.
+
+2007-03-30 Chong Yidong <cyd@stupidchicken.com>
+
+ * custom.texi (Non-ASCII Rebinding): Node deleted. Material moved to
+ Init Non-ASCII.
+ (Init Rebinding, Init Syntax): Link to Init Non-ASCII instead.
+ (Init Non-ASCII): New node.
+
+2007-03-28 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * macos.texi (Mac Font Specs): Mention AppleAntiAliasingThreshold.
+
+2007-03-26 Richard Stallman <rms@gnu.org>
+
+ * pgg.texi (Caching passphrase): Clean up previous change.
+
+2007-03-25 Thien-Thi Nguyen <ttn@gnu.org>
+
+ * gnus.texi (Setting Process Marks): Fix typo.
+
+2007-03-25 Romain Francoise <romain@orebokech.com>
+
+ * faq.texi (New in Emacs 22): Reorganize using an itemized list for
+ readability, and include various fixes by Daniel Brockman, Nick Roberts
+ and Dieter Wilhelm.
+
+2007-03-24 Thien-Thi Nguyen <ttn@gnu.org>
+
+ * gnus.texi (Splitting Mail): Reword "splitting"-as-adj to be -as-noun.
+
+ * gnus.texi (Mail Source Specifiers): Fix typo.
+
+2007-03-22 Ralf Angeli <angeli@caeruleus.net>
+
+ * reftex.texi (Imprint): Update maintainer information.
+
+2007-03-15 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * message.texi (Message Buffers): Update documentation for
+ message-generate-new-buffers.
+
+2007-03-15 Daiki Ueno <ueno@unixuser.org>
+
+ * pgg.texi (Caching passphrase): Describe pgg-passphrase-coding-system.
+
2007-03-21 Glenn Morris <rgm@gnu.org>
* eshell.texi (Known problems): Emacs 22 comes with eshell 2.4.2.
diff --git a/man/ack.texi b/man/ack.texi
index fecaf37cb15..51397f0b13f 100644
--- a/man/ack.texi
+++ b/man/ack.texi
@@ -1310,7 +1310,7 @@ support.
@item
Jim Thompson wrote @file{ps-print.el}, which converts
-Emacs text to Postscript.
+Emacs text to PostScript.
@item
Tom Tromey and Chris Lindblad wrote @file{tcl.el}, a major mode for
diff --git a/man/ada-mode.texi b/man/ada-mode.texi
index 7acae36c74f..241149803e8 100644
--- a/man/ada-mode.texi
+++ b/man/ada-mode.texi
@@ -64,6 +64,7 @@ license to the document, as described in section 6 of the license.
* Automatic Casing:: Adjusting the case of words automatically
* Statement Templates:: Inserting code templates
* Comment Handling:: Reformatting comments easily
+* GNU Free Documentation License:: The license for this documentation.
* Index::
@end menu
@@ -1373,7 +1374,7 @@ exception (@code{ada-exception}).
type (@code{ada-type}).
@end table
-@node Comment Handling, Index, Statement Templates, Top
+@node Comment Handling, GNU Free Documentation License, Statement Templates, Top
@chapter Comment Handling
By default, comment lines get indented like Ada code. There are a few
@@ -1392,7 +1393,11 @@ Uncomment the selected region
autofill the current comment.
@end table
-@node Index, , Comment Handling, Top
+@node GNU Free Documentation License, Index, Comment Handling, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Index, , GNU Free Documentation License, Top
@unnumbered Index
@printindex fn
diff --git a/man/anti.texi b/man/anti.texi
index a0003c012db..ebff1c7677f 100644
--- a/man/anti.texi
+++ b/man/anti.texi
@@ -53,9 +53,9 @@ command-line option @samp{--no-splash} is therefore obsolete, and has
been removed.
@item
-The command line options @samp{--color}, @samp{--fullwidth},
-@samp{--fullheight}, @samp{--fullscreen}, @samp{--no-blinking-cursor},
-@samp{--no-desktop}, and @samp{-Q} have also been removed.
+These command line options have also been removed: @samp{--color},
+@samp{--fullwidth}, @samp{--fullheight}, @samp{--fullscreen},
+@samp{--no-blinking-cursor}, @samp{--no-desktop}, and @samp{-Q}.
@item
The @samp{--geometry} option applies only to the initial frame, and
diff --git a/man/autotype.texi b/man/autotype.texi
index a462b7a97a2..7b51f3115ac 100644
--- a/man/autotype.texi
+++ b/man/autotype.texi
@@ -101,6 +101,7 @@ completions and expansions of text at point.
* Tempo:: Flexible template insertion.
* Hippie Expand:: Expansion of text trying various methods.
+* GNU Free Documentation License:: The license for this documentation.
* Concept Index::
* Command Index::
* Variable Index::
@@ -650,6 +651,9 @@ Typically you would bind @code{hippie-expand} to @kbd{M-/} with
@code{dabbrev-expand}, the standard binding of @kbd{M-/}, providing one
of the expansion possibilities.
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@include doclicense.texi
@node Concept Index
@unnumbered Concept Index
diff --git a/man/buffers.texi b/man/buffers.texi
index ed4b855b684..b43d72b1067 100644
--- a/man/buffers.texi
+++ b/man/buffers.texi
@@ -573,14 +573,14 @@ names (all but one of them).
buffer name. To select one, customize the variable
@code{uniquify-buffer-name-style} (@pxref{Easy Customization}).
- For instance, the @code{forward} naming method puts part of the
-directory name at the beginning of the buffer name; using this method,
-buffers visiting @file{/u/rms/tmp/Makefile} and
+ To begin with, the @code{forward} naming method includes part of the
+file's directory name at the beginning of the buffer name; using this
+method, buffers visiting the files @file{/u/rms/tmp/Makefile} and
@file{/usr/projects/zaphod/Makefile} would be named
@samp{tmp/Makefile} and @samp{zaphod/Makefile}, respectively (instead
of @samp{Makefile} and @samp{Makefile<2>}).
- By contrast, the @code{post-forward} naming method would call the
+ In contrast, the @code{post-forward} naming method would call the
buffers @samp{Makefile|tmp} and @samp{Makefile|zaphod}, and the
@code{reverse} naming method would call them @samp{Makefile\tmp} and
@samp{Makefile\zaphod}. The nontrivial difference between
diff --git a/man/calc.texi b/man/calc.texi
index 0544bc1e3b4..5ea6ecc1c84 100644
--- a/man/calc.texi
+++ b/man/calc.texi
@@ -92,7 +92,8 @@ under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with the
Invariant Sections being just ``GNU GENERAL PUBLIC LICENSE'', with the
Front-Cover texts being ``A GNU Manual,'' and with the Back-Cover
-Texts as in (a) below.
+Texts as in (a) below. A copy of the license is included in the section
+entitled ``GNU Free Documentation License.''
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
this GNU Manual, like GNU software. Copies published by the Free
@@ -111,8 +112,6 @@ Software Foundation raise funds for GNU development.''
@sp 4
@center GNU Emacs Calc Version 2.1
@c [volume]
-@sp 1
-@center March 2005
@sp 5
@center Dave Gillespie
@center daveg@@synaptics.com
@@ -126,7 +125,7 @@ Copyright @copyright{} 1990, 1991, 2001, 2002, 2003, 2004,
@c [begin]
@ifinfo
-@node Top, , (dir), (dir)
+@node Top, Getting Started, (dir), (dir)
@chapter The GNU Emacs Calculator
@noindent
@@ -145,8 +144,6 @@ longer Info tutorial.)
@end ifinfo
@menu
-* Copying:: How you can copy and share Calc.
-
* Getting Started:: General description and overview.
* Interactive Tutorial::
* Tutorial:: A step-by-step introduction for beginners.
@@ -167,7 +164,9 @@ longer Info tutorial.)
* Embedded Mode:: Working with formulas embedded in a file.
* Programming:: Calc as a programmable calculator.
-* Customizing Calc:: Customizing Calc.
+* Copying:: How you can copy and share Calc.
+* GNU Free Documentation License:: The license for this documentation.
+* Customizing Calc:: Customizing Calc.
* Reporting Bugs:: How to report bugs and make suggestions.
* Summary:: Summary of Calc commands and functions.
@@ -180,400 +179,7 @@ longer Info tutorial.)
* Lisp Function Index:: Internal Lisp math functions.
@end menu
-@node Copying, Getting Started, Top, Top
-@unnumbered GNU GENERAL PUBLIC LICENSE
-@center Version 2, June 1991
-
-@c This file is intended to be included in another file.
-
-@display
-Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-@end display
-
-@unnumberedsec Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software---to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
-@iftex
-@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-@end iftex
-@ifinfo
-@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-@end ifinfo
-
-@enumerate 0
-@item
-This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The ``Program'', below,
-refers to any such program or work, and a ``work based on the Program''
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term ``modification''.) Each licensee is addressed as ``you''.
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-@item
-You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-@item
-You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-@enumerate a
-@item
-You must cause the modified files to carry prominent notices
-stating that you changed the files and the date of any change.
-
-@item
-You must cause any work that you distribute or publish, that in
-whole or in part contains or is derived from the Program or any
-part thereof, to be licensed as a whole at no charge to all third
-parties under the terms of this License.
-
-@item
-If the modified program normally reads commands interactively
-when run, you must cause it, when started running for such
-interactive use in the most ordinary way, to print or display an
-announcement including an appropriate copyright notice and a
-notice that there is no warranty (or else, saying that you provide
-a warranty) and that users may redistribute the program under
-these conditions, and telling the user how to view a copy of this
-License. (Exception: if the Program itself is interactive but
-does not normally print such an announcement, your work based on
-the Program is not required to print an announcement.)
-@end enumerate
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-@item
-You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-@enumerate a
-@item
-Accompany it with the complete corresponding machine-readable
-source code, which must be distributed under the terms of Sections
-1 and 2 above on a medium customarily used for software interchange; or,
-
-@item
-Accompany it with a written offer, valid for at least three
-years, to give any third party, for a charge no more than your
-cost of physically performing source distribution, a complete
-machine-readable copy of the corresponding source code, to be
-distributed under the terms of Sections 1 and 2 above on a medium
-customarily used for software interchange; or,
-
-@item
-Accompany it with the information you received as to the offer
-to distribute corresponding source code. (This alternative is
-allowed only for noncommercial distribution and only if you
-received the program in object code or executable form with such
-an offer, in accord with Subsection b above.)
-@end enumerate
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-@item
-You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-@item
-You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-@item
-Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-@item
-If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-@item
-If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-@item
-The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and ``any
-later version'', you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-@item
-If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-@iftex
-@heading NO WARRANTY
-@end iftex
-@ifinfo
-@center NO WARRANTY
-@end ifinfo
-
-@item
-BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-@item
-IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-@end enumerate
-
-@iftex
-@heading END OF TERMS AND CONDITIONS
-@end iftex
-@ifinfo
-@center END OF TERMS AND CONDITIONS
-@end ifinfo
-
-@page
-@unnumberedsec Appendix: How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the ``copyright'' line and a pointer to where the full notice is found.
-
-@smallexample
-@var{one line to give the program's name and a brief idea of what it does.}
-Copyright (C) @var{yyyy} @var{name of author}
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-@end smallexample
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-@smallexample
-Gnomovision version 69, Copyright (C) @var{yyyy} @var{name of author}
-Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-This is free software, and you are welcome to redistribute it
-under certain conditions; type `show c' for details.
-@end smallexample
-
-The hypothetical commands @samp{show w} and @samp{show c} should show
-the appropriate parts of the General Public License. Of course, the
-commands you use may be called something other than @samp{show w} and
-@samp{show c}; they could even be mouse-clicks or menu items---whatever
-suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a ``copyright disclaimer'' for the program, if
-necessary. Here is a sample; alter the names:
-
-@example
-Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-`Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-@var{signature of Ty Coon}, 1 April 1989
-Ty Coon, President of Vice
-@end example
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
-
-@node Getting Started, Tutorial, Copying, Top
+@node Getting Started, Interactive Tutorial, Top, Top
@chapter Getting Started
@noindent
This chapter provides a general overview of Calc, the GNU Emacs
@@ -1019,7 +625,7 @@ with the file you were editing on top and Calc on the bottom.
...
--**-Emacs: myfile (Fundamental)----All----------------------
---- Emacs Calculator Mode --- |Emacs Calc Mode v2.1 ...
+--- Emacs Calculator Mode --- |Emacs Calculator Trail
2: 17.3 | 17.3
1: -5 | 3
. | 2
@@ -1348,7 +954,7 @@ A slope of one-third corresponds to an angle of 18.4349488229 degrees.
@c [fix-ref Embedded Mode]
@xref{Embedded Mode}, for full details.
-@node Other C-x * Commands, , Embedded Mode Overview, Using Calc
+@node Other C-x * Commands, , Embedded Mode Overview, Using Calc
@subsection Other @kbd{C-x *} Commands
@noindent
@@ -1514,7 +1120,7 @@ and record them as the current keyboard macro.
its initial state: Empty stack, and initial mode settings.
@end table
-@node History and Acknowledgements, , Using Calc, Getting Started
+@node History and Acknowledgements, , Using Calc, Getting Started
@section History and Acknowledgements
@noindent
@@ -1617,7 +1223,7 @@ finished in two weeks.
@ifinfo
@c This node is accessed by the `C-x * t' command.
-@node Interactive Tutorial, , , Top
+@node Interactive Tutorial, Tutorial, Getting Started, Top
@chapter Tutorial
@noindent
@@ -1647,7 +1253,7 @@ Press @kbd{1} now to enter the first section of the Tutorial.
@end menu
@end ifinfo
-@node Tutorial, Introduction, Getting Started, Top
+@node Tutorial, Introduction, Interactive Tutorial, Top
@chapter Tutorial
@noindent
@@ -2128,6 +1734,10 @@ Calculator in Algebraic mode, which is closer to the way
non-RPN calculators work. In Algebraic mode, you enter formulas
in traditional @expr{2+3} notation.
+@strong{Warning:} Note that @samp{/} has lower precedence than
+@samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}. See
+below for details.
+
You don't really need any special ``mode'' to enter algebraic formulas.
You can enter a formula at any time by pressing the apostrophe (@kbd{'})
key. Answer the prompt with the desired formula, then press @key{RET}.
@@ -2553,7 +2163,7 @@ new number. This works for formulas, vectors, and all other types
of values you can put on the stack. The @kbd{`} key also works
during entry of a number or algebraic formula.
-@node Modes Tutorial, , Undo Tutorial, Basic Tutorial
+@node Modes Tutorial, , Undo Tutorial, Basic Tutorial
@subsection Mode-Setting Commands
@noindent
@@ -3891,7 +3501,7 @@ $$
@noindent
@xref{Matrix Answer 3, 3}. (@bullet{})
-@node List Tutorial, , Matrix Tutorial, Vector/Matrix Tutorial
+@node List Tutorial, , Matrix Tutorial, Vector/Matrix Tutorial
@subsection Vectors as Lists
@noindent
@@ -5641,7 +5251,7 @@ details and examples.
@c hard exercise: simplify (2^(n r) - 2^(r*(n - 1))) / (2^r - 1) 2^(n - 1)
@c to 2^((n-1)*(r-1)).
-@node Rewrites Tutorial, , Basic Algebra Tutorial, Algebra Tutorial
+@node Rewrites Tutorial, , Basic Algebra Tutorial, Algebra Tutorial
@subsection Rewrite Rules
@noindent
@@ -6757,7 +6367,7 @@ The rest of this manual tells the whole story.
@c Volume II of this manual, the @dfn{Calc Reference}, tells the whole story.
@page
-@node Answers to Exercises, , Programming Tutorial, Tutorial
+@node Answers to Exercises, , Programming Tutorial, Tutorial
@section Answers to Exercises
@noindent
@@ -9945,7 +9555,7 @@ first, because @code{read-kbd-macro} doesn't need to execute the
definition as it reads it in. For this reason, @code{C-x * m} is often
the easiest way to create recursive programs in Calc.
-@node Programming Answer 12, , Programming Answer 11, Answers to Exercises
+@node Programming Answer 12, , Programming Answer 11, Answers to Exercises
@subsection Programming Tutorial Exercise 12
@noindent
@@ -10738,7 +10348,7 @@ the stack and mode settings of the buffer being quit as the new defaults.
There is only one trail buffer, @samp{*Calc Trail*}, used by all
Calculator buffers.
-@node Troubleshooting Commands, , Multiple Calculators, Introduction
+@node Troubleshooting Commands, , Multiple Calculators, Introduction
@section Troubleshooting Commands
@noindent
@@ -10829,7 +10439,7 @@ If you suspect a Calculator cache has become corrupt, you can use the
The @kbd{C-x * 0} (with the zero key) command also resets caches along
with all other aspects of the Calculator's state.
-@node Debugging Calc, , Caches, Troubleshooting Commands
+@node Debugging Calc, , Caches, Troubleshooting Commands
@subsection Debugging Calc
@noindent
@@ -11022,16 +10632,19 @@ Calculator's arithmetic is not intended to be IEEE-conformant in any
way.
While floats are always @emph{stored} in decimal, they can be entered
-and displayed in any radix just like integers and fractions. The
-notation @samp{@var{radix}#@var{ddd}.@var{ddd}} is a floating-point
-number whose digits are in the specified radix. Note that the @samp{.}
-is more aptly referred to as a ``radix point'' than as a decimal
-point in this case. The number @samp{8#123.4567} is defined as
-@samp{8#1234567 * 8^-4}. If the radix is 14 or less, you can use
-@samp{e} notation to write a non-decimal number in scientific notation.
-The exponent is written in decimal, and is considered to be a power
-of the radix: @samp{8#1234567e-4}. If the radix is 15 or above, the
-letter @samp{e} is a digit, so scientific notation must be written
+and displayed in any radix just like integers and fractions. Since a
+float that is entered in a radix other that 10 will be converted to
+decimal, the number that Calc stores may not be exactly the number that
+was entered, it will be the closest decimal approximation given the
+current precison. The notation @samp{@var{radix}#@var{ddd}.@var{ddd}}
+is a floating-point number whose digits are in the specified radix.
+Note that the @samp{.} is more aptly referred to as a ``radix point''
+than as a decimal point in this case. The number @samp{8#123.4567} is
+defined as @samp{8#1234567 * 8^-4}. If the radix is 14 or less, you can
+use @samp{e} notation to write a non-decimal number in scientific
+notation. The exponent is written in decimal, and is considered to be a
+power of the radix: @samp{8#1234567e-4}. If the radix is 15 or above,
+the letter @samp{e} is a digit, so scientific notation must be written
out, e.g., @samp{16#123.4567*16^2}. The first two exercises of the
Modes Tutorial explore some of the properties of non-decimal floats.
@@ -11906,7 +11519,7 @@ a value into any of these special variables.
@xref{Store and Recall}, for a discussion of commands dealing with variables.
-@node Formulas, , Variables, Data Types
+@node Formulas, , Variables, Data Types
@section Formulas
@noindent
@@ -12352,7 +11965,7 @@ kills the @var{n} lines below or above the selected one.
The @kbd{t .} (@code{calc-full-trail-vectors}) command is described
elsewhere; @pxref{Vector and Matrix Formats}.
-@node Keep Arguments, , Trail Commands, Stack and Trail
+@node Keep Arguments, , Trail Commands, Stack and Trail
@section Keep Arguments
@noindent
@@ -12854,7 +12467,7 @@ To update @samp{=>} operators in an Embedded buffer while
automatic recomputation is off, use @w{@kbd{C-x * u}}.
@xref{Embedded Mode}.
-@node Working Message, , Automatic Recomputation, Calculation Modes
+@node Working Message, , Automatic Recomputation, Calculation Modes
@subsection Working Messages
@noindent
@@ -13235,7 +12848,7 @@ using a variable for a new purpose, it is best to use @kbd{s d}
or @kbd{s D} to check to make sure you don't still have an old
declaration for the variable that will conflict with its new meaning.
-@node Functions for Declarations, , Kinds of Declarations, Declarations
+@node Functions for Declarations, , Kinds of Declarations, Declarations
@subsection Functions for Declarations
@noindent
@@ -13935,7 +13548,7 @@ minus sign on the year value.
If you always enter a four-digit year, and use a name instead
of a number for the month, there is no danger of ambiguity.
-@node Standard Date Formats, , Free-Form Dates, Date Formats
+@node Standard Date Formats, , Free-Form Dates, Date Formats
@subsubsection Standard Date Formats
@noindent
@@ -14070,7 +13683,7 @@ when positioning by explicit origins and widths. In the latter
case, the display is formatted as specified, and then uniformly
shifted over four spaces to fit the line numbers.
-@node Labels, , Justification, Display Modes
+@node Labels, , Justification, Display Modes
@subsection Labels
@noindent
@@ -15361,7 +14974,7 @@ For @samp{a / b} in Big mode, @code{cascent} returns 2 and @code{cdescent}
returns 1. The only formula for which @code{cascent} will return zero
is @samp{cvspace(0)} or equivalents.
-@node User-Defined Compositions, , Information about Compositions, Compositions
+@node User-Defined Compositions, , Information about Compositions, Compositions
@subsubsection User-Defined Compositions
@noindent
@@ -15492,7 +15105,7 @@ produce a large, unwieldy integer.
You can save your display formats permanently using the @kbd{Z P}
command (@pxref{Creating User Keys}).
-@node Syntax Tables, , Compositions, Language Modes
+@node Syntax Tables, , Compositions, Language Modes
@subsection Syntax Tables
@noindent
@@ -15825,7 +15438,7 @@ backs up and tries the other alternative. Thus Calc has ``partial''
backtracking. A fully backtracking parser would go on to make sure
the rest of the pattern matched before finalizing the choice.
-@node Conditional Syntax Rules, , Advanced Syntax Patterns, Syntax Tables
+@node Conditional Syntax Rules, , Advanced Syntax Patterns, Syntax Tables
@subsubsection Conditional Syntax Rules
@noindent
@@ -16001,7 +15614,7 @@ would not work for fixed-point mode, but it wouldn't be hard to
do a full emulation with the help of the @kbd{Z [} and @kbd{Z ]}
programming commands. @xref{Conditionals in Macros}.)
-@node Calc Mode Line, , Modes Variable, Mode Settings
+@node Calc Mode Line, , Modes Variable, Mode Settings
@section The Calc Mode Line
@noindent
@@ -16362,20 +15975,24 @@ whereas @w{@samp{[-2 ..@: 3] ^ 2}} is @samp{[0 ..@: 9]}.
@mindex @null
@end ignore
@tindex /
-The @kbd{/} (@code{calc-divide}) command divides two numbers. When
-dividing a scalar @expr{B} by a square matrix @expr{A}, the computation
-performed is @expr{B} times the inverse of @expr{A}. This also occurs
-if @expr{B} is itself a vector or matrix, in which case the effect is
-to solve the set of linear equations represented by @expr{B}. If @expr{B}
-is a matrix with the same number of rows as @expr{A}, or a plain vector
-(which is interpreted here as a column vector), then the equation
-@expr{A X = B} is solved for the vector or matrix @expr{X}. Otherwise,
-if @expr{B} is a non-square matrix with the same number of @emph{columns}
-as @expr{A}, the equation @expr{X A = B} is solved. If you wish a vector
-@expr{B} to be interpreted as a row vector to be solved as @expr{X A = B},
-make it into a one-row matrix with @kbd{C-u 1 v p} first. To force a
-left-handed solution with a square matrix @expr{B}, transpose @expr{A} and
-@expr{B} before dividing, then transpose the result.
+The @kbd{/} (@code{calc-divide}) command divides two numbers. Note that
+when using algebraic entry, @samp{/} has lower precedence than @samp{*},
+so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.
+
+When dividing a scalar @expr{B} by a square matrix @expr{A}, the
+computation performed is @expr{B} times the inverse of @expr{A}. This
+also occurs if @expr{B} is itself a vector or matrix, in which case the
+effect is to solve the set of linear equations represented by @expr{B}.
+If @expr{B} is a matrix with the same number of rows as @expr{A}, or a
+plain vector (which is interpreted here as a column vector), then the
+equation @expr{A X = B} is solved for the vector or matrix @expr{X}.
+Otherwise, if @expr{B} is a non-square matrix with the same number of
+@emph{columns} as @expr{A}, the equation @expr{X A = B} is solved. If
+you wish a vector @expr{B} to be interpreted as a row vector to be
+solved as @expr{X A = B}, make it into a one-row matrix with @kbd{C-u 1
+v p} first. To force a left-handed solution with a square matrix
+@expr{B}, transpose @expr{A} and @expr{B} before dividing, then
+transpose the result.
HMS forms can be divided by real numbers or by other HMS forms. Error
forms can be divided in any combination of ways. Modulo forms where both
@@ -17359,7 +16976,7 @@ any date form and returns 1 if that date falls on a weekend or
holiday, as defined in @code{Holidays}, or 0 if the date is a
business day.
-@node Time Zones, , Business Days, Date Arithmetic
+@node Time Zones, , Business Days, Date Arithmetic
@subsection Time Zones
@noindent
@@ -18006,7 +17623,7 @@ Summing columns with @kbd{V R : +} yields @expr{[10000, 10000, 10000]};
the total depreciation in any method is (by definition) the
difference between the cost and the salvage value.
-@node Definitions of Financial Functions, , Depreciation Functions, Financial Functions
+@node Definitions of Financial Functions, , Depreciation Functions, Financial Functions
@subsection Definitions
@noindent
@@ -18161,7 +17778,7 @@ and the depreciation is zero for all subsequent periods. The @code{ddb}
function returns the amount the book value decreased in the specified
period.
-@node Binary Functions, , Financial Functions, Arithmetic
+@node Binary Functions, , Financial Functions, Arithmetic
@section Binary Number Functions
@noindent
@@ -19092,7 +18709,7 @@ elements of this vector. @xref{Matrix Functions}.
* Random Number Generator:: (Complete description of Calc's algorithm)
@end menu
-@node Random Number Generator, , Random Numbers, Random Numbers
+@node Random Number Generator, , Random Numbers, Random Numbers
@subsection Random Number Generator
Calc's random number generator uses several methods to ensure that
@@ -19408,7 +19025,7 @@ distinct factors, this is @expr{(-1)^k}. If the input number has any
duplicate factors (i.e., can be divided by the same prime more than once),
the result is zero.
-@node Probability Distribution Functions, , Combinatorial Functions, Scientific Functions
+@node Probability Distribution Functions, , Combinatorial Functions, Scientific Functions
@section Probability Distribution Functions
@noindent
@@ -20858,7 +20475,7 @@ arguments, interpreted in the same way as the other functions
in this section. For example, @samp{vflat(1, [2, [3, 4]], 5)}
returns @samp{[1, 2, 3, 4, 5]}.
-@node Paired-Sample Statistics, , Single-Variable Statistics, Statistical Operations
+@node Paired-Sample Statistics, , Single-Variable Statistics, Statistical Operations
@subsection Paired-Sample Statistics
@noindent
@@ -21350,7 +20967,7 @@ computes the square root of @samp{A} given the initial guess @samp{B},
stopping when the result is correct within the specified tolerance, or
when 20 steps have been taken, whichever is sooner.
-@node Generalized Products, , Nesting and Fixed Points, Reducing and Mapping
+@node Generalized Products, , Nesting and Fixed Points, Reducing and Mapping
@subsection Generalized Products
@kindex V O
@@ -21385,7 +21002,7 @@ use @kbd{$} twice to take both operator formulas from the stack, the
first (multiplicative) operator is taken from the top of the stack
and the second (additive) operator is taken from second-to-top.
-@node Vector and Matrix Formats, , Reducing and Mapping, Matrix Functions
+@node Vector and Matrix Formats, , Reducing and Mapping, Matrix Functions
@section Vector and Matrix Display Formats
@noindent
@@ -22006,7 +21623,7 @@ to be simplified.
@end group
@end smallexample
-@node Rearranging with Selections, , Operating on Selections, Selecting Subformulas
+@node Rearranging with Selections, , Operating on Selections, Selecting Subformulas
@subsection Rearranging Formulas using Selections
@noindent
@@ -23104,7 +22721,7 @@ on whether you believe @expr{x} is positive or negative).
The @kbd{a M /} command can be used to divide a factor out of
both sides of an inequality.
-@node Simplification of Units, , Unsafe Simplifications, Simplifying Formulas
+@node Simplification of Units, , Unsafe Simplifications, Simplifying Formulas
@subsection Simplification of Units
@noindent
@@ -23738,7 +23355,7 @@ The integral of @samp{1/sqrt(x)} from 0 to 1 exists (it can be found
by Calc's symbolic integrator, for example), but @kbd{a I} will fail
because the integrand goes to infinity at one of the endpoints.
-@node Taylor Series, , Numerical Integration, Calculus
+@node Taylor Series, , Numerical Integration, Calculus
@subsection Taylor Series
@noindent
@@ -23984,7 +23601,7 @@ Another way to deal with certain kinds of overdetermined systems of
equations is the @kbd{a F} command, which does least-squares fitting
to satisfy the equations. @xref{Curve Fitting}.
-@node Decomposing Polynomials, , Solving Systems of Equations, Solving Equations
+@node Decomposing Polynomials, , Solving Systems of Equations, Solving Equations
@subsection Decomposing Polynomials
@noindent
@@ -24295,7 +23912,7 @@ the initial guess is a complex number the variable will be minimized
over the complex numbers; if it is real or an interval it will
be minimized over the reals.
-@node Numerical Systems of Equations, , Minimization, Numerical Solutions
+@node Numerical Systems of Equations, , Minimization, Numerical Solutions
@subsection Systems of Equations
@noindent
@@ -25343,7 +24960,7 @@ linearizer was unable to put the model into the required form.
The @code{efit} (corresponding to @kbd{H a F}) and @code{xfit}
(for @kbd{I a F}) functions are completely analogous.
-@node Interpolation, , Curve Fitting Details, Curve Fitting
+@node Interpolation, , Curve Fitting Details, Curve Fitting
@subsection Polynomial Interpolation
@kindex a p
@@ -25940,7 +25557,7 @@ declarations are used when deciding whether a formula is true;
it returns 0 when @code{dnonzero} would return 0 or leave itself
in symbolic form.)
-@node Rewrite Rules, , Logical Operations, Algebra
+@node Rewrite Rules, , Logical Operations, Algebra
@section Rewrite Rules
@noindent
@@ -27607,7 +27224,7 @@ buffer (with @kbd{C-x k *Trace* @key{RET}}). If you leave it in
existence and forget about it, all your future rewrite commands will
be needlessly slow.
-@node Examples of Rewrite Rules, , Debugging Rewrites, Rewrite Rules
+@node Examples of Rewrite Rules, , Debugging Rewrites, Rewrite Rules
@subsection Examples of Rewrite Rules
@noindent
@@ -28029,7 +27646,7 @@ really is unitless.)
@c Describe angular units, luminosity vs. steradians problem.
-@node User-Defined Units, , Predefined Units, Units
+@node User-Defined Units, , Predefined Units, Units
@section User-Defined Units
@noindent
@@ -28573,7 +28190,7 @@ example, letting @expr{n=2} in @samp{f(n pi)} with @kbd{a b} will
produce @samp{f(2 pi)}, whereas @kbd{s l} would give @samp{f(6.28)}
since the evaluation step will also evaluate @code{pi}.
-@node Evaluates-To Operator, , Let Command, Store and Recall
+@node Evaluates-To Operator, , Let Command, Store and Recall
@section The Evaluates-To Operator
@noindent
@@ -29206,7 +28823,7 @@ lines, and the third curve to have lines in style 3. Point styles will
still be assigned automatically, but you could store another vector in
@code{PointStyles} to define them, too.
-@node Devices, , Graphics Options, Graphics
+@node Devices, , Graphics Options, Graphics
@section Graphical Devices
@noindent
@@ -29637,7 +29254,7 @@ The @kbd{C-x * y} key sequence is equivalent to @kbd{y} except that
it can be typed anywhere, not just in Calc. This provides an easy
way to guarantee that Calc knows which editing buffer you want to use!
-@node X Cut and Paste, , Yanking Into Buffers, Kill and Yank
+@node X Cut and Paste, , Yanking Into Buffers, Kill and Yank
@section X Cut and Paste
@noindent
@@ -30007,7 +29624,7 @@ With @key{INV}, @key{HYP}, or @key{INV} and @key{HYP}, the
@kbd{"x"} key pushes the variable names @expr{y}, @expr{z}, and
@expr{t}, respectively.
-@node Keypad Modes Menu, , Keypad Vectors Menu, Keypad Mode
+@node Keypad Modes Menu, , Keypad Vectors Menu, Keypad Mode
@section Modes Menu
@smallexample
@@ -30799,7 +30416,7 @@ annotations at all.
When Embedded mode is not enabled, mode-recording modes except
for @code{Save} have no effect.
-@node Customizing Embedded Mode, , Mode Settings in Embedded Mode, Embedded Mode
+@node Customizing Embedded Mode, , Mode Settings in Embedded Mode, Embedded Mode
@section Customizing Embedded Mode
@noindent
@@ -30953,7 +30570,7 @@ is simply a newline, @code{"\n"}, but may be different for different
major modes. If you change this, it is a good idea still to end with a
newline so that mode annotations will appear on lines by themselves.
-@node Programming, Customizing Calc, Embedded Mode, Top
+@node Programming, Copying, Embedded Mode, Top
@chapter Programming
@noindent
@@ -31406,7 +31023,7 @@ The contents of the stack and trail, values of non-quick variables, and
other settings such as the language mode and the various display modes,
are @emph{not} affected by @kbd{Z `} and @kbd{Z '}.
-@node Queries in Macros, , Local Values in Macros, Keyboard Macros
+@node Queries in Macros, , Local Values in Macros, Keyboard Macros
@subsection Queries in Keyboard Macros
@c @noindent
@@ -31591,7 +31208,7 @@ default simplifications cures this problem: The definition will be stored
in symbolic form without ever activating the @code{deriv} function. Press
@kbd{m D} to turn the default simplifications back on afterwards.
-@node Lisp Definitions, , Algebraic Definitions, Programming
+@node Lisp Definitions, , Algebraic Definitions, Programming
@section Programming with Lisp
@noindent
@@ -32296,7 +31913,7 @@ actually they are less efficient because each operation is really
a division by 512 in disguise; @code{idivmod} allows us to do the
same thing with a single division by 512.
-@node Sine Example, , Bit Counting Example, Example Definitions
+@node Sine Example, , Bit Counting Example, Example Definitions
@subsubsection The Sine Function
@noindent
@@ -32776,7 +32393,7 @@ Note the use of @code{insert-before-markers} when changing between
``F'' and ``C'', so that the character winds up before the cursor
instead of after it.
-@node Internals, , Calling Calc from Your Programs, Lisp Definitions
+@node Internals, , Calling Calc from Your Programs, Lisp Definitions
@subsection Calculator Internals
@noindent
@@ -34668,7 +34285,7 @@ If composition @var{c} is a ``flat'' composition, return the last
@comment @noindent
@comment (This section is currently unfinished.)
-@node Hooks, , Formatting Lisp Functions, Internals
+@node Hooks, , Formatting Lisp Functions, Internals
@subsubsection Hooks
@noindent
@@ -34832,7 +34449,404 @@ used the first time, your hook should add a variable to the
list and also call @code{make-local-variable} itself.
@end defvar
-@node Customizing Calc, Reporting Bugs, Programming, Top
+@node Copying, GNU Free Documentation License, Programming, Top
+@appendix GNU GENERAL PUBLIC LICENSE
+@center Version 2, June 1991
+
+@c This file is intended to be included in another file.
+
+@display
+Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+@end display
+
+@unnumberedsec Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software---to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+@iftex
+@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+@end iftex
+@ifinfo
+@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+@end ifinfo
+
+@enumerate 0
+@item
+This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The ``Program'', below,
+refers to any such program or work, and a ``work based on the Program''
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term ``modification''.) Each licensee is addressed as ``you''.
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+@item
+You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+@item
+You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+@enumerate a
+@item
+You must cause the modified files to carry prominent notices
+stating that you changed the files and the date of any change.
+
+@item
+You must cause any work that you distribute or publish, that in
+whole or in part contains or is derived from the Program or any
+part thereof, to be licensed as a whole at no charge to all third
+parties under the terms of this License.
+
+@item
+If the modified program normally reads commands interactively
+when run, you must cause it, when started running for such
+interactive use in the most ordinary way, to print or display an
+announcement including an appropriate copyright notice and a
+notice that there is no warranty (or else, saying that you provide
+a warranty) and that users may redistribute the program under
+these conditions, and telling the user how to view a copy of this
+License. (Exception: if the Program itself is interactive but
+does not normally print such an announcement, your work based on
+the Program is not required to print an announcement.)
+@end enumerate
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+@item
+You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+@enumerate a
+@item
+Accompany it with the complete corresponding machine-readable
+source code, which must be distributed under the terms of Sections
+1 and 2 above on a medium customarily used for software interchange; or,
+
+@item
+Accompany it with a written offer, valid for at least three
+years, to give any third party, for a charge no more than your
+cost of physically performing source distribution, a complete
+machine-readable copy of the corresponding source code, to be
+distributed under the terms of Sections 1 and 2 above on a medium
+customarily used for software interchange; or,
+
+@item
+Accompany it with the information you received as to the offer
+to distribute corresponding source code. (This alternative is
+allowed only for noncommercial distribution and only if you
+received the program in object code or executable form with such
+an offer, in accord with Subsection b above.)
+@end enumerate
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+@item
+You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+@item
+You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+@item
+Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+@item
+If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+@item
+If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+@item
+The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and ``any
+later version'', you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+@item
+If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+@iftex
+@heading NO WARRANTY
+@end iftex
+@ifinfo
+@center NO WARRANTY
+@end ifinfo
+
+@item
+BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+@item
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+@end enumerate
+
+@iftex
+@heading END OF TERMS AND CONDITIONS
+@end iftex
+@ifinfo
+@center END OF TERMS AND CONDITIONS
+@end ifinfo
+
+@page
+@unnumberedsec Appendix: How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the ``copyright'' line and a pointer to where the full notice is found.
+
+@smallexample
+@var{one line to give the program's name and a brief idea of what it does.}
+Copyright (C) @var{yyyy} @var{name of author}
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+@end smallexample
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+@smallexample
+Gnomovision version 69, Copyright (C) @var{yyyy} @var{name of author}
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+This is free software, and you are welcome to redistribute it
+under certain conditions; type `show c' for details.
+@end smallexample
+
+The hypothetical commands @samp{show w} and @samp{show c} should show
+the appropriate parts of the General Public License. Of course, the
+commands you use may be called something other than @samp{show w} and
+@samp{show c}; they could even be mouse-clicks or menu items---whatever
+suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a ``copyright disclaimer'' for the program, if
+necessary. Here is a sample; alter the names:
+
+@example
+Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+`Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+@var{signature of Ty Coon}, 1 April 1989
+Ty Coon, President of Vice
+@end example
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
+
+@node GNU Free Documentation License, Customizing Calc, Copying, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Customizing Calc, Reporting Bugs, GNU Free Documentation License, Top
@appendix Customizing Calc
The usual prefix for Calc is the key sequence @kbd{C-x *}. If you wish
@@ -36457,7 +36471,7 @@ in your Calc init file or @file{.emacs} file.
@printindex vr
-@node Lisp Function Index, , Variable Index, Top
+@node Lisp Function Index, , Variable Index, Top
@unnumbered Index of Lisp Math Functions
The following functions are meant to be used with @code{defmath}, not
diff --git a/man/calendar.texi b/man/calendar.texi
index 11b24f7c210..58ca24af7d9 100644
--- a/man/calendar.texi
+++ b/man/calendar.texi
@@ -1614,11 +1614,12 @@ minutes. The value for Cambridge, Massachusetts is 60.
@c @vindex calendar-daylight-savings-starts-time too long!
@vindex calendar-daylight-savings-ends-time
- The two variables @code{calendar-daylight-savings-starts-time} and
-@code{calendar-daylight-savings-ends-time} specify the number of minutes
-after midnight local time when the transition to and from daylight
-saving time should occur. For Cambridge, Massachusetts both variables'
-values are 120.
+ Finally, the two variables
+@code{calendar-daylight-savings-starts-time} and
+@code{calendar-daylight-savings-ends-time} specify the number of
+minutes after midnight local time when the transition to and from
+daylight saving time should occur. For Cambridge, Massachusetts both
+variables' values are 120.
@node Time Intervals
@section Summing Time Intervals
diff --git a/man/cc-mode.texi b/man/cc-mode.texi
index d3996eff5c7..217c32ff911 100644
--- a/man/cc-mode.texi
+++ b/man/cc-mode.texi
@@ -255,6 +255,7 @@ functions, classes etc - there are other packages for that.
* FAQ::
* Updating CC Mode::
* Mailing Lists and Bug Reports::
+* GNU Free Documentation License::
* Command and Function Index::
* Variable Index::
* Concept and Key Index::
@@ -1880,11 +1881,7 @@ This level is designed for fairly modern hardware and a font lock
support mode like Lazy Lock or Just-in-time Lock mode that only
fontifies the parts that are actually shown. Fontifying the whole
buffer at once can easily get bothersomely slow even on contemporary
-hardware.
-@c ACM, 2005/8/28: There should be a page in the (X)Emacs manual
-@c describing these support modes. There wasn't in the
-@c fourteenth edition of the Emacs manual (released with Emacs 21.3).
-@c There might be one in the Emacs CVS for 22.1.
+hardware. @xref{Font Lock,,,@emacsman{}, @emacsmantitle{}}.
@end enumerate
@cindex user defined types
@@ -6896,7 +6893,7 @@ compatibility, etc. are all available on the web site:
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Mailing Lists and Bug Reports, Command and Function Index, Updating CC Mode, Top
+@node Mailing Lists and Bug Reports, GNU Free Documentation License, Updating CC Mode, Top
@comment node-name, next, previous, up
@appendix Mailing Lists and Submitting Bug Reports
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -6938,9 +6935,15 @@ to the Usenet newsgroups @code{gnu.emacs.sources}, @code{comp.emacs},
@code{comp.lang.idl}, and @code{comp.lang.awk}.
@c There is no newsgroup for Pike. :-(
+
+@node GNU Free Documentation License, Command and Function Index, Mailing Lists and Bug Reports, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+
@c Removed the tentative node "Mode Initialization" from here, 2005/8/27.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-@node Command and Function Index, Variable Index, Mailing Lists and Bug Reports, Top
+@node Command and Function Index, Variable Index, GNU Free Documentation License, Top
@comment node-name, next, previous, up
@unnumbered Command and Function Index
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
diff --git a/man/cl.texi b/man/cl.texi
index 6a6663fcd5b..676b9edc5ad 100644
--- a/man/cl.texi
+++ b/man/cl.texi
@@ -78,6 +78,7 @@ does assume a basic familiarity with Emacs Lisp.
* Old CL Compatibility:: All known differences with old cl.el
* Porting Common Lisp:: Hints for porting Common Lisp code
+* GNU Free Documentation License:: The license for this documentation.
* Function Index::
* Variable Index::
@end menu
@@ -5141,7 +5142,7 @@ older versions of the old package used the unadorned names
@code{floor}, @code{ceiling}, etc.; @code{cl-compat} cannot use
these names because they conflict with Emacs built-ins.
-@node Porting Common Lisp, Function Index, Old CL Compatibility, Top
+@node Porting Common Lisp, GNU Free Documentation License, Old CL Compatibility, Top
@appendix Porting Common Lisp
@noindent
@@ -5353,7 +5354,11 @@ note that the current Emacs Lisp compiler does not optimize tail
recursion.
@end itemize
-@node Function Index, Variable Index, Porting Common Lisp, Top
+@node GNU Free Documentation License, Function Index, Porting Common Lisp, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Function Index, Variable Index, GNU Free Documentation License, Top
@unnumbered Function Index
@printindex fn
diff --git a/man/cmdargs.texi b/man/cmdargs.texi
index 6586f304bc4..676d4cdf3b5 100644
--- a/man/cmdargs.texi
+++ b/man/cmdargs.texi
@@ -279,9 +279,14 @@ and @samp{--no-site-file}, but also disables the startup screen.
@item --no-splash
@opindex --no-splash
-@vindex inhibit-startup-message
-Do not display a splash screen on startup; this is equivalent to
-setting the variable @code{inhibit-startup-message} to non-@code{nil}.
+@vindex inhibit-splash-screen
+@cindex splash screen
+@cindex startup message
+Do not display a splash screen on startup. You can also achieve this
+effect by setting the variable @code{inhibit-splash-screen} to
+non-@code{nil} in you personal init file (but @emph{not} in
+@file{site-start.el}). (This variable was called
+@code{inhibit-startup-message} in previous Emacs versions.)
@item --no-desktop
@opindex --no-desktop
@@ -887,7 +892,7 @@ displays the entire font @samp{6x13}.
@node Colors
@appendixsec Window Color Options
-@cindex color of window
+@cindex color of window, from command line
@cindex text colors, from command line
@findex list-colors-display
diff --git a/man/custom.texi b/man/custom.texi
index 40a0f8d0b2c..3ab3ff0f636 100644
--- a/man/custom.texi
+++ b/man/custom.texi
@@ -1276,7 +1276,6 @@ name, which usually consists of lower-case letters and hyphens.
* Init Rebinding:: Rebinding keys with your init file, @file{.emacs}.
* Function Keys:: Rebinding terminal function keys.
* Named ASCII Chars:: Distinguishing @key{TAB} from @kbd{C-i}, and so on.
-* Non-ASCII Rebinding:: Rebinding non-@acronym{ASCII} characters such as Latin-1.
* Mouse Buttons:: Rebinding mouse buttons in Emacs.
* Disabling:: Disabling a command means confirmation is required
before it can be executed. This is done to protect
@@ -1676,7 +1675,7 @@ by listing all of the characters, in order, within the square brackets
that delimit the vector.
Language and coding systems can cause problems with key bindings
-for non-@acronym{ASCII} characters. @xref{Non-ASCII Rebinding}.
+for non-@acronym{ASCII} characters. @xref{Init Non-ASCII}.
@node Function Keys
@subsection Rebinding Function Keys
@@ -1817,36 +1816,6 @@ this @acronym{ASCII} character, and another for the ``function key'' @code{tab}.
between @key{TAB} and @kbd{C-i} (and likewise for other such pairs),
because the terminal sends the same character in both cases.
-@node Non-ASCII Rebinding
-@subsection Non-@acronym{ASCII} Characters on the Keyboard
-@cindex rebinding non-@acronym{ASCII} keys
-@cindex non-@acronym{ASCII} keys, binding
-
- If your keyboard has keys that send non-@acronym{ASCII}
-characters, such as accented letters, rebinding these keys
-must be done by using a vector like this@footnote{You must
-avoid the string syntax for binding
-non-@acronym{ASCII} characters, since they will be
-interpreted as meta keys. @xref{Strings of Events,,,elisp,
-The Emacs Lisp Reference Manual}.}:
-
-@example
-(global-set-key [?@var{char}] 'some-function)
-@end example
-
-@noindent
-Type @kbd{C-q} followed by the key you want to bind, to insert @var{char}.
-
- Since this puts a non-@acronym{ASCII} character in the @file{.emacs},
-you should specify a coding system for that file that supports the
-character in question. @xref{Init Non-ASCII}.
-
- @strong{Warning:} if you change the keyboard encoding, or change
-between multibyte and unibyte mode, or anything that would alter which
-code @kbd{C-q} would insert for that character, you'll need to edit
-the Lisp expression accordingly, to use the character code generated
-by @kbd{C-q} in the new mode.
-
@node Mouse Buttons
@subsection Rebinding Mouse Buttons
@cindex mouse button events
@@ -2126,6 +2095,7 @@ Manual}.
* Init Examples:: How to do some things with an init file.
* Terminal Init:: Each terminal type can have an init file.
* Find Init:: How Emacs finds the init file.
+* Init Non-ASCII:: Using non-@acronym{ASCII} characters in an init file.
@end menu
@node Init Syntax
@@ -2176,17 +2146,8 @@ sequences are mandatory.
a Meta character, as in @samp{\M-a} for @kbd{Meta-A} or @samp{\M-\C-a} for
@kbd{Control-Meta-A}.@refill
-@cindex international characters in @file{.emacs}
-@cindex non-@acronym{ASCII} characters in @file{.emacs}
-@anchor{Init Non-ASCII}If you want to include non-@acronym{ASCII}
-characters in strings in your init
-file, you should consider putting a @w{@samp{-*-coding:
-@var{coding-system}-*-}} tag on the first line which states the coding
-system used to save your @file{.emacs}, as explained in @ref{Recognize
-Coding}. This is because the defaults for decoding non-@acronym{ASCII} text might
-not yet be set up by the time Emacs reads those parts of your init file
-which use such strings, possibly leading Emacs to decode those strings
-incorrectly.
+@xref{Init Non-ASCII}, for information about including
+non-@acronym{ASCII} in your init file.
@item Characters:
Lisp character constant syntax consists of a @samp{?} followed by
@@ -2195,7 +2156,7 @@ Examples: @code{?x}, @code{?\n}, @code{?\"}, @code{?\)}. Note that
strings and characters are not interchangeable in Lisp; some contexts
require one and some contexts require the other.
-@xref{Non-ASCII Rebinding}, for information about binding commands to
+@xref{Init Non-ASCII}, for information about binding commands to
keys which send non-@acronym{ASCII} characters.
@item True:
@@ -2504,6 +2465,48 @@ otherwise, it looks up the home directory corresponding to that user
name in the system's data base of users.
@c LocalWords: backtab
+@node Init Non-ASCII
+@subsection Non-@acronym{ASCII} Characters in Init Files
+@cindex international characters in @file{.emacs}
+@cindex non-@acronym{ASCII} characters in @file{.emacs}
+@cindex non-@acronym{ASCII} keys, binding
+@cindex rebinding non-@acronym{ASCII} keys
+
+ Language and coding systems may cause problems if your init file
+contains non-@acronym{ASCII} characters, such as accented letters, in
+strings or key bindings.
+
+ If you want to use non-@acronym{ASCII} characters in your init file,
+you should put a @w{@samp{-*-coding: @var{coding-system}-*-}} tag on
+the first line of the init file, and specify a coding system that
+supports the character(s) in question. @xref{Recognize Coding}. This
+is because the defaults for decoding non-@acronym{ASCII} text might
+not yet be set up by the time Emacs reads those parts of your init
+file which use such strings, possibly leading Emacs to decode those
+strings incorrectly. You should then avoid adding Emacs Lisp code
+that modifies the coding system in other ways, such as calls to
+@code{set-language-environment}.
+
+ To bind non-@acronym{ASCII} keys, you must use a vector (@pxref{Init
+Rebinding}). The string syntax cannot be used, since the
+non-@acronym{ASCII} characters will be interpreted as meta keys. For
+instance:
+
+@example
+(global-set-key [?@var{char}] 'some-function)
+@end example
+
+@noindent
+Type @kbd{C-q}, followed by the key you want to bind, to insert @var{char}.
+
+ @strong{Warning:} if you change the keyboard encoding, or change
+between multibyte and unibyte mode, or anything that would alter which
+code @kbd{C-q} would insert for that character, this keybinding may
+stop working. It is therefore advisable to use one and only one
+coding system, for your init file as well as the files you edit. For
+example, don't mix the @samp{latin-1} and @samp{latin-9} coding
+systems.
+
@ignore
arch-tag: c68abddb-4410-4fb5-925f-63394e971d93
@end ignore
diff --git a/man/dired-x.texi b/man/dired-x.texi
index 0d9e385b789..bf2d5288abc 100644
--- a/man/dired-x.texi
+++ b/man/dired-x.texi
@@ -25,38 +25,27 @@
@comment %**end of header (This is for running Texinfo on a region.)
@copying
-This documents the ``extra'' features for Dired Mode for GNU Emacs found in
-the file @file{dired-x.el}.
-
-Copyright @copyright{} 1993, 1994, 2001, 2002, 2003, 2004,
+Copyright @copyright{} 1994, 1995, 1999, 2001, 2002, 2003, 2004,
2005, 2006, 2007 Free Software Foundation, Inc.
@quotation
-Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of
-a permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for
-modified versions, except that this permission notice may be stated
-in a translation approved by the Free Software Foundation.
-
-The file used to create this is called @file{dired-x.texi}, but the
-original work that was altered to make that file was called
-@file{dired.texi} written by Sebastian Kremer.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-
-@end ignore
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``The GNU Manifesto'', ``Distribution'' and
+``GNU GENERAL PUBLIC LICENSE'', with the Front-Cover texts being ``A GNU
+Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
+license is included in the section entitled ``GNU Free Documentation
+License'' in the Emacs manual.
+
+(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
+this GNU Manual, like GNU software. Copies published by the Free
+Software Foundation raise funds for GNU development.''
+
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
@end quotation
@end copying
@@ -80,9 +69,6 @@ notice identical to this one except for the removal of this paragraph
@sp 1
@center @titlefont{Directory Editor}
@sp 4
-@center Manual Revision: 2.53
-@center 2001/02/25 14:05:46
-@sp 5
@center Lawrence R@. Dodd
@c @center @t{dodd@@roebling.poly.edu}
@sp 5
@@ -138,6 +124,7 @@ For @file{dired-x.el} revision 2
* Miscellaneous Commands::
* Bugs::
+* GNU Free Documentation License::
* Concept Index::
* Command Index::
* Key Index::
@@ -1228,7 +1215,7 @@ Bound to @kbd{%Y}. Relative symlink all marked files containing
info.
@end table
-@node Bugs, Concept Index, Miscellaneous Commands, Top
+@node Bugs, GNU Free Documentation License, Miscellaneous Commands, Top
@comment node-name, next, previous, up
@chapter Bugs
@cindex Bugs
@@ -1252,7 +1239,11 @@ maladjustment.
Lawrence R. Dodd
@c <dodd@@roebling.poly.edu>
-@node Concept Index, Command Index, Bugs, Top
+@node GNU Free Documentation License, Concept Index, Bugs, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Concept Index, Command Index, GNU Free Documentation License, Top
@comment node-name, next, previous, up
@unnumbered Concept Index
@printindex cp
diff --git a/man/dired.texi b/man/dired.texi
index c40030147b4..cc2b9a09ce9 100644
--- a/man/dired.texi
+++ b/man/dired.texi
@@ -1132,9 +1132,9 @@ may need to change the value of this variable.
@findex locate-with-filter
@cindex file database (locate)
@vindex locate-command
- @kbd{M-x locate} provides a similar interface to the @code{locate}
-program. @kbd{M-x locate-with-filter} is similar, but keeps only files
-whose names match a given regular expression.
+ The command @kbd{M-x locate} provides a similar interface to the
+@code{locate} program. @kbd{M-x locate-with-filter} is similar, but
+keeps only files whose names match a given regular expression.
These buffers don't work entirely like ordinary Dired buffers: file
operations work, but do not always automatically update the buffer.
diff --git a/man/display.texi b/man/display.texi
index 805a39f8444..43fd4654ca9 100644
--- a/man/display.texi
+++ b/man/display.texi
@@ -333,6 +333,11 @@ those to be created in the future. (You can also set foreground and
background colors for the current frame only; see @ref{Frame
Parameters}.)
+ If you want to alter the appearance of all Emacs frames, you need to
+customize the frame parameters in the variable
+@code{default-frame-alist}; see @ref{Creating Frames,
+default-frame-alist}.
+
Emacs can correctly display variable-width fonts, but Emacs commands
that calculate width and indentation do not know how to calculate
variable widths. This can sometimes lead to incorrect results when
@@ -349,7 +354,9 @@ future Emacs versions.
To see what faces are currently defined, and what they look like,
type @kbd{M-x list-faces-display}. It's possible for a given face to
look different in different frames; this command shows the appearance
-in the frame in which you type it.
+in the frame in which you type it. With a prefix argument, this
+prompts for a regular expression, and displays only faces with names
+matching that regular expression.
Here are the standard faces for specifying text appearance. You can
apply them to specific text when you want the effects they produce.
diff --git a/man/doclicense.texi b/man/doclicense.texi
index 14fb9926897..83e9d6b5579 100644
--- a/man/doclicense.texi
+++ b/man/doclicense.texi
@@ -1,6 +1,4 @@
@c -*-texinfo-*-
-@node GNU Free Documentation License, Emacs Invocation, Copying, Top
-@appendix GNU Free Documentation License
@center Version 1.2, November 2002
@display
diff --git a/man/ebrowse.texi b/man/ebrowse.texi
index 25262625e92..c04f99f954c 100644
--- a/man/ebrowse.texi
+++ b/man/ebrowse.texi
@@ -42,8 +42,6 @@ license to the document, as described in section 6 of the license.
@title Ebrowse User's Manual
@sp 4
@subtitle Ebrowse/Emacs
-@sp 1
-@subtitle May 2000
@sp 5
@author Gerd Moellmann
@page
@@ -65,6 +63,7 @@ Ebrowse.
* Tree Buffers:: Traversing class hierarchies
* Member Buffers:: Looking at member information
* Tags-like Functions:: Finding members from source files
+* GNU Free Documentation License:: The license for this documentation.
* Concept Index:: An entry for each concept defined
@end menu
@@ -1240,7 +1239,7 @@ This key is bound to @code{describe-mode}.
@comment *** TAGS LIKE FUNCTIONS
@comment **************************************************************
-@node Tags-like Functions, Concept Index, Member Buffers, Top
+@node Tags-like Functions, GNU Free Documentation License, Member Buffers, Top
@comment node-name, next, previous, up
@chapter Tags-like Functions
@@ -1438,7 +1437,7 @@ The command @kbd{C-c C-m @key{TAB}} completes the symbol in front of point.
-@node Member Buffer Display, , Symbol Completion, Tags-like Functions
+@node Member Buffer Display, , Symbol Completion, Tags-like Functions
@section Quick Member Display
@cindex member buffer, for member at point
@@ -1446,7 +1445,12 @@ You can quickly display a member buffer containing the member the cursor
in on with the command @kbd{C-c C-m m}.
-@node Concept Index, , Tags-like Functions, Top
+@node GNU Free Documentation License, Concept Index, Tags-like Functions, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+
+@node Concept Index, , GNU Free Documentation License, Top
@unnumbered Concept Index
@printindex cp
diff --git a/man/ediff.texi b/man/ediff.texi
index 52823cdb8fb..6bb2605e0c6 100644
--- a/man/ediff.texi
+++ b/man/ediff.texi
@@ -56,9 +56,9 @@ license to the document, as described in section 6 of the license.
@titlepage
@title Ediff User's Manual
@sp 4
-@subtitle Ediff version 2.76.1
+@subtitle Ediff version 2.81.1
@sp 1
-@subtitle January 2002
+@subtitle April 2007
@sp 5
@author Michael Kifer
@page
@@ -80,6 +80,7 @@ license to the document, as described in section 6 of the license.
* Remote and Compressed Files:: You may want to know about this.
* Customization:: How to make Ediff work the way YOU want.
* Credits:: Thanks to those who helped.
+* GNU Free Documentation License:: The license for this documentation.
* Index::
@end menu
@@ -2411,7 +2412,7 @@ non-@code{nil} only if Ediff uses the multiframe display, i.e., when
the control buffer is in its own frame.
@end table
-@node Credits, Index, Customization, Top
+@node Credits, GNU Free Documentation License, Customization, Top
@chapter Credits
Ediff was written by Michael Kifer <kifer@@cs.stonybrook.edu>. It was inspired
@@ -2527,7 +2528,12 @@ Ilya Zakharevich (ilya@@math.ohio-state.edu),
Eli Zaretskii (eliz@@is.elta.co.il)
@end example
-@node Index, , Credits, Top
+@node GNU Free Documentation License, Index, Credits, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+
+@node Index, , GNU Free Documentation License, Top
@unnumbered Index
@printindex cp
diff --git a/man/emacs-mime.texi b/man/emacs-mime.texi
index c4fa9aa6879..56f130b67fb 100644
--- a/man/emacs-mime.texi
+++ b/man/emacs-mime.texi
@@ -75,6 +75,7 @@ read at least RFC2045 and RFC2047.
* Interface Functions:: An abstraction over the basic functions.
* Basic Functions:: Utility and basic parsing functions.
* Standards:: A summary of RFCs and working documents used.
+* GNU Free Documentation License:: The license for this documentation.
* Index:: Function and variable index.
@end menu
@@ -125,7 +126,7 @@ diff. Each of these features can be disabled by add an item into
@table @code
@item postscript
@findex postscript
-Postscript file.
+PostScript file.
@item uu
@findex uu
@@ -1805,6 +1806,9 @@ Documentation of the text/plain format parameter for flowed text.
@end table
+@node GNU Free Documentation License
+@chapter GNU Free Documentation License
+@include doclicense.texi
@node Index
@chapter Index
diff --git a/man/emacs.texi b/man/emacs.texi
index 39416158341..c384601bc73 100644
--- a/man/emacs.texi
+++ b/man/emacs.texi
@@ -5,7 +5,7 @@
@c The edition number appears in several places in this file
@set EDITION Sixteenth
-@set EMACSVER 22.0.96
+@set EMACSVER 22.0.98
@copying
This is the @value{EDITION} edition of the @cite{GNU Emacs Manual},
@@ -39,15 +39,20 @@ Software Foundation raise funds for GNU development.''
@c in general, keep the following line commented out, unless doing a
@c copy of this manual that will be published. the manual should go
@c onto the distribution in the full, 8.5 x 11" size.
+@set smallbook
+@ifset smallbook
@smallbook
+@end ifset
@c per rms and peterb, use 10pt fonts for the main text, mostly to
@c save on paper cost. Also do not declare @setchapternewpage odd.
@c Do this inside @tex for now, so current makeinfo does not complain.
@tex
+@ifset smallbook
@fonttextsize 10
-\global\hbadness=6000 % don't worry about not-too-underfull boxes
+@end ifset
+\global\hbadness=6666 % don't worry about not-too-underfull boxes
@end tex
@defcodeindex op
@@ -908,7 +913,6 @@ Customizing Key Bindings
* Init Rebinding:: Rebinding keys with your init file, @file{.emacs}.
* Function Keys:: Rebinding terminal function keys.
* Named ASCII Chars:: Distinguishing @key{TAB} from @kbd{C-i}, and so on.
-* Non-ASCII Rebinding:: Rebinding non-@acronym{ASCII} characters such as Latin-1.
* Mouse Buttons:: Rebinding mouse buttons in Emacs.
* Disabling:: Disabling a command means confirmation is required
before it can be executed. This is done to protect
@@ -920,6 +924,7 @@ The Init File, @file{~/.emacs}
* Init Examples:: How to do some things with an init file.
* Terminal Init:: Each terminal type can have an init file.
* Find Init:: How Emacs finds the init file.
+* Init Non-ASCII:: Using non-@acronym{ASCII} characters in an init file.
Dealing with Emacs Trouble
@@ -1683,7 +1688,10 @@ consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
+@node GNU Free Documentation License, Emacs Invocation, Copying, Top
+@appendix GNU Free Documentation License
@include doclicense.texi
+
@include cmdargs.texi
@include xresources.texi
diff --git a/man/erc.texi b/man/erc.texi
index 60c682b892f..72561b33072 100644
--- a/man/erc.texi
+++ b/man/erc.texi
@@ -12,7 +12,7 @@
@syncodeindex fn cp
@copying
-This manual is for ERC version 5.2 stable pre-release.
+This manual is for ERC version 5.2.
Copyright @copyright{} 2005, 2006, 2007 Free Software Foundation, Inc.
@@ -20,7 +20,17 @@ Copyright @copyright{} 2005, 2006, 2007 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no
-Invariant Sections, Front-Cover texts, or Back-Cover Texts.
+Invariant Sections, Front-Cover texts, or Back-Cover Texts. A copy of
+the license is included in the section entitled ``GNU Free
+Documentation License'' in the Emacs manual.
+
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
+
+All Emacs Lisp code contained in this document may be used, distributed,
+and modified without restriction.
@end quotation
@end copying
@@ -58,6 +68,7 @@ Invariant Sections, Front-Cover texts, or Back-Cover Texts.
* Advanced Usage:: Cool ways of using ERC.
* Getting Help and Reporting Bugs::
* History:: The history of ERC.
+* GNU Free Documentation License:: The license for this documentation.
* Concept Index:: Search for terms.
@detailmenu
@@ -68,12 +79,16 @@ Obtaining ERC
* Releases:: Released versions of ERC.
* Development:: Latest unreleased development changes.
+Getting Started
+
+* Sample Session:: Example of connecting to the #emacs channel
+* Special Features:: Differences from standalone IRC clients
+
Advanced Usage
* Connecting:: Ways of connecting to an IRC server.
-* Options:: Options that are available for ERC.
-* Tips and Tricks:: Ways of enhancing your ERC experience.
* Sample Configuration:: An example configuration file.
+* Options:: Options that are available for ERC.
@end detailmenu
@end menu
@@ -111,8 +126,17 @@ It comes with the following capabilities enabled by default.
* Development:: Latest unreleased development changes.
@end menu
-These sections may be skipped if you are using the version of ERC that
-comes with Emacs.
+Note that some ERC files are not included with Emacs due to copyright or
+dependency issues. If desired, they may be found at the following
+locations, or from your local GNU mirror.
+
+@itemize @bullet
+@item @uref{http://ftp.gnu.org/gnu/erc/erc-5.2-extras.tar.gz}
+@item @uref{http://ftp.gnu.org/gnu/erc/erc-5.2-extras.zip}
+@end itemize
+
+The rest of this chapter may be skipped if you are using the version of
+ERC that comes with Emacs.
@node Releases, Development, Obtaining ERC, Obtaining ERC
@comment node-name, next, previous, up
@@ -131,7 +155,7 @@ available in the official Debian repository.
@cindex releases, from source
Alternatively, you can download the latest release from
-@uref{http://ftp.gnu.org/gnu/erc}.
+@uref{http://ftp.gnu.org/gnu/erc}, or your local GNU mirror.
@node Development, , Releases, Obtaining ERC
@comment node-name, next, previous, up
@@ -188,9 +212,9 @@ tla update
@end enumerate
-If you are new to Arch and want to learn more about developing with it,
-you might find this tutorial helpful:
-@uref{http://www.mwolson.org/projects/ArchTutorial.html}.
+If you are new to Arch and want to learn more about developing ERC with
+it, visit @uref{http://emacswiki.org/cgi-bin/wiki/ErcDevelopment} for
+full instructions.
@subheading Development snapshots
@@ -261,8 +285,6 @@ locations that require this.
@chapter Getting Started
@cindex settings
-@c PRE5_2: Mention .ercrc.el
-
To use ERC, add the directory containing its files to your
@code{load-path} variable, in your @file{.emacs} file. Then, load ERC
itself. An example follows.
@@ -274,20 +296,151 @@ itself. An example follows.
Once ERC is loaded, the command @kbd{M-x erc} will start ERC and
prompt for the server to connect to.
+If you want to place ERC settings in their own file, you can place them
+in @file{~/.emacs.d/.ercrc.el}, creating it if necessary.
+
+If you would rather use the Customize interface to change how ERC works,
+do @kbd{M-x customize-group RET erc RET}. In particular, ERC comes with
+lots of modules that may be enabled or disabled; to select which ones
+you want, do @kbd{M-x customize-variable RET erc-modules RET}.
+
+@menu
+* Sample Session:: Example of connecting to the #emacs channel
+* Special Features:: Differences from standalone IRC clients
+@end menu
+
+@node Sample Session, Special Features, Getting Started, Getting Started
+@comment node-name, next, previous, up
+@section Sample Session
+
+This is an example ERC session which shows how to connect to the #emacs
+channel on Freenode. Another IRC channel on Freenode that may be of
+interest is #erc, which is a channel where ERC users and developers hang
+out.
+
+@itemize @bullet
+
+@item Connect to Freenode
+
+Run @kbd{M-x erc}. Use ``irc.freenode.net'' as the IRC server, ``6667''
+as the port, and choose a nickname.
+
+@item Get used to the interface
+
+Switch to the ``irc.freenode.net:6667'' buffer, if you're not already
+there. You will see first some messages about checking for ident, and
+then a bunch of other messages that describe the current IRC server.
+
+@item Join the #emacs channel
+
+In that buffer, type ``/join SPC #emacs'' and hit @kbd{RET}. Depending
+on how you've set up ERC, either a new buffer for ``#emacs'' will be
+displayed, or a new buffer called ``#emacs'' will be created in the
+background. If the latter, switch to the ``#emacs'' buffer. You will
+see the channel topic and a list of the people who are currently on the
+channel.
+
+@item Register your nickname with Freenode
+
+If you would like to be able to talk with people privately on the
+Freenode network, you will have to ``register'' your nickname. To do
+so, switch to the ``irc.freenode.net:6667'' buffer and type ``/msg
+NickServ register <password>'', replacing ``<password>'' with your
+desired password. It should tell you that the operation was successful.
+
+@item Talk to people in the channel
+
+If you switch back to the ``#emacs'' buffer, you can type a message, and
+everyone on the channel will see it.
+
+@item Open a query buffer to talk to someone
+
+If you want to talk with someone in private (this should usually not be
+done for technical help, only for personal questions), type ``/query
+<nick>'', replacing ``<nick>'' with the nickname of the person you would
+like to talk to. Depending on how ERC is set up, you will either see a
+new buffer with the name of the person, or such a buffer will be created
+in the background and you will have to switch to it. Begin typing
+messages, and you will be able to have a conversation.
+
+Note that if the other person is not registered, you will not be able to
+talk with them.
+
+@end itemize
+
+@node Special Features, , Sample Session, Getting Started
+@comment node-name, next, previous, up
+@section Special Features
+
+ERC has some features that distinguish it from some IRC clients.
+
+@itemize @bullet
+
+@item multiple channels and multiple servers
+
+Every channel is put in a separate buffer. Several IRC servers may be
+connected to at the same time.
+
+@cindex query buffers
+@item private message separation
+
+Private conversations are treated as channels, and are put into separate
+buffers in Emacs. We call these ``query buffers''.
+
+@item highlighting
+
+Some occurences of words can be highlighted, which makes it easier to
+track different kinds of conversations.
+
+@item notification
+
+ERC can notify you that certain users are online.
+
+@item channel tracking
+
+Channels can be hidden and conversation continue in the background. You
+are notified when something is said in such a channel that is not
+currently visible. This makes it easy to get Real Work done while still
+maintaining an IRC presence.
+
+@item nick completion
+
+ERC can complete words upon hitting @kbd{TAB}, which eases the writing
+of nicknames in messages.
+
+@cindex history ring
+@item history
+
+Past actions are kept in history rings for future use. To navigate a
+history ring, hit @kbd{M-p} to go backwards and @kbd{M-n} to go
+forwards.
+
+@item multiple languages
+
+Different channels and servers may have different language encodings.
+
+In addition, it is possible to translate the messages that ERC uses into
+multiple languages. Please contact the developers of ERC at
+@email{erc-discuss@@gnu.org} if you are interested in helping with the
+translation effort.
+
+@item user scripting
+
+Users can load scripts (e.g. auto greeting scripts) when ERC starts up.
+
+It is also possible to make custom IRC commands, if you know a little
+Emacs Lisp. Just make an Emacs Lisp function and call it
+@code{erc-cmd-NEWCOMMAND}, where @code{NEWCOMMAND} is the name of the
+new command in capital letters.
+
+@item auto reconnect
+
If the connection goes away at some point, ERC will try to reconnect
automatically. If it fails to reconnect, and you want to try to
manually reestablish the connection at some later point, switch to an
-ERC buffer and run the /RECONNECT command.
+ERC buffer and run the @code{/RECONNECT} command.
-@c PRE5_2: Sample session, including:
-@c - connect to Freenode
-@c - /join #emacs
-@c - see messages flying past, point out topic lines, messages, channel
-@c members
-@c - identifying your nick with NickServ (most IRC servers have this)
-@c - talking to the channel
-@c - open a /query buffer to talk to someone (must identify first in
-@c FreeNode)
+@end itemize
@node Keystroke Summary, Modules, Getting Started, Top
@@ -439,6 +592,10 @@ Save buffers in logs
@item match
Highlight pals, fools, and other keywords
+@cindex modules, menu
+@item menu
+Display a menu in ERC buffers
+
@cindex modules, netsplit
@item netsplit
Detect netsplits
@@ -505,7 +662,7 @@ Translate morse code in messages
@end table
-@c PRE5_2: Document every option of every module in its own subnode
+@c PRE5_3: Document every option of every module in its own subnode
@node Advanced Usage, Getting Help and Reporting Bugs, Modules, Top
@@ -515,12 +672,11 @@ Translate morse code in messages
@menu
* Connecting:: Ways of connecting to an IRC server.
-* Options:: Options that are available for ERC.
-* Tips and Tricks:: Ways of enhancing your ERC experience.
* Sample Configuration:: An example configuration file.
+* Options:: Options that are available for ERC.
@end menu
-@node Connecting, Options, Advanced Usage, Advanced Usage
+@node Connecting, Sample Configuration, Advanced Usage, Advanced Usage
@comment node-name, next, previous, up
@section Connecting to an IRC Server
@cindex connecting
@@ -654,33 +810,97 @@ User full name.
This can be either a string or a function to call.
@end defopt
-@node Options, Tips and Tricks, Connecting, Advanced Usage
+@node Sample Configuration, Options, Connecting, Advanced Usage
@comment node-name, next, previous, up
-@section Options
-@cindex options
+@section Sample Configuration
+@cindex configuration, sample
-@c PRE5_2: (Node) Document every ERC option (module options go in
-@c previous chapter)
+Here is an example of configuration settings for ERC. This can go into
+your Emacs configuration file. Everything after the @code{(require
+'erc)} command can optionally go into @file{~/.emacs.d/.ercrc.el}.
-This section has not yet been written.
+@lisp
+;;; Sample ERC configuration
-@node Tips and Tricks, Sample Configuration, Options, Advanced Usage
-@comment node-name, next, previous, up
-@section Tips and Tricks
-@cindex tips and tricks
+;; Add the ERC directory to load path -- you don't need this if you are
+;; using the version of ERC that comes with Emacs
+(add-to-list 'load-path "~/elisp/erc")
-@c PRE5_2: (Node) Tips and tricks
+;; Load ERC
+(require 'erc)
-This section has not yet been written.
+;; Load authentication info from an external source. Put sensitive
+;; passwords and the like in here.
+(load "~/.emacs.d/.erc-auth")
+
+;; This is an example of how to make a new command. Type "/uptime" to
+;; use it.
+(defun erc-cmd-UPTIME (&rest ignore)
+ "Display the uptime of the system, as well as some load-related
+stuff, to the current ERC buffer."
+ (let ((uname-output
+ (replace-regexp-in-string
+ ", load average: " "] @{Load average@} ["
+ ;; Collapse spaces, remove
+ (replace-regexp-in-string
+ " +" " "
+ ;; Remove beginning and trailing whitespace
+ (replace-regexp-in-string
+ "^ +\\|[ \n]+$" ""
+ (shell-command-to-string "uptime"))))))
+ (erc-send-message
+ (concat "@{Uptime@} [" uname-output "]"))))
+
+;; This causes ERC to connect to the Freenode network upon hitting
+;; C-c e f. Replace MYNICK with your IRC nick.
+(global-set-key "\C-cef" (lambda () (interactive)
+ (erc :server "irc.freenode.net" :port "6667"
+ :nick "MYNICK")))
+
+;; This causes ERC to connect to the IRC server on your own machine (if
+;; you have one) upon hitting C-c e b. Replace MYNICK with your IRC
+;; nick. Often, people like to run bitlbee (http://bitlbee.org/) as an
+;; AIM/Jabber/MSN to IRC gateway, so that they can use ERC to chat with
+;; people on those networks.
+(global-set-key "\C-ceb" (lambda () (interactive)
+ (erc :server "localhost" :port "6667"
+ :nick "MYNICK")))
+
+;; Make C-c RET (or C-c C-RET) send messages instead of RET. This has
+;; been commented out to avoid confusing new users.
+;; (define-key erc-mode-map (kbd "RET") nil)
+;; (define-key erc-mode-map (kbd "C-c RET") 'erc-send-current-line)
+;; (define-key erc-mode-map (kbd "C-c C-RET") 'erc-send-current-line)
+
+;;; Options
+
+;; Join the #emacs and #erc channels whenever connecting to Freenode.
+(setq erc-autojoin-channels-alist '(("freenode.net" "#emacs" "#erc")))
+
+;; Interpret mIRC-style color commands in IRC chats
+(setq erc-interpret-mirc-color t)
+
+;; The following are commented out by default, but users of other
+;; non-Emacs IRC clients might find them useful.
+;; Kill buffers for channels after /part
+;; (setq erc-kill-buffer-on-part t)
+;; Kill buffers for private queries after quitting the server
+;; (setq erc-kill-queries-on-quit t)
+;; Kill buffers for server messages after quitting the server
+;; (setq erc-kill-server-buffer-on-quit t)
+@end lisp
-@node Sample Configuration, , Tips and Tricks, Advanced Usage
+@node Options, , Sample Configuration, Advanced Usage
@comment node-name, next, previous, up
-@section Sample Configuration
-@cindex configuration, sample
+@section Options
+@cindex options
-@c PRE5_2: (Node) Sample configs
+@c PRE5_3: (Node) Document every ERC option (module options go in
+@c previous chapter)
-This section has not yet been written.
+This section has not yet been written. For now, the easiest way to
+check out the available option for ERC is to do
+@kbd{M-x customize-group erc RET}.
@node Getting Help and Reporting Bugs, History, Advanced Usage, Top
@@ -727,7 +947,7 @@ questions.
@end itemize
-@node History, Concept Index, Getting Help and Reporting Bugs, Top
+@node History, GNU Free Documentation License, Getting Help and Reporting Bugs, Top
@comment node-name, next, previous, up
@chapter History
@cindex history, of ERC
@@ -789,7 +1009,11 @@ our revision control system. Our mailing list address changed as well.
@end itemize
-@node Concept Index, , History, Top
+@node GNU Free Documentation License, Concept Index, History, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Concept Index, , GNU Free Documentation License, Top
@comment node-name, next, previous, up
@unnumbered Index
diff --git a/man/eshell.texi b/man/eshell.texi
index 47f76a1d69a..3a4b705d2c9 100644
--- a/man/eshell.texi
+++ b/man/eshell.texi
@@ -89,6 +89,7 @@ handling the sort of tasks accomplished by those tools.
* Extension modules::
* Extras and Goodies::
* Bugs and ideas:: Known problems, and future ideas.
+* GNU Free Documentation License:: The license for this documentation.
* Concept Index::
* Function and Variable Index::
* Key Index::
@@ -922,6 +923,10 @@ Since it keeps the cursor up where the command was invoked.
@end table
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
@node Concept Index
@unnumbered Concept Index
diff --git a/man/eudc.texi b/man/eudc.texi
index 08c02131f3e..7a8dbbee524 100644
--- a/man/eudc.texi
+++ b/man/eudc.texi
@@ -70,6 +70,7 @@ LDAP or the CCSO white pages directory system (PH/QI)
* Installation:: How to install EUDC
* Usage:: The various usage possibilities explained
* Credits:: Who's done what
+* GNU Free Documentation License:: The license for this documentation.
* Command and Function Index::
* Variables Index::
@end menu
@@ -949,7 +950,7 @@ Update all EUDC variables according to their local settings.
-@node Credits, Command and Function Index, Usage, Top
+@node Credits, GNU Free Documentation License, Usage, Top
@comment node-name, next, previous, up
@chapter Credits
@@ -959,7 +960,11 @@ same author.
Thanks to Soren Dayton for his suggestions, his enthusiasm and his help
in testing and proofreading the code and docs of @file{ph.el}.
-@node Command and Function Index, Variables Index, Credits, Top
+@node GNU Free Documentation License, Command and Function Index, Credits, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Command and Function Index, Variables Index, GNU Free Documentation License, Top
@comment node-name, next, previous, up
@unnumbered Command and Function Index
diff --git a/man/faq.texi b/man/faq.texi
index a8feffa46e4..781d7b5ce56 100644
--- a/man/faq.texi
+++ b/man/faq.texi
@@ -1145,67 +1145,97 @@ and on @code{xterm} with @kbd{emacs -nw}.
@cindex Differences between Emacs 21 and Emacs 22
@cindex Emacs 22, new features in
@cindex Recently introduced features
-
@cindex Default features
-Font Lock mode, auto-compression mode, and file name shadow mode are
-enabled by default. On graphics displays it is possible to follow links
-with @kbd{mouse-1}. The modeline of the selected window is now
-highlighted. Window fringes are customizable. The minibuffer prompt is
-displayed in a distinct face.
-Emacs now reads abbrev definitions automatically at startup. The
-maximum size of buffers has been doubled and is 256M on 32-bit machines.
-Grep mode is separate from Compilation mode and has many new specific
-options and commands.
+@itemize
+@cindex GTK+ Toolkit
+@cindex Drag-and-drop
+@item
+Emacs can be built with GTK+ widgets, and supports drag-and-drop
+operation on X.
-The original Emacs macro system has been replaced by the new Kmacro
-package, which provides many new commands and features and a simple
-interface that uses the function keys F3 and F4. Macros are stored
-in a macro ring, and can be debugged and edited interactively.
+@cindex Supported systems
+@item
+Emacs 22 features support for GNU/Linux systems on S390 and x86-64
+machines, as well as support for the Mac OS X and Cygwin operating
+systems.
-The GUD (Grand Unified Debugger) package can now be used with a full
-graphical user interface to the debugger which provides many features
-found in traditional development environments, making it easy to
-manipulate breakpoints, add watch points, display the call stack, etc.
-Breakpoints are displayed in the source buffer.
+@item
+The native MS-Windows, Mac OS 9 and Mac OS X builds include full support
+for images, toolbar, and tooltips.
+
+@item
+Font Lock mode, Auto Compression mode, and File Name Shadow Mode are
+enabled by default.
+
+@item
+The maximum size of buffers has been doubled and is 256M on 32-bit
+machines.
+
+@item
+Links can be followed with @kbd{mouse-1}, in addition to @kbd{mouse-2}.
-@cindex GTK+ Toolkit
-@cindex Drag-and-drop
@cindex Mouse wheel
-Emacs can be built with GTK+ widgets, and supports drag-and-drop
-operation on X. Mouse wheel support is enabled by default.
+@item
+Mouse wheel support is enabled by default.
+
+@item
+Window fringes are customizable.
+
+@item
+The mode line of the selected window is now highlighted.
+
+@item
+The minibuffer prompt is displayed in a distinct face.
+
+@item
+Abbrev definitions are read automatically at startup.
+
+@item
+Grep mode is separate from Compilation mode and has many new options and
+commands specific to grep.
+
+@item
+The original Emacs macro system has been replaced by the new Kmacro
+package, which provides many new commands and features and a simple
+interface that uses the function keys F3 and F4. Macros are stored in a
+macro ring, and can be debugged and edited interactively.
+
+@item
+The Grand Unified Debugger (GUD) can be used with a full graphical user
+interface to GDB; this provides many features found in traditional
+development environments, making it easy to manipulate breakpoints, add
+watch points, display the call stack, etc. Breakpoints are visually
+indicated in the source buffer.
+@item
@cindex New modes
-Many new modes and packages have been included in Emacs, such as MH-E,
-Calc, Tramp and URL, as well as IDO, CUA, rcirc, ERC, conf-mode,
-python-mode, table, tumme, SES, ruler, Flymake, Org, PGG, wdired,
-t-mouse, longlines, dns-mode, savehist, Password, Printing, Reveal, etc.
-Gnus has been updated to version 5.11.
+Many new modes and packages have been included in Emacs, such as Calc,
+TRAMP, URL, IDO, CUA, ERC, rcirc, Table, Tumme, SES, Ruler, Org, PGG,
+Flymake, Password, Printing, Reveal, wdired, t-mouse, longlines,
+savehist, Conf mode, Python mode, DNS mode, etc.
@cindex Multilingual Environment
+@item
Leim is now part of Emacs. Unicode support has been much improved, and
the following input methods have been added: belarusian, bulgarian-bds,
bulgarian-phonetic, chinese-sisheng, croatian, dutch, georgian,
latin-alt-postfix, latin-postfix, latin-prefix, latvian-keyboard,
lithuanian-numeric, lithuanian-keyboard, malayalam-inscript, rfc1345,
-russian-computer, sgml, slovenian, tamil-inscript ucs,
+russian-computer, sgml, slovenian, tamil-inscript, ucs,
ukrainian-computer, vietnamese-telex, and welsh.
-The following language environment have also been added: Belarusian,
+The following language environments have also been added: Belarusian,
Bulgarian, Chinese-EUC-TW, Croatian, French, Georgian, Italian, Latin-6,
-Latin-7, Latvian, Lithuanian, Malayalam, Russian, Russian, Slovenian,
-Swedish, Tajik, Tamil, UTF-8, Ukrainian, Ukrainian, Welsh, and
-Windows-1255.
-
-@cindex Supported systems
-Emacs 22 features support for GNU/Linux systems on S390 and x86-64
-machines, as well as support for the Mac OS X and Cygwin operating
-systems.
+Latin-7, Latvian, Lithuanian, Malayalam, Russian, Slovenian, Swedish,
+Tajik, Tamil, UTF-8, Ukrainian, Welsh, and Windows-1255.
@cindex Documentation
@cindex Emacs Lisp Manual
+@item
In addition, Emacs 22 now includes the Emacs Lisp Reference Manual
(@pxref{Emacs Lisp documentation}) and the Emacs Lisp Intro.
+@end itemize
Many other changes have been made in Emacs 22, use @kbd{C-h n} to get a
full list.
diff --git a/man/files.texi b/man/files.texi
index 531d50f6392..4644f137475 100644
--- a/man/files.texi
+++ b/man/files.texi
@@ -1153,13 +1153,14 @@ recover are present in Emacs buffers. You should then save them. Only
this---saving them---updates the files themselves.
@vindex auto-save-list-file-prefix
- Emacs records interrupted sessions for later recovery in files named
+ Emacs records information about interrupted sessions for later
+recovery in files named
@file{~/.emacs.d/auto-save-list/.saves-@var{pid}-@var{hostname}}. All
-of this name except @file{@var{pid}-@var{hostname}} comes from the
-value of @code{auto-save-list-file-prefix}. You can record sessions
-in a different place by customizing that variable. If you set
-@code{auto-save-list-file-prefix} to @code{nil} in your @file{.emacs}
-file, sessions are not recorded for recovery.
+of this name except the @file{@var{pid}-@var{hostname}} part comes
+from the value of @code{auto-save-list-file-prefix}. You can record
+sessions in a different place by customizing that variable. If you
+set @code{auto-save-list-file-prefix} to @code{nil} in your
+@file{.emacs} file, sessions are not recorded for recovery.
@node File Aliases
@section File Name Aliases
@@ -2434,11 +2435,11 @@ contents of the specified file into the current buffer at point,
leaving point unchanged before the contents and the mark after them.
@findex insert-file-literally
- @kbd{M-x insert-file-literally} is like @kbd{C-x i}, except it
-inserts the specified file with no conversion of the contents: no
-format conversion (@pxref{Formatted Text}), no character code
-conversion (@pxref{Coding Systems}), and no automatic uncompression
-(@pxref{Compressed Files}).
+ @kbd{M-x insert-file-literally} is like @kbd{M-x insert-file},
+except the file is inserted ``literally'': it is treated as a sequence
+of @acronym{ASCII} characters with no special encoding or conversion,
+similar to the @kbd{M-x find-file-literally} command
+(@pxref{Visiting}).
@findex write-region
@kbd{M-x write-region} is the inverse of @kbd{M-x insert-file}; it
@@ -2815,13 +2816,8 @@ works only when Emacs can display the specific image type.
@findex thumbs-mode
@findex mode, thumbs
- Thumbs mode is a major mode for viewing directories containing many
-image files. To use it, type @kbd{M-x thumbs} and specify the
-directory to view. The images in that directory will be displayed in
-a @samp{Thumbs} buffer as @dfn{thumbnails}; type @kbd{RET} on a
-thumbnail to view the full-size image. Thumbs mode requires the
-@file{convert} program, which is part of the ImageMagick software
-package.
+ See also the Tumme package (@pxref{Thumbnails}) for viewing images
+as thumbnails.
@node Filesets
@section Filesets
diff --git a/man/flymake.texi b/man/flymake.texi
index 4d6b8303f4a..16947d7f2de 100644
--- a/man/flymake.texi
+++ b/man/flymake.texi
@@ -44,6 +44,7 @@ license to the document, as described in section 6 of the license.
@author Pavel Kobiakov(@email{pk_at_work@@yahoo.com})
@page
@vskip 0pt plus 1filll
+@insertcopying
@end titlepage
@contents
@@ -59,6 +60,7 @@ license to the document, as described in section 6 of the license.
* Using Flymake::
* Configuring Flymake::
* Flymake Implementation::
+* GNU Free Documentation License::
* Index::
@end menu
@@ -744,6 +746,10 @@ Flymake also provides an alternative command for starting compilation,
It just kills all the active syntax check processes before calling
@code{compile}.
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
@node Index
@unnumbered Index
diff --git a/man/forms.texi b/man/forms.texi
index 46210dc8e41..4114453df6c 100644
--- a/man/forms.texi
+++ b/man/forms.texi
@@ -53,9 +53,9 @@ license to the document, as described in section 6 of the license.
@sp 4
@center Forms-Mode version 2
@sp 1
-@center for GNU Emacs 20.1
+@center for GNU Emacs 22.1
@sp 1
-@center June 1997
+@center April 2007
@sp 5
@center Johan Vromans
@center @i{jvromans@@squirrel.nl}
@@ -91,6 +91,7 @@ how to present it.
* Miscellaneous:: Forms mode messages and other remarks.
* Error Messages:: List of error messages forms mode can produce.
* Long Example:: A more complex control file example.
+* GNU Free Documentation License:: The license for this documentation.
* Credits:: Thanks everyone.
* Index:: Index to this manual.
@end menu
@@ -968,6 +969,10 @@ mode'' by Paul Davis at Schlumberger Cambridge Research
None of this would have been possible without GNU Emacs of the Free
Software Foundation. Thanks, Richard!
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
@node Index
@unnumbered Index
@printindex cp
diff --git a/man/frames.texi b/man/frames.texi
index 965ccb0a7b0..a45b582b455 100644
--- a/man/frames.texi
+++ b/man/frames.texi
@@ -515,6 +515,8 @@ frame. This runs @code{find-file-read-only-other-frame}.
@cindex default-frame-alist
@cindex initial-frame-alist
+@cindex face customization, in @file{~/.emacs}
+@cindex color customization, in @file{~/.emacs}
You can control the appearance of new frames you create by setting the
frame parameters in @code{default-frame-alist}. You can use the
variable @code{initial-frame-alist} to specify parameters that affect
@@ -538,6 +540,11 @@ Here's a similar example for specifying a foreground color:
(add-to-list 'default-frame-alist '(foreground-color . "blue"))
@end example
+@noindent
+By putting such customizations in your @file{~/.emacs} init file, you
+can control the appearance of all the frames Emacs creates, including
+the initial one.
+
@node Frame Commands
@section Frame Commands
@@ -874,7 +881,7 @@ feature, use @kbd{M-x mouse-wheel-mode}.
@vindex mouse-wheel-follow-mouse
@vindex mouse-wheel-scroll-amount
@vindex mouse-wheel-progressive-speed
- The variables @code{mouse-wheel-follow-mouse} and
+ The two variables @code{mouse-wheel-follow-mouse} and
@code{mouse-wheel-scroll-amount} determine where and by how much
buffers are scrolled. The variable
@code{mouse-wheel-progressive-speed} determines whether the scroll
diff --git a/man/glossary.texi b/man/glossary.texi
index 2a55b49645b..d082e6ec077 100644
--- a/man/glossary.texi
+++ b/man/glossary.texi
@@ -601,6 +601,10 @@ have. To make a character Hyper, type it while holding down the
@kbd{Hyper-} (usually written @kbd{H-} for short). @xref{User Input,
Hyper}.
+@item Iff
+``Iff'' means ``if and only if.'' This terminology comes from
+mathematics.
+
@item Inbox
An inbox is a file in which mail is delivered by the operating system.
Rmail transfers mail from inboxes to Rmail files (q.v.@:) in which the
diff --git a/man/gnu.texi b/man/gnu.texi
index 3b8a8e17f0a..1cf85f41c3c 100644
--- a/man/gnu.texi
+++ b/man/gnu.texi
@@ -41,10 +41,9 @@ Since that time, we have learned about certain common misunderstandings
that different wording could help avoid. Footnotes added in 1993 help
clarify these points.
-For up-to-date information about the available GNU software, please
-see @uref{http://www.gnu.org}. For software tasks to work on, see
-@uref{http://savannah.gnu.org/projects/tasklist}. For other ways to
-contribute, see @uref{http://www.gnu.org/help}.
+For up-to-date information about available GNU software, please see
+our web site, @uref{http://www.gnu.org}. For software tasks and other
+ways to contribute, see @uref{http://www.gnu.org/help}.
@end quotation
@unnumberedsec What's GNU? Gnu's Not Unix!
@@ -503,10 +502,11 @@ The sale of teaching, hand-holding and maintenance services could also
employ programmers.
People with new ideas could distribute programs as
-freeware@footnote{Subsequently we have learned to distinguish between
-"free software" and "freeware". The term "freeware" means software
-you are free to redistribute, but usually you are not free to study
-and change the source code, so most of it is not free software. See
+freeware@footnote{Subsequently we have discovered the need to
+distinguish between ``free software'' and ``freeware''. The term
+``freeware'' means software you are free to redistribute, but usually
+you are not free to study and change the source code, so most of it is
+not free software. See
@uref{http://www.gnu.org/philosophy/words-to-avoid.html} for more
explanation.}, asking for donations from satisfied users, or selling
hand-holding services. I have met people who are already working this
diff --git a/man/gnus.texi b/man/gnus.texi
index 2ca1d225786..48ecd630265 100644
--- a/man/gnus.texi
+++ b/man/gnus.texi
@@ -402,6 +402,7 @@ the program.
* Various:: General purpose settings.
* The End:: Farewell and goodbye.
* Appendices:: Terminology, Emacs intro, @acronym{FAQ}, History, Internals.
+* GNU Free Documentation License:: The license for this documentation.
* Index:: Variable, function and concept index.
* Key Index:: Key Index.
@@ -6174,7 +6175,7 @@ Process marks are displayed as @code{#} in the summary buffer, and are
used for marking articles in such a way that other commands will
process these articles. For instance, if you process mark four
articles and then use the @kbd{*} command, Gnus will enter these four
-commands into the cache. For more information,
+articles into the cache. For more information,
@pxref{Process/Prefix}.
@table @kbd
@@ -13489,7 +13490,7 @@ function.
@vindex nnmail-mail-splitting-charset
@vindex nnmail-mail-splitting-decodes
-By default the splitting codes @acronym{MIME} decodes headers so you
+By default, splitting @acronym{MIME}-decodes headers so you
can match on non-@acronym{ASCII} strings. The
@code{nnmail-mail-splitting-charset} variable specifies the default
charset for decoding. The behavior can be turned off completely by
@@ -13607,7 +13608,8 @@ TMP=$HOME/Mail/tmp
rm -f $TMP; $MOVEMAIL $MAIL $TMP >/dev/null && cat $TMP
@end example
-Alter this script to fit find the @samp{movemail} you want to use.
+Alter this script to fit the @samp{movemail} and temporary
+file you want to use.
@item directory
@@ -29027,6 +29029,10 @@ former). The manual is unambiguous, but it can be confusing.
@page
@include gnus-faq.texi
+@node GNU Free Documentation License
+@chapter GNU Free Documentation License
+@include doclicense.texi
+
@node Index
@chapter Index
@printindex cp
diff --git a/man/idlwave.texi b/man/idlwave.texi
index 49ee0b7a110..94f59249892 100644
--- a/man/idlwave.texi
+++ b/man/idlwave.texi
@@ -106,6 +106,7 @@ Interactive Data Language (IDL), and running IDL as an inferior shell.
* Configuration Examples:: The user is king
* Windows and MacOS:: What still works, and how
* Troubleshooting:: When good computers turn bad
+* GNU Free Documentation License:: The license for this documentation.
* Index:: Fast access
@detailmenu
@@ -4096,7 +4097,7 @@ help can skip the browser and use the HTMLHelp functionality directly.
@html
<A NAME="TROUBLE"></A>
@end html
-@node Troubleshooting, Index, Windows and MacOS, Top
+@node Troubleshooting, GNU Free Documentation License, Windows and MacOS, Top
@appendix Troubleshooting
@cindex Troubleshooting
@@ -4302,7 +4303,11 @@ IDLWAVE is @samp{fsf-compat, xemacs-base, mail-lib}.
@end enumerate
-@node Index, , Troubleshooting, Top
+@node GNU Free Documentation License, Index, Troubleshooting, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Index, , GNU Free Documentation License, Top
@unnumbered Index
@printindex cp
diff --git a/man/killing.texi b/man/killing.texi
index b853d69a04a..b626bfab385 100644
--- a/man/killing.texi
+++ b/man/killing.texi
@@ -148,8 +148,8 @@ enters Help instead, see @ref{DEL Does Not Delete}.
The other delete commands are those which delete only whitespace
characters: spaces, tabs and newlines. @kbd{M-\}
(@code{delete-horizontal-space}) deletes all the spaces and tab
-characters before and after point. (With a prefix argument, it
-deletes them before point, but not after.) @kbd{M-@key{SPC}}
+characters before and after point. With a prefix argument, this only
+deletes spaces and tab characters before point. @kbd{M-@key{SPC}}
(@code{just-one-space}) does likewise but leaves a single space after
point, regardless of the number of spaces that existed previously
(even if there were none before). With a numeric argument @var{n}, it
@@ -551,13 +551,13 @@ Insert blank space to fill the space of the region-rectangle
(@code{open-rectangle}). This pushes the previous contents of the
region-rectangle rightward.
@item C-x r c
-Clear the region-rectangle by replacing its contents with spaces
+Clear the region-rectangle by replacing all of its contents with spaces
(@code{clear-rectangle}).
@item M-x delete-whitespace-rectangle
Delete whitespace in each of the lines on the specified rectangle,
starting from the left edge column of the rectangle.
@item C-x r t @var{string} @key{RET}
-Replace rectangle contents with @var{string} on each line.
+Replace rectangle contents with @var{string} on each line
(@code{string-rectangle}).
@item M-x string-insert-rectangle @key{RET} @var{string} @key{RET}
Insert @var{string} on each line of the rectangle.
diff --git a/man/macos.texi b/man/macos.texi
index 0671b8c5f74..28d7f43df8e 100644
--- a/man/macos.texi
+++ b/man/macos.texi
@@ -319,8 +319,9 @@ by the name:
-apple-monaco-medium-r-normal--12-*-*-*-*-*-iso10646-1
@end example
-Note that it must be specified in a format containing 14 @samp{-}s
-(e.g., not by @samp{-apple-monaco-medium-r-normal--12-*-iso10646-1}),
+Note that these names must be specified using a format containing all
+14 @samp{-}s (not by
+@samp{-apple-monaco-medium-r-normal--12-*-iso10646-1}, for instance),
because every @acronym{ATSUI}-compatible font is a scalable one.
QuickDraw Text fonts have maker name @code{apple} and various charset
@@ -340,7 +341,7 @@ font for Latin-1 characters introduces wrong glyphs.
Native Apple Traditional Chinese, Simplified Chinese, Japanese,
Korean, Central European, Cyrillic, Symbol, and Dingbats fonts have
-charsets @samp{big5-0}, @samp{gb2312.1980-0},
+the charsets @samp{big5-0}, @samp{gb2312.1980-0},
@samp{jisx0208.1983-sjis} and @samp{jisx0201.1976-0},
@samp{ksc5601.1989-0}, @samp{mac-centraleurroman},
@samp{mac-cyrillic}, @samp{mac-symbol}, and @samp{mac-dingbats},
@@ -381,6 +382,17 @@ such versions. It can be changed by setting
(QuickDraw). Both @acronym{ATSUI} and QuickDraw Text drawings are
affected by the value of this variable.
+ Appearance of text in small sizes will also be affected by the ``Turn
+off text smoothing for font sizes @var{n} and smaller'' setting in the
+General pane (Mac OS X 10.1 or 10.2) or in the Appearance pane (10.3 or
+later) of the System Preferences. This threshold can alternatively be
+set just for Emacs (i.e., not as the system-wide setting) using the
+@command{defaults} command:
+
+@example
+defaults write org.gnu.Emacs AppleAntiAliasingThreshold @var{n}
+@end example
+
@node Mac Functions
@section Mac-Specific Lisp Functions
diff --git a/man/message.texi b/man/message.texi
index f63673e11da..c843d8c58d9 100644
--- a/man/message.texi
+++ b/man/message.texi
@@ -63,6 +63,7 @@ Message mode buffers.
* Variables:: Customizing the message buffers.
* Compatibility:: Making Message backwards compatible.
* Appendices:: More technical things.
+* GNU Free Documentation License:: The license for this documentation.
* Index:: Variable, function and concept index.
* Key Index:: List of Message mode keys.
@end menu
@@ -2157,10 +2158,36 @@ message buffers are kept alive.
@table @code
@item message-generate-new-buffers
@vindex message-generate-new-buffers
-If non-@code{nil}, generate new buffers. The default is @code{t}. If
-this is a function, call that function with three parameters: The type,
-the to address and the group name. (Any of these may be @code{nil}.)
-The function should return the new buffer name.
+Controls whether to create a new message buffer to compose a message.
+Valid values include:
+
+@table @code
+@item nil
+Generate the buffer name in the Message way (e.g., *mail*, *news*, *mail
+to whom*, *news on group*, etc.) and continue editing in the existing
+buffer of that name. If there is no such buffer, it will be newly
+created.
+
+@item unique
+@item t
+Create the new buffer with the name generated in the Message way. This
+is the default.
+
+@item unsent
+Similar to @code{unique} but the buffer name begins with "*unsent ".
+
+@item standard
+Similar to @code{nil} but the buffer name is simpler like *mail
+message*.
+@end table
+@table @var
+@item function
+If this is a function, call that function with three parameters: The
+type, the To address and the group name (any of these may be
+@code{nil}). The function should return the new buffer name.
+@end table
+
+The default value is @code{unique}.
@item message-max-buffers
@vindex message-max-buffers
@@ -2312,6 +2339,9 @@ basis of the new @code{Cc} header, except if this header is
@end table
+@node GNU Free Documentation License
+@chapter GNU Free Documentation License
+@include doclicense.texi
@node Index
@chapter Index
diff --git a/man/misc.texi b/man/misc.texi
index bfe86af09f4..0819c03922e 100644
--- a/man/misc.texi
+++ b/man/misc.texi
@@ -1448,7 +1448,7 @@ Like @code{lpr-buffer} but print only the current region.
@findex lpr-buffer
@findex lpr-region
@vindex lpr-switches
- The hardcopy commands (aside from the Postscript commands) pass extra
+ The hardcopy commands (aside from the PostScript commands) pass extra
switches to the @code{lpr} program based on the value of the variable
@code{lpr-switches}. Its value should be a list of strings, each string
an option starting with @samp{-}. For example, to specify a line width
@@ -2177,8 +2177,9 @@ also use the command @kbd{M-x scroll-all-mode} or set the variable
@item EDT (DEC VMS editor)
@findex edt-emulation-on
@findex edt-emulation-off
-Turn on EDT emulation with @kbd{M-x edt-emulation-on}. @kbd{M-x
-edt-emulation-off} restores normal Emacs command bindings.
+Turn on EDT emulation with the command @kbd{M-x edt-emulation-on},
+while @kbd{M-x edt-emulation-off} restores normal Emacs command
+bindings.
Most of the EDT emulation commands are keypad keys, and most standard
Emacs key bindings are still available. The EDT emulation rebindings
diff --git a/man/mule.texi b/man/mule.texi
index a812cf398b9..c71c820dc27 100644
--- a/man/mule.texi
+++ b/man/mule.texi
@@ -261,6 +261,9 @@ Thai, Tibetan, Turkish, UTF-8 (for a setup which prefers Unicode
characters and files encoded in UTF-8), Ukrainian, Vietnamese, Welsh,
and Windows-1255 (for a setup which prefers Cyrillic characters and
files encoded in Windows-1255).
+@tex
+\hbadness=10000\par % just avoid underfull hbox warning
+@end tex
@end quotation
@cindex fonts for various scripts
diff --git a/man/newsticker.texi b/man/newsticker.texi
index 95934792a02..48d7f992667 100644
--- a/man/newsticker.texi
+++ b/man/newsticker.texi
@@ -48,6 +48,7 @@ license to the document, as described in section 6 of the license.
@author @uref{http://de.geocities.com/ulf_jasper}
@page
@vskip 0pt plus 1filll
+@insertcopying
@end titlepage
@contents
@@ -64,6 +65,7 @@ license to the document, as described in section 6 of the license.
* Usage:: Basic newsticker instructions.
* Configuration:: Customizable newsticker settings.
* Remarks:: Remarks about newsticker.
+* GNU Free Documentation License:: The license for this documentation.
* Index:: Variable, function, and concept index.
@end menu
@@ -270,7 +272,9 @@ every once in a while.
Byte-compiling newsticker.el is recommended.
-
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@include doclicense.texi
@node Index
@unnumbered Index
diff --git a/man/org.texi b/man/org.texi
index 4b484f25409..aacc2929d13 100644
--- a/man/org.texi
+++ b/man/org.texi
@@ -89,6 +89,7 @@ Software Foundation raise funds for GNU development.''
* Miscellaneous:: All the rest which did not fit elsewhere
* Extensions and Hacking:: It is possible to write add-on code
* History and Acknowledgments:: How Org-mode came into being
+* GNU Free Documentation License:: The license for this documentation.
* Index:: The fast road to specific information
* Key Index:: Key bindings and where they are described
@@ -1478,9 +1479,9 @@ described below, see @ref{Advanced features}.
@cindex syntax, of formulas
A formula can be any algebraic expression understood by the Emacs
-@file{Calc} package. Note that @file{calc} has the slightly
+@file{Calc} package. @b{Note that @file{calc} has the
non-standard convention that @samp{/} has lower precedence than
-@samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}. Before
+@samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.} Before
evaluation by @code{calc-eval} (@pxref{Calling Calc from
Your Programs,calc-eval,Calling calc from Your Lisp Programs,calc,GNU
Emacs Calc Manual}),
@@ -6416,7 +6417,7 @@ MATCH is being ignored."
@end lisp
-@node History and Acknowledgments, Index, Extensions and Hacking, Top
+@node History and Acknowledgments, GNU Free Documentation License, Extensions and Hacking, Top
@appendix History and Acknowledgments
@cindex acknowledgments
@cindex history
@@ -6567,8 +6568,12 @@ work on a tty.
and contributed various ideas and code snippets.
@end itemize
+@node GNU Free Documentation License, Index, History and Acknowledgments, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
-@node Index, Key Index, History and Acknowledgments, Top
+
+@node Index, Key Index, GNU Free Documentation License, Top
@unnumbered Index
@printindex cp
diff --git a/man/pcl-cvs.texi b/man/pcl-cvs.texi
index e2030c5f758..93bd54eb456 100644
--- a/man/pcl-cvs.texi
+++ b/man/pcl-cvs.texi
@@ -91,6 +91,7 @@ of the various commands and major modes for further information.
* Customization:: How you can tailor PCL-CVS to suit your needs.
* Bugs:: Bugs (known and unknown).
+* GNU Free Documentation License:: The license for this documentation.
* Function and Variable Index:: List of functions and variables.
* Concept Index:: List of concepts.
* Key Index:: List of keystrokes.
@@ -1363,7 +1364,7 @@ Used to highlight CVS messages.
@end table
-@node Bugs, Function and Variable Index, Customization, Top
+@node Bugs, GNU Free Documentation License, Customization, Top
@chapter Bugs (known and unknown)
@cindex Reporting bugs and ideas
@cindex Bugs, how to report them
@@ -1403,7 +1404,13 @@ output of the CVS process (which should be found in the @samp{ *cvs-tmp*}
buffer), and the versions of Emacs, PCL-CVS and CVS you are using.
@end table
-@node Function and Variable Index, Concept Index, Bugs, Top
+@node GNU Free Documentation License, Function and Variable Index, Bugs, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+
+
+@node Function and Variable Index, Concept Index, GNU Free Documentation License, Top
@unnumbered Function and Variable Index
This is an index of all the functions and variables documented in this
diff --git a/man/pgg.texi b/man/pgg.texi
index a9d3f6e16de..6a175db4cb9 100644
--- a/man/pgg.texi
+++ b/man/pgg.texi
@@ -52,6 +52,7 @@ user interface to encrypt, decrypt, sign, and verify MIME messages.
* How to use:: Getting started quickly.
* Architecture::
* Parsing OpenPGP packets::
+* GNU Free Documentation License:: The license for this documentation.
* Function Index::
* Variable Index::
@end menu
@@ -296,6 +297,14 @@ variable to @code{nil}.
Elapsed time for expiration in seconds.
@end defvar
+If your passphrase contains non-ASCII characters, you might need to
+specify the coding system to be used to encode your passphrases, since
+GnuPG treats them as a byte sequence, not as a character sequence.
+
+@defvar pgg-passphrase-coding-system
+Coding system used to encode passphrase.
+@end defvar
+
@node Default user identity
@section Default user identity
@@ -466,12 +475,16 @@ and @var{end}.
If non-@code{nil}, don't check the checksum of the packets.
@end defvar
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
@node Function Index
-@chapter Function Index
+@unnumbered Function Index
@printindex fn
@node Variable Index
-@chapter Variable Index
+@unnumbered Variable Index
@printindex vr
@summarycontents
diff --git a/man/programs.texi b/man/programs.texi
index 5283a1de288..2472d7daabe 100644
--- a/man/programs.texi
+++ b/man/programs.texi
@@ -338,13 +338,13 @@ buffer.
@findex which-function-mode
@vindex which-func-modes
- To enable (or disable) Which Function mode, use the command @kbd{M-x
-which-function-mode}. This command is global; it applies to all
-buffers, both existing ones and those yet to be created. However, it
-takes effect only in certain major modes, those listed in the value of
-@code{which-func-modes}. If the value is @code{t}, then Which Function
-mode applies to all major modes that know how to support it---in other
-words, all the major modes that support Imenu.
+ To either enable or disable Which Function mode, use the command
+@kbd{M-x which-function-mode}. This command is global; it applies to
+all buffers, both existing ones and those yet to be created. However,
+it takes effect only in certain major modes, those listed in the value
+of @code{which-func-modes}. If the value is @code{t}, then Which
+Function mode applies to all major modes that know how to support
+it---in other words, all the major modes that support Imenu.
@node Program Indent
@section Indentation for Programs
diff --git a/man/rcirc.texi b/man/rcirc.texi
index 7b2d6b1c945..6d5319cef4e 100644
--- a/man/rcirc.texi
+++ b/man/rcirc.texi
@@ -55,6 +55,7 @@ just one other user.
* Basics::
* Reference::
* Hacking and Tweaking::
+* GNU Free Documentation License::
* Key Index::
* Variable Index::
* Index::
@@ -589,7 +590,7 @@ activation of this mode:
(rcirc-track-minor-mode 1)))
@end example
-@node Hacking and Tweaking, Key Index, Reference, Top
+@node Hacking and Tweaking, GNU Free Documentation License, Reference, Top
@chapter Hacking and Tweaking
@cindex hacking and tweaking
@@ -743,7 +744,12 @@ The real answer, therefore, is a @code{/reconnect} command:
channels))))
@end smallexample
-@node Key Index, Variable Index, Hacking and Tweaking, Top
+@node GNU Free Documentation License, Key Index, Hacking and Tweaking, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+
+@node Key Index, Variable Index, GNU Free Documentation License, Top
@unnumbered Key Index
@printindex ky
diff --git a/man/reftex.texi b/man/reftex.texi
index 2b77b26c066..a2c0a9689b2 100644
--- a/man/reftex.texi
+++ b/man/reftex.texi
@@ -10,12 +10,14 @@
@set VERSION 4.31
@set EDITION 4.31
@set DATE February 2006
-@set AUCTEXSITE @uref{http://www.nongnu.org/auctex/,AUCTeX distribution site}
-@set MAINTAINERSITE @uref{http://www.astro.uva.nl/~dominik/Tools/,maintainers webpage}
-@set MAINTAINER Carsten Dominik
-@set MAINTAINEREMAIL @email{dominik@@science.uva.nl}
-@set MAINTAINERCONTACT @uref{mailto:dominik@@science.uva.nl,contact the maintainer}
-@set XEMACSFTP @uref{ftp://ftp.xemacs.org/pub/xemacs/packages/,XEmacs ftp site}.
+@set AUCTEXSITE @uref{http://www.gnu.org/software/auctex/,AUCTeX distribution site}
+@set MAINTAINERSITE @uref{http://www.gnu.org/software/auctex/reftex.html,Ref@TeX{} web page}
+@set MAINTAINERCONTACT @uref{mailto:auctex-devel@@gnu.org,contact the maintainers}
+@set MAINTAINER the AUC@TeX{} project
+@set SUPPORTADDRESS AUC@TeX{} user mailing list (@email{auctex@@gnu.org})
+@set DEVELADDRESS AUC@TeX{} developer mailing list (@email{auctex-devel@@gnu.org})
+@set BUGADDRESS AUC@TeX{} bug mailing list (@email{bug-auctex@@gnu.org})
+@set XEMACSFTP @uref{ftp://ftp.xemacs.org/pub/xemacs/packages/,XEmacs ftp site}
@c %**end of header
@copying
@@ -114,6 +116,7 @@ needed.
* Options:: How to extend and configure RefTeX.
* Keymaps and Hooks:: For customization.
* Changes:: A List of recent changes to RefTeX.
+* GNU Free Documentation License:: The license for this documentation.
The Index
@@ -3491,25 +3494,23 @@ With @i{Viper} mode prior to Vipers version 3.01, you need to protect
@cindex @code{http}, @b{Ref@TeX{}} home page
@cindex @code{ftp}, @b{Ref@TeX{}} site
-@b{Ref@TeX{}} was written by @i{Carsten Dominik}
+Ref@TeX{} was written by @i{Carsten Dominik}
@email{dominik@@science.uva.nl}, with contributions by @i{Stephen
-Eglen}. @b{Ref@TeX{}} is currently maintained by
-
-@noindent
-Carsten Dominik <dominik@@science.uva.nl>
-
-If you have questions about @b{Ref@TeX{}}, there are several Usenet
-groups which have competent readers: @code{comp.emacs},
-@code{gnu.emacs.help}, @code{comp.emacs.xemacs}, @code{comp.text.tex},
-@code{de.comp.text.tex}. You can also write directly to the
-maintainer.
-
-If you find a bug in @b{Ref@TeX{}} or its documentation, or if you want
-to contribute code or ideas, please @value{MAINTAINERCONTACT}. Remember
-to provide all necessary information such as version numbers of Emacs
-and @b{Ref@TeX{}}, and the relevant part of your configuration in
-@file{.emacs}. When reporting a bug which throws an exception, please
-include a backtrace if you know how to produce one.
+Eglen}. Ref@TeX{} is currently maintained by @value{MAINTAINER}, see
+the @value{MAINTAINERSITE} for detailed information.
+
+If you have questions about Ref@TeX{}, you can send email to the
+@value{SUPPORTADDRESS}. If you want to contribute code or ideas, write
+to the @value{DEVELADDRESS}. And in the rare case of finding a bug,
+please use @kbd{M-x reftex-report-bug @key{RET}} which will prepare a
+bug report with useful information about your setup. Remember to add
+essential information like a recipe for reproducing the bug, what you
+expected to happen, and what actually happened. Send the bug report to
+the @value{BUGADDRESS}.
+
+There are also several Usenet groups which have competent readers who
+might be able to help: @code{comp.emacs}, @code{gnu.emacs.help},
+@code{comp.emacs.xemacs}, and @code{comp.text.tex}.
@b{Ref@TeX{}} is bundled and pre-installed with Emacs since version 20.2.
It was also bundled and pre-installed with XEmacs 19.16--20.x. XEmacs
@@ -5149,7 +5150,7 @@ their own keymaps and mode hooks. See the respective sections. There
are many more hooks which are described in the relevant sections about
options for a specific part of @b{Ref@TeX{}}.
-@node Changes, , Keymaps and Hooks, Top
+@node Changes, GNU Free Documentation License, Keymaps and Hooks, Top
@chapter Changes
@cindex Changes
@@ -5880,11 +5881,11 @@ new labels.
released on 7 Jan 1997.
@end itemize
+@node GNU Free Documentation License, Index, Changes, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
-
-
-
-@node Index, , , Top
+@node Index, , GNU Free Documentation License, Top
@unnumbered Index
@printindex cp
diff --git a/man/rmail.texi b/man/rmail.texi
index 2e766ab5ec0..7c36a31ff18 100644
--- a/man/rmail.texi
+++ b/man/rmail.texi
@@ -107,6 +107,8 @@ Scroll forward (@code{scroll-up}).
Scroll backward (@code{scroll-down}).
@item .
Scroll to start of message (@code{rmail-beginning-of-message}).
+@item /
+Scroll to end of message (@code{rmail-end-of-message}).
@end table
@kindex SPC @r{(Rmail)}
@@ -116,11 +118,15 @@ through it by screenfuls, Rmail makes @key{SPC} and @key{DEL} synonyms of
@kbd{C-v} (@code{scroll-up}) and @kbd{M-v} (@code{scroll-down})
@kindex . @r{(Rmail)}
+@kindex / @r{(Rmail)}
@findex rmail-beginning-of-message
+@findex rmail-end-of-message
The command @kbd{.} (@code{rmail-beginning-of-message}) scrolls back to the
beginning of the selected message. This is not quite the same as @kbd{M-<}:
for one thing, it does not set the mark; for another, it resets the buffer
-boundaries to the current message if you have changed them.
+boundaries to the current message if you have changed them. Similarly,
+the command @kbd{/} (@code{rmail-end-of-message}) scrolls forward to the end
+of the selected message.
@node Rmail Motion
@section Moving Among Messages
@@ -1376,9 +1382,10 @@ then Rmail will ask you for the password to use.
Otherwise, Rmail assumes no password is required.
@end enumerate
- For compatibility with previous versions, @code{rmail-pop-password}
-and @code{rmail-pop-password-required} may be used instead of
-@code{rmail-remote-password} and @code{rmail-remote-password-required}.
+ For compatibility with previous versions, the variables
+@code{rmail-pop-password} and @code{rmail-pop-password-required} may
+be used instead of @code{rmail-remote-password} and
+@code{rmail-remote-password-required}.
@vindex rmail-movemail-flags
If you need to pass additional command-line flags to @code{movemail},
diff --git a/man/sc.texi b/man/sc.texi
index d3f7264f4cc..5ac3b882ccd 100644
--- a/man/sc.texi
+++ b/man/sc.texi
@@ -1,5 +1,5 @@
\input texinfo @comment -*-texinfo-*-
-@comment 3.47
+@comment 3.48
@comment %**start of header (This is for running Texinfo on a region.)
@setfilename ../info/sc
@settitle Supercite Version 3.1 User's Manual
@@ -52,8 +52,8 @@ license to the document, as described in section 6 of the license.
@sp 2
@center @titlefont{Supercite Version 3.1}
@sp 4
-@center Manual Revision: 3.47
-@center August 1993
+@center Manual Revision: 3.48
+@center April 2007
@sp 5
@center Barry A@. Warsaw
@center @t{bwarsaw@@cen.com}
@@ -86,6 +86,7 @@ subsystems. The manual is divided into the following chapters.
* Thanks and History::
* The Supercite Mailing List::
+* GNU Free Documentation License::
* Concept Index::
* Command Index::
* Key Index::
@@ -2444,7 +2445,7 @@ for adding the magic lisp to their code to support this.
All who have helped and contributed have been greatly appreciated.
-@node The Supercite Mailing List, Concept Index, Thanks and History, Top
+@node The Supercite Mailing List, GNU Free Documentation License, Thanks and History, Top
@comment node-name, next, previous, up
@cindex supercite mailing list address
@cindex mailing list address
@@ -2481,7 +2482,11 @@ will set up a mail buffer automatically with this address on the
supercite-help@@python.org
@end example
-@node Concept Index, Command Index, The Supercite Mailing List, Top
+@node GNU Free Documentation License, Concept Index, The Supercite Mailing List, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Concept Index, Command Index, GNU Free Documentation License, Top
@comment node-name, next, previous, up
@unnumbered Concept Index
@printindex cp
diff --git a/man/sending.texi b/man/sending.texi
index a130a58816a..5d6a7c83f3e 100644
--- a/man/sending.texi
+++ b/man/sending.texi
@@ -240,11 +240,11 @@ yourself, Emacs puts in one for you. The variable
@item nil
Use just the email address, as in @samp{king@@grassland.com}.
@item parens
-Use both email address and full name, as in @samp{king@@grassland.com (Elvis
-Parsley)}.
+Use both email address and full name, as in:@*
+@samp{king@@grassland.com (Elvis Parsley)}.
@item angles
-Use both email address and full name, as in @samp{Elvis Parsley
-<king@@grassland.com>}.
+Use both email address and full name, as in:@*
+@samp{Elvis Parsley <king@@grassland.com>}.
@item system-default
Allow the system to insert the @samp{From} field.
@end table
diff --git a/man/ses.texi b/man/ses.texi
index ff4b47f2ee4..089e13a9cc0 100644
--- a/man/ses.texi
+++ b/man/ses.texi
@@ -77,6 +77,7 @@ To report bugs, send email to @email{jyavner@@member.fsf.org}.
* For Gurus:: Want to know @emph{even more}?
* Index:: Concept, Function and Variable Index
* Acknowledgements:: Acknowledgements
+* GNU Free Documentation License:: The license for this documentation.
@end menu
@c ===================================================================
@@ -929,7 +930,7 @@ cell.
@c ===================================================================
-@node Acknowledgements, , Index, Top
+@node Acknowledgements, GNU Free Documentation License, Index, Top
@chapter Acknowledgements
Coding by:
@@ -970,6 +971,10 @@ Jean-Philippe Theberge @email{jphil@@acs.pagesjaunes.fr}
@c ===================================================================
+@node GNU Free Documentation License, , Acknowledgements, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
@bye
@ignore
diff --git a/man/sieve.texi b/man/sieve.texi
index 5e11adcaac2..1030babd593 100644
--- a/man/sieve.texi
+++ b/man/sieve.texi
@@ -73,6 +73,7 @@ A good online Sieve resources is @uref{http://www.cyrusoft.com/sieve/}.
* Examples :: A few Sieve code snippets.
* Manage Sieve API :: Interfacing to the Manage Sieve Protocol API.
* Standards:: A summary of RFCs and working documents used.
+* GNU Free Documentation License:: The license for this documentation.
* Index:: Function and variable index.
@end menu
@@ -349,9 +350,12 @@ A Protocol for Remotely Managing Sieve Scripts
@end table
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@include doclicense.texi
@node Index
-@chapter Index
+@unnumbered Index
@printindex cp
@summarycontents
diff --git a/man/smtpmail.texi b/man/smtpmail.texi
index 860e06de0e1..644cd061b74 100644
--- a/man/smtpmail.texi
+++ b/man/smtpmail.texi
@@ -55,6 +55,7 @@ license to the document, as described in section 6 of the license.
* Queued delivery:: Sending mail without an internet connection.
* Server workarounds:: Mail servers with special requirements.
* Debugging:: Tracking down problems.
+* GNU Free Documentation License:: The license for this documentation.
Indices
@@ -403,6 +404,10 @@ cannot accept mail.
@end table
+@node GNU Free Documentation License
+@chapter GNU Free Documentation License
+@include doclicense.texi
+
@node Index
@chapter Index
diff --git a/man/speedbar.texi b/man/speedbar.texi
index 42f9f3dcc48..2a05993f569 100644
--- a/man/speedbar.texi
+++ b/man/speedbar.texi
@@ -82,6 +82,7 @@ on. @xref{Basic Navigation}.
* Minor Modes:: Additional minor modes such as Info and RMAIL.
* Customizing:: Changing speedbar behavior.
* Extending:: Extend speedbar for your own project.
+* GNU Free Documentation License:: The license for this documentation.
* Index::
@end menu
@@ -885,7 +886,7 @@ Set this to implement your own scanning or rescan safe functions with
state data.
@end table
-@node Extending, Index, Customizing, Top
+@node Extending, GNU Free Documentation License, Customizing, Top
@comment node-name, next, previous, up
@chapter Extending
@cindex extending
@@ -1241,7 +1242,12 @@ Two good values are @code{nil} and @code{statictag}.
@end defun
-@node Index, , Extending, Top
+@node GNU Free Documentation License, Index, Extending, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+
+@node Index, , GNU Free Documentation License, Top
@comment node-name, next, previous, up
@unnumbered Concept Index
@printindex cp
diff --git a/man/texinfo.tex b/man/texinfo.tex
index 302204c2721..f6ab675ce11 100644
--- a/man/texinfo.tex
+++ b/man/texinfo.tex
@@ -3,11 +3,11 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2006-11-08.17}
+\def\texinfoversion{2007-04-08.09}
%
% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-% 2007 Free Software Foundation, Inc.
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+% 2007 Free Software Foundation, Inc.
%
% This texinfo.tex file is free software; you can redistribute it and/or
% modify it under the terms of the GNU General Public License as
@@ -67,7 +67,7 @@
\everyjob{\message{[Texinfo version \texinfoversion]}%
\catcode`+=\active \catcode`\_=\active}
-\message{Basics,}
+
\chardef\other=12
% We never want plain's \outer definition of \+ in Texinfo.
@@ -1225,8 +1225,9 @@ where each line of input produces a line of output.}
% To handle parens, we must adopt a different approach, since parens are
% not active characters. hyperref.dtx (which has the same problem as
-% us) handles it with this amazing macro to replace tokens. I've
-% tinkered with it a little for texinfo, but it's definitely from there.
+% us) handles it with this amazing macro to replace tokens, with minor
+% changes for Texinfo. It is included here under the GPL by permission
+% from the author, Heiko Oberdiek.
%
% #1 is the tokens to replace.
% #2 is the replacement.
@@ -1262,7 +1263,8 @@ output) for that.)}
\ifpdf
\input pdfcolor
- \pdfcatalog{/PageMode /UseOutlines}%
+ \pdfcatalog{/PageMode /UseOutlines}
+ %
% #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
\def\dopdfimage#1#2#3{%
\def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
@@ -1279,20 +1281,15 @@ output) for that.)}
\openin 1 #1.pdf \ifeof 1
\errhelp = \nopdfimagehelp
\errmessage{Could not find image file #1 for pdf}%
- \else
- \gdef\pdfimgext{pdf}%
+ \else \gdef\pdfimgext{pdf}%
\fi
- \else
- \gdef\pdfimgext{JPG}%
+ \else \gdef\pdfimgext{JPG}%
\fi
- \else
- \gdef\pdfimgext{jpeg}%
+ \else \gdef\pdfimgext{jpeg}%
\fi
- \else
- \gdef\pdfimgext{jpg}%
+ \else \gdef\pdfimgext{jpg}%
\fi
- \else
- \gdef\pdfimgext{png}%
+ \else \gdef\pdfimgext{png}%
\fi
\closein 1
\endgroup
@@ -1314,21 +1311,25 @@ output) for that.)}
\ifnum\pdftexversion < 14 \else
\pdfrefximage \pdflastximage
\fi}
+ %
\def\pdfmkdest#1{{%
% We have to set dummies so commands such as @code, and characters
% such as \, aren't expanded when present in a section title.
- \atdummies
+ \indexnofonts
+ \turnoffactive
\activebackslashdouble
+ \makevalueexpandable
\def\pdfdestname{#1}%
\backslashparens\pdfdestname
- \pdfdest name{\pdfdestname} xyz%
- }}%
+ \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
+ }}
%
% used to mark target names; must be expandable.
- \def\pdfmkpgn#1{#1}%
+ \def\pdfmkpgn#1{#1}
%
\let\linkcolor = \Blue % was Cyan, but that seems light?
\def\endlink{\Black\pdfendlink}
+ %
% Adding outlines to PDF; macros for calculating structure of outlines
% come from Petr Olsak
\def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
@@ -1583,7 +1584,7 @@ output) for that.)}
% Definitions for a main text size of 11pt. This is the default in
% Texinfo.
%
-\def\definetextfontsizexi{
+\def\definetextfontsizexi{%
% Text fonts (11.2pt, magstep1).
\def\textnominalsize{11pt}
\edef\mainmagstep{\magstephalf}
@@ -3746,11 +3747,7 @@ output) for that.)}
%
\edef\writeto{\csname#1indfile\endcsname}%
%
- \ifvmode
- \dosubindsanitize
- \else
- \dosubindwrite
- \fi
+ \safewhatsit\dosubindwrite
}%
\fi
}
@@ -3787,13 +3784,13 @@ output) for that.)}
\temp
}
-% Take care of unwanted page breaks:
+% Take care of unwanted page breaks/skips around a whatsit:
%
% If a skip is the last thing on the list now, preserve it
% by backing up by \lastskip, doing the \write, then inserting
% the skip again. Otherwise, the whatsit generated by the
-% \write will make \lastskip zero. The result is that sequences
-% like this:
+% \write or \pdfdest will make \lastskip zero. The result is that
+% sequences like this:
% @end defun
% @tindex whatever
% @defun ...
@@ -3817,13 +3814,19 @@ output) for that.)}
%
\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
%
+\newskip\whatsitskip
+\newcount\whatsitpenalty
+%
% ..., ready, GO:
%
-\def\dosubindsanitize{%
+\def\safewhatsit#1{%
+\ifhmode
+ #1%
+\else
% \lastskip and \lastpenalty cannot both be nonzero simultaneously.
- \skip0 = \lastskip
+ \whatsitskip = \lastskip
\edef\lastskipmacro{\the\lastskip}%
- \count255 = \lastpenalty
+ \whatsitpenalty = \lastpenalty
%
% If \lastskip is nonzero, that means the last item was a
% skip. And since a skip is discardable, that means this
@@ -3832,10 +3835,10 @@ output) for that.)}
% breakpoint, therefore no \nobreak needed.
\ifx\lastskipmacro\zeroskipmacro
\else
- \vskip-\skip0
+ \vskip-\whatsitskip
\fi
%
- \dosubindwrite
+ #1%
%
\ifx\lastskipmacro\zeroskipmacro
% If \lastskip was zero, perhaps the last item was a penalty, and
@@ -3849,13 +3852,14 @@ output) for that.)}
% Description.
% would allow a break between the index-whatever whatsit
% and the "Description." paragraph.
- \ifnum\count255>9999 \penalty\count255 \fi
+ \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
\else
% On the other hand, if we had a nonzero \lastskip,
% this make-up glue would be preceded by a non-discardable item
% (the whatsit from the \write), so we must insert a \nobreak.
- \nobreak\vskip\skip0
+ \nobreak\vskip\whatsitskip
\fi
+\fi
}
% The index entry written in the file actually looks like
@@ -3898,6 +3902,7 @@ output) for that.)}
%
\smallfonts \rm
\tolerance = 9500
+ \plainfrenchspacing
\everypar = {}% don't want the \kern\-parindent from indentation suppression.
%
% See if the index file exists and is nonempty.
@@ -4167,6 +4172,34 @@ output) for that.)}
%
% All done with double columns.
\def\enddoublecolumns{%
+ % The following penalty ensures that the page builder is exercised
+ % _before_ we change the output routine. This is necessary in the
+ % following situation:
+ %
+ % The last section of the index consists only of a single entry.
+ % Before this section, \pagetotal is less than \pagegoal, so no
+ % break occurs before the last section starts. However, the last
+ % section, consisting of \initial and the single \entry, does not
+ % fit on the page and has to be broken off. Without the following
+ % penalty the page builder will not be exercised until \eject
+ % below, and by that time we'll already have changed the output
+ % routine to the \balancecolumns version, so the next-to-last
+ % double-column page will be processed with \balancecolumns, which
+ % is wrong: The two columns will go to the main vertical list, with
+ % the broken-off section in the recent contributions. As soon as
+ % the output routine finishes, TeX starts reconsidering the page
+ % break. The two columns and the broken-off section both fit on the
+ % page, because the two columns now take up only half of the page
+ % goal. When TeX sees \eject from below which follows the final
+ % section, it invokes the new output routine that we've set after
+ % \balancecolumns below; \onepageout will try to fit the two columns
+ % and the final section into the vbox of \pageheight (see
+ % \pagebody), causing an overfull box.
+ %
+ % Note that glue won't work here, because glue does not exercise the
+ % page builder, unlike penalties (see The TeXbook, pp. 280-281).
+ \penalty0
+ %
\output = {%
% Split the last of the double-column material. Leave it on the
% current page, no automatic page break.
@@ -5283,12 +5316,18 @@ output) for that.)}
\let\SETdispenvsize\relax
\def\setnormaldispenv{%
\ifx\SETdispenvsize\smallword
+ % end paragraph for sake of leading, in case document has no blank
+ % line. This is redundant with what happens in \aboveenvbreak, but
+ % we need to do it before changing the fonts, and it's inconvenient
+ % to change the fonts afterward.
+ \ifnum \lastpenalty=10000 \else \endgraf \fi
\smallexamplefonts \rm
\fi
}
\def\setsmalldispenv{%
\ifx\SETdispenvsize\nosmallword
\else
+ \ifnum \lastpenalty=10000 \else \endgraf \fi
\smallexamplefonts \rm
\fi
}
@@ -5589,27 +5628,35 @@ output) for that.)}
\endgroup
}
+
\message{defuns,}
% @defun etc.
\newskip\defbodyindent \defbodyindent=.4in
\newskip\defargsindent \defargsindent=50pt
\newskip\deflastargmargin \deflastargmargin=18pt
+\newcount\defunpenalty
% Start the processing of @deffn:
\def\startdefun{%
\ifnum\lastpenalty<10000
\medbreak
+ \defunpenalty=10003 % Will keep this @deffn together with the
+ % following @def command, see below.
\else
% If there are two @def commands in a row, we'll have a \nobreak,
% which is there to keep the function description together with its
% header. But if there's nothing but headers, we need to allow a
% break somewhere. Check specifically for penalty 10002, inserted
- % by \defargscommonending, instead of 10000, since the sectioning
+ % by \printdefunline, instead of 10000, since the sectioning
% commands also insert a nobreak penalty, and we don't want to allow
% a break between a section heading and a defun.
- %
- \ifnum\lastpenalty=10002 \penalty2000 \fi
+ %
+ % As a minor refinement, we avoid "club" headers by signalling
+ % with penalty of 10003 after the very first @deffn in the
+ % sequence (see above), and penalty of 10002 after any following
+ % @def command.
+ \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
%
% Similarly, after a section heading, do not allow a break.
% But do insert the glue.
@@ -5627,7 +5674,7 @@ output) for that.)}
%
% As above, allow line break if we have multiple x headers in a row.
% It's not a great place, though.
- \ifnum\lastpenalty=10002 \penalty3000 \fi
+ \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
%
% And now, it's time to reuse the body of the original defun:
\expandafter\gobbledefun#1%
@@ -5645,7 +5692,7 @@ output) for that.)}
\advance\rightskip by 0pt plus 1fil
\endgraf
\nobreak\vskip -\parskip
- \penalty 10002 % signal to \startdefun and \dodefunx
+ \penalty\defunpenalty % signal to \startdefun and \dodefunx
% Some of the @defun-type tags do not enable magic parentheses,
% rendering the following check redundant. But we don't optimize.
\checkparencounts
@@ -6245,7 +6292,6 @@ output) for that.)}
\message{cross references,}
\newwrite\auxfile
-
\newif\ifhavexrefs % True if xref values are known.
\newif\ifwarnedxrefs % True if we warned once that they aren't known.
@@ -6312,7 +6358,7 @@ output) for that.)}
\toks0 = \expandafter{\thissection}%
\immediate \writexrdef{title}{\the\toks0 }%
\immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
- \writexrdef{pg}{\folio}% will be written later, during \shipout
+ \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout
}%
\fi
}
@@ -6358,7 +6404,8 @@ output) for that.)}
\ifpdf
\leavevmode
\getfilename{#4}%
- {\turnoffactive
+ {\indexnofonts
+ \turnoffactive
% See comments at \activebackslashdouble.
{\activebackslashdouble \xdef\pdfxrefdest{#1}%
\backslashparens\pdfxrefdest}%
@@ -6505,10 +6552,18 @@ output) for that.)}
% collisions). But if this is a float type, we have more work to do.
%
\def\xrdef#1#2{%
- \expandafter\gdef\csname XR#1\endcsname{#2}% remember this xref value.
+ {% The node name might contain 8-bit characters, which in our current
+ % implementation are changed to commands like @'e. Don't let these
+ % mess up the control sequence name.
+ \indexnofonts
+ \turnoffactive
+ \xdef\safexrefname{#1}%
+ }%
+ %
+ \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
%
% Was that xref control sequence that we just defined for a float?
- \expandafter\iffloat\csname XR#1\endcsname
+ \expandafter\iffloat\csname XR\safexrefname\endcsname
% it was a float, and we have the (safe) float type in \iffloattype.
\expandafter\let\expandafter\floatlist
\csname floatlist\iffloattype\endcsname
@@ -6523,7 +6578,8 @@ output) for that.)}
%
% Remember this xref in the control sequence \floatlistFLOATTYPE,
% for later use in \listoffloats.
- \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0{#1}}%
+ \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
+ {\safexrefname}}%
\fi
}
@@ -6627,6 +6683,7 @@ output) for that.)}
\input\jobname.#1
\endgroup}
+
\message{insertions,}
% including footnotes.
@@ -7101,8 +7158,8 @@ output) for that.)}
\writeentry
}}
+
\message{localization,}
-% and i18n.
% @documentlanguage is usually given very early, just after
% @setfilename. If done too late, it may not override everything
@@ -7126,14 +7183,809 @@ output) for that.)}
is empty. Maybe you need to install it? In the current directory
should work if nowhere else does.}
+% Set the catcode of characters 128 through 255 to the specified number.
+%
+\def\setnonasciicharscatcode#1{%
+ \count255=128
+ \loop\ifnum\count255<256
+ \global\catcode\count255=#1
+ \advance\count255 by 1
+ \repeat
+}
-% @documentencoding should change something in TeX eventually, most
-% likely, but for now just recognize it.
-\let\documentencoding = \comment
+% @documentencoding sets the definition of non-ASCII characters
+% according to the specified encoding.
+%
+\parseargdef\documentencoding{%
+ % Encoding being declared for the document.
+ \def\declaredencoding{\csname #1.enc\endcsname}%
+ %
+ % Supported encodings: names converted to tokens in order to be able
+ % to compare them with \ifx.
+ \def\ascii{\csname US-ASCII.enc\endcsname}%
+ \def\latnine{\csname ISO-8859-15.enc\endcsname}%
+ \def\latone{\csname ISO-8859-1.enc\endcsname}%
+ \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
+ \def\utfeight{\csname UTF-8.enc\endcsname}%
+ %
+ \ifx \declaredencoding \ascii
+ \asciichardefs
+ %
+ \else \ifx \declaredencoding \lattwo
+ \setnonasciicharscatcode\active
+ \lattwochardefs
+ %
+ \else \ifx \declaredencoding \latone
+ \setnonasciicharscatcode\active
+ \latonechardefs
+ %
+ \else \ifx \declaredencoding \latnine
+ \setnonasciicharscatcode\active
+ \latninechardefs
+ %
+ \else \ifx \declaredencoding \utfeight
+ \setnonasciicharscatcode\active
+ \utfeightchardefs
+ %
+ \else
+ \message{Unknown document encoding #1, ignoring.}%
+ %
+ \fi % utfeight
+ \fi % latnine
+ \fi % latone
+ \fi % lattwo
+ \fi % ascii
+}
+% A message to be logged when using a character that isn't available
+% the default font encoding (OT1).
+%
+\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
+
+% Take account of \c (plain) vs. \, (Texinfo) difference.
+\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
+
+% First, make active non-ASCII characters in order for them to be
+% correctly categorized when TeX reads the replacement text of
+% macros containing the character definitions.
+\setnonasciicharscatcode\active
+%
+% Latin1 (ISO-8859-1) character definitions.
+\def\latonechardefs{%
+ \gdef^^a0{~}
+ \gdef^^a1{\exclamdown}
+ \gdef^^a2{\missingcharmsg{CENT SIGN}}
+ \gdef^^a3{{\pounds}}
+ \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+ \gdef^^a5{\missingcharmsg{YEN SIGN}}
+ \gdef^^a6{\missingcharmsg{BROKEN BAR}}
+ \gdef^^a7{\S}
+ \gdef^^a8{\"{}}
+ \gdef^^a9{\copyright}
+ \gdef^^aa{\ordf}
+ \gdef^^ab{\missingcharmsg{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK}}
+ \gdef^^ac{$\lnot$}
+ \gdef^^ad{\-}
+ \gdef^^ae{\registeredsymbol}
+ \gdef^^af{\={}}
+ %
+ \gdef^^b0{\textdegree}
+ \gdef^^b1{$\pm$}
+ \gdef^^b2{$^2$}
+ \gdef^^b3{$^3$}
+ \gdef^^b4{\'{}}
+ \gdef^^b5{$\mu$}
+ \gdef^^b6{\P}
+ %
+ \gdef^^b7{$^.$}
+ \gdef^^b8{\cedilla\ }
+ \gdef^^b9{$^1$}
+ \gdef^^ba{\ordm}
+ %
+ \gdef^^bb{\missingcharmsg{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK}}
+ \gdef^^bc{$1\over4$}
+ \gdef^^bd{$1\over2$}
+ \gdef^^be{$3\over4$}
+ \gdef^^bf{\questiondown}
+ %
+ \gdef^^c0{\`A}
+ \gdef^^c1{\'A}
+ \gdef^^c2{\^A}
+ \gdef^^c3{\~A}
+ \gdef^^c4{\"A}
+ \gdef^^c5{\ringaccent A}
+ \gdef^^c6{\AE}
+ \gdef^^c7{\cedilla C}
+ \gdef^^c8{\`E}
+ \gdef^^c9{\'E}
+ \gdef^^ca{\^E}
+ \gdef^^cb{\"E}
+ \gdef^^cc{\`I}
+ \gdef^^cd{\'I}
+ \gdef^^ce{\^I}
+ \gdef^^cf{\"I}
+ %
+ \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER ETH}}
+ \gdef^^d1{\~N}
+ \gdef^^d2{\`O}
+ \gdef^^d3{\'O}
+ \gdef^^d4{\^O}
+ \gdef^^d5{\~O}
+ \gdef^^d6{\"O}
+ \gdef^^d7{$\times$}
+ \gdef^^d8{\O}
+ \gdef^^d9{\`U}
+ \gdef^^da{\'U}
+ \gdef^^db{\^U}
+ \gdef^^dc{\"U}
+ \gdef^^dd{\'Y}
+ \gdef^^de{\missingcharmsg{LATIN CAPITAL LETTER THORN}}
+ \gdef^^df{\ss}
+ %
+ \gdef^^e0{\`a}
+ \gdef^^e1{\'a}
+ \gdef^^e2{\^a}
+ \gdef^^e3{\~a}
+ \gdef^^e4{\"a}
+ \gdef^^e5{\ringaccent a}
+ \gdef^^e6{\ae}
+ \gdef^^e7{\cedilla c}
+ \gdef^^e8{\`e}
+ \gdef^^e9{\'e}
+ \gdef^^ea{\^e}
+ \gdef^^eb{\"e}
+ \gdef^^ec{\`{\dotless i}}
+ \gdef^^ed{\'{\dotless i}}
+ \gdef^^ee{\^{\dotless i}}
+ \gdef^^ef{\"{\dotless i}}
+ %
+ \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER ETH}}
+ \gdef^^f1{\~n}
+ \gdef^^f2{\`o}
+ \gdef^^f3{\'o}
+ \gdef^^f4{\^o}
+ \gdef^^f5{\~o}
+ \gdef^^f6{\"o}
+ \gdef^^f7{$\div$}
+ \gdef^^f8{\o}
+ \gdef^^f9{\`u}
+ \gdef^^fa{\'u}
+ \gdef^^fb{\^u}
+ \gdef^^fc{\"u}
+ \gdef^^fd{\'y}
+ \gdef^^fe{\missingcharmsg{LATIN SMALL LETTER THORN}}
+ \gdef^^ff{\"y}
+}
+
+% Latin9 (ISO-8859-15) encoding character definitions.
+\def\latninechardefs{%
+ % Encoding is almost identical to Latin1.
+ \latonechardefs
+ %
+ \gdef^^a4{\euro}
+ \gdef^^a6{\v S}
+ \gdef^^a8{\v s}
+ \gdef^^b4{\v Z}
+ \gdef^^b8{\v z}
+ \gdef^^bc{\OE}
+ \gdef^^bd{\oe}
+ \gdef^^be{\"Y}
+}
+
+% Latin2 (ISO-8859-2) character definitions.
+\def\lattwochardefs{%
+ \gdef^^a0{~}
+ \gdef^^a1{\missingcharmsg{LATIN CAPITAL LETTER A WITH OGONEK}}
+ \gdef^^a2{\u{}}
+ \gdef^^a3{\L}
+ \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+ \gdef^^a5{\v L}
+ \gdef^^a6{\'S}
+ \gdef^^a7{\S}
+ \gdef^^a8{\"{}}
+ \gdef^^a9{\v S}
+ \gdef^^aa{\cedilla S}
+ \gdef^^ab{\v T}
+ \gdef^^ac{\'Z}
+ \gdef^^ad{\-}
+ \gdef^^ae{\v Z}
+ \gdef^^af{\dotaccent Z}
+ %
+ \gdef^^b0{\textdegree}
+ \gdef^^b1{\missingcharmsg{LATIN SMALL LETTER A WITH OGONEK}}
+ \gdef^^b2{\missingcharmsg{OGONEK}}
+ \gdef^^b3{\l}
+ \gdef^^b4{\'{}}
+ \gdef^^b5{\v l}
+ \gdef^^b6{\'s}
+ \gdef^^b7{\v{}}
+ \gdef^^b8{\cedilla\ }
+ \gdef^^b9{\v s}
+ \gdef^^ba{\cedilla s}
+ \gdef^^bb{\v t}
+ \gdef^^bc{\'z}
+ \gdef^^bd{\H{}}
+ \gdef^^be{\v z}
+ \gdef^^bf{\dotaccent z}
+ %
+ \gdef^^c0{\'R}
+ \gdef^^c1{\'A}
+ \gdef^^c2{\^A}
+ \gdef^^c3{\u A}
+ \gdef^^c4{\"A}
+ \gdef^^c5{\'L}
+ \gdef^^c6{\'C}
+ \gdef^^c7{\cedilla C}
+ \gdef^^c8{\v C}
+ \gdef^^c9{\'E}
+ \gdef^^ca{\missingcharmsg{LATIN CAPITAL LETTER E WITH OGONEK}}
+ \gdef^^cb{\"E}
+ \gdef^^cc{\v E}
+ \gdef^^cd{\'I}
+ \gdef^^ce{\^I}
+ \gdef^^cf{\v D}
+ %
+ \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER D WITH STROKE}}
+ \gdef^^d1{\'N}
+ \gdef^^d2{\v N}
+ \gdef^^d3{\'O}
+ \gdef^^d4{\^O}
+ \gdef^^d5{\H O}
+ \gdef^^d6{\"O}
+ \gdef^^d7{$\times$}
+ \gdef^^d8{\v R}
+ \gdef^^d9{\ringaccent U}
+ \gdef^^da{\'U}
+ \gdef^^db{\H U}
+ \gdef^^dc{\"U}
+ \gdef^^dd{\'Y}
+ \gdef^^de{\cedilla T}
+ \gdef^^df{\ss}
+ %
+ \gdef^^e0{\'r}
+ \gdef^^e1{\'a}
+ \gdef^^e2{\^a}
+ \gdef^^e3{\u a}
+ \gdef^^e4{\"a}
+ \gdef^^e5{\'l}
+ \gdef^^e6{\'c}
+ \gdef^^e7{\cedilla c}
+ \gdef^^e8{\v c}
+ \gdef^^e9{\'e}
+ \gdef^^ea{\missingcharmsg{LATIN SMALL LETTER E WITH OGONEK}}
+ \gdef^^eb{\"e}
+ \gdef^^ec{\v e}
+ \gdef^^ed{\'\i}
+ \gdef^^ee{\^\i}
+ \gdef^^ef{\v d}
+ %
+ \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER D WITH STROKE}}
+ \gdef^^f1{\'n}
+ \gdef^^f2{\v n}
+ \gdef^^f3{\'o}
+ \gdef^^f4{\^o}
+ \gdef^^f5{\H o}
+ \gdef^^f6{\"o}
+ \gdef^^f7{$\div$}
+ \gdef^^f8{\v r}
+ \gdef^^f9{\ringaccent u}
+ \gdef^^fa{\'u}
+ \gdef^^fb{\H u}
+ \gdef^^fc{\"u}
+ \gdef^^fd{\'y}
+ \gdef^^fe{\cedilla t}
+ \gdef^^ff{\dotaccent{}}
+}
+
+% UTF-8 character definitions.
+%
+% This code to support UTF-8 is based on LaTeX's utf8.def, with some
+% changes for Texinfo conventions. It is included here under the GPL by
+% permission from Frank Mittelbach and the LaTeX team.
+%
+\newcount\countUTFx
+\newcount\countUTFy
+\newcount\countUTFz
-% Page size parameters.
+\gdef\UTFviiiTwoOctets#1#2{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\endcsname}
+%
+\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
%
+\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
+ \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
+
+\gdef\UTFviiiDefined#1{%
+ \ifx #1\relax
+ \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
+ \else
+ \expandafter #1%
+ \fi
+}
+
+\begingroup
+ \catcode`\~13
+ \catcode`\"12
+
+ \def\UTFviiiLoop{%
+ \global\catcode\countUTFx\active
+ \uccode`\~\countUTFx
+ \uppercase\expandafter{\UTFviiiTmp}%
+ \advance\countUTFx by 1
+ \ifnum\countUTFx < \countUTFy
+ \expandafter\UTFviiiLoop
+ \fi}
+
+ \countUTFx = "C2
+ \countUTFy = "E0
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
+ \UTFviiiLoop
+
+ \countUTFx = "E0
+ \countUTFy = "F0
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
+ \UTFviiiLoop
+
+ \countUTFx = "F0
+ \countUTFy = "F4
+ \def\UTFviiiTmp{%
+ \xdef~{\noexpand\UTFviiiFourOctets\string~}}
+ \UTFviiiLoop
+\endgroup
+
+\begingroup
+ \catcode`\"=12
+ \catcode`\<=12
+ \catcode`\.=12
+ \catcode`\,=12
+ \catcode`\;=12
+ \catcode`\!=12
+ \catcode`\~=13
+
+ \gdef\DeclareUnicodeCharacter#1#2{%
+ \countUTFz = "#1\relax
+ \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+ \begingroup
+ \parseXMLCharref
+ \def\UTFviiiTwoOctets##1##2{%
+ \csname u8:##1\string ##2\endcsname}%
+ \def\UTFviiiThreeOctets##1##2##3{%
+ \csname u8:##1\string ##2\string ##3\endcsname}%
+ \def\UTFviiiFourOctets##1##2##3##4{%
+ \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter
+ \gdef\UTFviiiTmp{#2}%
+ \endgroup}
+
+ \gdef\parseXMLCharref{%
+ \ifnum\countUTFz < "A0\relax
+ \errhelp = \EMsimple
+ \errmessage{Cannot define Unicode char value < 00A0}%
+ \else\ifnum\countUTFz < "800\relax
+ \parseUTFviiiA,%
+ \parseUTFviiiB C\UTFviiiTwoOctets.,%
+ \else\ifnum\countUTFz < "10000\relax
+ \parseUTFviiiA;%
+ \parseUTFviiiA,%
+ \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
+ \else
+ \parseUTFviiiA;%
+ \parseUTFviiiA,%
+ \parseUTFviiiA!%
+ \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
+ \fi\fi\fi
+ }
+
+ \gdef\parseUTFviiiA#1{%
+ \countUTFx = \countUTFz
+ \divide\countUTFz by 64
+ \countUTFy = \countUTFz
+ \multiply\countUTFz by 64
+ \advance\countUTFx by -\countUTFz
+ \advance\countUTFx by 128
+ \uccode `#1\countUTFx
+ \countUTFz = \countUTFy}
+
+ \gdef\parseUTFviiiB#1#2#3#4{%
+ \advance\countUTFz by "#10\relax
+ \uccode `#3\countUTFz
+ \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
+\endgroup
+
+\def\utfeightchardefs{%
+ \DeclareUnicodeCharacter{00A0}{\tie}
+ \DeclareUnicodeCharacter{00A1}{\exclamdown}
+ \DeclareUnicodeCharacter{00A3}{\pounds}
+ \DeclareUnicodeCharacter{00A8}{\"{ }}
+ \DeclareUnicodeCharacter{00A9}{\copyright}
+ \DeclareUnicodeCharacter{00AA}{\ordf}
+ \DeclareUnicodeCharacter{00AD}{\-}
+ \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
+ \DeclareUnicodeCharacter{00AF}{\={ }}
+
+ \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
+ \DeclareUnicodeCharacter{00B4}{\'{ }}
+ \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
+ \DeclareUnicodeCharacter{00BA}{\ordm}
+ \DeclareUnicodeCharacter{00BF}{\questiondown}
+
+ \DeclareUnicodeCharacter{00C0}{\`A}
+ \DeclareUnicodeCharacter{00C1}{\'A}
+ \DeclareUnicodeCharacter{00C2}{\^A}
+ \DeclareUnicodeCharacter{00C3}{\~A}
+ \DeclareUnicodeCharacter{00C4}{\"A}
+ \DeclareUnicodeCharacter{00C5}{\AA}
+ \DeclareUnicodeCharacter{00C6}{\AE}
+ \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
+ \DeclareUnicodeCharacter{00C8}{\`E}
+ \DeclareUnicodeCharacter{00C9}{\'E}
+ \DeclareUnicodeCharacter{00CA}{\^E}
+ \DeclareUnicodeCharacter{00CB}{\"E}
+ \DeclareUnicodeCharacter{00CC}{\`I}
+ \DeclareUnicodeCharacter{00CD}{\'I}
+ \DeclareUnicodeCharacter{00CE}{\^I}
+ \DeclareUnicodeCharacter{00CF}{\"I}
+
+ \DeclareUnicodeCharacter{00D1}{\~N}
+ \DeclareUnicodeCharacter{00D2}{\`O}
+ \DeclareUnicodeCharacter{00D3}{\'O}
+ \DeclareUnicodeCharacter{00D4}{\^O}
+ \DeclareUnicodeCharacter{00D5}{\~O}
+ \DeclareUnicodeCharacter{00D6}{\"O}
+ \DeclareUnicodeCharacter{00D8}{\O}
+ \DeclareUnicodeCharacter{00D9}{\`U}
+ \DeclareUnicodeCharacter{00DA}{\'U}
+ \DeclareUnicodeCharacter{00DB}{\^U}
+ \DeclareUnicodeCharacter{00DC}{\"U}
+ \DeclareUnicodeCharacter{00DD}{\'Y}
+ \DeclareUnicodeCharacter{00DF}{\ss}
+
+ \DeclareUnicodeCharacter{00E0}{\`a}
+ \DeclareUnicodeCharacter{00E1}{\'a}
+ \DeclareUnicodeCharacter{00E2}{\^a}
+ \DeclareUnicodeCharacter{00E3}{\~a}
+ \DeclareUnicodeCharacter{00E4}{\"a}
+ \DeclareUnicodeCharacter{00E5}{\aa}
+ \DeclareUnicodeCharacter{00E6}{\ae}
+ \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
+ \DeclareUnicodeCharacter{00E8}{\`e}
+ \DeclareUnicodeCharacter{00E9}{\'e}
+ \DeclareUnicodeCharacter{00EA}{\^e}
+ \DeclareUnicodeCharacter{00EB}{\"e}
+ \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
+ \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
+ \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
+ \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
+
+ \DeclareUnicodeCharacter{00F1}{\~n}
+ \DeclareUnicodeCharacter{00F2}{\`o}
+ \DeclareUnicodeCharacter{00F3}{\'o}
+ \DeclareUnicodeCharacter{00F4}{\^o}
+ \DeclareUnicodeCharacter{00F5}{\~o}
+ \DeclareUnicodeCharacter{00F6}{\"o}
+ \DeclareUnicodeCharacter{00F8}{\o}
+ \DeclareUnicodeCharacter{00F9}{\`u}
+ \DeclareUnicodeCharacter{00FA}{\'u}
+ \DeclareUnicodeCharacter{00FB}{\^u}
+ \DeclareUnicodeCharacter{00FC}{\"u}
+ \DeclareUnicodeCharacter{00FD}{\'y}
+ \DeclareUnicodeCharacter{00FF}{\"y}
+
+ \DeclareUnicodeCharacter{0100}{\=A}
+ \DeclareUnicodeCharacter{0101}{\=a}
+ \DeclareUnicodeCharacter{0102}{\u{A}}
+ \DeclareUnicodeCharacter{0103}{\u{a}}
+ \DeclareUnicodeCharacter{0106}{\'C}
+ \DeclareUnicodeCharacter{0107}{\'c}
+ \DeclareUnicodeCharacter{0108}{\^C}
+ \DeclareUnicodeCharacter{0109}{\^c}
+ \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
+ \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
+ \DeclareUnicodeCharacter{010C}{\v{C}}
+ \DeclareUnicodeCharacter{010D}{\v{c}}
+ \DeclareUnicodeCharacter{010E}{\v{D}}
+
+ \DeclareUnicodeCharacter{0112}{\=E}
+ \DeclareUnicodeCharacter{0113}{\=e}
+ \DeclareUnicodeCharacter{0114}{\u{E}}
+ \DeclareUnicodeCharacter{0115}{\u{e}}
+ \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
+ \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
+ \DeclareUnicodeCharacter{011A}{\v{E}}
+ \DeclareUnicodeCharacter{011B}{\v{e}}
+ \DeclareUnicodeCharacter{011C}{\^G}
+ \DeclareUnicodeCharacter{011D}{\^g}
+ \DeclareUnicodeCharacter{011E}{\u{G}}
+ \DeclareUnicodeCharacter{011F}{\u{g}}
+
+ \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
+ \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
+ \DeclareUnicodeCharacter{0124}{\^H}
+ \DeclareUnicodeCharacter{0125}{\^h}
+ \DeclareUnicodeCharacter{0128}{\~I}
+ \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
+ \DeclareUnicodeCharacter{012A}{\=I}
+ \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
+ \DeclareUnicodeCharacter{012C}{\u{I}}
+ \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
+
+ \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
+ \DeclareUnicodeCharacter{0131}{\dotless{i}}
+ \DeclareUnicodeCharacter{0132}{IJ}
+ \DeclareUnicodeCharacter{0133}{ij}
+ \DeclareUnicodeCharacter{0134}{\^J}
+ \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
+ \DeclareUnicodeCharacter{0139}{\'L}
+ \DeclareUnicodeCharacter{013A}{\'l}
+
+ \DeclareUnicodeCharacter{0141}{\L}
+ \DeclareUnicodeCharacter{0142}{\l}
+ \DeclareUnicodeCharacter{0143}{\'N}
+ \DeclareUnicodeCharacter{0144}{\'n}
+ \DeclareUnicodeCharacter{0147}{\v{N}}
+ \DeclareUnicodeCharacter{0148}{\v{n}}
+ \DeclareUnicodeCharacter{014C}{\=O}
+ \DeclareUnicodeCharacter{014D}{\=o}
+ \DeclareUnicodeCharacter{014E}{\u{O}}
+ \DeclareUnicodeCharacter{014F}{\u{o}}
+
+ \DeclareUnicodeCharacter{0150}{\H{O}}
+ \DeclareUnicodeCharacter{0151}{\H{o}}
+ \DeclareUnicodeCharacter{0152}{\OE}
+ \DeclareUnicodeCharacter{0153}{\oe}
+ \DeclareUnicodeCharacter{0154}{\'R}
+ \DeclareUnicodeCharacter{0155}{\'r}
+ \DeclareUnicodeCharacter{0158}{\v{R}}
+ \DeclareUnicodeCharacter{0159}{\v{r}}
+ \DeclareUnicodeCharacter{015A}{\'S}
+ \DeclareUnicodeCharacter{015B}{\'s}
+ \DeclareUnicodeCharacter{015C}{\^S}
+ \DeclareUnicodeCharacter{015D}{\^s}
+ \DeclareUnicodeCharacter{015E}{\cedilla{S}}
+ \DeclareUnicodeCharacter{015F}{\cedilla{s}}
+
+ \DeclareUnicodeCharacter{0160}{\v{S}}
+ \DeclareUnicodeCharacter{0161}{\v{s}}
+ \DeclareUnicodeCharacter{0162}{\cedilla{t}}
+ \DeclareUnicodeCharacter{0163}{\cedilla{T}}
+ \DeclareUnicodeCharacter{0164}{\v{T}}
+
+ \DeclareUnicodeCharacter{0168}{\~U}
+ \DeclareUnicodeCharacter{0169}{\~u}
+ \DeclareUnicodeCharacter{016A}{\=U}
+ \DeclareUnicodeCharacter{016B}{\=u}
+ \DeclareUnicodeCharacter{016C}{\u{U}}
+ \DeclareUnicodeCharacter{016D}{\u{u}}
+ \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
+ \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
+
+ \DeclareUnicodeCharacter{0170}{\H{U}}
+ \DeclareUnicodeCharacter{0171}{\H{u}}
+ \DeclareUnicodeCharacter{0174}{\^W}
+ \DeclareUnicodeCharacter{0175}{\^w}
+ \DeclareUnicodeCharacter{0176}{\^Y}
+ \DeclareUnicodeCharacter{0177}{\^y}
+ \DeclareUnicodeCharacter{0178}{\"Y}
+ \DeclareUnicodeCharacter{0179}{\'Z}
+ \DeclareUnicodeCharacter{017A}{\'z}
+ \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
+ \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
+ \DeclareUnicodeCharacter{017D}{\v{Z}}
+ \DeclareUnicodeCharacter{017E}{\v{z}}
+
+ \DeclareUnicodeCharacter{01C4}{D\v{Z}}
+ \DeclareUnicodeCharacter{01C5}{D\v{z}}
+ \DeclareUnicodeCharacter{01C6}{d\v{z}}
+ \DeclareUnicodeCharacter{01C7}{LJ}
+ \DeclareUnicodeCharacter{01C8}{Lj}
+ \DeclareUnicodeCharacter{01C9}{lj}
+ \DeclareUnicodeCharacter{01CA}{NJ}
+ \DeclareUnicodeCharacter{01CB}{Nj}
+ \DeclareUnicodeCharacter{01CC}{nj}
+ \DeclareUnicodeCharacter{01CD}{\v{A}}
+ \DeclareUnicodeCharacter{01CE}{\v{a}}
+ \DeclareUnicodeCharacter{01CF}{\v{I}}
+
+ \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
+ \DeclareUnicodeCharacter{01D1}{\v{O}}
+ \DeclareUnicodeCharacter{01D2}{\v{o}}
+ \DeclareUnicodeCharacter{01D3}{\v{U}}
+ \DeclareUnicodeCharacter{01D4}{\v{u}}
+
+ \DeclareUnicodeCharacter{01E2}{\={\AE}}
+ \DeclareUnicodeCharacter{01E3}{\={\ae}}
+ \DeclareUnicodeCharacter{01E6}{\v{G}}
+ \DeclareUnicodeCharacter{01E7}{\v{g}}
+ \DeclareUnicodeCharacter{01E8}{\v{K}}
+ \DeclareUnicodeCharacter{01E9}{\v{k}}
+
+ \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
+ \DeclareUnicodeCharacter{01F1}{DZ}
+ \DeclareUnicodeCharacter{01F2}{Dz}
+ \DeclareUnicodeCharacter{01F3}{dz}
+ \DeclareUnicodeCharacter{01F4}{\'G}
+ \DeclareUnicodeCharacter{01F5}{\'g}
+ \DeclareUnicodeCharacter{01F8}{\`N}
+ \DeclareUnicodeCharacter{01F9}{\`n}
+ \DeclareUnicodeCharacter{01FC}{\'{\AE}}
+ \DeclareUnicodeCharacter{01FD}{\'{\ae}}
+ \DeclareUnicodeCharacter{01FE}{\'{\O}}
+ \DeclareUnicodeCharacter{01FF}{\'{\o}}
+
+ \DeclareUnicodeCharacter{021E}{\v{H}}
+ \DeclareUnicodeCharacter{021F}{\v{h}}
+
+ \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
+ \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
+ \DeclareUnicodeCharacter{0228}{\cedilla{E}}
+ \DeclareUnicodeCharacter{0229}{\cedilla{e}}
+ \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
+ \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
+
+ \DeclareUnicodeCharacter{0232}{\=Y}
+ \DeclareUnicodeCharacter{0233}{\=y}
+ \DeclareUnicodeCharacter{0237}{\dotless{j}}
+
+ \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
+ \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
+ \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
+ \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
+ \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
+ \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
+ \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
+ \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
+ \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
+ \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
+ \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
+ \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
+
+ \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
+ \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
+
+ \DeclareUnicodeCharacter{1E20}{\=G}
+ \DeclareUnicodeCharacter{1E21}{\=g}
+ \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
+ \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
+ \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
+ \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
+ \DeclareUnicodeCharacter{1E26}{\"H}
+ \DeclareUnicodeCharacter{1E27}{\"h}
+
+ \DeclareUnicodeCharacter{1E30}{\'K}
+ \DeclareUnicodeCharacter{1E31}{\'k}
+ \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
+ \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
+ \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
+ \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
+ \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
+ \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
+ \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
+ \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
+ \DeclareUnicodeCharacter{1E3E}{\'M}
+ \DeclareUnicodeCharacter{1E3F}{\'m}
+
+ \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
+ \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
+ \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
+ \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
+ \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
+ \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
+ \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
+ \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
+ \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
+ \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
+
+ \DeclareUnicodeCharacter{1E54}{\'P}
+ \DeclareUnicodeCharacter{1E55}{\'p}
+ \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
+ \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
+ \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
+ \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
+ \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
+ \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
+ \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
+ \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
+
+ \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
+ \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
+ \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
+ \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
+ \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
+ \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
+ \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
+ \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
+ \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
+ \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
+
+ \DeclareUnicodeCharacter{1E7C}{\~V}
+ \DeclareUnicodeCharacter{1E7D}{\~v}
+ \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
+ \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
+
+ \DeclareUnicodeCharacter{1E80}{\`W}
+ \DeclareUnicodeCharacter{1E81}{\`w}
+ \DeclareUnicodeCharacter{1E82}{\'W}
+ \DeclareUnicodeCharacter{1E83}{\'w}
+ \DeclareUnicodeCharacter{1E84}{\"W}
+ \DeclareUnicodeCharacter{1E85}{\"w}
+ \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
+ \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
+ \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
+ \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
+ \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
+ \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
+ \DeclareUnicodeCharacter{1E8C}{\"X}
+ \DeclareUnicodeCharacter{1E8D}{\"x}
+ \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
+ \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
+
+ \DeclareUnicodeCharacter{1E90}{\^Z}
+ \DeclareUnicodeCharacter{1E91}{\^z}
+ \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
+ \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
+ \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
+ \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
+ \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
+ \DeclareUnicodeCharacter{1E97}{\"t}
+ \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
+ \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
+
+ \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
+ \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
+
+ \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
+ \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
+ \DeclareUnicodeCharacter{1EBC}{\~E}
+ \DeclareUnicodeCharacter{1EBD}{\~e}
+
+ \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
+ \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
+ \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
+ \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
+
+ \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
+ \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
+
+ \DeclareUnicodeCharacter{1EF2}{\`Y}
+ \DeclareUnicodeCharacter{1EF3}{\`y}
+ \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
+
+ \DeclareUnicodeCharacter{1EF8}{\~Y}
+ \DeclareUnicodeCharacter{1EF9}{\~y}
+
+ \DeclareUnicodeCharacter{2013}{--}
+ \DeclareUnicodeCharacter{2014}{---}
+ \DeclareUnicodeCharacter{2022}{\bullet}
+ \DeclareUnicodeCharacter{2026}{\dots}
+ \DeclareUnicodeCharacter{20AC}{\euro}
+
+ \DeclareUnicodeCharacter{2192}{\expansion}
+ \DeclareUnicodeCharacter{21D2}{\result}
+
+ \DeclareUnicodeCharacter{2212}{\minus}
+ \DeclareUnicodeCharacter{2217}{\point}
+ \DeclareUnicodeCharacter{2261}{\equiv}
+}% end of \utfeightchardefs
+
+
+% US-ASCII character definitions.
+\def\asciichardefs{% nothing need be done
+ \relax
+}
+
+% Make non-ASCII characters printable again for compatibility with
+% existing Texinfo documents that may use them, even without declaring a
+% document encoding.
+%
+\setnonasciicharscatcode \other
+
+
+\message{formatting,}
+
\newdimen\defaultparindent \defaultparindent = 15pt
\chapheadingskip = 15pt plus 4pt minus 2pt
diff --git a/man/tramp.texi b/man/tramp.texi
index 9597344ee0c..7acef2663e4 100644
--- a/man/tramp.texi
+++ b/man/tramp.texi
@@ -159,6 +159,8 @@ For the developer:
* Files directories and localnames:: How file names, directories and localnames are mangled and managed.
* Issues:: Debatable Issues and What Was Decided.
+* GNU Free Documentation License:: The license for this documentation.
+
@detailmenu
--- The Detailed Node Listing ---
@c
@@ -2406,6 +2408,10 @@ for @value{emacsothername}.
@end ifset
@end itemize
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
@node Concept Index
@comment node-name, next, previous, up
@unnumbered Concept Index
diff --git a/man/url.texi b/man/url.texi
index 6fe28467788..0fc6b08acdc 100644
--- a/man/url.texi
+++ b/man/url.texi
@@ -74,6 +74,7 @@ License.''
* General Facilities:: URLs can be cached, accessed via a gateway
and tracked in a history list.
* Customization:: Variables you can alter.
+* GNU Free Documentation License:: The license for this documentation.
* Function Index::
* Variable Index::
* Concept Index::
@@ -413,7 +414,7 @@ specifications in HTML @samp{<meta>} elements.
@cindex FTP
@cindex File Transfer Protocol
@cindex compressed files
-@findex dired
+@cindex dired
@example
ftp://@var{user}:@var{password}@@@var{host}:@var{port}/@var{file}
@@ -757,9 +758,8 @@ corresponding cache file. The two supplied possibilities are
@defun url-cache-create-filename-using-md5 url
Creates a cache file name from @var{url} using MD5 hashing.
-@findex md5
-This is creates entries with very few cache collisions and is fast if
-you have the @code{md5} function as a primitive (Emacs 21 and XEmacs).
+This is creates entries with very few cache collisions and is fast.
+@cindex MD5
@smallexample
(url-cache-create-filename-using-md5 "http://www.example.com/foo/bar")
@result{} "/home/fx/.url/cache/fx/http/com/example/www/b8a35774ad20db71c7c3409a5410e74f"
@@ -1055,9 +1055,9 @@ opened by the URL library.
@node History
@section History
+@findex url-do-setup
The library can maintain a global history list tracking URLs accessed.
URL completion can be done from it. The history mechanism is set up
-@findex url-do-setup
automatically via @code{url-do-setup} when it is configured to be on.
Note that the size of the history list is currently not limited.
@@ -1177,6 +1177,10 @@ Connect directly.
@end table
@end defopt
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
@node Function Index
@unnumbered Command and Function Index
@printindex fn
diff --git a/man/vip.texi b/man/vip.texi
index 11c21cbdf6e..a3f4a447f82 100644
--- a/man/vip.texi
+++ b/man/vip.texi
@@ -73,6 +73,8 @@ Comments and bug reports are welcome. Please send messages to
* Vi Commands:: Details of Vi commands.
* Ex Commands:: Details of Ex commands.
* Customization:: How to customize VIP.
+* GNU Free Documentation License:: The license for this documentation.
+
@end menu
@iftex
@unnumbered Introduction
@@ -1935,6 +1937,11 @@ file.
(define-key vip-command-mode-map "X" 'vip-delete-backward-char)
@end example
+@node GNU Free Documentation License,,, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+
@unnumbered Key Index
@printindex ky
diff --git a/man/viper.texi b/man/viper.texi
index af78bd99e47..55c97f18c9c 100644
--- a/man/viper.texi
+++ b/man/viper.texi
@@ -42,7 +42,7 @@ license to the document, as described in section 6 of the license.
@titlepage
@title Viper Is a Package for Emacs Rebels
@subtitle a Vi emulator for Emacs
-@subtitle January 2002, Viper Version 3.11.2
+@subtitle April 2007, Viper Version 3.13.1
@author Michael Kifer (Viper)
@author Aamod Sane (VIP 4.4)
@@ -114,6 +114,8 @@ Please use the Ex command @kbd{:submitReport} for this purpose.@refill
* Concept Index:: Vi, Ex and Emacs concepts
* Acknowledgments::
+* GNU Free Documentation License:: The license for this documentation.
+
@end menu
@iftex
@unnumbered Introduction
@@ -4534,6 +4536,9 @@ whicken@@dragon.parasoft.com (Wendell Hicken),
zapman@@cc.gatech.edu (Jason Zapman II),
@end example
+@node GNU Free Documentation License,,, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
@node Key Index,Function Index,,Top
@comment node-name, next, previous, up
diff --git a/man/widget.texi b/man/widget.texi
index 72157289524..0cf77ee4600 100644
--- a/man/widget.texi
+++ b/man/widget.texi
@@ -57,6 +57,7 @@ Software Foundation raise funds for GNU development.''
* Widget Minor Mode::
* Utilities::
* Widget Wishlist::
+* GNU Free Documentation License::
* Index::
@end menu
@@ -1774,7 +1775,7 @@ Get the item which @var{widget} is assumed to toggle.
This is only meaningful for radio buttons or checkboxes in a list.
@end defun
-@node Widget Wishlist, Index, Utilities, Top
+@node Widget Wishlist, GNU Free Documentation License, Utilities, Top
@comment node-name, next, previous, up
@section Wishlist
@cindex todo
@@ -1833,7 +1834,11 @@ See @code{TeX-printer-list} for an explanation.
Add a @code{mailto} widget.
@end itemize
-@node Index, , Widget Wishlist, Top
+@node GNU Free Documentation License, Index, Widget Wishlist, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Index, , GNU Free Documentation License, Top
@comment node-name, next, previous, up
@unnumbered Index
diff --git a/man/woman.texi b/man/woman.texi
index c7476cf82c0..868bb510f50 100644
--- a/man/woman.texi
+++ b/man/woman.texi
@@ -99,6 +99,7 @@ Mile End Road, London E1 4NS, UK
* Technical:: Technical Details
* Bugs:: Reporting Bugs
* Acknowledgements:: Acknowledgements
+* GNU Free Documentation License:: The license for this documentation.
* Command Index:: Command Index
* Variable Index:: Variable Index
* Keystroke Index:: Keystroke Index
@@ -386,9 +387,9 @@ WoMan tries to pick up the information that would be used by the
UNIX, then WoMan parses that. Otherwise, if WoMan can find a
configuration file named (by default) @file{man.conf} (or something very
similar), which seems to be the standard mechanism under GNU/Linux, then
-it parses that. To be precise, ``something very similar'' means having
-two name components separated by a dot and respectively containing
-@samp{man} and beginning with @samp{conf}, e.g.@: @file{manual.configuration}.
+it parses that. To be precise, ``something very similar'' means
+starting with @samp{man} and ending with @samp{.conf} and possibly more
+lowercase letters, e.g.@: @file{manual.configuration}.
The search path and/or precise full path name for this file are set by
the value of the customizable user option @code{woman-man.conf-path}.
If all else fails, WoMan uses a plausible default man search path.
@@ -407,7 +408,10 @@ elements of @code{woman-path} must be directories that contain man files
@emph{directly}. Secondly, the last directory component of each element
of @code{woman-path} is treated as a regular (Emacs) match expression
rather than a fixed name, which allows collections of related
-directories to be specified succinctly.
+directories to be specified succinctly. Also, elements of
+@code{woman-manpath} can be conses, indicating a mapping from
+@samp{PATH} environment variable components to man directory
+hierarchies.
For topic completion to work, WoMan must build a list of all the manual
files that it can access, which can be very slow, especially if a
@@ -477,24 +481,22 @@ time it is run in a new Emacs session.
@cindex point, word at
By default, the @code{woman} command uses the word nearest to point in
-the current buffer as a suggestion for the topic to look up. The topic
-must be confirmed or edited in the minibuffer. This suggestion can be
-turned off, or @code{woman} can use the suggested topic without
-confirmation if possible, which is controlled by customizing the user
-option @code{woman-topic-at-point} to @code{nil} or @code{t}
-respectively. (Its default value is neither @code{nil} nor @code{t},
-meaning ask for confirmation.)
-
-The variable @code{woman-topic-at-point} can also be rebound locally
-(using @code{let}), which may be useful to provide special private key
-bindings, e.g.@: this key binding for @kbd{C-c w} runs WoMan on the topic
-at point without seeking confirmation:
+the current buffer as a suggestion for the topic to look up, if it
+exists as a valid topic. The topic can be confirmed or edited in the
+minibuffer.
+
+You can also bind the variable @code{woman-use-topic-at-point} locally
+to a non-@code{nil} value (using @code{let}), in which case
+@code{woman} will can use the suggested topic without confirmation if
+possible. This may be useful to provide special private key bindings,
+e.g.@: this key binding for @kbd{C-c w} runs WoMan on the topic at
+point without seeking confirmation:
@lisp
(global-set-key "\C-cw"
(lambda ()
(interactive)
- (let ((woman-topic-at-point t))
+ (let ((woman-use-topic-at-point t))
(woman))))
@end lisp
@@ -943,7 +945,9 @@ A list of strings representing @emph{directory trees} to search for Unix
manual files. Each element should be the name of a directory that
contains subdirectories of the form @file{man?}, or more precisely
subdirectories selected by the value of @code{woman-manpath-man-regexp}.
-Non-directory and unreadable files are ignored.
+Non-directory and unreadable files are ignored. This can also contain
+conses, with the car indicating a @code{PATH} variable component mapped
+to the directory tree given in the cdr.
@cindex @code{MANPATH}, environment variable
If not set then the environment variable @code{MANPATH} is used. If no
@@ -1086,24 +1090,18 @@ a Contents menu to the menubar by calling @code{imenu-add-to-menubar}.
A string representing the title to use if WoMan adds a Contents menu to
the menubar. Default is @code{"CONTENTS"}.
-@item woman-topic-at-point
-A symbol, which may be either @code{t}, @code{nil} or @code{confirm},
-that controls the use by @code{woman} of the ``word at point'' as a
-topic suggestion. If it is non-@code{nil} then the @code{woman} command uses
-the word at point as an initial topic suggestion when it reads a topic
-from the minibuffer; if it is @code{t} then @code{woman} uses the word
-at point @emph{without interactive confirmation} if it exists as a
-topic. The value @code{confirm} means suggest a topic and ask for
-confirmation. The default value is that of
-@code{woman-topic-at-point-default}.
-
-@item woman-topic-at-point-default
-A symbol, which may be either @code{t}, @code{nil} or @code{confirm},
-representing the default value for @code{woman-topic-at-point}. The
-default value is @code{confirm}. [The variable
-@code{woman-topic-at-point} may be @code{let}-bound when @code{woman} is
-loaded, in which case its global value does not get defined. The
-function @code{woman-file-name} sets it to this value if it is unbound.]
+@item woman-use-topic-at-point
+A boolean value that defaults to @code{nil}. If non-@code{nil} then
+the @code{woman} command uses the word at point as the topic,
+@emph{without interactive confirmation}, if it exists as a topic.
+
+@item woman-use-topic-at-point-default
+A boolean value representing the default value for
+@code{woman-use-topic-at-point}. The default value is @code{nil}.
+[The variable @code{woman-use-topic-at-point} may be @code{let}-bound
+when @code{woman} is loaded, in which case its global value does not
+get defined. The function @code{woman-file-name} sets it to this
+value if it is unbound.]
@item woman-uncompressed-file-regexp
A regular match expression used to select man source files (ignoring any
@@ -1337,7 +1335,7 @@ man source file from, but do not send it unless asked to send it.
@c ===================================================================
-@node Acknowledgements, Command Index, Bugs, Top
+@node Acknowledgements, GNU Free Documentation License, Bugs, Top
@comment node-name, next, previous, up
@chapter Acknowledgements
@cindex acknowledgements
@@ -1393,7 +1391,12 @@ Eli Zaretskii, @email{eliz@@is.elta.co.il}
@comment END OF MANUAL TEXT
@page
-@node Command Index, Variable Index, Acknowledgements, Top
+
+@node GNU Free Documentation License, Command Index, Acknowledgements, Top
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@node Command Index, Variable Index, GNU Free Documentation License, Top
@comment node-name, next, previous, up
@unnumbered Command Index
diff --git a/man/xresources.texi b/man/xresources.texi
index 45a890e7c39..c402ec89f88 100644
--- a/man/xresources.texi
+++ b/man/xresources.texi
@@ -58,14 +58,15 @@ collection of related options, for one program or for several programs
(optionally even for all programs).
@cindex Registry (MS-Windows)
- MS-Windows systems don't support @file{~/.Xdefaults} files, but
-Emacs compiled for Windows looks for X resources in the Windows
-Registry, under the key @samp{HKEY_CURRENT_USER\SOFTWARE\GNU\Emacs}
-and then under the key @samp{HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs}.
-The menu and scroll bars are native widgets on MS-Windows, so they are
-only customizable via the system-wide settings in the Display Control
-Panel. You can also set resources using the @samp{-xrm} command line
-option (see below.)
+ MS-Windows systems do not support @file{~/.Xdefaults} files, so
+instead Emacs compiled for Windows looks for X resources in the
+Windows Registry, first under the key
+@samp{HKEY_CURRENT_USER\SOFTWARE\GNU\Emacs} and then under the key
+@samp{HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs}. The menu and scroll
+bars are native widgets on MS-Windows, so they are only customizable
+via the system-wide settings in the Display Control Panel. You can
+also set resources using the @samp{-xrm} command line option (see
+below.)
@iftex
Applications such as Emacs look for resources with specific names
diff --git a/nt/ChangeLog b/nt/ChangeLog
index 3d5383fdc28..c5ad2555bbe 100644
--- a/nt/ChangeLog
+++ b/nt/ChangeLog
@@ -1,3 +1,7 @@
+2007-03-31 Eli Zaretskii <eliz@gnu.org>
+
+ * INSTALL: Mention the VCVARS32.BAT batch file for VS.NET users.
+
2007-03-09 Richard Stallman <rms@gnu.org>
* INSTALL: Say explicitly this is not for Cygwin.
diff --git a/nt/INSTALL b/nt/INSTALL
index dc88bfd9975..fe5381a6f21 100644
--- a/nt/INSTALL
+++ b/nt/INSTALL
@@ -123,7 +123,10 @@
The rest of this file assumes you have a working development
environment. If you just installed such an environment, try
building a trivial C "Hello world" program, and see if it works. If
- it doesn't work, resolve that problem first!
+ it doesn't work, resolve that problem first! If you use Microsoft
+ Visual Studio .NET 2003, don't forget to run the VCVARS32.BAT batch
+ file from the `Bin' subdirectory of the directory where you have
+ installed VS.NET.
If you use the MinGW port of GCC and GNU Make to build Emacs, there
are some compatibility issues wrt Make and the shell that is run by
diff --git a/nt/emacs.rc b/nt/emacs.rc
index 2ec3023310a..99427cc5742 100644
--- a/nt/emacs.rc
+++ b/nt/emacs.rc
@@ -6,8 +6,8 @@ Emacs ICON icons\emacs.ico
#endif
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 22,0,96,0
- PRODUCTVERSION 22,0,96,0
+ FILEVERSION 22,0,98,0
+ PRODUCTVERSION 22,0,98,0
FILEFLAGSMASK 0x3FL
#ifdef EMACSDEBUG
FILEFLAGS 0x1L
@@ -24,12 +24,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Free Software Foundation\0"
VALUE "FileDescription", "GNU Emacs for Windows NT/95/98/2000/ME/XP\0"
- VALUE "FileVersion", "22, 0, 96, 0\0"
+ VALUE "FileVersion", "22, 0, 98, 0\0"
VALUE "InternalName", "Emacs\0"
VALUE "LegalCopyright", "Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007\0"
VALUE "OriginalFilename", "emacs.exe"
VALUE "ProductName", "Emacs: The extensible self-documenting text editor\0"
- VALUE "ProductVersion", "22, 0, 96, 0\0"
+ VALUE "ProductVersion", "22, 0, 98, 0\0"
VALUE "OLESelfRegister", "\0"
END
END
diff --git a/src/ChangeLog b/src/ChangeLog
index 76414a593f6..e325d82f04a 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,208 @@
+2007-04-16 Chong Yidong <cyd@stupidchicken.com>
+
+ * dispnew.c (adjust_frame_glyphs_for_frame_redisplay): Set
+ garbaged flag in presence of window margins.
+ (showing_window_margins_p): New function.
+
+ * xdisp.c (cursor_row_p): Only end row on newline if it's a
+ display string. Suggested by Lennart Borgman.
+
+2007-04-16 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * alloc.c (mem_insert): Set min_heap_address and max_heap_address
+ if they are not yet initialized.
+
+2007-04-15 Chong Yidong <cyd@stupidchicken.com>
+
+ * xdisp.c (redisplay_window): When deciding whether or not to
+ recenter, don't use the reset values of BEG_UNCHANGED and
+ END_UNCHANGED.
+
+2007-04-13 Kim F. Storm <storm@cua.dk>
+
+ * buffer.c (Fkill_buffer): gcpro BUF during kill_buffer_processes
+ and check that buffer is still alive upon return.
+
+2007-04-13 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * macterm.c [!TARGET_API_MAC_CARBON]: Include Displays.h.
+ (mac_screen_config_changed): New variable.
+ (mac_handle_dm_notification, init_dm_notification_handler)
+ (mac_get_screen_info): New functions.
+ [MAC_OS8] (main): Call init_dm_notification_handler.
+ (mac_initialize) [MAC_OSX]: Likewise.
+ (XTread_socket): Call mac_get_screen_info if screen config changed.
+ (mac_initialized): Make static.
+ (mac_initialize_display_info): Remove function.
+ (mac_term_init): Call mac_get_screen_info. Add partial contents of
+ mac_initialize_display_info.
+
+2007-04-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * mac.c (xrm_get_preference_database, Fmac_get_preference)
+ [TARGET_API_MAC_CARBON]: Use CFPreferencesAppSynchronize.
+
+ * macterm.c [TARGET_API_MAC_CARBON] (mac_post_mouse_moved_event):
+ Use GetGlobalMouse instead of GetMouse and LocalToGlobal.
+ (mac_initialize_display_info) [MAC_OSX]: Use CGRectZero.
+ (mac_initialize_display_info) [!MAC_OSX]: dpyinfo->height and
+ dpyinfo->width are those of whole screen.
+
+2007-04-10 Chong Yidong <cyd@stupidchicken.com>
+
+ * xdisp.c (note_mode_line_or_margin_highlight): Don't decrement
+ glyph pointer before start of glyph row.
+
+2007-04-09 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * s/darwin.h (__restrict, struct kboard): Remove outdated workarounds.
+ (C_SWITCH_SYSTEM): Remove `-I../mac/src'.
+
+2007-04-09 Martin Rudalics <rudalics@gmx.at>
+
+ * indent.c (Fmove_to_column): Set next_boundary with correct start pt.
+
+2007-04-08 Richard Stallman <rms@gnu.org>
+
+ * xdisp.c (syms_of_xdisp) <message-log-max>: Default 100.
+
+2007-04-07 Chong Yidong <cyd@stupidchicken.com>
+
+ * editfns.c (Ftranspose_regions): Validate interval before setting
+ text properties.
+
+2007-04-03 Eli Zaretskii <eliz@gnu.org>
+
+ * emacs.c (main): Fix instructions for building Emacs for profiling.
+
+2007-04-03 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
+
+ * gtkutil.c (xg_update_menubar): Call g_list_next after moving
+ menu bar item.
+
+2007-04-02 Juanma Barranquero <lekktu@gmail.com>
+
+ * print.c (Fprin1_to_string): Use macro SPECPDL_INDEX.
+
+2007-04-01 Chong Yidong <cyd@stupidchicken.com>
+
+ * keymap.c (Fcommand_remapping): New optional argument.
+ (where_is_internal): Use new keymaps argument.
+ (Fkey_binding): Caller changed.
+
+ * keyboard.c (command_loop_1): Caller changed.
+
+2007-03-31 Eli Zaretskii <eliz@gnu.org>
+
+ * window.c (Fget_lru_window): Doc fix.
+
+2007-03-30 Chong Yidong <cyd@stupidchicken.com>
+
+ * undo.c (Fprimitive_undo): Give clearer error message when trying
+ to change text properties outside accessible part of buffer.
+
+2007-03-29 Kim F. Storm <storm@cua.dk>
+
+ * process.c (wait_reading_process_output) [HAVE_PTYS]:
+ When EIO happens, clear channel from descriptor masks before raising
+ SIGCHLD signal to avoid busy loop between read and sigchld_handler.
+ (sigchld_handler): Remove sleep (2007-03-11 & 2007-03-26 changes).
+
+2007-03-29 Juanma Barranquero <lekktu@gmail.com>
+
+ * buffer.c (Fset_buffer_major_mode): Check that BUFFER is valid.
+
+ * process.c (Fformat_network_address): Return nil when the
+ argument vector contains invalid values.
+
+2007-03-28 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * gmalloc.c [HAVE_GTK_AND_PTHREAD]: Define USE_PTHREAD.
+ [USE_PTHREAD]: Include pthread.h.
+ (malloc_init_once_control, _malloc_mutex) [USE_PTHREAD]: New variables.
+ (malloc_initialize_1): New function created from __malloc_initialize.
+ (__malloc_initialize): Use it.
+ (LOCK, UNLOCK): New macros to make malloc etc. thread safe.
+ (_malloc_internal, _free_internal, _realloc_internal): Use them.
+
+ * lread.c (readchar): Extend BLOCK_INPUT block to ferror/clearerr.
+
+2007-03-27 Juanma Barranquero <lekktu@gmail.com>
+
+ * process.c (Fformat_network_address): Make args array big enough
+ to format IPv6 addresses.
+
+2007-03-27 Glenn Morris <rgm@gnu.org>
+
+ * m/hp800.h: Restore HP-UX support (removed 2007-01-29).
+
+2007-03-26 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * macfns.c (Fx_display_mm_height, Fx_display_mm_width): Scale whole
+ screen size in pixels by millimeters per pixel of main display.
+
+ * macselect.c (get_scrap_target_type_list, x_own_selection):
+ Move assignments outside predicate macros.
+ (Vselection_converter_alist): Doc fix.
+
+ * macterm.c (create_text_encoding_info_alist): Move assignments
+ outside predicate macros.
+ (mac_initialize_display_info) [MAC_OSX]: dpyinfo->height and
+ dpyinfo->width are those of whole screen.
+
+2007-03-26 Sam Steingold <sds@gnu.org>
+
+ * process.c (sigchld_handler): Delay by 1ms instead of 1s to
+ alleviate sluggishness (the original problem is still fixed).
+
+2007-03-25 Kim F. Storm <storm@cua.dk>
+
+ * intervals.c (merge_properties): Use explicit loop instead of
+ Fplist_member to avoid QUIT. Don't use Fcdr.
+ (intervals_equal): Likewise. Rewrite loop to perform length check
+ on the fly rather than calling Flength. Don't use Fcar.
+
+2007-03-24 Eli Zaretskii <eliz@gnu.org>
+
+ * editfns.c (Fgoto_char): Doc fix.
+
+ * indent.c (Findent_to): Doc fix.
+
+2007-03-24 Chong Yidong <cyd@stupidchicken.com>
+
+ * editfns.c (Ftranspose_regions): Use set_text_properties_1
+ instead of Fset_text_properties to avoid GC. Signal after change.
+
+2007-03-24 Eli Zaretskii <eliz@gnu.org>
+
+ * xfns.c (Fx_show_tip): Doc fix.
+
+ * macfns.c (Fx_show_tip): Doc fix.
+
+ * w32fns.c (Fx_show_tip): Doc fix.
+
+2007-03-23 Kim F. Storm <storm@cua.dk>
+
+ * intervals.c (merge_properties, intervals_equal):
+ Use Fplist_member instead of Fmemq to find properties.
+
+2007-03-23 Glenn Morris <rgm@gnu.org>
+
+ * unexhp9k800.c: Restore file with clarified legal status.
+ * m/sr2k.h: Restore since dependency unexhp9k800.c is restored.
+
+2007-03-22 Chong Yidong <cyd@stupidchicken.com>
+
+ * widget.c (EmacsFrameSetCharSize): Catch X errors.
+
+2007-03-22 Kenichi Handa <handa@m17n.org>
+
+ * fileio.c (Fcopy_file): Call barf_or_query_if_file_exists with
+ non-encoded file name.
+ (Frename_file): Likewise.
+ (Fadd_name_to_file): Likewise.
+ (Fmake_symbolic_link): Likewise.
+
2007-03-20 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* Makefile.in (alloca.o, gtkutil.o): Depend on systime.h.
@@ -25,9 +230,9 @@
* print.c: Include blockinput.h.
(Fredirect_debugging_output): Add BLOCK_INPUT around fclose.
- * process.c (Fmake_network_process) [HAVE_GETADDRINFO]: Clear
- immediate_quit before calling freeaddrinfo. Add BLOCK_INPUT
- around freeaddrinfo.
+ * process.c (Fmake_network_process) [HAVE_GETADDRINFO]:
+ Clear immediate_quit before calling freeaddrinfo.
+ Add BLOCK_INPUT around freeaddrinfo.
* term.c: Include blockinput.h.
(write_glyphs, insert_glyphs): Add BLOCK_INPUT around fwrite.
@@ -51,8 +256,8 @@
(x_activate_menubar, mac_menu_show): Set it during menu tracking.
(popup_activated): New function.
- * xdisp.c (redisplay_internal, note_mouse_highlight): Check
- popup_activated for MAC_OS.
+ * xdisp.c (redisplay_internal, note_mouse_highlight):
+ Check popup_activated for MAC_OS.
2007-03-17 Juanma Barranquero <lekktu@gmail.com>
@@ -491,9 +696,9 @@
2007-01-22 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
- * macselect.c [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Don't
- pass keyboard modifiers to mac_store_drag_event, but put them as
- kEventParamKeyModifiers Apple event parameter.
+ * macselect.c [TARGET_API_MAC_CARBON] (mac_do_receive_drag):
+ Don't pass keyboard modifiers to mac_store_drag_event, but put
+ them as kEventParamKeyModifiers Apple event parameter.
2007-01-21 Chong Yidong <cyd@stupidchicken.com>
@@ -577,8 +782,8 @@
(mac_dialog) [TARGET_API_MAC_CARBON]: Remove function.
(mac_dialog_show) [TARGET_API_MAC_CARBON]: Use create_and_show_dialog.
- * macterm.c (x_free_frame_resources) [USE_CG_DRAWING]: Call
- mac_prepare_for_quickdraw.
+ * macterm.c (x_free_frame_resources) [USE_CG_DRAWING]:
+ Call mac_prepare_for_quickdraw.
(quit_char, make_ctrl_char) [TARGET_API_MAC_CARBON]: Move externs
outside #ifdef MAC_OSX.
(mac_quit_char_key_p) [TARGET_API_MAC_CARBON]: Move function
@@ -2230,8 +2435,8 @@
2006-08-28 Kenichi Handa <handa@m17n.org>
- * coding.c (Fdetect_coding_region, Fdetect_coding_string): Fix
- docstring about ISO-2022 control characters.
+ * coding.c (Fdetect_coding_region, Fdetect_coding_string):
+ Fix docstring about ISO-2022 control characters.
2006-08-28 Kim F. Storm <storm@cua.dk>
@@ -2454,7 +2659,7 @@
2006-08-09 Kenichi Handa <handa@m17n.org>
* coding.c (syms_of_coding): Improve the docstring
- file-coding-system-alist.
+ of file-coding-system-alist.
2006-08-07 Andreas Schwab <schwab@suse.de>
@@ -3402,8 +3607,8 @@
* macterm.c (font_panel_shown_p) [USE_MAC_FONT_PANEL]: New variable.
(mac_font_panel_visible_p, mac_show_hide_font_panel)
[USE_MAC_FONT_PANEL]: New functions.
- [USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection): Return
- immediately if font panel is not visible.
+ [USE_MAC_FONT_PANEL] (mac_set_font_info_for_selection):
+ Return immediately if font panel is not visible.
* macterm.h (mac_font_panel_visible_p, mac_show_hide_font_panel):
Add externs.
@@ -3422,8 +3627,8 @@
2006-05-29 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
- * sound.c (alsa_open, alsa_configure, alsa_write): Move
- assignment to err out of if-statement.
+ * sound.c (alsa_open, alsa_configure, alsa_write):
+ Move assignment to err out of if-statement.
* gtkutil.c (menu_nav_ended): New function.
(create_menus): Connect menu_nav_ended to "selection-done" to fix
@@ -3838,8 +4043,8 @@
(Qpanel_closed, Qselection) [USE_MAC_FONT_PANEL]: Likewise.
(syms_of_macterm): Intern and staticpro them.
(init_font_name_table) [USE_ATSUI]: Add data to Vmac_atsu_font_table.
- [TARGET_API_MAC_CARBON] (mac_store_event_ref_as_apple_event): New
- function.
+ [TARGET_API_MAC_CARBON] (mac_store_event_ref_as_apple_event):
+ New function.
[USE_CARBON_EVENTS] (mac_handle_command_event): Use it.
[MAC_OSX] (mac_store_services_event): Likewise.
[USE_CARBON_EVENTS] (mac_handle_window_event) [MAC_OSX]: Handle
@@ -3891,8 +4096,8 @@
[TARGET_API_MAC_CARBON] (create_apple_event): New function.
[TARGET_API_MAC_CARBON] (create_apple_event_from_event_ref): Use it.
Use xrealloc instead of repeated xmalloc/xfree.
- [TARGET_API_MAC_CARBON] (create_apple_event_from_drag_ref): New
- function.
+ [TARGET_API_MAC_CARBON] (create_apple_event_from_drag_ref):
+ New function.
* macmenu.c (restore_menu_items, cleanup_popup_menu): Return a value.
@@ -5752,8 +5957,8 @@
objects until we are done with the parsing.
(parse_single_submenu, digest_single_submenu): New functions.
(single_submenu): Function deleted, replaced by those two.
- (install_menu_quit_handler) [HAVE_CANCELMENUTRACKING]: Don't
- create or dispose of EventHandlerUPP. Install hander to all submenus.
+ (install_menu_quit_handler) [HAVE_CANCELMENUTRACKING]: Don't create
+ or dispose of EventHandlerUPP. Install hander to all submenus.
(mac_menu_show) [!HAVE_MULTILINGUAL_MENU]: Use ENCODE_MENU_STRING
instead of ENCODE_SYSTEM.
(free_frame_menubar, fill_submenu, fill_menu): Don't use NULL for
diff --git a/src/ChangeLog.5 b/src/ChangeLog.5
index 7cce26c5acc..975bd646285 100644
--- a/src/ChangeLog.5
+++ b/src/ChangeLog.5
@@ -1789,7 +1789,7 @@
* textprop.c (Fnext_property_change): Fix previous change.
-1995-03-23 Kevin Rodgers <kevinr@ihs.com>
+1995-03-23 Kevin Rodgers <kevinr@ihs.com> (tiny change)
* print.c (temp_output_buffer_setup): (Re)set the default
directory of the temp buffer to that of the current buffer.
diff --git a/src/alloc.c b/src/alloc.c
index fe13b84b5a7..574196059f8 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -3618,9 +3618,9 @@ mem_insert (start, end, type)
{
struct mem_node *c, *parent, *x;
- if (start < min_heap_address)
+ if (min_heap_address == NULL || start < min_heap_address)
min_heap_address = start;
- if (end > max_heap_address)
+ if (max_heap_address == NULL || end > max_heap_address)
max_heap_address = end;
/* See where in the tree a node for START belongs. In this
diff --git a/src/buffer.c b/src/buffer.c
index 6e2f097ae88..15cb9f29356 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1471,7 +1471,16 @@ with SIGHUP. */)
unlock_buffer (b);
#endif /* CLASH_DETECTION */
+ GCPRO1 (buf);
kill_buffer_processes (buf);
+ UNGCPRO;
+
+ /* Killing buffer processes may run sentinels which may
+ have called kill-buffer. */
+
+ if (NILP (b->name))
+ return Qnil;
+
clear_charpos_cache (b);
tem = Vinhibit_quit;
@@ -1644,6 +1653,8 @@ the current buffer's major mode. */)
int count;
Lisp_Object function;
+ CHECK_BUFFER (buffer);
+
if (STRINGP (XBUFFER (buffer)->name)
&& strcmp (SDATA (XBUFFER (buffer)->name), "*scratch*") == 0)
function = find_symbol_value (intern ("initial-major-mode"));
diff --git a/src/dispnew.c b/src/dispnew.c
index 697773f4daf..86e73da3848 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -120,6 +120,7 @@ struct dim
static struct glyph_matrix *save_current_matrix P_ ((struct frame *));
static void restore_current_matrix P_ ((struct frame *, struct glyph_matrix *));
+static int showing_window_margins_p P_ ((struct window *));
static void fake_current_matrices P_ ((Lisp_Object));
static void redraw_overlapping_rows P_ ((struct window *, int));
static void redraw_overlapped_rows P_ ((struct window *, int));
@@ -2153,6 +2154,33 @@ adjust_frame_glyphs (f)
f->glyphs_initialized_p = 1;
}
+/* Return 1 if any window in the tree has nonzero window margins. See
+ the hack at the end of adjust_frame_glyphs_for_frame_redisplay. */
+static int
+showing_window_margins_p (w)
+ struct window *w;
+{
+ while (w)
+ {
+ if (!NILP (w->hchild))
+ {
+ if (showing_window_margins_p (XWINDOW (w->hchild)))
+ return 1;
+ }
+ else if (!NILP (w->vchild))
+ {
+ if (showing_window_margins_p (XWINDOW (w->vchild)))
+ return 1;
+ }
+ else if (!NILP (w->left_margin_cols)
+ || !NILP (w->right_margin_cols))
+ return 1;
+
+ w = NILP (w->next) ? 0 : XWINDOW (w->next);
+ }
+ return 0;
+}
+
/* In the window tree with root W, build current matrices of leaf
windows from the frame's current matrix. */
@@ -2340,7 +2368,12 @@ adjust_frame_glyphs_for_frame_redisplay (f)
if (display_completed
&& !FRAME_GARBAGED_P (f)
&& matrix_dim.width == f->current_matrix->matrix_w
- && matrix_dim.height == f->current_matrix->matrix_h)
+ && matrix_dim.height == f->current_matrix->matrix_h
+ /* For some reason, the frame glyph matrix gets corrupted if
+ any of the windows contain margins. I haven't been able
+ to hunt down the reason, but for the moment this prevents
+ the problem from manifesting. -- cyd */
+ && !showing_window_margins_p (XWINDOW (FRAME_ROOT_WINDOW (f))))
{
struct glyph_matrix *copy = save_current_matrix (f);
adjust_glyph_matrix (NULL, f->desired_matrix, 0, 0, matrix_dim);
diff --git a/src/editfns.c b/src/editfns.c
index fc99bf977d0..2ab852d2925 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -274,7 +274,9 @@ clip_to_bounds (lower, num, upper)
DEFUN ("goto-char", Fgoto_char, Sgoto_char, 1, 1, "NGoto char: ",
doc: /* Set point to POSITION, a number or marker.
-Beginning of buffer is position (point-min), end is (point-max). */)
+Beginning of buffer is position (point-min), end is (point-max).
+
+The return value is POSITION. */)
(position)
register Lisp_Object position;
{
@@ -4117,7 +4119,10 @@ Transposing beyond buffer boundaries is an error. */)
int gap, len1, len_mid, len2;
unsigned char *start1_addr, *start2_addr, *temp;
- INTERVAL cur_intv, tmp_interval1, tmp_interval_mid, tmp_interval2;
+ INTERVAL cur_intv, tmp_interval1, tmp_interval_mid, tmp_interval2, tmp_interval3;
+ Lisp_Object buf;
+
+ XSETBUFFER (buf, current_buffer);
cur_intv = BUF_INTERVALS (current_buffer);
validate_region (&startr1, &endr1);
@@ -4224,8 +4229,11 @@ Transposing beyond buffer boundaries is an error. */)
tmp_interval1 = copy_intervals (cur_intv, start1, len1);
tmp_interval2 = copy_intervals (cur_intv, start2, len2);
- Fset_text_properties (make_number (start1), make_number (end2),
- Qnil, Qnil);
+ /* Don't use Fset_text_properties: that can cause GC, which can
+ clobber objects stored in the tmp_intervals. */
+ tmp_interval3 = validate_interval_range (buf, &startr1, &endr2, 0);
+ if (!NULL_INTERVAL_P (tmp_interval3))
+ set_text_properties_1 (startr1, endr2, Qnil, buf, tmp_interval3);
/* First region smaller than second. */
if (len1_byte < len2_byte)
@@ -4281,10 +4289,14 @@ Transposing beyond buffer boundaries is an error. */)
record_change (start2, len2);
tmp_interval1 = copy_intervals (cur_intv, start1, len1);
tmp_interval2 = copy_intervals (cur_intv, start2, len2);
- Fset_text_properties (make_number (start1), make_number (end1),
- Qnil, Qnil);
- Fset_text_properties (make_number (start2), make_number (end2),
- Qnil, Qnil);
+
+ tmp_interval3 = validate_interval_range (buf, &startr1, &endr1, 0);
+ if (!NULL_INTERVAL_P (tmp_interval3))
+ set_text_properties_1 (startr1, endr1, Qnil, buf, tmp_interval3);
+
+ tmp_interval3 = validate_interval_range (buf, &startr2, &endr2, 0);
+ if (!NULL_INTERVAL_P (tmp_interval3))
+ set_text_properties_1 (startr2, endr2, Qnil, buf, tmp_interval3);
SAFE_ALLOCA (temp, unsigned char *, len1_byte);
start1_addr = BYTE_POS_ADDR (start1_byte);
@@ -4310,8 +4322,10 @@ Transposing beyond buffer boundaries is an error. */)
tmp_interval1 = copy_intervals (cur_intv, start1, len1);
tmp_interval_mid = copy_intervals (cur_intv, end1, len_mid);
tmp_interval2 = copy_intervals (cur_intv, start2, len2);
- Fset_text_properties (make_number (start1), make_number (end2),
- Qnil, Qnil);
+
+ tmp_interval3 = validate_interval_range (buf, &startr1, &endr2, 0);
+ if (!NULL_INTERVAL_P (tmp_interval3))
+ set_text_properties_1 (startr1, endr2, Qnil, buf, tmp_interval3);
/* holds region 2 */
SAFE_ALLOCA (temp, unsigned char *, len2_byte);
@@ -4341,8 +4355,10 @@ Transposing beyond buffer boundaries is an error. */)
tmp_interval1 = copy_intervals (cur_intv, start1, len1);
tmp_interval_mid = copy_intervals (cur_intv, end1, len_mid);
tmp_interval2 = copy_intervals (cur_intv, start2, len2);
- Fset_text_properties (make_number (start1), make_number (end2),
- Qnil, Qnil);
+
+ tmp_interval3 = validate_interval_range (buf, &startr1, &endr2, 0);
+ if (!NULL_INTERVAL_P (tmp_interval3))
+ set_text_properties_1 (startr1, endr2, Qnil, buf, tmp_interval3);
/* holds region 1 */
SAFE_ALLOCA (temp, unsigned char *, len1_byte);
@@ -4377,6 +4393,8 @@ Transposing beyond buffer boundaries is an error. */)
fix_start_end_in_overlays (start1, end2);
}
+ signal_after_change (XINT (start1), XINT (end2 - start1),
+ XINT (end2 - start1));
return Qnil;
}
diff --git a/src/emacs.c b/src/emacs.c
index d49d81e70bb..1f8ec6a268f 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -1723,8 +1723,9 @@ main (argc, argv
/* Set up for profiling. This is known to work on FreeBSD,
GNU/Linux and MinGW. It might work on some other systems too.
Give it a try and tell us if it works on your system. To compile
- for profiling use something like:
- `make CFLAGS="-pg -g -O -DPROFILING=1'. */
+ for profiling, add -pg to the switches your platform uses in
+ CFLAGS and LDFLAGS. For example:
+ `make CFLAGS="-pg -g -O -DPROFILING=1" LDFLAGS="-pg -g"'. */
#if defined (__FreeBSD__) || defined (GNU_LINUX) || defined(__MINGW32__)
#ifdef PROFILING
if (initialized)
diff --git a/src/fileio.c b/src/fileio.c
index 7cb45a72db7..b9f9334a062 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -2473,7 +2473,7 @@ uid and gid of FILE to NEWNAME. */)
if (NILP (ok_if_already_exists)
|| INTEGERP (ok_if_already_exists))
- barf_or_query_if_file_exists (encoded_newname, "copy to it",
+ barf_or_query_if_file_exists (newname, "copy to it",
INTEGERP (ok_if_already_exists), &out_st, 0);
else if (stat (SDATA (encoded_newname), &out_st) < 0)
out_st.st_mode = 0;
@@ -2782,7 +2782,7 @@ This is what happens in interactive use with M-x. */)
#endif
if (NILP (ok_if_already_exists)
|| INTEGERP (ok_if_already_exists))
- barf_or_query_if_file_exists (encoded_newname, "rename to it",
+ barf_or_query_if_file_exists (newname, "rename to it",
INTEGERP (ok_if_already_exists), 0, 0);
#ifndef BSD4_1
if (0 > rename (SDATA (encoded_file), SDATA (encoded_newname)))
@@ -2859,7 +2859,7 @@ This is what happens in interactive use with M-x. */)
if (NILP (ok_if_already_exists)
|| INTEGERP (ok_if_already_exists))
- barf_or_query_if_file_exists (encoded_newname, "make it a new name",
+ barf_or_query_if_file_exists (newname, "make it a new name",
INTEGERP (ok_if_already_exists), 0, 0);
unlink (SDATA (newname));
@@ -2920,7 +2920,7 @@ This happens for interactive use with M-x. */)
if (NILP (ok_if_already_exists)
|| INTEGERP (ok_if_already_exists))
- barf_or_query_if_file_exists (encoded_linkname, "make it a link",
+ barf_or_query_if_file_exists (linkname, "make it a link",
INTEGERP (ok_if_already_exists), 0, 0);
if (0 > symlink (SDATA (encoded_filename),
SDATA (encoded_linkname)))
diff --git a/src/gmalloc.c b/src/gmalloc.c
index 3f32617fc64..50535d4940c 100644
--- a/src/gmalloc.c
+++ b/src/gmalloc.c
@@ -1,6 +1,9 @@
/* This file is no longer automatically generated from libc. */
#define _MALLOC_INTERNAL
+#ifdef HAVE_GTK_AND_PTHREAD
+#define USE_PTHREAD
+#endif
/* The malloc headers and source files from the C library follow here. */
@@ -73,6 +76,10 @@ Fifth Floor, Boston, MA 02110-1301, USA.
#include <unistd.h>
#endif
+#ifdef USE_PTHREAD
+#include <pthread.h>
+#endif
+
#endif /* _MALLOC_INTERNAL. */
@@ -229,6 +236,15 @@ extern __ptr_t _malloc_internal PP ((__malloc_size_t __size));
extern __ptr_t _realloc_internal PP ((__ptr_t __ptr, __malloc_size_t __size));
extern void _free_internal PP ((__ptr_t __ptr));
+#ifdef USE_PTHREAD
+extern pthread_mutex_t _malloc_mutex;
+#define LOCK() pthread_mutex_lock (&_malloc_mutex)
+#define UNLOCK() pthread_mutex_unlock (&_malloc_mutex)
+#else
+#define LOCK()
+#define UNLOCK()
+#endif
+
#endif /* _MALLOC_INTERNAL. */
/* Given an address in the middle of a malloc'd object,
@@ -536,13 +552,14 @@ register_heapinfo ()
_heapinfo[block + blocks].busy.info.size = -blocks;
}
-/* Set everything up and remember that we have. */
-int
-__malloc_initialize ()
-{
- if (__malloc_initialized)
- return 0;
+#ifdef USE_PTHREAD
+static pthread_once_t malloc_init_once_control = PTHREAD_ONCE_INIT;
+pthread_mutex_t _malloc_mutex;
+#endif
+static void
+malloc_initialize_1 ()
+{
#ifdef GC_MCHECK
mcheck (NULL);
#endif
@@ -550,10 +567,21 @@ __malloc_initialize ()
if (__malloc_initialize_hook)
(*__malloc_initialize_hook) ();
+#ifdef USE_PTHREAD
+ {
+ pthread_mutexattr_t attr;
+
+ pthread_mutexattr_init (&attr);
+ pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE);
+ pthread_mutex_init (&_malloc_mutex, &attr);
+ pthread_mutexattr_destroy (&attr);
+ }
+#endif
+
heapsize = HEAP / BLOCKSIZE;
_heapinfo = (malloc_info *) align (heapsize * sizeof (malloc_info));
if (_heapinfo == NULL)
- return 0;
+ return;
memset (_heapinfo, 0, heapsize * sizeof (malloc_info));
_heapinfo[0].free.size = 0;
_heapinfo[0].free.next = _heapinfo[0].free.prev = 0;
@@ -565,7 +593,23 @@ __malloc_initialize ()
__malloc_initialized = 1;
PROTECT_MALLOC_STATE (1);
- return 1;
+ return;
+}
+
+/* Set everything up and remember that we have. */
+int
+__malloc_initialize ()
+{
+#ifdef USE_PTHREAD
+ pthread_once (&malloc_init_once_control, malloc_initialize_1);
+#else
+ if (__malloc_initialized)
+ return 0;
+
+ malloc_initialize_1 ();
+#endif
+
+ return __malloc_initialized;
}
static int morecore_recursing;
@@ -708,6 +752,7 @@ _malloc_internal (size)
return NULL;
#endif
+ LOCK ();
PROTECT_MALLOC_STATE (0);
if (size < sizeof (struct list))
@@ -765,7 +810,7 @@ _malloc_internal (size)
if (result == NULL)
{
PROTECT_MALLOC_STATE (1);
- return NULL;
+ goto out;
}
/* Link all fragments but the first into the free list. */
@@ -831,7 +876,7 @@ _malloc_internal (size)
}
result = morecore (wantblocks * BLOCKSIZE);
if (result == NULL)
- return NULL;
+ goto out;
block = BLOCK (result);
/* Put the new block at the end of the free list. */
_heapinfo[block].free.size = wantblocks;
@@ -886,6 +931,8 @@ _malloc_internal (size)
}
PROTECT_MALLOC_STATE (1);
+ out:
+ UNLOCK ();
return result;
}
@@ -996,6 +1043,7 @@ _free_internal (ptr)
if (ptr == NULL)
return;
+ LOCK ();
PROTECT_MALLOC_STATE (0);
for (l = _aligned_blocks; l != NULL; l = l->next)
@@ -1221,6 +1269,7 @@ _free_internal (ptr)
}
PROTECT_MALLOC_STATE (1);
+ UNLOCK ();
}
/* Return memory to the heap. */
@@ -1384,6 +1433,7 @@ _realloc_internal (ptr, size)
block = BLOCK (ptr);
+ LOCK ();
PROTECT_MALLOC_STATE (0);
type = _heapinfo[block].busy.type;
@@ -1398,7 +1448,7 @@ _realloc_internal (ptr, size)
{
memcpy (result, ptr, size);
_free_internal (ptr);
- return result;
+ goto out;
}
}
@@ -1451,7 +1501,7 @@ _realloc_internal (ptr, size)
(void) _malloc_internal (blocks * BLOCKSIZE);
_free_internal (previous);
}
- return NULL;
+ goto out;
}
if (ptr != result)
memmove (result, ptr, blocks * BLOCKSIZE);
@@ -1471,7 +1521,7 @@ _realloc_internal (ptr, size)
and copy the lesser of the new size and the old. */
result = _malloc_internal (size);
if (result == NULL)
- return NULL;
+ goto out;
memcpy (result, ptr, min (size, (__malloc_size_t) 1 << type));
_free_internal (ptr);
}
@@ -1479,6 +1529,8 @@ _realloc_internal (ptr, size)
}
PROTECT_MALLOC_STATE (1);
+ out:
+ UNLOCK ();
return result;
}
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 0f0e2e763ef..20a6e244a66 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -2506,6 +2506,7 @@ xg_update_menubar (menubar, f, list, iter, pos, val,
g_list_free (*list);
*list = iter = gtk_container_get_children (GTK_CONTAINER (menubar));
while (nr-- > 0) iter = g_list_next (iter);
+ if (iter) iter = g_list_next (iter);
val = val->next;
++pos;
}
diff --git a/src/indent.c b/src/indent.c
index 93ff40ba640..8495d43cb9c 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -737,7 +737,9 @@ string_display_width (string, beg, end)
DEFUN ("indent-to", Findent_to, Sindent_to, 1, 2, "NIndent to column: ",
doc: /* Indent from point with tabs and spaces until COLUMN is reached.
Optional second argument MINIMUM says always do at least MINIMUM spaces
-even if that goes past COLUMN; by default, MINIMUM is zero. */)
+even if that goes past COLUMN; by default, MINIMUM is zero.
+
+The return value is COLUMN. */)
(column, minimum)
Lisp_Object column, minimum;
{
@@ -951,7 +953,6 @@ The return value is the current column. */)
pos = PT;
pos_byte = PT_BYTE;
end = ZV;
- next_boundary = pos;
/* If we're starting past the desired column,
back up to beginning of line and scan from there. */
@@ -963,6 +964,8 @@ The return value is the current column. */)
col = 0;
}
+ next_boundary = pos;
+
while (pos < end)
{
while (pos == next_boundary)
diff --git a/src/intervals.c b/src/intervals.c
index 861cb24c598..5d9550da791 100644
--- a/src/intervals.c
+++ b/src/intervals.c
@@ -125,18 +125,24 @@ merge_properties (source, target)
while (CONSP (o))
{
sym = XCAR (o);
- val = Fmemq (sym, target->plist);
+ o = XCDR (o);
+ CHECK_CONS (o);
+
+ val = target->plist;
+ while (CONSP (val) && !EQ (XCAR (val), sym))
+ {
+ val = XCDR (val);
+ if (!CONSP (val))
+ break;
+ val = XCDR (val);
+ }
if (NILP (val))
{
- o = XCDR (o);
- CHECK_CONS (o);
val = XCAR (o);
target->plist = Fcons (sym, Fcons (val, target->plist));
- o = XCDR (o);
}
- else
- o = Fcdr (XCDR (o));
+ o = XCDR (o);
}
}
@@ -147,8 +153,8 @@ int
intervals_equal (i0, i1)
INTERVAL i0, i1;
{
- register Lisp_Object i0_cdr, i0_sym, i1_val;
- register int i1_len;
+ register Lisp_Object i0_cdr, i0_sym;
+ register Lisp_Object i1_cdr, i1_val;
if (DEFAULT_INTERVAL_P (i0) && DEFAULT_INTERVAL_P (i1))
return 1;
@@ -156,39 +162,43 @@ intervals_equal (i0, i1)
if (DEFAULT_INTERVAL_P (i0) || DEFAULT_INTERVAL_P (i1))
return 0;
- i1_len = XFASTINT (Flength (i1->plist));
- if (i1_len & 0x1) /* Paranoia -- plists are always even */
- abort ();
- i1_len /= 2;
i0_cdr = i0->plist;
- while (CONSP (i0_cdr))
+ i1_cdr = i1->plist;
+ while (CONSP (i0_cdr) && CONSP (i1_cdr))
{
- /* Lengths of the two plists were unequal. */
- if (i1_len == 0)
- return 0;
-
i0_sym = XCAR (i0_cdr);
- i1_val = Fmemq (i0_sym, i1->plist);
+ i0_cdr = XCDR (i0_cdr);
+ if (!CONSP (i0_cdr))
+ return 0; /* abort (); */
+ i1_val = i1->plist;
+ while (CONSP (i1_val) && !EQ (XCAR (i1_val), i0_sym))
+ {
+ i1_val = XCDR (i1_val);
+ if (!CONSP (i1_val))
+ return 0; /* abort (); */
+ i1_val = XCDR (i1_val);
+ }
/* i0 has something i1 doesn't. */
if (EQ (i1_val, Qnil))
return 0;
/* i0 and i1 both have sym, but it has different values in each. */
- i0_cdr = XCDR (i0_cdr);
- CHECK_CONS (i0_cdr);
- if (!EQ (Fcar (Fcdr (i1_val)), XCAR (i0_cdr)))
+ if (!CONSP (i1_val)
+ || (i1_val = XCDR (i1_val), !CONSP (i1_val))
+ || !EQ (XCAR (i1_val), XCAR (i0_cdr)))
return 0;
i0_cdr = XCDR (i0_cdr);
- i1_len--;
- }
- /* Lengths of the two plists were unequal. */
- if (i1_len > 0)
- return 0;
+ i1_cdr = XCDR (i1_cdr);
+ if (!CONSP (i1_cdr))
+ return 0; /* abort (); */
+ i1_cdr = XCDR (i1_cdr);
+ }
- return 1;
+ /* Lengths of the two plists were equal. */
+ return (NILP (i0_cdr) && NILP (i1_cdr));
}
@@ -2538,7 +2548,7 @@ set_intervals_multibyte_1 (i, multi_flag, start, start_byte, end, end_byte)
temp = CHAR_TO_BYTE (left_end);
/* If LEFT_END_BYTE is in the middle of a character,
- adjust it and LEFT_END to a char boundary. */
+ adjust it and LEFT_END to a char boundary. */
if (left_end_byte > temp)
{
left_end_byte = temp;
@@ -2570,7 +2580,7 @@ set_intervals_multibyte_1 (i, multi_flag, start, start_byte, end, end_byte)
right_start = BYTE_TO_CHAR (right_start_byte);
/* If RIGHT_START_BYTE is in the middle of a character,
- adjust it and RIGHT_START to a char boundary. */
+ adjust it and RIGHT_START to a char boundary. */
temp = CHAR_TO_BYTE (right_start);
if (right_start_byte < temp)
diff --git a/src/keyboard.c b/src/keyboard.c
index 686d16a504f..3404c60a93a 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -1764,7 +1764,7 @@ command_loop_1 ()
if (SYMBOLP (cmd))
{
Lisp_Object cmd1;
- if (cmd1 = Fcommand_remapping (cmd, Qnil), !NILP (cmd1))
+ if (cmd1 = Fcommand_remapping (cmd, Qnil, Qnil), !NILP (cmd1))
cmd = cmd1;
}
@@ -9008,9 +9008,9 @@ read_key_sequence (keybuf, bufsize, prompt, dont_downcase_last,
of the place where a mouse click occurred. */
volatile int localized_local_map = 0;
- /* The index in defs[] of the first keymap that has a binding for
+ /* The index in submaps[] of the first keymap that has a binding for
this key sequence. In other words, the lowest i such that
- defs[i] is non-nil. */
+ submaps[i] is non-nil. */
volatile int first_binding;
/* Index of the first key that has no binding.
It is useless to try fkey.start larger than that. */
diff --git a/src/keymap.c b/src/keymap.c
index 0aaf9373ba1..a5d50b7fbf1 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -1217,23 +1217,42 @@ binding KEY to DEF is added at the front of KEYMAP. */)
/* This function may GC (it calls Fkey_binding). */
-DEFUN ("command-remapping", Fcommand_remapping, Scommand_remapping, 1, 2, 0,
- doc: /* Return the remapping for command COMMAND in current keymaps.
+DEFUN ("command-remapping", Fcommand_remapping, Scommand_remapping, 1, 3, 0,
+ doc: /* Return the remapping for command COMMAND.
Returns nil if COMMAND is not remapped (or not a symbol).
If the optional argument POSITION is non-nil, it specifies a mouse
position as returned by `event-start' and `event-end', and the
remapping occurs in the keymaps associated with it. It can also be a
number or marker, in which case the keymap properties at the specified
-buffer position instead of point are used. */)
- (command, position)
- Lisp_Object command, position;
+buffer position instead of point are used. The KEYMAPS argument is
+ignored if POSITION is non-nil.
+
+If the optional argument KEYMAPS is non-nil, it should be a list of
+keymaps to search for command remapping. Otherwise, search for the
+remapping in all currently active keymaps. */)
+ (command, position, keymaps)
+ Lisp_Object command, position, keymaps;
{
if (!SYMBOLP (command))
return Qnil;
ASET (command_remapping_vector, 1, command);
- return Fkey_binding (command_remapping_vector, Qnil, Qt, position);
+
+ if (NILP (keymaps))
+ return Fkey_binding (command_remapping_vector, Qnil, Qt, position);
+ else
+ {
+ Lisp_Object maps, binding;
+
+ for (maps = keymaps; !NILP (maps); maps = Fcdr (maps))
+ {
+ binding = Flookup_key (Fcar (maps), command_remapping_vector, Qnil);
+ if (!NILP (binding) && !INTEGERP (binding))
+ return binding;
+ }
+ return Qnil;
+ }
}
/* Value is number if KEY is too long; nil if valid but has no definition. */
@@ -1394,8 +1413,10 @@ silly_event_symbol_error (c)
static Lisp_Object *cmm_modes = NULL, *cmm_maps = NULL;
static int cmm_size = 0;
-/* Store a pointer to an array of the keymaps of the currently active
- minor modes in *buf, and return the number of maps it contains.
+/* Store a pointer to an array of the currently active minor modes in
+ *modeptr, a pointer to an array of the keymaps of the currently
+ active minor modes in *mapptr, and return the number of maps
+ *mapptr contains.
This function always returns a pointer to the same buffer, and may
free or reallocate it, so if you want to keep it for a long time or
@@ -1761,7 +1782,7 @@ specified buffer position instead of point are used.
if (NILP (no_remap) && SYMBOLP (value))
{
Lisp_Object value1;
- if (value1 = Fcommand_remapping (value, position), !NILP (value1))
+ if (value1 = Fcommand_remapping (value, position, Qnil), !NILP (value1))
value = value1;
}
@@ -2570,15 +2591,6 @@ where_is_internal (definition, keymaps, firstonly, noindirect, no_remap)
/* 1 means ignore all menu bindings entirely. */
int nomenus = !NILP (firstonly) && !EQ (firstonly, Qnon_ascii);
- /* If this command is remapped, then it has no key bindings
- of its own. */
- if (NILP (no_remap) && SYMBOLP (definition))
- {
- Lisp_Object tem;
- if (tem = Fcommand_remapping (definition, Qnil), !NILP (tem))
- return Qnil;
- }
-
found = keymaps;
while (CONSP (found))
{
@@ -2592,6 +2604,13 @@ where_is_internal (definition, keymaps, firstonly, noindirect, no_remap)
found = Qnil;
sequences = Qnil;
+ /* If this command is remapped, then it has no key bindings
+ of its own. */
+ if (NILP (no_remap)
+ && SYMBOLP (definition)
+ && !NILP (Fcommand_remapping (definition, Qnil, keymaps)))
+ RETURN_UNGCPRO (Qnil);
+
for (; !NILP (maps); maps = Fcdr (maps))
{
/* Key sequence to reach map, and the map that it reaches */
diff --git a/src/keymap.h b/src/keymap.h
index 9614f578f37..b305a318944 100644
--- a/src/keymap.h
+++ b/src/keymap.h
@@ -29,7 +29,7 @@ EXFUN (Fmake_sparse_keymap, 1);
EXFUN (Fkeymap_prompt, 1);
EXFUN (Fdefine_key, 3);
EXFUN (Flookup_key, 3);
-EXFUN (Fcommand_remapping, 2);
+EXFUN (Fcommand_remapping, 3);
EXFUN (Fkey_binding, 4);
EXFUN (Fkey_description, 2);
EXFUN (Fsingle_key_description, 2);
diff --git a/src/lread.c b/src/lread.c
index cee6cf5a92e..cc3ae7627d1 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -329,18 +329,18 @@ readchar (readcharfun)
{
BLOCK_INPUT;
c = getc (instream);
- UNBLOCK_INPUT;
#ifdef EINTR
/* Interrupted reads have been observed while reading over the network */
while (c == EOF && ferror (instream) && errno == EINTR)
{
+ UNBLOCK_INPUT;
QUIT;
- clearerr (instream);
BLOCK_INPUT;
+ clearerr (instream);
c = getc (instream);
- UNBLOCK_INPUT;
}
#endif
+ UNBLOCK_INPUT;
return c;
}
diff --git a/src/m/hp800.h b/src/m/hp800.h
index eed53183569..f48f4c8152e 100644
--- a/src/m/hp800.h
+++ b/src/m/hp800.h
@@ -69,10 +69,9 @@ Boston, MA 02110-1301, USA. */
#define XSET(var, type, ptr) \
((var) = ((int)(type) << VALBITS) + (((unsigned) (ptr) << BITS_PER_INT-VALBITS) >> BITS_PER_INT-VALBITS))
-/* Definitions for GNU/Linux. (HP/UX is unsupported because of the
- removal of unexhp9k800.c due to lack of legal papers.) */
+/* Common definitions for HPUX and GNU/Linux. */
-#ifdef GNU_LINUX
+#if defined (__hpux) || defined (GNU_LINUX)
/* Now define a symbol for the cpu type, if your compiler
does not define it automatically:
Ones defined so far include vax, m68000, ns16000, pyramid,
@@ -94,6 +93,12 @@ Boston, MA 02110-1301, USA. */
#define NO_REMAP
+#endif /* __hpux or GNU_LINUX */
+
+/* Stuff for just GNU/Linux. */
+
+#ifdef GNU_LINUX
+
/* Data type of load average, as read out of kmem. */
#define LOAD_AVE_TYPE long
@@ -104,6 +109,72 @@ Boston, MA 02110-1301, USA. */
#endif /* GNU_LINUX */
+/* Stuff for just HPUX. */
+
+#ifdef __hpux
+
+/* Define VIRT_ADDR_VARIES if the virtual addresses of
+ pure and impure space as loaded can vary, and even their
+ relative order cannot be relied on.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ numerically. */
+
+#define VIRT_ADDR_VARIES
+
+/* the data segment on this machine always starts at address 0x40000000. */
+
+#define DATA_SEG_BITS 0x40000000
+
+#define DATA_START 0x40000000
+#define TEXT_START 0x00000000
+
+/* This machine requires completely different unexec code
+ which lives in a separate file. Specify the file name. */
+
+#define UNEXEC unexhp9k800.o
+
+#define LIBS_MACHINE
+#define LIBS_DEBUG
+
+/* Include the file bsdtty.h, since this machine has job control. */
+#define NEED_BSDTTY
+
+/* Data type of load average, as read out of kmem. */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) ((int) (x * 100.0))
+
+/* The symbol in the kernel where the load average is found
+ is named _avenrun. At this time there are two major flavors
+ of hp-ux (there is the s800 and s300 (s200) flavors). The
+ differences are thusly moved to the corresponding machine description file.
+*/
+
+/* no underscore please */
+#define LDAV_SYMBOL "avenrun"
+
+#if 0 /* Supposedly no longer true. */
+/* In hpux, for unknown reasons, S_IFLNK is defined even though
+ symbolic links do not exist.
+ Make sure our conditionals based on S_IFLNK are not confused.
+
+ Here we assume that stat.h is included before config.h
+ so that we can override it here. */
+
+#undef S_IFLNK
+#endif
+
+/* On USG systems these have different names. */
+
+#define index strchr
+#define rindex strrchr
+
+#endif /* __hpux */
+
/* Systems with GCC don't need to lose. */
#ifdef __NetBSD__
# ifdef __GNUC__
diff --git a/src/m/sr2k.h b/src/m/sr2k.h
new file mode 100644
index 00000000000..2342bf8ef20
--- /dev/null
+++ b/src/m/sr2k.h
@@ -0,0 +1,160 @@
+/* machine description file for Hitachi SR2001/SR2201 machines.
+ Copyright (C) 1996, 2001, 2002, 2003, 2004, 2005,
+ 2006, 2007 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA. */
+
+
+/* The following line tells the configuration script what sort of
+ operating system this machine is likely to run.
+ USUAL-OPSYS="hpux" */
+
+/* Define WORDS_BIG_ENDIAN iff lowest-numbered byte in a word
+ is the most significant byte. */
+
+#define WORDS_BIG_ENDIAN
+
+/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
+ * group of arguments and treat it as an array of the arguments. */
+
+#define NO_ARG_ARRAY
+
+/* Define WORD_MACHINE if addresses and such have
+ * to be corrected before they can be used as byte counts. */
+
+#undef WORD_MACHINE
+
+/* Now define a symbol for the cpu type, if your compiler
+ does not define it automatically:
+ Ones defined so far include vax, m68000, ns16000, pyramid,
+ orion, tahoe, APOLLO and many others */
+#ifndef hp9000s800
+# define hp9000s800
+#endif
+
+/* Use type int rather than a union, to represent Lisp_Object */
+/* This is desirable for most machines. */
+
+#define NO_UNION_TYPE
+
+/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
+ the bit field into an int. In other words, if bit fields
+ are always unsigned.
+
+ If you use NO_UNION_TYPE, this flag does not matter. */
+
+#define EXPLICIT_SIGN_EXTEND
+
+/* The standard definitions of these macros would work ok,
+ but these are faster because the constants are short. */
+
+
+#define XUINT(a) (((unsigned)(a) << BITS_PER_INT-VALBITS) >> BITS_PER_INT-VALBITS)
+
+#define XSET(var, type, ptr) \
+ ((var) = ((int)(type) << VALBITS) + (((unsigned) (ptr) << BITS_PER_INT-VALBITS) >> BITS_PER_INT-VALBITS))
+
+/* #ifdef __hpux */
+/* Now define a symbol for the cpu type, if your compiler
+ does not define it automatically:
+ Ones defined so far include vax, m68000, ns16000, pyramid,
+ orion, tahoe, APOLLO and many others */
+
+#ifndef hp9000s800
+# define hp9000s800
+#endif
+
+
+/* Data type of load average, as read out of kmem. */
+
+#define LOAD_AVE_TYPE double
+
+/* Convert that into an integer that is 100 for a load average of 1.0 */
+
+#define LOAD_AVE_CVT(x) ((int) (x * 100.0))
+
+
+/* Define CANNOT_DUMP on machines where unexec does not work.
+ Then the function dump-emacs will not be defined
+ and temacs will do (load "loadup") automatically unless told otherwise. */
+
+#undef CANNOT_DUMP
+
+/* Define VIRT_ADDR_VARIES if the virtual addresses of
+ pure and impure space as loaded can vary, and even their
+ relative order cannot be relied on.
+
+ Otherwise Emacs assumes that text space precedes data space,
+ numerically. */
+
+#define VIRT_ADDR_VARIES
+
+/* the data segment on this machine always starts at address 0x40000000. */
+
+#define DATA_SEG_BITS 0x40000000
+
+#define DATA_START 0x40000000
+#define TEXT_START 0x00000000
+
+/* Define NO_REMAP if memory segmentation makes it not work well
+ to change the boundary between the text section and data section
+ when Emacs is dumped. If you define this, the preloaded Lisp
+ code will not be sharable; but that's better than failing completely. */
+
+#define NO_REMAP
+
+/* This machine requires completely different unexec code
+ which lives in a separate file. Specify the file name. */
+
+#define UNEXEC unexhp9k800.o
+
+#define LIBS_MACHINE
+#define LIBS_DEBUG
+
+/* Include the file bsdtty.h, since this machine has job control. */
+/* #define NEED_BSDTTY */
+
+/* The symbol in the kernel where the load average is found
+ is named _avenrun. At this time there are two major flavors
+ of hp-ux (there is the s800 and s300 (s200) flavors). The
+ differences are thusly moved to the corresponding machine description file.
+*/
+
+/* no underscore please */
+#define LDAV_SYMBOL "avenrun"
+
+#if 0 /* Supposedly no longer true. */
+/* In hpux, for unknown reasons, S_IFLNK is defined even though
+ symbolic links do not exist.
+ Make sure our conditionals based on S_IFLNK are not confused.
+
+ Here we assume that stat.h is included before config.h
+ so that we can override it here. */
+
+#undef S_IFLNK
+#endif
+
+/* On USG systems these have different names. */
+
+#define index strchr
+#define rindex strrchr
+
+/* #endif */
+
+/* arch-tag: 4ced5b51-ffe6-4be1-9954-eb40657023a5
+ (do not change this comment) */
diff --git a/src/mac.c b/src/mac.c
index 5084a02b27d..8363326cc05 100644
--- a/src/mac.c
+++ b/src/mac.c
@@ -1835,6 +1835,8 @@ xrm_get_preference_database (application)
if (app_id == NULL)
goto out;
}
+ if (!CFPreferencesAppSynchronize (app_id))
+ goto out;
key_set = CFSetCreateMutable (NULL, 0, &kCFCopyStringSetCallBacks);
if (key_set == NULL)
@@ -4650,6 +4652,9 @@ otherwise. */)
if (app_id == NULL)
goto out;
}
+ if (!CFPreferencesAppSynchronize (app_id))
+ goto out;
+
key_str = cfstring_create_with_string (XCAR (key));
if (key_str == NULL)
goto out;
diff --git a/src/macfns.c b/src/macfns.c
index c05906d6499..6ce4b66031e 100644
--- a/src/macfns.c
+++ b/src/macfns.c
@@ -3105,8 +3105,8 @@ If omitted or nil, that stands for the selected frame's display. */)
Lisp_Object display;
{
struct mac_display_info *dpyinfo = check_x_display_info (display);
+ float mm_per_pixel;
- /* Only of the main display. */
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
#if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
if (CGDisplayScreenSize != NULL)
@@ -3116,9 +3116,8 @@ If omitted or nil, that stands for the selected frame's display. */)
BLOCK_INPUT;
size = CGDisplayScreenSize (kCGDirectMainDisplay);
+ mm_per_pixel = size.height / CGDisplayPixelsHigh (kCGDirectMainDisplay);
UNBLOCK_INPUT;
-
- return make_number ((int) (size.height + .5f));
}
#if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
else
@@ -3127,9 +3126,11 @@ If omitted or nil, that stands for the selected frame's display. */)
#if MAC_OS_X_VERSION_MAX_ALLOWED < 1030 || MAC_OS_X_VERSION_MIN_REQUIRED == 1020
{
/* This is an approximation. */
- return make_number ((int) (dpyinfo->height * 25.4 / dpyinfo->resy));
+ mm_per_pixel = 25.4f / dpyinfo->resy;
}
#endif
+
+ return make_number ((int) (dpyinfo->height * mm_per_pixel + 0.5f));
}
DEFUN ("x-display-mm-width", Fx_display_mm_width, Sx_display_mm_width, 0, 1, 0,
@@ -3141,8 +3142,8 @@ If omitted or nil, that stands for the selected frame's display. */)
Lisp_Object display;
{
struct mac_display_info *dpyinfo = check_x_display_info (display);
+ float mm_per_pixel;
- /* Only of the main display. */
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030
#if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
if (CGDisplayScreenSize != NULL)
@@ -3152,9 +3153,8 @@ If omitted or nil, that stands for the selected frame's display. */)
BLOCK_INPUT;
size = CGDisplayScreenSize (kCGDirectMainDisplay);
+ mm_per_pixel = size.width / CGDisplayPixelsWide (kCGDirectMainDisplay);
UNBLOCK_INPUT;
-
- return make_number ((int) (size.width + .5f));
}
#if MAC_OS_X_VERSION_MIN_REQUIRED == 1020
else
@@ -3163,9 +3163,11 @@ If omitted or nil, that stands for the selected frame's display. */)
#if MAC_OS_X_VERSION_MAX_ALLOWED < 1030 || MAC_OS_X_VERSION_MIN_REQUIRED == 1020
{
/* This is an approximation. */
- return make_number ((int) (dpyinfo->width * 25.4 / dpyinfo->resx));
+ mm_per_pixel = 25.4f / dpyinfo->resx;
}
#endif
+
+ return make_number ((int) (dpyinfo->width * mm_per_pixel + 0.5f));
}
DEFUN ("x-display-backing-store", Fx_display_backing_store,
@@ -4115,6 +4117,8 @@ DEFUN ("x-show-tip", Fx_show_tip, Sx_show_tip, 1, 6, 0,
doc: /* Show STRING in a "tooltip" window on frame FRAME.
A tooltip window is a small window displaying a string.
+This is an internal function; Lisp code should call `tooltip-show'.
+
FRAME nil or omitted means use the selected frame.
PARMS is an optional list of frame parameters which can be used to
diff --git a/src/macselect.c b/src/macselect.c
index 8e86c7651e2..c6aa97d5be9 100644
--- a/src/macselect.c
+++ b/src/macselect.c
@@ -386,7 +386,9 @@ get_scrap_target_type_list (scrap)
{
ScrapFlavorType flavor_type = 0;
- if (CONSP (XCAR (rest)) && SYMBOLP (target_type = XCAR (XCAR (rest)))
+ if (CONSP (XCAR (rest))
+ && (target_type = XCAR (XCAR (rest)),
+ SYMBOLP (target_type))
&& (flavor_type = scrap_has_target_type (scrap, target_type)))
{
result = Fcons (target_type, result);
@@ -449,9 +451,11 @@ x_own_selection (selection_name, selection_value)
for (rest = Vselection_converter_alist; CONSP (rest); rest = XCDR (rest))
{
if (!(CONSP (XCAR (rest))
- && SYMBOLP (type = XCAR (XCAR (rest)))
+ && (type = XCAR (XCAR (rest)),
+ SYMBOLP (type))
&& valid_scrap_target_type_p (type)
- && SYMBOLP (handler_fn = XCDR (XCAR (rest)))))
+ && (handler_fn = XCDR (XCAR (rest)),
+ SYMBOLP (handler_fn))))
continue;
if (!NILP (handler_fn))
@@ -1852,10 +1856,7 @@ and the local selection value (whatever was given to `x-own-selection').
The function should return the value to send to the Scrap Manager
\(must be a string). A return value of nil
-means that the conversion could not be done.
-A return value which is the symbol `NULL'
-means that a side-effect was executed,
-and there is no meaningful selection value. */);
+means that the conversion could not be done. */);
Vselection_converter_alist = Qnil;
DEFVAR_LISP ("x-lost-selection-functions", &Vx_lost_selection_functions,
diff --git a/src/macterm.c b/src/macterm.c
index f26c06680bc..316e61cc537 100644
--- a/src/macterm.c
+++ b/src/macterm.c
@@ -52,6 +52,7 @@ Boston, MA 02110-1301, USA. */
#include <LowMem.h>
#include <Controls.h>
#include <Windows.h>
+#include <Displays.h>
#if defined (__MRC__) || (__MSL__ >= 0x6000)
#include <ControlDefinitions.h>
#endif
@@ -7172,11 +7173,14 @@ create_text_encoding_info_alist ()
Lisp_Object existing_info;
if (!(CONSP (charset_info)
- && STRINGP (charset = XCAR (charset_info))
+ && (charset = XCAR (charset_info),
+ STRINGP (charset))
&& CONSP (XCDR (charset_info))
- && INTEGERP (text_encoding = XCAR (XCDR (charset_info)))
+ && (text_encoding = XCAR (XCDR (charset_info)),
+ INTEGERP (text_encoding))
&& CONSP (XCDR (XCDR (charset_info)))
- && SYMBOLP (coding_system = XCAR (XCDR (XCDR (charset_info))))))
+ && (coding_system = XCAR (XCDR (XCDR (charset_info))),
+ SYMBOLP (coding_system))))
continue;
existing_info = assq_no_quit (text_encoding, result);
@@ -8866,6 +8870,9 @@ int mac_pass_control_to_system;
Carbon/Apple event handlers. */
static struct input_event *read_socket_inev = NULL;
+/* Whether or not the screen configuration has changed. */
+static int mac_screen_config_changed = 0;
+
Point saved_menu_event_location;
/* Apple Events */
@@ -10396,6 +10403,87 @@ remove_window_handler (window)
}
+static pascal void
+mac_handle_dm_notification (event)
+ AppleEvent *event;
+{
+ mac_screen_config_changed = 1;
+}
+
+static OSErr
+init_dm_notification_handler ()
+{
+ OSErr err;
+ static DMNotificationUPP handle_dm_notificationUPP = NULL;
+ ProcessSerialNumber psn;
+
+ if (handle_dm_notificationUPP == NULL)
+ handle_dm_notificationUPP =
+ NewDMNotificationUPP (mac_handle_dm_notification);
+
+ err = GetCurrentProcess (&psn);
+ if (err == noErr)
+ err = DMRegisterNotifyProc (handle_dm_notificationUPP, &psn);
+
+ return err;
+}
+
+static void
+mac_get_screen_info (dpyinfo)
+ struct mac_display_info *dpyinfo;
+{
+#ifdef MAC_OSX
+ /* HasDepth returns true if it is possible to have a 32 bit display,
+ but this may not be what is actually used. Mac OSX can do better. */
+ dpyinfo->color_p = CGDisplaySamplesPerPixel (kCGDirectMainDisplay) > 1;
+ dpyinfo->n_planes = CGDisplayBitsPerPixel (kCGDirectMainDisplay);
+ {
+ CGDisplayErr err;
+ CGDisplayCount ndisps;
+ CGDirectDisplayID *displays;
+
+ err = CGGetActiveDisplayList (0, NULL, &ndisps);
+ if (err == noErr)
+ {
+ displays = alloca (sizeof (CGDirectDisplayID) * ndisps);
+ err = CGGetActiveDisplayList (ndisps, displays, &ndisps);
+ }
+ if (err == noErr)
+ {
+ CGRect bounds = CGRectZero;
+
+ while (ndisps-- > 0)
+ bounds = CGRectUnion (bounds, CGDisplayBounds (displays[ndisps]));
+ dpyinfo->height = CGRectGetHeight (bounds);
+ dpyinfo->width = CGRectGetWidth (bounds);
+ }
+ else
+ {
+ dpyinfo->height = CGDisplayPixelsHigh (kCGDirectMainDisplay);
+ dpyinfo->width = CGDisplayPixelsWide (kCGDirectMainDisplay);
+ }
+ }
+#else /* !MAC_OSX */
+ {
+ GDHandle gdh = GetMainDevice ();
+ Rect rect = (**gdh).gdRect;
+
+ dpyinfo->color_p = TestDeviceAttribute (gdh, gdDevType);
+ for (dpyinfo->n_planes = 32; dpyinfo->n_planes > 0; dpyinfo->n_planes >>= 1)
+ if (HasDepth (gdh, dpyinfo->n_planes, gdDevType, dpyinfo->color_p))
+ break;
+
+ for (gdh = DMGetFirstScreenDevice (dmOnlyActiveDisplays); gdh;
+ gdh = DMGetNextScreenDevice (gdh, dmOnlyActiveDisplays))
+ UnionRect (&rect, &(**gdh).gdRect, &rect);
+
+ dpyinfo->height = rect.bottom - rect.top;
+ dpyinfo->width = rect.right - rect.left;
+ }
+#endif /* !MAC_OSX */
+}
+
+
#if __profile__
void
profiler_exit_proc ()
@@ -10453,6 +10541,8 @@ main (void)
init_apple_event_handler ();
+ init_dm_notification_handler ();
+
{
char **argv;
int argc = 0;
@@ -10530,8 +10620,7 @@ mac_post_mouse_moved_event ()
{
Point mouse_pos;
- GetMouse (&mouse_pos);
- LocalToGlobal (&mouse_pos);
+ GetGlobalMouse (&mouse_pos);
err = SetEventParameter (event, kEventParamMouseLocation, typeQDPoint,
sizeof (Point), &mouse_pos);
}
@@ -11375,6 +11464,12 @@ XTread_socket (sd, expected, hold_quit)
pending_autoraise_frame = 0;
}
+ if (mac_screen_config_changed)
+ {
+ mac_get_screen_info (dpyinfo);
+ mac_screen_config_changed = 0;
+ }
+
#if !USE_CARBON_EVENTS
/* Check which frames are still visible. We do this here because
there doesn't seem to be any direct notification from the Window
@@ -11509,62 +11604,7 @@ make_mac_terminal_frame (struct frame *f)
Initialization
***********************************************************************/
-int mac_initialized = 0;
-
-void
-mac_initialize_display_info ()
-{
- struct mac_display_info *dpyinfo = &one_mac_display_info;
-
- bzero (dpyinfo, sizeof (*dpyinfo));
-
-#ifdef MAC_OSX
- dpyinfo->mac_id_name
- = (char *) xmalloc (SCHARS (Vinvocation_name)
- + SCHARS (Vsystem_name)
- + 2);
- sprintf (dpyinfo->mac_id_name, "%s@%s",
- SDATA (Vinvocation_name), SDATA (Vsystem_name));
-#else
- dpyinfo->mac_id_name = (char *) xmalloc (strlen ("Mac Display") + 1);
- strcpy (dpyinfo->mac_id_name, "Mac Display");
-#endif
-
- dpyinfo->reference_count = 0;
- dpyinfo->resx = 72.0;
- dpyinfo->resy = 72.0;
-#ifdef MAC_OSX
- /* HasDepth returns true if it is possible to have a 32 bit display,
- but this may not be what is actually used. Mac OSX can do better. */
- dpyinfo->color_p = CGDisplaySamplesPerPixel (kCGDirectMainDisplay) > 1;
- dpyinfo->n_planes = CGDisplayBitsPerPixel (kCGDirectMainDisplay);
- dpyinfo->height = CGDisplayPixelsHigh (kCGDirectMainDisplay);
- dpyinfo->width = CGDisplayPixelsWide (kCGDirectMainDisplay);
-#else
- {
- GDHandle main_device_handle = LMGetMainDevice();
-
- dpyinfo->color_p = TestDeviceAttribute (main_device_handle, gdDevType);
- for (dpyinfo->n_planes = 32; dpyinfo->n_planes > 0; dpyinfo->n_planes >>= 1)
- if (HasDepth (main_device_handle, dpyinfo->n_planes,
- gdDevType, dpyinfo->color_p))
- break;
- dpyinfo->height = (**main_device_handle).gdRect.bottom;
- dpyinfo->width = (**main_device_handle).gdRect.right;
- }
-#endif
- dpyinfo->grabbed = 0;
- dpyinfo->root_window = NULL;
- dpyinfo->image_cache = make_image_cache ();
-
- dpyinfo->mouse_face_beg_row = dpyinfo->mouse_face_beg_col = -1;
- dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_end_col = -1;
- dpyinfo->mouse_face_face_id = DEFAULT_FACE_ID;
- dpyinfo->mouse_face_window = Qnil;
- dpyinfo->mouse_face_overlay = Qnil;
- dpyinfo->mouse_face_hidden = 0;
-}
-
+static int mac_initialized = 0;
static XrmDatabase
mac_make_rdb (xrm_option)
@@ -11598,9 +11638,37 @@ mac_term_init (display_name, xrm_option, resource_name)
if (x_display_list)
error ("Sorry, this version can only handle one display");
- mac_initialize_display_info ();
-
dpyinfo = &one_mac_display_info;
+ bzero (dpyinfo, sizeof (*dpyinfo));
+
+#ifdef MAC_OSX
+ dpyinfo->mac_id_name
+ = (char *) xmalloc (SCHARS (Vinvocation_name)
+ + SCHARS (Vsystem_name)
+ + 2);
+ sprintf (dpyinfo->mac_id_name, "%s@%s",
+ SDATA (Vinvocation_name), SDATA (Vsystem_name));
+#else
+ dpyinfo->mac_id_name = (char *) xmalloc (strlen ("Mac Display") + 1);
+ strcpy (dpyinfo->mac_id_name, "Mac Display");
+#endif
+
+ dpyinfo->reference_count = 0;
+ dpyinfo->resx = 72.0;
+ dpyinfo->resy = 72.0;
+
+ mac_get_screen_info (dpyinfo);
+
+ dpyinfo->grabbed = 0;
+ dpyinfo->root_window = NULL;
+ dpyinfo->image_cache = make_image_cache ();
+
+ dpyinfo->mouse_face_beg_row = dpyinfo->mouse_face_beg_col = -1;
+ dpyinfo->mouse_face_end_row = dpyinfo->mouse_face_end_col = -1;
+ dpyinfo->mouse_face_face_id = DEFAULT_FACE_ID;
+ dpyinfo->mouse_face_window = Qnil;
+ dpyinfo->mouse_face_overlay = Qnil;
+ dpyinfo->mouse_face_hidden = 0;
dpyinfo->xrdb = mac_make_rdb (xrm_option);
@@ -11618,6 +11686,7 @@ mac_term_init (display_name, xrm_option, resource_name)
return dpyinfo;
}
+
/* Get rid of display DPYINFO, assuming all frames are already gone. */
void
@@ -11838,6 +11907,8 @@ mac_initialize ()
init_apple_event_handler ();
+ init_dm_notification_handler ();
+
if (!inhibit_window_system)
{
static const ProcessSerialNumber psn = {0, kCurrentProcess};
diff --git a/src/print.c b/src/print.c
index cbf5830a85b..250b62ec3a5 100644
--- a/src/print.c
+++ b/src/print.c
@@ -796,7 +796,7 @@ A printed representation of an object is text which describes that object. */)
Lisp_Object printcharfun;
/* struct gcpro gcpro1, gcpro2; */
Lisp_Object save_deactivate_mark;
- int count = specpdl_ptr - specpdl;
+ int count = SPECPDL_INDEX ();
struct buffer *previous;
specbind (Qinhibit_modification_hooks, Qt);
diff --git a/src/process.c b/src/process.c
index 6d84d4c4a87..56e4335ca2c 100644
--- a/src/process.c
+++ b/src/process.c
@@ -1268,7 +1268,7 @@ Returns nil if format of ADDRESS is invalid. */)
if (VECTORP (address)) /* AF_INET or AF_INET6 */
{
register struct Lisp_Vector *p = XVECTOR (address);
- Lisp_Object args[6];
+ Lisp_Object args[10];
int nargs, i;
if (p->size == 4 || (p->size == 5 && !NILP (omit_port)))
@@ -1295,7 +1295,20 @@ Returns nil if format of ADDRESS is invalid. */)
return Qnil;
for (i = 0; i < nargs; i++)
- args[i+1] = p->contents[i];
+ {
+ EMACS_INT element = XINT (p->contents[i]);
+
+ if (element < 0 || element > 65535)
+ return Qnil;
+
+ if (nargs <= 5 /* IPv4 */
+ && i < 4 /* host, not port */
+ && element > 255)
+ return Qnil;
+
+ args[i+1] = p->contents[i];
+ }
+
return Fformat (nargs+1, args);
}
@@ -1305,7 +1318,6 @@ Returns nil if format of ADDRESS is invalid. */)
args[0] = build_string ("<Family %d>");
args[1] = Fcar (address);
return Fformat (2, args);
-
}
return Qnil;
@@ -1411,7 +1423,6 @@ list_processes_1 (query_only)
if (CONSP (p->status))
symbol = XCAR (p->status);
-
if (EQ (symbol, Qsignal))
{
Lisp_Object tem;
@@ -4811,8 +4822,8 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display,
subprocess termination and SIGCHLD. */
else if (nread == 0 && !NETCONN_P (proc))
;
-#endif /* O_NDELAY */
-#endif /* O_NONBLOCK */
+#endif /* O_NDELAY */
+#endif /* O_NONBLOCK */
#ifdef HAVE_PTYS
/* On some OSs with ptys, when the process on one end of
a pty exits, the other end gets an error reading with
@@ -4823,11 +4834,17 @@ wait_reading_process_output (time_limit, microsecs, read_kbd, do_display,
get a SIGCHLD).
However, it has been known to happen that the SIGCHLD
- got lost. So raise the signl again just in case.
+ got lost. So raise the signal again just in case.
It can't hurt. */
else if (nread == -1 && errno == EIO)
- kill (getpid (), SIGCHLD);
-#endif /* HAVE_PTYS */
+ {
+ /* Clear the descriptor now, so we only raise the signal once. */
+ FD_CLR (channel, &input_wait_mask);
+ FD_CLR (channel, &non_keyboard_wait_mask);
+
+ kill (getpid (), SIGCHLD);
+ }
+#endif /* HAVE_PTYS */
/* If we can detect process termination, don't consider the process
gone just because its pipe is closed. */
#ifdef SIGCHLD
@@ -6506,17 +6523,12 @@ sigchld_handler (signo)
#define WUNTRACED 0
#endif /* no WUNTRACED */
/* Keep trying to get a status until we get a definitive result. */
- while (1)
- {
+ do
+ {
errno = 0;
pid = wait3 (&w, WNOHANG | WUNTRACED, 0);
- if (! (pid < 0 && errno == EINTR))
- break;
- /* Avoid a busyloop: wait3 is a system call, so we do not want
- to prevent the kernel from actually sending SIGCHLD to emacs
- by asking for it all the time. */
- sleep (1);
}
+ while (pid < 0 && errno == EINTR);
if (pid <= 0)
{
diff --git a/src/s/darwin.h b/src/s/darwin.h
index 7175ea5457c..cb032429f7d 100644
--- a/src/s/darwin.h
+++ b/src/s/darwin.h
@@ -121,7 +121,7 @@ Boston, MA 02110-1301, USA. */
* default for process-connection-type dependent on the kernel
* version.
*/
-#define MIN_PTY_KERNEL_VERSION '7'
+#define MIN_PTY_KERNEL_VERSION '7'
/*
* Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
@@ -216,9 +216,6 @@ Boston, MA 02110-1301, USA. */
also the name of a Mach system call. */
#define init_process emacs_init_process
-/* Fix compilation problem for regex.c. */
-#define __restrict
-
/* Used in dispnew.c. Copied from freebsd.h. */
#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base)
@@ -262,9 +259,8 @@ Boston, MA 02110-1301, USA. */
/* Definitions for how to compile & link. */
-/* Indicate that we are compiling for Mac OS X and where to find Mac
- specific headers. */
-#define C_SWITCH_SYSTEM -fpascal-strings -DMAC_OSX -I../mac/src
+/* Indicate that we are compiling for Mac OS X. */
+#define C_SWITCH_SYSTEM -fpascal-strings -DMAC_OSX
/* Link in the Carbon lib. */
#ifdef HAVE_CARBON
@@ -317,13 +313,6 @@ Boston, MA 02110-1301, USA. */
#define NO_MATHERR
-/* This prevents a compilation error in xfaces.c: struct kboard * is
- used in a function protocol the first time this type appears in the
- file, since MULTI_KBOARD is undefined for the Mac OS X build. */
-#ifndef NOT_C_CODE
-struct kboard;
-#endif
-
/* The following solves the problem that Emacs hangs when evaluating
(make-comint "test0" "/nodir/nofile" nil "") when /nodir/nofile
does not exist. */
diff --git a/src/undo.c b/src/undo.c
index 0eca97df566..7a6ba37d0f8 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -548,6 +548,8 @@ Return what remains of the list. */)
beg = Fcar (cdr);
end = Fcdr (cdr);
+ if (XINT (beg) < BEGV || XINT (end) > ZV)
+ error ("Changes to be undone are outside visible portion of buffer");
Fput_text_property (beg, end, prop, val, Qnil);
}
else if (INTEGERP (car) && INTEGERP (cdr))
diff --git a/src/unexhp9k800.c b/src/unexhp9k800.c
new file mode 100644
index 00000000000..495094029d6
--- /dev/null
+++ b/src/unexhp9k800.c
@@ -0,0 +1,334 @@
+/* Unexec for HP 9000 Series 800 machines.
+
+ This file is in the public domain.
+
+ Author: John V. Morris
+
+ This file was written by John V. Morris at Hewlett Packard.
+ Both the author and Hewlett Packard Co. have disclaimed the
+ copyright on this file, and it is therefore in the public domain.
+ (Search for "hp9k800" in copyright.list.)
+*/
+
+/*
+ Bob Desinger <hpsemc!bd@hplabs.hp.com>
+
+ Note that the GNU project considers support for HP operation a
+ peripheral activity which should not be allowed to divert effort
+ from development of the GNU system. Changes in this code will be
+ installed when users send them in, but aside from that we don't
+ plan to think about it, or about whether other Emacs maintenance
+ might break it.
+
+
+ Unexec creates a copy of the old a.out file, and replaces the old data
+ area with the current data area. When the new file is executed, the
+ process will see the same data structures and data values that the
+ original process had when unexec was called.
+
+ Unlike other versions of unexec, this one copies symbol table and
+ debug information to the new a.out file. Thus, the new a.out file
+ may be debugged with symbolic debuggers.
+
+ If you fix any bugs in this, I'd like to incorporate your fixes.
+ Send them to uunet!hpda!hpsemc!jmorris or jmorris%hpsemc@hplabs.HP.COM.
+
+ CAVEATS:
+ This routine saves the current value of all static and external
+ variables. This means that any data structure that needs to be
+ initialized must be explicitly reset. Variables will not have their
+ expected default values.
+
+ Unfortunately, the HP-UX signal handler has internal initialization
+ flags which are not explicitly reset. Thus, for signals to work in
+ conjunction with this routine, the following code must executed when
+ the new process starts up.
+
+ void _sigreturn ();
+ ...
+ sigsetreturn (_sigreturn);
+*/
+
+#ifdef emacs
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#include <a.out.h>
+
+#ifdef HPUX_USE_SHLIBS
+#include <dl.h>
+#endif
+
+/* brk value to restore, stored as a global.
+ This is really used only if we used shared libraries. */
+static long brk_on_dump = 0;
+
+/* Called from main, if we use shared libraries. */
+int
+run_time_remap (ignored)
+ char *ignored;
+{
+ brk ((char *) brk_on_dump);
+}
+
+#undef roundup
+#define roundup(x,n) (((x) + ((n) - 1)) & ~((n) - 1)) /* n is power of 2 */
+#define min(x,y) (((x) < (y)) ? (x) : (y))
+
+
+/* Create a new a.out file, same as old but with current data space */
+
+unexec (new_name, old_name, new_end_of_text, dummy1, dummy2)
+ char new_name[]; /* name of the new a.out file to be created */
+ char old_name[]; /* name of the old a.out file */
+ char *new_end_of_text; /* ptr to new edata/etext; NOT USED YET */
+ int dummy1, dummy2; /* not used by emacs */
+{
+ int old, new;
+ int old_size, new_size;
+ struct header hdr;
+ struct som_exec_auxhdr auxhdr;
+ long i;
+
+ /* For the greatest flexibility, should create a temporary file in
+ the same directory as the new file. When everything is complete,
+ rename the temp file to the new name.
+ This way, a program could update its own a.out file even while
+ it is still executing. If problems occur, everything is still
+ intact. NOT implemented. */
+
+ /* Open the input and output a.out files */
+ old = open (old_name, O_RDONLY);
+ if (old < 0)
+ { perror (old_name); exit (1); }
+ new = open (new_name, O_CREAT|O_RDWR|O_TRUNC, 0777);
+ if (new < 0)
+ { perror (new_name); exit (1); }
+
+ /* Read the old headers */
+ read_header (old, &hdr, &auxhdr);
+
+ brk_on_dump = (long) sbrk (0);
+
+ /* Decide how large the new and old data areas are */
+ old_size = auxhdr.exec_dsize;
+ /* I suspect these two statements are separate
+ to avoid a compiler bug in hpux version 8. */
+ i = (long) sbrk (0);
+ new_size = i - auxhdr.exec_dmem;
+
+ /* Copy the old file to the new, up to the data space */
+ lseek (old, 0, 0);
+ copy_file (old, new, auxhdr.exec_dfile);
+
+ /* Skip the old data segment and write a new one */
+ lseek (old, old_size, 1);
+ save_data_space (new, &hdr, &auxhdr, new_size);
+
+ /* Copy the rest of the file */
+ copy_rest (old, new);
+
+ /* Update file pointers since we probably changed size of data area */
+ update_file_ptrs (new, &hdr, &auxhdr, auxhdr.exec_dfile, new_size-old_size);
+
+ /* Save the modified header */
+ write_header (new, &hdr, &auxhdr);
+
+ /* Close the binary file */
+ close (old);
+ close (new);
+ return 0;
+}
+
+/* Save current data space in the file, update header. */
+
+save_data_space (file, hdr, auxhdr, size)
+ int file;
+ struct header *hdr;
+ struct som_exec_auxhdr *auxhdr;
+ int size;
+{
+ /* Write the entire data space out to the file */
+ if (write (file, auxhdr->exec_dmem, size) != size)
+ { perror ("Can't save new data space"); exit (1); }
+
+ /* Update the header to reflect the new data size */
+ auxhdr->exec_dsize = size;
+ auxhdr->exec_bsize = 0;
+}
+
+/* Update the values of file pointers when something is inserted. */
+
+update_file_ptrs (file, hdr, auxhdr, location, offset)
+ int file;
+ struct header *hdr;
+ struct som_exec_auxhdr *auxhdr;
+ unsigned int location;
+ int offset;
+{
+ struct subspace_dictionary_record subspace;
+ int i;
+
+ /* Increase the overall size of the module */
+ hdr->som_length += offset;
+
+ /* Update the various file pointers in the header */
+#define update(ptr) if (ptr > location) ptr = ptr + offset
+ update (hdr->aux_header_location);
+ update (hdr->space_strings_location);
+ update (hdr->init_array_location);
+ update (hdr->compiler_location);
+ update (hdr->symbol_location);
+ update (hdr->fixup_request_location);
+ update (hdr->symbol_strings_location);
+ update (hdr->unloadable_sp_location);
+ update (auxhdr->exec_tfile);
+ update (auxhdr->exec_dfile);
+
+ /* Do for each subspace dictionary entry */
+ lseek (file, hdr->subspace_location, 0);
+ for (i = 0; i < hdr->subspace_total; i++)
+ {
+ if (read (file, &subspace, sizeof (subspace)) != sizeof (subspace))
+ { perror ("Can't read subspace record"); exit (1); }
+
+ /* If subspace has a file location, update it */
+ if (subspace.initialization_length > 0
+ && subspace.file_loc_init_value > location)
+ {
+ subspace.file_loc_init_value += offset;
+ lseek (file, -sizeof (subspace), 1);
+ if (write (file, &subspace, sizeof (subspace)) != sizeof (subspace))
+ { perror ("Can't update subspace record"); exit (1); }
+ }
+ }
+
+ /* Do for each initialization pointer record */
+ /* (I don't think it applies to executable files, only relocatables) */
+#undef update
+}
+
+/* Read in the header records from an a.out file. */
+
+read_header (file, hdr, auxhdr)
+ int file;
+ struct header *hdr;
+ struct som_exec_auxhdr *auxhdr;
+{
+
+ /* Read the header in */
+ lseek (file, 0, 0);
+ if (read (file, hdr, sizeof (*hdr)) != sizeof (*hdr))
+ { perror ("Couldn't read header from a.out file"); exit (1); }
+
+ if (hdr->a_magic != EXEC_MAGIC && hdr->a_magic != SHARE_MAGIC
+ && hdr->a_magic != DEMAND_MAGIC)
+ {
+ fprintf (stderr, "a.out file doesn't have legal magic number\n");
+ exit (1);
+ }
+
+ lseek (file, hdr->aux_header_location, 0);
+ if (read (file, auxhdr, sizeof (*auxhdr)) != sizeof (*auxhdr))
+ {
+ perror ("Couldn't read auxiliary header from a.out file");
+ exit (1);
+ }
+}
+
+/* Write out the header records into an a.out file. */
+
+write_header (file, hdr, auxhdr)
+ int file;
+ struct header *hdr;
+ struct som_exec_auxhdr *auxhdr;
+{
+ /* Update the checksum */
+ hdr->checksum = calculate_checksum (hdr);
+
+ /* Write the header back into the a.out file */
+ lseek (file, 0, 0);
+ if (write (file, hdr, sizeof (*hdr)) != sizeof (*hdr))
+ { perror ("Couldn't write header to a.out file"); exit (1); }
+ lseek (file, hdr->aux_header_location, 0);
+ if (write (file, auxhdr, sizeof (*auxhdr)) != sizeof (*auxhdr))
+ { perror ("Couldn't write auxiliary header to a.out file"); exit (1); }
+}
+
+/* Calculate the checksum of a SOM header record. */
+
+calculate_checksum (hdr)
+ struct header *hdr;
+{
+ int checksum, i, *ptr;
+
+ checksum = 0; ptr = (int *) hdr;
+
+ for (i = 0; i < sizeof (*hdr) / sizeof (int) - 1; i++)
+ checksum ^= ptr[i];
+
+ return (checksum);
+}
+
+/* Copy size bytes from the old file to the new one. */
+
+copy_file (old, new, size)
+ int new, old;
+ int size;
+{
+ int len;
+ int buffer[8192]; /* word aligned will be faster */
+
+ for (; size > 0; size -= len)
+ {
+ len = min (size, sizeof (buffer));
+ if (read (old, buffer, len) != len)
+ { perror ("Read failure on a.out file"); exit (1); }
+ if (write (new, buffer, len) != len)
+ { perror ("Write failure in a.out file"); exit (1); }
+ }
+}
+
+/* Copy the rest of the file, up to EOF. */
+
+copy_rest (old, new)
+ int new, old;
+{
+ int buffer[4096];
+ int len;
+
+ /* Copy bytes until end of file or error */
+ while ((len = read (old, buffer, sizeof (buffer))) > 0)
+ if (write (new, buffer, len) != len) break;
+
+ if (len != 0)
+ { perror ("Unable to copy the rest of the file"); exit (1); }
+}
+
+#ifdef DEBUG
+display_header (hdr, auxhdr)
+ struct header *hdr;
+ struct som_exec_auxhdr *auxhdr;
+{
+ /* Display the header information (debug) */
+ printf ("\n\nFILE HEADER\n");
+ printf ("magic number %d \n", hdr->a_magic);
+ printf ("text loc %.8x size %d \n", auxhdr->exec_tmem, auxhdr->exec_tsize);
+ printf ("data loc %.8x size %d \n", auxhdr->exec_dmem, auxhdr->exec_dsize);
+ printf ("entry %x \n", auxhdr->exec_entry);
+ printf ("Bss segment size %u\n", auxhdr->exec_bsize);
+ printf ("\n");
+ printf ("data file loc %d size %d\n",
+ auxhdr->exec_dfile, auxhdr->exec_dsize);
+ printf ("som_length %d\n", hdr->som_length);
+ printf ("unloadable sploc %d size %d\n",
+ hdr->unloadable_sp_location, hdr->unloadable_sp_size);
+}
+#endif /* DEBUG */
+
+/* arch-tag: d55a09ac-9427-4ec4-8496-cb9d7710774f
+ (do not change this comment) */
diff --git a/src/w32fns.c b/src/w32fns.c
index e4961a6bfbe..8cac4ea2376 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -7498,6 +7498,8 @@ DEFUN ("x-show-tip", Fx_show_tip, Sx_show_tip, 1, 6, 0,
doc: /* Show STRING in a \"tooltip\" window on frame FRAME.
A tooltip window is a small window displaying a string.
+This is an internal function; Lisp code should call `tooltip-show'.
+
FRAME nil or omitted means use the selected frame.
PARMS is an optional list of frame parameters which can be
diff --git a/src/widget.c b/src/widget.c
index 883be9a23f4..bcb038340a5 100644
--- a/src/widget.c
+++ b/src/widget.c
@@ -953,9 +953,11 @@ EmacsFrameSetCharSize (widget, columns, rows)
Xt when the default font is changed. Tell Xt not to wait,
depending on the value of the frame parameter
`wait-for-wm'. */
+ x_catch_errors (FRAME_X_DISPLAY (f));
XtVaSetValues (f->output_data.x->widget,
XtNwaitForWm, (XtArgVal) f->output_data.x->wait_for_wm,
NULL);
+ x_uncatch_errors ();
/* Workaround: When a SIGIO or SIGALRM occurs while Xt is
waiting for a ConfigureNotify event (see above), this leads
@@ -972,6 +974,7 @@ EmacsFrameSetCharSize (widget, columns, rows)
as is because I think it can't do any harm. */
/* In April 2002, simon.marshall@misys.com reports the problem
seems not to occur any longer. */
+ x_catch_errors (FRAME_X_DISPLAY (f));
XtVaSetValues (f->output_data.x->widget,
XtNheight, (XtArgVal) (outer_widget_height + hdelta),
XtNwidth, (XtArgVal) (outer_widget_width + wdelta),
@@ -984,6 +987,8 @@ EmacsFrameSetCharSize (widget, columns, rows)
XtNheight, (XtArgVal) pixel_height,
XtNwidth, (XtArgVal) pixel_width,
NULL);
+ x_uncatch_errors ();
+
#ifdef SIGIO
sigunblock (sigmask (SIGIO));
#endif
diff --git a/src/window.c b/src/window.c
index 94e56d10371..154743e5b5d 100644
--- a/src/window.c
+++ b/src/window.c
@@ -2316,6 +2316,8 @@ check_all_windows ()
DEFUN ("get-lru-window", Fget_lru_window, Sget_lru_window, 0, 2, 0,
doc: /* Return the window least recently selected or used for display.
+\(LRU means Least Recently Used.)
+
Return a full-width window if possible.
A minibuffer window is never a candidate.
A dedicated window is never a candidate, unless DEDICATED is non-nil,
diff --git a/src/xdisp.c b/src/xdisp.c
index aea7ab515ab..66629f659ac 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -12786,6 +12786,8 @@ redisplay_window (window, just_this_one_p)
int rc;
int centering_position = -1;
int last_line_misfit = 0;
+ int save_beg_unchanged = BEG_UNCHANGED;
+ int save_end_unchanged = END_UNCHANGED;
SET_TEXT_POS (lpoint, PT, PT_BYTE);
opoint = lpoint;
@@ -13154,11 +13156,20 @@ redisplay_window (window, just_this_one_p)
&& NILP (do_mouse_tracking)
&& CHARPOS (startp) > BEGV)
{
- /* Make sure beg_unchanged and end_unchanged are up to date.
- Do it only if buffer has really changed. This may or may
- not have been done by try_window_id (see which) already. */
+#if 0
+ /* The following code tried to make BEG_UNCHANGED and
+ END_UNCHANGED up to date (similar to try_window_id).
+ Is it important to do so?
+
+ The trouble is that it's a little too strict when it
+ comes to overlays: modify_overlay can call
+ BUF_COMPUTE_UNCHANGED, which alters BUF_BEG_UNCHANGED and
+ BUF_END_UNCHANGED directly without moving the gap.
+
+ This can result in spurious recentering when overlays are
+ altered in the buffer. So unless it's proven necessary,
+ let's leave this commented out for now. -- cyd. */
if (MODIFF > SAVE_MODIFF
- /* This seems to happen sometimes after saving a buffer. */
|| BEG_UNCHANGED + END_UNCHANGED > Z_BYTE)
{
if (GPT - BEG < BEG_UNCHANGED)
@@ -13166,9 +13177,10 @@ redisplay_window (window, just_this_one_p)
if (Z - GPT < END_UNCHANGED)
END_UNCHANGED = Z - GPT;
}
+#endif
- if (CHARPOS (startp) > BEG + BEG_UNCHANGED
- && CHARPOS (startp) <= Z - END_UNCHANGED)
+ if (CHARPOS (startp) > BEG + save_beg_unchanged
+ && CHARPOS (startp) <= Z - save_end_unchanged)
{
/* There doesn't seems to be a simple way to find a new
window start that is near the old window start, so
@@ -15865,13 +15877,37 @@ cursor_row_p (w, row)
if (PT == MATRIX_ROW_END_CHARPOS (row))
{
- /* If the row ends with a newline from a string, we don't want
- the cursor there, but we still want it at the start of the
- string if the string starts in this row.
- If the row is continued it doesn't end in a newline. */
+ /* Suppose the row ends on a string.
+ Unless the row is continued, that means it ends on a newline
+ in the string. If it's anything other than a display string
+ (e.g. a before-string from an overlay), we don't want the
+ cursor there. (This heuristic seems to give the optimal
+ behavior for the various types of multi-line strings.) */
if (CHARPOS (row->end.string_pos) >= 0)
- cursor_row_p = (row->continued_p
- || PT >= MATRIX_ROW_START_CHARPOS (row));
+ {
+ if (row->continued_p)
+ cursor_row_p = 1;
+ else
+ {
+ /* Check for `display' property. */
+ struct glyph *beg = row->glyphs[TEXT_AREA];
+ struct glyph *end = beg + row->used[TEXT_AREA] - 1;
+ struct glyph *glyph;
+
+ cursor_row_p = 0;
+ for (glyph = end; glyph >= beg; --glyph)
+ if (STRINGP (glyph->object))
+ {
+ Lisp_Object prop
+ = Fget_char_property (make_number (PT),
+ Qdisplay, Qnil);
+ cursor_row_p =
+ (!NILP (prop)
+ && display_prop_string_p (prop, glyph->object));
+ break;
+ }
+ }
+ }
else if (MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P (row))
{
/* If the row ends in middle of a real character,
@@ -22451,7 +22487,7 @@ note_mode_line_or_margin_highlight (window, x, y, area)
Lisp_Object mouse_face;
int original_x_pixel = x;
- struct glyph * glyph = NULL;
+ struct glyph * glyph = NULL, * row_start_glyph = NULL;
struct glyph_row *row;
if (area == ON_MODE_LINE || area == ON_HEADER_LINE)
@@ -22469,7 +22505,7 @@ note_mode_line_or_margin_highlight (window, x, y, area)
/* Find glyph */
if (row->mode_line_p && row->enabled_p)
{
- glyph = row->glyphs[TEXT_AREA];
+ glyph = row_start_glyph = row->glyphs[TEXT_AREA];
end = glyph + row->used[TEXT_AREA];
for (x0 = original_x_pixel;
@@ -22593,12 +22629,17 @@ note_mode_line_or_margin_highlight (window, x, y, area)
is converted to a flatten by emacs lisp interpreter.
The internal string is an element of the structures.
The displayed string is the flatten string. */
- for (tmp_glyph = glyph - 1, gpos = 0;
- tmp_glyph->charpos >= XINT (b);
- tmp_glyph--, gpos++)
+ gpos = 0;
+ if (glyph > row_start_glyph)
{
- if (!EQ (tmp_glyph->object, glyph->object))
- break;
+ tmp_glyph = glyph - 1;
+ while (tmp_glyph >= row_start_glyph
+ && tmp_glyph->charpos >= XINT (b)
+ && EQ (tmp_glyph->object, glyph->object))
+ {
+ tmp_glyph--;
+ gpos++;
+ }
}
/* Calculate the lenght(glyph sequence length: GSEQ_LENGTH) of
@@ -24081,7 +24122,7 @@ and is used only on frames for which no explicit name has been set
doc: /* Maximum number of lines to keep in the message log buffer.
If nil, disable message logging. If t, log messages but don't truncate
the buffer when it becomes large. */);
- Vmessage_log_max = make_number (50);
+ Vmessage_log_max = make_number (100);
DEFVAR_LISP ("window-size-change-functions", &Vwindow_size_change_functions,
doc: /* Functions called before redisplay, if window sizes have changed.
diff --git a/src/xfns.c b/src/xfns.c
index ec9d54dcf93..f2c85814847 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -5036,6 +5036,8 @@ DEFUN ("x-show-tip", Fx_show_tip, Sx_show_tip, 1, 6, 0,
doc: /* Show STRING in a "tooltip" window on frame FRAME.
A tooltip window is a small X window displaying a string.
+This is an internal function; Lisp code should call `tooltip-show'.
+
FRAME nil or omitted means use the selected frame.
PARMS is an optional list of frame parameters which can be used to