aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Verona2011-11-22 15:46:22 +0100
committerJoakim Verona2011-11-22 15:46:22 +0100
commita9c1e05adddf6011c61c0df582c5f2ed423f35c8 (patch)
tree489fac119296416ba2f3530fd3bcb70efbbbdaa6
parent40bb789236e486a3f36eefb2840c293369ce2af3 (diff)
parentb5afc20930c91159a1cbf629bcaa7e251653dc74 (diff)
downloademacs-a9c1e05adddf6011c61c0df582c5f2ed423f35c8.tar.gz
emacs-a9c1e05adddf6011c61c0df582c5f2ed423f35c8.zip
upstream
-rw-r--r--ChangeLog24
-rw-r--r--Makefile.in10
-rw-r--r--admin/CPP-DEFINES5
-rw-r--r--admin/ChangeLog6
-rw-r--r--admin/grammars/c.by2
-rw-r--r--admin/grammars/java-tags.wy2
-rw-r--r--admin/notes/multi-tty6
-rw-r--r--admin/notes/nextstep2
-rw-r--r--admin/nt/README-ftp-server2
-rw-r--r--admin/unidata/unidata-gen.el2
-rwxr-xr-xautogen/configure14
-rw-r--r--configure.in14
-rw-r--r--doc/emacs/ChangeLog9
-rw-r--r--doc/emacs/ack.texi2
-rw-r--r--doc/emacs/mark.texi9
-rw-r--r--doc/emacs/msdog.texi6
-rw-r--r--doc/emacs/windows.texi10
-rw-r--r--doc/lispintro/emacs-lisp-intro.texi2
-rw-r--r--doc/lispref/ChangeLog98
-rw-r--r--doc/lispref/compile.texi2
-rw-r--r--doc/lispref/display.texi26
-rw-r--r--doc/lispref/frames.texi2
-rw-r--r--doc/lispref/help.texi2
-rw-r--r--doc/lispref/searching.texi2
-rw-r--r--doc/lispref/spellfile4
-rw-r--r--doc/lispref/windows.texi1067
-rw-r--r--doc/misc/ChangeLog16
-rw-r--r--doc/misc/ada-mode.texi2
-rw-r--r--doc/misc/autotype.texi2
-rw-r--r--doc/misc/calc.texi1102
-rw-r--r--doc/misc/cc-mode.texi2
-rw-r--r--doc/misc/dbus.texi2
-rw-r--r--doc/misc/dired-x.texi2
-rw-r--r--doc/misc/ede.texi6
-rw-r--r--doc/misc/eieio.texi4
-rw-r--r--doc/misc/eshell.texi2
-rw-r--r--doc/misc/faq.texi2
-rw-r--r--doc/misc/gnus-coding.texi10
-rw-r--r--doc/misc/gnus-news.texi2
-rw-r--r--doc/misc/gnus.texi27
-rw-r--r--doc/misc/message.texi2
-rw-r--r--doc/misc/org.texi2
-rw-r--r--doc/misc/sem-user.texi2
-rw-r--r--doc/misc/semantic.texi2
-rw-r--r--doc/misc/tramp.texi2
-rw-r--r--etc/ChangeLog10
-rw-r--r--etc/ERC-NEWS2
-rw-r--r--etc/MH-E-NEWS9
-rw-r--r--etc/NEWS8
-rw-r--r--etc/NEWS.1-1710
-rw-r--r--etc/NEWS.185
-rw-r--r--etc/NEWS.196
-rw-r--r--etc/NEWS.212
-rw-r--r--etc/NEWS.224
-rw-r--r--etc/NEWS.234
-rw-r--r--etc/THE-GNU-PROJECT2
-rw-r--r--etc/TODO4
-rw-r--r--etc/gnus/news-server.ast3
-rw-r--r--etc/srecode/test.srt2
-rw-r--r--etc/themes/manoj-dark-theme.el4
-rw-r--r--leim/CXTERM-DIC/CCDOSPY.tit2
-rw-r--r--leim/CXTERM-DIC/PY-b5.tit2
-rw-r--r--leim/CXTERM-DIC/SW.tit2
-rw-r--r--leim/CXTERM-DIC/TONEPY.tit2
-rw-r--r--leim/ChangeLog4
-rw-r--r--leim/quail/cyrillic.el2
-rw-r--r--leim/quail/hangul.el2
-rw-r--r--leim/quail/ipa.el6
-rw-r--r--leim/quail/sgml-input.el2
-rw-r--r--lib-src/ChangeLog52
-rw-r--r--lib-src/etags.c14
-rw-r--r--lib/sha256.c2
-rw-r--r--lib/sha512.c2
-rw-r--r--lisp/ChangeLog176
-rw-r--r--lisp/ChangeLog.1030
-rw-r--r--lisp/ChangeLog.114
-rw-r--r--lisp/ChangeLog.1226
-rw-r--r--lisp/ChangeLog.1339
-rw-r--r--lisp/ChangeLog.1418
-rw-r--r--lisp/ChangeLog.1514
-rw-r--r--lisp/ChangeLog.27
-rw-r--r--lisp/ChangeLog.32
-rw-r--r--lisp/ChangeLog.49
-rw-r--r--lisp/ChangeLog.523
-rw-r--r--lisp/ChangeLog.69
-rw-r--r--lisp/ChangeLog.86
-rw-r--r--lisp/ChangeLog.94
-rw-r--r--lisp/allout-widgets.el2
-rw-r--r--lisp/allout.el8
-rw-r--r--lisp/autorevert.el2
-rw-r--r--lisp/calc/calc-bin.el6
-rw-r--r--lisp/calc/calc-misc.el4
-rw-r--r--lisp/calc/calc-poly.el2
-rw-r--r--lisp/calc/calc.el3
-rw-r--r--lisp/calendar/diary-lib.el2
-rw-r--r--lisp/calendar/todo-mode.el6
-rw-r--r--lisp/cedet/ChangeLog24
-rw-r--r--lisp/cedet/cedet-cscope.el4
-rw-r--r--lisp/cedet/cedet-files.el2
-rw-r--r--lisp/cedet/cedet-global.el6
-rw-r--r--lisp/cedet/cedet-idutils.el8
-rw-r--r--lisp/cedet/cedet.el4
-rw-r--r--lisp/cedet/data-debug.el4
-rw-r--r--lisp/cedet/ede.el20
-rw-r--r--lisp/cedet/ede/generic.el4
-rw-r--r--lisp/cedet/ede/pconf.el2
-rw-r--r--lisp/cedet/ede/proj-comp.el4
-rw-r--r--lisp/cedet/ede/proj.el2
-rw-r--r--lisp/cedet/ede/project-am.el2
-rw-r--r--lisp/cedet/inversion.el6
-rw-r--r--lisp/cedet/mode-local.el10
-rw-r--r--lisp/cedet/pulse.el8
-rw-r--r--lisp/cedet/semantic.el10
-rw-r--r--lisp/cedet/semantic/analyze.el2
-rw-r--r--lisp/cedet/semantic/bovine/c.el8
-rw-r--r--lisp/cedet/semantic/bovine/debug.el2
-rw-r--r--lisp/cedet/semantic/bovine/el.el2
-rw-r--r--lisp/cedet/semantic/complete.el4
-rw-r--r--lisp/cedet/semantic/db-find.el2
-rw-r--r--lisp/cedet/semantic/db-javascript.el4
-rw-r--r--lisp/cedet/semantic/db-typecache.el2
-rw-r--r--lisp/cedet/semantic/db.el2
-rw-r--r--lisp/cedet/semantic/debug.el8
-rw-r--r--lisp/cedet/semantic/edit.el8
-rw-r--r--lisp/cedet/semantic/fw.el2
-rw-r--r--lisp/cedet/semantic/html.el2
-rw-r--r--lisp/cedet/semantic/idle.el6
-rw-r--r--lisp/cedet/semantic/imenu.el2
-rw-r--r--lisp/cedet/semantic/lex-spp.el2
-rw-r--r--lisp/cedet/semantic/lex.el4
-rw-r--r--lisp/cedet/semantic/sb.el2
-rw-r--r--lisp/cedet/semantic/scope.el2
-rw-r--r--lisp/cedet/semantic/symref/list.el4
-rw-r--r--lisp/cedet/semantic/tag-file.el2
-rw-r--r--lisp/cedet/semantic/tag.el4
-rw-r--r--lisp/cedet/semantic/texi.el4
-rw-r--r--lisp/cedet/semantic/wisent/javat-wy.el2
-rw-r--r--lisp/cedet/semantic/wisent/python.el2
-rw-r--r--lisp/cedet/srecode/ctxt.el2
-rw-r--r--lisp/cedet/srecode/dictionary.el2
-rw-r--r--lisp/cedet/srecode/document.el4
-rw-r--r--lisp/cedet/srecode/find.el2
-rw-r--r--lisp/cedet/srecode/insert.el2
-rw-r--r--lisp/color.el2
-rw-r--r--lisp/comint.el4
-rw-r--r--lisp/descr-text.el2
-rw-r--r--lisp/dframe.el8
-rw-r--r--lisp/dired.el2
-rw-r--r--lisp/electric.el26
-rw-r--r--lisp/emacs-lisp/advice.el2
-rw-r--r--lisp/emacs-lisp/autoload.el10
-rw-r--r--lisp/emacs-lisp/avl-tree.el2
-rw-r--r--lisp/emacs-lisp/bytecomp.el13
-rw-r--r--lisp/emacs-lisp/chart.el2
-rw-r--r--lisp/emacs-lisp/checkdoc.el2
-rw-r--r--lisp/emacs-lisp/cl-indent.el16
-rw-r--r--lisp/emacs-lisp/edebug.el2
-rw-r--r--lisp/emacs-lisp/eieio-base.el2
-rw-r--r--lisp/emacs-lisp/elint.el4
-rw-r--r--lisp/emacs-lisp/ert.el2
-rw-r--r--lisp/emacs-lisp/lisp-mode.el2
-rw-r--r--lisp/emacs-lisp/package.el2
-rw-r--r--lisp/emacs-lisp/smie.el155
-rw-r--r--lisp/emacs-lisp/tabulated-list.el2
-rw-r--r--lisp/emulation/cua-rect.el2
-rw-r--r--lisp/emulation/edt-mapper.el2
-rw-r--r--lisp/emulation/viper-ex.el2
-rw-r--r--lisp/emulation/viper-init.el4
-rw-r--r--lisp/emulation/viper-mous.el2
-rw-r--r--lisp/emulation/viper.el6
-rw-r--r--lisp/erc/ChangeLog4
-rw-r--r--lisp/erc/ChangeLog.0113
-rw-r--r--lisp/erc/ChangeLog.023
-rw-r--r--lisp/erc/ChangeLog.036
-rw-r--r--lisp/erc/erc-backend.el2
-rw-r--r--lisp/erc/erc-log.el5
-rw-r--r--lisp/erc/erc-match.el3
-rw-r--r--lisp/erc/erc-track.el3
-rw-r--r--lisp/erc/erc.el6
-rw-r--r--lisp/eshell/em-alias.el2
-rw-r--r--lisp/eshell/em-glob.el2
-rw-r--r--lisp/eshell/em-pred.el2
-rw-r--r--lisp/eshell/em-term.el2
-rw-r--r--lisp/eshell/esh-cmd.el110
-rw-r--r--lisp/eshell/esh-util.el9
-rw-r--r--lisp/ezimage.el2
-rw-r--r--lisp/faces.el2
-rw-r--r--lisp/files-x.el2
-rw-r--r--lisp/files.el2
-rw-r--r--lisp/foldout.el4
-rw-r--r--lisp/follow.el6
-rw-r--r--lisp/font-core.el2
-rw-r--r--lisp/font-lock.el2
-rw-r--r--lisp/forms.el4
-rw-r--r--lisp/gnus/ChangeLog35
-rw-r--r--lisp/gnus/ChangeLog.234
-rw-r--r--lisp/gnus/gnus-agent.el4
-rw-r--r--lisp/gnus/gnus-art.el4
-rw-r--r--lisp/gnus/gnus-dired.el2
-rw-r--r--lisp/gnus/gnus-group.el2
-rw-r--r--lisp/gnus/gnus-sum.el4
-rw-r--r--lisp/gnus/mail-parse.el2
-rw-r--r--lisp/gnus/message.el2
-rw-r--r--lisp/gnus/mm-util.el2
-rw-r--r--lisp/gnus/mm-view.el36
-rw-r--r--lisp/gnus/nndiary.el4
-rw-r--r--lisp/gnus/nnimap.el2
-rw-r--r--lisp/gnus/nnir.el2
-rw-r--r--lisp/gnus/nnmail.el2
-rw-r--r--lisp/gnus/nnmairix.el6
-rw-r--r--lisp/gnus/nntp.el2
-rw-r--r--lisp/gnus/shr.el8
-rw-r--r--lisp/gnus/sieve-manage.el2
-rw-r--r--lisp/gnus/smime.el4
-rw-r--r--lisp/gnus/spam-report.el2
-rw-r--r--lisp/gnus/spam.el2
-rw-r--r--lisp/help-mode.el2
-rw-r--r--lisp/hippie-exp.el2
-rw-r--r--lisp/htmlfontify.el12
-rw-r--r--lisp/ido.el2
-rw-r--r--lisp/image-dired.el6
-rw-r--r--lisp/info-xref.el4
-rw-r--r--lisp/info.el73
-rw-r--r--lisp/international/characters.el4
-rw-r--r--lisp/international/mule-conf.el4
-rw-r--r--lisp/international/mule.el4
-rw-r--r--lisp/international/ogonek.el4
-rw-r--r--lisp/international/quail.el4
-rw-r--r--lisp/international/titdic-cnv.el2
-rw-r--r--lisp/isearch.el43
-rw-r--r--lisp/iswitchb.el2
-rw-r--r--lisp/json.el2
-rw-r--r--lisp/language/european.el1
-rw-r--r--lisp/language/thai-util.el2
-rw-r--r--lisp/loadhist.el2
-rw-r--r--lisp/mail/feedmail.el8
-rw-r--r--lisp/mail/footnote.el8
-rw-r--r--lisp/mail/metamail.el2
-rw-r--r--lisp/mail/rmail.el46
-rw-r--r--lisp/mail/rmailmm.el201
-rw-r--r--lisp/mail/rmailsum.el7
-rw-r--r--lisp/mail/smtpmail.el2
-rw-r--r--lisp/menu-bar.el2
-rw-r--r--lisp/mh-e/ChangeLog13
-rw-r--r--lisp/mh-e/ChangeLog.12
-rw-r--r--lisp/mh-e/mh-e.el4
-rw-r--r--lisp/mh-e/mh-mime.el2
-rw-r--r--lisp/mh-e/mh-utils.el12
-rw-r--r--lisp/minibuffer.el4
-rw-r--r--lisp/misearch.el6
-rw-r--r--lisp/mouse-sel.el2
-rw-r--r--lisp/mpc.el2
-rw-r--r--lisp/net/ange-ftp.el6
-rw-r--r--lisp/net/browse-url.el6
-rw-r--r--lisp/net/newst-plainview.el2
-rw-r--r--lisp/net/newst-treeview.el2
-rw-r--r--lisp/net/ntlm.el14
-rw-r--r--lisp/net/quickurl.el2
-rw-r--r--lisp/net/rcirc.el2
-rw-r--r--lisp/net/tramp-cmds.el2
-rw-r--r--lisp/net/tramp-gvfs.el2
-rw-r--r--lisp/net/tramp-gw.el2
-rw-r--r--lisp/net/tramp-sh.el6
-rw-r--r--lisp/net/tramp-smb.el2
-rw-r--r--lisp/net/xesam.el2
-rw-r--r--lisp/notifications.el2
-rw-r--r--lisp/nxml/xsd-regexp.el2
-rw-r--r--lisp/org/ChangeLog30
-rw-r--r--lisp/org/ob-ledger.el2
-rw-r--r--lisp/org/org-agenda.el2
-rw-r--r--lisp/org/org-capture.el4
-rw-r--r--lisp/org/org-ctags.el2
-rw-r--r--lisp/org/org-exp.el2
-rw-r--r--lisp/org/org-list.el4
-rw-r--r--lisp/org/org-table.el8
-rw-r--r--lisp/org/org-taskjuggler.el10
-rw-r--r--lisp/org/org.el6
-rw-r--r--lisp/play/5x5.el4
-rw-r--r--lisp/play/bubbles.el2
-rw-r--r--lisp/printing.el2
-rw-r--r--lisp/progmodes/ada-mode.el2
-rw-r--r--lisp/progmodes/cc-awk.el6
-rw-r--r--lisp/progmodes/cc-cmds.el4
-rw-r--r--lisp/progmodes/cc-defs.el4
-rw-r--r--lisp/progmodes/cc-engine.el34
-rw-r--r--lisp/progmodes/cc-fonts.el4
-rw-r--r--lisp/progmodes/cc-langs.el10
-rw-r--r--lisp/progmodes/cc-menus.el2
-rw-r--r--lisp/progmodes/cc-mode.el6
-rw-r--r--lisp/progmodes/cc-vars.el2
-rw-r--r--lisp/progmodes/cfengine.el2
-rw-r--r--lisp/progmodes/compile.el5
-rw-r--r--lisp/progmodes/cperl-mode.el10
-rw-r--r--lisp/progmodes/cwarn.el10
-rw-r--r--lisp/progmodes/ebnf-dtd.el2
-rw-r--r--lisp/progmodes/ebnf2ps.el2
-rw-r--r--lisp/progmodes/etags.el2
-rw-r--r--lisp/progmodes/gdb-mi.el6
-rw-r--r--lisp/progmodes/gud.el6
-rw-r--r--lisp/progmodes/idlw-help.el4
-rw-r--r--lisp/progmodes/idlwave.el2
-rw-r--r--lisp/progmodes/inf-lisp.el2
-rw-r--r--lisp/progmodes/js.el2
-rw-r--r--lisp/progmodes/pascal.el4
-rw-r--r--lisp/progmodes/prolog.el4
-rw-r--r--lisp/progmodes/ps-mode.el4
-rw-r--r--lisp/progmodes/python.el4
-rw-r--r--lisp/progmodes/sh-script.el1
-rw-r--r--lisp/progmodes/verilog-mode.el6
-rw-r--r--lisp/progmodes/vhdl-mode.el2
-rw-r--r--lisp/ps-mule.el2
-rw-r--r--lisp/ps-print.el8
-rw-r--r--lisp/recentf.el2
-rw-r--r--lisp/repeat.el2
-rw-r--r--lisp/replace.el2
-rw-r--r--lisp/ses.el4
-rw-r--r--lisp/shell.el4
-rw-r--r--lisp/simple.el14
-rw-r--r--lisp/speedbar.el6
-rw-r--r--lisp/startup.el2
-rw-r--r--lisp/subr.el2
-rw-r--r--lisp/term.el4
-rw-r--r--lisp/term/iris-ansi.el4
-rw-r--r--lisp/term/ns-win.el2
-rw-r--r--lisp/term/rxvt.el4
-rw-r--r--lisp/term/tty-colors.el2
-rw-r--r--lisp/term/xterm.el2
-rw-r--r--lisp/terminal.el2
-rw-r--r--lisp/textmodes/artist.el4
-rw-r--r--lisp/textmodes/bibtex.el2
-rw-r--r--lisp/textmodes/conf-mode.el2
-rw-r--r--lisp/textmodes/flyspell.el2
-rw-r--r--lisp/textmodes/reftex-cite.el58
-rw-r--r--lisp/textmodes/reftex-dcr.el2
-rw-r--r--lisp/textmodes/sgml-mode.el2
-rw-r--r--lisp/textmodes/table.el2
-rw-r--r--lisp/thumbs.el4
-rw-r--r--lisp/url/url-dav.el2
-rw-r--r--lisp/url/url-http.el2
-rw-r--r--lisp/vc/ediff-diff.el2
-rw-r--r--lisp/vc/ediff-mult.el2
-rw-r--r--lisp/vc/ediff-util.el2
-rw-r--r--lisp/vc/pcvs-parse.el2
-rw-r--r--lisp/vc/pcvs-util.el2
-rw-r--r--lisp/vc/vc-arch.el2
-rw-r--r--lisp/vc/vc-dir.el2
-rw-r--r--lisp/vc/vc-dispatcher.el2
-rw-r--r--lisp/vc/vc-mtn.el2
-rw-r--r--lisp/vc/vc.el2
-rw-r--r--lisp/w32-fns.el2
-rw-r--r--lisp/window.el100
-rw-r--r--lisp/woman.el4
-rw-r--r--lisp/xml.el2
-rw-r--r--lwlib/xlwmenu.c4
-rw-r--r--nt/INSTALL4
-rw-r--r--nt/README2
-rw-r--r--nt/runemacs.c2
-rw-r--r--oldXMenu/AddSel.c2
-rw-r--r--src/ChangeLog114
-rw-r--r--src/ChangeLog.12
-rw-r--r--src/ChangeLog.106
-rw-r--r--src/ChangeLog.1178
-rw-r--r--src/ChangeLog.214
-rw-r--r--src/ChangeLog.38
-rw-r--r--src/ChangeLog.44
-rw-r--r--src/ChangeLog.52
-rw-r--r--src/ChangeLog.64
-rw-r--r--src/ChangeLog.74
-rw-r--r--src/ChangeLog.810
-rw-r--r--src/ChangeLog.92
-rw-r--r--src/alloc.c8
-rw-r--r--src/bidi.c2
-rw-r--r--src/buffer.c4
-rw-r--r--src/buffer.h2
-rw-r--r--src/casetab.c2
-rw-r--r--src/ccl.c4
-rw-r--r--src/character.c2
-rw-r--r--src/character.h2
-rw-r--r--src/charset.c2
-rw-r--r--src/chartab.c2
-rw-r--r--src/dbusbind.c2
-rw-r--r--src/dispextern.h7
-rw-r--r--src/dispnew.c36
-rw-r--r--src/fileio.c11
-rw-r--r--src/fns.c2
-rw-r--r--src/fontset.c4
-rw-r--r--src/frame.c11
-rw-r--r--src/ftfont.c4
-rw-r--r--src/ftxfont.c2
-rw-r--r--src/gtkutil.c8
-rw-r--r--src/image.c4
-rw-r--r--src/insdel.c2
-rw-r--r--src/intervals.c43
-rw-r--r--src/intervals.h68
-rw-r--r--src/keyboard.c6
-rw-r--r--src/keymap.c4
-rw-r--r--src/lisp.h5
-rw-r--r--src/lread.c2
-rw-r--r--src/m/ibms390.h27
-rw-r--r--src/m/ibms390x.h2
-rw-r--r--src/m/intel386.h2
-rw-r--r--src/m/template.h8
-rw-r--r--src/msdos.c2
-rw-r--r--src/nsfont.m14
-rw-r--r--src/nsterm.h2
-rw-r--r--src/print.c2
-rw-r--r--src/process.c48
-rw-r--r--src/puresize.h16
-rw-r--r--src/s/cygwin.h3
-rw-r--r--src/s/hpux10-20.h8
-rw-r--r--src/search.c4
-rw-r--r--src/sound.c2
-rw-r--r--src/sysdep.c2
-rw-r--r--src/w32.c6
-rw-r--r--src/w32console.c3
-rw-r--r--src/w32fns.c6
-rw-r--r--src/w32font.c20
-rw-r--r--src/w32menu.c6
-rw-r--r--src/w32proc.c6
-rw-r--r--src/w32term.c10
-rw-r--r--src/w32uniscribe.c4
-rw-r--r--src/w32xfns.c3
-rw-r--r--src/window.c57
-rw-r--r--src/window.h2
-rw-r--r--src/xdisp.c119
-rw-r--r--src/xfns.c4
-rw-r--r--src/xmenu.c2
-rw-r--r--src/xterm.c8
-rw-r--r--test/ChangeLog8
-rw-r--r--test/cedet/semantic-utest-c.el2
-rw-r--r--test/cedet/semantic-utest.el4
-rw-r--r--test/cedet/tests/testsppreplaced.c5
-rw-r--r--test/rmailmm.el93
433 files changed, 3263 insertions, 2771 deletions
diff --git a/ChangeLog b/ChangeLog
index 34039b3860c..0232a3f8415 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
12011-11-22 Glenn Morris <rgm@gnu.org>
2
3 * configure.in (EMACSDATA, EMACSDOC): If set, print, since they can
4 have confusing effects on the build. (Bug#6401)
5
6 * Makefile.in (install-arch-dep): Tweak previous change.
7
82011-11-22 Yavor Doganov <yavor@gnu.org>
9
10 Do not install arch-dependent files in the app bundle if
11 --disable-ns-self-contained is requested. (Bug#1335)
12 * configure.in (exec_prefix, libexecdir): Define relative to
13 `ns_appbindir' only if configured for a self-contained app.
14 * Makefile.in (install-arch-dep): Test for the existence of
15 libexec in the Emacs.app bundle before executing commands.
16
172011-11-20 Andreas Schwab <schwab@linux-m68k.org>
18
19 * configure.in: Remove reference to src/m/ibms390.h.
20
12011-11-13 Glenn Morris <rgm@gnu.org> 212011-11-13 Glenn Morris <rgm@gnu.org>
2 22
3 * INSTALL: Tiny updates for disk space used during installation. 23 * INSTALL: Tiny updates for disk space used during installation.
@@ -689,7 +709,7 @@
689 * autogen/Makefile.in: Add auto-updated generated files. 709 * autogen/Makefile.in: Add auto-updated generated files.
690 * autogen.sh: No longer a no-op, now it tests for autotools 710 * autogen.sh: No longer a no-op, now it tests for autotools
691 and runs them as necessary. 711 and runs them as necessary.
692 * configure.in: Defaule maintainer-mode to on. 712 * configure.in: Default maintainer-mode to on.
693 * aclocal.m4, configure, lib/Makefile.in: Remove files. 713 * aclocal.m4, configure, lib/Makefile.in: Remove files.
694 714
6952011-03-13 Paul Eggert <eggert@cs.ucla.edu> 7152011-03-13 Paul Eggert <eggert@cs.ucla.edu>
@@ -9711,7 +9731,7 @@
9711 paths.h.in, Makefile.in in src. 9731 paths.h.in, Makefile.in in src.
9712 9732
9713 * configure: Delete .tmp files before creating them; don't bother 9733 * configure: Delete .tmp files before creating them; don't bother
9714 trying to make final targets writeable first, since it won't 9734 trying to make final targets writable first, since it won't
9715 matter to move-if-change. 9735 matter to move-if-change.
9716 9736
97171992-05-19 Jim Blandy (jimb@pogo.cs.oberlin.edu) 97371992-05-19 Jim Blandy (jimb@pogo.cs.oberlin.edu)
diff --git a/Makefile.in b/Makefile.in
index f5bc0ce7015..c0d108877c1 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -474,10 +474,10 @@ install-arch-dep: mkdir
474 if test -d share/emacs ; then dir=share/emacs/*/*; $(MV_DIRS); fi;\ 474 if test -d share/emacs ; then dir=share/emacs/*/*; $(MV_DIRS); fi;\
475 if test -d share/info ; then dir=share/info; $(MV_DIRS) ; fi ; \ 475 if test -d share/info ; then dir=share/info; $(MV_DIRS) ; fi ; \
476 rm -fr share ) ; \ 476 rm -fr share ) ; \
477 ( cd ${ns_appbindir}libexec ; dir=emacs/*/*/* ; $(MV_DIRS); \ 477 ( cd ${ns_appbindir} ; \
478 rm -fr emacs ) ; \ 478 if cd libexec ; then dir=emacs/*/*/* ; $(MV_DIRS); \
479 ( cd ${ns_appbindir}bin ; rm -f emacs emacs-24* ; \ 479 rm -fr emacs; if cd ../bin; then rm -f emacs emacs-24*; \
480 ln -sf ../libexec/* .) ; \ 480 ln -sf ../libexec/* . ; fi ; fi ) ; \
481 else true ; fi 481 else true ; fi
482 482
483## FIXME is the emacs-24* bit above really necessary and correct? 483## FIXME is the emacs-24* bit above really necessary and correct?
@@ -666,7 +666,7 @@ install-etc: mkdir
666### Install LEIM files. Although they are machine-independent, we 666### Install LEIM files. Although they are machine-independent, we
667### have separate target here instead of including it in 667### have separate target here instead of including it in
668### `install-arch-indep'. People who extracted LEIM files after they 668### `install-arch-indep'. People who extracted LEIM files after they
669### insalled Emacs itself can install only LEIM files by this target. 669### installed Emacs itself can install only LEIM files by this target.
670install-leim: leim/Makefile mkdir 670install-leim: leim/Makefile mkdir
671 cd leim; $(MAKE) install 671 cd leim; $(MAKE) install
672 672
diff --git a/admin/CPP-DEFINES b/admin/CPP-DEFINES
index 6e0f736a06f..c5f8c7ab31f 100644
--- a/admin/CPP-DEFINES
+++ b/admin/CPP-DEFINES
@@ -48,7 +48,7 @@ SYSTEM_MALLOC Use the system library's malloc.
48subprocesses System can use subprocesses (for M-x shell for example). Defined by default, only MSDOS undefines it. 48subprocesses System can use subprocesses (for M-x shell for example). Defined by default, only MSDOS undefines it.
49USE_LISP_UNION_TYPE Define it in lisp.h to make Lisp_Object be a union type instead of the default int. 49USE_LISP_UNION_TYPE Define it in lisp.h to make Lisp_Object be a union type instead of the default int.
50 50
51** System specific macros, decribed in detail in src/s/template.h 51** System specific macros, described in detail in src/s/template.h
52CLASH_DETECTION 52CLASH_DETECTION
53COFF 53COFF
54FIRST_PTY_LETTER 54FIRST_PTY_LETTER
@@ -58,9 +58,6 @@ NARROWPROTO
58SEPCHAR 58SEPCHAR
59SYSTEM_TYPE 59SYSTEM_TYPE
60 60
61** Machine specific macros, decribed in detail in src/m/template.h
62VIRT_ADDR_VARIES
63
64** Misc macros 61** Misc macros
65USER_FULL_NAME If defined, overrides the default pw->pw_gecos for getting at the full user name. Only MSDOS overrides the default. 62USER_FULL_NAME If defined, overrides the default pw->pw_gecos for getting at the full user name. Only MSDOS overrides the default.
66 63
diff --git a/admin/ChangeLog b/admin/ChangeLog
index 6030dd8f6d3..aa815c552b4 100644
--- a/admin/ChangeLog
+++ b/admin/ChangeLog
@@ -1,3 +1,7 @@
12011-11-20 Andreas Schwab <schwab@linux-m68k.org>
2
3 * CPP-DEFINES (VIRT_ADDR_VARIES): Remove.
4
12011-11-16 Juanma Barranquero <lekktu@gmail.com> 52011-11-16 Juanma Barranquero <lekktu@gmail.com>
2 6
3 * admin.el (manual-dvi): Fix typo. 7 * admin.el (manual-dvi): Fix typo.
@@ -398,7 +402,7 @@
398 402
3992009-06-24 Kenichi Handa <handa@m17n.org> 4032009-06-24 Kenichi Handa <handa@m17n.org>
400 404
401 * charsets/mapconv: For the UNICODE format files, do reverse sort 405 * charsets/mapconv: For the Unicode format files, do reverse sort
402 and don't compact the map. This is to prefer the first one in the 406 and don't compact the map. This is to prefer the first one in the
403 duplicated mappings (e.g. 0x20->U+0020, 0x20->U+00A0). 407 duplicated mappings (e.g. 0x20->U+0020, 0x20->U+00A0).
404 408
diff --git a/admin/grammars/c.by b/admin/grammars/c.by
index 004f0b5f30f..b49f8ce76c7 100644
--- a/admin/grammars/c.by
+++ b/admin/grammars/c.by
@@ -122,7 +122,7 @@
122%put DELETE summary "delete <object>;" 122%put DELETE summary "delete <object>;"
123 123
124;; Despite this, this parser can find templates by ignoring the TEMPLATE 124;; Despite this, this parser can find templates by ignoring the TEMPLATE
125;; keyword, and finding the class/method being templateized. 125;; keyword, and finding the class/method being templatized.
126%token TEMPLATE "template" 126%token TEMPLATE "template"
127%put TEMPLATE summary "template <class TYPE ...> TYPE_OR_FUNCTION" 127%put TEMPLATE summary "template <class TYPE ...> TYPE_OR_FUNCTION"
128 128
diff --git a/admin/grammars/java-tags.wy b/admin/grammars/java-tags.wy
index 99d2b9df81d..f4b2f1f1f49 100644
--- a/admin/grammars/java-tags.wy
+++ b/admin/grammars/java-tags.wy
@@ -740,7 +740,7 @@ It ignores whitespaces, newlines and comments."
740 wisent-java-tags-wy--<symbol>-regexp-analyzer 740 wisent-java-tags-wy--<symbol>-regexp-analyzer
741 wisent-java-tags-wy--<punctuation>-string-analyzer 741 wisent-java-tags-wy--<punctuation>-string-analyzer
742 wisent-java-tags-wy--<block>-block-analyzer 742 wisent-java-tags-wy--<block>-block-analyzer
743 ;; In theory, unicode chars should be turned into normal chars 743 ;; In theory, Unicode chars should be turned into normal chars
744 ;; and then combined into regular ascii keywords and text. This 744 ;; and then combined into regular ascii keywords and text. This
745 ;; analyzer just keeps these things from making the lexer go boom. 745 ;; analyzer just keeps these things from making the lexer go boom.
746 wisent-java-tags-wy--<unicode>-regexp-analyzer 746 wisent-java-tags-wy--<unicode>-regexp-analyzer
diff --git a/admin/notes/multi-tty b/admin/notes/multi-tty
index 410e3aa8614..8a10997eb8b 100644
--- a/admin/notes/multi-tty
+++ b/admin/notes/multi-tty
@@ -521,7 +521,7 @@ THINGS TO DO
521 521
522** Very strange bug: visible-bell does not work on secondary 522** Very strange bug: visible-bell does not work on secondary
523 terminals in xterm and konsole. The screen does flicker a bit, 523 terminals in xterm and konsole. The screen does flicker a bit,
524 but it's so quick it isn't noticable. 524 but it's so quick it isn't noticeable.
525 525
526 (Update: This is probably some problem with padding or whatnot on 526 (Update: This is probably some problem with padding or whatnot on
527 the secondary terminals.) 527 the secondary terminals.)
@@ -585,7 +585,7 @@ DIARY OF CHANGES
585-- other-frame should cycle through the frames on the `current' 585-- other-frame should cycle through the frames on the `current'
586 terminal only. 586 terminal only.
587 587
588 (Done, by trivially modifiying next_frame and prev_frame.) 588 (Done, by trivially modifying next_frame and prev_frame.)
589 589
590-- Support different terminal sizes. 590-- Support different terminal sizes.
591 591
@@ -984,7 +984,7 @@ DIARY OF CHANGES
984 wrt foreground/background process groups.) 984 wrt foreground/background process groups.)
985 985
986-- There is a flicker during the startup of `emacs -nw'; it's as if 986-- There is a flicker during the startup of `emacs -nw'; it's as if
987 the terminal is initialized, reset and then initialialized again. 987 the terminal is initialized, reset and then initialized again.
988 Debug this. (Hint: narrow_foreground_group is called twice during 988 Debug this. (Hint: narrow_foreground_group is called twice during
989 startup.) 989 startup.)
990 990
diff --git a/admin/notes/nextstep b/admin/notes/nextstep
index cf0ebbc11aa..a2e5ce2c9b0 100644
--- a/admin/notes/nextstep
+++ b/admin/notes/nextstep
@@ -83,7 +83,7 @@ original NeXT Display PostScript (DPS) APIs are available and used. Under
83Cocoa, these were removed and Quartz drawing functions replaced them. 83Cocoa, these were removed and Quartz drawing functions replaced them.
84 84
85In both cases, font glyphs are accessed through UTF8 character 85In both cases, font glyphs are accessed through UTF8 character
86representations. It would be preferable to use unicode indices, but prior 86representations. It would be preferable to use Unicode indices, but prior
87attempts at this have failed. 87attempts at this have failed.
88 88
89Multi-script fontsets are auto-created in nsfont_make_fontset_for_font() using 89Multi-script fontsets are auto-created in nsfont_make_fontset_for_font() using
diff --git a/admin/nt/README-ftp-server b/admin/nt/README-ftp-server
index 82e33cc5418..c320bbe915d 100644
--- a/admin/nt/README-ftp-server
+++ b/admin/nt/README-ftp-server
@@ -254,7 +254,7 @@ See the end of the file for license conditions.
254 254
255 Another valuable source of information and help which should not be 255 Another valuable source of information and help which should not be
256 overlooked is the various Usenet news groups dedicated to Emacs. 256 overlooked is the various Usenet news groups dedicated to Emacs.
257 These are particuarly good for help with general issues which aren't 257 These are particularly good for help with general issues which aren't
258 specific to the Windows port of Emacs. The main news groups to use 258 specific to the Windows port of Emacs. The main news groups to use
259 for seeking help are: 259 for seeking help are:
260 260
diff --git a/admin/unidata/unidata-gen.el b/admin/unidata/unidata-gen.el
index 1002bb003af..713b0512e09 100644
--- a/admin/unidata/unidata-gen.el
+++ b/admin/unidata/unidata-gen.el
@@ -158,7 +158,7 @@
158;; DEFAULT: the default value of the property. It may have the form 158;; DEFAULT: the default value of the property. It may have the form
159;; (VAL0 (FROM1 TO1 VAL1) ...) which indicates that the default 159;; (VAL0 (FROM1 TO1 VAL1) ...) which indicates that the default
160;; value is VAL0 except for characters in the ranges specified by 160;; value is VAL0 except for characters in the ranges specified by
161;; FROMn and TOn (incusive). The default value of characters 161;; FROMn and TOn (inclusive). The default value of characters
162;; between FROMn and TOn is VALn. 162;; between FROMn and TOn is VALn.
163;; VAL-LIST: list of specially ordered property values 163;; VAL-LIST: list of specially ordered property values
164 164
diff --git a/autogen/configure b/autogen/configure
index b22541d8b22..eae55274761 100755
--- a/autogen/configure
+++ b/autogen/configure
@@ -4461,7 +4461,6 @@ case "${canonical}" in
4461 opsys=gnu-linux 4461 opsys=gnu-linux
4462 case ${canonical} in 4462 case ${canonical} in
4463 alpha*) machine=alpha ;; 4463 alpha*) machine=alpha ;;
4464 s390-*) machine=ibms390 ;;
4465 s390x-*) machine=ibms390x ;; 4464 s390x-*) machine=ibms390x ;;
4466 powerpc*) machine=macppc ;; 4465 powerpc*) machine=macppc ;;
4467 sparc*) machine=sparc ;; 4466 sparc*) machine=sparc ;;
@@ -9984,10 +9983,10 @@ if test "${HAVE_NS}" = yes; then
9984 window_system=nextstep 9983 window_system=nextstep
9985 with_xft=no 9984 with_xft=no
9986 # set up packaging dirs 9985 # set up packaging dirs
9987 exec_prefix=${ns_appbindir}
9988 libexecdir=${ns_appbindir}/libexec
9989 if test "${EN_NS_SELF_CONTAINED}" = yes; then 9986 if test "${EN_NS_SELF_CONTAINED}" = yes; then
9990 prefix=${ns_appresdir} 9987 prefix=${ns_appresdir}
9988 exec_prefix=${ns_appbindir}
9989 libexecdir=${ns_appbindir}/libexec
9991 fi 9990 fi
9992 ns_frag=$srcdir/src/ns.mk 9991 ns_frag=$srcdir/src/ns.mk
9993 NS_OBJ="fontset.o fringe.o image.o" 9992 NS_OBJ="fontset.o fringe.o image.o"
@@ -13640,7 +13639,7 @@ $as_echo "#define NS_IMPL_GNUSTEP 1" >>confdefs.h
13640 13639
13641 # See also .m.o rule in Makefile.in */ 13640 # See also .m.o rule in Makefile.in */
13642 # FIXME: are all these flags really needed? Document here why. */ 13641 # FIXME: are all these flags really needed? Document here why. */
13643 C_SWITCH_X_SYSTEM="-D_REENTRANT -fPIC -fno-strict-aliasing -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}" 13642 C_SWITCH_X_SYSTEM="-D_REENTRANT -fPIC -fno-strict-aliasing -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
13644 ## Extra CFLAGS applied to src/*.m files. 13643 ## Extra CFLAGS applied to src/*.m files.
13645 GNU_OBJC_CFLAGS="$GNU_OBJC_CFLAGS -fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN -DGSDIAGNOSE" 13644 GNU_OBJC_CFLAGS="$GNU_OBJC_CFLAGS -fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN -DGSDIAGNOSE"
13646 fi 13645 fi
@@ -24294,6 +24293,13 @@ echo " Does Emacs use -lxft? ${HAVE_XFT}"
24294echo " Does Emacs use toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}" 24293echo " Does Emacs use toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}"
24295echo 24294echo
24296 24295
24296if test -n "${EMACSDATA}"; then
24297 echo " Environment variable EMACSDATA set to: $EMACSDATA"
24298fi
24299if test -n "${EMACSDOC}"; then
24300 echo " Environment variable EMACSDOC set to: $EMACSDOC"
24301fi
24302
24297if test $USE_XASSERTS = yes; then 24303if test $USE_XASSERTS = yes; then
24298 echo " Compiling with asserts turned on." 24304 echo " Compiling with asserts turned on."
24299 CPPFLAGS="$CPPFLAGS -DXASSERTS=1" 24305 CPPFLAGS="$CPPFLAGS -DXASSERTS=1"
diff --git a/configure.in b/configure.in
index ec938bf37cd..5b686e017f6 100644
--- a/configure.in
+++ b/configure.in
@@ -418,7 +418,6 @@ case "${canonical}" in
418 opsys=gnu-linux 418 opsys=gnu-linux
419 case ${canonical} in 419 case ${canonical} in
420 alpha*) machine=alpha ;; 420 alpha*) machine=alpha ;;
421 s390-*) machine=ibms390 ;;
422 s390x-*) machine=ibms390x ;; 421 s390x-*) machine=ibms390x ;;
423 powerpc*) machine=macppc ;; 422 powerpc*) machine=macppc ;;
424 sparc*) machine=sparc ;; 423 sparc*) machine=sparc ;;
@@ -1571,10 +1570,10 @@ if test "${HAVE_NS}" = yes; then
1571 window_system=nextstep 1570 window_system=nextstep
1572 with_xft=no 1571 with_xft=no
1573 # set up packaging dirs 1572 # set up packaging dirs
1574 exec_prefix=${ns_appbindir}
1575 libexecdir=${ns_appbindir}/libexec
1576 if test "${EN_NS_SELF_CONTAINED}" = yes; then 1573 if test "${EN_NS_SELF_CONTAINED}" = yes; then
1577 prefix=${ns_appresdir} 1574 prefix=${ns_appresdir}
1575 exec_prefix=${ns_appbindir}
1576 libexecdir=${ns_appbindir}/libexec
1578 fi 1577 fi
1579 ns_frag=$srcdir/src/ns.mk 1578 ns_frag=$srcdir/src/ns.mk
1580 NS_OBJ="fontset.o fringe.o image.o" 1579 NS_OBJ="fontset.o fringe.o image.o"
@@ -2637,6 +2636,8 @@ if test "${HAVE_NS}" = "yes"; then
2637 AC_DEFINE(NS_IMPL_GNUSTEP, 1, [Define to 1 if you are using NS windowing under GNUstep.]) 2636 AC_DEFINE(NS_IMPL_GNUSTEP, 1, [Define to 1 if you are using NS windowing under GNUstep.])
2638 # See also .m.o rule in Makefile.in */ 2637 # See also .m.o rule in Makefile.in */
2639 # FIXME: are all these flags really needed? Document here why. */ 2638 # FIXME: are all these flags really needed? Document here why. */
2639 dnl FIXME this should be renamed to GNUSTEP_CFLAGS, and only
2640 dnl used in src/Makefile.in.
2640 C_SWITCH_X_SYSTEM="-D_REENTRANT -fPIC -fno-strict-aliasing -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}" 2641 C_SWITCH_X_SYSTEM="-D_REENTRANT -fPIC -fno-strict-aliasing -I${GNUSTEP_SYSTEM_HEADERS} ${GNUSTEP_LOCAL_HEADERS}"
2641 ## Extra CFLAGS applied to src/*.m files. 2642 ## Extra CFLAGS applied to src/*.m files.
2642 GNU_OBJC_CFLAGS="$GNU_OBJC_CFLAGS -fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN -DGSDIAGNOSE" 2643 GNU_OBJC_CFLAGS="$GNU_OBJC_CFLAGS -fgnu-runtime -Wno-import -fconstant-string-class=NSConstantString -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGSWARN -DGSDIAGNOSE"
@@ -3786,6 +3787,13 @@ echo " Does xwidgets support clutter(demo code)? ${HAVE_CLUTTER}"
3786echo " Does xwidgets support goocanvas(demo code)? ${HAVE_GOOCANVAS}" 3787echo " Does xwidgets support goocanvas(demo code)? ${HAVE_GOOCANVAS}"
3787echo 3788echo
3788 3789
3790if test -n "${EMACSDATA}"; then
3791 echo " Environment variable EMACSDATA set to: $EMACSDATA"
3792fi
3793if test -n "${EMACSDOC}"; then
3794 echo " Environment variable EMACSDOC set to: $EMACSDOC"
3795fi
3796
3789if test $USE_XASSERTS = yes; then 3797if test $USE_XASSERTS = yes; then
3790 echo " Compiling with asserts turned on." 3798 echo " Compiling with asserts turned on."
3791 CPPFLAGS="$CPPFLAGS -DXASSERTS=1" 3799 CPPFLAGS="$CPPFLAGS -DXASSERTS=1"
diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index b796acd8b39..6e687bcefc9 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,3 +1,12 @@
12011-11-21 Chong Yidong <cyd@gnu.org>
2
3 * mark.texi (Global Mark Ring): Fix description of global mark
4 ring (Bug#10032).
5
62011-11-20 Juanma Barranquero <lekktu@gmail.com>
7
8 * msdog.texi (Windows Fonts): Fix typo.
9
12011-11-17 Glenn Morris <rgm@gnu.org> 102011-11-17 Glenn Morris <rgm@gnu.org>
2 11
3 * regs.texi (Bookmarks): Small fixes related to saving. (Bug#10058) 12 * regs.texi (Bookmarks): Small fixes related to saving. (Bug#10058)
diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi
index 6801c7f1e0e..d7022ba739b 100644
--- a/doc/emacs/ack.texi
+++ b/doc/emacs/ack.texi
@@ -549,7 +549,7 @@ Taichi Kawabata added support for Devanagari script and the Indian
549languages, and wrote @file{ucs-normalize.el} for Unicode normalization. 549languages, and wrote @file{ucs-normalize.el} for Unicode normalization.
550 550
551@item 551@item
552Taro Kawagishi implented the MD4 Message Digest Algorithm in Lisp; and 552Taro Kawagishi implemented the MD4 Message Digest Algorithm in Lisp; and
553wrote @file{ntlm.el} and @file{sasl-ntlm.el} for NT LanManager 553wrote @file{ntlm.el} and @file{sasl-ntlm.el} for NT LanManager
554authentication support. 554authentication support.
555 555
diff --git a/doc/emacs/mark.texi b/doc/emacs/mark.texi
index 0eccef41711..7d65719e5f0 100644
--- a/doc/emacs/mark.texi
+++ b/doc/emacs/mark.texi
@@ -354,9 +354,12 @@ Positions in Registers}).
354@vindex global-mark-ring-max 354@vindex global-mark-ring-max
355 In addition to the ordinary mark ring that belongs to each buffer, 355 In addition to the ordinary mark ring that belongs to each buffer,
356Emacs has a single @dfn{global mark ring}. Each time you set a mark, 356Emacs has a single @dfn{global mark ring}. Each time you set a mark,
357in any buffer, this is recorded in the global mark ring in addition to 357this is recorded in the global mark ring in addition to the current
358the current buffer's own mark ring. The length of this ring can be 358buffer's own mark ring, if you have switched buffers since the
359controlled by @code{global-mark-ring-max}, and is 16 by default. 359previous mark setting. Hence, the global mark ring records a sequence
360of buffers that you have been in, and, for each buffer, a place where
361you set the mark. The length of the global mark ring is controlled by
362@code{global-mark-ring-max}, and is 16 by default.
360 363
361@kindex C-x C-@key{SPC} 364@kindex C-x C-@key{SPC}
362@findex pop-global-mark 365@findex pop-global-mark
diff --git a/doc/emacs/msdog.texi b/doc/emacs/msdog.texi
index bbaf31ade85..e3c9b8d4fc2 100644
--- a/doc/emacs/msdog.texi
+++ b/doc/emacs/msdog.texi
@@ -914,7 +914,7 @@ as a fallback with the font family left unspecified.
914@vindex w32-charset-info-alist 914@vindex w32-charset-info-alist
915@item registry 915@item registry
916Specifies the character set registry that the font is 916Specifies the character set registry that the font is
917expected to cover. Most TrueType and OpenType fonts will be unicode fonts 917expected to cover. Most TrueType and OpenType fonts will be Unicode fonts
918that cover several national character sets, but you can narrow down the 918that cover several national character sets, but you can narrow down the
919selection of fonts to those that support a particular character set by 919selection of fonts to those that support a particular character set by
920using a specific registry from @code{w32-charset-info-alist} here. 920using a specific registry from @code{w32-charset-info-alist} here.
@@ -936,9 +936,9 @@ Options specific to @code{GDI} fonts:
936@table @code 936@table @code
937 937
938@cindex font scripts (MS Windows) 938@cindex font scripts (MS Windows)
939@cindex font unicode subranges (MS Windows) 939@cindex font Unicode subranges (MS Windows)
940@item script 940@item script
941Specifies a unicode subrange the font should support. 941Specifies a Unicode subrange the font should support.
942 942
943The following scripts are recognized on Windows: @code{latin}, @code{greek}, 943The following scripts are recognized on Windows: @code{latin}, @code{greek},
944@code{coptic}, @code{cyrillic}, @code{armenian}, @code{hebrew}, @code{arabic}, 944@code{coptic}, @code{cyrillic}, @code{armenian}, @code{hebrew}, @code{arabic},
diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi
index ad2040c9047..c44b67454a2 100644
--- a/doc/emacs/windows.texi
+++ b/doc/emacs/windows.texi
@@ -34,11 +34,11 @@ has its own value of point.
34 34
35@cindex selected window 35@cindex selected window
36 At any time, one Emacs window is the @dfn{selected window}; the 36 At any time, one Emacs window is the @dfn{selected window}; the
37buffer this window is displaying is the current buffer. Each window 37buffer this window is displaying is the current buffer. On graphical
38has its own value of point. On graphical displays, the point is 38displays, the point is indicated by a solid blinking cursor in the
39indicated by a solid blinking cursor in the selected window, and by a 39selected window, and by a hollow box in non-selected windows. On
40hollow box in non-selected windows. On text-only terminals, the 40text-only terminals, the cursor is drawn only in the selected window.
41cursor is drawn only in the selected window. @xref{Cursor Display}. 41@xref{Cursor Display}.
42 42
43 Commands to move point affect the value of point for the selected 43 Commands to move point affect the value of point for the selected
44Emacs window only. They do not change the value of point in other 44Emacs window only. They do not change the value of point in other
diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi
index ef04626e95f..244d95d6937 100644
--- a/doc/lispintro/emacs-lisp-intro.texi
+++ b/doc/lispintro/emacs-lisp-intro.texi
@@ -887,7 +887,7 @@ but in this case, it is best to treat it as a novel or as a travel guide
887to a country not yet visited: interesting, but not the same as being 887to a country not yet visited: interesting, but not the same as being
888there. 888there.
889 889
890Much of this introduction is dedicated to walk-throughs or guided tours 890Much of this introduction is dedicated to walkthroughs or guided tours
891of code used in GNU Emacs. These tours are designed for two purposes: 891of code used in GNU Emacs. These tours are designed for two purposes:
892first, to give you familiarity with real, working code (code you use 892first, to give you familiarity with real, working code (code you use
893every day); and, second, to give you familiarity with the way Emacs 893every day); and, second, to give you familiarity with the way Emacs
diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog
index 0fa50492481..293f253c545 100644
--- a/doc/lispref/ChangeLog
+++ b/doc/lispref/ChangeLog
@@ -1,3 +1,43 @@
12011-11-21 Martin Rudalics <rudalics@gmx.at>
2
3 * windows.texi (Windows and Frames, Splitting Windows): Fix
4 typos.
5
62011-11-21 Chong Yidong <cyd@gnu.org>
7
8 * windows.texi (Splitting Windows): Fix error in documentation of
9 window-combination-limit.
10 (Cyclic Window Ordering): Minor fixes to next-window,
11 one-window-p, and get-lru-window docs. Don't document
12 window-list-1.
13 (Buffers and Windows): Copyedits.
14 (Choosing Window): Document special handling of special-display-*.
15 (Choosing Window Options): Fix display-buffer-reuse-frames doc.
16 Don't document even-window-heights, which is going away. Clarify
17 which options are obeyed by which action functions.
18
192011-11-20 Stefan Monnier <monnier@iro.umontreal.ca>
20
21 * display.texi (Invisible Text): Clarify point adjustment (bug#10072).
22
232011-11-20 Martin Rudalics <rudalics@gmx.at>
24
25 * windows.texi (Resizing Windows, Splitting Windows):
26 Remove term "status" when talking about combination limits.
27
282011-11-20 Juanma Barranquero <lekktu@gmail.com>
29
30 * compile.texi (Compiler Errors):
31 * help.texi (Help Functions): Fix typos.
32
332011-11-19 Chong Yidong <cyd@gnu.org>
34
35 * windows.texi (Splitting Windows): Clarify role of window
36 parameters in split-window. Shorten the example.
37 (Deleting Windows): Rewrite intro to handle internal windows.
38 Fix delete-windows-on doc.
39 (Selecting Windows): Copyedits.
40
12011-11-17 Martin Rudalics <rudalics@gmx.at> 412011-11-17 Martin Rudalics <rudalics@gmx.at>
2 42
3 * windows.texi (Resizing Windows, Splitting Windows) 43 * windows.texi (Resizing Windows, Splitting Windows)
@@ -6,8 +46,8 @@
6 46
72011-11-16 Martin Rudalics <rudalics@gmx.at> 472011-11-16 Martin Rudalics <rudalics@gmx.at>
8 48
9 * windows.texi (Resizing Windows, Splitting Windows): Rename 49 * windows.texi (Resizing Windows, Splitting Windows):
10 occurrences of window-nest to window-combination-limit. 50 Rename occurrences of window-nest to window-combination-limit.
11 51
122011-11-14 Juanma Barranquero <lekktu@gmail.com> 522011-11-14 Juanma Barranquero <lekktu@gmail.com>
13 53
@@ -15,8 +55,8 @@
15 55
162011-11-12 Martin Rudalics <rudalics@gmx.at> 562011-11-12 Martin Rudalics <rudalics@gmx.at>
17 57
18 * windows.texi (Splitting Windows, Deleting Windows): Remove 58 * windows.texi (Splitting Windows, Deleting Windows):
19 references to splits status of windows. 59 Remove references to splits status of windows.
20 60
212011-11-10 Glenn Morris <rgm@gnu.org> 612011-11-10 Glenn Morris <rgm@gnu.org>
22 62
@@ -68,8 +108,8 @@
68 (Windows and Frames): Various clarifications, e.g. non-live 108 (Windows and Frames): Various clarifications, e.g. non-live
69 windows also belong to frames. Fix window-list description. 109 windows also belong to frames. Fix window-list description.
70 Simplify window nesting example. 110 Simplify window nesting example.
71 (Splitting Windows, Window Configurations): Use 111 (Splitting Windows, Window Configurations):
72 split-window-below. 112 Use split-window-below.
73 113
742011-11-04 Eli Zaretskii <eliz@gnu.org> 1142011-11-04 Eli Zaretskii <eliz@gnu.org>
75 115
@@ -119,8 +159,8 @@
119 159
1202011-10-05 Chong Yidong <cyd@stupidchicken.com> 1602011-10-05 Chong Yidong <cyd@stupidchicken.com>
121 161
122 * display.texi (Low-Level Font, Face Attributes, Font Lookup): Fix 162 * display.texi (Low-Level Font, Face Attributes, Font Lookup):
123 Emacs manual xref (Bug#9675). 163 Fix Emacs manual xref (Bug#9675).
124 164
1252011-10-01 Chong Yidong <cyd@stupidchicken.com> 1652011-10-01 Chong Yidong <cyd@stupidchicken.com>
126 166
@@ -159,8 +199,8 @@
159 * windows.texi (Window History): New node. Move text here from 199 * windows.texi (Window History): New node. Move text here from
160 Buffers and Windows. 200 Buffers and Windows.
161 (Switching Buffers): Rename from Displaying Buffers, since we 201 (Switching Buffers): Rename from Displaying Buffers, since we
162 don't document display-buffer here; callers changed. Document 202 don't document display-buffer here; callers changed.
163 FORCE-SAME-WINDOW arg to switch-to-buffer and 203 Document FORCE-SAME-WINDOW arg to switch-to-buffer and
164 switch-to-buffer-other-frame. Delete duplicate 204 switch-to-buffer-other-frame. Delete duplicate
165 replace-buffer-in-windows doc. 205 replace-buffer-in-windows doc.
166 (Choosing Window): Document display actions. 206 (Choosing Window): Document display actions.
@@ -191,10 +231,10 @@
191 Provide examples. Describe window-nest and window-splits 231 Provide examples. Describe window-nest and window-splits
192 options. 232 options.
193 (Deleting Windows): Minor rewrite. 233 (Deleting Windows): Minor rewrite.
194 (Selecting Windows): Minor rewrite. Describe 234 (Selecting Windows): Minor rewrite.
195 frame-selected-window and set-frame-selected-window here. 235 Describe frame-selected-window and set-frame-selected-window here.
196 (Cyclic Window Ordering): Minor rewrite. Describe 236 (Cyclic Window Ordering): Minor rewrite.
197 window-list-1. 237 Describe window-list-1.
198 (Buffers and Windows): Rewrite. Explain a window's previous and 238 (Buffers and Windows): Rewrite. Explain a window's previous and
199 next buffers and the corresponding functions. 239 next buffers and the corresponding functions.
200 (Window Tree): Merge into Windows and Frames section. 240 (Window Tree): Merge into Windows and Frames section.
@@ -296,8 +336,8 @@
296 336
297 * display.texi (Bidirectional Display): Document the pitfalls of 337 * display.texi (Bidirectional Display): Document the pitfalls of
298 concatenating strings with bidirectional content, with possible 338 concatenating strings with bidirectional content, with possible
299 solutions. Document bidi-string-mark-left-to-right. Mention 339 solutions. Document bidi-string-mark-left-to-right.
300 paragraph direction in modes that inherit from prog-mode. 340 Mention paragraph direction in modes that inherit from prog-mode.
301 Document use of `bidi-class' and `mirroring' properties as part of 341 Document use of `bidi-class' and `mirroring' properties as part of
302 reordering. 342 reordering.
303 343
@@ -353,8 +393,8 @@
353 the next character, and doesn't affect longer sequences in 393 the next character, and doesn't affect longer sequences in
354 particular (bug#8935). 394 particular (bug#8935).
355 395
356 * debugging.texi (Using Debugger): Mention 396 * debugging.texi (Using Debugger):
357 @code{eval-expression-debug-on-error} (bug#8549). 397 Mention @code{eval-expression-debug-on-error} (bug#8549).
358 398
3592011-07-14 Eli Zaretskii <eliz@gnu.org> 3992011-07-14 Eli Zaretskii <eliz@gnu.org>
360 400
@@ -503,7 +543,7 @@
503 543
5042011-06-15 Lars Magne Ingebrigtsen <larsi@gnus.org> 5442011-06-15 Lars Magne Ingebrigtsen <larsi@gnus.org>
505 545
506 * processes.texi (Process Information): Renamed `process-alive-p' 546 * processes.texi (Process Information): Rename `process-alive-p'
507 to `process-live-p' for consistency with other `-live-p' functions. 547 to `process-live-p' for consistency with other `-live-p' functions.
508 548
5092011-06-03 Paul Eggert <eggert@cs.ucla.edu> 5492011-06-03 Paul Eggert <eggert@cs.ucla.edu>
@@ -520,8 +560,8 @@
520 560
5212011-05-31 Lars Magne Ingebrigtsen <larsi@gnus.org> 5612011-05-31 Lars Magne Ingebrigtsen <larsi@gnus.org>
522 562
523 * processes.texi (Process Information): Document 563 * processes.texi (Process Information):
524 `process-alive-p'. 564 Document `process-alive-p'.
525 565
5262011-05-29 Chong Yidong <cyd@stupidchicken.com> 5662011-05-29 Chong Yidong <cyd@stupidchicken.com>
527 567
@@ -1919,8 +1959,8 @@
1919 1959
19202009-05-09 Eli Zaretskii <eliz@gnu.org> 19602009-05-09 Eli Zaretskii <eliz@gnu.org>
1921 1961
1922 * nonascii.texi (Default Coding Systems): Document 1962 * nonascii.texi (Default Coding Systems):
1923 find-auto-coding, set-auto-coding, and auto-coding-alist. 1963 Document find-auto-coding, set-auto-coding, and auto-coding-alist.
1924 Add indexing. 1964 Add indexing.
1925 (Lisp and Coding Systems): Add index entries. 1965 (Lisp and Coding Systems): Add index entries.
1926 1966
@@ -2237,7 +2277,7 @@
2237 (Future Local Variables): Node deleted. 2277 (Future Local Variables): Node deleted.
2238 2278
2239 * objects.texi (General Escape Syntax): Update explanation of 2279 * objects.texi (General Escape Syntax): Update explanation of
2240 unicode escape syntax. 2280 Unicode escape syntax.
2241 2281
22422009-02-23 Chong Yidong <cyd@stupidchicken.com> 22822009-02-23 Chong Yidong <cyd@stupidchicken.com>
2243 2283
@@ -5151,8 +5191,8 @@
5151 (Saving Buffers): Mention code and EOL conversions by file I/O 5191 (Saving Buffers): Mention code and EOL conversions by file I/O
5152 primitives and subroutines. 5192 primitives and subroutines.
5153 5193
5154 * nonascii.texi (Lisp and Coding Systems): Document 5194 * nonascii.texi (Lisp and Coding Systems):
5155 coding-system-eol-type. Add index entries for eol conversion. 5195 Document coding-system-eol-type. Add index entries for eol conversion.
5156 5196
5157 * display.texi (Defining Faces): Mention `mac', and add an xref to 5197 * display.texi (Defining Faces): Mention `mac', and add an xref to
5158 where window-system is described. 5198 where window-system is described.
@@ -9102,7 +9142,7 @@
9102 9142
9103 * functions.texi (Defining Functions): Explain about redefining 9143 * functions.texi (Defining Functions): Explain about redefining
9104 primitives. 9144 primitives.
9105 (Function Safety): Renamed. Minor changes. 9145 (Function Safety): Rename. Minor changes.
9106 Comment out the detailed criteria for what is safe. 9146 Comment out the detailed criteria for what is safe.
9107 9147
91082003-06-22 Andreas Schwab <schwab@suse.de> 91482003-06-22 Andreas Schwab <schwab@suse.de>
@@ -9603,7 +9643,7 @@
9603 9643
9604 * Makefile (infodir, prefix): New vars. 9644 * Makefile (infodir, prefix): New vars.
9605 (install): Use infodir. 9645 (install): Use infodir.
9606 (emacsinfodir): Deleted. 9646 (emacsinfodir): Delete.
9607 9647
96081993-05-27 Richard Stallman (rms@mole.gnu.ai.mit.edu) 96481993-05-27 Richard Stallman (rms@mole.gnu.ai.mit.edu)
9609 9649
@@ -9614,7 +9654,7 @@
9614 9654
96151993-05-16 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) 96551993-05-16 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu)
9616 9656
9617 * Makefile (dist): Changed to use Gzip instead of compress. 9657 * Makefile (dist): Change to use Gzip instead of compress.
9618 9658
96191993-04-23 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) 96591993-04-23 Eric S. Raymond (eric@mole.gnu.ai.mit.edu)
9620 9660
diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi
index fe5563370c4..372c041ab7a 100644
--- a/doc/lispref/compile.texi
+++ b/doc/lispref/compile.texi
@@ -528,7 +528,7 @@ but the compiler does not issue warnings for anything that occurs
528inside @var{body}. 528inside @var{body}.
529 529
530We recommend that you use this construct around the smallest 530We recommend that you use this construct around the smallest
531possible piece of code, to avoid missing possible warnings other than one 531possible piece of code, to avoid missing possible warnings other than
532one you intend to suppress. 532one you intend to suppress.
533@end defspec 533@end defspec
534 534
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 034d92f78c3..9849420b1f5 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -870,15 +870,21 @@ ignore invisible newlines if @code{line-move-ignore-invisible} is
870non-@code{nil} (the default), but only because they are explicitly 870non-@code{nil} (the default), but only because they are explicitly
871programmed to do so. 871programmed to do so.
872 872
873 However, if a command ends with point inside or immediately before 873 However, if a command ends with point inside or at the boundary of invisible
874invisible text, the main editing loop moves point further forward or 874text, the main editing loop moves point to one of the two ends of the invisible
875further backward (in the same direction that the command already moved 875text. Which end to move to is chosen based on the following factors: make sure
876it) until that condition is no longer true. Thus, if the command 876that the overall movement of the command is still in the same direction, and
877moved point back into an invisible range, Emacs moves point back to 877prefer a position where an inserted char would not inherit the @code{invisible}
878the beginning of that range, and then back one more character. If the 878property. Additionally, if the text is not replaced by an ellipsis and the
879command moved point forward into an invisible range, Emacs moves point 879command only moved within the invisible text, then point is moved one extra
880forward up to the first visible character that follows the invisible 880character so as to try and reflect the command's movement by a visible movement
881text. 881of the cursor.
882
883 Thus, if the command moved point back to an invisible range (with the usual
884stickiness), Emacs moves point back to the beginning of that range. If the
885command moved point forward into an invisible range, Emacs moves point forward
886to the first visible character that follows the invisible text and then forward
887one more character.
882 888
883 Incremental search can make invisible overlays visible temporarily 889 Incremental search can make invisible overlays visible temporarily
884and/or permanently when a match includes invisible text. To enable 890and/or permanently when a match includes invisible text. To enable
@@ -4546,7 +4552,7 @@ you may prefer to use a different one for a given image type (which
4546@c FIXME how is this priority determined? 4552@c FIXME how is this priority determined?
4547loader will be used in practice depends on the priority of the loaders). 4553loader will be used in practice depends on the priority of the loaders).
4548@c FIXME why are these uppercase when image-types is lower-case? 4554@c FIXME why are these uppercase when image-types is lower-case?
4549@c FIXME what are the possibe options? Are these actually file extensions? 4555@c FIXME what are the possible options? Are these actually file extensions?
4550For example, if you never want to use the ImageMagick loader to use 4556For example, if you never want to use the ImageMagick loader to use
4551JPEG files, add @code{JPG} to this list. 4557JPEG files, add @code{JPG} to this list.
4552 4558
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index d2e86a77112..dad1f28026e 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -953,7 +953,7 @@ variable, Emacs uses the latter. By default,
953The @code{alpha} frame parameter can also be a cons cell 953The @code{alpha} frame parameter can also be a cons cell
954@code{(@samp{active} . @samp{inactive})}, where @samp{active} is the 954@code{(@samp{active} . @samp{inactive})}, where @samp{active} is the
955opacity of the frame when it is selected, and @samp{inactive} is the 955opacity of the frame when it is selected, and @samp{inactive} is the
956opactity when it is not selected. 956opacity when it is not selected.
957@end table 957@end table
958 958
959The following frame parameters are semi-obsolete in that they are 959The following frame parameters are semi-obsolete in that they are
diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi
index 0ce05d55a07..3426e81cdb3 100644
--- a/doc/lispref/help.texi
+++ b/doc/lispref/help.texi
@@ -653,7 +653,7 @@ buffer, which is used to regenerate the help information when the user
653clicks on the @samp{Back} or @samp{Forward} buttons. Most commands 653clicks on the @samp{Back} or @samp{Forward} buttons. Most commands
654that use the @samp{*Help*} buffer should invoke this function before 654that use the @samp{*Help*} buffer should invoke this function before
655clearing the buffer. The @var{item} argument should have the form 655clearing the buffer. The @var{item} argument should have the form
656@code{(@var{funtion} . @var{args})}, where @var{funtion} is a function 656@code{(@var{function} . @var{args})}, where @var{function} is a function
657to call, with argument list @var{args}, to regenerate the help buffer. 657to call, with argument list @var{args}, to regenerate the help buffer.
658The @var{interactive-p} argument is non-@code{nil} if the calling 658The @var{interactive-p} argument is non-@code{nil} if the calling
659command was invoked interactively; in that case, the stack of items 659command was invoked interactively; in that case, the stack of items
diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi
index fe7c805c6f7..a601ed0c2c0 100644
--- a/doc/lispref/searching.texi
+++ b/doc/lispref/searching.texi
@@ -1213,7 +1213,7 @@ match data around it, to prevent it from being overwritten.
1213 1213
1214 Notice that all functions are allowed to overwrite the match data 1214 Notice that all functions are allowed to overwrite the match data
1215unless they're explicitly documented not to do so. A consequence is 1215unless they're explicitly documented not to do so. A consequence is
1216that functions that are run implictly in the background 1216that functions that are run implicitly in the background
1217(@pxref{Timers}, and @ref{Idle Timers}) should likely save and restore 1217(@pxref{Timers}, and @ref{Idle Timers}) should likely save and restore
1218the match data explicitly. 1218the match data explicitly.
1219 1219
diff --git a/doc/lispref/spellfile b/doc/lispref/spellfile
index e66dcc88f71..5c0a6d0f5ea 100644
--- a/doc/lispref/spellfile
+++ b/doc/lispref/spellfile
@@ -376,7 +376,6 @@ inserting'
376integerp 376integerp
377intermixed 377intermixed
378ints 378ints
379inturned
380irreversibly 379irreversibly
381jum 380jum
382keymapp 381keymapp
@@ -530,7 +529,6 @@ pointer'
530pointm 529pointm
531pos 530pos
532preallocate 531preallocate
533predicale
534preload 532preload
535prepend 533prepend
536prepended 534prepended
@@ -641,7 +639,7 @@ suspension'
641symbolp 639symbolp
642symlink 640symlink
643syms 641syms
644syntatic 642syntactic
645tabname 643tabname
646temacs 644temacs
647temporarily' 645temporarily'
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi
index 8c99a06909b..bb1b0524689 100644
--- a/doc/lispref/windows.texi
+++ b/doc/lispref/windows.texi
@@ -110,6 +110,7 @@ including for the case where @var{object} is a deleted window.
110@end defun 110@end defun
111 111
112@cindex selected window 112@cindex selected window
113@cindex window selected within a frame
113 In each frame, at any time, exactly one Emacs window is designated 114 In each frame, at any time, exactly one Emacs window is designated
114as @dfn{selected within the frame}. For the selected frame, that 115as @dfn{selected within the frame}. For the selected frame, that
115window is called the @dfn{selected window}---the one in which most 116window is called the @dfn{selected window}---the one in which most
@@ -148,10 +149,10 @@ the minibuffer window in the returned list. If @var{minibuffer} is
148active. If @var{minibuffer} is neither @code{nil} nor @code{t}, the 149active. If @var{minibuffer} is neither @code{nil} nor @code{t}, the
149minibuffer window is never included. 150minibuffer window is never included.
150 151
151The optional argument @var{window}, if non-@code{nil}, should be a 152The optional argument @var{window}, if non-@code{nil}, should be a live
152live window on the specified frame; then @var{window} will be the 153window on the specified frame; then @var{window} will be the first
153first element in the returned list. If @var{window} is omitted or 154element in the returned list. If @var{window} is omitted or @code{nil},
154@code{nil}, the window selected within the frame is first element. 155the window selected within the frame is the first element.
155@end defun 156@end defun
156 157
157@cindex window tree 158@cindex window tree
@@ -634,9 +635,9 @@ function @code{window-resizable} above.
634 635
635The choice of which window edges this function alters depends on the 636The choice of which window edges this function alters depends on the
636values of the option @code{window-combination-resize} and the 637values of the option @code{window-combination-resize} and the
637combination-limit status of the involved windows; in some cases, it may 638combination limits of the involved windows; in some cases, it may alter
638alter both edges. @xref{Splitting Windows}. To resize by moving only 639both edges. @xref{Splitting Windows}. To resize by moving only the
639the bottom or right edge of a window, use the function 640bottom or right edge of a window, use the function
640@code{adjust-window-trailing-edge}, below. 641@code{adjust-window-trailing-edge}, below.
641@end defun 642@end defun
642 643
@@ -774,22 +775,24 @@ properties from it, including margins and scroll bars. If
774@var{window} is an internal window, the new window inherits the 775@var{window} is an internal window, the new window inherits the
775properties of the window selected within @var{window}'s frame. 776properties of the window selected within @var{window}'s frame.
776 777
777If the variable @code{ignore-window-parameters} is non-@code{nil} 778The behavior of this function may be altered by the window parameters
778(@pxref{Window Parameters}), this function ignores window parameters. 779of @var{window}, so long as the variable
779Otherwise, it consults the @code{split-window} parameter of 780@code{ignore-window-parameters} is non-@code{nil}. If the value of
780@var{window}; if this is @code{t}, it splits the window disregarding 781the @code{split-window} window parameter is @code{t}, this function
781any other window parameters. If the @code{split-window} parameter 782ignores all other window parameters. Otherwise, if the value of the
782specifies a function, that function is called with the arguments 783@code{split-window} window parameter is a function, that function is
783@var{window}, @var{size}, and @var{side} to split @var{window}, in 784called with the arguments @var{window}, @var{size}, and @var{side}, in
784lieu of the usual action of @code{split-window}. 785lieu of the usual action of @code{split-window}. Otherwise, this
786function obeys the @code{window-atom} or @code{window-side} window
787parameter, if any. @xref{Window Parameters}.
785@end deffn 788@end deffn
786 789
787 As an example, we show a combination of @code{split-window} calls 790 As an example, here is a sequence of @code{split-window} calls that
788that yields the window configuration discussed in @ref{Windows and 791yields the window configuration discussed in @ref{Windows and Frames}.
789Frames}. This example demonstrates splitting a live window as well as 792This example demonstrates splitting a live window as well as splitting
790splitting an internal window. We begin with a frame containing a 793an internal window. We begin with a frame containing a single window
791single window (a live root window), which we denote by @var{W4}. 794(a live root window), which we denote by @var{W4}. Calling
792Calling @code{(split-window W3)} yields this window configuration: 795@code{(split-window W4)} yields this window configuration:
793 796
794@smallexample 797@smallexample
795@group 798@group
@@ -841,9 +844,6 @@ A new live window @var{W2} is created, to the left of the internal
841window @var{W3}. A new internal window @var{W1} is created, becoming 844window @var{W3}. A new internal window @var{W1} is created, becoming
842the new root window. 845the new root window.
843 846
844 The following two options can be used to modify the operation of
845@code{split-window}.
846
847@defopt window-combination-resize 847@defopt window-combination-resize
848If this variable is @code{nil}, @code{split-window} can only split a 848If this variable is @code{nil}, @code{split-window} can only split a
849window (denoted by @var{window}) if @var{window}'s screen area is 849window (denoted by @var{window}) if @var{window}'s screen area is
@@ -854,18 +854,17 @@ If this variable is non-@code{nil}, @code{split-window} tries to
854resize all windows that are part of the same combination as 854resize all windows that are part of the same combination as
855@var{window}, in order to accommodate the new window. In particular, 855@var{window}, in order to accommodate the new window. In particular,
856this may allow @code{split-window} to succeed even if @var{window} is 856this may allow @code{split-window} to succeed even if @var{window} is
857a fixed-size window or too small to ordinarily split. 857a fixed-size window or too small to ordinarily split. Furthermore,
858 858subsequently resizing or deleting @var{window} may resize all other
859Also if this variable is non-@code{nil}, subsequent resizing and 859windows in its combination.
860deleting @var{window} will usually affect @emph{all} windows in
861@var{window}'s combination.
862 860
863The setting of this variable has no effect if 861This variable has no effect if @code{window-combination-limit} is
864@code{window-combination-limit} (see below) is non-@code{nil}. 862non-@code{nil} (see below).
865@end defopt 863@end defopt
866 864
867To illustrate the use of @code{window-combination-resize} consider the 865 To illustrate the effect of @code{window-combination-resize},
868following window configuration: 866consider the following window configuration:
867
869@smallexample 868@smallexample
870@group 869@group
871 ______________________________________ 870 ______________________________________
@@ -886,9 +885,10 @@ following window configuration:
886@end group 885@end group
887@end smallexample 886@end smallexample
888 887
889Splitting window @code{W3} with @code{window-combination-resize} 888@noindent
890@code{nil} produces a configuration where the size of @code{W2} remains 889If @code{window-combination-resize} is @code{nil}, splitting window
891unchanged: 890@code{W3} leaves the size of @code{W2} unchanged:
891
892@smallexample 892@smallexample
893@group 893@group
894 ______________________________________ 894 ______________________________________
@@ -909,8 +909,11 @@ unchanged:
909@end group 909@end group
910@end smallexample 910@end smallexample
911 911
912Splitting @code{W3} with @code{window-combination-resize} non-@code{nil} 912@noindent
913instead steals the space for @code{W4} from both @code{W2} and @code{W3}: 913If @code{window-combination-resize} is non-@code{nil}, splitting
914@code{W3} instead leaves all three live windows with approximately the
915same height:
916
914@smallexample 917@smallexample
915@group 918@group
916 ______________________________________ 919 ______________________________________
@@ -932,53 +935,51 @@ instead steals the space for @code{W4} from both @code{W2} and @code{W3}:
932@end smallexample 935@end smallexample
933 936
934@defopt window-combination-limit 937@defopt window-combination-limit
935If this variable is @code{nil}, @code{split-window} creates a new parent 938If the value of this variable is @code{t}, the @code{split-window}
936window if and only if the old window has no parent window or shall be 939function always creates a new internal window. If the value is
937split orthogonally to the combination it is part of. If this variable 940@code{nil}, the new live window is allowed to share the existing
938is @code{t}, @code{split-window} always creates a new parent window. If 941parent window, if one exists, provided the split occurs in the same
939this variable is always @code{t}, a frame's window tree is a binary tree 942direction as the existing window combination (otherwise, a new
940so every window but the frame's root window has exactly one sibling. 943internal window is created anyway). The default is @code{nil}. Other
941Other values are reserved for future use. 944values are reserved for future use.
942 945
943The value of this variable is also assigned to the combination-limit 946Thus, if the value is always @code{t}, each window tree is a binary
944status of the new parent window. The combination-limit status of any 947tree: each window except the root window has exactly one sibling.
945window can be retrieved via the function @code{window-combination-limit} 948
946and altered by the function @code{set-window-combination-limit}, see 949Furthermore, @code{split-window} calls
947below. 950@code{set-window-combination-limit} on the newly-created internal
951window, recording the current value of this variable. This affects
952how the window tree is rearranged when the child windows are deleted
953(see below).
948@end defopt 954@end defopt
949 955
950@defun window-combination-limit &optional window 956@cindex window combination limit
951This function returns the combination-limit status of @var{window}. The 957@defun set-window-combination-limit window limit
952argument @var{window} can be any window and defaults to the selected 958This functions sets the @dfn{combination limit} of the window
953one. Note, however, that the combination-limit status is currently 959@var{window} to @var{limit}. This value can be retrieved via the
954meaningful for internal windows only. 960function @code{window-combination-limit}. See below for its effects;
955 961note that it is only meaningful for internal windows. The
956@cindex combination-limit status 962@code{split-window} function automatically calls this function, passing
957The @dfn{combination-limit status} of a window specifies whether that 963the value of the variable @code{window-combination-limit} as
958window may be removed and its child windows recombined with that 964@var{limit}.
959window's siblings when such a sibling's child window is deleted. The 965@end defun
960combination-limit status is initially assigned by @code{split-window} 966
961from the current value of the variable @code{window-combination-limit} 967@defun window-combination-limit window
962(see above) and can be reset by the function 968This function returns the combination limit for @var{window}.
963@code{set-window-combination-limit} (see below). 969
964 970The combination limit is meaningful only for an internal window. If
965If the return value is @code{nil}, child windows of @var{window} may be 971it is @code{nil}, then Emacs is allowed to automatically delete
966recombined with @var{window}'s siblings when a window gets deleted. A 972@var{window}, in response to a window deletion, in order to group the
967return value of @code{nil} means that child windows of @var{window} are 973child windows of @var{window} with its sibling windows to form a new
968never (re-)combined with @var{window}'s siblings in such a case. 974window combination. If the combination limit is @code{t}, the child
969@end defun 975windows of @var{window} are never automatically re-combined with its
970 976siblings.
971@defun set-window-combination-limit window &optional status 977@end defun
972This functions sets the combination-limit status (see above) of 978
973@var{window} to @var{status}. The argument @var{window} can be any 979 To illustrate the effect of @code{window-combination-limit},
974window and defaults to the selected one. Note that setting the 980consider the following configuration (throughout this example, we will
975combination-limit status is meaningful for internal windows only. The 981assume that @code{window-combination-resize} is @code{nil}):
976return value is @var{status}. 982
977@end defun
978
979To illustrate the use of @code{window-combination-limit} consider the
980following configuration (throughout the following examples we shall
981assume that @code{window-combination-resize} invariantly is @code{nil}).
982@smallexample 983@smallexample
983@group 984@group
984 ______________________________________ 985 ______________________________________
@@ -999,31 +1000,10 @@ assume that @code{window-combination-resize} invariantly is @code{nil}).
999@end group 1000@end group
1000@end smallexample 1001@end smallexample
1001 1002
1002Splitting @code{W2} into two windows above each other with 1003@noindent
1003@code{window-combination-limit} equal @code{nil} will get you a 1004If @code{window-combination-limit} is @code{nil}, splitting @code{W2}
1004configuration like: 1005into two windows, one above the other, yields
1005@smallexample
1006@group
1007 ______________________________________
1008 | ____________________________________ |
1009 || ||
1010 || ||
1011 ||_________________W2_________________||
1012 | ____________________________________ |
1013 || ||
1014 || ||
1015 ||_________________W4_________________||
1016 | ____________________________________ |
1017 || ||
1018 || ||
1019 ||_________________W3_________________||
1020 |__________________W1__________________|
1021
1022@end group
1023@end smallexample
1024 1006
1025If you now enlarge window @code{W4}, Emacs steals the necessary space
1026from window @code{W3} resulting in a configuration like:
1027@smallexample 1007@smallexample
1028@group 1008@group
1029 ______________________________________ 1009 ______________________________________
@@ -1034,43 +1014,24 @@ from window @code{W3} resulting in a configuration like:
1034 | ____________________________________ | 1014 | ____________________________________ |
1035 || || 1015 || ||
1036 || || 1016 || ||
1037 || ||
1038 ||_________________W4_________________|| 1017 ||_________________W4_________________||
1039 | ____________________________________ | 1018 | ____________________________________ |
1040 || || 1019 || ||
1020 || ||
1041 ||_________________W3_________________|| 1021 ||_________________W3_________________||
1042 |__________________W1__________________| 1022 |__________________W1__________________|
1043 1023
1044@end group 1024@end group
1045@end smallexample 1025@end smallexample
1046 1026
1047Deleting window @code{W4}, will return its space to @code{W2} as 1027@noindent
1048follows: 1028The newly-created window, @code{W4}, shares the same internal window
1049@smallexample 1029@code{W1}. If @code{W4} is resized, it is allowed to resize the other
1050@group 1030live window, @code{W3}.
1051 ______________________________________
1052 | ____________________________________ |
1053 || ||
1054 || ||
1055 || ||
1056 || ||
1057 || ||
1058 || ||
1059 || ||
1060 ||_________________W2_________________||
1061 | ____________________________________ |
1062 || ||
1063 ||_________________W3_________________||
1064 |__________________W1__________________|
1065 1031
1066@end group 1032 If @code{window-combination-limit} is @code{t}, splitting @code{W2}
1067@end smallexample 1033in the initial configuration would instead have produced this:
1068 1034
1069Hence, with respect to the initial configuration, window @code{W2} has
1070grown at the expense of window @code{W3}. If, however, in the initial
1071configuration you had split @code{W2} with
1072@code{window-combination-limit} bound to @code{t}, a new internal window
1073@code{W5} would have been created as depicted below.
1074@smallexample 1035@smallexample
1075@group 1036@group
1076 ______________________________________ 1037 ______________________________________
@@ -1091,143 +1052,110 @@ configuration you had split @code{W2} with
1091@end group 1052@end group
1092@end smallexample 1053@end smallexample
1093 1054
1094Enlarging @code{W4} would now have stolen the necessary space from 1055@noindent
1095@code{W2} instead of @code{W3} as 1056A new internal window @code{W5} has been created; its children are
1096@smallexample 1057@code{W2} and the new live window @code{W4}. Now, @code{W2} is the
1097@group 1058only sibling of @code{W4}, so resizing @code{W4} will resize
1098 ______________________________________ 1059@code{W2}, leaving @code{W3} unaffected.
1099 | ____________________________________ |
1100 || __________________________________ ||
1101 |||________________W2________________|||
1102 || __________________________________ ||
1103 ||| |||
1104 ||| |||
1105 |||________________W4________________|||
1106 ||_________________W5_________________||
1107 | ____________________________________ |
1108 || ||
1109 || ||
1110 ||_________________W3_________________||
1111 |__________________W1__________________|
1112
1113@end group
1114@end smallexample
1115 1060
1116and the subsequent deletion of @code{W4} would have restored the initial 1061 For interactive use, Emacs provides two commands which always split
1117configuration. 1062the selected window. These call @code{split-window} internally.
1118 1063
1119For interactive use, Emacs provides two commands which always split the 1064@deffn Command split-window-right &optional size
1120selected window. 1065This function splits the selected window into two side-by-side
1066windows, putting the selected window on the left. If @var{size} is
1067positive, the left window gets @var{size} columns; if @var{size} is
1068negative, the right window gets @minus{}@var{size} columns.
1069@end deffn
1121 1070
1122@deffn Command split-window-below &optional size 1071@deffn Command split-window-below &optional size
1123This function splits the selected window into two windows, one above the 1072This function splits the selected window into two windows, one above
1124other, leaving the upper of the two windows selected, with @var{size} 1073the other, leaving the upper window selected. If @var{size} is
1125lines. (If @var{size} is negative, then the lower of the two windows 1074positive, the upper window gets @var{size} lines; if @var{size} is
1126gets @minus{}@var{size} lines and the upper window gets the rest, but 1075negative, the lower window gets @minus{}@var{size} lines.
1127the upper window is still the one selected.) However, if
1128@code{split-window-keep-point} (see below) is @code{nil}, then either
1129window can be selected.
1130
1131 In other respects, this function is similar to @code{split-window}.
1132In particular, the upper window is the original one and the return value
1133is the new, lower window.
1134@end deffn 1076@end deffn
1135 1077
1136@defopt split-window-keep-point 1078@defopt split-window-keep-point
1137If this variable is non-@code{nil} (the default), then 1079If the value of this variable is non-@code{nil} (the default),
1138@code{split-window-below} behaves as described above. 1080@code{split-window-below} behaves as described above.
1139 1081
1140 If it is @code{nil}, then @code{split-window-below} adjusts point 1082If it is @code{nil}, @code{split-window-below} adjusts point in each
1141in each of the two windows to avoid scrolling. (This is useful on 1083of the two windows to minimize redisplay. (This is useful on slow
1142slow terminals.) It selects whichever window contains the screen line 1084terminals.) It selects whichever window contains the screen line that
1143that point was previously on. Other functions are not affected by 1085point was previously on. Note that this only affects
1144this variable. 1086@code{split-window-below}, not the lower-level @code{split-window}
1087function.
1145@end defopt 1088@end defopt
1146 1089
1147@deffn Command split-window-right &optional size
1148This function splits the selected window into two windows
1149side-by-side, leaving the selected window on the left with @var{size}
1150columns. If @var{size} is negative, the rightmost window gets
1151@minus{}@var{size} columns, but the leftmost window still remains
1152selected.
1153@end deffn
1154
1155
1156@node Deleting Windows 1090@node Deleting Windows
1157@section Deleting Windows 1091@section Deleting Windows
1158@cindex deleting windows 1092@cindex deleting windows
1159 1093
1160A window remains visible on its frame unless you @dfn{delete} it by 1094 @dfn{Deleting} a window removes it from the frame's window tree. If
1161calling certain functions that delete windows. A deleted window cannot 1095the window is a live window, it disappears from the screen. If the
1162appear on the screen, but continues to exist as a Lisp object until 1096window is an internal window, its child windows are deleted too.
1163there are no references to it. There is no way to cancel the deletion
1164of a window aside from restoring a saved window configuration
1165(@pxref{Window Configurations}). Restoring a window configuration also
1166deletes any windows that aren't part of that configuration. Erroneous
1167information may result from using a deleted window as if it were live.
1168 1097
1169@deffn Command delete-window &optional window 1098 Even after a window is deleted, it continues to exist as a Lisp
1170This function removes @var{window} from display and returns @code{nil}. 1099object, until there are no more references to it. Window deletion can
1171The argument @var{window} can denote any window and defaults to the 1100be reversed, by restoring a saved window configuration (@pxref{Window
1172selected one. An error is signaled if @var{window} is the only window 1101Configurations}).
1173on its frame. Hence @var{window} must have at least one sibling window
1174(@pxref{Windows and Frames}) in order to get deleted. If @var{window}
1175is the selected window on its frame, this function selects the most
1176recently selected live window on that frame instead.
1177
1178If the variable @code{ignore-window-parameters} (@pxref{Window
1179Parameters}) is non-@code{nil}, this function ignores all parameters of
1180@var{window}. Otherwise, if the @code{delete-window} parameter of
1181@var{window} is @code{t}, it deletes the window disregarding other
1182window parameters. If the @code{delete-window} parameter specifies a
1183function, that function is called with @var{window} as its sole
1184argument.
1185 1102
1186If @code{window-combination-resize} (@pxref{Splitting Windows}) is 1103@deffn Command delete-window &optional window
1187@code{nil}, the space @var{window} took up is given to its left sibling 1104This function removes @var{window} from display and returns
1188if such a window exists and to its right sibling otherwise. If 1105@code{nil}. If @var{window} is omitted or @code{nil}, it defaults to
1189@code{window-combination-resize} is non-@code{nil}, the space of 1106the selected window. If deleting the window would leave no more
1190@var{window} is proportionally distributed among the remaining windows 1107windows in the window tree (e.g. if it is the only live window in the
1191in the same combination. 1108frame), an error is signaled.
1109
1110By default, the space taken up by @var{window} is given to one of its
1111adjacent sibling windows, if any. However, if the variable
1112@code{window-combination-resize} is non-@code{nil}, the space is
1113proportionally distributed among any remaining windows in the window
1114combination. @xref{Splitting Windows}.
1115
1116The behavior of this function may be altered by the window parameters
1117of @var{window}, so long as the variable
1118@code{ignore-window-parameters} is non-@code{nil}. If the value of
1119the @code{delete-window} window parameter is @code{t}, this function
1120ignores all other window parameters. Otherwise, if the value of the
1121@code{delete-window} window parameter is a function, that function is
1122called with the argument @var{window}, in lieu of the usual action of
1123@code{delete-window}. Otherwise, this function obeys the
1124@code{window-atom} or @code{window-side} window parameter, if any.
1125@xref{Window Parameters}.
1192@end deffn 1126@end deffn
1193 1127
1194@deffn Command delete-other-windows &optional window 1128@deffn Command delete-other-windows &optional window
1195This function makes @var{window} fill its frame and returns @code{nil}. 1129This function makes @var{window} fill its frame, by deleting other
1196The argument @var{window} can denote an arbitrary window and defaults to 1130windows as necessary. If @var{window} is omitted or @code{nil}, it
1197the selected one. Upon exit, @var{window} will be the selected window 1131defaults to the selected window. The return value is @code{nil}.
1198on its frame. 1132
1199 1133The behavior of this function may be altered by the window parameters
1200If the variable @code{ignore-window-parameters} (@pxref{Window 1134of @var{window}, so long as the variable
1201Parameters}) is non-@code{nil}, this function ignores all parameters of 1135@code{ignore-window-parameters} is non-@code{nil}. If the value of
1202@var{window}. Otherwise, if the @code{delete-other-windows} parameter 1136the @code{delete-other-windows} window parameter is @code{t}, this
1203of @var{window} equals @code{t}, it deletes all other windows 1137function ignores all other window parameters. Otherwise, if the value
1204disregarding any remaining window parameters. If the 1138of the @code{delete-other-windows} window parameter is a function,
1205@code{delete-other-windows} parameter of @var{window} specifies a 1139that function is called with the argument @var{window}, in lieu of the
1206function, it calls that function with @var{window} as its sole argument. 1140usual action of @code{delete-other-windows}. Otherwise, this function
1141obeys the @code{window-atom} or @code{window-side} window parameter,
1142if any. @xref{Window Parameters}.
1207@end deffn 1143@end deffn
1208 1144
1209@deffn Command delete-windows-on &optional buffer-or-name frame 1145@deffn Command delete-windows-on &optional buffer-or-name frame
1210This function deletes all windows showing @var{buffer-or-name}. If 1146This function deletes all windows showing @var{buffer-or-name}, by
1211there are no windows showing @var{buffer-or-name}, it does nothing. 1147calling @code{delete-window} on those windows. @var{buffer-or-name}
1212The optional argument @var{buffer-or-name} may be a buffer or the name 1148should be a buffer, or the name of a buffer; if omitted or @code{nil},
1213of an existing buffer and defaults to the current buffer. Invoking 1149it defaults to the current buffer. If there are no windows showing
1214this command on a minibuffer signals an error. 1150the specified buffer, this function does nothing. If the specified
1215 1151buffer is a minibuffer, an error is signaled.
1216The function @code{delete-windows-on} operates by calling 1152
1217@code{delete-window} for each window showing @var{buffer-or-name}. If a 1153If there is a dedicated window showing the buffer, and that window is
1218frame has several windows showing different buffers, then those showing 1154the only one on its frame, this function also deletes that frame if it
1219@var{buffer-or-name} are removed, and the other windows expand to fill 1155is not the only frame on the terminal.
1220the space. 1156
1221 1157The optional argument @var{frame} specifies which frames to operate
1222If all windows in some frame are showing @var{buffer-or-name} (including 1158on:
1223the case where there is only one window), then that frame is deleted
1224provided there are other frames left.
1225
1226The optional argument @var{frame} specifies which frames to operate on.
1227This function does not use it in quite the same way as the other
1228functions which scan all live windows (@pxref{Cyclic Window Ordering});
1229specifically, the values @code{t} and @code{nil} have the opposite of
1230their meanings in the other functions. Here are the full details:
1231 1159
1232@itemize @bullet 1160@itemize @bullet
1233@item @code{nil} 1161@item @code{nil}
@@ -1241,34 +1169,37 @@ means operate on all visible or iconified frames.
1241@item A frame 1169@item A frame
1242means operate on that frame. 1170means operate on that frame.
1243@end itemize 1171@end itemize
1244@end deffn
1245 1172
1173Note that this argument does not have the same meaning as in other
1174functions which scan all live windows (@pxref{Cyclic Window
1175Ordering}). Specifically, the values @code{t} and @code{nil} have the
1176opposite of their meanings in those other functions.
1177@end deffn
1246 1178
1247@node Selecting Windows 1179@node Selecting Windows
1248@section Selecting Windows 1180@section Selecting Windows
1249@cindex selecting a window 1181@cindex selecting a window
1250 1182
1251@defun select-window window &optional norecord 1183@defun select-window window &optional norecord
1252This function makes @var{window} the selected window, see @ref{Basic 1184This function makes @var{window} the selected window, as well as the
1253Windows}. Unless @var{window} already is the selected window, this also 1185window selected within its frame (@pxref{Basic Windows}).
1254makes @var{window}'s buffer (@pxref{Buffers and Windows}) the current 1186@var{window} must be a live window. Unless @var{window} already is the
1255buffer. Moreover, the cursor for selected windows will be displayed in 1187selected window, its buffer becomes the current buffer (@pxref{Buffers
1256@var{window} after the next redisplay. This function returns 1188and Windows}). The return value is @var{window}.
1257@var{window}.
1258 1189
1259Normally, @var{window}'s selected buffer is moved to the front of the 1190By default, this function also moves @var{window}'s selected buffer to
1260buffer list (@pxref{The Buffer List}) and @var{window} becomes the most 1191the front of the buffer list (@pxref{The Buffer List}), and makes
1261recently selected window. But if the optional argument @var{norecord} 1192@var{window} the most recently selected window. However, if the
1262is non-@code{nil}, the buffer list remains unchanged and @var{window} 1193optional argument @var{norecord} is non-@code{nil}, these additional
1263does not become the most recently selected one. 1194actions are omitted.
1264@end defun 1195@end defun
1265 1196
1266@cindex most recently selected windows 1197@cindex most recently selected windows
1267The sequence of calls to @code{select-window} with a non-@code{nil} 1198 The sequence of calls to @code{select-window} with a non-@code{nil}
1268@var{norecord} argument determines an ordering of windows by their 1199@var{norecord} argument determines an ordering of windows by their
1269selection time. The function @code{get-lru-window} can be used to 1200selection time. The function @code{get-lru-window} can be used to
1270retrieve the least recently selected live window in this ordering, see 1201retrieve the least recently selected live window (@pxref{Cyclic Window
1271@ref{Cyclic Window Ordering}. 1202Ordering}).
1272 1203
1273@defmac save-selected-window forms@dots{} 1204@defmac save-selected-window forms@dots{}
1274This macro records the selected frame, as well as the selected window 1205This macro records the selected frame, as well as the selected window
@@ -1300,33 +1231,26 @@ The order of recently selected windows and the buffer list are not
1300changed by this macro. 1231changed by this macro.
1301@end defmac 1232@end defmac
1302 1233
1303@cindex frame selected window 1234@defun frame-selected-window &optional frame
1304@cindex window selected within frame 1235This function returns the window on @var{frame} that is selected
1305Earlier (@pxref{Basic Windows}) we mentioned that at any time, exactly 1236within that frame. @var{frame} should be a live frame; if omitted or
1306one window on any frame is selected within the frame. The significance 1237@code{nil}, it defaults to the selected frame.
1307of this designation is that selecting the frame also selects this
1308window. Conversely, selecting a window for Emacs with
1309@code{select-window} also makes that window selected within its frame.
1310
1311@defun frame-selected-window &optional frame
1312This function returns the window on @var{frame} that is selected within
1313@var{frame}. The optional argument @var{frame} must denote a live frame
1314and defaults to the selected one.
1315@end defun 1238@end defun
1316 1239
1317@defun set-frame-selected-window frame window &optional norecord 1240@defun set-frame-selected-window frame window &optional norecord
1318This function sets the selected window of frame @var{frame} to 1241This function makes @code{window} the window selected within the frame
1319@var{window}. The argument @var{frame} must denote a live frame and 1242@var{frame}. @var{frame} should be a live frame; if omitted or
1320defaults to the selected one. If @var{frame} is the selected frame, 1243@code{nil}, it defaults to the selected frame. @var{window} should be
1321this also makes @var{window} the selected window. The argument 1244a live window; if omitted or @code{nil}, it defaults to the selected
1322@var{window} must denote a live window. This function returns 1245window.
1323@var{window}.
1324 1246
1325Optional argument @var{norecord} non-@code{nil} means to neither change 1247If @var{frame} is the selected frame, this makes @var{window} the
1326the list of most recently selected windows (@pxref{Selecting Windows}) 1248selected window.
1327nor the buffer list (@pxref{The Buffer List}).
1328@end defun
1329 1249
1250If the optional argument @var{norecord} is non-@code{nil}, this
1251function does not alter the list of most recently selected windows,
1252nor the buffer list.
1253@end defun
1330 1254
1331@node Cyclic Window Ordering 1255@node Cyclic Window Ordering
1332@section Cyclic Ordering of Windows 1256@section Cyclic Ordering of Windows
@@ -1334,28 +1258,22 @@ nor the buffer list (@pxref{The Buffer List}).
1334@cindex ordering of windows, cyclic 1258@cindex ordering of windows, cyclic
1335@cindex window ordering, cyclic 1259@cindex window ordering, cyclic
1336 1260
1337When you use the command @kbd{C-x o} (@code{other-window}) to select 1261 When you use the command @kbd{C-x o} (@code{other-window}) to select
1338some other window, it moves through live windows in a specific order. 1262some other window, it moves through live windows in a specific order.
1339For any given configuration of windows, this order never varies. It is 1263For any given configuration of windows, this order never varies. It
1340called the @dfn{cyclic ordering of windows}. 1264is called the @dfn{cyclic ordering of windows}.
1341
1342 For a particular frame, this ordering is determined by the window
1343tree of that frame, see @ref{Windows and Frames}. More precisely, the
1344ordering is obtained by a depth-first traversal of the frame's window
1345tree supplemented, if requested, by the frame's minibuffer window.
1346 1265
1347 If there's just one live frame, the cyclic ordering is the ordering 1266 The ordering is determined by a depth-first traversal of the frame's
1348for that frame. Otherwise, the cyclic ordering is obtained by appending 1267window tree, retrieving the live windows which are the leaf nodes of
1349the orderings for individual frames in order of the list of all live 1268the tree (@pxref{Windows and Frames}). If the minibuffer is active,
1350frames, @ref{Finding All Frames}. In any case, the ordering is made 1269the minibuffer window is included too. The ordering is cyclic, so the
1351``cyclic'' by having the last window precede the first window in the 1270last window in the sequence is followed by the first one.
1352ordering.
1353 1271
1354@defun next-window &optional window minibuf all-frames 1272@defun next-window &optional window minibuf all-frames
1355@cindex minibuffer window, and @code{next-window} 1273@cindex minibuffer window, and @code{next-window}
1356This function returns the window following @var{window} in the cyclic 1274This function returns a live window, the one following @var{window} in
1357ordering of windows. The argument @var{window} must specify a live 1275the cyclic ordering of windows. @var{window} should be a live window;
1358window and defaults to the selected one. 1276if omitted or @code{nil}, it defaults to the selected window.
1359 1277
1360The optional argument @var{minibuf} specifies whether minibuffer windows 1278The optional argument @var{minibuf} specifies whether minibuffer windows
1361shall be included in the cyclic ordering. Normally, when @var{minibuf} 1279shall be included in the cyclic ordering. Normally, when @var{minibuf}
@@ -1369,139 +1287,100 @@ minibuffer windows. If @var{minibuf} is neither @code{t} nor
1369@code{nil}, minibuffer windows are not included even if they are active. 1287@code{nil}, minibuffer windows are not included even if they are active.
1370 1288
1371The optional argument @var{all-frames} specifies which frames to 1289The optional argument @var{all-frames} specifies which frames to
1372consider. Here are the possible values and their meanings: 1290consider:
1373 1291
1374@itemize @bullet 1292@itemize @bullet
1375@item @code{nil} 1293@item @code{nil}
1376means consider all windows on @var{window}'s frame, plus the minibuffer 1294means to consider windows on @var{window}'s frame. If the minibuffer
1377window used by that frame even if it lies in some other frame. If the 1295window is considered (as specified by the @var{minibuf} argument),
1378minibuffer counts (as determined by @var{minibuf}), then all windows on 1296then frames that share the minibuffer window are considered too.
1379all frames that share that minibuffer count too.
1380 1297
1381@item @code{t} 1298@item @code{t}
1382means consider all windows on all existing frames. 1299means to consider windows on all existing frames.
1383 1300
1384@item @code{visible} 1301@item @code{visible}
1385means consider all windows on all visible frames. (To get useful 1302means to consider windows on all visible frames.
1386results, ensure that @var{window} is on a visible frame.)
1387 1303
1388@item 0 1304@item 0
1389means consider all windows on all visible or iconified frames. 1305means to consider windows on all visible or iconified frames.
1390 1306
1391@item A frame 1307@item A frame
1392means consider all windows on that frame. 1308means to consider windows on that specific frame.
1393 1309
1394@item Anything else 1310@item Anything else
1395means consider the windows on @var{window}'s frame, and no others. 1311means to consider windows on @var{window}'s frame, and no others.
1396@end itemize 1312@end itemize
1397 1313
1398This example assumes there are two windows, both displaying the 1314If more than one frame is considered, the cyclic ordering is obtained
1399buffer @samp{windows.texi}: 1315by appending the orderings for those frames, in the same order as the
1400 1316list of all live frames (@pxref{Finding All Frames}).
1401@example
1402@group
1403(selected-window)
1404 @result{} #<window 56 on windows.texi>
1405@end group
1406@group
1407(next-window (selected-window))
1408 @result{} #<window 52 on windows.texi>
1409@end group
1410@group
1411(next-window (next-window (selected-window)))
1412 @result{} #<window 56 on windows.texi>
1413@end group
1414@end example
1415@end defun 1317@end defun
1416 1318
1417@defun previous-window &optional window minibuf all-frames 1319@defun previous-window &optional window minibuf all-frames
1418This function returns the window preceding @var{window} in the cyclic 1320This function returns a live window, the one preceding @var{window} in
1419ordering of windows. The other arguments specify which windows to 1321the cyclic ordering of windows. The other arguments are handled like
1420consider as in @code{next-window}. 1322in @code{next-window}.
1421@end defun 1323@end defun
1422 1324
1423@deffn Command other-window count &optional all-frames 1325@deffn Command other-window count &optional all-frames
1424This function selects another window in the cyclic ordering of windows. 1326This function selects a live window, one @var{count} places from the
1425@var{count} specifies the number of windows to skip in the ordering, 1327selected window in the cyclic ordering of windows. If @var{count} is
1426starting with the selected window, before making the selection. If 1328a positive number, it skips @var{count} windows forwards; if
1427@var{count} is a positive number, it skips @var{count} windows forwards. 1329@var{count} is negative, it skips @minus{}@var{count} windows
1428@var{count} negative means skip @minus{}@var{count} windows backwards. 1330backwards; if @var{count} is zero, that simply re-selects the selected
1429If @var{count} is zero, it does not skip any window, thus re-selecting 1331window. When called interactively, @var{count} is the numeric prefix
1430the selected window. In an interactive call, @var{count} is the numeric 1332argument.
1431prefix argument.
1432 1333
1433The optional argument @var{all-frames} has the same meaning as in 1334The optional argument @var{all-frames} has the same meaning as in
1434@code{next-window}, but the @var{minibuf} argument of @code{next-window} 1335@code{next-window}, like a @code{nil} @var{minibuf} argument to
1435is always effectively @code{nil}. This function returns @code{nil}. 1336@code{next-window}.
1436 1337
1437This function does not select a window that has a non-@code{nil} 1338This function does not select a window that has a non-@code{nil}
1438@code{no-other-window} window parameter (@pxref{Window Parameters}). 1339@code{no-other-window} window parameter (@pxref{Window Parameters}).
1439@end deffn 1340@end deffn
1440 1341
1441The following function returns a copy of the list of windows in the 1342@defun walk-windows fun &optional minibuf all-frames
1442cyclic ordering. 1343This function calls the function @var{fun} once for each live window,
1344with the window as the argument.
1443 1345
1444@defun window-list-1 &optional window &optional minibuf &optional all_frames 1346It follows the cyclic ordering of windows. The optional arguments
1445This function returns a list of live windows. The optional arguments 1347@var{minibuf} and @var{all-frames} specify the set of windows
1446@var{minibuf} and @var{all-frames} specify the set of windows to include 1348included; these have the same arguments as in @code{next-window}. If
1447in the list. See the description of @code{next-window} for details. 1349@var{all-frames} specifies a frame, the first window walked is the
1350first window on that frame (the one returned by
1351@code{frame-first-window}), not necessarily the selected window.
1448 1352
1449The optional argument @var{window} specifies the first window to list 1353If @var{fun} changes the window configuration by splitting or deleting
1450and defaults to the selected window. If @var{window} is not on the list 1354windows, that does not alter the set of windows walked, which is
1451of windows returned, some other window will be listed first but no error 1355determined prior to calling @var{fun} for the first time.
1452is signaled.
1453@end defun 1356@end defun
1454 1357
1455The functions described below use @code{window-list-1} for generating a
1456copy of the list of all relevant windows. Hence, any change of the
1457window configuration that occurs while one of these functions is
1458executed is @emph{not} reflected in the list of windows investigated.
1459
1460@defun walk-windows proc &optional minibuf all-frames
1461This function cycles through live windows. It calls the function
1462@var{proc} once for each window, with the window as its sole argument.
1463
1464The optional arguments @var{minibuf} and @var{all-frames} specify the
1465set of windows to include in the walk, see @code{next-window} above. If
1466@var{all-frames} specifies a frame, the first window walked is the first
1467window on that frame as returned by @code{frame-first-window} and not
1468necessarily the selected window.
1469
1470If @var{proc} changes the window configuration by splitting or deleting
1471windows, that change is not reflected in the set of windows walked.
1472That set is determined entirely by the set of live windows at the time
1473this function was invoked.
1474@end defun
1475
1476The following function allows to determine whether a specific window is
1477the only live window.
1478
1479@defun one-window-p &optional no-mini all-frames 1358@defun one-window-p &optional no-mini all-frames
1480This function returns non-@code{nil} if the selected window is the only 1359This function returns @code{t} if the selected window is the only live
1481window. 1360window, and @code{nil} otherwise.
1482 1361
1483The optional argument @var{no-mini}, if non-@code{nil}, means don't 1362If the minibuffer window is active, it is normally considered (so that
1484count the minibuffer even if it is active; otherwise, the minibuffer 1363this function returns @code{nil}). However, if the optional argument
1485window is counted when it is active. The optional argument 1364@var{no-mini} is non-@code{nil}, the minibuffer window is ignored even
1486@var{all-frames} has the same meaning as for @code{next-window}, see 1365if active. The optional argument @var{all-frames} has the same
1487above. 1366meaning as for @code{next-window}.
1488@end defun 1367@end defun
1489 1368
1490@cindex finding windows 1369@cindex finding windows
1491 The following functions choose (but do not select) one of the windows 1370 The following functions return a window which satisfies some
1492on the screen, offering various criteria for the choice. 1371criterion, without selecting it:
1493 1372
1494@cindex least recently used window 1373@cindex least recently used window
1495@defun get-lru-window &optional all-frames dedicated 1374@defun get-lru-window &optional all-frames dedicated
1496This function returns the window least recently ``used'' (that is, 1375This function returns a live window which is heuristically the ``least
1497selected). If any full-width windows are present, it only considers 1376recently used'' window. The optional argument @var{all-frames} has
1498these. The optional argument @var{all-frames} has the same meaning as 1377the same meaning as in @code{next-window}.
1499in @code{next-window}.
1500 1378
1501The selected window is returned if it is the only candidate. A 1379If any full-width windows are present, only those windows are
1502minibuffer window is never a candidate. A dedicated window 1380considered. The selected window is never returned, unless it is the
1503(@pxref{Dedicated Windows}) is never a candidate unless the optional 1381only candidate. A minibuffer window is never a candidate. A
1504argument @var{dedicated} is non-@code{nil}. 1382dedicated window (@pxref{Dedicated Windows}) is never a candidate
1383unless the optional argument @var{dedicated} is non-@code{nil}.
1505@end defun 1384@end defun
1506 1385
1507@cindex largest window 1386@cindex largest window
@@ -1515,22 +1394,23 @@ If there are two candidate windows of the same size, this function
1515prefers the one that comes first in the cyclic ordering of windows, 1394prefers the one that comes first in the cyclic ordering of windows,
1516starting from the selected window. 1395starting from the selected window.
1517 1396
1518The optional argument @var{all-frames} specifies which set of windows to 1397The optional argument @var{all-frames} specifies the windows to
1519consider as with @code{next-window}, see above. 1398search, and has the same meaning as in @code{next-window}.
1520@end defun 1399@end defun
1521 1400
1522@cindex window that satisfies a predicate 1401@cindex window that satisfies a predicate
1523@cindex conditional selection of windows 1402@cindex conditional selection of windows
1524@defun get-window-with-predicate predicate &optional minibuf all-frames default 1403@defun get-window-with-predicate predicate &optional minibuf all-frames default
1525This function returns a window satisfying @var{predicate}. It cycles 1404This function calls the function @var{predicate} for each of the
1526through all visible windows calling @var{predicate} on each one of them 1405windows in the cyclic order of windows in turn, passing it the window
1527with that window as its argument. The function returns the first window 1406as an argument. If the predicate returns non-@code{nil} for any
1528for which @var{predicate} returns a non-@code{nil} value; if that never 1407window, this function stops and returns that window. If no such
1529happens, it returns @var{default} (which defaults to @code{nil}). 1408window is found, the return value is @var{default} (which defaults to
1409@code{nil}).
1530 1410
1531The optional arguments @var{minibuf} and @var{all-frames} specify the 1411The optional arguments @var{minibuf} and @var{all-frames} specify the
1532set of windows to investigate. See the description of 1412windows to search, and have the same meanings as in
1533@code{next-window} for details. 1413@code{next-window}.
1534@end defun 1414@end defun
1535 1415
1536@node Buffers and Windows 1416@node Buffers and Windows
@@ -1539,47 +1419,41 @@ set of windows to investigate. See the description of
1539@cindex windows, controlling precisely 1419@cindex windows, controlling precisely
1540@cindex buffers, controlled in windows 1420@cindex buffers, controlled in windows
1541 1421
1542To find out which buffer is displayed in a given window the following 1422 This section describes low-level functions for examining and setting
1543function is used. 1423the contents of windows. @xref{Switching Buffers}, for higher-level
1424functions for displaying a specific buffer in a window.
1544 1425
1545@defun window-buffer &optional window 1426@defun window-buffer &optional window
1546This function returns the buffer that @var{window} is displaying. The 1427This function returns the buffer that @var{window} is displaying. If
1547argument @var{window} can be any window and defaults to the selected 1428@var{window} is omitted or @code{nil} it defaults to the selected
1548one. If @var{window} is an internal window, this function returns 1429window. If @var{window} is an internal window, this function returns
1549@code{nil}. 1430@code{nil}.
1550@end defun 1431@end defun
1551 1432
1552The basic, low-level function to associate a window with a buffer is
1553@code{set-window-buffer}. Higher-level functions like
1554@code{switch-to-buffer} and @code{display-buffer} try to obey a number
1555of user customizations regulating which windows are supposed to
1556display which buffers. @xref{Switching Buffers}. When writing an
1557application, you should avoid using @code{set-window-buffer} unless
1558you are sure you need it.
1559
1560@defun set-window-buffer window buffer-or-name &optional keep-margins 1433@defun set-window-buffer window buffer-or-name &optional keep-margins
1561This function makes @var{window} display @var{buffer-or-name} and 1434This function makes @var{window} display @var{buffer-or-name}.
1562returns @code{nil}. The argument @var{window} has to denote a live 1435@var{window} should be a live window; if @code{nil}, it defaults to
1563window and defaults to the selected one. The argument 1436the selected window. @var{buffer-or-name} should be a buffer, or the
1564@var{buffer-or-name} must specify a buffer or the name of an existing 1437name of an existing buffer. This function does not change which
1565buffer. An error is signaled when @var{window} is @dfn{strongly} 1438window is selected, nor does it directly change which buffer is
1566dedicated to its buffer (@pxref{Dedicated Windows}) and does not already 1439current (@pxref{Current Buffer}). Its return value is @code{nil}.
1567display @var{buffer-or-name}.
1568
1569Normally, displaying @var{buffer-or-name} in @var{window} resets the
1570window's position, display margins, fringe widths, and scroll bar
1571settings based on the local variables of the specified buffer. However,
1572if the optional argument @var{keep-margins} is non-@code{nil}, display
1573margins and fringe widths of @var{window} remain unchanged.
1574@xref{Fringes}.
1575
1576This function is the fundamental primitive for changing which buffer is
1577displayed in a window, and all ways of doing that call this function.
1578Neither the selected window nor the current buffer are changed by this
1579function.
1580 1440
1581This function runs @code{window-scroll-functions} before running 1441If @var{window} is @dfn{strongly dedicated} to a buffer and
1582@code{window-configuration-change-hook}, see @ref{Window Hooks}. 1442@var{buffer-or-name} does not specify that buffer, this function
1443signals an error. @xref{Dedicated Windows}.
1444
1445By default, this function resets @var{window}'s position, display
1446margins, fringe widths, and scroll bar settings, based on the local
1447variables in the specified buffer. However, if the optional argument
1448@var{keep-margins} is non-@code{nil}, it leaves the display margins
1449and fringe widths unchanged.
1450
1451When writing an application, you should normally use the higher-level
1452functions described in @ref{Switching Buffers}, instead of calling
1453@code{set-window-buffer} directly.
1454
1455This function runs @code{window-scroll-functions}, followed by
1456@code{window-configuration-change-hook}. @xref{Window Hooks}.
1583@end defun 1457@end defun
1584 1458
1585@defvar buffer-display-count 1459@defvar buffer-display-count
@@ -1589,28 +1463,26 @@ displayed in a window. It is incremented each time
1589@end defvar 1463@end defvar
1590 1464
1591@defvar buffer-display-time 1465@defvar buffer-display-time
1592This variable records the time at which a buffer was last made visible 1466This buffer-local variable records the time at which a buffer was last
1593in a window. It is always local in each buffer; each time 1467displayed in a window. The value is @code{nil} if the buffer has
1594@code{set-window-buffer} is called, it sets this variable to 1468never been displayed. It is updated each time
1595@code{(current-time)} in the specified buffer (@pxref{Time of Day}). 1469@code{set-window-buffer} is called for the buffer, with the value
1596When a buffer is first created, @code{buffer-display-time} starts out 1470returned by @code{current-time} (@pxref{Time of Day}).
1597with the value @code{nil}.
1598@end defvar 1471@end defvar
1599 1472
1600@defun get-buffer-window &optional buffer-or-name all-frames 1473@defun get-buffer-window &optional buffer-or-name all-frames
1601This function returns a window displaying @var{buffer-or-name}, or 1474This function returns the first window displaying @var{buffer-or-name}
1602@code{nil} if there is none. If there are several such windows, then 1475in the cyclic ordering of windows, starting from the selected window
1603the function returns the first one in the cyclic ordering of windows, 1476(@pxref{Cyclic Window Ordering}). If no such window exists, the
1604starting from the selected window, @xref{Cyclic Window Ordering}. 1477return value is @code{nil}.
1605 1478
1606The argument @var{buffer-or-name} may be a buffer or a buffer name and 1479@var{buffer-or-name} should be a buffer or the name of a buffer; if
1607defaults to the current buffer. The optional argument @var{all-frames} 1480omitted or @code{nil}, it defaults to the current buffer. The
1608specifies which windows to consider: 1481optional argument @var{all-frames} specifies which windows to
1482consider:
1609 1483
1610@itemize @bullet 1484@itemize @bullet
1611@item 1485@item
1612@code{nil} means consider windows on the selected frame.
1613@item
1614@code{t} means consider windows on all existing frames. 1486@code{t} means consider windows on all existing frames.
1615@item 1487@item
1616@code{visible} means consider windows on all visible frames. 1488@code{visible} means consider windows on all visible frames.
@@ -1618,44 +1490,45 @@ specifies which windows to consider:
16180 means consider windows on all visible or iconified frames. 14900 means consider windows on all visible or iconified frames.
1619@item 1491@item
1620A frame means consider windows on that frame only. 1492A frame means consider windows on that frame only.
1493@item
1494Any other value means consider windows on the selected frame.
1621@end itemize 1495@end itemize
1622 1496
1623Observe that the behavior of @code{get-buffer-window} may differ from 1497Note that these meanings differ slightly from those of the
1624that of @code{next-window} (@pxref{Cyclic Window Ordering}) when 1498@var{all-frames} argument to @code{next-window} (@pxref{Cyclic Window
1625@var{all-frames} equals @code{nil} or any value not listed here. 1499Ordering}). This function may be changed in a future version of Emacs
1626Perhaps we will change @code{get-buffer-window} in the future to make it 1500to eliminate this discrepancy.
1627compatible with the other functions.
1628@end defun 1501@end defun
1629 1502
1630@defun get-buffer-window-list &optional buffer-or-name minibuf all-frames 1503@defun get-buffer-window-list &optional buffer-or-name minibuf all-frames
1631This function returns a list of all windows currently displaying 1504This function returns a list of all windows currently displaying
1632@var{buffer-or-name}. The argument @var{buffer-or-name} may be a buffer 1505@var{buffer-or-name}. @var{buffer-or-name} should be a buffer or the
1633or the name of an existing buffer and defaults to the current buffer. 1506name of an existing buffer. If omitted or @code{nil}, it defaults to
1507the current buffer.
1634 1508
1635The two remaining arguments work like the same-named arguments of 1509The arguments @var{minibuf} and @var{all-frames} have the same
1636@code{next-window} (@pxref{Cyclic Window Ordering}); they are @emph{not} 1510meanings as in the function @code{next-window} (@pxref{Cyclic Window
1637like the optional arguments of @code{get-buffer-window}. 1511Ordering}). Note that the @var{all-frames} argument does @emph{not}
1512behave exactly like in @code{get-buffer-window}.
1638@end defun 1513@end defun
1639 1514
1640@deffn Command replace-buffer-in-windows &optional buffer-or-name 1515@deffn Command replace-buffer-in-windows &optional buffer-or-name
1641This command replaces @var{buffer-or-name} with some other buffer, in 1516This command replaces @var{buffer-or-name} with some other buffer, in
1642all windows displaying it. For each such window, it choose another 1517all windows displaying it. @var{buffer-or-name} should be a buffer,
1643buffer using @code{switch-to-prev-buffer} (@pxref{Window History}). 1518or the name of an existing buffer; if omitted or @code{nil}, it
1644 1519defaults to the current buffer.
1645The argument @var{buffer-or-name} may be a buffer, or the name of an 1520
1646existing buffer; it defaults to the current buffer. 1521The replacement buffer in each window is chosen via
1647 1522@code{switch-to-prev-buffer} (@pxref{Window History}). Any dedicated
1648If a window displaying @var{buffer-or-name} is dedicated 1523window displaying @var{buffer-or-name} is deleted (@pxref{Dedicated
1649(@pxref{Dedicated Windows}) and is not the only window on its frame, 1524Windows}), unless it is the only window on its frame---if it is the
1650that window is deleted. If that window is the only window on its frame 1525only window, and that frame is not the only frame on its terminal, the
1651and there are other frames on the frame's terminal, that frame is dealt 1526frame is ``dismissed'' by calling the function specified by
1652with by the function specified by @code{frame-auto-hide-function} 1527@code{frame-auto-hide-function} (@pxref{Quitting Windows}). If the
1653(@pxref{Quitting Windows}). Otherwise, the buffer provided by the 1528dedicated window is the only window on the only frame on its terminal,
1654function @code{switch-to-prev-buffer} (@pxref{Window History}) is 1529the buffer is replaced anyway.
1655displayed in the window instead.
1656@end deffn 1530@end deffn
1657 1531
1658
1659@node Switching Buffers 1532@node Switching Buffers
1660@section Switching to a Buffer in a Window 1533@section Switching to a Buffer in a Window
1661@cindex switching to a buffer 1534@cindex switching to a buffer
@@ -1731,9 +1604,12 @@ The @var{buffer-or-name} and @var{norecord} arguments have the same
1731meanings as in @code{switch-to-buffer}. 1604meanings as in @code{switch-to-buffer}.
1732@end deffn 1605@end deffn
1733 1606
1734The above commands use @code{pop-to-buffer}, which is the function 1607The above commands use the function @code{pop-to-buffer}, which
1735used by Lisp programs to flexibly display a buffer in some window and 1608flexibly displays a buffer in some window and selects that window for
1736select that window for editing: 1609editing. In turn, @code{pop-to-buffer} uses @code{display-buffer} for
1610displaying the buffer. Hence, all the variables affecting
1611@code{display-buffer} will affect it as well. @xref{Choosing Window},
1612for the documentation of @code{display-buffer}.
1737 1613
1738@defun pop-to-buffer buffer-or-name &optional action norecord 1614@defun pop-to-buffer buffer-or-name &optional action norecord
1739This function makes @var{buffer-or-name} the current buffer and 1615This function makes @var{buffer-or-name} the current buffer and
@@ -1743,10 +1619,6 @@ on a different graphical frame, that frame is given input focus if
1743possible (@pxref{Input Focus}). The return value is the buffer that 1619possible (@pxref{Input Focus}). The return value is the buffer that
1744was switched to. 1620was switched to.
1745 1621
1746This function uses @code{display-buffer} to display the buffer, so all
1747the variables affecting @code{display-buffer} will affect it as well.
1748@xref{Choosing Window}.
1749
1750If @var{buffer-or-name} is @code{nil}, it defaults to the buffer 1622If @var{buffer-or-name} is @code{nil}, it defaults to the buffer
1751returned by @code{other-buffer} (@pxref{The Buffer List}). If 1623returned by @code{other-buffer} (@pxref{The Buffer List}). If
1752@var{buffer-or-name} is a string that is not the name of any existing 1624@var{buffer-or-name} is a string that is not the name of any existing
@@ -1775,8 +1647,8 @@ used as a subroutine by many functions and commands, including
1775Buffers}). 1647Buffers}).
1776 1648
1777@cindex display action 1649@cindex display action
1778@cindex action function, for display-buffer 1650@cindex action function, for @code{display-buffer}
1779@cindex action alist, for display-buffer 1651@cindex action alist, for @code{display-buffer}
1780 This command performs several complex steps to find a window to 1652 This command performs several complex steps to find a window to
1781display in. These steps are described by means of @dfn{display 1653display in. These steps are described by means of @dfn{display
1782actions}, which have the form @code{(@var{function} . @var{alist})}. 1654actions}, which have the form @code{(@var{function} . @var{alist})}.
@@ -1815,6 +1687,11 @@ The variable @code{display-buffer-overriding-action}.
1815The user option @code{display-buffer-alist}. 1687The user option @code{display-buffer-alist}.
1816 1688
1817@item 1689@item
1690A special action for handling @code{special-display-buffer-names} and
1691@code{special-display-regexps}, if either of those variables is
1692non-@code{nil}. @xref{Choosing Window Options}.
1693
1694@item
1818The @var{action} argument. 1695The @var{action} argument.
1819 1696
1820@item 1697@item
@@ -1886,10 +1763,9 @@ This function tries to ``display'' @var{buffer} by finding a window
1886that is already displaying it. 1763that is already displaying it.
1887 1764
1888If @var{alist} has a non-@code{nil} @code{inhibit-same-window} entry, 1765If @var{alist} has a non-@code{nil} @code{inhibit-same-window} entry,
1889the selected window is not eligible for reuse. 1766the selected window is not eligible for reuse. If @var{alist}
1890 1767contains a @code{reusable-frames} entry, its value determines which
1891If @var{alist} contains a @code{reusable-frames} entry, its value 1768frames to search for a reusable window:
1892determines which frames to search for a reusable window:
1893 1769
1894@itemize @bullet 1770@itemize @bullet
1895@item 1771@item
@@ -1910,17 +1786,28 @@ normally searches just the selected frame; however, if either the
1910variable @code{display-buffer-reuse-frames} or the variable 1786variable @code{display-buffer-reuse-frames} or the variable
1911@code{pop-up-frames} is non-@code{nil}, it searches all frames on the 1787@code{pop-up-frames} is non-@code{nil}, it searches all frames on the
1912current terminal. @xref{Choosing Window Options}. 1788current terminal. @xref{Choosing Window Options}.
1789
1790If this function chooses a window on another frame, it makes that
1791frame visible and raises it if necessary.
1913@end defun 1792@end defun
1914 1793
1915@defun display-buffer-pop-up-frame buffer alist 1794@defun display-buffer-pop-up-frame buffer alist
1916This function creates a new frame, and displays the buffer in that 1795This function creates a new frame, and displays the buffer in that
1917frame's window. 1796frame's window. It actually performs the frame creation by calling
1797the function specified in @code{pop-up-frame-function}
1798(@pxref{Choosing Window Options}).
1918@end defun 1799@end defun
1919 1800
1920@defun display-buffer-pop-up-window buffer alist 1801@defun display-buffer-pop-up-window buffer alist
1921This function tries to display @var{buffer} by splitting the largest 1802This function tries to display @var{buffer} by splitting the largest
1922or least recently-used window. It uses @code{split-window-sensibly} 1803or least recently-used window (typically one on the selected frame).
1923as a subroutine (@pxref{Choosing Window Options}). 1804It actually performs the split by calling the function specified in
1805@code{split-window-preferred-function} (@pxref{Choosing Window
1806Options}).
1807
1808It can fail if no window splitting can be performed for some reason
1809(e.g. if there is just one frame and it has an @code{unsplittable}
1810frame parameter; @pxref{Buffer Parameters}).
1924@end defun 1811@end defun
1925 1812
1926@defun display-buffer-use-some-window buffer alist 1813@defun display-buffer-use-some-window buffer alist
@@ -1937,142 +1824,108 @@ The behavior of the standard display actions of @code{display-buffer}
1937options. 1824options.
1938 1825
1939@defopt display-buffer-reuse-frames 1826@defopt display-buffer-reuse-frames
1940If this variable is non-@code{nil}, @code{display-buffer} searches 1827If the value of this variable is non-@code{nil}, @code{display-buffer}
1941visible and iconified frames for a window displaying 1828may search all frames on the current terminal when looking for a
1942@var{buffer-or-name}. If there is such a window, @code{display-buffer} 1829window already displaying the specified buffer. The default is
1943makes that window's frame visible and raises it if necessary, and 1830@code{nil}. This variable is consulted by the action function
1944returns the window. If there is no such window or 1831@code{display-buffer-reuse-window} (@pxref{Display Action Functions}).
1945@code{display-buffer-reuse-frames} is @code{nil}, the behavior of
1946@code{display-buffer} is determined by the variables described next.
1947@end defopt 1832@end defopt
1948 1833
1949@defopt pop-up-windows 1834@defopt pop-up-windows
1950This variable specifies whether @code{display-buffer} is allowed to 1835If the value of this variable is non-@code{nil}, @code{display-buffer}
1951split (@pxref{Splitting Windows}) an existing window. If this variable 1836is allowed to split an existing window to make a new window for
1952is non-@code{nil}, @code{display-buffer} tries to split the largest or 1837displaying in. This is the default.
1953least recently used window on the selected frame. (If the selected 1838
1954frame is a minibuffer-only frame, @code{display-buffer} tries to split a 1839This variable is provided mainly for backward compatibility. It is
1955window on another frame instead.) If this variable is @code{nil} or the 1840obeyed by @code{display-buffer} via a special mechanism in
1956variable @code{pop-up-frames} (see below) is non-@code{nil}, 1841@code{display-buffer-fallback-action}, which only calls the action
1957@code{display-buffer} does not split any window. 1842function @code{display-buffer-pop-up-window} (@pxref{Display Action
1843Functions}) when the value is @code{nil}. It is not consulted by
1844@code{display-buffer-pop-up-window} itself, which the user may specify
1845directly in @code{display-buffer-alist} etc.
1958@end defopt 1846@end defopt
1959 1847
1960@defopt split-window-preferred-function 1848@defopt split-window-preferred-function
1961This variable must specify a function with one argument, which is a 1849This variable specifies a function for splitting a window, in order to
1962window. The @code{display-buffer} routines will call this function with 1850make a new window for displaying a buffer. It is used by the
1963one or more candidate windows when they look for a window to split. The 1851@code{display-buffer-pop-up-window} action function to actually split
1964function is expected to split that window and return the new window. If 1852the window (@pxref{Display Action Functions}).
1965the function returns @code{nil}, this means that the argument window 1853
1966cannot (or shall not) be split. 1854The default value is @code{split-window-sensibly}, which is documented
1967 1855below. The value must be a function that takes one argument, a
1968The default value of @code{split-window-preferred-function} is the 1856window, and return either a new window (which is used to display the
1969function @code{split-window-sensibly} described below. If you 1857desired buffer) or @code{nil} (which means the splitting failed).
1970customize this option, bear in mind that the @code{display-buffer}
1971routines may call your function up to two times when trying to split a
1972window. The argument of the first call is the largest window on the
1973chosen frame (as returned by @code{get-largest-window}). If that call
1974fails to return a live window, your function is called a second time
1975with the least recently used window on that frame (as returned by
1976@code{get-lru-window}).
1977
1978The function specified by this option may try to split any other window
1979instead of the argument window. Note that the window selected at the
1980time @code{display-buffer} was invoked is still selected when your
1981function is called. Hence, you can split the selected window (instead
1982of the largest or least recently used one) by simply ignoring the window
1983argument in the body of your function. You can even choose to not split
1984any window as long as the return value of your function specifies a live
1985window or @code{nil}, but you are not encouraged to do so
1986unconditionally. If you want @code{display-buffer} to never split any
1987windows, set @code{pop-up-windows} to @code{nil}.
1988@end defopt 1858@end defopt
1989 1859
1990@defun split-window-sensibly window 1860@defun split-window-sensibly window
1991This function takes a window as argument and tries to split that window 1861This function tries to split @code{window}, and return the newly
1992in a suitable way. The two variables described next are useful for 1862created window. If @code{window} cannot be split, it returns
1993tuning the behavior of this function. 1863@code{nil}.
1864
1865This function obeys the usual rules that determine when a window may
1866be split (@pxref{Splitting Windows}). It first tries to split by
1867placing the new window below, subject to the restriction imposed by
1868@code{split-height-threshold} (see below) in addition to any other
1869restrictions. If that fails, it tries to split by placing the new
1870window to the right, subject to @code{split-width-threshold} (see
1871below). If that fails, and the window is the only window on its
1872frame, this function again tries to split and place the new window
1873below, disregarding @code{split-height-threshold}. If this fails as
1874well, this function gives up and returns @code{nil}.
1994@end defun 1875@end defun
1995 1876
1996@defopt split-height-threshold 1877@defopt split-height-threshold
1997This variable specifies whether @code{split-window-sensibly} may split 1878This variable, used by @code{split-window-sensibly}, specifies whether
1998windows vertically. If it is an integer, @code{split-window-sensibly} 1879to split the window placing the new window below. If it is an
1999tries to vertically split a window only if it has at least this many 1880integer, that means to split only if the original window has at least
2000lines. If the window has less lines, splitting fails, or the value of 1881that many lines. If it is @code{nil}, that means not to split this
2001this variable is @code{nil}, @code{split-window-sensibly} will try to 1882way.
2002split the window horizontally, subject to restrictions of
2003@code{split-width-threshold} (see below). If splitting horizontally
2004fails too and the window is the only window on its frame,
2005@code{split-window-sensibly} will try to split the window vertically
2006disregarding the value of @code{split-height-threshold}. If this fails
2007as well, @code{split-window-sensibly} returns @code{nil}.
2008
2009@code{split-window-sensibly} does not split vertically a window whose
2010height is fixed (@pxref{Resizing Windows}). Also, it vertically splits
2011a window only if the space taken up by that window can accommodate two
2012windows one above the other that are both at least
2013@code{window-min-height} lines tall. Moreover, if the window that shall
2014be split has a mode line, @code{split-window-sensibly} does not split
2015the window unless the new window can accommodate a mode line too.
2016@end defopt 1883@end defopt
2017 1884
2018@defopt split-width-threshold 1885@defopt split-width-threshold
2019This variable specifies whether @code{split-window-sensibly} may split 1886This variable, used by @code{split-window-sensibly}, specifies whether
2020windows horizontally. If it is an integer, @code{split-window-sensibly} 1887to split the window placing the new window to the right. If the value
2021tries to horizontally split a window only if it has at least this many 1888is an integer, that means to split only if the original window has at
2022columns. If it is @code{nil}, @code{split-window-sensibly} will not 1889least that many columns. If the value is @code{nil}, that means not
2023split the window horizontally. (It still might split the window 1890to split this way.
2024vertically, though, see above.)
2025
2026@code{split-window-sensibly} does not split horizontally a window if
2027that window's width is fixed (@pxref{Resizing Windows}). Also, it
2028horizontally splits a window only if the space that window takes up can
2029accommodate two windows side by side that are both at least
2030@code{window-min-width} columns wide.
2031@end defopt 1891@end defopt
2032 1892
2033@defopt even-window-heights
2034This variable specifies whether @code{display-buffer} should even out
2035window heights if the buffer gets displayed in an existing window, above
2036or beneath another window. If @code{even-window-heights} is
2037non-@code{nil}, the default, window heights will be evened out. If
2038either of the involved window has fixed height (@pxref{Resizing
2039Windows}) or @code{even-window-heights} is @code{nil}, the original
2040window heights will be left alone.
2041@end defopt
2042
2043@c Emacs 19 feature
2044@defopt pop-up-frames 1893@defopt pop-up-frames
2045This variable specifies whether @code{display-buffer} should make new 1894If the value of this variable is non-@code{nil}, that means
2046frames. If it is non-@code{nil}, @code{display-buffer} looks for a 1895@code{display-buffer} may display buffers by making new frames. The
2047window already displaying @var{buffer-or-name} on any visible or 1896default is @code{nil}.
2048iconified frame. If it finds such a window, it makes that window's 1897
2049frame visible and raises it if necessary, and returns the window. 1898A non-@code{nil} value also means that when @code{display-buffer} is
2050Otherwise it makes a new frame, unless the variable's value is 1899looking for a window already displaying @var{buffer-or-name}, it can
2051@code{graphic-only} and the selected frame is not on a graphic display. 1900search any visible or iconified frame, not just the selected frame.
2052@xref{Frames}, for more information. 1901
2053 1902This variable is provided mainly for backward compatibility. It is
2054Note that the value of @code{pop-up-windows} does not matter if 1903obeyed by @code{display-buffer} via a special mechanism in
2055@code{pop-up-frames} is non-@code{nil}. If @code{pop-up-frames} is 1904@code{display-buffer-fallback-action}, which calls the action function
2056@code{nil}, then @code{display-buffer} either splits a window or reuses 1905@code{display-buffer-pop-up-frame} (@pxref{Display Action Functions})
2057one. 1906if the value is non-@code{nil}. (This is done before attempting to
1907split a window.) This variable is not consulted by
1908@code{display-buffer-pop-up-frame} itself, which the user may specify
1909directly in @code{display-buffer-alist} etc.
2058@end defopt 1910@end defopt
2059 1911
2060@c Emacs 19 feature
2061@defopt pop-up-frame-function 1912@defopt pop-up-frame-function
2062This variable specifies how to make a new frame if @code{pop-up-frames} 1913This variable specifies a function for creating a new frame, in order
2063is non-@code{nil}. 1914to make a new window for displaying a buffer. It is used by the
2064 1915@code{display-buffer-pop-up-frame} action function (@pxref{Display
2065The value of this variable must be a function of no arguments. When 1916Action Functions}).
2066@code{display-buffer} makes a new frame, it does so by calling that 1917
2067function, which should return a frame. The default value of this 1918The value should be a function that takes no arguments and returns a
2068variable is a function that creates a frame using the parameters 1919frame, or @code{nil} if no frame could be created. The default value
2069specified by @code{pop-up-frame-alist} described next. 1920is a function that creates a frame using the parameters specified by
1921@code{pop-up-frame-alist} (see below).
2070@end defopt 1922@end defopt
2071 1923
2072@defopt pop-up-frame-alist 1924@defopt pop-up-frame-alist
2073This variable holds an alist specifying frame parameters used by the 1925This variable holds an alist of frame parameters (@pxref{Frame
2074default value of @code{pop-up-frame-function} for making new frames. 1926Parameters}), which is used by the default function in
2075@xref{Frame Parameters}, for more information about frame parameters. 1927@code{pop-up-frame-function} to make a new frame. The default is
1928@code{nil}.
2076@end defopt 1929@end defopt
2077 1930
2078@defopt special-display-buffer-names 1931@defopt special-display-buffer-names
@@ -2193,12 +2046,6 @@ This variable takes precedence over all the other options described
2193above. 2046above.
2194@end defopt 2047@end defopt
2195 2048
2196If all options described above fail to produce a suitable window,
2197@code{display-buffer} tries to reuse an existing window. As a last
2198resort, it will try to display @var{buffer-or-name} on a separate frame.
2199In that case, the value of @code{pop-up-frames} is disregarded.
2200
2201
2202@node Window History 2049@node Window History
2203@section Window History 2050@section Window History
2204@cindex window history 2051@cindex window history
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog
index 924f3501bfa..43d9ba1b1e6 100644
--- a/doc/misc/ChangeLog
+++ b/doc/misc/ChangeLog
@@ -1,3 +1,19 @@
12011-11-20 Glenn Morris <rgm@gnu.org>
2
3 * gnus.texi (Group Information):
4 Remove gnus-group-fetch-faq, command deleted 2010-09-24.
5
62011-11-20 Juanma Barranquero <lekktu@gmail.com>
7
8 * gnus-coding.texi (Gnus Maintenance Guide):
9 Rename from "Gnus Maintainance Guide".
10
11 * ede.texi (ede-compilation-program, ede-compiler, ede-linker):
12 * eieio.texi (Customizing):
13 * gnus.texi (Article Washing):
14 * gnus-news.texi:
15 * sem-user.texi (Smart Jump): Fix typos.
16
12011-11-16 Juanma Barranquero <lekktu@gmail.com> 172011-11-16 Juanma Barranquero <lekktu@gmail.com>
2 18
3 * org.texi (Agenda commands, Exporting Agenda Views): Fix typos. 19 * org.texi (Agenda commands, Exporting Agenda Views): Fix typos.
diff --git a/doc/misc/ada-mode.texi b/doc/misc/ada-mode.texi
index 374158c2c78..0eb20d01324 100644
--- a/doc/misc/ada-mode.texi
+++ b/doc/misc/ada-mode.texi
@@ -1357,7 +1357,7 @@ specifies the casing of one word or word fragment. Comments may be
1357included, separated from the word by a space. 1357included, separated from the word by a space.
1358 1358
1359If the word starts with an asterisk (@key{*}), it defines the casing 1359If the word starts with an asterisk (@key{*}), it defines the casing
1360af a word fragment (or ``substring''); part of a word between two 1360as a word fragment (or ``substring''); part of a word between two
1361underscores or word boundary. 1361underscores or word boundary.
1362 1362
1363For example: 1363For example:
diff --git a/doc/misc/autotype.texi b/doc/misc/autotype.texi
index 2e66c78a3cb..ecf4c7e47b2 100644
--- a/doc/misc/autotype.texi
+++ b/doc/misc/autotype.texi
@@ -156,7 +156,7 @@ the point is normally left after that skeleton is inserted (@pxref{Using
156Skeletons}). The point (@pxref{(emacs)Point}) is left at the next 156Skeletons}). The point (@pxref{(emacs)Point}) is left at the next
157interesting spot in the skeleton instead. 157interesting spot in the skeleton instead.
158 158
159 A negative prefix means to do something similar with that many precedingly 159 A negative prefix means to do something similar with that many previously
160marked interregions (@pxref{(emacs)Mark}). In the simplest case, if you type 160marked interregions (@pxref{(emacs)Mark}). In the simplest case, if you type
161@kbd{M--} just before issuing the skeleton command, that will wrap the 161@kbd{M--} just before issuing the skeleton command, that will wrap the
162skeleton around the current region, just like a positive argument would have 162skeleton around the current region, just like a positive argument would have
diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi
index 5a1ee872a2b..290b120ea80 100644
--- a/doc/misc/calc.texi
+++ b/doc/misc/calc.texi
@@ -90,7 +90,7 @@
90This file documents Calc, the GNU Emacs calculator. 90This file documents Calc, the GNU Emacs calculator.
91@end ifinfo 91@end ifinfo
92@ifnotinfo 92@ifnotinfo
93This file documents Calc, the GNU Emacs calculator, included with 93This file documents Calc, the GNU Emacs calculator, included with
94GNU Emacs @value{EMACSVER}. 94GNU Emacs @value{EMACSVER}.
95@end ifnotinfo 95@end ifnotinfo
96 96
@@ -324,7 +324,7 @@ need to know.
324@c @cindex Marginal notes 324@c @cindex Marginal notes
325Every Calc keyboard command is listed in the Calc Summary, and also 325Every Calc keyboard command is listed in the Calc Summary, and also
326in the Key Index. Algebraic functions, @kbd{M-x} commands, and 326in the Key Index. Algebraic functions, @kbd{M-x} commands, and
327variables also have their own indices. 327variables also have their own indices.
328@c @texline Each 328@c @texline Each
329@c @infoline In the printed manual, each 329@c @infoline In the printed manual, each
330@c paragraph that is referenced in the Key or Function Index is marked 330@c paragraph that is referenced in the Key or Function Index is marked
@@ -338,7 +338,7 @@ the @kbd{h i} key sequence. Outside of the Calc window, you can press
338command @kbd{C-x * t} will jump to the Tutorial and start Calc if 338command @kbd{C-x * t} will jump to the Tutorial and start Calc if
339necessary. Pressing @kbd{h s} or @kbd{C-x * s} will take you directly 339necessary. Pressing @kbd{h s} or @kbd{C-x * s} will take you directly
340to the Calc Summary. Within Calc, you can also go to the part of the 340to the Calc Summary. Within Calc, you can also go to the part of the
341manual describing any Calc key, function, or variable using 341manual describing any Calc key, function, or variable using
342@w{@kbd{h k}}, @kbd{h f}, or @kbd{h v}, respectively. @xref{Help Commands}. 342@w{@kbd{h k}}, @kbd{h f}, or @kbd{h v}, respectively. @xref{Help Commands}.
343 343
344@ifnottex 344@ifnottex
@@ -437,12 +437,12 @@ Delete, and Space keys.
437then the command to operate on the numbers. 437then the command to operate on the numbers.
438 438
439@noindent 439@noindent
440Type @kbd{2 @key{RET} 3 + Q} to compute 440Type @kbd{2 @key{RET} 3 + Q} to compute
441@texline @math{\sqrt{2+3} = 2.2360679775}. 441@texline @math{\sqrt{2+3} = 2.2360679775}.
442@infoline the square root of 2+3, which is 2.2360679775. 442@infoline the square root of 2+3, which is 2.2360679775.
443 443
444@noindent 444@noindent
445Type @kbd{P 2 ^} to compute 445Type @kbd{P 2 ^} to compute
446@texline @math{\pi^2 = 9.86960440109}. 446@texline @math{\pi^2 = 9.86960440109}.
447@infoline the value of `pi' squared, 9.86960440109. 447@infoline the value of `pi' squared, 9.86960440109.
448 448
@@ -461,14 +461,14 @@ conventional ``algebraic'' notation. To enter an algebraic formula,
461use the apostrophe key. 461use the apostrophe key.
462 462
463@noindent 463@noindent
464Type @kbd{' sqrt(2+3) @key{RET}} to compute 464Type @kbd{' sqrt(2+3) @key{RET}} to compute
465@texline @math{\sqrt{2+3}}. 465@texline @math{\sqrt{2+3}}.
466@infoline the square root of 2+3. 466@infoline the square root of 2+3.
467 467
468@noindent 468@noindent
469Type @kbd{' pi^2 @key{RET}} to enter 469Type @kbd{' pi^2 @key{RET}} to enter
470@texline @math{\pi^2}. 470@texline @math{\pi^2}.
471@infoline `pi' squared. 471@infoline `pi' squared.
472To evaluate this symbolic formula as a number, type @kbd{=}. 472To evaluate this symbolic formula as a number, type @kbd{=}.
473 473
474@noindent 474@noindent
@@ -526,10 +526,10 @@ the upper-leftmost @samp{1} and set the mark, then move to just after
526the lower-right @samp{8} and press @kbd{C-x * r}. 526the lower-right @samp{8} and press @kbd{C-x * r}.
527 527
528@noindent 528@noindent
529Type @kbd{v t} to transpose this 529Type @kbd{v t} to transpose this
530@texline @math{3\times2} 530@texline @math{3\times2}
531@infoline 3x2 531@infoline 3x2
532matrix into a 532matrix into a
533@texline @math{2\times3} 533@texline @math{2\times3}
534@infoline 2x3 534@infoline 2x3
535matrix. Type @w{@kbd{v u}} to unpack the rows into two separate 535matrix. Type @w{@kbd{v u}} to unpack the rows into two separate
@@ -605,7 +605,7 @@ there are Quick mode, Keypad mode, and Embedded mode.
605 605
606@noindent 606@noindent
607On most systems, you can type @kbd{C-x *} to start the Calculator. 607On most systems, you can type @kbd{C-x *} to start the Calculator.
608The key sequence @kbd{C-x *} is bound to the command @code{calc-dispatch}, 608The key sequence @kbd{C-x *} is bound to the command @code{calc-dispatch},
609which can be rebound if convenient (@pxref{Customizing Calc}). 609which can be rebound if convenient (@pxref{Customizing Calc}).
610 610
611When you press @kbd{C-x *}, Emacs waits for you to press a second key to 611When you press @kbd{C-x *}, Emacs waits for you to press a second key to
@@ -1154,9 +1154,9 @@ its initial state: Empty stack, and initial mode settings.
1154@noindent 1154@noindent
1155Calc was originally started as a two-week project to occupy a lull 1155Calc was originally started as a two-week project to occupy a lull
1156in the author's schedule. Basically, a friend asked if I remembered 1156in the author's schedule. Basically, a friend asked if I remembered
1157the value of 1157the value of
1158@texline @math{2^{32}}. 1158@texline @math{2^{32}}.
1159@infoline @expr{2^32}. 1159@infoline @expr{2^32}.
1160I didn't offhand, but I said, ``that's easy, just call up an 1160I didn't offhand, but I said, ``that's easy, just call up an
1161@code{xcalc}.'' @code{Xcalc} duly reported that the answer to our 1161@code{xcalc}.'' @code{Xcalc} duly reported that the answer to our
1162question was @samp{4.294967e+09}---with no way to see the full ten 1162question was @samp{4.294967e+09}---with no way to see the full ten
@@ -1213,7 +1213,7 @@ algebra system for microcomputers.
1213Many people have contributed to Calc by reporting bugs and suggesting 1213Many people have contributed to Calc by reporting bugs and suggesting
1214features, large and small. A few deserve special mention: Tim Peters, 1214features, large and small. A few deserve special mention: Tim Peters,
1215who helped develop the ideas that led to the selection commands, rewrite 1215who helped develop the ideas that led to the selection commands, rewrite
1216rules, and many other algebra features; 1216rules, and many other algebra features;
1217@texline Fran\c{c}ois 1217@texline Fran\c{c}ois
1218@infoline Francois 1218@infoline Francois
1219Pinard, who contributed an early prototype of the Calc Summary appendix 1219Pinard, who contributed an early prototype of the Calc Summary appendix
@@ -1226,7 +1226,7 @@ Randal Schwartz, who suggested the @code{calc-eval} function; Juha
1226Sarlin, who first worked out how to split Calc into quickly-loading 1226Sarlin, who first worked out how to split Calc into quickly-loading
1227parts; Bob Weiner, who helped immensely with the Lucid Emacs port; and 1227parts; Bob Weiner, who helped immensely with the Lucid Emacs port; and
1228Robert J. Chassell, who suggested the Calc Tutorial and exercises as 1228Robert J. Chassell, who suggested the Calc Tutorial and exercises as
1229well as many other things. 1229well as many other things.
1230 1230
1231@cindex Bibliography 1231@cindex Bibliography
1232@cindex Knuth, Art of Computer Programming 1232@cindex Knuth, Art of Computer Programming
@@ -1472,9 +1472,9 @@ Here's the first exercise: What will the keystrokes @kbd{1 @key{RET} 2
1472multiplication.) Figure it out by hand, then try it with Calc to see 1472multiplication.) Figure it out by hand, then try it with Calc to see
1473if you're right. @xref{RPN Answer 1, 1}. (@bullet{}) 1473if you're right. @xref{RPN Answer 1, 1}. (@bullet{})
1474 1474
1475(@bullet{}) @strong{Exercise 2.} Compute 1475(@bullet{}) @strong{Exercise 2.} Compute
1476@texline @math{(2\times4) + (7\times9.4) + {5\over4}} 1476@texline @math{(2\times4) + (7\times9.4) + {5\over4}}
1477@infoline @expr{2*4 + 7*9.5 + 5/4} 1477@infoline @expr{2*4 + 7*9.5 + 5/4}
1478using the stack. @xref{RPN Answer 2, 2}. (@bullet{}) 1478using the stack. @xref{RPN Answer 2, 2}. (@bullet{})
1479 1479
1480The @key{DEL} key is called Backspace on some keyboards. It is 1480The @key{DEL} key is called Backspace on some keyboards. It is
@@ -1889,7 +1889,7 @@ intermediate results of a calculation as you go along. You can
1889accomplish this in Calc by performing your calculation as a series 1889accomplish this in Calc by performing your calculation as a series
1890of algebraic entries, using the @kbd{$} sign to tie them together. 1890of algebraic entries, using the @kbd{$} sign to tie them together.
1891In an algebraic formula, @kbd{$} represents the number on the top 1891In an algebraic formula, @kbd{$} represents the number on the top
1892of the stack. Here, we perform the calculation 1892of the stack. Here, we perform the calculation
1893@texline @math{\sqrt{2\times4+1}}, 1893@texline @math{\sqrt{2\times4+1}},
1894@infoline @expr{sqrt(2*4+1)}, 1894@infoline @expr{sqrt(2*4+1)},
1895which on a traditional calculator would be done by pressing 1895which on a traditional calculator would be done by pressing
@@ -2149,7 +2149,7 @@ key. If you type a prefix key by accident, you can press @kbd{C-g}
2149to cancel it. (In fact, you can press @kbd{C-g} to cancel almost 2149to cancel it. (In fact, you can press @kbd{C-g} to cancel almost
2150anything in Emacs.) To get help on a prefix key, press that key 2150anything in Emacs.) To get help on a prefix key, press that key
2151followed by @kbd{?}. Some prefixes have several lines of help, 2151followed by @kbd{?}. Some prefixes have several lines of help,
2152so you need to press @kbd{?} repeatedly to see them all. 2152so you need to press @kbd{?} repeatedly to see them all.
2153You can also type @kbd{h h} to see all the help at once. 2153You can also type @kbd{h h} to see all the help at once.
2154 2154
2155Try pressing @kbd{t ?} now. You will see a line of the form, 2155Try pressing @kbd{t ?} now. You will see a line of the form,
@@ -2550,13 +2550,13 @@ angle is measured in degrees. For example,
2550 2550
2551@noindent 2551@noindent
2552The shift-@kbd{S} command computes the sine of an angle. The sine 2552The shift-@kbd{S} command computes the sine of an angle. The sine
2553of 45 degrees is 2553of 45 degrees is
2554@texline @math{\sqrt{2}/2}; 2554@texline @math{\sqrt{2}/2};
2555@infoline @expr{sqrt(2)/2}; 2555@infoline @expr{sqrt(2)/2};
2556squaring this yields @expr{2/4 = 0.5}. However, there has been a slight 2556squaring this yields @expr{2/4 = 0.5}. However, there has been a slight
2557roundoff error because the representation of 2557roundoff error because the representation of
2558@texline @math{\sqrt{2}/2} 2558@texline @math{\sqrt{2}/2}
2559@infoline @expr{sqrt(2)/2} 2559@infoline @expr{sqrt(2)/2}
2560wasn't exact. The @kbd{c 1} command is a handy way to clean up numbers 2560wasn't exact. The @kbd{c 1} command is a handy way to clean up numbers
2561in this case; it temporarily reduces the precision by one digit while it 2561in this case; it temporarily reduces the precision by one digit while it
2562re-rounds the number on the top of the stack. 2562re-rounds the number on the top of the stack.
@@ -2595,9 +2595,9 @@ either radians or degrees, depending on the current angular mode.
2595@end smallexample 2595@end smallexample
2596 2596
2597@noindent 2597@noindent
2598Here we compute the Inverse Sine of 2598Here we compute the Inverse Sine of
2599@texline @math{\sqrt{0.5}}, 2599@texline @math{\sqrt{0.5}},
2600@infoline @expr{sqrt(0.5)}, 2600@infoline @expr{sqrt(0.5)},
2601first in radians, then in degrees. 2601first in radians, then in degrees.
2602 2602
2603Use @kbd{c d} and @kbd{c r} to convert a number from radians to degrees 2603Use @kbd{c d} and @kbd{c r} to convert a number from radians to degrees
@@ -2783,9 +2783,9 @@ logarithm). These can be modified by the @kbd{I} (inverse) and
2783@kbd{H} (hyperbolic) prefix keys. 2783@kbd{H} (hyperbolic) prefix keys.
2784 2784
2785Let's compute the sine and cosine of an angle, and verify the 2785Let's compute the sine and cosine of an angle, and verify the
2786identity 2786identity
2787@texline @math{\sin^2x + \cos^2x = 1}. 2787@texline @math{\sin^2x + \cos^2x = 1}.
2788@infoline @expr{sin(x)^2 + cos(x)^2 = 1}. 2788@infoline @expr{sin(x)^2 + cos(x)^2 = 1}.
2789We'll arbitrarily pick @mathit{-64} degrees as a good value for @expr{x}. 2789We'll arbitrarily pick @mathit{-64} degrees as a good value for @expr{x}.
2790With the angular mode set to degrees (type @w{@kbd{m d}}), do: 2790With the angular mode set to degrees (type @w{@kbd{m d}}), do:
2791 2791
@@ -2806,7 +2806,7 @@ You can of course do these calculations to any precision you like.)
2806Remember, @kbd{f h} is the @code{calc-hypot}, or square-root of sum 2806Remember, @kbd{f h} is the @code{calc-hypot}, or square-root of sum
2807of squares, command. 2807of squares, command.
2808 2808
2809Another identity is 2809Another identity is
2810@texline @math{\displaystyle\tan x = {\sin x \over \cos x}}. 2810@texline @math{\displaystyle\tan x = {\sin x \over \cos x}}.
2811@infoline @expr{tan(x) = sin(x) / cos(x)}. 2811@infoline @expr{tan(x) = sin(x) / cos(x)}.
2812@smallexample 2812@smallexample
@@ -2871,7 +2871,7 @@ the top two stack elements right after the @kbd{U U}, then a pair of
2871A similar identity is supposed to hold for hyperbolic sines and cosines, 2871A similar identity is supposed to hold for hyperbolic sines and cosines,
2872except that it is the @emph{difference} 2872except that it is the @emph{difference}
2873@texline @math{\cosh^2x - \sinh^2x} 2873@texline @math{\cosh^2x - \sinh^2x}
2874@infoline @expr{cosh(x)^2 - sinh(x)^2} 2874@infoline @expr{cosh(x)^2 - sinh(x)^2}
2875that always equals one. Let's try to verify this identity. 2875that always equals one. Let's try to verify this identity.
2876 2876
2877@smallexample 2877@smallexample
@@ -2993,7 +2993,7 @@ factorial function defined in terms of Euler's Gamma function
2993@end smallexample 2993@end smallexample
2994 2994
2995@noindent 2995@noindent
2996Here we verify the identity 2996Here we verify the identity
2997@texline @math{n! = \Gamma(n+1)}. 2997@texline @math{n! = \Gamma(n+1)}.
2998@infoline @expr{@var{n}!@: = gamma(@var{n}+1)}. 2998@infoline @expr{@var{n}!@: = gamma(@var{n}+1)}.
2999 2999
@@ -3283,11 +3283,11 @@ rows in the matrix is different from the number of elements in the
3283vector. 3283vector.
3284 3284
3285(@bullet{}) @strong{Exercise 1.} Use @samp{*} to sum along the rows 3285(@bullet{}) @strong{Exercise 1.} Use @samp{*} to sum along the rows
3286of the above 3286of the above
3287@texline @math{2\times3} 3287@texline @math{2\times3}
3288@infoline 2x3 3288@infoline 2x3
3289matrix to get @expr{[6, 15]}. Now use @samp{*} to sum along the columns 3289matrix to get @expr{[6, 15]}. Now use @samp{*} to sum along the columns
3290to get @expr{[5, 7, 9]}. 3290to get @expr{[5, 7, 9]}.
3291@xref{Matrix Answer 1, 1}. (@bullet{}) 3291@xref{Matrix Answer 1, 1}. (@bullet{})
3292 3292
3293@cindex Identity matrix 3293@cindex Identity matrix
@@ -3432,7 +3432,7 @@ the matrix and vector. If we multiplied in the other order, Calc would
3432assume the vector was a row vector in order to make the dimensions 3432assume the vector was a row vector in order to make the dimensions
3433come out right, and the answer would be incorrect. If you 3433come out right, and the answer would be incorrect. If you
3434don't feel safe letting Calc take either interpretation of your 3434don't feel safe letting Calc take either interpretation of your
3435vectors, use explicit 3435vectors, use explicit
3436@texline @math{N\times1} 3436@texline @math{N\times1}
3437@infoline Nx1 3437@infoline Nx1
3438or 3438or
@@ -3482,9 +3482,9 @@ on the left by the transpose of @expr{A}:
3482@tex 3482@tex
3483$A^T A \, X = A^T B$, where $A^T$ is the transpose \samp{trn(A)}. 3483$A^T A \, X = A^T B$, where $A^T$ is the transpose \samp{trn(A)}.
3484@end tex 3484@end tex
3485Now 3485Now
3486@texline @math{A^T A} 3486@texline @math{A^T A}
3487@infoline @expr{trn(A)*A} 3487@infoline @expr{trn(A)*A}
3488is a square matrix so a solution is possible. It turns out that the 3488is a square matrix so a solution is possible. It turns out that the
3489@expr{X} vector you compute in this way will be a ``least-squares'' 3489@expr{X} vector you compute in this way will be a ``least-squares''
3490solution, which can be regarded as the ``closest'' solution to the set 3490solution, which can be regarded as the ``closest'' solution to the set
@@ -3577,9 +3577,9 @@ other a plain number.) In the final step, we take the square root
3577of each element. 3577of each element.
3578 3578
3579(@bullet{}) @strong{Exercise 1.} Compute a vector of powers of two 3579(@bullet{}) @strong{Exercise 1.} Compute a vector of powers of two
3580from 3580from
3581@texline @math{2^{-4}} 3581@texline @math{2^{-4}}
3582@infoline @expr{2^-4} 3582@infoline @expr{2^-4}
3583to @expr{2^4}. @xref{List Answer 1, 1}. (@bullet{}) 3583to @expr{2^4}. @xref{List Answer 1, 1}. (@bullet{})
3584 3584
3585You can also @dfn{reduce} a binary operator across a vector. 3585You can also @dfn{reduce} a binary operator across a vector.
@@ -3780,9 +3780,9 @@ $$ m = {N \sum x y - \sum x \sum y \over
3780@end tex 3780@end tex
3781 3781
3782@noindent 3782@noindent
3783where 3783where
3784@texline @math{\sum x} 3784@texline @math{\sum x}
3785@infoline @expr{sum(x)} 3785@infoline @expr{sum(x)}
3786represents the sum of all the values of @expr{x}. While there is an 3786represents the sum of all the values of @expr{x}. While there is an
3787actual @code{sum} function in Calc, it's easier to sum a vector using a 3787actual @code{sum} function in Calc, it's easier to sum a vector using a
3788simple reduction. First, let's compute the four different sums that 3788simple reduction. First, let's compute the four different sums that
@@ -3883,9 +3883,9 @@ $$ b = {\sum y - m \sum x \over N} $$
3883@end group 3883@end group
3884@end smallexample 3884@end smallexample
3885 3885
3886Let's ``plot'' this straight line approximation, 3886Let's ``plot'' this straight line approximation,
3887@texline @math{y \approx m x + b}, 3887@texline @math{y \approx m x + b},
3888@infoline @expr{m x + b}, 3888@infoline @expr{m x + b},
3889and compare it with the original data. 3889and compare it with the original data.
3890 3890
3891@smallexample 3891@smallexample
@@ -3959,7 +3959,7 @@ Next, let's add the line we got from our least-squares fit.
3959(If you are reading this tutorial on-line while running Calc, typing 3959(If you are reading this tutorial on-line while running Calc, typing
3960@kbd{g a} may cause the tutorial to disappear from its window and be 3960@kbd{g a} may cause the tutorial to disappear from its window and be
3961replaced by a buffer named @samp{*Gnuplot Commands*}. The tutorial 3961replaced by a buffer named @samp{*Gnuplot Commands*}. The tutorial
3962will reappear when you terminate GNUPLOT by typing @kbd{g q}.) 3962will reappear when you terminate GNUPLOT by typing @kbd{g q}.)
3963@end ifinfo 3963@end ifinfo
3964 3964
3965@smallexample 3965@smallexample
@@ -4138,7 +4138,7 @@ command to enable multi-line display of vectors.)
4138@c [fix-ref Numerical Solutions] 4138@c [fix-ref Numerical Solutions]
4139(@bullet{}) @strong{Exercise 8.} Compute a list of values of Bessel's 4139(@bullet{}) @strong{Exercise 8.} Compute a list of values of Bessel's
4140@texline @math{J_1(x)} 4140@texline @math{J_1(x)}
4141@infoline @expr{J1} 4141@infoline @expr{J1}
4142function @samp{besJ(1,x)} for @expr{x} from 0 to 5 in steps of 0.25. 4142function @samp{besJ(1,x)} for @expr{x} from 0 to 5 in steps of 0.25.
4143Find the value of @expr{x} (from among the above set of values) for 4143Find the value of @expr{x} (from among the above set of values) for
4144which @samp{besJ(1,x)} is a maximum. Use an ``automatic'' method, 4144which @samp{besJ(1,x)} is a maximum. Use an ``automatic'' method,
@@ -4150,7 +4150,7 @@ of thing automatically; @pxref{Numerical Solutions}.)
4150@cindex Digits, vectors of 4150@cindex Digits, vectors of
4151(@bullet{}) @strong{Exercise 9.} You are given an integer in the range 4151(@bullet{}) @strong{Exercise 9.} You are given an integer in the range
4152@texline @math{0 \le N < 10^m} 4152@texline @math{0 \le N < 10^m}
4153@infoline @expr{0 <= N < 10^m} 4153@infoline @expr{0 <= N < 10^m}
4154for @expr{m=12} (i.e., an integer of less than 4154for @expr{m=12} (i.e., an integer of less than
4155twelve digits). Convert this integer into a vector of @expr{m} 4155twelve digits). Convert this integer into a vector of @expr{m}
4156digits, each in the range from 0 to 9. In vector-of-digits notation, 4156digits, each in the range from 0 to 9. In vector-of-digits notation,
@@ -4164,12 +4164,12 @@ to try is 25129925999. @xref{List Answer 9, 9}. (@bullet{})
4164happened? How would you do this test? @xref{List Answer 10, 10}. (@bullet{}) 4164happened? How would you do this test? @xref{List Answer 10, 10}. (@bullet{})
4165 4165
4166(@bullet{}) @strong{Exercise 11.} The area of a circle of radius one 4166(@bullet{}) @strong{Exercise 11.} The area of a circle of radius one
4167is @cpi{}. The area of the 4167is @cpi{}. The area of the
4168@texline @math{2\times2} 4168@texline @math{2\times2}
4169@infoline 2x2 4169@infoline 2x2
4170square that encloses that circle is 4. So if we throw @var{n} darts at 4170square that encloses that circle is 4. So if we throw @var{n} darts at
4171random points in the square, about @cpiover{4} of them will land inside 4171random points in the square, about @cpiover{4} of them will land inside
4172the circle. This gives us an entertaining way to estimate the value of 4172the circle. This gives us an entertaining way to estimate the value of
4173@cpi{}. The @w{@kbd{k r}} 4173@cpi{}. The @w{@kbd{k r}}
4174command picks a random number between zero and the value on the stack. 4174command picks a random number between zero and the value on the stack.
4175We could get a random floating-point number between @mathit{-1} and 1 by typing 4175We could get a random floating-point number between @mathit{-1} and 1 by typing
@@ -4183,12 +4183,12 @@ points lie inside the unit circle. Hint: Use the @kbd{v b} command.
4183another way to calculate @cpi{}. Say you have an infinite field 4183another way to calculate @cpi{}. Say you have an infinite field
4184of vertical lines with a spacing of one inch. Toss a one-inch matchstick 4184of vertical lines with a spacing of one inch. Toss a one-inch matchstick
4185onto the field. The probability that the matchstick will land crossing 4185onto the field. The probability that the matchstick will land crossing
4186a line turns out to be 4186a line turns out to be
4187@texline @math{2/\pi}. 4187@texline @math{2/\pi}.
4188@infoline @expr{2/pi}. 4188@infoline @expr{2/pi}.
4189Toss 100 matchsticks to estimate @cpi{}. (If you want still more fun, 4189Toss 100 matchsticks to estimate @cpi{}. (If you want still more fun,
4190the probability that the GCD (@w{@kbd{k g}}) of two large integers is 4190the probability that the GCD (@w{@kbd{k g}}) of two large integers is
4191one turns out to be 4191one turns out to be
4192@texline @math{6/\pi^2}. 4192@texline @math{6/\pi^2}.
4193@infoline @expr{6/pi^2}. 4193@infoline @expr{6/pi^2}.
4194That provides yet another way to estimate @cpi{}.) 4194That provides yet another way to estimate @cpi{}.)
@@ -4488,7 +4488,7 @@ a 60% chance that the result is correct within 0.59 degrees.
4488@cindex Torus, volume of 4488@cindex Torus, volume of
4489(@bullet{}) @strong{Exercise 7.} The volume of a torus (a donut shape) is 4489(@bullet{}) @strong{Exercise 7.} The volume of a torus (a donut shape) is
4490@texline @math{2 \pi^2 R r^2} 4490@texline @math{2 \pi^2 R r^2}
4491@infoline @w{@expr{2 pi^2 R r^2}} 4491@infoline @w{@expr{2 pi^2 R r^2}}
4492where @expr{R} is the radius of the circle that 4492where @expr{R} is the radius of the circle that
4493defines the center of the tube and @expr{r} is the radius of the tube 4493defines the center of the tube and @expr{r} is the radius of the tube
4494itself. Suppose @expr{R} is 20 cm and @expr{r} is 4 cm, each known to 4494itself. Suppose @expr{R} is 20 cm and @expr{r} is 4 cm, each known to
@@ -4569,7 +4569,7 @@ In this last step, Calc has divided by 5 modulo 24; i.e., it has found a
4569new number which, when multiplied by 5 modulo 24, produces the original 4569new number which, when multiplied by 5 modulo 24, produces the original
4570number, 21. If @var{m} is prime and the divisor is not a multiple of 4570number, 21. If @var{m} is prime and the divisor is not a multiple of
4571@var{m}, it is always possible to find such a number. For non-prime 4571@var{m}, it is always possible to find such a number. For non-prime
4572@var{m} like 24, it is only sometimes possible. 4572@var{m} like 24, it is only sometimes possible.
4573 4573
4574@smallexample 4574@smallexample
4575@group 4575@group
@@ -4587,7 +4587,7 @@ that arises in the second one.
4587 4587
4588@cindex Fermat, primality test of 4588@cindex Fermat, primality test of
4589(@bullet{}) @strong{Exercise 10.} A theorem of Pierre de Fermat 4589(@bullet{}) @strong{Exercise 10.} A theorem of Pierre de Fermat
4590says that 4590says that
4591@texline @w{@math{x^{n-1} \bmod n = 1}} 4591@texline @w{@math{x^{n-1} \bmod n = 1}}
4592@infoline @expr{x^(n-1) mod n = 1} 4592@infoline @expr{x^(n-1) mod n = 1}
4593if @expr{n} is a prime number and @expr{x} is an integer less than 4593if @expr{n} is a prime number and @expr{x} is an integer less than
@@ -4615,9 +4615,9 @@ of day on the stack as an HMS/modulo form.
4615This calculation tells me it is six hours and 22 minutes until midnight. 4615This calculation tells me it is six hours and 22 minutes until midnight.
4616 4616
4617(@bullet{}) @strong{Exercise 11.} A rule of thumb is that one year 4617(@bullet{}) @strong{Exercise 11.} A rule of thumb is that one year
4618is about 4618is about
4619@texline @math{\pi \times 10^7} 4619@texline @math{\pi \times 10^7}
4620@infoline @w{@expr{pi * 10^7}} 4620@infoline @w{@expr{pi * 10^7}}
4621seconds. What time will it be that many seconds from right now? 4621seconds. What time will it be that many seconds from right now?
4622@xref{Types Answer 11, 11}. (@bullet{}) 4622@xref{Types Answer 11, 11}. (@bullet{})
4623 4623
@@ -5093,18 +5093,18 @@ One way to do it is again with vector mapping and reduction:
5093@end smallexample 5093@end smallexample
5094 5094
5095(@bullet{}) @strong{Exercise 3.} Find the integral from 1 to @expr{y} 5095(@bullet{}) @strong{Exercise 3.} Find the integral from 1 to @expr{y}
5096of 5096of
5097@texline @math{x \sin \pi x} 5097@texline @math{x \sin \pi x}
5098@infoline @w{@expr{x sin(pi x)}} 5098@infoline @w{@expr{x sin(pi x)}}
5099(where the sine is calculated in radians). Find the values of the 5099(where the sine is calculated in radians). Find the values of the
5100integral for integers @expr{y} from 1 to 5. @xref{Algebra Answer 3, 5100integral for integers @expr{y} from 1 to 5. @xref{Algebra Answer 3,
51013}. (@bullet{}) 51013}. (@bullet{})
5102 5102
5103Calc's integrator can do many simple integrals symbolically, but many 5103Calc's integrator can do many simple integrals symbolically, but many
5104others are beyond its capabilities. Suppose we wish to find the area 5104others are beyond its capabilities. Suppose we wish to find the area
5105under the curve 5105under the curve
5106@texline @math{\sin x \ln x} 5106@texline @math{\sin x \ln x}
5107@infoline @expr{sin(x) ln(x)} 5107@infoline @expr{sin(x) ln(x)}
5108over the same range of @expr{x}. If you entered this formula and typed 5108over the same range of @expr{x}. If you entered this formula and typed
5109@kbd{a i x @key{RET}} (don't bother to try this), Calc would work for a 5109@kbd{a i x @key{RET}} (don't bother to try this), Calc would work for a
5110long time but would be unable to find a solution. In fact, there is no 5110long time but would be unable to find a solution. In fact, there is no
@@ -5242,10 +5242,10 @@ $$ h (f(a) + f(a+h) + f(a+2h) + f(a+3h) + \cdots
5242\afterdisplay 5242\afterdisplay
5243@end tex 5243@end tex
5244 5244
5245Compute the integral from 1 to 2 of 5245Compute the integral from 1 to 2 of
5246@texline @math{\sin x \ln x} 5246@texline @math{\sin x \ln x}
5247@infoline @expr{sin(x) ln(x)} 5247@infoline @expr{sin(x) ln(x)}
5248using Simpson's rule with 10 slices. 5248using Simpson's rule with 10 slices.
5249@xref{Algebra Answer 4, 4}. (@bullet{}) 5249@xref{Algebra Answer 4, 4}. (@bullet{})
5250 5250
5251Calc has a built-in @kbd{a I} command for doing numerical integration. 5251Calc has a built-in @kbd{a I} command for doing numerical integration.
@@ -5396,7 +5396,7 @@ having to retype it.
5396 5396
5397To edit a variable, type @kbd{s e} and the variable name, use regular 5397To edit a variable, type @kbd{s e} and the variable name, use regular
5398Emacs editing commands as necessary, then type @kbd{C-c C-c} to store 5398Emacs editing commands as necessary, then type @kbd{C-c C-c} to store
5399the edited value back into the variable. 5399the edited value back into the variable.
5400You can also use @w{@kbd{s e}} to create a new variable if you wish. 5400You can also use @w{@kbd{s e}} to create a new variable if you wish.
5401 5401
5402Notice that the first time you use each rule, Calc puts up a ``compiling'' 5402Notice that the first time you use each rule, Calc puts up a ``compiling''
@@ -5780,7 +5780,7 @@ in @samp{a + 1} for @samp{x} in the defining formula.
5780@tindex Si 5780@tindex Si
5781(@bullet{}) @strong{Exercise 1.} The ``sine integral'' function 5781(@bullet{}) @strong{Exercise 1.} The ``sine integral'' function
5782@texline @math{{\rm Si}(x)} 5782@texline @math{{\rm Si}(x)}
5783@infoline @expr{Si(x)} 5783@infoline @expr{Si(x)}
5784is defined as the integral of @samp{sin(t)/t} for 5784is defined as the integral of @samp{sin(t)/t} for
5785@expr{t = 0} to @expr{x} in radians. (It was invented because this 5785@expr{t = 0} to @expr{x} in radians. (It was invented because this
5786integral has no solution in terms of basic functions; if you give it 5786integral has no solution in terms of basic functions; if you give it
@@ -5857,9 +5857,9 @@ the following functions:
5857 5857
5858@enumerate 5858@enumerate
5859@item 5859@item
5860Compute 5860Compute
5861@texline @math{\displaystyle{\sin x \over x}}, 5861@texline @math{\displaystyle{\sin x \over x}},
5862@infoline @expr{sin(x) / x}, 5862@infoline @expr{sin(x) / x},
5863where @expr{x} is the number on the top of the stack. 5863where @expr{x} is the number on the top of the stack.
5864 5864
5865@item 5865@item
@@ -5923,15 +5923,15 @@ key if you have one, makes a copy of the number in level 2.)
5923@cindex Golden ratio 5923@cindex Golden ratio
5924@cindex Phi, golden ratio 5924@cindex Phi, golden ratio
5925A fascinating property of the Fibonacci numbers is that the @expr{n}th 5925A fascinating property of the Fibonacci numbers is that the @expr{n}th
5926Fibonacci number can be found directly by computing 5926Fibonacci number can be found directly by computing
5927@texline @math{\phi^n / \sqrt{5}} 5927@texline @math{\phi^n / \sqrt{5}}
5928@infoline @expr{phi^n / sqrt(5)} 5928@infoline @expr{phi^n / sqrt(5)}
5929and then rounding to the nearest integer, where 5929and then rounding to the nearest integer, where
5930@texline @math{\phi} (``phi''), 5930@texline @math{\phi} (``phi''),
5931@infoline @expr{phi}, 5931@infoline @expr{phi},
5932the ``golden ratio,'' is 5932the ``golden ratio,'' is
5933@texline @math{(1 + \sqrt{5}) / 2}. 5933@texline @math{(1 + \sqrt{5}) / 2}.
5934@infoline @expr{(1 + sqrt(5)) / 2}. 5934@infoline @expr{(1 + sqrt(5)) / 2}.
5935(For convenience, this constant is available from the @code{phi} 5935(For convenience, this constant is available from the @code{phi}
5936variable, or the @kbd{I H P} command.) 5936variable, or the @kbd{I H P} command.)
5937 5937
@@ -5946,19 +5946,19 @@ variable, or the @kbd{I H P} command.)
5946 5946
5947@cindex Continued fractions 5947@cindex Continued fractions
5948(@bullet{}) @strong{Exercise 5.} The @dfn{continued fraction} 5948(@bullet{}) @strong{Exercise 5.} The @dfn{continued fraction}
5949representation of 5949representation of
5950@texline @math{\phi} 5950@texline @math{\phi}
5951@infoline @expr{phi} 5951@infoline @expr{phi}
5952is 5952is
5953@texline @math{1 + 1/(1 + 1/(1 + 1/( \ldots )))}. 5953@texline @math{1 + 1/(1 + 1/(1 + 1/( \ldots )))}.
5954@infoline @expr{1 + 1/(1 + 1/(1 + 1/( ...@: )))}. 5954@infoline @expr{1 + 1/(1 + 1/(1 + 1/( ...@: )))}.
5955We can compute an approximate value by carrying this however far 5955We can compute an approximate value by carrying this however far
5956and then replacing the innermost 5956and then replacing the innermost
5957@texline @math{1/( \ldots )} 5957@texline @math{1/( \ldots )}
5958@infoline @expr{1/( ...@: )} 5958@infoline @expr{1/( ...@: )}
5959by 1. Approximate 5959by 1. Approximate
5960@texline @math{\phi} 5960@texline @math{\phi}
5961@infoline @expr{phi} 5961@infoline @expr{phi}
5962using a twenty-term continued fraction. 5962using a twenty-term continued fraction.
5963@xref{Programming Answer 5, 5}. (@bullet{}) 5963@xref{Programming Answer 5, 5}. (@bullet{})
5964 5964
@@ -6056,9 +6056,9 @@ survive past the @kbd{Z '} command.
6056The @dfn{Bernoulli numbers} are a sequence with the interesting 6056The @dfn{Bernoulli numbers} are a sequence with the interesting
6057property that all of the odd Bernoulli numbers are zero, and the 6057property that all of the odd Bernoulli numbers are zero, and the
6058even ones, while difficult to compute, can be roughly approximated 6058even ones, while difficult to compute, can be roughly approximated
6059by the formula 6059by the formula
6060@texline @math{\displaystyle{2 n! \over (2 \pi)^n}}. 6060@texline @math{\displaystyle{2 n! \over (2 \pi)^n}}.
6061@infoline @expr{2 n!@: / (2 pi)^n}. 6061@infoline @expr{2 n!@: / (2 pi)^n}.
6062Let's write a keyboard macro to compute (approximate) Bernoulli numbers. 6062Let's write a keyboard macro to compute (approximate) Bernoulli numbers.
6063(Calc has a command, @kbd{k b}, to compute exact Bernoulli numbers, but 6063(Calc has a command, @kbd{k b}, to compute exact Bernoulli numbers, but
6064this command is very slow for large @expr{n} since the higher Bernoulli 6064this command is very slow for large @expr{n} since the higher Bernoulli
@@ -6166,7 +6166,7 @@ Z` ;; calc-kbd-push (Save local values)
61660 ;; calc digits (Push a zero onto the stack) 61660 ;; calc digits (Push a zero onto the stack)
6167st ;; calc-store-into (Store it in the following variable) 6167st ;; calc-store-into (Store it in the following variable)
61681 ;; calc quick variable (Quick variable q1) 61681 ;; calc quick variable (Quick variable q1)
61691 ;; calc digits (Initial value for the loop) 61691 ;; calc digits (Initial value for the loop)
6170TAB ;; calc-roll-down (Swap initial and final) 6170TAB ;; calc-roll-down (Swap initial and final)
6171Z( ;; calc-kbd-for (Begin the "for" loop) 6171Z( ;; calc-kbd-for (Begin the "for" loop)
6172& ;; calc-inv (Take the reciprocal) 6172& ;; calc-inv (Take the reciprocal)
@@ -6193,10 +6193,10 @@ Press @kbd{C-c C-c} to finish editing and return to the Calculator.
6193 6193
6194The @file{edmacro} package defines a handy @code{read-kbd-macro} command 6194The @file{edmacro} package defines a handy @code{read-kbd-macro} command
6195which reads the current region of the current buffer as a sequence of 6195which reads the current region of the current buffer as a sequence of
6196keystroke names, and defines that sequence on the @kbd{X} 6196keystroke names, and defines that sequence on the @kbd{X}
6197(and @kbd{C-x e}) key. Because this is so useful, Calc puts this 6197(and @kbd{C-x e}) key. Because this is so useful, Calc puts this
6198command on the @kbd{C-x * m} key. Try reading in this macro in the 6198command on the @kbd{C-x * m} key. Try reading in this macro in the
6199following form: Press @kbd{C-@@} (or @kbd{C-@key{SPC}}) at 6199following form: Press @kbd{C-@@} (or @kbd{C-@key{SPC}}) at
6200one end of the text below, then type @kbd{C-x * m} at the other. 6200one end of the text below, then type @kbd{C-x * m} at the other.
6201 6201
6202@example 6202@example
@@ -6230,12 +6230,12 @@ $$ x_{\rm new} = x - {f(x) \over f^{\prime}(x)} $$
6230where @expr{f'(x)} is the derivative of @expr{f}. The @expr{x} 6230where @expr{f'(x)} is the derivative of @expr{f}. The @expr{x}
6231values will quickly converge to a solution, i.e., eventually 6231values will quickly converge to a solution, i.e., eventually
6232@texline @math{x_{\rm new}} 6232@texline @math{x_{\rm new}}
6233@infoline @expr{new_x} 6233@infoline @expr{new_x}
6234and @expr{x} will be equal to within the limits 6234and @expr{x} will be equal to within the limits
6235of the current precision. Write a program which takes a formula 6235of the current precision. Write a program which takes a formula
6236involving the variable @expr{x}, and an initial guess @expr{x_0}, 6236involving the variable @expr{x}, and an initial guess @expr{x_0},
6237on the stack, and produces a value of @expr{x} for which the formula 6237on the stack, and produces a value of @expr{x} for which the formula
6238is zero. Use it to find a solution of 6238is zero. Use it to find a solution of
6239@texline @math{\sin(\cos x) = 0.5} 6239@texline @math{\sin(\cos x) = 0.5}
6240@infoline @expr{sin(cos(x)) = 0.5} 6240@infoline @expr{sin(cos(x)) = 0.5}
6241near @expr{x = 4.5}. (Use angles measured in radians.) Note that 6241near @expr{x = 4.5}. (Use angles measured in radians.) Note that
@@ -6245,12 +6245,12 @@ method when it is able. @xref{Programming Answer 8, 8}. (@bullet{})
6245@cindex Digamma function 6245@cindex Digamma function
6246@cindex Gamma constant, Euler's 6246@cindex Gamma constant, Euler's
6247@cindex Euler's gamma constant 6247@cindex Euler's gamma constant
6248(@bullet{}) @strong{Exercise 9.} The @dfn{digamma} function 6248(@bullet{}) @strong{Exercise 9.} The @dfn{digamma} function
6249@texline @math{\psi(z) (``psi'')} 6249@texline @math{\psi(z) (``psi'')}
6250@infoline @expr{psi(z)} 6250@infoline @expr{psi(z)}
6251is defined as the derivative of 6251is defined as the derivative of
6252@texline @math{\ln \Gamma(z)}. 6252@texline @math{\ln \Gamma(z)}.
6253@infoline @expr{ln(gamma(z))}. 6253@infoline @expr{ln(gamma(z))}.
6254For large values of @expr{z}, it can be approximated by the infinite sum 6254For large values of @expr{z}, it can be approximated by the infinite sum
6255 6255
6256@ifnottex 6256@ifnottex
@@ -6267,9 +6267,9 @@ $$
6267@end tex 6267@end tex
6268 6268
6269@noindent 6269@noindent
6270where 6270where
6271@texline @math{\sum} 6271@texline @math{\sum}
6272@infoline @expr{sum} 6272@infoline @expr{sum}
6273represents the sum over @expr{n} from 1 to infinity 6273represents the sum over @expr{n} from 1 to infinity
6274(or to some limit high enough to give the desired accuracy), and 6274(or to some limit high enough to give the desired accuracy), and
6275the @code{bern} function produces (exact) Bernoulli numbers. 6275the @code{bern} function produces (exact) Bernoulli numbers.
@@ -6277,27 +6277,27 @@ While this sum is not guaranteed to converge, in practice it is safe.
6277An interesting mathematical constant is Euler's gamma, which is equal 6277An interesting mathematical constant is Euler's gamma, which is equal
6278to about 0.5772. One way to compute it is by the formula, 6278to about 0.5772. One way to compute it is by the formula,
6279@texline @math{\gamma = -\psi(1)}. 6279@texline @math{\gamma = -\psi(1)}.
6280@infoline @expr{gamma = -psi(1)}. 6280@infoline @expr{gamma = -psi(1)}.
6281Unfortunately, 1 isn't a large enough argument 6281Unfortunately, 1 isn't a large enough argument
6282for the above formula to work (5 is a much safer value for @expr{z}). 6282for the above formula to work (5 is a much safer value for @expr{z}).
6283Fortunately, we can compute 6283Fortunately, we can compute
6284@texline @math{\psi(1)} 6284@texline @math{\psi(1)}
6285@infoline @expr{psi(1)} 6285@infoline @expr{psi(1)}
6286from 6286from
6287@texline @math{\psi(5)} 6287@texline @math{\psi(5)}
6288@infoline @expr{psi(5)} 6288@infoline @expr{psi(5)}
6289using the recurrence 6289using the recurrence
6290@texline @math{\psi(z+1) = \psi(z) + {1 \over z}}. 6290@texline @math{\psi(z+1) = \psi(z) + {1 \over z}}.
6291@infoline @expr{psi(z+1) = psi(z) + 1/z}. 6291@infoline @expr{psi(z+1) = psi(z) + 1/z}.
6292Your task: Develop a program to compute 6292Your task: Develop a program to compute
6293@texline @math{\psi(z)}; 6293@texline @math{\psi(z)};
6294@infoline @expr{psi(z)}; 6294@infoline @expr{psi(z)};
6295it should ``pump up'' @expr{z} 6295it should ``pump up'' @expr{z}
6296if necessary to be greater than 5, then use the above summation 6296if necessary to be greater than 5, then use the above summation
6297formula. Use looping commands to compute the sum. Use your function 6297formula. Use looping commands to compute the sum. Use your function
6298to compute 6298to compute
6299@texline @math{\gamma} 6299@texline @math{\gamma}
6300@infoline @expr{gamma} 6300@infoline @expr{gamma}
6301to twelve decimal places. (Calc has a built-in command 6301to twelve decimal places. (Calc has a built-in command
6302for Euler's constant, @kbd{I P}, which you can use to check your answer.) 6302for Euler's constant, @kbd{I P}, which you can use to check your answer.)
6303@xref{Programming Answer 9, 9}. (@bullet{}) 6303@xref{Programming Answer 9, 9}. (@bullet{})
@@ -6470,7 +6470,7 @@ This section includes answers to all the exercises in the Calc tutorial.
6470@noindent 6470@noindent
6471@kbd{1 @key{RET} 2 @key{RET} 3 @key{RET} 4 + * -} 6471@kbd{1 @key{RET} 2 @key{RET} 3 @key{RET} 4 + * -}
6472 6472
6473The result is 6473The result is
6474@texline @math{1 - (2 \times (3 + 4)) = -13}. 6474@texline @math{1 - (2 \times (3 + 4)) = -13}.
6475@infoline @expr{1 - (2 * (3 + 4)) = -13}. 6475@infoline @expr{1 - (2 * (3 + 4)) = -13}.
6476 6476
@@ -6481,9 +6481,9 @@ The result is
6481@texline @math{2\times4 + 7\times9.5 + {5\over4} = 75.75} 6481@texline @math{2\times4 + 7\times9.5 + {5\over4} = 75.75}
6482@infoline @expr{2*4 + 7*9.5 + 5/4 = 75.75} 6482@infoline @expr{2*4 + 7*9.5 + 5/4 = 75.75}
6483 6483
6484After computing the intermediate term 6484After computing the intermediate term
6485@texline @math{2\times4 = 8}, 6485@texline @math{2\times4 = 8},
6486@infoline @expr{2*4 = 8}, 6486@infoline @expr{2*4 = 8},
6487you can leave that result on the stack while you compute the second 6487you can leave that result on the stack while you compute the second
6488term. With both of these results waiting on the stack you can then 6488term. With both of these results waiting on the stack you can then
6489compute the final term, then press @kbd{+ +} to add everything up. 6489compute the final term, then press @kbd{+ +} to add everything up.
@@ -6790,7 +6790,7 @@ Dividing two integers that are larger than the current precision may
6790give a floating-point result that is inaccurate even when rounded 6790give a floating-point result that is inaccurate even when rounded
6791down to an integer. Consider @expr{123456789 / 2} when the current 6791down to an integer. Consider @expr{123456789 / 2} when the current
6792precision is 6 digits. The true answer is @expr{61728394.5}, but 6792precision is 6 digits. The true answer is @expr{61728394.5}, but
6793with a precision of 6 this will be rounded to 6793with a precision of 6 this will be rounded to
6794@texline @math{12345700.0/2.0 = 61728500.0}. 6794@texline @math{12345700.0/2.0 = 61728500.0}.
6795@infoline @expr{12345700.@: / 2.@: = 61728500.}. 6795@infoline @expr{12345700.@: / 2.@: = 61728500.}.
6796The result, when converted to an integer, will be off by 106. 6796The result, when converted to an integer, will be off by 106.
@@ -6900,18 +6900,18 @@ Type @kbd{d N} to return to Normal display mode afterwards.
6900@subsection Matrix Tutorial Exercise 3 6900@subsection Matrix Tutorial Exercise 3
6901 6901
6902@noindent 6902@noindent
6903To solve 6903To solve
6904@texline @math{A^T A \, X = A^T B}, 6904@texline @math{A^T A \, X = A^T B},
6905@infoline @expr{trn(A) * A * X = trn(A) * B}, 6905@infoline @expr{trn(A) * A * X = trn(A) * B},
6906first we compute 6906first we compute
6907@texline @math{A' = A^T A} 6907@texline @math{A' = A^T A}
6908@infoline @expr{A2 = trn(A) * A} 6908@infoline @expr{A2 = trn(A) * A}
6909and 6909and
6910@texline @math{B' = A^T B}; 6910@texline @math{B' = A^T B};
6911@infoline @expr{B2 = trn(A) * B}; 6911@infoline @expr{B2 = trn(A) * B};
6912now, we have a system 6912now, we have a system
6913@texline @math{A' X = B'} 6913@texline @math{A' X = B'}
6914@infoline @expr{A2 * X = B2} 6914@infoline @expr{A2 * X = B2}
6915which we can solve using Calc's @samp{/} command. 6915which we can solve using Calc's @samp{/} command.
6916 6916
6917@ifnottex 6917@ifnottex
@@ -6942,7 +6942,7 @@ $$
6942The first step is to enter the coefficient matrix. We'll store it in 6942The first step is to enter the coefficient matrix. We'll store it in
6943quick variable number 7 for later reference. Next, we compute the 6943quick variable number 7 for later reference. Next, we compute the
6944@texline @math{B'} 6944@texline @math{B'}
6945@infoline @expr{B2} 6945@infoline @expr{B2}
6946vector. 6946vector.
6947 6947
6948@smallexample 6948@smallexample
@@ -6958,9 +6958,9 @@ vector.
6958@end smallexample 6958@end smallexample
6959 6959
6960@noindent 6960@noindent
6961Now we compute the matrix 6961Now we compute the matrix
6962@texline @math{A'} 6962@texline @math{A'}
6963@infoline @expr{A2} 6963@infoline @expr{A2}
6964and divide. 6964and divide.
6965 6965
6966@smallexample 6966@smallexample
@@ -6979,16 +6979,16 @@ and divide.
6979(The actual computed answer will be slightly inexact due to 6979(The actual computed answer will be slightly inexact due to
6980round-off error.) 6980round-off error.)
6981 6981
6982Notice that the answers are similar to those for the 6982Notice that the answers are similar to those for the
6983@texline @math{3\times3} 6983@texline @math{3\times3}
6984@infoline 3x3 6984@infoline 3x3
6985system solved in the text. That's because the fourth equation that was 6985system solved in the text. That's because the fourth equation that was
6986added to the system is almost identical to the first one multiplied 6986added to the system is almost identical to the first one multiplied
6987by two. (If it were identical, we would have gotten the exact same 6987by two. (If it were identical, we would have gotten the exact same
6988answer since the 6988answer since the
6989@texline @math{4\times3} 6989@texline @math{4\times3}
6990@infoline 4x3 6990@infoline 4x3
6991system would be equivalent to the original 6991system would be equivalent to the original
6992@texline @math{3\times3} 6992@texline @math{3\times3}
6993@infoline 3x3 6993@infoline 3x3
6994system.) 6994system.)
@@ -7064,7 +7064,7 @@ $$ m \times x + b \times 1 = y $$
7064\afterdisplay 7064\afterdisplay
7065@end tex 7065@end tex
7066 7066
7067Thus we want a 7067Thus we want a
7068@texline @math{19\times2} 7068@texline @math{19\times2}
7069@infoline 19x2 7069@infoline 19x2
7070matrix with our @expr{x} vector as one column and 7070matrix with our @expr{x} vector as one column and
@@ -7083,12 +7083,12 @@ we combine the two columns to form our @expr{A} matrix.
7083@end smallexample 7083@end smallexample
7084 7084
7085@noindent 7085@noindent
7086Now we compute 7086Now we compute
7087@texline @math{A^T y} 7087@texline @math{A^T y}
7088@infoline @expr{trn(A) * y} 7088@infoline @expr{trn(A) * y}
7089and 7089and
7090@texline @math{A^T A} 7090@texline @math{A^T A}
7091@infoline @expr{trn(A) * A} 7091@infoline @expr{trn(A) * A}
7092and divide. 7092and divide.
7093 7093
7094@smallexample 7094@smallexample
@@ -7114,9 +7114,9 @@ and divide.
7114@end group 7114@end group
7115@end smallexample 7115@end smallexample
7116 7116
7117Since we were solving equations of the form 7117Since we were solving equations of the form
7118@texline @math{m \times x + b \times 1 = y}, 7118@texline @math{m \times x + b \times 1 = y},
7119@infoline @expr{m*x + b*1 = y}, 7119@infoline @expr{m*x + b*1 = y},
7120these numbers should be @expr{m} and @expr{b}, respectively. Sure 7120these numbers should be @expr{m} and @expr{b}, respectively. Sure
7121enough, they agree exactly with the result computed using @kbd{V M} and 7121enough, they agree exactly with the result computed using @kbd{V M} and
7122@kbd{V R}! 7122@kbd{V R}!
@@ -7177,9 +7177,9 @@ then raise the number to that power.)
7177@subsection List Tutorial Exercise 4 7177@subsection List Tutorial Exercise 4
7178 7178
7179@noindent 7179@noindent
7180A number @expr{j} is a divisor of @expr{n} if 7180A number @expr{j} is a divisor of @expr{n} if
7181@texline @math{n \mathbin{\hbox{\code{\%}}} j = 0}. 7181@texline @math{n \mathbin{\hbox{\code{\%}}} j = 0}.
7182@infoline @samp{n % j = 0}. 7182@infoline @samp{n % j = 0}.
7183The first step is to get a vector that identifies the divisors. 7183The first step is to get a vector that identifies the divisors.
7184 7184
7185@smallexample 7185@smallexample
@@ -7248,9 +7248,9 @@ so that the mapping operation works; no prime factor will ever be
7248zero, so adding zeros on the left and right is safe. From then on 7248zero, so adding zeros on the left and right is safe. From then on
7249the job is pretty straightforward. 7249the job is pretty straightforward.
7250 7250
7251Incidentally, Calc provides the 7251Incidentally, Calc provides the
7252@texline @dfn{M@"obius} @math{\mu} 7252@texline @dfn{M@"obius} @math{\mu}
7253@infoline @dfn{Moebius mu} 7253@infoline @dfn{Moebius mu}
7254function which is zero if and only if its argument is square-free. It 7254function which is zero if and only if its argument is square-free. It
7255would be a much more convenient way to do the above test in practice. 7255would be a much more convenient way to do the above test in practice.
7256 7256
@@ -7282,7 +7282,7 @@ exercise and type @kbd{1 -} to subtract one from all the elements.
7282The numbers down the lefthand edge of the list we desire are called 7282The numbers down the lefthand edge of the list we desire are called
7283the ``triangular numbers'' (now you know why!). The @expr{n}th 7283the ``triangular numbers'' (now you know why!). The @expr{n}th
7284triangular number is the sum of the integers from 1 to @expr{n}, and 7284triangular number is the sum of the integers from 1 to @expr{n}, and
7285can be computed directly by the formula 7285can be computed directly by the formula
7286@texline @math{n (n+1) \over 2}. 7286@texline @math{n (n+1) \over 2}.
7287@infoline @expr{n * (n+1) / 2}. 7287@infoline @expr{n * (n+1) / 2}.
7288 7288
@@ -7378,7 +7378,7 @@ A way to isolate the maximum value is to compute the maximum using
7378 7378
7379@noindent 7379@noindent
7380It's a good idea to verify, as in the last step above, that only 7380It's a good idea to verify, as in the last step above, that only
7381one value is equal to the maximum. (After all, a plot of 7381one value is equal to the maximum. (After all, a plot of
7382@texline @math{\sin x} 7382@texline @math{\sin x}
7383@infoline @expr{sin(x)} 7383@infoline @expr{sin(x)}
7384might have many points all equal to the maximum value, 1.) 7384might have many points all equal to the maximum value, 1.)
@@ -7650,12 +7650,12 @@ return to full-sized display of vectors.
7650This problem can be made a lot easier by taking advantage of some 7650This problem can be made a lot easier by taking advantage of some
7651symmetries. First of all, after some thought it's clear that the 7651symmetries. First of all, after some thought it's clear that the
7652@expr{y} axis can be ignored altogether. Just pick a random @expr{x} 7652@expr{y} axis can be ignored altogether. Just pick a random @expr{x}
7653component for one end of the match, pick a random direction 7653component for one end of the match, pick a random direction
7654@texline @math{\theta}, 7654@texline @math{\theta},
7655@infoline @expr{theta}, 7655@infoline @expr{theta},
7656and see if @expr{x} and 7656and see if @expr{x} and
7657@texline @math{x + \cos \theta} 7657@texline @math{x + \cos \theta}
7658@infoline @expr{x + cos(theta)} 7658@infoline @expr{x + cos(theta)}
7659(which is the @expr{x} coordinate of the other endpoint) cross a line. 7659(which is the @expr{x} coordinate of the other endpoint) cross a line.
7660The lines are at integer coordinates, so this happens when the two 7660The lines are at integer coordinates, so this happens when the two
7661numbers surround an integer. 7661numbers surround an integer.
@@ -7670,9 +7670,9 @@ In fact, since the field of lines is infinite we can choose the
7670coordinates 0 and 1 for the lines on either side of the leftmost 7670coordinates 0 and 1 for the lines on either side of the leftmost
7671endpoint. The rightmost endpoint will be between 0 and 1 if the 7671endpoint. The rightmost endpoint will be between 0 and 1 if the
7672match does not cross a line, or between 1 and 2 if it does. So: 7672match does not cross a line, or between 1 and 2 if it does. So:
7673Pick random @expr{x} and 7673Pick random @expr{x} and
7674@texline @math{\theta}, 7674@texline @math{\theta},
7675@infoline @expr{theta}, 7675@infoline @expr{theta},
7676compute 7676compute
7677@texline @math{x + \cos \theta}, 7677@texline @math{x + \cos \theta},
7678@infoline @expr{x + cos(theta)}, 7678@infoline @expr{x + cos(theta)},
@@ -8997,7 +8997,7 @@ Each of these functions can be computed using the stack, or using
8997algebraic entry, whichever way you prefer: 8997algebraic entry, whichever way you prefer:
8998 8998
8999@noindent 8999@noindent
9000Computing 9000Computing
9001@texline @math{\displaystyle{\sin x \over x}}: 9001@texline @math{\displaystyle{\sin x \over x}}:
9002@infoline @expr{sin(x) / x}: 9002@infoline @expr{sin(x) / x}:
9003 9003
@@ -9068,7 +9068,7 @@ C-x ( ' [0, 1; 1, 1] ^ ($-1) * [1, 1] @key{RET} v u @key{DEL} C-x )
9068 9068
9069@noindent 9069@noindent
9070This program is quite efficient because Calc knows how to raise a 9070This program is quite efficient because Calc knows how to raise a
9071matrix (or other value) to the power @expr{n} in only 9071matrix (or other value) to the power @expr{n} in only
9072@texline @math{\log_2 n} 9072@texline @math{\log_2 n}
9073@infoline @expr{log(n,2)} 9073@infoline @expr{log(n,2)}
9074steps. For example, this program can compute the 1000th Fibonacci 9074steps. For example, this program can compute the 1000th Fibonacci
@@ -9122,7 +9122,7 @@ harmonic number is 4.02.
9122 9122
9123@noindent 9123@noindent
9124The first step is to compute the derivative @expr{f'(x)} and thus 9124The first step is to compute the derivative @expr{f'(x)} and thus
9125the formula 9125the formula
9126@texline @math{\displaystyle{x - {f(x) \over f'(x)}}}. 9126@texline @math{\displaystyle{x - {f(x) \over f'(x)}}}.
9127@infoline @expr{x - f(x)/f'(x)}. 9127@infoline @expr{x - f(x)/f'(x)}.
9128 9128
@@ -9239,12 +9239,12 @@ method (among others) to look for numerical solutions to any equation.
9239@noindent 9239@noindent
9240The first step is to adjust @expr{z} to be greater than 5. A simple 9240The first step is to adjust @expr{z} to be greater than 5. A simple
9241``for'' loop will do the job here. If @expr{z} is less than 5, we 9241``for'' loop will do the job here. If @expr{z} is less than 5, we
9242reduce the problem using 9242reduce the problem using
9243@texline @math{\psi(z) = \psi(z+1) - 1/z}. 9243@texline @math{\psi(z) = \psi(z+1) - 1/z}.
9244@infoline @expr{psi(z) = psi(z+1) - 1/z}. We go 9244@infoline @expr{psi(z) = psi(z+1) - 1/z}. We go
9245on to compute 9245on to compute
9246@texline @math{\psi(z+1)}, 9246@texline @math{\psi(z+1)},
9247@infoline @expr{psi(z+1)}, 9247@infoline @expr{psi(z+1)},
9248and remember to add back a factor of @expr{-1/z} when we're done. This 9248and remember to add back a factor of @expr{-1/z} when we're done. This
9249step is repeated until @expr{z > 5}. 9249step is repeated until @expr{z > 5}.
9250 9250
@@ -9283,7 +9283,7 @@ are exactly equal, not just equal to within the current precision.)
9283@end group 9283@end group
9284@end smallexample 9284@end smallexample
9285 9285
9286Now we compute the initial part of the sum: 9286Now we compute the initial part of the sum:
9287@texline @math{\ln z - {1 \over 2z}} 9287@texline @math{\ln z - {1 \over 2z}}
9288@infoline @expr{ln(z) - 1/2z} 9288@infoline @expr{ln(z) - 1/2z}
9289minus the adjustment factor. 9289minus the adjustment factor.
@@ -9326,9 +9326,9 @@ up the value of @expr{2 n}. (Calc does have a summation command,
9326@end group 9326@end group
9327@end smallexample 9327@end smallexample
9328 9328
9329This is the value of 9329This is the value of
9330@texline @math{-\gamma}, 9330@texline @math{-\gamma},
9331@infoline @expr{- gamma}, 9331@infoline @expr{- gamma},
9332with a slight bit of roundoff error. To get a full 12 digits, let's use 9332with a slight bit of roundoff error. To get a full 12 digits, let's use
9333a higher precision: 9333a higher precision:
9334 9334
@@ -9361,9 +9361,9 @@ C-x )
9361 9361
9362@noindent 9362@noindent
9363Taking the derivative of a term of the form @expr{x^n} will produce 9363Taking the derivative of a term of the form @expr{x^n} will produce
9364a term like 9364a term like
9365@texline @math{n x^{n-1}}. 9365@texline @math{n x^{n-1}}.
9366@infoline @expr{n x^(n-1)}. 9366@infoline @expr{n x^(n-1)}.
9367Taking the derivative of a constant 9367Taking the derivative of a constant
9368produces zero. From this it is easy to see that the @expr{n}th 9368produces zero. From this it is easy to see that the @expr{n}th
9369derivative of a polynomial, evaluated at @expr{x = 0}, will equal the 9369derivative of a polynomial, evaluated at @expr{x = 0}, will equal the
@@ -9652,7 +9652,7 @@ still exists and is updated silently. @xref{Trail Commands}.
9652@mindex @null 9652@mindex @null
9653@end ignore 9653@end ignore
9654In most installations, the @kbd{C-x * c} key sequence is a more 9654In most installations, the @kbd{C-x * c} key sequence is a more
9655convenient way to start the Calculator. Also, @kbd{C-x * *} 9655convenient way to start the Calculator. Also, @kbd{C-x * *}
9656is a synonym for @kbd{C-x * c} unless you last used Calc 9656is a synonym for @kbd{C-x * c} unless you last used Calc
9657in its Keypad mode. 9657in its Keypad mode.
9658 9658
@@ -9908,9 +9908,9 @@ additional notes from the summary that apply to this command.
9908The @kbd{h f} (@code{calc-describe-function}) command looks up an 9908The @kbd{h f} (@code{calc-describe-function}) command looks up an
9909algebraic function or a command name in the Calc manual. Enter an 9909algebraic function or a command name in the Calc manual. Enter an
9910algebraic function name to look up that function in the Function 9910algebraic function name to look up that function in the Function
9911Index or enter a command name beginning with @samp{calc-} to look it 9911Index or enter a command name beginning with @samp{calc-} to look it
9912up in the Command Index. This command will also look up operator 9912up in the Command Index. This command will also look up operator
9913symbols that can appear in algebraic formulas, like @samp{%} and 9913symbols that can appear in algebraic formulas, like @samp{%} and
9914@samp{=>}. 9914@samp{=>}.
9915 9915
9916@kindex h v 9916@kindex h v
@@ -10038,7 +10038,7 @@ During numeric entry, the only editing key available is @key{DEL}.
10038@cindex Formulas, entering 10038@cindex Formulas, entering
10039The @kbd{'} (@code{calc-algebraic-entry}) command can be used to enter 10039The @kbd{'} (@code{calc-algebraic-entry}) command can be used to enter
10040calculations in algebraic form. This is accomplished by typing the 10040calculations in algebraic form. This is accomplished by typing the
10041apostrophe key, ', followed by the expression in standard format: 10041apostrophe key, ', followed by the expression in standard format:
10042 10042
10043@example 10043@example
10044' 2+3*4 @key{RET}. 10044' 2+3*4 @key{RET}.
@@ -10047,7 +10047,7 @@ apostrophe key, ', followed by the expression in standard format:
10047@noindent 10047@noindent
10048This will compute 10048This will compute
10049@texline @math{2+(3\times4) = 14} 10049@texline @math{2+(3\times4) = 14}
10050@infoline @expr{2+(3*4) = 14} 10050@infoline @expr{2+(3*4) = 14}
10051and push it on the stack. If you wish you can 10051and push it on the stack. If you wish you can
10052ignore the RPN aspect of Calc altogether and simply enter algebraic 10052ignore the RPN aspect of Calc altogether and simply enter algebraic
10053expressions in this way. You may want to use @key{DEL} every so often to 10053expressions in this way. You may want to use @key{DEL} every so often to
@@ -10453,9 +10453,9 @@ is greater than this, it will recompute @cpi{} using a series
10453approximation. This value will not need to be recomputed ever again 10453approximation. This value will not need to be recomputed ever again
10454unless you raise the precision still further. Many operations such as 10454unless you raise the precision still further. Many operations such as
10455logarithms and sines make use of similarly cached values such as 10455logarithms and sines make use of similarly cached values such as
10456@cpiover{4} and 10456@cpiover{4} and
10457@texline @math{\ln 2}. 10457@texline @math{\ln 2}.
10458@infoline @expr{ln(2)}. 10458@infoline @expr{ln(2)}.
10459The visible effect of caching is that 10459The visible effect of caching is that
10460high-precision computations may seem to do extra work the first time. 10460high-precision computations may seem to do extra work the first time.
10461Other things cached include powers of two (for the binary arithmetic 10461Other things cached include powers of two (for the binary arithmetic
@@ -10612,10 +10612,10 @@ form). The numerator and denominator always use the same radix.
10612A floating-point number or @dfn{float} is a number stored in scientific 10612A floating-point number or @dfn{float} is a number stored in scientific
10613notation. The number of significant digits in the fractional part is 10613notation. The number of significant digits in the fractional part is
10614governed by the current floating precision (@pxref{Precision}). The 10614governed by the current floating precision (@pxref{Precision}). The
10615range of acceptable values is from 10615range of acceptable values is from
10616@texline @math{10^{-3999999}} 10616@texline @math{10^{-3999999}}
10617@infoline @expr{10^-3999999} 10617@infoline @expr{10^-3999999}
10618(inclusive) to 10618(inclusive) to
10619@texline @math{10^{4000000}} 10619@texline @math{10^{4000000}}
10620@infoline @expr{10^4000000} 10620@infoline @expr{10^4000000}
10621(exclusive), plus the corresponding negative values and zero. 10621(exclusive), plus the corresponding negative values and zero.
@@ -10666,7 +10666,7 @@ and displayed in any radix just like integers and fractions. Since a
10666float that is entered in a radix other that 10 will be converted to 10666float that is entered in a radix other that 10 will be converted to
10667decimal, the number that Calc stores may not be exactly the number that 10667decimal, the number that Calc stores may not be exactly the number that
10668was entered, it will be the closest decimal approximation given the 10668was entered, it will be the closest decimal approximation given the
10669current precison. The notation @samp{@var{radix}#@var{ddd}.@var{ddd}} 10669current precision. The notation @samp{@var{radix}#@var{ddd}.@var{ddd}}
10670is a floating-point number whose digits are in the specified radix. 10670is a floating-point number whose digits are in the specified radix.
10671Note that the @samp{.} is more aptly referred to as a ``radix point'' 10671Note that the @samp{.} is more aptly referred to as a ``radix point''
10672than as a decimal point in this case. The number @samp{8#123.4567} is 10672than as a decimal point in this case. The number @samp{8#123.4567} is
@@ -10690,18 +10690,18 @@ polar. The default format is rectangular, displayed in the form
10690Rectangular complex numbers can also be displayed in @samp{@var{a}+@var{b}i} 10690Rectangular complex numbers can also be displayed in @samp{@var{a}+@var{b}i}
10691notation; @pxref{Complex Formats}. 10691notation; @pxref{Complex Formats}.
10692 10692
10693Polar complex numbers are displayed in the form 10693Polar complex numbers are displayed in the form
10694@texline `@tfn{(}@var{r}@tfn{;}@math{\theta}@tfn{)}' 10694@texline `@tfn{(}@var{r}@tfn{;}@math{\theta}@tfn{)}'
10695@infoline `@tfn{(}@var{r}@tfn{;}@var{theta}@tfn{)}' 10695@infoline `@tfn{(}@var{r}@tfn{;}@var{theta}@tfn{)}'
10696where @var{r} is the nonnegative magnitude and 10696where @var{r} is the nonnegative magnitude and
10697@texline @math{\theta} 10697@texline @math{\theta}
10698@infoline @var{theta} 10698@infoline @var{theta}
10699is the argument or phase angle. The range of 10699is the argument or phase angle. The range of
10700@texline @math{\theta} 10700@texline @math{\theta}
10701@infoline @var{theta} 10701@infoline @var{theta}
10702depends on the current angular mode (@pxref{Angular Modes}); it is 10702depends on the current angular mode (@pxref{Angular Modes}); it is
10703generally between @mathit{-180} and @mathit{+180} degrees or the equivalent range 10703generally between @mathit{-180} and @mathit{+180} degrees or the equivalent range
10704in radians. 10704in radians.
10705 10705
10706Complex numbers are entered in stages using incomplete objects. 10706Complex numbers are entered in stages using incomplete objects.
10707@xref{Incomplete Objects}. 10707@xref{Incomplete Objects}.
@@ -10742,9 +10742,9 @@ really mean is that @expr{1 / x}, as @expr{x} becomes larger and
10742larger, becomes arbitrarily close to zero. So you can imagine 10742larger, becomes arbitrarily close to zero. So you can imagine
10743that if @expr{x} got ``all the way to infinity,'' then @expr{1 / x} 10743that if @expr{x} got ``all the way to infinity,'' then @expr{1 / x}
10744would go all the way to zero. Similarly, when they say that 10744would go all the way to zero. Similarly, when they say that
10745@samp{exp(inf) = inf}, they mean that 10745@samp{exp(inf) = inf}, they mean that
10746@texline @math{e^x} 10746@texline @math{e^x}
10747@infoline @expr{exp(x)} 10747@infoline @expr{exp(x)}
10748grows without bound as @expr{x} grows. The symbol @samp{-inf} likewise 10748grows without bound as @expr{x} grows. The symbol @samp{-inf} likewise
10749stands for an infinitely negative real value; for example, we say that 10749stands for an infinitely negative real value; for example, we say that
10750@samp{exp(-inf) = 0}. You can have an infinity pointing in any 10750@samp{exp(-inf) = 0}. You can have an infinity pointing in any
@@ -10839,7 +10839,7 @@ of its elements.
10839@end ignore 10839@end ignore
10840@tindex vec 10840@tindex vec
10841Algebraic functions for building vectors include @samp{vec(a, b, c)} 10841Algebraic functions for building vectors include @samp{vec(a, b, c)}
10842to build @samp{[a, b, c]}, @samp{cvec(a, n, m)} to build an 10842to build @samp{[a, b, c]}, @samp{cvec(a, n, m)} to build an
10843@texline @math{n\times m} 10843@texline @math{n\times m}
10844@infoline @var{n}x@var{m} 10844@infoline @var{n}x@var{m}
10845matrix of @samp{a}s, and @samp{index(n)} to build a vector of integers 10845matrix of @samp{a}s, and @samp{index(n)} to build a vector of integers
@@ -11184,9 +11184,9 @@ there is no solution to this equation (which can happen only when
11184division is left in symbolic form. Other operations, such as square 11184division is left in symbolic form. Other operations, such as square
11185roots, are not yet supported for modulo forms. (Note that, although 11185roots, are not yet supported for modulo forms. (Note that, although
11186@w{`@tfn{(}@var{a} @tfn{mod} @var{M}@tfn{)^.5}'} will compute a ``modulo square root'' 11186@w{`@tfn{(}@var{a} @tfn{mod} @var{M}@tfn{)^.5}'} will compute a ``modulo square root''
11187in the sense of reducing 11187in the sense of reducing
11188@texline @math{\sqrt a} 11188@texline @math{\sqrt a}
11189@infoline @expr{sqrt(a)} 11189@infoline @expr{sqrt(a)}
11190modulo @expr{M}, this is not a useful definition from the 11190modulo @expr{M}, this is not a useful definition from the
11191number-theoretical point of view.) 11191number-theoretical point of view.)
11192 11192
@@ -11220,11 +11220,11 @@ The algebraic function @samp{makemod(a, m)} builds the modulo form
11220@cindex Standard deviations 11220@cindex Standard deviations
11221An @dfn{error form} is a number with an associated standard 11221An @dfn{error form} is a number with an associated standard
11222deviation, as in @samp{2.3 +/- 0.12}. The notation 11222deviation, as in @samp{2.3 +/- 0.12}. The notation
11223@texline `@var{x} @tfn{+/-} @math{\sigma}' 11223@texline `@var{x} @tfn{+/-} @math{\sigma}'
11224@infoline `@var{x} @tfn{+/-} sigma' 11224@infoline `@var{x} @tfn{+/-} sigma'
11225stands for an uncertain value which follows 11225stands for an uncertain value which follows
11226a normal or Gaussian distribution of mean @expr{x} and standard 11226a normal or Gaussian distribution of mean @expr{x} and standard
11227deviation or ``error'' 11227deviation or ``error''
11228@texline @math{\sigma}. 11228@texline @math{\sigma}.
11229@infoline @expr{sigma}. 11229@infoline @expr{sigma}.
11230Both the mean and the error can be either numbers or 11230Both the mean and the error can be either numbers or
@@ -11235,7 +11235,7 @@ regular number by the Calculator.
11235 11235
11236All arithmetic and transcendental functions accept error forms as input. 11236All arithmetic and transcendental functions accept error forms as input.
11237Operations on the mean-value part work just like operations on regular 11237Operations on the mean-value part work just like operations on regular
11238numbers. The error part for any function @expr{f(x)} (such as 11238numbers. The error part for any function @expr{f(x)} (such as
11239@texline @math{\sin x} 11239@texline @math{\sin x}
11240@infoline @expr{sin(x)}) 11240@infoline @expr{sin(x)})
11241is defined by the error of @expr{x} times the derivative of @expr{f} 11241is defined by the error of @expr{x} times the derivative of @expr{f}
@@ -11267,35 +11267,35 @@ Consult a good text on error analysis for a discussion of the proper use
11267of standard deviations. Actual errors often are neither Gaussian-distributed 11267of standard deviations. Actual errors often are neither Gaussian-distributed
11268nor uncorrelated, and the above formulas are valid only when errors 11268nor uncorrelated, and the above formulas are valid only when errors
11269are small. As an example, the error arising from 11269are small. As an example, the error arising from
11270@texline `@tfn{sin(}@var{x} @tfn{+/-} @math{\sigma}@tfn{)}' 11270@texline `@tfn{sin(}@var{x} @tfn{+/-} @math{\sigma}@tfn{)}'
11271@infoline `@tfn{sin(}@var{x} @tfn{+/-} @var{sigma}@tfn{)}' 11271@infoline `@tfn{sin(}@var{x} @tfn{+/-} @var{sigma}@tfn{)}'
11272is 11272is
11273@texline `@math{\sigma} @tfn{abs(cos(}@var{x}@tfn{))}'. 11273@texline `@math{\sigma} @tfn{abs(cos(}@var{x}@tfn{))}'.
11274@infoline `@var{sigma} @tfn{abs(cos(}@var{x}@tfn{))}'. 11274@infoline `@var{sigma} @tfn{abs(cos(}@var{x}@tfn{))}'.
11275When @expr{x} is close to zero, 11275When @expr{x} is close to zero,
11276@texline @math{\cos x} 11276@texline @math{\cos x}
11277@infoline @expr{cos(x)} 11277@infoline @expr{cos(x)}
11278is close to one so the error in the sine is close to 11278is close to one so the error in the sine is close to
11279@texline @math{\sigma}; 11279@texline @math{\sigma};
11280@infoline @expr{sigma}; 11280@infoline @expr{sigma};
11281this makes sense, since 11281this makes sense, since
11282@texline @math{\sin x} 11282@texline @math{\sin x}
11283@infoline @expr{sin(x)} 11283@infoline @expr{sin(x)}
11284is approximately @expr{x} near zero, so a given error in @expr{x} will 11284is approximately @expr{x} near zero, so a given error in @expr{x} will
11285produce about the same error in the sine. Likewise, near 90 degrees 11285produce about the same error in the sine. Likewise, near 90 degrees
11286@texline @math{\cos x} 11286@texline @math{\cos x}
11287@infoline @expr{cos(x)} 11287@infoline @expr{cos(x)}
11288is nearly zero and so the computed error is 11288is nearly zero and so the computed error is
11289small: The sine curve is nearly flat in that region, so an error in @expr{x} 11289small: The sine curve is nearly flat in that region, so an error in @expr{x}
11290has relatively little effect on the value of 11290has relatively little effect on the value of
11291@texline @math{\sin x}. 11291@texline @math{\sin x}.
11292@infoline @expr{sin(x)}. 11292@infoline @expr{sin(x)}.
11293However, consider @samp{sin(90 +/- 1000)}. The cosine of 90 is zero, so 11293However, consider @samp{sin(90 +/- 1000)}. The cosine of 90 is zero, so
11294Calc will report zero error! We get an obviously wrong result because 11294Calc will report zero error! We get an obviously wrong result because
11295we have violated the small-error approximation underlying the error 11295we have violated the small-error approximation underlying the error
11296analysis. If the error in @expr{x} had been small, the error in 11296analysis. If the error in @expr{x} had been small, the error in
11297@texline @math{\sin x} 11297@texline @math{\sin x}
11298@infoline @expr{sin(x)} 11298@infoline @expr{sin(x)}
11299would indeed have been negligible. 11299would indeed have been negligible.
11300 11300
11301@ignore 11301@ignore
@@ -11402,14 +11402,14 @@ contain zero inside them Calc is forced to give the result,
11402 11402
11403While it may seem that intervals and error forms are similar, they are 11403While it may seem that intervals and error forms are similar, they are
11404based on entirely different concepts of inexact quantities. An error 11404based on entirely different concepts of inexact quantities. An error
11405form 11405form
11406@texline `@var{x} @tfn{+/-} @math{\sigma}' 11406@texline `@var{x} @tfn{+/-} @math{\sigma}'
11407@infoline `@var{x} @tfn{+/-} @var{sigma}' 11407@infoline `@var{x} @tfn{+/-} @var{sigma}'
11408means a variable is random, and its value could 11408means a variable is random, and its value could
11409be anything but is ``probably'' within one 11409be anything but is ``probably'' within one
11410@texline @math{\sigma} 11410@texline @math{\sigma}
11411@infoline @var{sigma} 11411@infoline @var{sigma}
11412of the mean value @expr{x}. An interval 11412of the mean value @expr{x}. An interval
11413`@tfn{[}@var{a} @tfn{..@:} @var{b}@tfn{]}' means a 11413`@tfn{[}@var{a} @tfn{..@:} @var{b}@tfn{]}' means a
11414variable's value is unknown, but guaranteed to lie in the specified 11414variable's value is unknown, but guaranteed to lie in the specified
11415range. Error forms are statistical or ``average case'' approximations; 11415range. Error forms are statistical or ``average case'' approximations;
@@ -11641,7 +11641,7 @@ the C-style ``if'' operator @samp{a?b:c} [@code{if}];
11641@samp{=>} [@code{evalto}]. 11641@samp{=>} [@code{evalto}].
11642 11642
11643Note that, unlike in usual computer notation, multiplication binds more 11643Note that, unlike in usual computer notation, multiplication binds more
11644strongly than division: @samp{a*b/c*d} is equivalent to 11644strongly than division: @samp{a*b/c*d} is equivalent to
11645@texline @math{a b \over c d}. 11645@texline @math{a b \over c d}.
11646@infoline @expr{(a*b)/(c*d)}. 11646@infoline @expr{(a*b)/(c*d)}.
11647 11647
@@ -11858,13 +11858,13 @@ next higher level. For example, with @samp{10 20 30 40 50} on the
11858stack and the point on the line containing @samp{30}, @kbd{C-x C-t} 11858stack and the point on the line containing @samp{30}, @kbd{C-x C-t}
11859creates @samp{10 20 40 30 50}. More generally, @kbd{C-x C-t} acts on 11859creates @samp{10 20 40 30 50}. More generally, @kbd{C-x C-t} acts on
11860the stack objects determined by the current point (and mark) similar 11860the stack objects determined by the current point (and mark) similar
11861to how the text-mode command @code{transpose-lines} acts on 11861to how the text-mode command @code{transpose-lines} acts on
11862lines. With argument @var{n}, @kbd{C-x C-t} will move the stack object 11862lines. With argument @var{n}, @kbd{C-x C-t} will move the stack object
11863at the level above the current point and move it past N other objects; 11863at the level above the current point and move it past N other objects;
11864for example, with @samp{10 20 30 40 50} on the stack and the point on 11864for example, with @samp{10 20 30 40 50} on the stack and the point on
11865the line containing @samp{30}, @kbd{C-u 2 C-x C-t} creates 11865the line containing @samp{30}, @kbd{C-u 2 C-x C-t} creates
11866@samp{10 40 20 30 50}. With an argument of 0, @kbd{C-x C-t} will switch 11866@samp{10 40 20 30 50}. With an argument of 0, @kbd{C-x C-t} will switch
11867the stack objects at the levels determined by the point and the mark. 11867the stack objects at the levels determined by the point and the mark.
11868 11868
11869@node Editing Stack Entries, Trail Commands, Stack Manipulation, Stack and Trail 11869@node Editing Stack Entries, Trail Commands, Stack Manipulation, Stack and Trail
11870@section Editing Stack Entries 11870@section Editing Stack Entries
@@ -12056,7 +12056,7 @@ the stack contains the arguments and the result: @samp{2 3 5}.
12056With the exception of keyboard macros, this works for all commands that 12056With the exception of keyboard macros, this works for all commands that
12057take arguments off the stack. (To avoid potentially unpleasant behavior, 12057take arguments off the stack. (To avoid potentially unpleasant behavior,
12058a @kbd{K} prefix before a keyboard macro will be ignored. A @kbd{K} 12058a @kbd{K} prefix before a keyboard macro will be ignored. A @kbd{K}
12059prefix called @emph{within} the keyboard macro will still take effect.) 12059prefix called @emph{within} the keyboard macro will still take effect.)
12060As another example, @kbd{K a s} simplifies a formula, pushing the 12060As another example, @kbd{K a s} simplifies a formula, pushing the
12061simplified version of the formula onto the stack after the original 12061simplified version of the formula onto the stack after the original
12062formula (rather than replacing the original formula). Note that you 12062formula (rather than replacing the original formula). Note that you
@@ -12064,7 +12064,7 @@ could get the same effect by typing @kbd{@key{RET} a s}, copying the
12064formula and then simplifying the copy. One difference is that for a very 12064formula and then simplifying the copy. One difference is that for a very
12065large formula the time taken to format the intermediate copy in 12065large formula the time taken to format the intermediate copy in
12066@kbd{@key{RET} a s} could be noticeable; @kbd{K a s} would avoid this 12066@kbd{@key{RET} a s} could be noticeable; @kbd{K a s} would avoid this
12067extra work. 12067extra work.
12068 12068
12069Even stack manipulation commands are affected. @key{TAB} works by 12069Even stack manipulation commands are affected. @key{TAB} works by
12070popping two values and pushing them back in the opposite order, 12070popping two values and pushing them back in the opposite order,
@@ -12155,7 +12155,7 @@ discussion of the @code{calc-settings-file} variable; @pxref{Customizing Calc}.
12155If the file name you give is your user init file (typically 12155If the file name you give is your user init file (typically
12156@file{~/.emacs}), @kbd{m F} will not automatically load the new file. This 12156@file{~/.emacs}), @kbd{m F} will not automatically load the new file. This
12157is because your user init file may contain other things you don't want 12157is because your user init file may contain other things you don't want
12158to reread. You can give 12158to reread. You can give
12159a numeric prefix argument of 1 to @kbd{m F} to force it to read the 12159a numeric prefix argument of 1 to @kbd{m F} to force it to read the
12160file no matter what. Conversely, an argument of @mathit{-1} tells 12160file no matter what. Conversely, an argument of @mathit{-1} tells
12161@kbd{m F} @emph{not} to read the new file. An argument of 2 or @mathit{-2} 12161@kbd{m F} @emph{not} to read the new file. An argument of 2 or @mathit{-2}
@@ -12274,7 +12274,7 @@ corresponding base command (@code{calc-sin} in this case).
12274@pindex calc-option 12274@pindex calc-option
12275The @kbd{O} key (@code{calc-option}) sets another flag, the 12275The @kbd{O} key (@code{calc-option}) sets another flag, the
12276@dfn{Option Flag}, which also can alter the subsequent Calc command in 12276@dfn{Option Flag}, which also can alter the subsequent Calc command in
12277various ways. 12277various ways.
12278 12278
12279The Inverse, Hyperbolic and Option flags apply only to the next 12279The Inverse, Hyperbolic and Option flags apply only to the next
12280Calculator command, after which they are automatically cleared. (They 12280Calculator command, after which they are automatically cleared. (They
@@ -12366,7 +12366,7 @@ result cannot be expressed as an integer. In some cases you would
12366rather get an exact fractional answer. One way to accomplish this is 12366rather get an exact fractional answer. One way to accomplish this is
12367to use the @kbd{:} (@code{calc-fdiv}) [@code{fdiv}] command, which 12367to use the @kbd{:} (@code{calc-fdiv}) [@code{fdiv}] command, which
12368divides the two integers on the top of the stack to produce a fraction: 12368divides the two integers on the top of the stack to produce a fraction:
12369@kbd{6 @key{RET} 4 :} produces @expr{3:2} even though 12369@kbd{6 @key{RET} 4 :} produces @expr{3:2} even though
12370@kbd{6 @key{RET} 4 /} produces @expr{1.5}. 12370@kbd{6 @key{RET} 4 /} produces @expr{1.5}.
12371 12371
12372@kindex m f 12372@kindex m f
@@ -13155,11 +13155,11 @@ represent the integer and no more. The @kbd{d z} (@code{calc-leading-zeros})
13155command causes integers to be padded out with leading zeros according to the 13155command causes integers to be padded out with leading zeros according to the
13156current binary word size. (@xref{Binary Functions}, for a discussion of 13156current binary word size. (@xref{Binary Functions}, for a discussion of
13157word size.) If the absolute value of the word size is @expr{w}, all integers 13157word size.) If the absolute value of the word size is @expr{w}, all integers
13158are displayed with at least enough digits to represent 13158are displayed with at least enough digits to represent
13159@texline @math{2^w-1} 13159@texline @math{2^w-1}
13160@infoline @expr{(2^w)-1} 13160@infoline @expr{(2^w)-1}
13161in the current radix. (Larger integers will still be displayed in their 13161in the current radix. (Larger integers will still be displayed in their
13162entirety.) 13162entirety.)
13163 13163
13164@cindex Two's complements 13164@cindex Two's complements
13165Calc can display @expr{w}-bit integers using two's complement 13165Calc can display @expr{w}-bit integers using two's complement
@@ -13181,7 +13181,7 @@ the integers from @expr{0} to
13181are represented by themselves and the integers from 13181are represented by themselves and the integers from
13182@texline @math{-2^{w-1}} 13182@texline @math{-2^{w-1}}
13183@infoline @expr{-2^(w-1)} 13183@infoline @expr{-2^(w-1)}
13184to @expr{-1} are represented by the integers from 13184to @expr{-1} are represented by the integers from
13185@texline @math{2^{w-1}} 13185@texline @math{2^{w-1}}
13186@infoline @expr{2^(w-1)} 13186@infoline @expr{2^(w-1)}
13187to @expr{2^w-1} (the integer @expr{k} is represented by @expr{k+2^w}). 13187to @expr{2^w-1} (the integer @expr{k} is represented by @expr{k+2^w}).
@@ -13190,7 +13190,7 @@ Calc will display a two's complement integer by the radix (either
13190representation (including any leading zeros necessary to include all 13190representation (including any leading zeros necessary to include all
13191@expr{w} bits). In a two's complement display mode, numbers that 13191@expr{w} bits). In a two's complement display mode, numbers that
13192are not displayed in two's complement notation (i.e., that aren't 13192are not displayed in two's complement notation (i.e., that aren't
13193integers from 13193integers from
13194@texline @math{-2^{w-1}} 13194@texline @math{-2^{w-1}}
13195@infoline @expr{-2^(w-1)} 13195@infoline @expr{-2^(w-1)}
13196to 13196to
@@ -14095,13 +14095,13 @@ the @samp{$} sign has the same meaning it always does in algebraic
14095formulas (a reference to an existing entry on the stack). 14095formulas (a reference to an existing entry on the stack).
14096 14096
14097Complex numbers are displayed as in @samp{3 + 4i}. Fractions and 14097Complex numbers are displayed as in @samp{3 + 4i}. Fractions and
14098quotients are written using @code{\over} in @TeX{} mode (as in 14098quotients are written using @code{\over} in @TeX{} mode (as in
14099@code{@{a \over b@}}) and @code{\frac} in La@TeX{} mode (as in 14099@code{@{a \over b@}}) and @code{\frac} in La@TeX{} mode (as in
14100@code{\frac@{a@}@{b@}}); binomial coefficients are written with 14100@code{\frac@{a@}@{b@}}); binomial coefficients are written with
14101@code{\choose} in @TeX{} mode (as in @code{@{a \choose b@}}) and 14101@code{\choose} in @TeX{} mode (as in @code{@{a \choose b@}}) and
14102@code{\binom} in La@TeX{} mode (as in @code{\binom@{a@}@{b@}}). 14102@code{\binom} in La@TeX{} mode (as in @code{\binom@{a@}@{b@}}).
14103Interval forms are written with @code{\ldots}, and error forms are 14103Interval forms are written with @code{\ldots}, and error forms are
14104written with @code{\pm}. Absolute values are written as in 14104written with @code{\pm}. Absolute values are written as in
14105@samp{|x + 1|}, and the floor and ceiling functions are written with 14105@samp{|x + 1|}, and the floor and ceiling functions are written with
14106@code{\lfloor}, @code{\rfloor}, etc. The words @code{\left} and 14106@code{\lfloor}, @code{\rfloor}, etc. The words @code{\left} and
14107@code{\right} are ignored when reading formulas in @TeX{} and La@TeX{} 14107@code{\right} are ignored when reading formulas in @TeX{} and La@TeX{}
@@ -14114,10 +14114,10 @@ and La@TeX{} have special names (like @code{\sin}) will use curly braces
14114instead of parentheses for very simple arguments. During input, curly 14114instead of parentheses for very simple arguments. During input, curly
14115braces and parentheses work equally well for grouping, but when the 14115braces and parentheses work equally well for grouping, but when the
14116document is formatted the curly braces will be invisible. Thus the 14116document is formatted the curly braces will be invisible. Thus the
14117printed result is 14117printed result is
14118@texline @math{\sin{2 x}} 14118@texline @math{\sin{2 x}}
14119@infoline @expr{sin 2x} 14119@infoline @expr{sin 2x}
14120but 14120but
14121@texline @math{\sin(2 + x)}. 14121@texline @math{\sin(2 + x)}.
14122@infoline @expr{sin(2 + x)}. 14122@infoline @expr{sin(2 + x)}.
14123 14123
@@ -14131,7 +14131,7 @@ italic letters in the printed document. If you invoke @kbd{d T} or
14131@kbd{d L} with a positive numeric prefix argument, names of more than 14131@kbd{d L} with a positive numeric prefix argument, names of more than
14132one character will instead be enclosed in a protective commands that 14132one character will instead be enclosed in a protective commands that
14133will prevent them from being typeset in the math italics; they will be 14133will prevent them from being typeset in the math italics; they will be
14134written @samp{\hbox@{@var{name}@}} in @TeX{} mode and 14134written @samp{\hbox@{@var{name}@}} in @TeX{} mode and
14135@samp{\text@{@var{name}@}} in La@TeX{} mode. The 14135@samp{\text@{@var{name}@}} in La@TeX{} mode. The
14136@samp{\hbox@{ @}} and @samp{\text@{ @}} notations are ignored during 14136@samp{\hbox@{ @}} and @samp{\text@{ @}} notations are ignored during
14137reading. If you use a negative prefix argument, such function names are 14137reading. If you use a negative prefix argument, such function names are
@@ -14143,7 +14143,7 @@ any @TeX{} mode.)
14143 14143
14144During reading, text of the form @samp{\matrix@{ ...@: @}} is replaced 14144During reading, text of the form @samp{\matrix@{ ...@: @}} is replaced
14145by @samp{[ ...@: ]}. The same also applies to @code{\pmatrix} and 14145by @samp{[ ...@: ]}. The same also applies to @code{\pmatrix} and
14146@code{\bmatrix}. In La@TeX{} mode this also applies to 14146@code{\bmatrix}. In La@TeX{} mode this also applies to
14147@samp{\begin@{matrix@} ... \end@{matrix@}}, 14147@samp{\begin@{matrix@} ... \end@{matrix@}},
14148@samp{\begin@{bmatrix@} ... \end@{bmatrix@}}, 14148@samp{\begin@{bmatrix@} ... \end@{bmatrix@}},
14149@samp{\begin@{pmatrix@} ... \end@{pmatrix@}}, as well as 14149@samp{\begin@{pmatrix@} ... \end@{pmatrix@}}, as well as
@@ -14151,12 +14151,12 @@ by @samp{[ ...@: ]}. The same also applies to @code{\pmatrix} and
14151The symbol @samp{&} is interpreted as a comma, 14151The symbol @samp{&} is interpreted as a comma,
14152and the symbols @samp{\cr} and @samp{\\} are interpreted as semicolons. 14152and the symbols @samp{\cr} and @samp{\\} are interpreted as semicolons.
14153During output, matrices are displayed in @samp{\matrix@{ a & b \\ c & d@}} 14153During output, matrices are displayed in @samp{\matrix@{ a & b \\ c & d@}}
14154format in @TeX{} mode and in 14154format in @TeX{} mode and in
14155@samp{\begin@{pmatrix@} a & b \\ c & d \end@{pmatrix@}} format in 14155@samp{\begin@{pmatrix@} a & b \\ c & d \end@{pmatrix@}} format in
14156La@TeX{} mode; you may need to edit this afterwards to change to your 14156La@TeX{} mode; you may need to edit this afterwards to change to your
14157preferred matrix form. If you invoke @kbd{d T} or @kbd{d L} with an 14157preferred matrix form. If you invoke @kbd{d T} or @kbd{d L} with an
14158argument of 2 or -2, then matrices will be displayed in two-dimensional 14158argument of 2 or -2, then matrices will be displayed in two-dimensional
14159form, such as 14159form, such as
14160 14160
14161@example 14161@example
14162\begin@{pmatrix@} 14162\begin@{pmatrix@}
@@ -14300,25 +14300,25 @@ in Calc, @TeX{}, La@TeX{} and @dfn{eqn} (described in the next section):
14300@example 14300@example
14301Calc TeX LaTeX eqn 14301Calc TeX LaTeX eqn
14302---- --- ----- --- 14302---- --- ----- ---
14303acute \acute \acute 14303acute \acute \acute
14304Acute \Acute 14304Acute \Acute
14305bar \bar \bar bar 14305bar \bar \bar bar
14306Bar \Bar 14306Bar \Bar
14307breve \breve \breve 14307breve \breve \breve
14308Breve \Breve 14308Breve \Breve
14309check \check \check 14309check \check \check
14310Check \Check 14310Check \Check
14311dddot \dddot 14311dddot \dddot
14312ddddot \ddddot 14312ddddot \ddddot
14313dot \dot \dot dot 14313dot \dot \dot dot
14314Dot \Dot 14314Dot \Dot
14315dotdot \ddot \ddot dotdot 14315dotdot \ddot \ddot dotdot
14316DotDot \Ddot 14316DotDot \Ddot
14317dyad dyad 14317dyad dyad
14318grave \grave \grave 14318grave \grave \grave
14319Grave \Grave 14319Grave \Grave
14320hat \hat \hat hat 14320hat \hat \hat hat
14321Hat \Hat 14321Hat \Hat
14322Prime prime 14322Prime prime
14323tilde \tilde \tilde tilde 14323tilde \tilde \tilde tilde
14324Tilde \Tilde 14324Tilde \Tilde
@@ -14363,7 +14363,7 @@ reading is:
14363 14363
14364Note that, because these symbols are ignored, reading a @TeX{} or 14364Note that, because these symbols are ignored, reading a @TeX{} or
14365La@TeX{} formula into Calc and writing it back out may lose spacing and 14365La@TeX{} formula into Calc and writing it back out may lose spacing and
14366font information. 14366font information.
14367 14367
14368Also, the ``discretionary multiplication sign'' @samp{\*} is read 14368Also, the ``discretionary multiplication sign'' @samp{\*} is read
14369the same as @samp{*}. 14369the same as @samp{*}.
@@ -14542,7 +14542,7 @@ are treated the same as curly braces: @samp{sqrt "1+x"} is equivalent to
14542of quotes in @dfn{eqn}, but it is good enough for most uses. 14542of quotes in @dfn{eqn}, but it is good enough for most uses.
14543 14543
14544Accent codes (@samp{@var{x} dot}) are handled by treating them as 14544Accent codes (@samp{@var{x} dot}) are handled by treating them as
14545function calls (@samp{dot(@var{x})}) internally. 14545function calls (@samp{dot(@var{x})}) internally.
14546@xref{TeX and LaTeX Language Modes}, for a table of these accent 14546@xref{TeX and LaTeX Language Modes}, for a table of these accent
14547functions. The @code{prime} accent is treated specially if it occurs on 14547functions. The @code{prime} accent is treated specially if it occurs on
14548a variable or function name: @samp{f prime prime @w{( x prime )}} is 14548a variable or function name: @samp{f prime prime @w{( x prime )}} is
@@ -14572,7 +14572,7 @@ if the matrix justification mode so specifies.
14572The @kbd{d Y} (@code{calc-yacas-language}) command selects the 14572The @kbd{d Y} (@code{calc-yacas-language}) command selects the
14573conventions of Yacas, a free computer algebra system. While the 14573conventions of Yacas, a free computer algebra system. While the
14574operators and functions in Yacas are similar to those of Calc, the names 14574operators and functions in Yacas are similar to those of Calc, the names
14575of built-in functions in Yacas are capitalized. The Calc formula 14575of built-in functions in Yacas are capitalized. The Calc formula
14576@samp{sin(2 x)}, for example, is entered and displayed @samp{Sin(2 x)} 14576@samp{sin(2 x)}, for example, is entered and displayed @samp{Sin(2 x)}
14577in Yacas mode, and `@samp{arcsin(x^2)} is @samp{ArcSin(x^2)} in Yacas 14577in Yacas mode, and `@samp{arcsin(x^2)} is @samp{ArcSin(x^2)} in Yacas
14578mode. Complex numbers are written are written @samp{3 + 4 I}. 14578mode. Complex numbers are written are written @samp{3 + 4 I}.
@@ -14581,9 +14581,9 @@ The standard special constants are written @code{Pi}, @code{E},
14581represents both @code{inf} and @code{uinf}, and @code{Undefined} 14581represents both @code{inf} and @code{uinf}, and @code{Undefined}
14582represents @code{nan}. 14582represents @code{nan}.
14583 14583
14584Certain operators on functions, such as @code{D} for differentiation 14584Certain operators on functions, such as @code{D} for differentiation
14585and @code{Integrate} for integration, take a prefix form in Yacas. For 14585and @code{Integrate} for integration, take a prefix form in Yacas. For
14586example, the derivative of @w{@samp{e^x sin(x)}} can be computed with 14586example, the derivative of @w{@samp{e^x sin(x)}} can be computed with
14587@w{@samp{D(x) Exp(x)*Sin(x)}}. 14587@w{@samp{D(x) Exp(x)*Sin(x)}}.
14588 14588
14589Other notable differences between Yacas and standard Calc expressions 14589Other notable differences between Yacas and standard Calc expressions
@@ -14602,7 +14602,7 @@ use square brackets. If, for example, @samp{A} represents the list
14602The @kbd{d X} (@code{calc-maxima-language}) command selects the 14602The @kbd{d X} (@code{calc-maxima-language}) command selects the
14603conventions of Maxima, another free computer algebra system. The 14603conventions of Maxima, another free computer algebra system. The
14604function names in Maxima are similar, but not always identical, to Calc. 14604function names in Maxima are similar, but not always identical, to Calc.
14605For example, instead of @samp{arcsin(x)}, Maxima will use 14605For example, instead of @samp{arcsin(x)}, Maxima will use
14606@samp{asin(x)}. Complex numbers are written @samp{3 + 4 %i}. The 14606@samp{asin(x)}. Complex numbers are written @samp{3 + 4 %i}. The
14607standard special constants are written @code{%pi}, @code{%e}, 14607standard special constants are written @code{%pi}, @code{%e},
14608@code{%i}, @code{%phi} and @code{%gamma}. In Maxima, @code{inf} means 14608@code{%i}, @code{%phi} and @code{%gamma}. In Maxima, @code{inf} means
@@ -14610,8 +14610,8 @@ the same as in Calc, but @code{infinity} represents Calc's @code{uinf}.
14610 14610
14611Underscores as well as percent signs are allowed in function and 14611Underscores as well as percent signs are allowed in function and
14612variable names in Maxima mode. The underscore again is equivalent to 14612variable names in Maxima mode. The underscore again is equivalent to
14613the @samp{#} in Normal mode, and the percent sign is equivalent to 14613the @samp{#} in Normal mode, and the percent sign is equivalent to
14614@samp{o'o}. 14614@samp{o'o}.
14615 14615
14616Maxima uses square brackets for lists and vectors, and matrices are 14616Maxima uses square brackets for lists and vectors, and matrices are
14617written as calls to the function @code{matrix}, given the row vectors of 14617written as calls to the function @code{matrix}, given the row vectors of
@@ -14629,7 +14629,7 @@ conventions of Giac, another free computer algebra system. The function
14629names in Giac are similar to Maxima. Complex numbers are written 14629names in Giac are similar to Maxima. Complex numbers are written
14630@samp{3 + 4 i}. The standard special constants in Giac are the same as 14630@samp{3 + 4 i}. The standard special constants in Giac are the same as
14631in Calc, except that @code{infinity} represents both Calc's @code{inf} 14631in Calc, except that @code{infinity} represents both Calc's @code{inf}
14632and @code{uinf}. 14632and @code{uinf}.
14633 14633
14634Underscores are allowed in function and variable names in Giac mode. 14634Underscores are allowed in function and variable names in Giac mode.
14635Brackets are used for subscripts. In Giac, indexing of lists begins at 14635Brackets are used for subscripts. In Giac, indexing of lists begins at
@@ -15786,9 +15786,9 @@ Command is @kbd{m p}.
15786@item 15786@item
15787Matrix/Scalar mode. Default value is @mathit{-1}. Value is 0 for Scalar 15787Matrix/Scalar mode. Default value is @mathit{-1}. Value is 0 for Scalar
15788mode, @mathit{-2} for Matrix mode, @mathit{-3} for square Matrix mode, 15788mode, @mathit{-2} for Matrix mode, @mathit{-3} for square Matrix mode,
15789or @var{N} for 15789or @var{N} for
15790@texline @math{N\times N} 15790@texline @math{N\times N}
15791@infoline @var{N}x@var{N} 15791@infoline @var{N}x@var{N}
15792Matrix mode. Command is @kbd{m v}. 15792Matrix mode. Command is @kbd{m v}.
15793 15793
15794@item 15794@item
@@ -16178,7 +16178,7 @@ whereas @w{@samp{[-2 ..@: 3] ^ 2}} is @samp{[0 ..@: 9]}.
16178@mindex @null 16178@mindex @null
16179@end ignore 16179@end ignore
16180@tindex / 16180@tindex /
16181The @kbd{/} (@code{calc-divide}) command divides two numbers. 16181The @kbd{/} (@code{calc-divide}) command divides two numbers.
16182 16182
16183When combining multiplication and division in an algebraic formula, it 16183When combining multiplication and division in an algebraic formula, it
16184is good style to use parentheses to distinguish between possible 16184is good style to use parentheses to distinguish between possible
@@ -16187,7 +16187,7 @@ interpretations; the expression @samp{a/b*c} should be written
16187parentheses, Calc will interpret @samp{a/b*c} as @samp{a/(b*c)}, since 16187parentheses, Calc will interpret @samp{a/b*c} as @samp{a/(b*c)}, since
16188in algebraic entry Calc gives division a lower precedence than 16188in algebraic entry Calc gives division a lower precedence than
16189multiplication. (This is not standard across all computer languages, and 16189multiplication. (This is not standard across all computer languages, and
16190Calc may change the precedence depending on the language mode being used. 16190Calc may change the precedence depending on the language mode being used.
16191@xref{Language Modes}.) This default ordering can be changed by setting 16191@xref{Language Modes}.) This default ordering can be changed by setting
16192the customizable variable @code{calc-multiplication-has-precedence} to 16192the customizable variable @code{calc-multiplication-has-precedence} to
16193@code{nil} (@pxref{Customizing Calc}); this will give multiplication and 16193@code{nil} (@pxref{Customizing Calc}); this will give multiplication and
@@ -16373,7 +16373,7 @@ all the arguments.)
16373The @kbd{f M} (@code{calc-mant-part}) [@code{mant}] function extracts 16373The @kbd{f M} (@code{calc-mant-part}) [@code{mant}] function extracts
16374the ``mantissa'' part @expr{m} of its floating-point argument; @kbd{f X} 16374the ``mantissa'' part @expr{m} of its floating-point argument; @kbd{f X}
16375(@code{calc-xpon-part}) [@code{xpon}] extracts the ``exponent'' part 16375(@code{calc-xpon-part}) [@code{xpon}] extracts the ``exponent'' part
16376@expr{e}. The original number is equal to 16376@expr{e}. The original number is equal to
16377@texline @math{m \times 10^e}, 16377@texline @math{m \times 10^e},
16378@infoline @expr{m * 10^e}, 16378@infoline @expr{m * 10^e},
16379where @expr{m} is in the interval @samp{[1.0 ..@: 10.0)} except that 16379where @expr{m} is in the interval @samp{[1.0 ..@: 10.0)} except that
@@ -16406,9 +16406,9 @@ floating-point numbers, the change is by one unit in the last place.
16406For example, incrementing @samp{12.3456} when the current precision 16406For example, incrementing @samp{12.3456} when the current precision
16407is 6 digits yields @samp{12.3457}. If the current precision had been 16407is 6 digits yields @samp{12.3457}. If the current precision had been
164088 digits, the result would have been @samp{12.345601}. Incrementing 164088 digits, the result would have been @samp{12.345601}. Incrementing
16409@samp{0.0} produces 16409@samp{0.0} produces
16410@texline @math{10^{-p}}, 16410@texline @math{10^{-p}},
16411@infoline @expr{10^-p}, 16411@infoline @expr{10^-p},
16412where @expr{p} is the current 16412where @expr{p} is the current
16413precision. These operations are defined only on integers and floats. 16413precision. These operations are defined only on integers and floats.
16414With numeric prefix arguments, they change the number by @expr{n} units. 16414With numeric prefix arguments, they change the number by @expr{n} units.
@@ -16852,7 +16852,7 @@ The last two arguments default to zero if omitted.
16852The @kbd{t J} (@code{calc-julian}) [@code{julian}] command converts 16852The @kbd{t J} (@code{calc-julian}) [@code{julian}] command converts
16853a date form into a Julian day count, which is the number of days 16853a date form into a Julian day count, which is the number of days
16854since noon (GMT) on Jan 1, 4713 BC. A pure date is converted to an 16854since noon (GMT) on Jan 1, 4713 BC. A pure date is converted to an
16855integer Julian count representing noon of that day. A date/time form 16855integer Julian count representing noon of that day. A date/time form
16856is converted to an exact floating-point Julian count, adjusted to 16856is converted to an exact floating-point Julian count, adjusted to
16857interpret the date form in the current time zone but the Julian 16857interpret the date form in the current time zone but the Julian
16858day count in Greenwich Mean Time. A numeric prefix argument allows 16858day count in Greenwich Mean Time. A numeric prefix argument allows
@@ -17294,12 +17294,12 @@ With no arguments, @code{calc-time-zone} or @samp{tzone()} will by
17294default get the time zone and daylight saving information from the 17294default get the time zone and daylight saving information from the
17295calendar (@pxref{Daylight Saving,Calendar/Diary,The Calendar and the Diary, 17295calendar (@pxref{Daylight Saving,Calendar/Diary,The Calendar and the Diary,
17296emacs,The GNU Emacs Manual}). To use a different time zone, or if the 17296emacs,The GNU Emacs Manual}). To use a different time zone, or if the
17297calendar does not give the desired result, you can set the Calc variable 17297calendar does not give the desired result, you can set the Calc variable
17298@code{TimeZone} (which is by default @code{nil}) to an appropriate 17298@code{TimeZone} (which is by default @code{nil}) to an appropriate
17299time zone name. (The easiest way to do this is to edit the 17299time zone name. (The easiest way to do this is to edit the
17300@code{TimeZone} variable using Calc's @kbd{s T} command, then use the 17300@code{TimeZone} variable using Calc's @kbd{s T} command, then use the
17301@kbd{s p} (@code{calc-permanent-variable}) command to save the value of 17301@kbd{s p} (@code{calc-permanent-variable}) command to save the value of
17302@code{TimeZone} permanently.) 17302@code{TimeZone} permanently.)
17303If the time zone given by @code{TimeZone} is a generalized time zone, 17303If the time zone given by @code{TimeZone} is a generalized time zone,
17304e.g., @code{EGT}, Calc examines the date being converted to tell whether 17304e.g., @code{EGT}, Calc examines the date being converted to tell whether
17305to use standard or daylight saving time. But if the current time zone 17305to use standard or daylight saving time. But if the current time zone
@@ -17311,12 +17311,12 @@ from the calendar.
17311 17311
17312The @kbd{t J} and @code{t U} commands with no numeric prefix 17312The @kbd{t J} and @code{t U} commands with no numeric prefix
17313arguments do the same thing as @samp{tzone()}; namely, use the 17313arguments do the same thing as @samp{tzone()}; namely, use the
17314information from the calendar if @code{TimeZone} is @code{nil}, 17314information from the calendar if @code{TimeZone} is @code{nil},
17315otherwise use the time zone given by @code{TimeZone}. 17315otherwise use the time zone given by @code{TimeZone}.
17316 17316
17317@vindex math-daylight-savings-hook 17317@vindex math-daylight-savings-hook
17318@findex math-std-daylight-savings 17318@findex math-std-daylight-savings
17319When Calc computes the daylight saving information itself (i.e., when 17319When Calc computes the daylight saving information itself (i.e., when
17320the @code{TimeZone} variable is set), it will by default consider 17320the @code{TimeZone} variable is set), it will by default consider
17321daylight saving time to begin at 2 a.m.@: on the second Sunday of March 17321daylight saving time to begin at 2 a.m.@: on the second Sunday of March
17322(for years from 2007 on) or on the last Sunday in April (for years 17322(for years from 2007 on) or on the last Sunday in April (for years
@@ -17392,7 +17392,7 @@ falls in this hour results in a time value for the following hour,
17392from 3 a.m.@: to 4 a.m. At the end of daylight saving time, the 17392from 3 a.m.@: to 4 a.m. At the end of daylight saving time, the
17393hour from 1 a.m.@: to 2 a.m.@: repeats itself; converting a date/time 17393hour from 1 a.m.@: to 2 a.m.@: repeats itself; converting a date/time
17394form that falls in this hour results in a time value for the first 17394form that falls in this hour results in a time value for the first
17395manifestation of that time (@emph{not} the one that occurs one hour 17395manifestation of that time (@emph{not} the one that occurs one hour
17396later). 17396later).
17397 17397
17398If @code{math-daylight-savings-hook} is @code{nil}, then the 17398If @code{math-daylight-savings-hook} is @code{nil}, then the
@@ -17995,12 +17995,12 @@ particular, negative arguments are converted to positive integers modulo
17995@expr{2^w} by all binary functions. 17995@expr{2^w} by all binary functions.
17996 17996
17997If the word size is negative, binary operations produce twos-complement 17997If the word size is negative, binary operations produce twos-complement
17998integers from 17998integers from
17999@texline @math{-2^{-w-1}} 17999@texline @math{-2^{-w-1}}
18000@infoline @expr{-(2^(-w-1))} 18000@infoline @expr{-(2^(-w-1))}
18001to 18001to
18002@texline @math{2^{-w-1}-1} 18002@texline @math{2^{-w-1}-1}
18003@infoline @expr{2^(-w-1)-1} 18003@infoline @expr{2^(-w-1)-1}
18004inclusive. Either mode accepts inputs in any range; the sign of 18004inclusive. Either mode accepts inputs in any range; the sign of
18005@expr{w} affects only the results produced. 18005@expr{w} affects only the results produced.
18006 18006
@@ -18182,13 +18182,13 @@ flag keys must be used to get some of these functions from the keyboard.
18182One miscellaneous command is shift-@kbd{P} (@code{calc-pi}), which pushes 18182One miscellaneous command is shift-@kbd{P} (@code{calc-pi}), which pushes
18183the value of @cpi{} (at the current precision) onto the stack. With the 18183the value of @cpi{} (at the current precision) onto the stack. With the
18184Hyperbolic flag, it pushes the value @expr{e}, the base of natural logarithms. 18184Hyperbolic flag, it pushes the value @expr{e}, the base of natural logarithms.
18185With the Inverse flag, it pushes Euler's constant 18185With the Inverse flag, it pushes Euler's constant
18186@texline @math{\gamma} 18186@texline @math{\gamma}
18187@infoline @expr{gamma} 18187@infoline @expr{gamma}
18188(about 0.5772). With both Inverse and Hyperbolic, it 18188(about 0.5772). With both Inverse and Hyperbolic, it
18189pushes the ``golden ratio'' 18189pushes the ``golden ratio''
18190@texline @math{\phi} 18190@texline @math{\phi}
18191@infoline @expr{phi} 18191@infoline @expr{phi}
18192(about 1.618). (At present, Euler's constant is not available 18192(about 1.618). (At present, Euler's constant is not available
18193to unlimited precision; Calc knows only the first 100 digits.) 18193to unlimited precision; Calc knows only the first 100 digits.)
18194In Symbolic mode, these commands push the 18194In Symbolic mode, these commands push the
@@ -18266,7 +18266,7 @@ The @kbd{H L} (@code{calc-log10}) [@code{log10}] command computes the common
18266(base-10) logarithm of a number. (With the Inverse flag [@code{exp10}], 18266(base-10) logarithm of a number. (With the Inverse flag [@code{exp10}],
18267it raises ten to a given power.) Note that the common logarithm of a 18267it raises ten to a given power.) Note that the common logarithm of a
18268complex number is computed by taking the natural logarithm and dividing 18268complex number is computed by taking the natural logarithm and dividing
18269by 18269by
18270@texline @math{\ln10}. 18270@texline @math{\ln10}.
18271@infoline @expr{ln(10)}. 18271@infoline @expr{ln(10)}.
18272 18272
@@ -18278,7 +18278,7 @@ by
18278The @kbd{B} (@code{calc-log}) [@code{log}] command computes a logarithm 18278The @kbd{B} (@code{calc-log}) [@code{log}] command computes a logarithm
18279to any base. For example, @kbd{1024 @key{RET} 2 B} produces 10, since 18279to any base. For example, @kbd{1024 @key{RET} 2 B} produces 10, since
18280@texline @math{2^{10} = 1024}. 18280@texline @math{2^{10} = 1024}.
18281@infoline @expr{2^10 = 1024}. 18281@infoline @expr{2^10 = 1024}.
18282In certain cases like @samp{log(3,9)}, the result 18282In certain cases like @samp{log(3,9)}, the result
18283will be either @expr{1:2} or @expr{0.5} depending on the current Fraction 18283will be either @expr{1:2} or @expr{0.5} depending on the current Fraction
18284mode setting. With the Inverse flag [@code{alog}], this command is 18284mode setting. With the Inverse flag [@code{alog}], this command is
@@ -18300,11 +18300,11 @@ integer arithmetic is used; otherwise, this is equivalent to
18300@tindex expm1 18300@tindex expm1
18301The @kbd{f E} (@code{calc-expm1}) [@code{expm1}] command computes 18301The @kbd{f E} (@code{calc-expm1}) [@code{expm1}] command computes
18302@texline @math{e^x - 1}, 18302@texline @math{e^x - 1},
18303@infoline @expr{exp(x)-1}, 18303@infoline @expr{exp(x)-1},
18304but using an algorithm that produces a more accurate 18304but using an algorithm that produces a more accurate
18305answer when the result is close to zero, i.e., when 18305answer when the result is close to zero, i.e., when
18306@texline @math{e^x} 18306@texline @math{e^x}
18307@infoline @expr{exp(x)} 18307@infoline @expr{exp(x)}
18308is close to one. 18308is close to one.
18309 18309
18310@kindex f L 18310@kindex f L
@@ -18312,7 +18312,7 @@ is close to one.
18312@tindex lnp1 18312@tindex lnp1
18313The @kbd{f L} (@code{calc-lnp1}) [@code{lnp1}] command computes 18313The @kbd{f L} (@code{calc-lnp1}) [@code{lnp1}] command computes
18314@texline @math{\ln(x+1)}, 18314@texline @math{\ln(x+1)},
18315@infoline @expr{ln(x+1)}, 18315@infoline @expr{ln(x+1)},
18316producing a more accurate answer when @expr{x} is close to zero. 18316producing a more accurate answer when @expr{x} is close to zero.
18317 18317
18318@node Trigonometric and Hyperbolic Functions, Advanced Math Functions, Logarithmic Functions, Scientific Functions 18318@node Trigonometric and Hyperbolic Functions, Advanced Math Functions, Logarithmic Functions, Scientific Functions
@@ -18515,9 +18515,9 @@ The @kbd{f g} (@code{calc-gamma}) [@code{gamma}] command computes the Euler
18515gamma function. For positive integer arguments, this is related to the 18515gamma function. For positive integer arguments, this is related to the
18516factorial function: @samp{gamma(n+1) = fact(n)}. For general complex 18516factorial function: @samp{gamma(n+1) = fact(n)}. For general complex
18517arguments the gamma function can be defined by the following definite 18517arguments the gamma function can be defined by the following definite
18518integral: 18518integral:
18519@texline @math{\Gamma(a) = \int_0^\infty t^{a-1} e^t dt}. 18519@texline @math{\Gamma(a) = \int_0^\infty t^{a-1} e^t dt}.
18520@infoline @expr{gamma(a) = integ(t^(a-1) exp(t), t, 0, inf)}. 18520@infoline @expr{gamma(a) = integ(t^(a-1) exp(t), t, 0, inf)}.
18521(The actual implementation uses far more efficient computational methods.) 18521(The actual implementation uses far more efficient computational methods.)
18522 18522
18523@kindex f G 18523@kindex f G
@@ -18549,7 +18549,7 @@ integral:
18549@tindex gammaG 18549@tindex gammaG
18550The @kbd{f G} (@code{calc-inc-gamma}) [@code{gammaP}] command computes 18550The @kbd{f G} (@code{calc-inc-gamma}) [@code{gammaP}] command computes
18551the incomplete gamma function, denoted @samp{P(a,x)}. This is defined by 18551the incomplete gamma function, denoted @samp{P(a,x)}. This is defined by
18552the integral, 18552the integral,
18553@texline @math{P(a,x) = \left( \int_0^x t^{a-1} e^t dt \right) / \Gamma(a)}. 18553@texline @math{P(a,x) = \left( \int_0^x t^{a-1} e^t dt \right) / \Gamma(a)}.
18554@infoline @expr{gammaP(a,x) = integ(t^(a-1) exp(t), t, 0, x) / gamma(a)}. 18554@infoline @expr{gammaP(a,x) = integ(t^(a-1) exp(t), t, 0, x) / gamma(a)}.
18555This implies that @samp{gammaP(a,inf) = 1} for any @expr{a} (see the 18555This implies that @samp{gammaP(a,inf) = 1} for any @expr{a} (see the
@@ -18583,7 +18583,7 @@ You can obtain these using the \kbd{H f G} [\code{gammag}] and
18583The @kbd{f b} (@code{calc-beta}) [@code{beta}] command computes the 18583The @kbd{f b} (@code{calc-beta}) [@code{beta}] command computes the
18584Euler beta function, which is defined in terms of the gamma function as 18584Euler beta function, which is defined in terms of the gamma function as
18585@texline @math{B(a,b) = \Gamma(a) \Gamma(b) / \Gamma(a+b)}, 18585@texline @math{B(a,b) = \Gamma(a) \Gamma(b) / \Gamma(a+b)},
18586@infoline @expr{beta(a,b) = gamma(a) gamma(b) / gamma(a+b)}, 18586@infoline @expr{beta(a,b) = gamma(a) gamma(b) / gamma(a+b)},
18587or by 18587or by
18588@texline @math{B(a,b) = \int_0^1 t^{a-1} (1-t)^{b-1} dt}. 18588@texline @math{B(a,b) = \int_0^1 t^{a-1} (1-t)^{b-1} dt}.
18589@infoline @expr{beta(a,b) = integ(t^(a-1) (1-t)^(b-1), t, 0, 1)}. 18589@infoline @expr{beta(a,b) = integ(t^(a-1) (1-t)^(b-1), t, 0, 1)}.
@@ -18606,7 +18606,7 @@ un-normalized version [@code{betaB}].
18606@tindex erf 18606@tindex erf
18607@tindex erfc 18607@tindex erfc
18608The @kbd{f e} (@code{calc-erf}) [@code{erf}] command computes the 18608The @kbd{f e} (@code{calc-erf}) [@code{erf}] command computes the
18609error function 18609error function
18610@texline @math{\hbox{erf}(x) = {2 \over \sqrt{\pi}} \int_0^x e^{-t^2} dt}. 18610@texline @math{\hbox{erf}(x) = {2 \over \sqrt{\pi}} \int_0^x e^{-t^2} dt}.
18611@infoline @expr{erf(x) = 2 integ(exp(-(t^2)), t, 0, x) / sqrt(pi)}. 18611@infoline @expr{erf(x) = 2 integ(exp(-(t^2)), t, 0, x) / sqrt(pi)}.
18612The complementary error function @kbd{I f e} (@code{calc-erfc}) [@code{erfc}] 18612The complementary error function @kbd{I f e} (@code{calc-erfc}) [@code{erfc}]
@@ -18784,9 +18784,9 @@ The @kbd{k r} (@code{calc-random}) [@code{random}] command produces
18784random numbers of various sorts. 18784random numbers of various sorts.
18785 18785
18786Given a positive numeric prefix argument @expr{M}, it produces a random 18786Given a positive numeric prefix argument @expr{M}, it produces a random
18787integer @expr{N} in the range 18787integer @expr{N} in the range
18788@texline @math{0 \le N < M}. 18788@texline @math{0 \le N < M}.
18789@infoline @expr{0 <= N < M}. 18789@infoline @expr{0 <= N < M}.
18790Each possible value @expr{N} appears with equal probability. 18790Each possible value @expr{N} appears with equal probability.
18791 18791
18792With no numeric prefix argument, the @kbd{k r} command takes its argument 18792With no numeric prefix argument, the @kbd{k r} command takes its argument
@@ -18794,17 +18794,17 @@ from the stack instead. Once again, if this is a positive integer @expr{M}
18794the result is a random integer less than @expr{M}. However, note that 18794the result is a random integer less than @expr{M}. However, note that
18795while numeric prefix arguments are limited to six digits or so, an @expr{M} 18795while numeric prefix arguments are limited to six digits or so, an @expr{M}
18796taken from the stack can be arbitrarily large. If @expr{M} is negative, 18796taken from the stack can be arbitrarily large. If @expr{M} is negative,
18797the result is a random integer in the range 18797the result is a random integer in the range
18798@texline @math{M < N \le 0}. 18798@texline @math{M < N \le 0}.
18799@infoline @expr{M < N <= 0}. 18799@infoline @expr{M < N <= 0}.
18800 18800
18801If the value on the stack is a floating-point number @expr{M}, the result 18801If the value on the stack is a floating-point number @expr{M}, the result
18802is a random floating-point number @expr{N} in the range 18802is a random floating-point number @expr{N} in the range
18803@texline @math{0 \le N < M} 18803@texline @math{0 \le N < M}
18804@infoline @expr{0 <= N < M} 18804@infoline @expr{0 <= N < M}
18805or 18805or
18806@texline @math{M < N \le 0}, 18806@texline @math{M < N \le 0},
18807@infoline @expr{M < N <= 0}, 18807@infoline @expr{M < N <= 0},
18808according to the sign of @expr{M}. 18808according to the sign of @expr{M}.
18809 18809
18810If @expr{M} is zero, the result is a Gaussian-distributed random real 18810If @expr{M} is zero, the result is a Gaussian-distributed random real
@@ -18812,14 +18812,14 @@ number; the distribution has a mean of zero and a standard deviation
18812of one. The algorithm used generates random numbers in pairs; thus, 18812of one. The algorithm used generates random numbers in pairs; thus,
18813every other call to this function will be especially fast. 18813every other call to this function will be especially fast.
18814 18814
18815If @expr{M} is an error form 18815If @expr{M} is an error form
18816@texline @math{m} @code{+/-} @math{\sigma} 18816@texline @math{m} @code{+/-} @math{\sigma}
18817@infoline @samp{m +/- s} 18817@infoline @samp{m +/- s}
18818where @var{m} and 18818where @var{m} and
18819@texline @math{\sigma} 18819@texline @math{\sigma}
18820@infoline @var{s} 18820@infoline @var{s}
18821are both real numbers, the result uses a Gaussian distribution with mean 18821are both real numbers, the result uses a Gaussian distribution with mean
18822@var{m} and standard deviation 18822@var{m} and standard deviation
18823@texline @math{\sigma}. 18823@texline @math{\sigma}.
18824@infoline @var{s}. 18824@infoline @var{s}.
18825 18825
@@ -18932,9 +18932,9 @@ generators that are typically used to implement @code{random}.
18932 18932
18933If @code{RandSeed} contains an integer, Calc uses this integer to 18933If @code{RandSeed} contains an integer, Calc uses this integer to
18934seed an ``additive congruential'' method (Knuth's algorithm 3.2.2A, 18934seed an ``additive congruential'' method (Knuth's algorithm 3.2.2A,
18935computing 18935computing
18936@texline @math{X_{n-55} - X_{n-24}}. 18936@texline @math{X_{n-55} - X_{n-24}}.
18937@infoline @expr{X_n-55 - X_n-24}). 18937@infoline @expr{X_n-55 - X_n-24}).
18938This method expands the seed 18938This method expands the seed
18939value into a large table which is maintained internally; the variable 18939value into a large table which is maintained internally; the variable
18940@code{RandSeed} is changed from, e.g., 42 to the vector @expr{[42]} 18940@code{RandSeed} is changed from, e.g., 42 to the vector @expr{[42]}
@@ -18970,18 +18970,18 @@ value.
18970To create a random floating-point number with precision @var{p}, Calc 18970To create a random floating-point number with precision @var{p}, Calc
18971simply creates a random @var{p}-digit integer and multiplies by 18971simply creates a random @var{p}-digit integer and multiplies by
18972@texline @math{10^{-p}}. 18972@texline @math{10^{-p}}.
18973@infoline @expr{10^-p}. 18973@infoline @expr{10^-p}.
18974The resulting random numbers should be very clean, but note 18974The resulting random numbers should be very clean, but note
18975that relatively small numbers will have few significant random digits. 18975that relatively small numbers will have few significant random digits.
18976In other words, with a precision of 12, you will occasionally get 18976In other words, with a precision of 12, you will occasionally get
18977numbers on the order of 18977numbers on the order of
18978@texline @math{10^{-9}} 18978@texline @math{10^{-9}}
18979@infoline @expr{10^-9} 18979@infoline @expr{10^-9}
18980or 18980or
18981@texline @math{10^{-10}}, 18981@texline @math{10^{-10}},
18982@infoline @expr{10^-10}, 18982@infoline @expr{10^-10},
18983but those numbers will only have two or three random digits since they 18983but those numbers will only have two or three random digits since they
18984correspond to small integers times 18984correspond to small integers times
18985@texline @math{10^{-12}}. 18985@texline @math{10^{-12}}.
18986@infoline @expr{10^-12}. 18986@infoline @expr{10^-12}.
18987 18987
@@ -19032,7 +19032,7 @@ numbers.
19032@tindex egcd 19032@tindex egcd
19033The @kbd{k E} (@code{calc-extended-gcd}) [@code{egcd}] command computes 19033The @kbd{k E} (@code{calc-extended-gcd}) [@code{egcd}] command computes
19034the GCD of two integers @expr{x} and @expr{y} and returns a vector 19034the GCD of two integers @expr{x} and @expr{y} and returns a vector
19035@expr{[g, a, b]} where 19035@expr{[g, a, b]} where
19036@texline @math{g = \gcd(x,y) = a x + b y}. 19036@texline @math{g = \gcd(x,y) = a x + b y}.
19037@infoline @expr{g = gcd(x,y) = a x + b y}. 19037@infoline @expr{g = gcd(x,y) = a x + b y}.
19038 19038
@@ -19119,11 +19119,11 @@ functions.
19119@tindex stir1 19119@tindex stir1
19120@tindex stir2 19120@tindex stir2
19121The @kbd{k s} (@code{calc-stirling-number}) [@code{stir1}] command 19121The @kbd{k s} (@code{calc-stirling-number}) [@code{stir1}] command
19122computes a Stirling number of the first 19122computes a Stirling number of the first
19123@texline kind@tie{}@math{n \brack m}, 19123@texline kind@tie{}@math{n \brack m},
19124@infoline kind, 19124@infoline kind,
19125given two integers @expr{n} and @expr{m} on the stack. The @kbd{H k s} 19125given two integers @expr{n} and @expr{m} on the stack. The @kbd{H k s}
19126[@code{stir2}] command computes a Stirling number of the second 19126[@code{stir2}] command computes a Stirling number of the second
19127@texline kind@tie{}@math{n \brace m}. 19127@texline kind@tie{}@math{n \brace m}.
19128@infoline kind. 19128@infoline kind.
19129These are the number of @expr{m}-cycle permutations of @expr{n} objects, 19129These are the number of @expr{m}-cycle permutations of @expr{n} objects,
@@ -19202,7 +19202,7 @@ analogously finds the next prime less than a given number.
19202@pindex calc-totient 19202@pindex calc-totient
19203@tindex totient 19203@tindex totient
19204The @kbd{k t} (@code{calc-totient}) [@code{totient}] command computes the 19204The @kbd{k t} (@code{calc-totient}) [@code{totient}] command computes the
19205Euler ``totient'' 19205Euler ``totient''
19206@texline function@tie{}@math{\phi(n)}, 19206@texline function@tie{}@math{\phi(n)},
19207@infoline function, 19207@infoline function,
19208the number of integers less than @expr{n} which 19208the number of integers less than @expr{n} which
@@ -19277,7 +19277,7 @@ recover the original arguments but substitute a new value for @expr{x}.)
19277@tindex ltpc 19277@tindex ltpc
19278The @samp{utpc(x,v)} function uses the chi-square distribution with 19278The @samp{utpc(x,v)} function uses the chi-square distribution with
19279@texline @math{\nu} 19279@texline @math{\nu}
19280@infoline @expr{v} 19280@infoline @expr{v}
19281degrees of freedom. It is the probability that a model is 19281degrees of freedom. It is the probability that a model is
19282correct if its chi-square statistic is @expr{x}. 19282correct if its chi-square statistic is @expr{x}.
19283 19283
@@ -19293,10 +19293,10 @@ correct if its chi-square statistic is @expr{x}.
19293@end ignore 19293@end ignore
19294@tindex ltpf 19294@tindex ltpf
19295The @samp{utpf(F,v1,v2)} function uses the F distribution, used in 19295The @samp{utpf(F,v1,v2)} function uses the F distribution, used in
19296various statistical tests. The parameters 19296various statistical tests. The parameters
19297@texline @math{\nu_1} 19297@texline @math{\nu_1}
19298@infoline @expr{v1} 19298@infoline @expr{v1}
19299and 19299and
19300@texline @math{\nu_2} 19300@texline @math{\nu_2}
19301@infoline @expr{v2} 19301@infoline @expr{v2}
19302are the degrees of freedom in the numerator and denominator, 19302are the degrees of freedom in the numerator and denominator,
@@ -19314,9 +19314,9 @@ respectively, used in computing the statistic @expr{F}.
19314@end ignore 19314@end ignore
19315@tindex ltpn 19315@tindex ltpn
19316The @samp{utpn(x,m,s)} function uses a normal (Gaussian) distribution 19316The @samp{utpn(x,m,s)} function uses a normal (Gaussian) distribution
19317with mean @expr{m} and standard deviation 19317with mean @expr{m} and standard deviation
19318@texline @math{\sigma}. 19318@texline @math{\sigma}.
19319@infoline @expr{s}. 19319@infoline @expr{s}.
19320It is the probability that such a normal-distributed random variable 19320It is the probability that such a normal-distributed random variable
19321would exceed @expr{x}. 19321would exceed @expr{x}.
19322 19322
@@ -19347,20 +19347,20 @@ Poisson random events will occur.
19347@end ignore 19347@end ignore
19348@tindex ltpt 19348@tindex ltpt
19349The @samp{utpt(t,v)} function uses the Student's ``t'' distribution 19349The @samp{utpt(t,v)} function uses the Student's ``t'' distribution
19350with 19350with
19351@texline @math{\nu} 19351@texline @math{\nu}
19352@infoline @expr{v} 19352@infoline @expr{v}
19353degrees of freedom. It is the probability that a 19353degrees of freedom. It is the probability that a
19354t-distributed random variable will be greater than @expr{t}. 19354t-distributed random variable will be greater than @expr{t}.
19355(Note: This computes the distribution function 19355(Note: This computes the distribution function
19356@texline @math{A(t|\nu)} 19356@texline @math{A(t|\nu)}
19357@infoline @expr{A(t|v)} 19357@infoline @expr{A(t|v)}
19358where 19358where
19359@texline @math{A(0|\nu) = 1} 19359@texline @math{A(0|\nu) = 1}
19360@infoline @expr{A(0|v) = 1} 19360@infoline @expr{A(0|v) = 1}
19361and 19361and
19362@texline @math{A(\infty|\nu) \to 0}. 19362@texline @math{A(\infty|\nu) \to 0}.
19363@infoline @expr{A(inf|v) -> 0}. 19363@infoline @expr{A(inf|v) -> 0}.
19364The @code{UTPT} operation on the HP-48 uses a different definition which 19364The @code{UTPT} operation on the HP-48 uses a different definition which
19365returns half of Calc's value: @samp{UTPT(t,v) = .5*utpt(t,v)}.) 19365returns half of Calc's value: @samp{UTPT(t,v) = .5*utpt(t,v)}.)
19366 19366
@@ -19670,7 +19670,7 @@ prefix, if specified, must match the size of the vector. If the value on
19670the stack is a scalar, it is used for each element on the diagonal, and 19670the stack is a scalar, it is used for each element on the diagonal, and
19671the prefix argument is required. 19671the prefix argument is required.
19672 19672
19673To build a constant square matrix, e.g., a 19673To build a constant square matrix, e.g., a
19674@texline @math{3\times3} 19674@texline @math{3\times3}
19675@infoline 3x3 19675@infoline 3x3
19676matrix filled with ones, use @kbd{0 M-3 v d 1 +}, i.e., build a zero 19676matrix filled with ones, use @kbd{0 M-3 v d 1 +}, i.e., build a zero
@@ -19911,7 +19911,7 @@ command.
19911With the Hyperbolic flag, @kbd{H v l} [@code{mdims}] computes a vector 19911With the Hyperbolic flag, @kbd{H v l} [@code{mdims}] computes a vector
19912of the dimensions of a vector, matrix, or higher-order object. For 19912of the dimensions of a vector, matrix, or higher-order object. For
19913example, @samp{mdims([[a,b,c],[d,e,f]])} returns @samp{[2, 3]} since 19913example, @samp{mdims([[a,b,c],[d,e,f]])} returns @samp{[2, 3]} since
19914its argument is a 19914its argument is a
19915@texline @math{2\times3} 19915@texline @math{2\times3}
19916@infoline 2x3 19916@infoline 2x3
19917matrix. 19917matrix.
@@ -19945,17 +19945,17 @@ If the number of columns does not evenly divide the number of elements
19945in the vector, the last row will be short and the result will not be 19945in the vector, the last row will be short and the result will not be
19946suitable for use as a matrix. For example, with the matrix 19946suitable for use as a matrix. For example, with the matrix
19947@samp{[[1, 2], @w{[3, 4]}]} on the stack, @kbd{v a 4} produces 19947@samp{[[1, 2], @w{[3, 4]}]} on the stack, @kbd{v a 4} produces
19948@samp{[[1, 2, 3, 4]]} (a 19948@samp{[[1, 2, 3, 4]]} (a
19949@texline @math{1\times4} 19949@texline @math{1\times4}
19950@infoline 1x4 19950@infoline 1x4
19951matrix), @kbd{v a 1} produces @samp{[[1], [2], [3], [4]]} (a 19951matrix), @kbd{v a 1} produces @samp{[[1], [2], [3], [4]]} (a
19952@texline @math{4\times1} 19952@texline @math{4\times1}
19953@infoline 4x1 19953@infoline 4x1
19954matrix), @kbd{v a 2} produces @samp{[[1, 2], [3, 4]]} (the original 19954matrix), @kbd{v a 2} produces @samp{[[1, 2], [3, 4]]} (the original
19955@texline @math{2\times2} 19955@texline @math{2\times2}
19956@infoline 2x2 19956@infoline 2x2
19957matrix), @w{@kbd{v a 3}} produces @samp{[[1, 2, 3], [4]]} (not a 19957matrix), @w{@kbd{v a 3}} produces @samp{[[1, 2, 3], [4]]} (not a
19958matrix), and @kbd{v a 0} produces the flattened list 19958matrix), and @kbd{v a 0} produces the flattened list
19959@samp{[1, 2, @w{3, 4}]}. 19959@samp{[1, 2, @w{3, 4}]}.
19960 19960
19961@cindex Sorting data 19961@cindex Sorting data
@@ -20040,9 +20040,9 @@ If no prefix is given, then you will be prompted for a vector which
20040will be used to determine the bins. (If a positive integer is given at 20040will be used to determine the bins. (If a positive integer is given at
20041this prompt, it will be still treated as if it were given as a 20041this prompt, it will be still treated as if it were given as a
20042prefix.) Each bin will consist of the interval of numbers closest to 20042prefix.) Each bin will consist of the interval of numbers closest to
20043the corresponding number of this new vector; if the vector 20043the corresponding number of this new vector; if the vector
20044@expr{[a, b, c, ...]} is entered at the prompt, the bins will be 20044@expr{[a, b, c, ...]} is entered at the prompt, the bins will be
20045@expr{(-inf, (a+b)/2]}, @expr{((a+b)/2, (b+c)/2]}, etc. The result of 20045@expr{(-inf, (a+b)/2]}, @expr{((a+b)/2, (b+c)/2]}, etc. The result of
20046this command will be a vector counting how many elements of the 20046this command will be a vector counting how many elements of the
20047original vector are in each bin. 20047original vector are in each bin.
20048 20048
@@ -20313,10 +20313,10 @@ and only if it is in both of the input sets. Thus if the input
20313sets are disjoint, i.e., if they share no common elements, the result 20313sets are disjoint, i.e., if they share no common elements, the result
20314will be the empty vector @samp{[]}. Note that the characters @kbd{V} 20314will be the empty vector @samp{[]}. Note that the characters @kbd{V}
20315and @kbd{^} were chosen to be close to the conventional mathematical 20315and @kbd{^} were chosen to be close to the conventional mathematical
20316notation for set 20316notation for set
20317@texline union@tie{}(@math{A \cup B}) 20317@texline union@tie{}(@math{A \cup B})
20318@infoline union 20318@infoline union
20319and 20319and
20320@texline intersection@tie{}(@math{A \cap B}). 20320@texline intersection@tie{}(@math{A \cap B}).
20321@infoline intersection. 20321@infoline intersection.
20322 20322
@@ -20432,7 +20432,7 @@ the same set. The set may include positive infinity, but must
20432not include any negative numbers. The input is interpreted as a 20432not include any negative numbers. The input is interpreted as a
20433set of integers in the sense of @kbd{V F} (@code{vfloor}). Beware 20433set of integers in the sense of @kbd{V F} (@code{vfloor}). Beware
20434that a simple input like @samp{[100]} can result in a huge integer 20434that a simple input like @samp{[100]} can result in a huge integer
20435representation 20435representation
20436@texline (@math{2^{100}}, a 31-digit integer, in this case). 20436@texline (@math{2^{100}}, a 31-digit integer, in this case).
20437@infoline (@expr{2^100}, a 31-digit integer, in this case). 20437@infoline (@expr{2^100}, a 31-digit integer, in this case).
20438 20438
@@ -20544,10 +20544,10 @@ plus or minus infinity.
20544@cindex Mean of data values 20544@cindex Mean of data values
20545The @kbd{u M} (@code{calc-vector-mean}) [@code{vmean}] command 20545The @kbd{u M} (@code{calc-vector-mean}) [@code{vmean}] command
20546computes the average (arithmetic mean) of the data values. 20546computes the average (arithmetic mean) of the data values.
20547If the inputs are error forms 20547If the inputs are error forms
20548@texline @math{x \pm \sigma}, 20548@texline @math{x \pm \sigma},
20549@infoline @samp{x +/- s}, 20549@infoline @samp{x +/- s},
20550this is the weighted mean of the @expr{x} values with weights 20550this is the weighted mean of the @expr{x} values with weights
20551@texline @math{1 /\sigma^2}. 20551@texline @math{1 /\sigma^2}.
20552@infoline @expr{1 / s^2}. 20552@infoline @expr{1 / s^2}.
20553@tex 20553@tex
@@ -20558,9 +20558,9 @@ If the inputs are not error forms, this is simply the sum of the
20558values divided by the count of the values. 20558values divided by the count of the values.
20559 20559
20560Note that a plain number can be considered an error form with 20560Note that a plain number can be considered an error form with
20561error 20561error
20562@texline @math{\sigma = 0}. 20562@texline @math{\sigma = 0}.
20563@infoline @expr{s = 0}. 20563@infoline @expr{s = 0}.
20564If the input to @kbd{u M} is a mixture of 20564If the input to @kbd{u M} is a mixture of
20565plain numbers and error forms, the result is the mean of the 20565plain numbers and error forms, the result is the mean of the
20566plain numbers, ignoring all values with non-zero errors. (By the 20566plain numbers, ignoring all values with non-zero errors. (By the
@@ -20662,7 +20662,7 @@ for a vector of numbers simply by using the @kbd{A} command.
20662@cindex Standard deviation 20662@cindex Standard deviation
20663@cindex Sample statistics 20663@cindex Sample statistics
20664The @kbd{u S} (@code{calc-vector-sdev}) [@code{vsdev}] command 20664The @kbd{u S} (@code{calc-vector-sdev}) [@code{vsdev}] command
20665computes the standard 20665computes the standard
20666@texline deviation@tie{}@math{\sigma} 20666@texline deviation@tie{}@math{\sigma}
20667@infoline deviation 20667@infoline deviation
20668of the data values. If the values are error forms, the errors are used 20668of the data values. If the values are error forms, the errors are used
@@ -20677,9 +20677,9 @@ $$ \sigma^2 = {1 \over N - 1} \sum (x_i - \mu)^2 $$
20677This function also applies to distributions. The standard deviation 20677This function also applies to distributions. The standard deviation
20678of a single error form is simply the error part. The standard deviation 20678of a single error form is simply the error part. The standard deviation
20679of a continuous interval happens to equal the difference between the 20679of a continuous interval happens to equal the difference between the
20680limits, divided by 20680limits, divided by
20681@texline @math{\sqrt{12}}. 20681@texline @math{\sqrt{12}}.
20682@infoline @expr{sqrt(12)}. 20682@infoline @expr{sqrt(12)}.
20683The standard deviation of an integer interval is the same as the 20683The standard deviation of an integer interval is the same as the
20684standard deviation of a vector of those integers. 20684standard deviation of a vector of those integers.
20685 20685
@@ -20714,7 +20714,7 @@ population standard deviation of the equivalent vector of integers.
20714The @kbd{H u S} (@code{calc-vector-variance}) [@code{vvar}] and 20714The @kbd{H u S} (@code{calc-vector-variance}) [@code{vvar}] and
20715@kbd{H I u S} (@code{calc-vector-pop-variance}) [@code{vpvar}] 20715@kbd{H I u S} (@code{calc-vector-pop-variance}) [@code{vpvar}]
20716commands compute the variance of the data values. The variance 20716commands compute the variance of the data values. The variance
20717is the 20717is the
20718@texline square@tie{}@math{\sigma^2} 20718@texline square@tie{}@math{\sigma^2}
20719@infoline square 20719@infoline square
20720of the standard deviation, i.e., the sum of the 20720of the standard deviation, i.e., the sum of the
@@ -20738,7 +20738,7 @@ The functions in this section take two arguments, which must be
20738vectors of equal size. The vectors are each flattened in the same 20738vectors of equal size. The vectors are each flattened in the same
20739way as by the single-variable statistical functions. Given a numeric 20739way as by the single-variable statistical functions. Given a numeric
20740prefix argument of 1, these functions instead take one object from 20740prefix argument of 1, these functions instead take one object from
20741the stack, which must be an 20741the stack, which must be an
20742@texline @math{N\times2} 20742@texline @math{N\times2}
20743@infoline Nx2 20743@infoline Nx2
20744matrix of data values. Once again, variable names can be used in place 20744matrix of data values. Once again, variable names can be used in place
@@ -20996,7 +20996,7 @@ be prompted for the number of arguments to use.
20996If any argument to @kbd{V M} is a matrix, the operator is normally mapped 20996If any argument to @kbd{V M} is a matrix, the operator is normally mapped
20997across all elements of the matrix. For example, given the matrix 20997across all elements of the matrix. For example, given the matrix
20998@expr{[[1, -2, 3], [-4, 5, -6]]}, @kbd{V M A} takes six absolute values to 20998@expr{[[1, -2, 3], [-4, 5, -6]]}, @kbd{V M A} takes six absolute values to
20999produce another 20999produce another
21000@texline @math{3\times2} 21000@texline @math{3\times2}
21001@infoline 3x2 21001@infoline 3x2
21002matrix, @expr{[[1, 2, 3], [4, 5, 6]]}. 21002matrix, @expr{[[1, 2, 3], [4, 5, 6]]}.
@@ -21612,8 +21612,8 @@ entire four-term sum.
21612@pindex calc-break-selections 21612@pindex calc-break-selections
21613The @kbd{j b} (@code{calc-break-selections}) command controls a mode 21613The @kbd{j b} (@code{calc-break-selections}) command controls a mode
21614in which the ``deep structure'' of these associative formulas shows 21614in which the ``deep structure'' of these associative formulas shows
21615through. Calc actually stores the above formulas as 21615through. Calc actually stores the above formulas as
21616@samp{((a + b) - c) + d} and @samp{x * (y * z)}. (Note that for certain 21616@samp{((a + b) - c) + d} and @samp{x * (y * z)}. (Note that for certain
21617obscure reasons, by default Calc treats multiplication as 21617obscure reasons, by default Calc treats multiplication as
21618right-associative.) Once you have enabled @kbd{j b} mode, selecting 21618right-associative.) Once you have enabled @kbd{j b} mode, selecting
21619with the cursor on the @samp{-} sign would only select the @samp{a + b - 21619with the cursor on the @samp{-} sign would only select the @samp{a + b -
@@ -22098,7 +22098,7 @@ of a quotient you can call it with a zero prefix: @kbd{C-u 0 j *}. For
22098example, if the formula on the stack is @samp{1 / (sqrt(a) + 1)}, you may 22098example, if the formula on the stack is @samp{1 / (sqrt(a) + 1)}, you may
22099wish to eliminate the square root in the denominator by multiplying 22099wish to eliminate the square root in the denominator by multiplying
22100the top and bottom by @samp{sqrt(a) - 1}. If you did this simply by using 22100the top and bottom by @samp{sqrt(a) - 1}. If you did this simply by using
22101a simple @kbd{j *} command, you would get 22101a simple @kbd{j *} command, you would get
22102@samp{(sqrt(a)-1)/ (sqrt(a) (sqrt(a) - 1) + sqrt(a) - 1)}. Instead, 22102@samp{(sqrt(a)-1)/ (sqrt(a) (sqrt(a) - 1) + sqrt(a) - 1)}. Instead,
22103you would probably want to use @kbd{C-u 0 j *}, which would expand the 22103you would probably want to use @kbd{C-u 0 j *}, which would expand the
22104bottom and give you the desired result @samp{(sqrt(a)-1)/(a-1)}. More 22104bottom and give you the desired result @samp{(sqrt(a)-1)/(a-1)}. More
@@ -22405,7 +22405,7 @@ The most basic default simplification is the evaluation of functions.
22405For example, @expr{2 + 3} is evaluated to @expr{5}, and @expr{@tfn{sqrt}(9)} 22405For example, @expr{2 + 3} is evaluated to @expr{5}, and @expr{@tfn{sqrt}(9)}
22406is evaluated to @expr{3}. Evaluation does not occur if the arguments 22406is evaluated to @expr{3}. Evaluation does not occur if the arguments
22407to a function are somehow of the wrong type @expr{@tfn{tan}([2,3,4])}), 22407to a function are somehow of the wrong type @expr{@tfn{tan}([2,3,4])}),
22408range (@expr{@tfn{tan}(90)}), or number (@expr{@tfn{tan}(3,5)}), 22408range (@expr{@tfn{tan}(90)}), or number (@expr{@tfn{tan}(3,5)}),
22409or if the function name is not recognized (@expr{@tfn{f}(5)}), or if 22409or if the function name is not recognized (@expr{@tfn{f}(5)}), or if
22410Symbolic mode (@pxref{Symbolic Mode}) prevents evaluation 22410Symbolic mode (@pxref{Symbolic Mode}) prevents evaluation
22411(@expr{@tfn{sqrt}(2)}). 22411(@expr{@tfn{sqrt}(2)}).
@@ -22452,7 +22452,7 @@ Arithmetic operators like @kbd{+} and @kbd{*} always take two
22452arguments in Calc's internal form. Sums and products of three or 22452arguments in Calc's internal form. Sums and products of three or
22453more terms are arranged by the associative law of algebra into 22453more terms are arranged by the associative law of algebra into
22454a left-associative form for sums, @expr{((a + b) + c) + d}, and 22454a left-associative form for sums, @expr{((a + b) + c) + d}, and
22455(by default) a right-associative form for products, 22455(by default) a right-associative form for products,
22456@expr{a * (b * (c * d))}. Formulas like @expr{(a + b) + (c + d)} are 22456@expr{a * (b * (c * d))}. Formulas like @expr{(a + b) + (c + d)} are
22457rearranged to left-associative form, though this rarely matters since 22457rearranged to left-associative form, though this rarely matters since
22458Calc's algebra commands are designed to hide the inner structure of sums 22458Calc's algebra commands are designed to hide the inner structure of sums
@@ -22533,7 +22533,7 @@ The product @expr{a (b + c)} is distributed over the sum only if
22533rewritten to @expr{a (c - b)}. 22533rewritten to @expr{a (c - b)}.
22534 22534
22535The distributive law of products and powers is used for adjacent 22535The distributive law of products and powers is used for adjacent
22536terms of the product: @expr{x^a x^b} goes to 22536terms of the product: @expr{x^a x^b} goes to
22537@texline @math{x^{a+b}} 22537@texline @math{x^{a+b}}
22538@infoline @expr{x^(a+b)} 22538@infoline @expr{x^(a+b)}
22539where @expr{a} is a number, or an implicit 1 (as in @expr{x}), 22539where @expr{a} is a number, or an implicit 1 (as in @expr{x}),
@@ -22544,9 +22544,9 @@ If the sum of the powers is zero, the product is simplified to
22544@expr{1} or to @samp{idn(1)} if Matrix mode is enabled. 22544@expr{1} or to @samp{idn(1)} if Matrix mode is enabled.
22545 22545
22546The product of a negative power times anything but another negative 22546The product of a negative power times anything but another negative
22547power is changed to use division: 22547power is changed to use division:
22548@texline @math{x^{-2} y} 22548@texline @math{x^{-2} y}
22549@infoline @expr{x^(-2) y} 22549@infoline @expr{x^(-2) y}
22550goes to @expr{y / x^2} unless Matrix mode is 22550goes to @expr{y / x^2} unless Matrix mode is
22551in effect and neither @expr{x} nor @expr{y} are scalar (in which 22551in effect and neither @expr{x} nor @expr{y} are scalar (in which
22552case it is considered unsafe to rearrange the order of the terms). 22552case it is considered unsafe to rearrange the order of the terms).
@@ -22568,13 +22568,13 @@ The quotient @expr{x / 0} is left unsimplified or changed to an
22568infinite quantity, as directed by the current infinite mode. 22568infinite quantity, as directed by the current infinite mode.
22569@xref{Infinite Mode}. 22569@xref{Infinite Mode}.
22570 22570
22571The expression 22571The expression
22572@texline @math{a / b^{-c}} 22572@texline @math{a / b^{-c}}
22573@infoline @expr{a / b^(-c)} 22573@infoline @expr{a / b^(-c)}
22574is changed to @expr{a b^c}, where @expr{-c} is any negative-looking 22574is changed to @expr{a b^c}, where @expr{-c} is any negative-looking
22575power. Also, @expr{1 / b^c} is changed to 22575power. Also, @expr{1 / b^c} is changed to
22576@texline @math{b^{-c}} 22576@texline @math{b^{-c}}
22577@infoline @expr{b^(-c)} 22577@infoline @expr{b^(-c)}
22578for any power @expr{c}. 22578for any power @expr{c}.
22579 22579
22580Also, @expr{(-a) / b} and @expr{a / (-b)} go to @expr{-(a/b)}; 22580Also, @expr{(-a) / b} and @expr{a / (-b)} go to @expr{-(a/b)};
@@ -22614,22 +22614,22 @@ are distributed to @expr{a^c b^c}, @expr{a^c / b^c} only if @expr{c}
22614is an integer, or if either @expr{a} or @expr{b} are nonnegative 22614is an integer, or if either @expr{a} or @expr{b} are nonnegative
22615real numbers. Powers of powers @expr{(a^b)^c} are simplified to 22615real numbers. Powers of powers @expr{(a^b)^c} are simplified to
22616@texline @math{a^{b c}} 22616@texline @math{a^{b c}}
22617@infoline @expr{a^(b c)} 22617@infoline @expr{a^(b c)}
22618only when @expr{c} is an integer and @expr{b c} also 22618only when @expr{c} is an integer and @expr{b c} also
22619evaluates to an integer. Without these restrictions these simplifications 22619evaluates to an integer. Without these restrictions these simplifications
22620would not be safe because of problems with principal values. 22620would not be safe because of problems with principal values.
22621(In other words, 22621(In other words,
22622@texline @math{((-3)^{1/2})^2} 22622@texline @math{((-3)^{1/2})^2}
22623@infoline @expr{((-3)^1:2)^2} 22623@infoline @expr{((-3)^1:2)^2}
22624is safe to simplify, but 22624is safe to simplify, but
22625@texline @math{((-3)^2)^{1/2}} 22625@texline @math{((-3)^2)^{1/2}}
22626@infoline @expr{((-3)^2)^1:2} 22626@infoline @expr{((-3)^2)^1:2}
22627is not.) @xref{Declarations}, for ways to inform Calc that your 22627is not.) @xref{Declarations}, for ways to inform Calc that your
22628variables satisfy these requirements. 22628variables satisfy these requirements.
22629 22629
22630As a special case of this rule, @expr{@tfn{sqrt}(x)^n} is simplified to 22630As a special case of this rule, @expr{@tfn{sqrt}(x)^n} is simplified to
22631@texline @math{x^{n/2}} 22631@texline @math{x^{n/2}}
22632@infoline @expr{x^(n/2)} 22632@infoline @expr{x^(n/2)}
22633only for even integers @expr{n}. 22633only for even integers @expr{n}.
22634 22634
22635If @expr{a} is known to be real, @expr{b} is an even integer, and 22635If @expr{a} is known to be real, @expr{b} is an even integer, and
@@ -22642,13 +22642,13 @@ for any negative-looking expression @expr{-a}.
22642 22642
22643Square roots @expr{@tfn{sqrt}(x)} generally act like one-half powers 22643Square roots @expr{@tfn{sqrt}(x)} generally act like one-half powers
22644@texline @math{x^{1:2}} 22644@texline @math{x^{1:2}}
22645@infoline @expr{x^1:2} 22645@infoline @expr{x^1:2}
22646for the purposes of the above-listed simplifications. 22646for the purposes of the above-listed simplifications.
22647 22647
22648Also, note that 22648Also, note that
22649@texline @math{1 / x^{1:2}} 22649@texline @math{1 / x^{1:2}}
22650@infoline @expr{1 / x^1:2} 22650@infoline @expr{1 / x^1:2}
22651is changed to 22651is changed to
22652@texline @math{x^{-1:2}}, 22652@texline @math{x^{-1:2}},
22653@infoline @expr{x^(-1:2)}, 22653@infoline @expr{x^(-1:2)},
22654but @expr{1 / @tfn{sqrt}(x)} is left alone. 22654but @expr{1 / @tfn{sqrt}(x)} is left alone.
@@ -22660,9 +22660,9 @@ but @expr{1 / @tfn{sqrt}(x)} is left alone.
22660Generic identity matrices (@pxref{Matrix Mode}) are simplified by the 22660Generic identity matrices (@pxref{Matrix Mode}) are simplified by the
22661following rules: @expr{@tfn{idn}(a) + b} to @expr{a + b} if @expr{b} 22661following rules: @expr{@tfn{idn}(a) + b} to @expr{a + b} if @expr{b}
22662is provably scalar, or expanded out if @expr{b} is a matrix; 22662is provably scalar, or expanded out if @expr{b} is a matrix;
22663@expr{@tfn{idn}(a) + @tfn{idn}(b)} to @expr{@tfn{idn}(a + b)}; 22663@expr{@tfn{idn}(a) + @tfn{idn}(b)} to @expr{@tfn{idn}(a + b)};
22664@expr{-@tfn{idn}(a)} to @expr{@tfn{idn}(-a)}; @expr{a @tfn{idn}(b)} to 22664@expr{-@tfn{idn}(a)} to @expr{@tfn{idn}(-a)}; @expr{a @tfn{idn}(b)} to
22665@expr{@tfn{idn}(a b)} if @expr{a} is provably scalar, or to @expr{a b} 22665@expr{@tfn{idn}(a b)} if @expr{a} is provably scalar, or to @expr{a b}
22666if @expr{a} is provably non-scalar; @expr{@tfn{idn}(a) @tfn{idn}(b)} to 22666if @expr{a} is provably non-scalar; @expr{@tfn{idn}(a) @tfn{idn}(b)} to
22667@expr{@tfn{idn}(a b)}; analogous simplifications for quotients involving 22667@expr{@tfn{idn}(a b)}; analogous simplifications for quotients involving
22668@code{idn}; and @expr{@tfn{idn}(a)^n} to @expr{@tfn{idn}(a^n)} where 22668@code{idn}; and @expr{@tfn{idn}(a)^n} to @expr{@tfn{idn}(a^n)} where
@@ -22683,7 +22683,7 @@ The expression @expr{@tfn{abs}(-x)} changes to @expr{@tfn{abs}(x)}.
22683The expression @expr{@tfn{abs}(@tfn{abs}(x))} changes to 22683The expression @expr{@tfn{abs}(@tfn{abs}(x))} changes to
22684@expr{@tfn{abs}(x)}; in fact, @expr{@tfn{abs}(x)} changes to @expr{x} or 22684@expr{@tfn{abs}(x)}; in fact, @expr{@tfn{abs}(x)} changes to @expr{x} or
22685@expr{-x} if @expr{x} is provably nonnegative or nonpositive 22685@expr{-x} if @expr{x} is provably nonnegative or nonpositive
22686(@pxref{Declarations}). 22686(@pxref{Declarations}).
22687 22687
22688While most functions do not recognize the variable @code{i} as an 22688While most functions do not recognize the variable @code{i} as an
22689imaginary number, the @code{arg} function does handle the two cases 22689imaginary number, the @code{arg} function does handle the two cases
@@ -22693,7 +22693,7 @@ The expression @expr{@tfn{conj}(@tfn{conj}(x))} simplifies to @expr{x}.
22693Various other expressions involving @code{conj}, @code{re}, and 22693Various other expressions involving @code{conj}, @code{re}, and
22694@code{im} are simplified, especially if some of the arguments are 22694@code{im} are simplified, especially if some of the arguments are
22695provably real or involve the constant @code{i}. For example, 22695provably real or involve the constant @code{i}. For example,
22696@expr{@tfn{conj}(a + b i)} is changed to 22696@expr{@tfn{conj}(a + b i)} is changed to
22697@expr{@tfn{conj}(a) - @tfn{conj}(b) i}, or to @expr{a - b i} if @expr{a} 22697@expr{@tfn{conj}(a) - @tfn{conj}(b) i}, or to @expr{a - b i} if @expr{a}
22698and @expr{b} are known to be real. 22698and @expr{b} are known to be real.
22699 22699
@@ -22836,7 +22836,7 @@ several ways. (Note that these will be left unevaluated only in
22836Symbolic mode.) First, square integer or rational factors are 22836Symbolic mode.) First, square integer or rational factors are
22837pulled out so that @expr{@tfn{sqrt}(8)} is rewritten as 22837pulled out so that @expr{@tfn{sqrt}(8)} is rewritten as
22838@texline @math{2\,@tfn{sqrt}(2)}. 22838@texline @math{2\,@tfn{sqrt}(2)}.
22839@infoline @expr{2 sqrt(2)}. 22839@infoline @expr{2 sqrt(2)}.
22840Conceptually speaking this implies factoring the argument into primes 22840Conceptually speaking this implies factoring the argument into primes
22841and moving pairs of primes out of the square root, but for reasons of 22841and moving pairs of primes out of the square root, but for reasons of
22842efficiency Calc only looks for primes up to 29. 22842efficiency Calc only looks for primes up to 29.
@@ -22879,7 +22879,7 @@ declared to be an integer.
22879Trigonometric functions are simplified in several ways. Whenever a 22879Trigonometric functions are simplified in several ways. Whenever a
22880products of two trigonometric functions can be replaced by a single 22880products of two trigonometric functions can be replaced by a single
22881function, the replacement is made; for example, 22881function, the replacement is made; for example,
22882@expr{@tfn{tan}(x) @tfn{cos}(x)} is simplified to @expr{@tfn{sin}(x)}. 22882@expr{@tfn{tan}(x) @tfn{cos}(x)} is simplified to @expr{@tfn{sin}(x)}.
22883Reciprocals of trigonometric functions are replaced by their reciprocal 22883Reciprocals of trigonometric functions are replaced by their reciprocal
22884function; for example, @expr{1/@tfn{sec}(x)} is simplified to 22884function; for example, @expr{1/@tfn{sec}(x)} is simplified to
22885@expr{@tfn{cos}(x)}. The corresponding simplifications for the 22885@expr{@tfn{cos}(x)}. The corresponding simplifications for the
@@ -22887,7 +22887,7 @@ hyperbolic functions are also handled.
22887 22887
22888Trigonometric functions of their inverse functions are 22888Trigonometric functions of their inverse functions are
22889simplified. The expression @expr{@tfn{sin}(@tfn{arcsin}(x))} is 22889simplified. The expression @expr{@tfn{sin}(@tfn{arcsin}(x))} is
22890simplified to @expr{x}, and similarly for @code{cos} and @code{tan}. 22890simplified to @expr{x}, and similarly for @code{cos} and @code{tan}.
22891Trigonometric functions of inverses of different trigonometric 22891Trigonometric functions of inverses of different trigonometric
22892functions can also be simplified, as in @expr{@tfn{sin}(@tfn{arccos}(x))} 22892functions can also be simplified, as in @expr{@tfn{sin}(@tfn{arccos}(x))}
22893to @expr{@tfn{sqrt}(1 - x^2)}. 22893to @expr{@tfn{sqrt}(1 - x^2)}.
@@ -22905,30 +22905,30 @@ No simplifications for inverse trigonometric and hyperbolic
22905functions are known, except for negative arguments of @code{arcsin}, 22905functions are known, except for negative arguments of @code{arcsin},
22906@code{arctan}, @code{arcsinh}, and @code{arctanh}. Note that 22906@code{arctan}, @code{arcsinh}, and @code{arctanh}. Note that
22907@expr{@tfn{arcsin}(@tfn{sin}(x))} can @emph{not} safely change to 22907@expr{@tfn{arcsin}(@tfn{sin}(x))} can @emph{not} safely change to
22908@expr{x}, since this only correct within an integer multiple of 22908@expr{x}, since this only correct within an integer multiple of
22909@texline @math{2 \pi} 22909@texline @math{2 \pi}
22910@infoline @expr{2 pi} 22910@infoline @expr{2 pi}
22911radians or 360 degrees. However, @expr{@tfn{arcsinh}(@tfn{sinh}(x))} is 22911radians or 360 degrees. However, @expr{@tfn{arcsinh}(@tfn{sinh}(x))} is
22912simplified to @expr{x} if @expr{x} is known to be real. 22912simplified to @expr{x} if @expr{x} is known to be real.
22913 22913
22914Several simplifications that apply to logarithms and exponentials 22914Several simplifications that apply to logarithms and exponentials
22915are that @expr{@tfn{exp}(@tfn{ln}(x))}, 22915are that @expr{@tfn{exp}(@tfn{ln}(x))},
22916@texline @tfn{e}@math{^{\ln(x)}}, 22916@texline @tfn{e}@math{^{\ln(x)}},
22917@infoline @expr{e^@tfn{ln}(x)}, 22917@infoline @expr{e^@tfn{ln}(x)},
22918and 22918and
22919@texline @math{10^{{\rm log10}(x)}} 22919@texline @math{10^{{\rm log10}(x)}}
22920@infoline @expr{10^@tfn{log10}(x)} 22920@infoline @expr{10^@tfn{log10}(x)}
22921all reduce to @expr{x}. Also, @expr{@tfn{ln}(@tfn{exp}(x))}, etc., can 22921all reduce to @expr{x}. Also, @expr{@tfn{ln}(@tfn{exp}(x))}, etc., can
22922reduce to @expr{x} if @expr{x} is provably real. The form 22922reduce to @expr{x} if @expr{x} is provably real. The form
22923@expr{@tfn{exp}(x)^y} is simplified to @expr{@tfn{exp}(x y)}. If @expr{x} 22923@expr{@tfn{exp}(x)^y} is simplified to @expr{@tfn{exp}(x y)}. If @expr{x}
22924is a suitable multiple of 22924is a suitable multiple of
22925@texline @math{\pi i} 22925@texline @math{\pi i}
22926@infoline @expr{pi i} 22926@infoline @expr{pi i}
22927(as described above for the trigonometric functions), then 22927(as described above for the trigonometric functions), then
22928@expr{@tfn{exp}(x)} or @expr{e^x} will be expanded. Finally, 22928@expr{@tfn{exp}(x)} or @expr{e^x} will be expanded. Finally,
22929@expr{@tfn{ln}(x)} is simplified to a form involving @code{pi} and 22929@expr{@tfn{ln}(x)} is simplified to a form involving @code{pi} and
22930@code{i} where @expr{x} is provably negative, positive imaginary, or 22930@code{i} where @expr{x} is provably negative, positive imaginary, or
22931negative imaginary. 22931negative imaginary.
22932 22932
22933The error functions @code{erf} and @code{erfc} are simplified when 22933The error functions @code{erf} and @code{erfc} are simplified when
22934their arguments are negative-looking or are calls to the @code{conj} 22934their arguments are negative-looking or are calls to the @code{conj}
@@ -23006,18 +23006,18 @@ values of @expr{x} in a certain range; outside that range, values
23006are folded down to the 360-degree range that the inverse trigonometric 23006are folded down to the 360-degree range that the inverse trigonometric
23007functions always produce. 23007functions always produce.
23008 23008
23009Powers of powers @expr{(x^a)^b} are simplified to 23009Powers of powers @expr{(x^a)^b} are simplified to
23010@texline @math{x^{a b}} 23010@texline @math{x^{a b}}
23011@infoline @expr{x^(a b)} 23011@infoline @expr{x^(a b)}
23012for all @expr{a} and @expr{b}. These results will be valid only 23012for all @expr{a} and @expr{b}. These results will be valid only
23013in a restricted range of @expr{x}; for example, in 23013in a restricted range of @expr{x}; for example, in
23014@texline @math{(x^2)^{1:2}} 23014@texline @math{(x^2)^{1:2}}
23015@infoline @expr{(x^2)^1:2} 23015@infoline @expr{(x^2)^1:2}
23016the powers cancel to get @expr{x}, which is valid for positive values 23016the powers cancel to get @expr{x}, which is valid for positive values
23017of @expr{x} but not for negative or complex values. 23017of @expr{x} but not for negative or complex values.
23018 23018
23019Similarly, @expr{@tfn{sqrt}(x^a)} and @expr{@tfn{sqrt}(x)^a} are both 23019Similarly, @expr{@tfn{sqrt}(x^a)} and @expr{@tfn{sqrt}(x)^a} are both
23020simplified (possibly unsafely) to 23020simplified (possibly unsafely) to
23021@texline @math{x^{a/2}}. 23021@texline @math{x^{a/2}}.
23022@infoline @expr{x^(a/2)}. 23022@infoline @expr{x^(a/2)}.
23023 23023
@@ -23027,7 +23027,7 @@ Forms like @expr{@tfn{sqrt}(1 - sin(x)^2)} are simplified to, e.g.,
23027 23027
23028Arguments of square roots are partially factored to look for 23028Arguments of square roots are partially factored to look for
23029squared terms that can be extracted. For example, 23029squared terms that can be extracted. For example,
23030@expr{@tfn{sqrt}(a^2 b^3 + a^3 b^2)} simplifies to 23030@expr{@tfn{sqrt}(a^2 b^3 + a^3 b^2)} simplifies to
23031@expr{a b @tfn{sqrt}(a+b)}. 23031@expr{a b @tfn{sqrt}(a+b)}.
23032 23032
23033The simplifications of @expr{@tfn{ln}(@tfn{exp}(x))}, 23033The simplifications of @expr{@tfn{ln}(@tfn{exp}(x))},
@@ -23093,9 +23093,9 @@ number for an answer, then the quotient simplifies to that number.
23093 23093
23094For powers and square roots, the ``unsafe'' simplifications 23094For powers and square roots, the ``unsafe'' simplifications
23095@expr{(a b)^c} to @expr{a^c b^c}, @expr{(a/b)^c} to @expr{a^c / b^c}, 23095@expr{(a b)^c} to @expr{a^c b^c}, @expr{(a/b)^c} to @expr{a^c / b^c},
23096and @expr{(a^b)^c} to 23096and @expr{(a^b)^c} to
23097@texline @math{a^{b c}} 23097@texline @math{a^{b c}}
23098@infoline @expr{a^(b c)} 23098@infoline @expr{a^(b c)}
23099are done if the powers are real numbers. (These are safe in the context 23099are done if the powers are real numbers. (These are safe in the context
23100of units because all numbers involved can reasonably be assumed to be 23100of units because all numbers involved can reasonably be assumed to be
23101real.) 23101real.)
@@ -23108,12 +23108,12 @@ according to the previous paragraph. For example, @samp{acre^1.5}
23108is simplified by noting that @expr{1.5 = 3:2}, that @samp{acre} 23108is simplified by noting that @expr{1.5 = 3:2}, that @samp{acre}
23109is defined in terms of @samp{m^2}, and that the 2 in the power of 23109is defined in terms of @samp{m^2}, and that the 2 in the power of
23110@code{m} is a multiple of 2 in @expr{3:2}. Thus, @code{acre^1.5} is 23110@code{m} is a multiple of 2 in @expr{3:2}. Thus, @code{acre^1.5} is
23111replaced by approximately 23111replaced by approximately
23112@texline @math{(4046 m^2)^{1.5}} 23112@texline @math{(4046 m^2)^{1.5}}
23113@infoline @expr{(4046 m^2)^1.5}, 23113@infoline @expr{(4046 m^2)^1.5},
23114which is then changed to 23114which is then changed to
23115@texline @math{4046^{1.5} \, (m^2)^{1.5}}, 23115@texline @math{4046^{1.5} \, (m^2)^{1.5}},
23116@infoline @expr{4046^1.5 (m^2)^1.5}, 23116@infoline @expr{4046^1.5 (m^2)^1.5},
23117then to @expr{257440 m^3}. 23117then to @expr{257440 m^3}.
23118 23118
23119The functions @code{float}, @code{frac}, @code{clean}, @code{abs}, 23119The functions @code{float}, @code{frac}, @code{clean}, @code{abs},
@@ -23401,7 +23401,7 @@ answer!
23401 23401
23402If you use the @code{deriv} function directly in an algebraic formula, 23402If you use the @code{deriv} function directly in an algebraic formula,
23403you can write @samp{deriv(f,x,x0)} which represents the derivative 23403you can write @samp{deriv(f,x,x0)} which represents the derivative
23404of @expr{f} with respect to @expr{x}, evaluated at the point 23404of @expr{f} with respect to @expr{x}, evaluated at the point
23405@texline @math{x=x_0}. 23405@texline @math{x=x_0}.
23406@infoline @expr{x=x0}. 23406@infoline @expr{x=x0}.
23407 23407
@@ -23441,7 +23441,7 @@ respect to a prompted-for variable. The integrator is not guaranteed to
23441work for all integrable functions, but it is able to integrate several 23441work for all integrable functions, but it is able to integrate several
23442large classes of formulas. In particular, any polynomial or rational 23442large classes of formulas. In particular, any polynomial or rational
23443function (a polynomial divided by a polynomial) is acceptable. 23443function (a polynomial divided by a polynomial) is acceptable.
23444(Rational functions don't have to be in explicit quotient form, however; 23444(Rational functions don't have to be in explicit quotient form, however;
23445@texline @math{x/(1+x^{-2})} 23445@texline @math{x/(1+x^{-2})}
23446@infoline @expr{x/(1+x^-2)} 23446@infoline @expr{x/(1+x^-2)}
23447is not strictly a quotient of polynomials, but it is equivalent to 23447is not strictly a quotient of polynomials, but it is equivalent to
@@ -23472,7 +23472,7 @@ integral $\int_a^b f(x) \, dx$.
23472 23472
23473Please note that the current implementation of Calc's integrator sometimes 23473Please note that the current implementation of Calc's integrator sometimes
23474produces results that are significantly more complex than they need to 23474produces results that are significantly more complex than they need to
23475be. For example, the integral Calc finds for 23475be. For example, the integral Calc finds for
23476@texline @math{1/(x+\sqrt{x^2+1})} 23476@texline @math{1/(x+\sqrt{x^2+1})}
23477@infoline @expr{1/(x+sqrt(x^2+1))} 23477@infoline @expr{1/(x+sqrt(x^2+1))}
23478is several times more complicated than the answer Mathematica 23478is several times more complicated than the answer Mathematica
@@ -23480,11 +23480,11 @@ returns for the same input, although the two forms are numerically
23480equivalent. Also, any indefinite integral should be considered to have 23480equivalent. Also, any indefinite integral should be considered to have
23481an arbitrary constant of integration added to it, although Calc does not 23481an arbitrary constant of integration added to it, although Calc does not
23482write an explicit constant of integration in its result. For example, 23482write an explicit constant of integration in its result. For example,
23483Calc's solution for 23483Calc's solution for
23484@texline @math{1/(1+\tan x)} 23484@texline @math{1/(1+\tan x)}
23485@infoline @expr{1/(1+tan(x))} 23485@infoline @expr{1/(1+tan(x))}
23486differs from the solution given in the @emph{CRC Math Tables} by a 23486differs from the solution given in the @emph{CRC Math Tables} by a
23487constant factor of 23487constant factor of
23488@texline @math{\pi i / 2} 23488@texline @math{\pi i / 2}
23489@infoline @expr{pi i / 2}, 23489@infoline @expr{pi i / 2},
23490due to a different choice of constant of integration. 23490due to a different choice of constant of integration.
@@ -23544,9 +23544,9 @@ in your @code{IntegRules}.
23544@tindex Ei 23544@tindex Ei
23545As a more serious example, the expression @samp{exp(x)/x} cannot be 23545As a more serious example, the expression @samp{exp(x)/x} cannot be
23546integrated in terms of the standard functions, so the ``exponential 23546integrated in terms of the standard functions, so the ``exponential
23547integral'' function 23547integral'' function
23548@texline @math{{\rm Ei}(x)} 23548@texline @math{{\rm Ei}(x)}
23549@infoline @expr{Ei(x)} 23549@infoline @expr{Ei(x)}
23550was invented to describe it. 23550was invented to describe it.
23551We can get Calc to do this integral in terms of a made-up @code{Ei} 23551We can get Calc to do this integral in terms of a made-up @code{Ei}
23552function by adding the rule @samp{[integtry(exp(x)/x, x) := Ei(x)]} 23552function by adding the rule @samp{[integtry(exp(x)/x, x) := Ei(x)]}
@@ -23717,18 +23717,18 @@ form @expr{X = 0}.
23717 23717
23718This command also works for inequalities, as in @expr{y < 3x + 6}. 23718This command also works for inequalities, as in @expr{y < 3x + 6}.
23719Some inequalities cannot be solved where the analogous equation could 23719Some inequalities cannot be solved where the analogous equation could
23720be; for example, solving 23720be; for example, solving
23721@texline @math{a < b \, c} 23721@texline @math{a < b \, c}
23722@infoline @expr{a < b c} 23722@infoline @expr{a < b c}
23723for @expr{b} is impossible 23723for @expr{b} is impossible
23724without knowing the sign of @expr{c}. In this case, @kbd{a S} will 23724without knowing the sign of @expr{c}. In this case, @kbd{a S} will
23725produce the result 23725produce the result
23726@texline @math{b \mathbin{\hbox{\code{!=}}} a/c} 23726@texline @math{b \mathbin{\hbox{\code{!=}}} a/c}
23727@infoline @expr{b != a/c} 23727@infoline @expr{b != a/c}
23728(using the not-equal-to operator) to signify that the direction of the 23728(using the not-equal-to operator) to signify that the direction of the
23729inequality is now unknown. The inequality 23729inequality is now unknown. The inequality
23730@texline @math{a \le b \, c} 23730@texline @math{a \le b \, c}
23731@infoline @expr{a <= b c} 23731@infoline @expr{a <= b c}
23732is not even partially solved. @xref{Declarations}, for a way to tell 23732is not even partially solved. @xref{Declarations}, for a way to tell
23733Calc that the signs of the variables in a formula are in fact known. 23733Calc that the signs of the variables in a formula are in fact known.
23734 23734
@@ -24186,13 +24186,13 @@ value of the variable which minimizes the formula's value, along
24186with the minimum value itself. 24186with the minimum value itself.
24187 24187
24188Note that this command looks for a @emph{local} minimum. Many functions 24188Note that this command looks for a @emph{local} minimum. Many functions
24189have more than one minimum; some, like 24189have more than one minimum; some, like
24190@texline @math{x \sin x}, 24190@texline @math{x \sin x},
24191@infoline @expr{x sin(x)}, 24191@infoline @expr{x sin(x)},
24192have infinitely many. In fact, there is no easy way to define the 24192have infinitely many. In fact, there is no easy way to define the
24193``global'' minimum of 24193``global'' minimum of
24194@texline @math{x \sin x} 24194@texline @math{x \sin x}
24195@infoline @expr{x sin(x)} 24195@infoline @expr{x sin(x)}
24196but Calc can still locate any particular local minimum 24196but Calc can still locate any particular local minimum
24197for you. Calc basically goes downhill from the initial guess until it 24197for you. Calc basically goes downhill from the initial guess until it
24198finds a point at which the function's value is greater both to the left 24198finds a point at which the function's value is greater both to the left
@@ -24271,7 +24271,7 @@ to be determined. For a typical set of measured data there will be
24271no single @expr{m} and @expr{b} that exactly fit the data; in this 24271no single @expr{m} and @expr{b} that exactly fit the data; in this
24272case, Calc chooses values of the parameters that provide the closest 24272case, Calc chooses values of the parameters that provide the closest
24273possible fit. The model formula can be entered in various ways after 24273possible fit. The model formula can be entered in various ways after
24274the key sequence @kbd{a F} is pressed. 24274the key sequence @kbd{a F} is pressed.
24275 24275
24276If the letter @kbd{P} is pressed after @kbd{a F} but before the model 24276If the letter @kbd{P} is pressed after @kbd{a F} but before the model
24277description is entered, the data as well as the model formula will be 24277description is entered, the data as well as the model formula will be
@@ -24319,7 +24319,7 @@ the @dfn{parameters} of the model.
24319 24319
24320The @kbd{a F} command takes the data set to be fitted from the stack. 24320The @kbd{a F} command takes the data set to be fitted from the stack.
24321By default, it expects the data in the form of a matrix. For example, 24321By default, it expects the data in the form of a matrix. For example,
24322for a linear or polynomial fit, this would be a 24322for a linear or polynomial fit, this would be a
24323@texline @math{2\times N} 24323@texline @math{2\times N}
24324@infoline 2xN 24324@infoline 2xN
24325matrix where the first row is a list of @expr{x} values and the second 24325matrix where the first row is a list of @expr{x} values and the second
@@ -24327,10 +24327,10 @@ row has the corresponding @expr{y} values. For the multilinear fit
24327shown above, the matrix would have four rows (@expr{x_1}, @expr{x_2}, 24327shown above, the matrix would have four rows (@expr{x_1}, @expr{x_2},
24328@expr{x_3}, and @expr{y}, respectively). 24328@expr{x_3}, and @expr{y}, respectively).
24329 24329
24330If you happen to have an 24330If you happen to have an
24331@texline @math{N\times2} 24331@texline @math{N\times2}
24332@infoline Nx2 24332@infoline Nx2
24333matrix instead of a 24333matrix instead of a
24334@texline @math{2\times N} 24334@texline @math{2\times N}
24335@infoline 2xN 24335@infoline 2xN
24336matrix, just press @kbd{v t} first to transpose the matrix. 24336matrix, just press @kbd{v t} first to transpose the matrix.
@@ -24425,13 +24425,13 @@ $$ \chi^2 = \sum_{i=1}^N (y_i - (a + b x_i))^2 $$
24425which is clearly zero if @expr{a + b x} exactly fits all data points, 24425which is clearly zero if @expr{a + b x} exactly fits all data points,
24426and increases as various @expr{a + b x_i} values fail to match the 24426and increases as various @expr{a + b x_i} values fail to match the
24427corresponding @expr{y_i} values. There are several reasons why the 24427corresponding @expr{y_i} values. There are several reasons why the
24428summand is squared, one of them being to ensure that 24428summand is squared, one of them being to ensure that
24429@texline @math{\chi^2 \ge 0}. 24429@texline @math{\chi^2 \ge 0}.
24430@infoline @expr{chi^2 >= 0}. 24430@infoline @expr{chi^2 >= 0}.
24431Least-squares fitting simply chooses the values of @expr{a} and @expr{b} 24431Least-squares fitting simply chooses the values of @expr{a} and @expr{b}
24432for which the error 24432for which the error
24433@texline @math{\chi^2} 24433@texline @math{\chi^2}
24434@infoline @expr{chi^2} 24434@infoline @expr{chi^2}
24435is as small as possible. 24435is as small as possible.
24436 24436
24437Other kinds of models do the same thing but with a different model 24437Other kinds of models do the same thing but with a different model
@@ -24593,9 +24593,9 @@ contain error forms. The data values must either all include errors
24593or all be plain numbers. Error forms can go anywhere but generally 24593or all be plain numbers. Error forms can go anywhere but generally
24594go on the numbers in the last row of the data matrix. If the last 24594go on the numbers in the last row of the data matrix. If the last
24595row contains error forms 24595row contains error forms
24596@texline `@var{y_i}@w{ @tfn{+/-} }@math{\sigma_i}', 24596@texline `@var{y_i}@w{ @tfn{+/-} }@math{\sigma_i}',
24597@infoline `@var{y_i}@w{ @tfn{+/-} }@var{sigma_i}', 24597@infoline `@var{y_i}@w{ @tfn{+/-} }@var{sigma_i}',
24598then the 24598then the
24599@texline @math{\chi^2} 24599@texline @math{\chi^2}
24600@infoline @expr{chi^2} 24600@infoline @expr{chi^2}
24601statistic is now, 24601statistic is now,
@@ -24617,9 +24617,9 @@ the fitting operation.
24617 24617
24618If there are error forms on other rows of the data matrix, all the 24618If there are error forms on other rows of the data matrix, all the
24619errors for a given data point are combined; the square root of the 24619errors for a given data point are combined; the square root of the
24620sum of the squares of the errors forms the 24620sum of the squares of the errors forms the
24621@texline @math{\sigma_i} 24621@texline @math{\sigma_i}
24622@infoline @expr{sigma_i} 24622@infoline @expr{sigma_i}
24623used for the data point. 24623used for the data point.
24624 24624
24625Both @kbd{a F} and @kbd{H a F} can accept error forms in the input 24625Both @kbd{a F} and @kbd{H a F} can accept error forms in the input
@@ -24627,19 +24627,19 @@ matrix, although if you are concerned about error analysis you will
24627probably use @kbd{H a F} so that the output also contains error 24627probably use @kbd{H a F} so that the output also contains error
24628estimates. 24628estimates.
24629 24629
24630If the input contains error forms but all the 24630If the input contains error forms but all the
24631@texline @math{\sigma_i} 24631@texline @math{\sigma_i}
24632@infoline @expr{sigma_i} 24632@infoline @expr{sigma_i}
24633values are the same, it is easy to see that the resulting fitted model 24633values are the same, it is easy to see that the resulting fitted model
24634will be the same as if the input did not have error forms at all 24634will be the same as if the input did not have error forms at all
24635@texline (@math{\chi^2} 24635@texline (@math{\chi^2}
24636@infoline (@expr{chi^2} 24636@infoline (@expr{chi^2}
24637is simply scaled uniformly by 24637is simply scaled uniformly by
24638@texline @math{1 / \sigma^2}, 24638@texline @math{1 / \sigma^2},
24639@infoline @expr{1 / sigma^2}, 24639@infoline @expr{1 / sigma^2},
24640which doesn't affect where it has a minimum). But there @emph{will} be 24640which doesn't affect where it has a minimum). But there @emph{will} be
24641a difference in the estimated errors of the coefficients reported by 24641a difference in the estimated errors of the coefficients reported by
24642@kbd{H a F}. 24642@kbd{H a F}.
24643 24643
24644Consult any text on statistical modeling of data for a discussion 24644Consult any text on statistical modeling of data for a discussion
24645of where these error estimates come from and how they should be 24645of where these error estimates come from and how they should be
@@ -24671,18 +24671,18 @@ will have length @expr{M = d+1} with the constant term first.
24671The covariance matrix @expr{C} computed from the fit. This is 24671The covariance matrix @expr{C} computed from the fit. This is
24672an @var{m}x@var{m} symmetric matrix; the diagonal elements 24672an @var{m}x@var{m} symmetric matrix; the diagonal elements
24673@texline @math{C_{jj}} 24673@texline @math{C_{jj}}
24674@infoline @expr{C_j_j} 24674@infoline @expr{C_j_j}
24675are the variances 24675are the variances
24676@texline @math{\sigma_j^2} 24676@texline @math{\sigma_j^2}
24677@infoline @expr{sigma_j^2} 24677@infoline @expr{sigma_j^2}
24678of the parameters. The other elements are covariances 24678of the parameters. The other elements are covariances
24679@texline @math{\sigma_{ij}^2} 24679@texline @math{\sigma_{ij}^2}
24680@infoline @expr{sigma_i_j^2} 24680@infoline @expr{sigma_i_j^2}
24681that describe the correlation between pairs of parameters. (A related 24681that describe the correlation between pairs of parameters. (A related
24682set of numbers, the @dfn{linear correlation coefficients} 24682set of numbers, the @dfn{linear correlation coefficients}
24683@texline @math{r_{ij}}, 24683@texline @math{r_{ij}},
24684@infoline @expr{r_i_j}, 24684@infoline @expr{r_i_j},
24685are defined as 24685are defined as
24686@texline @math{\sigma_{ij}^2 / \sigma_i \, \sigma_j}.) 24686@texline @math{\sigma_{ij}^2 / \sigma_i \, \sigma_j}.)
24687@infoline @expr{sigma_i_j^2 / sigma_i sigma_j}.) 24687@infoline @expr{sigma_i_j^2 / sigma_i sigma_j}.)
24688 24688
@@ -24693,35 +24693,35 @@ will instead be an empty vector; this is always the case for the
24693polynomial and multilinear fits described so far. 24693polynomial and multilinear fits described so far.
24694 24694
24695@item 24695@item
24696The value of 24696The value of
24697@texline @math{\chi^2} 24697@texline @math{\chi^2}
24698@infoline @expr{chi^2} 24698@infoline @expr{chi^2}
24699for the fit, calculated by the formulas shown above. This gives a 24699for the fit, calculated by the formulas shown above. This gives a
24700measure of the quality of the fit; statisticians consider 24700measure of the quality of the fit; statisticians consider
24701@texline @math{\chi^2 \approx N - M} 24701@texline @math{\chi^2 \approx N - M}
24702@infoline @expr{chi^2 = N - M} 24702@infoline @expr{chi^2 = N - M}
24703to indicate a moderately good fit (where again @expr{N} is the number of 24703to indicate a moderately good fit (where again @expr{N} is the number of
24704data points and @expr{M} is the number of parameters). 24704data points and @expr{M} is the number of parameters).
24705 24705
24706@item 24706@item
24707A measure of goodness of fit expressed as a probability @expr{Q}. 24707A measure of goodness of fit expressed as a probability @expr{Q}.
24708This is computed from the @code{utpc} probability distribution 24708This is computed from the @code{utpc} probability distribution
24709function using 24709function using
24710@texline @math{\chi^2} 24710@texline @math{\chi^2}
24711@infoline @expr{chi^2} 24711@infoline @expr{chi^2}
24712with @expr{N - M} degrees of freedom. A 24712with @expr{N - M} degrees of freedom. A
24713value of 0.5 implies a good fit; some texts recommend that often 24713value of 0.5 implies a good fit; some texts recommend that often
24714@expr{Q = 0.1} or even 0.001 can signify an acceptable fit. In 24714@expr{Q = 0.1} or even 0.001 can signify an acceptable fit. In
24715particular, 24715particular,
24716@texline @math{\chi^2} 24716@texline @math{\chi^2}
24717@infoline @expr{chi^2} 24717@infoline @expr{chi^2}
24718statistics assume the errors in your inputs 24718statistics assume the errors in your inputs
24719follow a normal (Gaussian) distribution; if they don't, you may 24719follow a normal (Gaussian) distribution; if they don't, you may
24720have to accept smaller values of @expr{Q}. 24720have to accept smaller values of @expr{Q}.
24721 24721
24722The @expr{Q} value is computed only if the input included error 24722The @expr{Q} value is computed only if the input included error
24723estimates. Otherwise, Calc will report the symbol @code{nan} 24723estimates. Otherwise, Calc will report the symbol @code{nan}
24724for @expr{Q}. The reason is that in this case the 24724for @expr{Q}. The reason is that in this case the
24725@texline @math{\chi^2} 24725@texline @math{\chi^2}
24726@infoline @expr{chi^2} 24726@infoline @expr{chi^2}
24727value has effectively been used to estimate the original errors 24727value has effectively been used to estimate the original errors
@@ -24763,7 +24763,7 @@ Power law. @mathit{a x^b y^c}.
24763@item q 24763@item q
24764Quadratic. @mathit{a + b (x-c)^2 + d (x-e)^2}. 24764Quadratic. @mathit{a + b (x-c)^2 + d (x-e)^2}.
24765@item g 24765@item g
24766Gaussian. 24766Gaussian.
24767@texline @math{{a \over b \sqrt{2 \pi}} \exp\left( -{1 \over 2} \left( x - c \over b \right)^2 \right)}. 24767@texline @math{{a \over b \sqrt{2 \pi}} \exp\left( -{1 \over 2} \left( x - c \over b \right)^2 \right)}.
24768@infoline @mathit{(a / b sqrt(2 pi)) exp(-0.5*((x-c)/b)^2)}. 24768@infoline @mathit{(a / b sqrt(2 pi)) exp(-0.5*((x-c)/b)^2)}.
24769@item s 24769@item s
@@ -24788,7 +24788,7 @@ the parameter values from the vector that is placed in the trail.)
24788 24788
24789All models except Gaussian, logistics, Hubbert and polynomials can 24789All models except Gaussian, logistics, Hubbert and polynomials can
24790generalize as shown to any number of independent variables. Also, all 24790generalize as shown to any number of independent variables. Also, all
24791the built-in models except for the logistic and Hubbert curves have an 24791the built-in models except for the logistic and Hubbert curves have an
24792additive or multiplicative parameter shown as @expr{a} in the above table 24792additive or multiplicative parameter shown as @expr{a} in the above table
24793which can be replaced by zero or one, as appropriate, by typing @kbd{h} 24793which can be replaced by zero or one, as appropriate, by typing @kbd{h}
24794before the model key. 24794before the model key.
@@ -24893,9 +24893,9 @@ form @samp{arcsin(y) = a t + b}. The @code{arcsin} function always
24893returns results in the range from @mathit{-90} to 90 degrees (or the 24893returns results in the range from @mathit{-90} to 90 degrees (or the
24894equivalent range in radians). Suppose you had data that you 24894equivalent range in radians). Suppose you had data that you
24895believed to represent roughly three oscillations of a sine wave, 24895believed to represent roughly three oscillations of a sine wave,
24896so that the argument of the sine might go from zero to 24896so that the argument of the sine might go from zero to
24897@texline @math{3\times360} 24897@texline @math{3\times360}
24898@infoline @mathit{3*360} 24898@infoline @mathit{3*360}
24899degrees. 24899degrees.
24900The above model would appear to be a good way to determine the 24900The above model would appear to be a good way to determine the
24901true frequency and phase of the sine wave, but in practice it 24901true frequency and phase of the sine wave, but in practice it
@@ -24955,18 +24955,18 @@ ln(y) = ln(a) + b ln(x)
24955@end example 24955@end example
24956 24956
24957@noindent 24957@noindent
24958which matches the desired form with 24958which matches the desired form with
24959@texline @math{Y = \ln(y)}, 24959@texline @math{Y = \ln(y)},
24960@infoline @expr{Y = ln(y)}, 24960@infoline @expr{Y = ln(y)},
24961@texline @math{A = \ln(a)}, 24961@texline @math{A = \ln(a)},
24962@infoline @expr{A = ln(a)}, 24962@infoline @expr{A = ln(a)},
24963@expr{F = 1}, @expr{B = b}, and 24963@expr{F = 1}, @expr{B = b}, and
24964@texline @math{G = \ln(x)}. 24964@texline @math{G = \ln(x)}.
24965@infoline @expr{G = ln(x)}. 24965@infoline @expr{G = ln(x)}.
24966Calc thus computes the logarithms of your @expr{y} and @expr{x} values, 24966Calc thus computes the logarithms of your @expr{y} and @expr{x} values,
24967does a linear fit for @expr{A} and @expr{B}, then solves to get 24967does a linear fit for @expr{A} and @expr{B}, then solves to get
24968@texline @math{a = \exp(A)} 24968@texline @math{a = \exp(A)}
24969@infoline @expr{a = exp(A)} 24969@infoline @expr{a = exp(A)}
24970and @expr{b = B}. 24970and @expr{b = B}.
24971 24971
24972Another interesting example is the ``quadratic'' model, which can 24972Another interesting example is the ``quadratic'' model, which can
@@ -25015,7 +25015,7 @@ from the list of parameters when you answer the variables prompt.
25015 25015
25016A last desperate step would be to use the general-purpose 25016A last desperate step would be to use the general-purpose
25017@code{minimize} function rather than @code{fit}. After all, both 25017@code{minimize} function rather than @code{fit}. After all, both
25018functions solve the problem of minimizing an expression (the 25018functions solve the problem of minimizing an expression (the
25019@texline @math{\chi^2} 25019@texline @math{\chi^2}
25020@infoline @expr{chi^2} 25020@infoline @expr{chi^2}
25021sum) by adjusting certain parameters in the expression. The @kbd{a F} 25021sum) by adjusting certain parameters in the expression. The @kbd{a F}
@@ -25026,9 +25026,9 @@ command can do the same thing by brute force.
25026A compromise would be to pick out a few parameters without which the 25026A compromise would be to pick out a few parameters without which the
25027fit is linearizable, and use @code{minimize} on a call to @code{fit} 25027fit is linearizable, and use @code{minimize} on a call to @code{fit}
25028which efficiently takes care of the rest of the parameters. The thing 25028which efficiently takes care of the rest of the parameters. The thing
25029to be minimized would be the value of 25029to be minimized would be the value of
25030@texline @math{\chi^2} 25030@texline @math{\chi^2}
25031@infoline @expr{chi^2} 25031@infoline @expr{chi^2}
25032returned as the fifth result of the @code{xfit} function: 25032returned as the fifth result of the @code{xfit} function:
25033 25033
25034@smallexample 25034@smallexample
@@ -25086,13 +25086,13 @@ of the sum of the squares of the errors. It then changes @expr{x}
25086and @expr{y} to be plain numbers, and makes @expr{z} into an error 25086and @expr{y} to be plain numbers, and makes @expr{z} into an error
25087form with this combined error. The @expr{Y(x,y,z)} part of the 25087form with this combined error. The @expr{Y(x,y,z)} part of the
25088linearized model is evaluated, and the result should be an error 25088linearized model is evaluated, and the result should be an error
25089form. The error part of that result is used for 25089form. The error part of that result is used for
25090@texline @math{\sigma_i} 25090@texline @math{\sigma_i}
25091@infoline @expr{sigma_i} 25091@infoline @expr{sigma_i}
25092for the data point. If for some reason @expr{Y(x,y,z)} does not return 25092for the data point. If for some reason @expr{Y(x,y,z)} does not return
25093an error form, the combined error from @expr{z} is used directly for 25093an error form, the combined error from @expr{z} is used directly for
25094@texline @math{\sigma_i}. 25094@texline @math{\sigma_i}.
25095@infoline @expr{sigma_i}. 25095@infoline @expr{sigma_i}.
25096Finally, @expr{z} is also stripped of its error 25096Finally, @expr{z} is also stripped of its error
25097for use in computing @expr{F(x,y,z)}, @expr{G(x,y,z)} and so on; 25097for use in computing @expr{F(x,y,z)}, @expr{G(x,y,z)} and so on;
25098the righthand side of the linearized model is computed in regular 25098the righthand side of the linearized model is computed in regular
@@ -25104,7 +25104,7 @@ depends only on the dependent variable @expr{z}, and in fact is
25104often simply equal to @expr{z}. For common cases like polynomials 25104often simply equal to @expr{z}. For common cases like polynomials
25105and multilinear models, the combined error is simply used as the 25105and multilinear models, the combined error is simply used as the
25106@texline @math{\sigma} 25106@texline @math{\sigma}
25107@infoline @expr{sigma} 25107@infoline @expr{sigma}
25108for the data point with no further ado.) 25108for the data point with no further ado.)
25109 25109
25110@tex 25110@tex
@@ -25481,7 +25481,7 @@ this would be a division by zero. But at @expr{k = k_0}, this
25481formula works out to the indeterminate form @expr{0 / 0}, which 25481formula works out to the indeterminate form @expr{0 / 0}, which
25482Calc will not assume is zero. Better would be to use 25482Calc will not assume is zero. Better would be to use
25483@samp{(k != k_0) ? 1/(k-k_0) : 0}; the @samp{? :} operator does 25483@samp{(k != k_0) ? 1/(k-k_0) : 0}; the @samp{? :} operator does
25484an ``if-then-else'' test: This expression says, ``if 25484an ``if-then-else'' test: This expression says, ``if
25485@texline @math{k \ne k_0}, 25485@texline @math{k \ne k_0},
25486@infoline @expr{k != k_0}, 25486@infoline @expr{k != k_0},
25487then @expr{1/(k-k_0)}, else zero.'' Now the formula @expr{1/(k-k_0)} 25487then @expr{1/(k-k_0)}, else zero.'' Now the formula @expr{1/(k-k_0)}
@@ -26496,16 +26496,16 @@ f(a b) := a f(b) :: real(a)]} is stored in variable @samp{linearF},
26496then the rule set @samp{[f(0) := 0, import(linearF)]} will apply 26496then the rule set @samp{[f(0) := 0, import(linearF)]} will apply
26497all three rules. It is possible to modify the imported rules 26497all three rules. It is possible to modify the imported rules
26498slightly: @samp{import(x, v1, x1, v2, x2, @dots{})} imports 26498slightly: @samp{import(x, v1, x1, v2, x2, @dots{})} imports
26499the rule set @expr{x} with all occurrences of 26499the rule set @expr{x} with all occurrences of
26500@texline @math{v_1}, 26500@texline @math{v_1},
26501@infoline @expr{v1}, 26501@infoline @expr{v1},
26502as either a variable name or a function name, replaced with 26502as either a variable name or a function name, replaced with
26503@texline @math{x_1} 26503@texline @math{x_1}
26504@infoline @expr{x1} 26504@infoline @expr{x1}
26505and so on. (If 26505and so on. (If
26506@texline @math{v_1} 26506@texline @math{v_1}
26507@infoline @expr{v1} 26507@infoline @expr{v1}
26508is used as a function name, then 26508is used as a function name, then
26509@texline @math{x_1} 26509@texline @math{x_1}
26510@infoline @expr{x1} 26510@infoline @expr{x1}
26511must be either a function name itself or a @w{@samp{< >}} nameless 26511must be either a function name itself or a @w{@samp{< >}} nameless
@@ -27609,7 +27609,7 @@ the keyboard macro @kbd{' tri($) @key{RET}} to make a command that applies
27609@code{tri} to the value on the top of the stack. @xref{Programming}. 27609@code{tri} to the value on the top of the stack. @xref{Programming}.
27610 27610
27611@cindex Quaternions 27611@cindex Quaternions
27612The following rule set, contributed by 27612The following rule set, contributed by
27613@texline Fran\c cois 27613@texline Fran\c cois
27614@infoline Francois 27614@infoline Francois
27615Pinard, implements @dfn{quaternions}, a generalization of the concept of 27615Pinard, implements @dfn{quaternions}, a generalization of the concept of
@@ -27764,9 +27764,9 @@ equivalent temperature on the Fahrenheit scale.
27764While many of Calc's conversion factors are exact, some are necessarily 27764While many of Calc's conversion factors are exact, some are necessarily
27765approximate. If Calc is in fraction mode (@pxref{Fraction Mode}), then 27765approximate. If Calc is in fraction mode (@pxref{Fraction Mode}), then
27766unit conversions will try to give exact, rational conversions, but it 27766unit conversions will try to give exact, rational conversions, but it
27767isn't always possible. Given @samp{55 mph} in fraction mode, typing 27767isn't always possible. Given @samp{55 mph} in fraction mode, typing
27768@kbd{u c m/s @key{RET}} produces @samp{15367:625 m/s}, for example, 27768@kbd{u c m/s @key{RET}} produces @samp{15367:625 m/s}, for example,
27769while typing @kbd{u c au/yr @key{RET}} produces 27769while typing @kbd{u c au/yr @key{RET}} produces
27770@samp{5.18665819999e-3 au/yr}. 27770@samp{5.18665819999e-3 au/yr}.
27771 27771
27772If the units you request are inconsistent with the original units, the 27772If the units you request are inconsistent with the original units, the
@@ -27994,7 +27994,7 @@ defined by the @TeX{} typesetting system: @samp{72.27 texpt = 1 in}.
27994Other units used by @TeX{} are available; they are @code{texpc} (a pica), 27994Other units used by @TeX{} are available; they are @code{texpc} (a pica),
27995@code{texbp} (a ``big point'', equal to a standard point which is larger 27995@code{texbp} (a ``big point'', equal to a standard point which is larger
27996than the point used by @TeX{}), @code{texdd} (a Didot point), 27996than the point used by @TeX{}), @code{texdd} (a Didot point),
27997@code{texcc} (a Cicero) and @code{texsp} (a scaled @TeX{} point, 27997@code{texcc} (a Cicero) and @code{texsp} (a scaled @TeX{} point,
27998all dimensions representable in @TeX{} are multiples of this value). 27998all dimensions representable in @TeX{} are multiples of this value).
27999 27999
28000When Calc is using the @TeX{} or La@TeX{} language mode (@pxref{TeX 28000When Calc is using the @TeX{} or La@TeX{} language mode (@pxref{TeX
@@ -28131,17 +28131,17 @@ The units @code{dB} (decibels) and @code{Np} (nepers) are logarithmic
28131units which are manipulated differently than standard units. Calc 28131units which are manipulated differently than standard units. Calc
28132provides commands to work with these logarithmic units. 28132provides commands to work with these logarithmic units.
28133 28133
28134Decibels and nepers are used to measure power quantities as well as 28134Decibels and nepers are used to measure power quantities as well as
28135field quantities (quantities whose squares are proportional to power); 28135field quantities (quantities whose squares are proportional to power);
28136these two types of quantities are handled slightly different from each 28136these two types of quantities are handled slightly different from each
28137other. By default the Calc commands work as if power quantities are 28137other. By default the Calc commands work as if power quantities are
28138being used; with the @kbd{H} prefix the Calc commands work as if field 28138being used; with the @kbd{H} prefix the Calc commands work as if field
28139quantities are being used. 28139quantities are being used.
28140 28140
28141The decibel level of a power 28141The decibel level of a power
28142@infoline @math{P1}, 28142@infoline @math{P1},
28143@texline @math{P_1}, 28143@texline @math{P_1},
28144relative to a reference power 28144relative to a reference power
28145@infoline @math{P0}, 28145@infoline @math{P0},
28146@texline @math{P_0}, 28146@texline @math{P_0},
28147is defined to be 28147is defined to be
@@ -28151,10 +28151,10 @@ is defined to be
28151one-tenth of a bel. The bel, named after Alexander Graham Bell, was 28151one-tenth of a bel. The bel, named after Alexander Graham Bell, was
28152considered to be too large of a unit and was effectively replaced by 28152considered to be too large of a unit and was effectively replaced by
28153the decibel.) If @math{F} is a field quantity with power 28153the decibel.) If @math{F} is a field quantity with power
28154@math{P=k F^2}, then a reference quantity of 28154@math{P=k F^2}, then a reference quantity of
28155@infoline @math{F0} 28155@infoline @math{F0}
28156@texline @math{F_0} 28156@texline @math{F_0}
28157would correspond to a power of 28157would correspond to a power of
28158@infoline @math{P0=k F0^2}. 28158@infoline @math{P0=k F0^2}.
28159@texline @math{P_{0}=kF_{0}^2}. 28159@texline @math{P_{0}=kF_{0}^2}.
28160If 28160If
@@ -28163,7 +28163,7 @@ If
28163then 28163then
28164 28164
28165@ifnottex 28165@ifnottex
28166@example 28166@example
2816710 log10(P1/P0) = 10 log10(F1^2/F0^2) = 20 log10(F1/F0). 2816710 log10(P1/P0) = 10 log10(F1^2/F0^2) = 20 log10(F1/F0).
28168@end example 28168@end example
28169@end ifnottex 28169@end ifnottex
@@ -28175,42 +28175,42 @@ $$ 10 \log_{10}(P_1/P_0) = 10 \log_{10}(F_1^2/F_0^2) = 20
28175@noindent 28175@noindent
28176In order to get the same decibel level regardless of whether a field 28176In order to get the same decibel level regardless of whether a field
28177quantity or the corresponding power quantity is used, the decibel 28177quantity or the corresponding power quantity is used, the decibel
28178level of a field quantity 28178level of a field quantity
28179@infoline @math{F1}, 28179@infoline @math{F1},
28180@texline @math{F_1}, 28180@texline @math{F_1},
28181relative to a reference 28181relative to a reference
28182@infoline @math{F0}, 28182@infoline @math{F0},
28183@texline @math{F_0}, 28183@texline @math{F_0},
28184is defined as 28184is defined as
28185@infoline @math{20 log10(F1/F0) dB}. 28185@infoline @math{20 log10(F1/F0) dB}.
28186@texline @math{20 \log_{10}(F_{1}/F_{0}) {\rm dB}}. 28186@texline @math{20 \log_{10}(F_{1}/F_{0}) {\rm dB}}.
28187For example, the decibel value of a sound pressure level of 28187For example, the decibel value of a sound pressure level of
28188@infoline @math{60 uPa} 28188@infoline @math{60 uPa}
28189@texline @math{60 \mu{\rm Pa}} 28189@texline @math{60 \mu{\rm Pa}}
28190relative to 28190relative to
28191@infoline @math{20 uPa} 28191@infoline @math{20 uPa}
28192@texline @math{20 \mu{\rm Pa}} 28192@texline @math{20 \mu{\rm Pa}}
28193(the threshhold of human hearing) is 28193(the threshold of human hearing) is
28194@infoline @math{20 log10(60 uPa/ 20 uPa) dB = 20 log10(3) dB}, 28194@infoline @math{20 log10(60 uPa/ 20 uPa) dB = 20 log10(3) dB},
28195@texline @math{20 \log_{10}(60 \mu{\rm Pa}/20 \mu{\rm Pa}) {\rm dB} = 20 \log_{10}(3) {\rm dB}}, 28195@texline @math{20 \log_{10}(60 \mu{\rm Pa}/20 \mu{\rm Pa}) {\rm dB} = 20 \log_{10}(3) {\rm dB}},
28196which is about 28196which is about
28197@infoline @math{9.54 dB}. 28197@infoline @math{9.54 dB}.
28198@texline @math{9.54 {\rm dB}}. 28198@texline @math{9.54 {\rm dB}}.
28199Note that in taking the ratio, the original units cancel and so these 28199Note that in taking the ratio, the original units cancel and so these
28200logarithmic units are dimensionless. 28200logarithmic units are dimensionless.
28201 28201
28202Nepers (named after John Napier, who is credited with inventing the 28202Nepers (named after John Napier, who is credited with inventing the
28203logarithm) are similar to bels except they use natural logarithms instead 28203logarithm) are similar to bels except they use natural logarithms instead
28204of common logarithms. The neper level of a power 28204of common logarithms. The neper level of a power
28205@infoline @math{P1}, 28205@infoline @math{P1},
28206@texline @math{P_1}, 28206@texline @math{P_1},
28207relative to a reference power 28207relative to a reference power
28208@infoline @math{P0}, 28208@infoline @math{P0},
28209@texline @math{P_0}, 28209@texline @math{P_0},
28210is 28210is
28211@infoline @math{(1/2) ln(P1/P0) Np}. 28211@infoline @math{(1/2) ln(P1/P0) Np}.
28212@texline @math{(1/2) \ln(P_1/P_0) {\rm Np}}. 28212@texline @math{(1/2) \ln(P_1/P_0) {\rm Np}}.
28213The neper level of a field 28213The neper level of a field
28214@infoline @math{F1}, 28214@infoline @math{F1},
28215@texline @math{F_1}, 28215@texline @math{F_1},
28216relative to a reference field 28216relative to a reference field
@@ -28223,13 +28223,13 @@ is
28223@vindex calc-lu-power-reference 28223@vindex calc-lu-power-reference
28224@vindex calc-lu-field-reference 28224@vindex calc-lu-field-reference
28225For power quantities, Calc uses 28225For power quantities, Calc uses
28226@infoline @math{1 mW} 28226@infoline @math{1 mW}
28227@texline @math{1 {\rm mW}} 28227@texline @math{1 {\rm mW}}
28228as the default reference quantity; this default can be changed by changing 28228as the default reference quantity; this default can be changed by changing
28229the value of the customizable variable 28229the value of the customizable variable
28230@code{calc-lu-power-reference} (@pxref{Customizing Calc}). 28230@code{calc-lu-power-reference} (@pxref{Customizing Calc}).
28231For field quantities, Calc uses 28231For field quantities, Calc uses
28232@infoline @math{20 uPa} 28232@infoline @math{20 uPa}
28233@texline @math{20 \mu{\rm Pa}} 28233@texline @math{20 \mu{\rm Pa}}
28234as the default reference quantity; this is the value used in acoustics 28234as the default reference quantity; this is the value used in acoustics
28235which is where decibels are commonly encountered. This default can be 28235which is where decibels are commonly encountered. This default can be
@@ -28247,9 +28247,9 @@ command computes the power quantity corresponding to a given number of
28247logarithmic units. With the capital @kbd{O} prefix, @kbd{O l q}, the 28247logarithmic units. With the capital @kbd{O} prefix, @kbd{O l q}, the
28248reference level will be read from the top of the stack. (In an 28248reference level will be read from the top of the stack. (In an
28249algebraic formula, @code{lupquant} can be given an optional second 28249algebraic formula, @code{lupquant} can be given an optional second
28250argument which will be used for the reference level.) For example, 28250argument which will be used for the reference level.) For example,
28251@code{20 dB @key{RET} l q} will return @code{100 mW}; 28251@code{20 dB @key{RET} l q} will return @code{100 mW};
28252@code{20 dB @key{RET} 4 W @key{RET} O l q} will return @code{400 W}. 28252@code{20 dB @key{RET} 4 W @key{RET} O l q} will return @code{400 W}.
28253The @kbd{H l q} [@code{lufquant}] command behaves like @kbd{l q} but 28253The @kbd{H l q} [@code{lufquant}] command behaves like @kbd{l q} but
28254computes field quantities instead of power quantities. 28254computes field quantities instead of power quantities.
28255 28255
@@ -28288,13 +28288,13 @@ the reference level can be given as an optional second argument.
28288@tindex lufdiv 28288@tindex lufdiv
28289The sum of two power or field quantities doesn't correspond to the sum 28289The sum of two power or field quantities doesn't correspond to the sum
28290of the corresponding decibel or neper levels. If the powers 28290of the corresponding decibel or neper levels. If the powers
28291corresponding to decibel levels 28291corresponding to decibel levels
28292@infoline @math{D1} 28292@infoline @math{D1}
28293@texline @math{D_1} 28293@texline @math{D_1}
28294and 28294and
28295@infoline @math{D2} 28295@infoline @math{D2}
28296@texline @math{D_2} 28296@texline @math{D_2}
28297are added, the corresponding decibel level ``sum'' will be 28297are added, the corresponding decibel level ``sum'' will be
28298 28298
28299@ifnottex 28299@ifnottex
28300@example 28300@example
@@ -28338,7 +28338,7 @@ $$ D + 10 \log_{10}(N) {\rm dB},$$
28338 28338
28339@noindent 28339@noindent
28340if a field quantity is multiplied by @math{N} the corresponding decibel level 28340if a field quantity is multiplied by @math{N} the corresponding decibel level
28341will be 28341will be
28342 28342
28343@ifnottex 28343@ifnottex
28344@example 28344@example
@@ -28375,31 +28375,31 @@ operating on notes.
28375Scientific pitch notation refers to a note by giving a letter 28375Scientific pitch notation refers to a note by giving a letter
28376A through G, possibly followed by a flat or sharp) with a subscript 28376A through G, possibly followed by a flat or sharp) with a subscript
28377indicating an octave number. Each octave starts with C and ends with 28377indicating an octave number. Each octave starts with C and ends with
28378B and 28378B and
28379@c increasing each note by a semitone will result 28379@c increasing each note by a semitone will result
28380@c in the sequence @expr{C}, @expr{C} sharp, @expr{D}, @expr{E} flat, @expr{E}, 28380@c in the sequence @expr{C}, @expr{C} sharp, @expr{D}, @expr{E} flat, @expr{E},
28381@c @expr{F}, @expr{F} sharp, @expr{G}, @expr{A} flat, @expr{A}, @expr{B} 28381@c @expr{F}, @expr{F} sharp, @expr{G}, @expr{A} flat, @expr{A}, @expr{B}
28382@c flat and @expr{B}. 28382@c flat and @expr{B}.
28383the octave numbered 0 was chosen to correspond to the lowest 28383the octave numbered 0 was chosen to correspond to the lowest
28384audible frequency. Using this system, middle C (about 261.625 Hz) 28384audible frequency. Using this system, middle C (about 261.625 Hz)
28385corresponds to the note @expr{C} in octave 4 and is denoted 28385corresponds to the note @expr{C} in octave 4 and is denoted
28386@expr{C_4}. Any frequency can be described by giving a note plus an 28386@expr{C_4}. Any frequency can be described by giving a note plus an
28387offset in cents (where a cent is a ratio of frequencies so that a 28387offset in cents (where a cent is a ratio of frequencies so that a
28388semitone consists of 100 cents). 28388semitone consists of 100 cents).
28389 28389
28390The midi note number system assigns numbers to notes so that 28390The midi note number system assigns numbers to notes so that
28391@expr{C_(-1)} corresponds to the midi note number 0 and @expr{G_9} 28391@expr{C_(-1)} corresponds to the midi note number 0 and @expr{G_9}
28392corresponds to the midi note number 127. A midi controller can have 28392corresponds to the midi note number 127. A midi controller can have
28393up to 128 keys and each midi note number from 0 to 127 corresponds to 28393up to 128 keys and each midi note number from 0 to 127 corresponds to
28394a possible key. 28394a possible key.
28395 28395
28396@kindex l s 28396@kindex l s
28397@pindex calc-spn 28397@pindex calc-spn
28398@tindex spn 28398@tindex spn
28399The @kbd{l s} (@code{calc-spn}) [@code{spn}] command converts either 28399The @kbd{l s} (@code{calc-spn}) [@code{spn}] command converts either
28400a frequency or a midi number to scientific pitch notation. For 28400a frequency or a midi number to scientific pitch notation. For
28401example, @code{500 Hz} gets converted to 28401example, @code{500 Hz} gets converted to
28402@code{B_4 + 21.3094853649 cents} and @code{84} to @code{C_6}. 28402@code{B_4 + 21.3094853649 cents} and @code{84} to @code{C_6}.
28403 28403
28404 28404
28405@kindex l m 28405@kindex l m
@@ -28464,7 +28464,7 @@ The @kbd{s s} (@code{calc-store}) command stores the value at the top of
28464the stack into a specified variable. It prompts you to enter the 28464the stack into a specified variable. It prompts you to enter the
28465name of the variable. If you press a single digit, the value is stored 28465name of the variable. If you press a single digit, the value is stored
28466immediately in one of the ``quick'' variables @code{q0} through 28466immediately in one of the ``quick'' variables @code{q0} through
28467@code{q9}. Or you can enter any variable name. 28467@code{q9}. Or you can enter any variable name.
28468 28468
28469@kindex s t 28469@kindex s t
28470@pindex calc-store-into 28470@pindex calc-store-into
@@ -28554,12 +28554,12 @@ and @kbd{s ]} which decrease or increase a variable by one.
28554All the arithmetic stores accept the Inverse prefix to reverse the 28554All the arithmetic stores accept the Inverse prefix to reverse the
28555order of the operands. If @expr{v} represents the contents of the 28555order of the operands. If @expr{v} represents the contents of the
28556variable, and @expr{a} is the value drawn from the stack, then regular 28556variable, and @expr{a} is the value drawn from the stack, then regular
28557@w{@kbd{s -}} assigns 28557@w{@kbd{s -}} assigns
28558@texline @math{v \coloneq v - a}, 28558@texline @math{v \coloneq v - a},
28559@infoline @expr{v := v - a}, 28559@infoline @expr{v := v - a},
28560but @kbd{I s -} assigns 28560but @kbd{I s -} assigns
28561@texline @math{v \coloneq a - v}. 28561@texline @math{v \coloneq a - v}.
28562@infoline @expr{v := a - v}. 28562@infoline @expr{v := a - v}.
28563While @kbd{I s *} might seem pointless, it is 28563While @kbd{I s *} might seem pointless, it is
28564useful if matrix multiplication is involved. Actually, all the 28564useful if matrix multiplication is involved. Actually, all the
28565arithmetic stores use formulas designed to behave usefully both 28565arithmetic stores use formulas designed to behave usefully both
@@ -28668,7 +28668,7 @@ magic property is preserved, however, when a variable is copied with
28668@kindex s k 28668@kindex s k
28669@pindex calc-copy-special-constant 28669@pindex calc-copy-special-constant
28670If one of the ``special constants'' is redefined (or undefined) so that 28670If one of the ``special constants'' is redefined (or undefined) so that
28671it no longer has its magic property, the property can be restored with 28671it no longer has its magic property, the property can be restored with
28672@kbd{s k} (@code{calc-copy-special-constant}). This command will prompt 28672@kbd{s k} (@code{calc-copy-special-constant}). This command will prompt
28673for a special constant and a variable to store it in, and so a special 28673for a special constant and a variable to store it in, and so a special
28674constant can be stored in any variable. Here, the special constant that 28674constant can be stored in any variable. Here, the special constant that
@@ -28850,7 +28850,7 @@ explicitly naming them in an @kbd{s p} command.)
28850The @kbd{s i} (@code{calc-insert-variables}) command writes 28850The @kbd{s i} (@code{calc-insert-variables}) command writes
28851the values of all Calc variables into a specified buffer. 28851the values of all Calc variables into a specified buffer.
28852The variables are written with the prefix @code{var-} in the form of 28852The variables are written with the prefix @code{var-} in the form of
28853Lisp @code{setq} commands 28853Lisp @code{setq} commands
28854which store the values in string form. You can place these commands 28854which store the values in string form. You can place these commands
28855in your Calc init file (or @file{.emacs}) if you wish, though in this case it 28855in your Calc init file (or @file{.emacs}) if you wish, though in this case it
28856would be easier to use @kbd{s p @key{RET}}. (Note that @kbd{s i} 28856would be easier to use @kbd{s p @key{RET}}. (Note that @kbd{s i}
@@ -29159,9 +29159,9 @@ In the first case, ``x'' and ``y'' are each vectors (not necessarily of
29159the same length); either or both may instead be interval forms. The 29159the same length); either or both may instead be interval forms. The
29160``z'' value must be a matrix with the same number of rows as elements 29160``z'' value must be a matrix with the same number of rows as elements
29161in ``x'', and the same number of columns as elements in ``y''. The 29161in ``x'', and the same number of columns as elements in ``y''. The
29162result is a surface plot where 29162result is a surface plot where
29163@texline @math{z_{ij}} 29163@texline @math{z_{ij}}
29164@infoline @expr{z_ij} 29164@infoline @expr{z_ij}
29165is the height of the point 29165is the height of the point
29166at coordinate @expr{(x_i, y_j)} on the surface. The 3D graph will 29166at coordinate @expr{(x_i, y_j)} on the surface. The 3D graph will
29167be displayed from a certain default viewpoint; you can change this 29167be displayed from a certain default viewpoint; you can change this
@@ -29270,9 +29270,9 @@ that don't have common ``x'' values. (Of course, the range of ``x''
29270values covered by all the curves ought to be roughly the same if 29270values covered by all the curves ought to be roughly the same if
29271they are to look nice on the same graph.) 29271they are to look nice on the same graph.)
29272 29272
29273For example, to plot 29273For example, to plot
29274@texline @math{\sin n x} 29274@texline @math{\sin n x}
29275@infoline @expr{sin(n x)} 29275@infoline @expr{sin(n x)}
29276for integers @expr{n} 29276for integers @expr{n}
29277from 1 to 5, you could use @kbd{v x} to create a vector of integers 29277from 1 to 5, you could use @kbd{v x} to create a vector of integers
29278(@expr{n}), then @kbd{V M '} or @kbd{V M $} to map @samp{sin(n x)} 29278(@expr{n}), then @kbd{V M '} or @kbd{V M $} to map @samp{sin(n x)}
@@ -29510,8 +29510,8 @@ available for any device.
29510The @kbd{g S} (@code{calc-graph-point-style}) command similarly turns 29510The @kbd{g S} (@code{calc-graph-point-style}) command similarly turns
29511the symbols at the data points on or off, or sets the point style. 29511the symbols at the data points on or off, or sets the point style.
29512If you turn both lines and points off, the data points will show as 29512If you turn both lines and points off, the data points will show as
29513tiny dots. If the ``y'' values being plotted contain error forms and 29513tiny dots. If the ``y'' values being plotted contain error forms and
29514the connecting lines are turned off, then this command will also turn 29514the connecting lines are turned off, then this command will also turn
29515the error bars on or off. 29515the error bars on or off.
29516 29516
29517@cindex @code{LineStyles} variable 29517@cindex @code{LineStyles} variable
@@ -29563,7 +29563,7 @@ terminals with no special graphics facilities. It writes a crude
29563picture of the graph composed of characters like @code{-} and @code{|} 29563picture of the graph composed of characters like @code{-} and @code{|}
29564to a buffer called @samp{*Gnuplot Trail*}, which Calc then displays. 29564to a buffer called @samp{*Gnuplot Trail*}, which Calc then displays.
29565The graph is made the same size as the Emacs screen, which on most 29565The graph is made the same size as the Emacs screen, which on most
29566dumb terminals will be 29566dumb terminals will be
29567@texline @math{80\times24} 29567@texline @math{80\times24}
29568@infoline 80x24 29568@infoline 80x24
29569characters. The graph is displayed in 29569characters. The graph is displayed in
@@ -29820,7 +29820,7 @@ difference.)
29820@pindex calc-prepend-to-register 29820@pindex calc-prepend-to-register
29821@pindex calc-append-to-register 29821@pindex calc-append-to-register
29822@cindex Registers 29822@cindex Registers
29823An alternative to killing and yanking stack entries is using 29823An alternative to killing and yanking stack entries is using
29824registers in Calc. Saving stack entries in registers is like 29824registers in Calc. Saving stack entries in registers is like
29825saving text in normal Emacs registers; although, like Calc's kill 29825saving text in normal Emacs registers; although, like Calc's kill
29826commands, register commands always operate on whole stack 29826commands, register commands always operate on whole stack
@@ -29935,7 +29935,7 @@ separately as a matrix element. If a line contained
29935would correctly split the line into two error forms. 29935would correctly split the line into two error forms.
29936 29936
29937@xref{Matrix Functions}, to see how to pull the matrix apart into its 29937@xref{Matrix Functions}, to see how to pull the matrix apart into its
29938constituent rows and columns. (If it is a 29938constituent rows and columns. (If it is a
29939@texline @math{1\times1} 29939@texline @math{1\times1}
29940@infoline 1x1 29940@infoline 1x1
29941matrix, just hit @kbd{v u} (@code{calc-unpack}) twice.) 29941matrix, just hit @kbd{v u} (@code{calc-unpack}) twice.)
@@ -30273,7 +30273,7 @@ same limit as last time.
30273 30273
30274@key{INV GCD} computes the LCM (least common multiple) function. 30274@key{INV GCD} computes the LCM (least common multiple) function.
30275 30275
30276@key{INV FACT} is the gamma function. 30276@key{INV FACT} is the gamma function.
30277@texline @math{\Gamma(x) = (x-1)!}. 30277@texline @math{\Gamma(x) = (x-1)!}.
30278@infoline @expr{gamma(x) = (x-1)!}. 30278@infoline @expr{gamma(x) = (x-1)!}.
30279 30279
@@ -30490,7 +30490,7 @@ Similarly, Calc will use @TeX{} language for @code{tex-mode},
30490@code{plain-tex-mode} and @code{context-mode}, C language for 30490@code{plain-tex-mode} and @code{context-mode}, C language for
30491@code{c-mode} and @code{c++-mode}, FORTRAN language for 30491@code{c-mode} and @code{c++-mode}, FORTRAN language for
30492@code{fortran-mode} and @code{f90-mode}, Pascal for @code{pascal-mode}, 30492@code{fortran-mode} and @code{f90-mode}, Pascal for @code{pascal-mode},
30493and eqn for @code{nroff-mode} (@pxref{Customizing Calc}). 30493and eqn for @code{nroff-mode} (@pxref{Customizing Calc}).
30494These can be overridden with Calc's mode 30494These can be overridden with Calc's mode
30495changing commands (@pxref{Mode Settings in Embedded Mode}). If no 30495changing commands (@pxref{Mode Settings in Embedded Mode}). If no
30496suitable language is available, Calc will continue with its current language. 30496suitable language is available, Calc will continue with its current language.
@@ -30670,13 +30670,13 @@ version.
30670 30670
30671Plain formulas are preceded and followed by @samp{%%%} signs 30671Plain formulas are preceded and followed by @samp{%%%} signs
30672by default. This notation has the advantage that the @samp{%} 30672by default. This notation has the advantage that the @samp{%}
30673character begins a comment in @TeX{} and La@TeX{}, so if your formula is 30673character begins a comment in @TeX{} and La@TeX{}, so if your formula is
30674embedded in a @TeX{} or La@TeX{} document its plain version will be 30674embedded in a @TeX{} or La@TeX{} document its plain version will be
30675invisible in the final printed copy. Certain major modes have different 30675invisible in the final printed copy. Certain major modes have different
30676delimiters to ensure that the ``plain'' version will be 30676delimiters to ensure that the ``plain'' version will be
30677in a comment for those modes, also. 30677in a comment for those modes, also.
30678See @ref{Customizing Embedded Mode} to see how to change the ``plain'' 30678See @ref{Customizing Embedded Mode} to see how to change the ``plain''
30679formula delimiters. 30679formula delimiters.
30680 30680
30681There are several notations which Calc's parser for ``big'' 30681There are several notations which Calc's parser for ``big''
30682formatted formulas can't yet recognize. In particular, it can't 30682formatted formulas can't yet recognize. In particular, it can't
@@ -31178,7 +31178,7 @@ We would have to go down to the other formula and press @kbd{C-x * u}
31178on it in order to get it to notice the new annotation. 31178on it in order to get it to notice the new annotation.
31179 31179
31180Two more mode-recording modes selectable by @kbd{m R} are available 31180Two more mode-recording modes selectable by @kbd{m R} are available
31181which are also available outside of Embedded mode. 31181which are also available outside of Embedded mode.
31182(@pxref{General Mode Commands}.) They are @code{Save}, in which mode 31182(@pxref{General Mode Commands}.) They are @code{Save}, in which mode
31183settings are recorded permanently in your Calc init file (the file given 31183settings are recorded permanently in your Calc init file (the file given
31184by the variable @code{calc-settings-file}, typically @file{~/.emacs.d/calc.el}) 31184by the variable @code{calc-settings-file}, typically @file{~/.emacs.d/calc.el})
@@ -31195,11 +31195,11 @@ for @code{Save} have no effect.
31195 31195
31196@noindent 31196@noindent
31197You can modify Embedded mode's behavior by setting various Lisp 31197You can modify Embedded mode's behavior by setting various Lisp
31198variables described here. These variables are customizable 31198variables described here. These variables are customizable
31199(@pxref{Customizing Calc}), or you can use @kbd{M-x set-variable} 31199(@pxref{Customizing Calc}), or you can use @kbd{M-x set-variable}
31200or @kbd{M-x edit-options} to adjust a variable on the fly. 31200or @kbd{M-x edit-options} to adjust a variable on the fly.
31201(Another possibility would be to use a file-local variable annotation at 31201(Another possibility would be to use a file-local variable annotation at
31202the end of the file; 31202the end of the file;
31203@pxref{File Variables, , Local Variables in Files, emacs, the Emacs manual}.) 31203@pxref{File Variables, , Local Variables in Files, emacs, the Emacs manual}.)
31204Many of the variables given mentioned here can be set to depend on the 31204Many of the variables given mentioned here can be set to depend on the
31205major mode of the editing buffer (@pxref{Customizing Calc}). 31205major mode of the editing buffer (@pxref{Customizing Calc}).
@@ -31334,7 +31334,7 @@ Calc never scans for this string; Calc always looks for the
31334annotation itself. But this is the string that is inserted before 31334annotation itself. But this is the string that is inserted before
31335the opening bracket when Calc adds an annotation on its own. 31335the opening bracket when Calc adds an annotation on its own.
31336The default is @code{"% "}, but may be different for different major 31336The default is @code{"% "}, but may be different for different major
31337modes. 31337modes.
31338 31338
31339@vindex calc-embedded-close-mode 31339@vindex calc-embedded-close-mode
31340The @code{calc-embedded-close-mode} variable is a string which 31340The @code{calc-embedded-close-mode} variable is a string which
@@ -31459,7 +31459,7 @@ without its key binding, type @kbd{M-x} and enter a function name. (The
31459(If the command you give implies a function, the function will be saved, 31459(If the command you give implies a function, the function will be saved,
31460and if the function has any display formats, those will be saved, but 31460and if the function has any display formats, those will be saved, but
31461not the other way around: Saving a function will not save any commands 31461not the other way around: Saving a function will not save any commands
31462or key bindings associated with the function.) 31462or key bindings associated with the function.)
31463 31463
31464@kindex Z E 31464@kindex Z E
31465@pindex calc-user-define-edit 31465@pindex calc-user-define-edit
@@ -31542,7 +31542,7 @@ Once you have bound your keyboard macro to a key, you can use
31542@cindex Keyboard macros, editing 31542@cindex Keyboard macros, editing
31543The @kbd{Z E} (@code{calc-user-define-edit}) command on a key that has 31543The @kbd{Z E} (@code{calc-user-define-edit}) command on a key that has
31544been defined by a keyboard macro tries to use the @code{edmacro} package 31544been defined by a keyboard macro tries to use the @code{edmacro} package
31545edit the macro. Type @kbd{C-c C-c} to finish editing and update 31545edit the macro. Type @kbd{C-c C-c} to finish editing and update
31546the definition stored on the key, or, to cancel the edit, kill the 31546the definition stored on the key, or, to cancel the edit, kill the
31547buffer with @kbd{C-x k}. 31547buffer with @kbd{C-x k}.
31548The special characters @code{RET}, @code{LFD}, @code{TAB}, @code{SPC}, 31548The special characters @code{RET}, @code{LFD}, @code{TAB}, @code{SPC},
@@ -31552,7 +31552,7 @@ sequences, written in all uppercase, as must the prefixes @code{C-} and
31552copied verbatim into the keyboard macro. Basically, the notation is the 31552copied verbatim into the keyboard macro. Basically, the notation is the
31553same as is used in all of this manual's examples, except that the manual 31553same as is used in all of this manual's examples, except that the manual
31554takes some liberties with spaces: When we say @kbd{' [1 2 3] @key{RET}}, 31554takes some liberties with spaces: When we say @kbd{' [1 2 3] @key{RET}},
31555we take it for granted that it is clear we really mean 31555we take it for granted that it is clear we really mean
31556@kbd{' [1 @key{SPC} 2 @key{SPC} 3] @key{RET}}. 31556@kbd{' [1 @key{SPC} 2 @key{SPC} 3] @key{RET}}.
31557 31557
31558@kindex C-x * m 31558@kindex C-x * m
@@ -31823,7 +31823,7 @@ prompt for the @kbd{Z #} command; it will not play any role in any
31823subsequent calculations.) This command allows your keyboard macros to 31823subsequent calculations.) This command allows your keyboard macros to
31824accept numbers or formulas as interactive input. 31824accept numbers or formulas as interactive input.
31825 31825
31826As an example, 31826As an example,
31827@kbd{2 @key{RET} "Power: " @key{RET} Z # 3 @key{RET} ^} will prompt for 31827@kbd{2 @key{RET} "Power: " @key{RET} Z # 3 @key{RET} ^} will prompt for
31828input with ``Power: '' in the minibuffer, then return 2 to the provided 31828input with ``Power: '' in the minibuffer, then return 2 to the provided
31829power. (The response to the prompt that's given, 3 in this example, 31829power. (The response to the prompt that's given, 3 in this example,
@@ -31900,7 +31900,7 @@ The third prompt is for an algebraic function name. The default is to
31900use the same name as the command name but without the @samp{calc-} 31900use the same name as the command name but without the @samp{calc-}
31901prefix. (If this is of the form @samp{User-m}, the hyphen is removed so 31901prefix. (If this is of the form @samp{User-m}, the hyphen is removed so
31902it won't be taken for a minus sign in algebraic formulas.) 31902it won't be taken for a minus sign in algebraic formulas.)
31903This is the name you will use if you want to enter your 31903This is the name you will use if you want to enter your
31904new function in an algebraic formula. Suppose we enter @kbd{yow @key{RET}}. 31904new function in an algebraic formula. Suppose we enter @kbd{yow @key{RET}}.
31905Then the new function can be invoked by pushing two numbers on the 31905Then the new function can be invoked by pushing two numbers on the
31906stack and typing @kbd{z m} or @kbd{x spam}, or by entering the algebraic 31906stack and typing @kbd{z m} or @kbd{x spam}, or by entering the algebraic
@@ -32695,7 +32695,7 @@ same thing with a single division by 512.
32695@end ignore 32695@end ignore
32696@tindex mysin 32696@tindex mysin
32697A somewhat limited sine function could be defined as follows, using the 32697A somewhat limited sine function could be defined as follows, using the
32698well-known Taylor series expansion for 32698well-known Taylor series expansion for
32699@texline @math{\sin x}: 32699@texline @math{\sin x}:
32700@infoline @samp{sin(x)}: 32700@infoline @samp{sin(x)}:
32701 32701
@@ -35241,7 +35241,7 @@ to use a different prefix, you can put
35241@end example 35241@end example
35242 35242
35243@noindent 35243@noindent
35244in your .emacs file. 35244in your .emacs file.
35245(@xref{Key Bindings,,Customizing Key Bindings,emacs, 35245(@xref{Key Bindings,,Customizing Key Bindings,emacs,
35246The GNU Emacs Manual}, for more information on binding keys.) 35246The GNU Emacs Manual}, for more information on binding keys.)
35247A convenient way to start Calc is with @kbd{C-x * *}; to make it equally 35247A convenient way to start Calc is with @kbd{C-x * *}; to make it equally
@@ -35269,7 +35269,7 @@ to see how regular expressions work.
35269@defvar calc-settings-file 35269@defvar calc-settings-file
35270The variable @code{calc-settings-file} holds the file name in 35270The variable @code{calc-settings-file} holds the file name in
35271which commands like @kbd{m m} and @kbd{Z P} store ``permanent'' 35271which commands like @kbd{m m} and @kbd{Z P} store ``permanent''
35272definitions. 35272definitions.
35273If @code{calc-settings-file} is not your user init file (typically 35273If @code{calc-settings-file} is not your user init file (typically
35274@file{~/.emacs}) and if the variable @code{calc-loaded-settings-file} is 35274@file{~/.emacs}) and if the variable @code{calc-loaded-settings-file} is
35275@code{nil}, then Calc will automatically load your settings file (if it 35275@code{nil}, then Calc will automatically load your settings file (if it
@@ -35314,7 +35314,7 @@ enabled, it will try to use the current major mode to
35314determine what language should be used. (This can be overridden using 35314determine what language should be used. (This can be overridden using
35315Calc's mode changing commands, @xref{Mode Settings in Embedded Mode}.) 35315Calc's mode changing commands, @xref{Mode Settings in Embedded Mode}.)
35316The variable @code{calc-language-alist} consists of a list of pairs of 35316The variable @code{calc-language-alist} consists of a list of pairs of
35317the form @code{(@var{MAJOR-MODE} . @var{LANGUAGE})}; for example, 35317the form @code{(@var{MAJOR-MODE} . @var{LANGUAGE})}; for example,
35318@code{(latex-mode . latex)} is one such pair. If Calc embedded is 35318@code{(latex-mode . latex)} is one such pair. If Calc embedded is
35319activated in a buffer whose major mode is @var{MAJOR-MODE}, it will set itself 35319activated in a buffer whose major mode is @var{MAJOR-MODE}, it will set itself
35320to use the language @var{LANGUAGE}. 35320to use the language @var{LANGUAGE}.
@@ -35342,7 +35342,7 @@ what formulas @kbd{C-x * a} will activate in a buffer. It is a
35342regular expression, and when activating embedded formulas with 35342regular expression, and when activating embedded formulas with
35343@kbd{C-x * a}, it will tell Calc that what follows is a formula to be 35343@kbd{C-x * a}, it will tell Calc that what follows is a formula to be
35344activated. (Calc also uses other patterns to find formulas, such as 35344activated. (Calc also uses other patterns to find formulas, such as
35345@samp{=>} and @samp{:=}.) 35345@samp{=>} and @samp{:=}.)
35346 35346
35347The default pattern is @code{"%Embed\n\\(% .*\n\\)*"}, which checks 35347The default pattern is @code{"%Embed\n\\(% .*\n\\)*"}, which checks
35348for @samp{%Embed} followed by any number of lines beginning with 35348for @samp{%Embed} followed by any number of lines beginning with
@@ -35367,7 +35367,7 @@ It consists of a list of pairs of the form @code{(@var{MAJOR-MODE} .
35367 (texinfo-mode . "@@c Embed\n\\(@@c .*\n\\)*")) 35367 (texinfo-mode . "@@c Embed\n\\(@@c .*\n\\)*"))
35368@end example 35368@end example
35369Any major modes added to @code{calc-embedded-announce-formula-alist} 35369Any major modes added to @code{calc-embedded-announce-formula-alist}
35370should also be added to @code{calc-embedded-open-close-plain-alist} 35370should also be added to @code{calc-embedded-open-close-plain-alist}
35371and @code{calc-embedded-open-close-mode-alist}. 35371and @code{calc-embedded-open-close-mode-alist}.
35372@end defvar 35372@end defvar
35373 35373
@@ -35378,7 +35378,7 @@ See @ref{Customizing Embedded Mode}.@*
35378The variables @code{calc-embedded-open-formula} and 35378The variables @code{calc-embedded-open-formula} and
35379@code{calc-embedded-close-formula} control the region that Calc will 35379@code{calc-embedded-close-formula} control the region that Calc will
35380activate as a formula when Embedded mode is entered with @kbd{C-x * e}. 35380activate as a formula when Embedded mode is entered with @kbd{C-x * e}.
35381They are regular expressions; 35381They are regular expressions;
35382Calc normally scans backward and forward in the buffer for the 35382Calc normally scans backward and forward in the buffer for the
35383nearest text matching these regular expressions to be the ``formula 35383nearest text matching these regular expressions to be the ``formula
35384delimiters''. 35384delimiters''.
@@ -35403,7 +35403,7 @@ The variable @code{calc-embedded-open-close-formula-alist} is used to
35403set @code{calc-embedded-open-formula} and 35403set @code{calc-embedded-open-formula} and
35404@code{calc-embedded-close-formula} to different regular 35404@code{calc-embedded-close-formula} to different regular
35405expressions depending on the major mode of the editing buffer. 35405expressions depending on the major mode of the editing buffer.
35406It consists of a list of lists of the form 35406It consists of a list of lists of the form
35407@code{(@var{MAJOR-MODE} @var{OPEN-FORMULA-REGEXP} 35407@code{(@var{MAJOR-MODE} @var{OPEN-FORMULA-REGEXP}
35408@var{CLOSE-FORMULA-REGEXP})}, and its default value is 35408@var{CLOSE-FORMULA-REGEXP})}, and its default value is
35409@code{nil}. 35409@code{nil}.
@@ -35422,7 +35422,7 @@ The default value of @code{calc-embedded-word-regexp} is
35422The variable @code{calc-embedded-word-regexp-alist} is used to 35422The variable @code{calc-embedded-word-regexp-alist} is used to
35423set @code{calc-embedded-word-regexp} to a different regular 35423set @code{calc-embedded-word-regexp} to a different regular
35424expression depending on the major mode of the editing buffer. 35424expression depending on the major mode of the editing buffer.
35425It consists of a list of lists of the form 35425It consists of a list of lists of the form
35426@code{(@var{MAJOR-MODE} @var{WORD-REGEXP})}, and its default value is 35426@code{(@var{MAJOR-MODE} @var{WORD-REGEXP})}, and its default value is
35427@code{nil}. 35427@code{nil}.
35428@end defvar 35428@end defvar
@@ -35437,8 +35437,8 @@ formulas. Note that these are actual strings, not regular
35437expressions, because Calc must be able to write these string into a 35437expressions, because Calc must be able to write these string into a
35438buffer as well as to recognize them. 35438buffer as well as to recognize them.
35439 35439
35440The default string for @code{calc-embedded-open-plain} is 35440The default string for @code{calc-embedded-open-plain} is
35441@code{"%%% "}, note the trailing space. The default string for 35441@code{"%%% "}, note the trailing space. The default string for
35442@code{calc-embedded-close-plain} is @code{" %%%\n"}, without 35442@code{calc-embedded-close-plain} is @code{" %%%\n"}, without
35443the trailing newline here, the first line of a Big mode formula 35443the trailing newline here, the first line of a Big mode formula
35444that followed might be shifted over with respect to the other lines. 35444that followed might be shifted over with respect to the other lines.
@@ -35447,7 +35447,7 @@ The variable @code{calc-embedded-open-close-plain-alist} is used to
35447set @code{calc-embedded-open-plain} and 35447set @code{calc-embedded-open-plain} and
35448@code{calc-embedded-close-plain} to different strings 35448@code{calc-embedded-close-plain} to different strings
35449depending on the major mode of the editing buffer. 35449depending on the major mode of the editing buffer.
35450It consists of a list of lists of the form 35450It consists of a list of lists of the form
35451@code{(@var{MAJOR-MODE} @var{OPEN-PLAIN-STRING} 35451@code{(@var{MAJOR-MODE} @var{OPEN-PLAIN-STRING}
35452@var{CLOSE-PLAIN-STRING})}, and its default value is 35452@var{CLOSE-PLAIN-STRING})}, and its default value is
35453@example 35453@example
@@ -35490,7 +35490,7 @@ The variable @code{calc-embedded-open-close-new-formula-alist} is used to
35490set @code{calc-embedded-open-new-formula} and 35490set @code{calc-embedded-open-new-formula} and
35491@code{calc-embedded-close-new-formula} to different strings 35491@code{calc-embedded-close-new-formula} to different strings
35492depending on the major mode of the editing buffer. 35492depending on the major mode of the editing buffer.
35493It consists of a list of lists of the form 35493It consists of a list of lists of the form
35494@code{(@var{MAJOR-MODE} @var{OPEN-NEW-FORMULA-STRING} 35494@code{(@var{MAJOR-MODE} @var{OPEN-NEW-FORMULA-STRING}
35495@var{CLOSE-NEW-FORMULA-STRING})}, and its default value is 35495@var{CLOSE-NEW-FORMULA-STRING})}, and its default value is
35496@code{nil}. 35496@code{nil}.
@@ -35508,7 +35508,7 @@ necessary to add them to user-written annotations.
35508 35508
35509The default value of @code{calc-embedded-open-mode} is @code{"% "} 35509The default value of @code{calc-embedded-open-mode} is @code{"% "}
35510and the default value of @code{calc-embedded-close-mode} is 35510and the default value of @code{calc-embedded-close-mode} is
35511@code{"\n"}. 35511@code{"\n"}.
35512If you change the value of @code{calc-embedded-close-mode}, it is a good 35512If you change the value of @code{calc-embedded-close-mode}, it is a good
35513idea still to end with a newline so that mode annotations will appear on 35513idea still to end with a newline so that mode annotations will appear on
35514lines by themselves. 35514lines by themselves.
@@ -35517,7 +35517,7 @@ The variable @code{calc-embedded-open-close-mode-alist} is used to
35517set @code{calc-embedded-open-mode} and 35517set @code{calc-embedded-open-mode} and
35518@code{calc-embedded-close-mode} to different strings 35518@code{calc-embedded-close-mode} to different strings
35519expressions depending on the major mode of the editing buffer. 35519expressions depending on the major mode of the editing buffer.
35520It consists of a list of lists of the form 35520It consists of a list of lists of the form
35521@code{(@var{MAJOR-MODE} @var{OPEN-MODE-STRING} 35521@code{(@var{MAJOR-MODE} @var{OPEN-MODE-STRING}
35522@var{CLOSE-MODE-STRING})}, and its default value is 35522@var{CLOSE-MODE-STRING})}, and its default value is
35523@example 35523@example
@@ -35548,7 +35548,7 @@ units.
35548 35548
35549The default value of @code{calc-lu-power-reference} is @code{"mW"} 35549The default value of @code{calc-lu-power-reference} is @code{"mW"}
35550and the default value of @code{calc-lu-field-reference} is 35550and the default value of @code{calc-lu-field-reference} is
35551@code{"20 uPa"}. 35551@code{"20 uPa"}.
35552@end defvar 35552@end defvar
35553 35553
35554@defvar calc-note-threshold 35554@defvar calc-note-threshold
@@ -35564,15 +35564,15 @@ The default value of @code{calc-note-threshold} is 1.
35564@defvarx calc-selected-face 35564@defvarx calc-selected-face
35565@defvarx calc-nonselected-face 35565@defvarx calc-nonselected-face
35566See @ref{Displaying Selections}.@* 35566See @ref{Displaying Selections}.@*
35567The variable @code{calc-highlight-selections-with-faces} 35567The variable @code{calc-highlight-selections-with-faces}
35568determines how selected sub-formulas are distinguished. 35568determines how selected sub-formulas are distinguished.
35569If @code{calc-highlight-selections-with-faces} is nil, then 35569If @code{calc-highlight-selections-with-faces} is nil, then
35570a selected sub-formula is distinguished either by changing every 35570a selected sub-formula is distinguished either by changing every
35571character not part of the sub-formula with a dot or by changing every 35571character not part of the sub-formula with a dot or by changing every
35572character in the sub-formula with a @samp{#} sign. 35572character in the sub-formula with a @samp{#} sign.
35573If @code{calc-highlight-selections-with-faces} is t, 35573If @code{calc-highlight-selections-with-faces} is t,
35574then a selected sub-formula is distinguished either by displaying the 35574then a selected sub-formula is distinguished either by displaying the
35575non-selected portion of the formula with @code{calc-nonselected-face} 35575non-selected portion of the formula with @code{calc-nonselected-face}
35576or by displaying the selected sub-formula with 35576or by displaying the selected sub-formula with
35577@code{calc-nonselected-face}. 35577@code{calc-nonselected-face}.
35578@end defvar 35578@end defvar
@@ -36651,9 +36651,9 @@ input data set. Each entry may be a single value or a vector of values.
36651 36651
36652@c 20 36652@c 20
36653@item 36653@item
36654With a prefix argument of 1, take a single 36654With a prefix argument of 1, take a single
36655@texline @var{n}@math{\times2} 36655@texline @var{n}@math{\times2}
36656@infoline @mathit{@var{N}x2} 36656@infoline @mathit{@var{N}x2}
36657matrix from the stack instead of two separate data vectors. 36657matrix from the stack instead of two separate data vectors.
36658 36658
36659@c 21 36659@c 21
@@ -36754,7 +36754,7 @@ Variable name may be a single digit or a full name.
36754 36754
36755@c 30 36755@c 30
36756@item 36756@item
36757Editing occurs in a separate buffer. Press @kbd{C-c C-c} (or 36757Editing occurs in a separate buffer. Press @kbd{C-c C-c} (or
36758@key{LFD}, or in some cases @key{RET}) to finish the edit, or kill the 36758@key{LFD}, or in some cases @key{RET}) to finish the edit, or kill the
36759buffer with @kbd{C-x k} to cancel the edit. The @key{LFD} key prevents evaluation 36759buffer with @kbd{C-x k} to cancel the edit. The @key{LFD} key prevents evaluation
36760of the result of the edit. 36760of the result of the edit.
@@ -36854,7 +36854,7 @@ to evaluate variables.
36854@item 36854@item
36855The variable is replaced by the formula shown on the right. The 36855The variable is replaced by the formula shown on the right. The
36856Inverse flag reverses the order of the operands, e.g., @kbd{I s - x} 36856Inverse flag reverses the order of the operands, e.g., @kbd{I s - x}
36857assigns 36857assigns
36858@texline @math{x \coloneq a-x}. 36858@texline @math{x \coloneq a-x}.
36859@infoline @expr{x := a-x}. 36859@infoline @expr{x := a-x}.
36860 36860
diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi
index 55c2c4c0ae8..d5f403e5cdb 100644
--- a/doc/misc/cc-mode.texi
+++ b/doc/misc/cc-mode.texi
@@ -912,7 +912,7 @@ construct, should the point start inside it. If @ccmode fails to find
912function beginnings or ends inside the current declaration scope, it 912function beginnings or ends inside the current declaration scope, it
913will search the enclosing scopes. If you want @ccmode to recognize 913will search the enclosing scopes. If you want @ccmode to recognize
914functions only at the top level@footnote{this was @ccmode{}'s 914functions only at the top level@footnote{this was @ccmode{}'s
915behavior prior to version 5.32.}, set @code{c-defun-tatic} to 915behavior prior to version 5.32.}, set @code{c-defun-tactic} to
916@code{t}. 916@code{t}.
917 917
918These functions are analogous to the Emacs built-in commands 918These functions are analogous to the Emacs built-in commands
diff --git a/doc/misc/dbus.texi b/doc/misc/dbus.texi
index 79c7ada3b0b..88b068ccd5b 100644
--- a/doc/misc/dbus.texi
+++ b/doc/misc/dbus.texi
@@ -332,7 +332,7 @@ Example:
332@code{method}, @code{signal}, and @code{property} elements. Unlike 332@code{method}, @code{signal}, and @code{property} elements. Unlike
333properties, which can change their values during lifetime of a D-Bus 333properties, which can change their values during lifetime of a D-Bus
334object, annotations are static. Often they are used for code 334object, annotations are static. Often they are used for code
335generators of D-Bus langugae bindings. Example: 335generators of D-Bus language bindings. Example:
336 336
337@example 337@example
338<annotation name="de.berlios.Pinot.GetStatistics" value="pinotDBus"/> 338<annotation name="de.berlios.Pinot.GetStatistics" value="pinotDBus"/>
diff --git a/doc/misc/dired-x.texi b/doc/misc/dired-x.texi
index 99530e6356d..a026c63e25b 100644
--- a/doc/misc/dired-x.texi
+++ b/doc/misc/dired-x.texi
@@ -476,7 +476,7 @@ in your @code{dired-mode-hook}.
476This Dired-X feature is obsolete as of Emacs 24.1. The standard Emacs 476This Dired-X feature is obsolete as of Emacs 24.1. The standard Emacs
477directory local variables mechanism (@pxref{Directory 477directory local variables mechanism (@pxref{Directory
478Variables,,,emacs,The Gnu Emacs manual}) replaces it. For an example of 478Variables,,,emacs,The Gnu Emacs manual}) replaces it. For an example of
479the new mechanims, @pxref{Omitting Variables}. 479the new mechanisms, @pxref{Omitting Variables}.
480 480
481When Dired visits a directory, it looks for a file whose name is the 481When Dired visits a directory, it looks for a file whose name is the
482value of variable @code{dired-local-variables-file} (default: @file{.dired}). 482value of variable @code{dired-local-variables-file} (default: @file{.dired}).
diff --git a/doc/misc/ede.texi b/doc/misc/ede.texi
index 55dc7f9a822..f8d757c2d87 100644
--- a/doc/misc/ede.texi
+++ b/doc/misc/ede.texi
@@ -3526,7 +3526,7 @@ use the same autoconf form.
3526@item :objectextention 3526@item :objectextention
3527Type: @code{string} 3527Type: @code{string}
3528 3528
3529A string which is the extention used for object files. 3529A string which is the extension used for object files.
3530For example, C code uses .o on unix, and Emacs Lisp uses .elc. 3530For example, C code uses .o on unix, and Emacs Lisp uses .elc.
3531@refill 3531@refill
3532 3532
@@ -3634,7 +3634,7 @@ it's rule definition.
3634@item :objectextention 3634@item :objectextention
3635Type: @code{string} 3635Type: @code{string}
3636 3636
3637A string which is the extention used for object files. 3637A string which is the extension used for object files.
3638For example, C code uses .o on unix, and Emacs Lisp uses .elc. 3638For example, C code uses .o on unix, and Emacs Lisp uses .elc.
3639@refill 3639@refill
3640 3640
@@ -3782,7 +3782,7 @@ it's rule definition.
3782@item :objectextention 3782@item :objectextention
3783Type: @code{string} 3783Type: @code{string}
3784 3784
3785A string which is the extention used for object files. 3785A string which is the extension used for object files.
3786For example, C code uses .o on unix, and Emacs Lisp uses .elc. 3786For example, C code uses .o on unix, and Emacs Lisp uses .elc.
3787@refill 3787@refill
3788 3788
diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi
index 8ee40288fe0..7b4945027d3 100644
--- a/doc/misc/eieio.texi
+++ b/doc/misc/eieio.texi
@@ -1212,9 +1212,9 @@ This method does nothing by default, but that may change in the future.
1212This would be the best way to make your objects persistent when using 1212This would be the best way to make your objects persistent when using
1213in-place editing. 1213in-place editing.
1214 1214
1215@section Widget extention 1215@section Widget extension
1216 1216
1217When widgets are being created, one new widget extention has been added, 1217When widgets are being created, one new widget extension has been added,
1218called the @code{:slotofchoices}. When this occurs in a widget 1218called the @code{:slotofchoices}. When this occurs in a widget
1219definition, all elements after it are removed, and the slot is specifies 1219definition, all elements after it are removed, and the slot is specifies
1220is queried and converted into a series of constants. 1220is queried and converted into a series of constants.
diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi
index d2705155887..b0090f0fb84 100644
--- a/doc/misc/eshell.texi
+++ b/doc/misc/eshell.texi
@@ -61,7 +61,7 @@ developing GNU and promoting software freedom.''
61@node Top, What is Eshell?, (dir), (dir) 61@node Top, What is Eshell?, (dir), (dir)
62@top Eshell 62@top Eshell
63 63
64Eshell is a shell-like command interpretor 64Eshell is a shell-like command interpreter
65implemented in Emacs Lisp. It invokes no external processes except for 65implemented in Emacs Lisp. It invokes no external processes except for
66those requested by the user. It is intended to be a functional 66those requested by the user. It is intended to be a functional
67replacement for command shells such as @command{bash}, @command{zsh}, 67replacement for command shells such as @command{bash}, @command{zsh},
diff --git a/doc/misc/faq.texi b/doc/misc/faq.texi
index 262c3d734fe..15c9232d4b6 100644
--- a/doc/misc/faq.texi
+++ b/doc/misc/faq.texi
@@ -627,7 +627,7 @@ translations of the reference card into several languages; look for
627files named @file{etc/refcards/@var{lang}-refcard.*}, where @var{lang} 627files named @file{etc/refcards/@var{lang}-refcard.*}, where @var{lang}
628is a two-letter code of the language. For example, the German version 628is a two-letter code of the language. For example, the German version
629of the reference card is in the files @file{etc/refcards/de-refcard.tex} 629of the reference card is in the files @file{etc/refcards/de-refcard.tex}
630and @file{etc/recards/de-refcard.pdf}. 630and @file{etc/refcards/de-refcard.pdf}.
631 631
632@item 632@item
633There are many other commands in Emacs for getting help and 633There are many other commands in Emacs for getting help and
diff --git a/doc/misc/gnus-coding.texi b/doc/misc/gnus-coding.texi
index ab9c0232d3d..a79c68f0123 100644
--- a/doc/misc/gnus-coding.texi
+++ b/doc/misc/gnus-coding.texi
@@ -1,7 +1,7 @@
1\input texinfo 1\input texinfo
2 2
3@setfilename gnus-coding 3@setfilename gnus-coding
4@settitle Gnus Coding Style and Maintainance Guide 4@settitle Gnus Coding Style and Maintenance Guide
5@syncodeindex fn cp 5@syncodeindex fn cp
6@syncodeindex vr cp 6@syncodeindex vr cp
7@syncodeindex pg cp 7@syncodeindex pg cp
@@ -45,7 +45,7 @@ license to the document, as described in section 6 of the license.
45 45
46@ifnottex 46@ifnottex
47@node Top 47@node Top
48@top Gnus Coding Style and Maintainance Guide 48@top Gnus Coding Style and Maintenance Guide
49This manual describes @dots{} 49This manual describes @dots{}
50 50
51@insertcopying 51@insertcopying
@@ -53,7 +53,7 @@ This manual describes @dots{}
53 53
54@menu 54@menu
55* Gnus Coding Style:: Gnus Coding Style 55* Gnus Coding Style:: Gnus Coding Style
56* Gnus Maintainance Guide:: Gnus Maintainance Guide 56* Gnus Maintenance Guide:: Gnus Maintenance Guide
57@end menu 57@end menu
58 58
59@c @ref{Gnus Reference Guide, ,Gnus Reference Guide, gnus, The Gnus Newsreader} 59@c @ref{Gnus Reference Guide, ,Gnus Reference Guide, gnus, The Gnus Newsreader}
@@ -250,8 +250,8 @@ Emacs 20.7 and up.
250XEmacs 21.1 and up. 250XEmacs 21.1 and up.
251@end itemize 251@end itemize
252 252
253@node Gnus Maintainance Guide 253@node Gnus Maintenance Guide
254@chapter Gnus Maintainance Guide 254@chapter Gnus Maintenance Guide
255 255
256@section Stable and development versions 256@section Stable and development versions
257 257
diff --git a/doc/misc/gnus-news.texi b/doc/misc/gnus-news.texi
index 62c1663508b..612ea14e2cf 100644
--- a/doc/misc/gnus-news.texi
+++ b/doc/misc/gnus-news.texi
@@ -107,7 +107,7 @@ EasyPG is included in Emacs 23 and available separately as well.
107@itemize @bullet 107@itemize @bullet
108 108
109@item 109@item
110Symbols like @code{gcc-self} now has the same presedence rules in 110Symbols like @code{gcc-self} now have the same precedence rules in
111@code{gnus-parameters} as other ``real'' variables: The last match 111@code{gnus-parameters} as other ``real'' variables: The last match
112wins instead of the first match. 112wins instead of the first match.
113 113
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index a3a93c6ef61..f099dfd36d0 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -4491,23 +4491,6 @@ news.
4491@table @kbd 4491@table @kbd
4492 4492
4493 4493
4494@item H f
4495@kindex H f (Group)
4496@findex gnus-group-fetch-faq
4497@vindex gnus-group-faq-directory
4498@cindex FAQ
4499@cindex ange-ftp
4500Try to fetch the @acronym{FAQ} for the current group
4501(@code{gnus-group-fetch-faq}). Gnus will try to get the @acronym{FAQ}
4502from @code{gnus-group-faq-directory}, which is usually a directory on
4503a remote machine. This variable can also be a list of directories.
4504In that case, giving a prefix to this command will allow you to choose
4505between the various sites. @code{ange-ftp} (or @code{efs}) will be
4506used for fetching the file.
4507
4508If fetching from the first site is unsuccessful, Gnus will attempt to go
4509through @code{gnus-group-faq-directory} and try to open them one by one.
4510
4511@item H d 4494@item H d
4512@itemx C-c C-d 4495@itemx C-c C-d
4513@c @icon{gnus-group-describe-group} 4496@c @icon{gnus-group-describe-group}
@@ -8992,7 +8975,7 @@ apostrophe or quotation mark, then try this wash.
8992Translate many non-@acronym{ASCII} characters into their 8975Translate many non-@acronym{ASCII} characters into their
8993@acronym{ASCII} equivalents (@code{gnus-article-treat-non-ascii}). 8976@acronym{ASCII} equivalents (@code{gnus-article-treat-non-ascii}).
8994This is mostly useful if you're on a terminal that has a limited font 8977This is mostly useful if you're on a terminal that has a limited font
8995and does't show accented characters, ``advanced'' punctuation, and the 8978and doesn't show accented characters, ``advanced'' punctuation, and the
8996like. For instance, @samp{»} is tranlated into @samp{>>}, and so on. 8979like. For instance, @samp{»} is tranlated into @samp{>>}, and so on.
8997 8980
8998@item W Y f 8981@item W Y f
@@ -21228,7 +21211,7 @@ features (inspired by the Google search input language):
21228AND, OR, and NOT are supported, and parentheses can be used to control 21211AND, OR, and NOT are supported, and parentheses can be used to control
21229operator precedence, e.g. (emacs OR xemacs) AND linux. Note that 21212operator precedence, e.g. (emacs OR xemacs) AND linux. Note that
21230operators must be written with all capital letters to be 21213operators must be written with all capital letters to be
21231recognised. Also preceding a term with a - sign is equivalent to NOT 21214recognized. Also preceding a term with a - sign is equivalent to NOT
21232term. 21215term.
21233 21216
21234@item Automatic AND queries 21217@item Automatic AND queries
@@ -21273,7 +21256,7 @@ Gmane queries follow a simple query language:
21273AND, OR, NOT (or AND NOT), and XOR are supported, and brackets can be 21256AND, OR, NOT (or AND NOT), and XOR are supported, and brackets can be
21274used to control operator precedence, e.g. (emacs OR xemacs) AND linux. 21257used to control operator precedence, e.g. (emacs OR xemacs) AND linux.
21275Note that operators must be written with all capital letters to be 21258Note that operators must be written with all capital letters to be
21276recognised. 21259recognized.
21277 21260
21278@item Required and excluded terms 21261@item Required and excluded terms
21279+ and - can be used to require or exclude terms, e.g. football -american 21262+ and - can be used to require or exclude terms, e.g. football -american
@@ -25471,7 +25454,7 @@ Write @code{spam-check-blackbox} if Blackbox can check incoming mail.
25471 25454
25472Write @code{spam-blackbox-register-routine} and 25455Write @code{spam-blackbox-register-routine} and
25473@code{spam-blackbox-unregister-routine} using the bogofilter 25456@code{spam-blackbox-unregister-routine} using the bogofilter
25474register/unregister routines as a start, or other restister/unregister 25457register/unregister routines as a start, or other register/unregister
25475routines more appropriate to Blackbox, if Blackbox can 25458routines more appropriate to Blackbox, if Blackbox can
25476register/unregister spam and ham. 25459register/unregister spam and ham.
25477 25460
@@ -30030,7 +30013,7 @@ this:
30030@subsection Score File Syntax 30013@subsection Score File Syntax
30031 30014
30032Score files are meant to be easily parseable, but yet extremely 30015Score files are meant to be easily parseable, but yet extremely
30033mallable. It was decided that something that had the same read syntax 30016malleable. It was decided that something that had the same read syntax
30034as an Emacs Lisp list would fit that spec. 30017as an Emacs Lisp list would fit that spec.
30035 30018
30036Here's a typical score file: 30019Here's a typical score file:
diff --git a/doc/misc/message.texi b/doc/misc/message.texi
index 48d0028e452..4d828f69bbd 100644
--- a/doc/misc/message.texi
+++ b/doc/misc/message.texi
@@ -2120,7 +2120,7 @@ follows this line--} by default.
2120 2120
2121@item message-directory 2121@item message-directory
2122@vindex message-directory 2122@vindex message-directory
2123Directory used by many mailey things. The default is @file{~/Mail/}. 2123Directory used by many mailish things. The default is @file{~/Mail/}.
2124All other mail file variables are derived from @code{message-directory}. 2124All other mail file variables are derived from @code{message-directory}.
2125 2125
2126@item message-auto-save-directory 2126@item message-auto-save-directory
diff --git a/doc/misc/org.texi b/doc/misc/org.texi
index cc925906c28..34a4ba4f8f3 100644
--- a/doc/misc/org.texi
+++ b/doc/misc/org.texi
@@ -15533,7 +15533,7 @@ chapter about publishing.
15533@i{Jambunathan K} contributed the OpenDocumentText exporter. 15533@i{Jambunathan K} contributed the OpenDocumentText exporter.
15534@item 15534@item
15535@i{Sebastien Vauban} reported many issues with LaTeX and BEAMER export and 15535@i{Sebastien Vauban} reported many issues with LaTeX and BEAMER export and
15536enabled source code highlighling in Gnus. 15536enabled source code highlighting in Gnus.
15537@item 15537@item
15538@i{Stefan Vollmar} organized a video-recorded talk at the 15538@i{Stefan Vollmar} organized a video-recorded talk at the
15539Max-Planck-Institute for Neurology. He also inspired the creation of a 15539Max-Planck-Institute for Neurology. He also inspired the creation of a
diff --git a/doc/misc/sem-user.texi b/doc/misc/sem-user.texi
index 7a363523aa6..28d1cdb6eb8 100644
--- a/doc/misc/sem-user.texi
+++ b/doc/misc/sem-user.texi
@@ -880,7 +880,7 @@ command, like this:
880@end example 880@end example
881@end defun 881@end defun
882 882
883These commands are often more accurate than than the @code{find-tag} 883These commands are often more accurate than the @code{find-tag}
884command (@pxref{Tags,,,emacs,Emacs manual}), because the Semantic 884command (@pxref{Tags,,,emacs,Emacs manual}), because the Semantic
885Analyzer is context-sensitive. 885Analyzer is context-sensitive.
886 886
diff --git a/doc/misc/semantic.texi b/doc/misc/semantic.texi
index ad6159feb1a..55b60937fb6 100644
--- a/doc/misc/semantic.texi
+++ b/doc/misc/semantic.texi
@@ -421,7 +421,7 @@ local variables, and tag lists in scope for various reasons, such as
421C++ using statements. 421C++ using statements.
422 422
423@item semanticdb-typecache.el 423@item semanticdb-typecache.el
424The typecache is part of @code{semanticdb}, but is used primarilly by 424The typecache is part of @code{semanticdb}, but is used primarily by
425the analyzer to look up datatypes and complex names. The typecache is 425the analyzer to look up datatypes and complex names. The typecache is
426bound across source files and builds a master lookup table for data 426bound across source files and builds a master lookup table for data
427type names. 427type names.
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 0accc6fac43..e6b0f4fa235 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -3180,7 +3180,7 @@ names:
3180 '("^/xy" . "@trampfn{ssh, news, news.my.domain, /opt/news/etc/}")) 3180 '("^/xy" . "@trampfn{ssh, news, news.my.domain, /opt/news/etc/}"))
3181@end lisp 3181@end lisp
3182 3182
3183This shortens the file openening command to @kbd{C-x C-f /xy 3183This shortens the file opening command to @kbd{C-x C-f /xy
3184@key{RET}}. The disadvantage is, again, that you cannot edit the file 3184@key{RET}}. The disadvantage is, again, that you cannot edit the file
3185name, because the expansion happens after entering the file name only. 3185name, because the expansion happens after entering the file name only.
3186 3186
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 1db595b3175..64479f7987f 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,9 @@
12011-11-20 Bill Wohler <wohler@newt.com>
2
3 Release MH-E version 8.3.1.
4
5 * NEWS, MH-E-NEWS: Update for MH-E release 8.3.1.
6
12011-11-14 Juanma Barranquero <lekktu@gmail.com> 72011-11-14 Juanma Barranquero <lekktu@gmail.com>
2 8
3 * MAILINGLISTS: Fix typo. 9 * MAILINGLISTS: Fix typo.
@@ -1413,7 +1419,7 @@
1413 1419
14142008-02-01 Kenichi Handa <handa@m17n.org> 14202008-02-01 Kenichi Handa <handa@m17n.org>
1415 1421
1416 * HELLO: Remove non-unicode character from Tibetan text. 1422 * HELLO: Remove non-Unicode character from Tibetan text.
1417 1423
14182008-02-01 Miles Bader <miles@gnu.org> 14242008-02-01 Miles Bader <miles@gnu.org>
1419 1425
@@ -4107,7 +4113,7 @@
4107 4113
41082002-02-01 ShengHuo ZHU <zsh@cs.rochester.edu> 41142002-02-01 ShengHuo ZHU <zsh@cs.rochester.edu>
4109 4115
4110 * gnus.xpm: Remove garbages. 4116 * gnus.xpm: Remove garbage.
4111 4117
41122002-01-27 Pavel Janík <Pavel@Janik.cz> 41182002-01-27 Pavel Janík <Pavel@Janik.cz>
4113 4119
diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS
index 04084b58488..14d2a22e9f9 100644
--- a/etc/ERC-NEWS
+++ b/etc/ERC-NEWS
@@ -1279,7 +1279,7 @@ in XEmacs.
1279** The module system has again changed a lot. You can now customize 1279** The module system has again changed a lot. You can now customize
1280 the variable `erc-modules' and define once and for all which 1280 the variable `erc-modules' and define once and for all which
1281 extension modules you want to use. This unfortunately may require 1281 extension modules you want to use. This unfortunately may require
1282 you to change your current erc initialisation code a bit, if you 1282 you to change your current erc initialization code a bit, if you
1283 have some existing customizations. On the other hand, this change 1283 have some existing customizations. On the other hand, this change
1284 makes the configuration of extension modules a lot easier for new 1284 makes the configuration of extension modules a lot easier for new
1285 users. In theory, you should be able to configure all aspects of 1285 users. In theory, you should be able to configure all aspects of
diff --git a/etc/MH-E-NEWS b/etc/MH-E-NEWS
index 2e93b5c3f42..4ab75dcfc45 100644
--- a/etc/MH-E-NEWS
+++ b/etc/MH-E-NEWS
@@ -3,6 +3,11 @@
3Copyright (C) 2001-2011 Free Software Foundation, Inc. 3Copyright (C) 2001-2011 Free Software Foundation, Inc.
4See the end of the file for license conditions. 4See the end of the file for license conditions.
5 5
6* Changes in MH-E 8.3.1
7
8This version of MH-E fixes typos in the documentation and is packaged
9with GNU Emacs 24.1
10
6* Changes in MH-E 8.3 11* Changes in MH-E 8.3
7 12
8In 2010, the version control system (VCS) of Emacs was upgraded from 13In 2010, the version control system (VCS) of Emacs was upgraded from
@@ -27,8 +32,6 @@ from SourceForge and explicitly load MH-E will have to be change their
27`load-path' to "/path/to/mh-e/emacs/trunk/lisp/mh-e" instead. Note the 32`load-path' to "/path/to/mh-e/emacs/trunk/lisp/mh-e" instead. Note the
28addition of "trunk." 33addition of "trunk."
29 34
30This version of MH-E is packaged with GNU Emacs 24.1
31
32** Bug Fixes in MH-E 8.3 35** Bug Fixes in MH-E 8.3
33 36
34*** Make mh-showing a legitimate minor mode 37*** Make mh-showing a legitimate minor mode
@@ -2666,7 +2669,7 @@ consistent mnemonics were realized that should make it easier to
2666remember key bindings. 2669remember key bindings.
2667 2670
2668Added new sub-keymaps for folder commands, sequence commands, 2671Added new sub-keymaps for folder commands, sequence commands,
2669extraction commands, and digest commands which begin with with F, S, 2672extraction commands, and digest commands which begin with F, S,
2670X, and D, respectively. These sub-keymaps allowed some consistency 2673X, and D, respectively. These sub-keymaps allowed some consistency
2671(e.g., especially with l(ist) and k(ill)). 2674(e.g., especially with l(ist) and k(ill)).
2672 2675
diff --git a/etc/NEWS b/etc/NEWS
index 8b08707c274..b9192c72b5e 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -147,7 +147,7 @@ then the equivalent line in ~/.authinfo would be
147 147
148**** The variable `smtpmail-starttls-credentials' has been removed. 148**** The variable `smtpmail-starttls-credentials' has been removed.
149 149
150If you had that set, then then you need to put 150If you had that set, then you need to put
151 151
152 machine smtp.whatever.foo port 25 key "~/.my_smtp_tls.key" cert "~/.my_smtp_tls.cert" 152 machine smtp.whatever.foo port 25 key "~/.my_smtp_tls.key" cert "~/.my_smtp_tls.cert"
153 153
@@ -417,7 +417,7 @@ of the window will resize all windows in the same combination as well.
417 417
418+++ 418+++
419*** New commands `maximize-window' and `minimize-window'. 419*** New commands `maximize-window' and `minimize-window'.
420These maximize and minize the size of a window within its frame. 420These maximize and minimize the size of a window within its frame.
421 421
422+++ 422+++
423*** New commands `switch-to-prev-buffer' and `switch-to-next-buffer'. 423*** New commands `switch-to-prev-buffer' and `switch-to-next-buffer'.
@@ -709,7 +709,7 @@ consult.
709 709
710** The Landmark game is now invoked with `landmark', not `lm'. 710** The Landmark game is now invoked with `landmark', not `lm'.
711 711
712** MH-E has been upgraded to MH-E version 8.3. 712** MH-E has been upgraded to MH-E version 8.3.1.
713See MH-E-NEWS for details. 713See MH-E-NEWS for details.
714 714
715** Modula-2 mode provides auto-indentation. 715** Modula-2 mode provides auto-indentation.
@@ -1126,7 +1126,7 @@ state before the last buffer display operation in that window.
1126 1126
1127+++ 1127+++
1128*** The new option `frame-auto-hide-function' lets you choose between 1128*** The new option `frame-auto-hide-function' lets you choose between
1129iconfying or deleting a frame when burying a buffer shown in a dedicated 1129iconifying or deleting a frame when burying a buffer shown in a dedicated
1130frame or quitting a window showing a buffer in a frame of its own. 1130frame or quitting a window showing a buffer in a frame of its own.
1131 1131
1132** Completion 1132** Completion
diff --git a/etc/NEWS.1-17 b/etc/NEWS.1-17
index b1da9122934..dc9922ed989 100644
--- a/etc/NEWS.1-17
+++ b/etc/NEWS.1-17
@@ -775,7 +775,7 @@ to the value of `minibuffer-help-form'.
775 775
776`help-form' is expected at all times to contain either `nil' 776`help-form' is expected at all times to contain either `nil'
777or an expression to be executed when C-h is typed (overriding 777or an expression to be executed when C-h is typed (overriding
778teh definition of C-h as a command). `minibuffer-help-form' 778the definition of C-h as a command). `minibuffer-help-form'
779can be used to provide a different default way of handling 779can be used to provide a different default way of handling
780C-h while in the minibuffer. 780C-h while in the minibuffer.
781 781
@@ -1382,7 +1382,7 @@ Changes in Emacs 15
1382 specify the tag table file name initially, or to switch 1382 specify the tag table file name initially, or to switch
1383 to a new tag table. 1383 to a new tag table.
1384 1384
1385* If truncate-partial-width-windows is non-nil (as it intially is), 1385* If truncate-partial-width-windows is non-nil (as it initially is),
1386 all windows less than the full screen width (that is, 1386 all windows less than the full screen width (that is,
1387 made by side-by-side splitting) truncate lines rather than continuing 1387 made by side-by-side splitting) truncate lines rather than continuing
1388 them. 1388 them.
@@ -1870,7 +1870,7 @@ Changes in Emacs 1.9
1870 1870
1871* The variable global-minor-modes is used to display 1871* The variable global-minor-modes is used to display
1872 strings in the mode line of all buffers. It should be 1872 strings in the mode line of all buffers. It should be
1873 a list of elements thaht are conses whose cdrs are strings 1873 a list of elements that are conses whose cdrs are strings
1874 to be displayed. This complements the variable 1874 to be displayed. This complements the variable
1875 minor-modes, which has the same effect but has a separate 1875 minor-modes, which has the same effect but has a separate
1876 value in each buffer. 1876 value in each buffer.
@@ -2019,7 +2019,7 @@ Changes in Emacs 1.6
2019* save-buffers-kill-emacs is now on C-x C-c 2019* save-buffers-kill-emacs is now on C-x C-c
2020 while C-x C-z does suspend-emacs. This is to make 2020 while C-x C-z does suspend-emacs. This is to make
2021 C-x C-c like the normal Unix meaning of C-c 2021 C-x C-c like the normal Unix meaning of C-c
2022 and C-x C-z linke the normal Unix meaning of C-z. 2022 and C-x C-z like the normal Unix meaning of C-z.
2023 2023
2024* M-ESC (eval-expression) is now a disabled command by default. 2024* M-ESC (eval-expression) is now a disabled command by default.
2025 This prevents users who type ESC ESC accidentally from 2025 This prevents users who type ESC ESC accidentally from
@@ -2423,7 +2423,7 @@ Changes in Emacs 1.1
2423 or show the text or subheadings under each heading line 2423 or show the text or subheadings under each heading line
2424 independently. Hidden text or subheadings are invisibly 2424 independently. Hidden text or subheadings are invisibly
2425 attached to the end of the preceding heading line, so that 2425 attached to the end of the preceding heading line, so that
2426 if you kill the hading line and yank it back elsewhere 2426 if you kill the heading line and yank it back elsewhere
2427 all the invisible lines accompany it. 2427 all the invisible lines accompany it.
2428 2428
2429 All editing commands treat hidden outline-mode lines 2429 All editing commands treat hidden outline-mode lines
diff --git a/etc/NEWS.18 b/etc/NEWS.18
index 6bf854d8b33..820103e3110 100644
--- a/etc/NEWS.18
+++ b/etc/NEWS.18
@@ -519,7 +519,7 @@ exist to customize these feature for different Lisp implementations.
519 519
520** C-x p now disabled. 520** C-x p now disabled.
521 521
522The command C-x p, a nonrecomended command which narrows to the current 522The command C-x p, a nonrecommended command which narrows to the current
523page, is now initially disabled like C-x n. 523page, is now initially disabled like C-x n.
524 524
525* Dealing with files. 525* Dealing with files.
@@ -1303,7 +1303,7 @@ changing the file's uid or gid.
1303 1303
1304The default value of this variable is `nil', because usually it is 1304The default value of this variable is `nil', because usually it is
1305useful to have the uid of a file change according to who edited it 1305useful to have the uid of a file change according to who edited it
1306last. I recommend thet this variable be left normally `nil' and 1306last. I recommend that this variable be left normally `nil' and
1307changed with a local variables list in those particular files where 1307changed with a local variables list in those particular files where
1308the uid needs to be preserved. 1308the uid needs to be preserved.
1309 1309
@@ -1620,4 +1620,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
1620Local variables: 1620Local variables:
1621mode: text 1621mode: text
1622end: 1622end:
1623
diff --git a/etc/NEWS.19 b/etc/NEWS.19
index 6c1c5483809..16a9d9dc4cb 100644
--- a/etc/NEWS.19
+++ b/etc/NEWS.19
@@ -1828,7 +1828,7 @@ c-fill-paragraph's behavior.
1828containing an open brace just after a case/default label. 1828containing an open brace just after a case/default label.
1829 1829
1830*** New variable, c-progress-interval, which controls minibuffer update 1830*** New variable, c-progress-interval, which controls minibuffer update
1831message displays during long re-indention. This is a new feature 1831message displays during long re-indentation. This is a new feature
1832which prints percentage complete messages at specified intervals. 1832which prints percentage complete messages at specified intervals.
1833 1833
1834** Makefile mode changes. 1834** Makefile mode changes.
@@ -4288,7 +4288,7 @@ filename completion in comint mode apply, together with a variable
4288controlling whether to restrict possible completions to only files 4288controlling whether to restrict possible completions to only files
4289that are executable (`shell-command-execonly'). 4289that are executable (`shell-command-execonly').
4290 4290
4291The input history is initialised from the file name given in the 4291The input history is initialized from the file name given in the
4292variable `shell-input-ring-file-name'--normally `.history' in your 4292variable `shell-input-ring-file-name'--normally `.history' in your
4293home directory. 4293home directory.
4294 4294
@@ -5484,7 +5484,7 @@ non-nil.
5484** M-x revert-buffer no longer offers to revert from a recent auto-save 5484** M-x revert-buffer no longer offers to revert from a recent auto-save
5485file unless you give it a prefix argument. Otherwise it always 5485file unless you give it a prefix argument. Otherwise it always
5486reverts from the real file regardless of whether there has been an 5486reverts from the real file regardless of whether there has been an
5487auto-save since thenm. (Reverting from the auto-save file is no longer 5487auto-save since then. (Reverting from the auto-save file is no longer
5488very useful now that the undo capacity is larger.) 5488very useful now that the undo capacity is larger.)
5489 5489
5490** M-x recover-file no longer turns off Auto Save mode when it reads 5490** M-x recover-file no longer turns off Auto Save mode when it reads
diff --git a/etc/NEWS.21 b/etc/NEWS.21
index c3c54d8bb01..c018567c40d 100644
--- a/etc/NEWS.21
+++ b/etc/NEWS.21
@@ -1678,7 +1678,7 @@ current file, or you can use C-x v r RET to get an update for an
1678entire directory tree. 1678entire directory tree.
1679 1679
1680The new user option `vc-cvs-use-edit' indicates whether VC should call 1680The new user option `vc-cvs-use-edit' indicates whether VC should call
1681"cvs edit" to make files writeable; it defaults to `t'. (This option 1681"cvs edit" to make files writable; it defaults to `t'. (This option
1682is only meaningful if the CVSREAD variable is set, or if files are 1682is only meaningful if the CVSREAD variable is set, or if files are
1683"watched" by other developers.) 1683"watched" by other developers.)
1684 1684
diff --git a/etc/NEWS.22 b/etc/NEWS.22
index 3920f59fefa..5e95e40b04c 100644
--- a/etc/NEWS.22
+++ b/etc/NEWS.22
@@ -1275,7 +1275,7 @@ coding system.
1275of a file. 1275of a file.
1276 1276
1277*** New command `ucs-insert' inserts a character specified by its 1277*** New command `ucs-insert' inserts a character specified by its
1278unicode. 1278Unicode code point or character name.
1279 1279
1280*** New command quail-show-key shows what key (or key sequence) to type 1280*** New command quail-show-key shows what key (or key sequence) to type
1281in the current input method to input a character at point. 1281in the current input method to input a character at point.
@@ -3356,7 +3356,7 @@ contracts or expands the line under the cursor.
3356*** The new commands `speedbar-expand-line-descendants' and 3356*** The new commands `speedbar-expand-line-descendants' and
3357`speedbar-contract-line-descendants', bound to `[' and `]' 3357`speedbar-contract-line-descendants', bound to `[' and `]'
3358respectively, expand and contract the line under cursor with all of 3358respectively, expand and contract the line under cursor with all of
3359its descendents. 3359its descendants.
3360 3360
3361*** The new user option `speedbar-use-tool-tips-flag', if non-nil, 3361*** The new user option `speedbar-use-tool-tips-flag', if non-nil,
3362means to display tool-tips for speedbar items. 3362means to display tool-tips for speedbar items.
diff --git a/etc/NEWS.23 b/etc/NEWS.23
index 3a222d50d4c..9b8909d794a 100644
--- a/etc/NEWS.23
+++ b/etc/NEWS.23
@@ -843,7 +843,7 @@ shared with older Emacsen.
843 843
844*** There is a new charset implementation with many new charsets. 844*** There is a new charset implementation with many new charsets.
845See M-x list-character-sets. New charsets can be defined conveniently 845See M-x list-character-sets. New charsets can be defined conveniently
846as tables of unicodes. 846as tables of Unicode code points.
847 847
848*** There are new language environments for Chinese-GBK, 848*** There are new language environments for Chinese-GBK,
849Chinese-GB18030, Khmer, Bengali, Punjabi, Gujarati, Oriya, Telugu, 849Chinese-GB18030, Khmer, Bengali, Punjabi, Gujarati, Oriya, Telugu,
@@ -1837,7 +1837,7 @@ for the list of extra keys that are available.
1837 1837
1838** BDF fonts no longer supported on MS-Windows. 1838** BDF fonts no longer supported on MS-Windows.
1839The font backend was completely rewritten for this release. The focus 1839The font backend was completely rewritten for this release. The focus
1840on Windows has been getting acceptable performance and full unicode 1840on Windows has been getting acceptable performance and full Unicode
1841support, including complex script shaping for native Windows fonts. A 1841support, including complex script shaping for native Windows fonts. A
1842rewrite of the BDF font support has not happened due to lack of time 1842rewrite of the BDF font support has not happened due to lack of time
1843and developers. If demand still exists for such a backend even with 1843and developers. If demand still exists for such a backend even with
diff --git a/etc/THE-GNU-PROJECT b/etc/THE-GNU-PROJECT
index 80dde864901..f3d554e45bf 100644
--- a/etc/THE-GNU-PROJECT
+++ b/etc/THE-GNU-PROJECT
@@ -762,7 +762,7 @@
762 Those of us who value free software for freedom's sake will stay with 762 Those of us who value free software for freedom's sake will stay with
763 free software anyway. We will manage to get work done without the 763 free software anyway. We will manage to get work done without the
764 patented features. But those who value free software because they 764 patented features. But those who value free software because they
765 expect it to be techically superior are likely to call it a failure 765 expect it to be technically superior are likely to call it a failure
766 when a patent holds it back. Thus, while it is useful to talk about the 766 when a patent holds it back. Thus, while it is useful to talk about the
767 practical effectiveness of the "cathedral" model of development (1), 767 practical effectiveness of the "cathedral" model of development (1),
768 and the reliability and power of some free software, we must not stop 768 and the reliability and power of some free software, we must not stop
diff --git a/etc/TODO b/etc/TODO
index aa06f73ee94..f9d37c4b965 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -205,7 +205,7 @@ of the scroll bar itself. That depends on to what extent toolkit
205scroll bars are extensible. 205scroll bars are extensible.
206 206
207** Provide user-friendly ways to list all available font families, 207** Provide user-friendly ways to list all available font families,
208 list fonts, display a font as a sample, etc. [fx is looking at 208 list fonts, display a font as a sample, etc. [fx is looking at
209 multilingual font selection for the Unicode branch of Emacs.] 209 multilingual font selection for the Unicode branch of Emacs.]
210 210
211** Provide a convenient way to select a color with the mouse. 211** Provide a convenient way to select a color with the mouse.
@@ -635,7 +635,7 @@ up on top of all others
635 635
636*** Other / Low Priority: 636*** Other / Low Priority:
637 637
638**** Better recognition of unicode scripts / Greek / composition. 638**** Better recognition of Unicode scripts / Greek / composition.
639 639
640**** Undo for color-drag face customization. 640**** Undo for color-drag face customization.
641 641
diff --git a/etc/gnus/news-server.ast b/etc/gnus/news-server.ast
index 432f71a50f0..df0bab4519b 100644
--- a/etc/gnus/news-server.ast
+++ b/etc/gnus/news-server.ast
@@ -7,7 +7,7 @@
7@validate (or (assistant-validate-connect-to-server server port) (y-or-n-p "Do you want to use the server anyway, although you can't confirm it's valid?")) 7@validate (or (assistant-validate-connect-to-server server port) (y-or-n-p "Do you want to use the server anyway, although you can't confirm it's valid?"))
8@result gnus-select-method (list 'nntp server (list 'nntp-server port)) 8@result gnus-select-method (list 'nntp server (list 'nntp-server port))
9@text 9@text
10Usenet news is usually read from your Internet service prodider's news 10Usenet news is usually read from your Internet service provider's news
11server. If you don't know the name of this server, contact your ISP. 11server. If you don't know the name of this server, contact your ISP.
12 12
13As a guess, the name of the server might be news.yourisp.com. 13As a guess, the name of the server might be news.yourisp.com.
@@ -61,4 +61,3 @@ Password: @variable{user-name}
61@c End: 61@c End:
62 62
63@c arch tag is missing 63@c arch tag is missing
64
diff --git a/etc/srecode/test.srt b/etc/srecode/test.srt
index b296f9dc515..d3dad33a5a2 100644
--- a/etc/srecode/test.srt
+++ b/etc/srecode/test.srt
@@ -81,7 +81,7 @@ template gapsomething :blank
81---- 81----
82 82
83template inlinetext 83template inlinetext
84"Insert text that has no nelines" 84"Insert text that has no newlines"
85---- 85----
86 *In the middle* 86 *In the middle*
87---- 87----
diff --git a/etc/themes/manoj-dark-theme.el b/etc/themes/manoj-dark-theme.el
index 55b07e6eaef..b06678636c7 100644
--- a/etc/themes/manoj-dark-theme.el
+++ b/etc/themes/manoj-dark-theme.el
@@ -37,7 +37,7 @@
37;; (blueish) or mail (greenish), have states (large number of under 37;; (blueish) or mail (greenish), have states (large number of under
38;; messages, normal, and empty). The large number unread groups have 38;; messages, normal, and empty). The large number unread groups have
39;; highest luminance (appear brighter), and the empty one have lower 39;; highest luminance (appear brighter), and the empty one have lower
40;; luminance (appear greyer), but have the same chroma and saturation. 40;; luminance (appear grayer), but have the same chroma and saturation.
41;; Sub states and group priorities are rendered using a color series 41;; Sub states and group priorities are rendered using a color series
42;; which has constant luminance and saturation, and vary in hue by a 42;; which has constant luminance and saturation, and vary in hue by a
43;; constant separation -- so all the related groups have the same 43;; constant separation -- so all the related groups have the same
@@ -53,7 +53,7 @@
53 53
54;; In the message itself, quoted mail messages from different people 54;; In the message itself, quoted mail messages from different people
55;; are color coordinated, with high contrast between citations that are 55;; are color coordinated, with high contrast between citations that are
56;; close to each other in the heirarchy, so it is less likely that one 56;; close to each other in the hierarchy, so it is less likely that one
57;; misunderstands who said what in a long conversation. 57;; misunderstands who said what in a long conversation.
58 58
59;; The following scheme covers programming languages, Gnus, Erc, mail, 59;; The following scheme covers programming languages, Gnus, Erc, mail,
diff --git a/leim/CXTERM-DIC/CCDOSPY.tit b/leim/CXTERM-DIC/CCDOSPY.tit
index 8c67c3bdfac..97dfe89f1a1 100644
--- a/leim/CXTERM-DIC/CCDOSPY.tit
+++ b/leim/CXTERM-DIC/CCDOSPY.tit
@@ -2,7 +2,7 @@
2# Header added for Emacs 2# Header added for Emacs
3# 3#
4# This file is included in the directory contrib/clients/cxterm of the 4# This file is included in the directory contrib/clients/cxterm of the
5# distribution of X11R6. As the file itself does't contain copyright 5# distribution of X11R6. As the file itself doesn't contain copyright
6# and license notices, the following statements in the section 6 of 6# and license notices, the following statements in the section 6 of
7# the file .../cxterm/README covers it. 7# the file .../cxterm/README covers it.
8# 8#
diff --git a/leim/CXTERM-DIC/PY-b5.tit b/leim/CXTERM-DIC/PY-b5.tit
index 72c20fe70ca..7a8d68aa755 100644
--- a/leim/CXTERM-DIC/PY-b5.tit
+++ b/leim/CXTERM-DIC/PY-b5.tit
@@ -2,7 +2,7 @@
2# Header added for Emacs 2# Header added for Emacs
3# 3#
4# This file is included in the directory contrib/clients/cxterm of the 4# This file is included in the directory contrib/clients/cxterm of the
5# distribution of X11R6. As the file itself does't contain copyright 5# distribution of X11R6. As the file itself doesn't contain copyright
6# and license notices, the following statements in the section 6 of 6# and license notices, the following statements in the section 6 of
7# the file .../cxterm/README covers it. 7# the file .../cxterm/README covers it.
8# 8#
diff --git a/leim/CXTERM-DIC/SW.tit b/leim/CXTERM-DIC/SW.tit
index a30dcf01090..5e8fadfba42 100644
--- a/leim/CXTERM-DIC/SW.tit
+++ b/leim/CXTERM-DIC/SW.tit
@@ -2,7 +2,7 @@
2# Header added for Emacs 2# Header added for Emacs
3# 3#
4# This file is included in the directory contrib/clients/cxterm of the 4# This file is included in the directory contrib/clients/cxterm of the
5# distribution of X11R6. As the file itself does't contain copyright 5# distribution of X11R6. As the file itself doesn't contain copyright
6# and license notices, the following statements in the section 6 of 6# and license notices, the following statements in the section 6 of
7# the file .../cxterm/README covers it. 7# the file .../cxterm/README covers it.
8# 8#
diff --git a/leim/CXTERM-DIC/TONEPY.tit b/leim/CXTERM-DIC/TONEPY.tit
index 4b97ce8f0b1..ddba1d378d1 100644
--- a/leim/CXTERM-DIC/TONEPY.tit
+++ b/leim/CXTERM-DIC/TONEPY.tit
@@ -2,7 +2,7 @@
2# Header added for Emacs 2# Header added for Emacs
3# 3#
4# This file is included in the directory contrib/clients/cxterm of the 4# This file is included in the directory contrib/clients/cxterm of the
5# distribution of X11R6. As the file itself does't contain copyright 5# distribution of X11R6. As the file itself doesn't contain copyright
6# and license notices, the following statements in the section 6 of 6# and license notices, the following statements in the section 6 of
7# the file .../cxterm/README covers it. 7# the file .../cxterm/README covers it.
8# 8#
diff --git a/leim/ChangeLog b/leim/ChangeLog
index 75dde2bcd18..ed8aec0b16d 100644
--- a/leim/ChangeLog
+++ b/leim/ChangeLog
@@ -1,3 +1,7 @@
12011-11-20 Juanma Barranquero <lekktu@gmail.com>
2
3 * quail/hangul.el (hangul-character): Fix typo.
4
12011-09-27 Jambunathan K <kjambunathan@gmail.com> 52011-09-27 Jambunathan K <kjambunathan@gmail.com>
2 6
3 * quail/indian.el (quail-tamil-itrans-misc-table): Delete it. 7 * quail/indian.el (quail-tamil-itrans-misc-table): Delete it.
diff --git a/leim/quail/cyrillic.el b/leim/quail/cyrillic.el
index 88be0a3b7d0..eb5a0a00ade 100644
--- a/leim/quail/cyrillic.el
+++ b/leim/quail/cyrillic.el
@@ -608,7 +608,7 @@
608;; layout. In fact, Microsoft shipped for a while a layout that was lacking 608;; layout. In fact, Microsoft shipped for a while a layout that was lacking
609;; two characters, precisely the "GHE_WITH_UPTURN" and the apostrophe. The 609;; two characters, precisely the "GHE_WITH_UPTURN" and the apostrophe. The
610;; latest versions of Windows software do have the "GHE_WITH_UPTURN" in the 610;; latest versions of Windows software do have the "GHE_WITH_UPTURN" in the
611;; ukrainian keyborad layout but the apostrophe is still not there, whereas 611;; ukrainian keyboard layout but the apostrophe is still not there, whereas
612;; there is one letter, "Cyrillic_YO", not used in ukrainian. Ukrainians 612;; there is one letter, "Cyrillic_YO", not used in ukrainian. Ukrainians
613;; normally replace the "Cyrillic_YO" by the apostrophe sign and live 613;; normally replace the "Cyrillic_YO" by the apostrophe sign and live
614;; happily with this little change. [See "ukrainian-computer" below.] 614;; happily with this little change. [See "ukrainian-computer" below.]
diff --git a/leim/quail/hangul.el b/leim/quail/hangul.el
index 660e7763626..d3071d628e0 100644
--- a/leim/quail/hangul.el
+++ b/leim/quail/hangul.el
@@ -112,7 +112,7 @@
112 112
113(defun hangul-character (cho jung jong) 113(defun hangul-character (cho jung jong)
114 "Convert CHO, JUNG, JONG to the precomposed `Hangul Syllables' character. 114 "Convert CHO, JUNG, JONG to the precomposed `Hangul Syllables' character.
115CHO, JUNG, JONG are relative indices in `Hangul Compatibility Jamo' of unicode. 115CHO, JUNG, JONG are relative indices in `Hangul Compatibility Jamo' of Unicode.
116Return a zero-length string if the conversion fails." 116Return a zero-length string if the conversion fails."
117 (or 117 (or
118 (decode-char 118 (decode-char
diff --git a/leim/quail/ipa.el b/leim/quail/ipa.el
index 559841e8905..4c15be2bf42 100644
--- a/leim/quail/ipa.el
+++ b/leim/quail/ipa.el
@@ -183,7 +183,7 @@ incorrectly, as separate from the modified glyphs.")
183 "Ëš"]) ;; +Unexploded modifier U+02DA 183 "Ëš"]) ;; +Unexploded modifier U+02DA
184 ("<r>" "ʳ") ;; +Rhotacized modifier U+02B3 184 ("<r>" "ʳ") ;; +Rhotacized modifier U+02B3
185 ("<w>" "Ê·") ;; +Labialized modifier U+02B7 185 ("<w>" "Ê·") ;; +Labialized modifier U+02B7
186 ("<?>" "ʱ") ;; +Murmured modififer U+02B1 186 ("<?>" "ʱ") ;; +Murmured modifier U+02B1
187 187
188 ("b<trl>" "Ê™") ;; Bilabial trill U+0299 188 ("b<trl>" "Ê™") ;; Bilabial trill U+0299
189 ("b`" "É“") ;; Bilabial implosive U+0253 189 ("b`" "É“") ;; Bilabial implosive U+0253
@@ -465,8 +465,8 @@ displays them, incorrectly, as separate from the modified glyphs.")
465 ("_}" "Ìš") ;; No audible release U+031A 465 ("_}" "Ìš") ;; No audible release U+031A
466 ;; ` is alternatively; retroflexion in consonants 466 ;; ` is alternatively; retroflexion in consonants
467 ("`" "Ëž") ;; Rhotacization in vowels U+02DE 467 ("`" "Ëž") ;; Rhotacization in vowels U+02DE
468 ("_~" "̃") ;; Nasalisation U+0303 468 ("_~" "̃") ;; Nasalization U+0303
469 ("~" "̃") ;; Nasalisation U+0303 469 ("~" "̃") ;; Nasalization U+0303
470 ("_A" "̘") ;; Advanced tongue root U+0318 470 ("_A" "̘") ;; Advanced tongue root U+0318
471 ("_a" "̺") ;; Apical U+033A 471 ("_a" "̺") ;; Apical U+033A
472 ("_B" "Ì") ;; Extra low tone U+030F 472 ("_B" "Ì") ;; Extra low tone U+030F
diff --git a/leim/quail/sgml-input.el b/leim/quail/sgml-input.el
index 3b569879404..a8c335afa33 100644
--- a/leim/quail/sgml-input.el
+++ b/leim/quail/sgml-input.el
@@ -916,7 +916,7 @@ E.g.: &aacute; -> á"
916 ("&theta;" ?\θ) ;; GREEK SMALL LETTER THETA 916 ("&theta;" ?\θ) ;; GREEK SMALL LETTER THETA
917 ("&Theta;" ?\Θ) ;; GREEK CAPITAL LETTER THETA 917 ("&Theta;" ?\Θ) ;; GREEK CAPITAL LETTER THETA
918 ("&thetas;" ?\θ) ;; GREEK SMALL LETTER THETA 918 ("&thetas;" ?\θ) ;; GREEK SMALL LETTER THETA
919 ("&thetasyLsymbol;" ?\Ï‘) ;; GREEK THETA SYMBOL 919 ("&thetasym;" ?\Ï‘) ;; GREEK THETA SYMBOL
920 ("&thetav;" ?\Ï‘) ;; GREEK THETA SYMBOL 920 ("&thetav;" ?\Ï‘) ;; GREEK THETA SYMBOL
921 ("&THgr;" ?\Θ) ;; GREEK CAPITAL LETTER THETA 921 ("&THgr;" ?\Θ) ;; GREEK CAPITAL LETTER THETA
922 ("&thgr;" ?\θ) ;; GREEK SMALL LETTER THETA 922 ("&thgr;" ?\θ) ;; GREEK SMALL LETTER THETA
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index d043f41962e..983754eb1c3 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -2032,7 +2032,7 @@
2032 * etags.c [ETAGS_REGEXPS]: Now is unconditionally defined. 2032 * etags.c [ETAGS_REGEXPS]: Now is unconditionally defined.
2033 [LONG_OPTIONS]: Changed to NO_LONG_OPTIONS, which is undefined. 2033 [LONG_OPTIONS]: Changed to NO_LONG_OPTIONS, which is undefined.
2034 (Objc_suffixes): Suggest using --lang=c for full help. 2034 (Objc_suffixes): Suggest using --lang=c for full help.
2035 (C_entries): Initialise savetoken to 0 to shut up the compiler. 2035 (C_entries): Initialize savetoken to 0 to shut up the compiler.
2036 2036
20372006-07-20 Andreas Schwab <schwab@suse.de> 20372006-07-20 Andreas Schwab <schwab@suse.de>
2038 2038
@@ -2738,7 +2738,7 @@
2738 (add_regex, regex_tag_multiline, readline): Use it. 2738 (add_regex, regex_tag_multiline, readline): Use it.
2739 (main): Free some global structures. 2739 (main): Free some global structures.
2740 (fdesc): New member `written'. 2740 (fdesc): New member `written'.
2741 (readline, process_file): Initialise it. 2741 (readline, process_file): Initialize it.
2742 (put_entries): Set it. 2742 (put_entries): Set it.
2743 (main): Use it to create entries for files without tags. 2743 (main): Use it to create entries for files without tags.
2744 (total_size_of_entries): Do not count invalid tags. 2744 (total_size_of_entries): Do not count invalid tags.
@@ -2849,7 +2849,7 @@
2849 (find_entries): Rewind unconditionally. 2849 (find_entries): Rewind unconditionally.
2850 (find_entries): Do not call language functions directly, now calls 2850 (find_entries): Do not call language functions directly, now calls
2851 itself. 2851 itself.
2852 (find_entries): Do general initialisations here. 2852 (find_entries): Do general initializations here.
2853 (CNL_SAVE_DEFINEDEF, C_entries, LOOP_ON_INPUT_LINES, F_getit) 2853 (CNL_SAVE_DEFINEDEF, C_entries, LOOP_ON_INPUT_LINES, F_getit)
2854 (Ada_getit, Pascal_functions, Pascal_functions) 2854 (Ada_getit, Pascal_functions, Pascal_functions)
2855 (prolog_skip_comment): Do not do them here. 2855 (prolog_skip_comment): Do not do them here.
@@ -3085,7 +3085,7 @@
3085 (TeX_commands): Name tags. Correction of old disabled code. 3085 (TeX_commands): Name tags. Correction of old disabled code.
3086 3086
3087 * etags.c (curfiledir, curtagfname): New global variables. 3087 * etags.c (curfiledir, curtagfname): New global variables.
3088 (process_file): Initialise them. 3088 (process_file): Initialize them.
3089 (readline): Canonicalize the name found in #line directive. 3089 (readline): Canonicalize the name found in #line directive.
3090 3090
30912002-03-06 Jason Rumney <jasonr@gnu.org> 30912002-03-06 Jason Rumney <jasonr@gnu.org>
@@ -3175,7 +3175,7 @@
3175 (L_getit): Simplify by using get_tag. 3175 (L_getit): Simplify by using get_tag.
3176 (Perl_functions, Postscript_functions, erlang_attribute): Use the 3176 (Perl_functions, Postscript_functions, erlang_attribute): Use the
3177 modified LOOKING_AT. 3177 modified LOOKING_AT.
3178 (notinname): Remove '[' and added ')' to the recognised chars. 3178 (notinname): Remove '[' and added ')' to the recognized chars.
3179 (LOOKING_AT, get_tag, PHP_functions): Use notinname. 3179 (LOOKING_AT, get_tag, PHP_functions): Use notinname.
3180 (Ada_getit, Ada_funcs, Python_functions, Scheme_functions): 3180 (Ada_getit, Ada_funcs, Python_functions, Scheme_functions):
3181 Clarified, using strneq or notinname. 3181 Clarified, using strneq or notinname.
@@ -3242,7 +3242,7 @@
3242 (Scheme_functions, Texinfo_nodes): Use it. 3242 (Scheme_functions, Texinfo_nodes): Use it.
3243 (Perl_functions): Use strneq. 3243 (Perl_functions): Use strneq.
3244 (prolog_pred): Rename to prolog_pr. 3244 (prolog_pred): Rename to prolog_pr.
3245 (prolog_pr): Recognise Prolog rules in addition to predicates. 3245 (prolog_pr): Recognize Prolog rules in addition to predicates.
3246 [ETAGS_REGEXPS] [!HAVE_CONFIG_H] [__CYGWIN__]: Prevent 3246 [ETAGS_REGEXPS] [!HAVE_CONFIG_H] [__CYGWIN__]: Prevent
3247 unmodified compile, as Cygwin's regex.h is incompatible with us. 3247 unmodified compile, as Cygwin's regex.h is incompatible with us.
3248 [!HAVE_CONFIG_H] [!__STDC__]: #define const as the empty string. 3248 [!HAVE_CONFIG_H] [!__STDC__]: #define const as the empty string.
@@ -3516,7 +3516,7 @@
3516 * etags.c (enum sym_type): New label st_C_template. 3516 * etags.c (enum sym_type): New label st_C_template.
3517 (gperf input): Use it for switching to C++ from C. 3517 (gperf input): Use it for switching to C++ from C.
3518 (consider_token): Do it. 3518 (consider_token): Do it.
3519 (C_entries): Initialise typdefcblev to quiet compilers. 3519 (C_entries): Initialize typdefcblev to quiet compilers.
3520 [!HAVE_CONFIG_H] [!__STDC__]: #define static as nothing. 3520 [!HAVE_CONFIG_H] [!__STDC__]: #define static as nothing.
3521 3521
35222001-02-22 Andrew Innes <andrewi@gnu.org> 35222001-02-22 Andrew Innes <andrewi@gnu.org>
@@ -3967,7 +3967,7 @@
3967 3967
3968 * etags.c (C_entries, consider_token): C++ `operator' now is 3968 * etags.c (C_entries, consider_token): C++ `operator' now is
3969 tagged in most cases. 3969 tagged in most cases.
3970 As before, :: is not recognised if surrounded by spaces. 3970 As before, :: is not recognized if surrounded by spaces.
3971 3971
3972 * etags.c (relative_filename): Account for DOS file names such 3972 * etags.c (relative_filename): Account for DOS file names such
3973 that is impossible to make one relative to another. 3973 that is impossible to make one relative to another.
@@ -4576,7 +4576,7 @@
4576 * etags.c (C_entries): Use "." instead of "::" for Java. 4576 * etags.c (C_entries): Use "." instead of "::" for Java.
4577 (consider_token): is_func renamed to is_func_or_var. 4577 (consider_token): is_func renamed to is_func_or_var.
4578 (C_entries): is_func renamed to funorvar. 4578 (C_entries): is_func renamed to funorvar.
4579 (C_entries): Initialise tok.named. 4579 (C_entries): Initialize tok.named.
4580 (sym_type, C_stab_entry, consider_token): st_C_ignore is used to 4580 (sym_type, C_stab_entry, consider_token): st_C_ignore is used to
4581 get rid of "import", "package" and "friend". 4581 get rid of "import", "package" and "friend".
4582 (fvdef): Rename from funcdef. Also some constants renamed. 4582 (fvdef): Rename from funcdef. Also some constants renamed.
@@ -4630,7 +4630,7 @@
4630 (lang_names): Add Java. 4630 (lang_names): Add Java.
4631 (sym_type): Add st_C_javastruct for Java. 4631 (sym_type): Add st_C_javastruct for Java.
4632 (C_stab_entry): Add `extends' and `implements' keywords. 4632 (C_stab_entry): Add `extends' and `implements' keywords.
4633 (consider_token, C_entries): Recognise Java structures. 4633 (consider_token, C_entries): Recognize Java structures.
4634 4634
46351997-05-12 Francesco Potortì <F.Potorti@cnuce.cnr.it> 46351997-05-12 Francesco Potortì <F.Potorti@cnuce.cnr.it>
4636 4636
@@ -4678,7 +4678,7 @@
4678 4678
4679 * etags.c (xnew): Add support for debugging with chkmalloc. 4679 * etags.c (xnew): Add support for debugging with chkmalloc.
4680 (error): Use this instead of printf whenever possible. 4680 (error): Use this instead of printf whenever possible.
4681 (main): Only call xnew after having initialised progname. 4681 (main): Only call xnew after having initialized progname.
4682 (substitute): Bad memory corruption error corrected. 4682 (substitute): Bad memory corruption error corrected.
4683 4683
46841997-04-08 Francesco Potortì <F.Potorti@cnuce.cnr.it> 46841997-04-08 Francesco Potortì <F.Potorti@cnuce.cnr.it>
@@ -5596,8 +5596,8 @@
5596 5596
55971995-02-22 Francesco Potortì (pot@cnuce.cnr.it) 55971995-02-22 Francesco Potortì (pot@cnuce.cnr.it)
5598 5598
5599 * etags.c (C_entries): token_saved removed. Initialise tok.valid and 5599 * etags.c (C_entries): token_saved removed. Initialize tok.valid and
5600 savetok.valid. Mark token as valid when it is initialised. 5600 savetok.valid. Mark token as valid when it is initialized.
5601 (make_tag): Make token only if token is valid and reset validity. 5601 (make_tag): Make token only if token is valid and reset validity.
5602 (CNL_SAVE_DEFINEDEF): Test for savetok.valid instead of token_saved. 5602 (CNL_SAVE_DEFINEDEF): Test for savetok.valid instead of token_saved.
5603 (TOKEN): Add a new member: valid. 5603 (TOKEN): Add a new member: valid.
@@ -5609,15 +5609,15 @@
5609 5609
56101995-02-14 Francesco Potortì (pot@cnuce.cnr.it) 56101995-02-14 Francesco Potortì (pot@cnuce.cnr.it)
5611 5611
5612 * etags.c (C_entries): Initialise the new members of TOKEN. 5612 * etags.c (C_entries): Initialize the new members of TOKEN.
5613 (C_entries): Do not allocate a new space for each token found by 5613 (C_entries): Do not allocate a new space for each token found by
5614 consider_token. Let make_tag do that instead. 5614 consider_token. Let make_tag do that instead.
5615 (make_tag): Since now TOKEN has memory of where it is taken from, 5615 (make_tag): Since now TOKEN has memory of where it is taken from,
5616 this new macro substitutes both make_tag_from_new_lb and 5616 this new macro substitutes both make_tag_from_new_lb and
5617 make_tag_from_oth_lb. All callers changed. 5617 make_tag_from_oth_lb. All callers changed.
5618 (TOKEN): Add linepos and buffer members. 5618 (TOKEN): Add linepos and buffer members.
5619 (main): Initialise token_str. 5619 (main): Initialize token_str.
5620 (lang_extensions): Recognise .c++ and .h++ as C++ file suffixes. 5620 (lang_extensions): Recognize .c++ and .h++ as C++ file suffixes.
5621 (token_str): New global variable used by C_entries. 5621 (token_str): New global variable used by C_entries.
5622 5622
56231995-02-07 Richard Stallman <rms@pogo.gnu.ai.mit.edu> 56231995-02-07 Richard Stallman <rms@pogo.gnu.ai.mit.edu>
@@ -5626,7 +5626,7 @@
5626 5626
56271995-02-01 Francesco Potortì (pot@cnuce.cnr.it) 56271995-02-01 Francesco Potortì (pot@cnuce.cnr.it)
5628 5628
5629 * etags.c (pfnote): Initialise been_warned in the node. 5629 * etags.c (pfnote): Initialize been_warned in the node.
5630 (C_entries): Remove a speed hack for the sake of clarity. 5630 (C_entries): Remove a speed hack for the sake of clarity.
5631 5631
56321995-01-18 Francesco Potortì (pot@cnuce.cnr.it) 56321995-01-18 Francesco Potortì (pot@cnuce.cnr.it)
@@ -5911,8 +5911,8 @@
5911 5911
59121994-09-29 Francesco Potortì (pot@cnuce.cnr.it) 59121994-09-29 Francesco Potortì (pot@cnuce.cnr.it)
5913 5913
5914 * etags.c (C_entries): Recognise typedef of ANSI style functions. 5914 * etags.c (C_entries): Recognize typedef of ANSI style functions.
5915 (C_entries): Recognise #define inside a struct. 5915 (C_entries): Recognize #define inside a struct.
5916 (C_entries): ANSI tells that preprocessor commands do not have to 5916 (C_entries): ANSI tells that preprocessor commands do not have to
5917 start on the first column. 5917 start on the first column.
5918 (print_help): Documentation corrected for -d and -D. 5918 (print_help): Documentation corrected for -d and -D.
@@ -6026,7 +6026,7 @@
6026 6026
60271994-07-08 Dave Love (d.love@dl.ac.uk) 60271994-07-08 Dave Love (d.love@dl.ac.uk)
6028 6028
6029 * etags.c (takeprec): Recognise `character*(*) function'. 6029 * etags.c (takeprec): Recognize `character*(*) function'.
6030 6030
60311994-07-08 Francesco Potortì (pot@cnuce.cnr.it) 60311994-07-08 Francesco Potortì (pot@cnuce.cnr.it)
6032 6032
@@ -6219,7 +6219,7 @@
6219 TeX_functions, Prolog_functions. 6219 TeX_functions, Prolog_functions.
6220 (inf): No more a global variable. 6220 (inf): No more a global variable.
6221 (C_entries): Take 2nd parameter `inf' instead of using the global one. 6221 (C_entries): Take 2nd parameter `inf' instead of using the global one.
6222 (find_entries): Add the cp1 var for optimisation. 6222 (find_entries): Add the cp1 var for optimization.
6223 (find_entries): Add more suffixes for assembler files. 6223 (find_entries): Add more suffixes for assembler files.
6224 (Asm_funcs): Now finds labels even without an ending colon. 6224 (Asm_funcs): Now finds labels even without an ending colon.
6225 6225
@@ -6247,7 +6247,7 @@
6247 functions added to compute filenames in tags files. 6247 functions added to compute filenames in tags files.
6248 (process_file): Filenames in tags file are relative to the 6248 (process_file): Filenames in tags file are relative to the
6249 directory where the tags file is (useful with the -o option). 6249 directory where the tags file is (useful with the -o option).
6250 (main): Initialise the outfiledir var. 6250 (main): Initialize the outfiledir var.
6251 (TYPEDST): Add the `tignore' value. 6251 (TYPEDST): Add the `tignore' value.
6252 (C_entries): Corrected various small bugs. 6252 (C_entries): Corrected various small bugs.
6253 6253
@@ -6553,7 +6553,7 @@
6553 6553
65541993-09-20 Francesco Potortì (pot@fly) 65541993-09-20 Francesco Potortì (pot@fly)
6555 6555
6556 * etags.c (C_entries): is_func is initialised here instead of in 6556 * etags.c (C_entries): is_func is initialized here instead of in
6557 consider_token for the sake of the yacc rules section. 6557 consider_token for the sake of the yacc rules section.
6558 (C_entries): Now class, struct, enum, union and typedef produce 6558 (C_entries): Now class, struct, enum, union and typedef produce
6559 named tags. 6559 named tags.
@@ -6607,7 +6607,7 @@
6607 6607
66081993-08-04 Francesco Potortì (pot@spiff.gnu.ai.mit.edu) 66081993-08-04 Francesco Potortì (pot@spiff.gnu.ai.mit.edu)
6609 6609
6610 * etags.c (L_isdef, L_isquote, L_getit): Small optimisations. 6610 * etags.c (L_isdef, L_isquote, L_getit): Small optimizations.
6611 (L_funcs): The (foo::defmumble stuff now should work. 6611 (L_funcs): The (foo::defmumble stuff now should work.
6612 (consider_token): Function returned random value--corrected. 6612 (consider_token): Function returned random value--corrected.
6613 (C_entries): Corrected == versus = typo. 6613 (C_entries): Corrected == versus = typo.
@@ -6629,7 +6629,7 @@
6629 (C_entries, consider_token): Make use of fignore. 6629 (C_entries, consider_token): Make use of fignore.
6630 (consider_token): Reset funcdef when next_token_is_func: when in 6630 (consider_token): Reset funcdef when next_token_is_func: when in
6631 ctags mode makes DEFVAR and others work better. 6631 ctags mode makes DEFVAR and others work better.
6632 (L_isquote): Function that recognises the "(quote" string. 6632 (L_isquote): Function that recognizes the "(quote" string.
6633 (L_getit): Ignore quoting via "'" or "(quote". Useful for defalias. 6633 (L_getit): Ignore quoting via "'" or "(quote". Useful for defalias.
6634 6634
66351993-07-29 Paul Eggert (eggert@twinsun.com) 66351993-07-29 Paul Eggert (eggert@twinsun.com)
@@ -6976,7 +6976,7 @@
6976 (TOKEN): Member linestart removed. 6976 (TOKEN): Member linestart removed.
6977 (linepos, prev_linepos, lb1): Deleted. 6977 (linepos, prev_linepos, lb1): Deleted.
6978 (main): Call initbuffer on lbs array instead of lb1. 6978 (main): Call initbuffer on lbs array instead of lb1.
6979 (init): Remove the initialisation of the logical _gd array. 6979 (init): Remove the initialization of the logical _gd array.
6980 (find_entries): A .sa suffix means assembler file. 6980 (find_entries): A .sa suffix means assembler file.
6981 (C_create_stab): "auto", "void", "extern", "static" are st_C_typespec. 6981 (C_create_stab): "auto", "void", "extern", "static" are st_C_typespec.
6982 All C state machines rewritten. 6982 All C state machines rewritten.
diff --git a/lib-src/etags.c b/lib-src/etags.c
index b739e8f00c5..30d90e9d911 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -326,7 +326,7 @@ typedef struct regexp
326 struct re_pattern_buffer *pat; /* the compiled pattern */ 326 struct re_pattern_buffer *pat; /* the compiled pattern */
327 struct re_registers regs; /* re registers */ 327 struct re_registers regs; /* re registers */
328 bool error_signaled; /* already signaled for this regexp */ 328 bool error_signaled; /* already signaled for this regexp */
329 bool force_explicit_name; /* do not allow implict tag name */ 329 bool force_explicit_name; /* do not allow implicit tag name */
330 bool ignore_case; /* ignore case when matching */ 330 bool ignore_case; /* ignore case when matching */
331 bool multi_line; /* do a multi-line match on the whole file */ 331 bool multi_line; /* do a multi-line match on the whole file */
332} regexp; 332} regexp;
@@ -1862,10 +1862,10 @@ find_entries (FILE *inf)
1862 1862
1863 assert (parser != NULL); 1863 assert (parser != NULL);
1864 1864
1865 /* Generic initialisations before reading from file. */ 1865 /* Generic initializations before reading from file. */
1866 linebuffer_setlen (&filebuf, 0); /* reset the file buffer */ 1866 linebuffer_setlen (&filebuf, 0); /* reset the file buffer */
1867 1867
1868 /* Generic initialisations before parsing file with readline. */ 1868 /* Generic initializations before parsing file with readline. */
1869 lineno = 0; /* reset global line number */ 1869 lineno = 0; /* reset global line number */
1870 charno = 0; /* reset global char number */ 1870 charno = 0; /* reset global char number */
1871 linecharno = 0; /* reset global char number of line start */ 1871 linecharno = 0; /* reset global char number of line start */
@@ -1895,7 +1895,7 @@ find_entries (FILE *inf)
1895 * 4. the character, if any, immediately after NAME in LINESTART must 1895 * 4. the character, if any, immediately after NAME in LINESTART must
1896 * also be a character in NONAM. 1896 * also be a character in NONAM.
1897 * 1897 *
1898 * The implementation uses the notinname() macro, which recognises the 1898 * The implementation uses the notinname() macro, which recognizes the
1899 * characters stored in the string `nonam'. 1899 * characters stored in the string `nonam'.
1900 * etags.el needs to use the same characters that are in NONAM. 1900 * etags.el needs to use the same characters that are in NONAM.
1901 */ 1901 */
@@ -3057,7 +3057,7 @@ make_C_tag (int isfun)
3057 make_tag (token_name.buffer, token_name.len, isfun, token.line, 3057 make_tag (token_name.buffer, token_name.len, isfun, token.line,
3058 token.offset+token.length+1, token.lineno, token.linepos); 3058 token.offset+token.length+1, token.lineno, token.linepos);
3059 else if (DEBUG) 3059 else if (DEBUG)
3060 { /* this branch is optimised away if !DEBUG */ 3060 { /* this branch is optimized away if !DEBUG */
3061 make_tag (concat ("INVALID TOKEN:-->", token_name.buffer, ""), 3061 make_tag (concat ("INVALID TOKEN:-->", token_name.buffer, ""),
3062 token_name.len + 17, isfun, token.line, 3062 token_name.len + 17, isfun, token.line,
3063 token.offset+token.length+1, token.lineno, token.linepos); 3063 token.offset+token.length+1, token.lineno, token.linepos);
@@ -3304,7 +3304,7 @@ C_entries (int c_ext, FILE *inf)
3304 if (c == ':' && *lp == ':' && begtoken (lp[1])) 3304 if (c == ':' && *lp == ':' && begtoken (lp[1]))
3305 /* This handles :: in the middle, 3305 /* This handles :: in the middle,
3306 but not at the beginning of an identifier. 3306 but not at the beginning of an identifier.
3307 Also, space-separated :: is not recognised. */ 3307 Also, space-separated :: is not recognized. */
3308 { 3308 {
3309 if (c_ext & C_AUTO) /* automatic detection of C++ */ 3309 if (c_ext & C_AUTO) /* automatic detection of C++ */
3310 c_ext = (c_ext | C_PLPL) & ~C_AUTO; 3310 c_ext = (c_ext | C_PLPL) & ~C_AUTO;
@@ -5900,7 +5900,7 @@ regex_tag_multiline (void)
5900 if (!rp->multi_line) 5900 if (!rp->multi_line)
5901 continue; /* skip normal regexps */ 5901 continue; /* skip normal regexps */
5902 5902
5903 /* Generic initialisations before parsing file from memory. */ 5903 /* Generic initializations before parsing file from memory. */
5904 lineno = 1; /* reset global line number */ 5904 lineno = 1; /* reset global line number */
5905 charno = 0; /* reset global char number */ 5905 charno = 0; /* reset global char number */
5906 linecharno = 0; /* reset global char number of line start */ 5906 linecharno = 0; /* reset global char number of line start */
diff --git a/lib/sha256.c b/lib/sha256.c
index c125542248b..4dbb5e91291 100644
--- a/lib/sha256.c
+++ b/lib/sha256.c
@@ -51,7 +51,7 @@ static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ };
51 51
52/* 52/*
53 Takes a pointer to a 256 bit block of data (eight 32 bit ints) and 53 Takes a pointer to a 256 bit block of data (eight 32 bit ints) and
54 intializes it to the start constants of the SHA256 algorithm. This 54 initializes it to the start constants of the SHA256 algorithm. This
55 must be called before using hash in the call to sha256_hash 55 must be called before using hash in the call to sha256_hash
56*/ 56*/
57void 57void
diff --git a/lib/sha512.c b/lib/sha512.c
index c0bed95758f..5c2e3ab9f81 100644
--- a/lib/sha512.c
+++ b/lib/sha512.c
@@ -58,7 +58,7 @@ static const unsigned char fillbuf[128] = { 0x80, 0 /* , 0, 0, ... */ };
58 58
59/* 59/*
60 Takes a pointer to a 512 bit block of data (eight 64 bit ints) and 60 Takes a pointer to a 512 bit block of data (eight 64 bit ints) and
61 intializes it to the start constants of the SHA512 algorithm. This 61 initializes it to the start constants of the SHA512 algorithm. This
62 must be called before using hash in the call to sha512_hash 62 must be called before using hash in the call to sha512_hash
63*/ 63*/
64void 64void
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 45a115ec566..37ecd3e6852 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,177 @@
12011-11-22 Glenn Morris <rgm@gnu.org>
2
3 * mail/rmailmm.el (test-rmail-mime-handler)
4 (test-rmail-mime-bulk-handler)
5 (test-rmail-mime-multipart-handler): Move tests to test/ directory.
6
72011-11-21 Juri Linkov <juri@jurta.org>
8
9 * calc/calc.el (calc-read-key-sequence): Let-bind `input-method-function'
10 to nil. (Bug#10018)
11
122011-11-21 Lars Magne Ingebrigtsen <larsi@gnus.org>
13
14 * emacs-lisp/cl-indent.el (common-lisp-loop-part-indentation):
15 Tell the caller that the next line needs recomputation, even
16 though it doesn't start a sexp (bug#10094).
17
182011-11-21 Stefan Monnier <monnier@iro.umontreal.ca>
19
20 * emacs-lisp/autoload.el (autoload-generate-file-autoloads): Simplify.
21
222011-11-20 Stefan Monnier <monnier@iro.umontreal.ca>
23
24 * vc/pcvs-util.el (cvs-pop-to-buffer-same-frame):
25 Use force-same-window.
26
272011-11-20 Juanma Barranquero <lekktu@gmail.com>
28
29 * descr-text.el (describe-char-unicode-data):
30 * json.el (json-string-escape):
31 * mail/footnote.el (footnote-unicode-string, footnote-unicode-regexp)
32 (Footnote-unicode, Footnote-style-p):
33 * net/ntlm.el (ntlm-get-password-hashes): Fix typos.
34
352011-11-20 Chong Yidong <cyd@gnu.org>
36
37 * window.el (replace-buffer-in-windows): Restore interactive spec.
38
392011-11-20 Stefan Monnier <monnier@iro.umontreal.ca>
40
41 * electric.el (electric-indent-mode): Fix last change (too optimistic).
42
43 * emacs-lisp/bytecomp.el: Silence obsolete warnings more reliably.
44 (byte-compile-global-not-obsolete-vars): New var.
45 (byte-compile-check-variable, byte-compile-make-obsolete-variable):
46 Use it.
47 (byte-compile-warn-obsolete): Align text with the one in *Help*.
48
492011-11-20 Juanma Barranquero <lekktu@gmail.com>
50
51 * progmodes/cwarn.el (cwarn-is-enabled, cwarn-font-lock-keywords):
52 * progmodes/pascal.el (electric-pascal-equal):
53 * textmodes/reftex-dcr.el (reftex-view-crossref-from-bibtex):
54 * xml.el (xml-substitute-special): Fix typos.
55
562011-11-20 Glenn Morris <rgm@gnu.org>
57
58 * mail/rmail.el (rmail-enable-mime-composing): Make it a defcustom.
59 (rmail-insert-mime-forwarded-message-function, rmail-mime-feature):
60 Doc fixes.
61 (rmail-decode-mime-charset): Mark as obsolete.
62
63 * mail/rmailsum.el (rmail-message-regexp-p-1):
64 * mail/rmail.el (rmail-search-message, rmail-forward, rmail-resend):
65 Before using mime functions, check they are set. (Bug#10077)
66
672011-11-19 Juri Linkov <juri@jurta.org>
68
69 * info.el (Info-finder-find-node): Use `package--builtins' instead
70 of `package-alist'. Use node names formed by the pattern "Keyword "
71 and the keyword name.
72
732011-11-19 Andreas Schwab <schwab@linux-m68k.org>
74
75 * progmodes/sh-script.el (sh-assignment-regexp): Add entry for
76 bash.
77
782011-11-19 Juri Linkov <juri@jurta.org>
79
80 * info.el (Info-hide-note-references): Add `:set' tag to `defcustom'
81 that calls `revert-buffer' on all Info buffers. (Bug#9915)
82 (Info-revert-find-node): Remove let-bindings `old-buffer-name',
83 `old-history', `old-history-forward'. Add let-binding
84 `window-selected'. Remove calls to `kill-buffer',
85 `switch-to-buffer' and `Info-mode'. Set `Info-current-file' to nil
86 before calling `Info-find-node', so `Info-find-node-2' will reread
87 the Info file. Restore window positions only when `window-selected'
88 is non-nil.
89
902011-11-19 Juri Linkov <juri@jurta.org>
91
92 * isearch.el (isearch-lazy-highlight-new-loop):
93 Remove condition `(not isearch-error)'. (Bug#9918)
94
95 * misearch.el (multi-isearch-search-fun): Add condition
96 `(not bound)' to ignore lazy-highlighting search.
97 Add the search-failed message "end of multi" when the end of
98 multi-sequence is reached. Uncapitalize the search-failed
99 message "Repeat for next buffer".
100
101 * info.el (Info-search): Add the search-failed message
102 "end of the manual" when the end of the manual is reached
103 in Isearch mode.
104
1052011-11-19 Juri Linkov <juri@jurta.org>
106
107 * info.el (Info-find-node-2, Info-select-node, Info-history-find-node):
108 Use non-destructive `remove' instead of `delete' because
109 `Info-history-list' stored to `Info-isearch-initial-history-list' in
110 `Info-isearch-start' might need to be restored in `Info-isearch-end'.
111
1122011-11-19 Juri Linkov <juri@jurta.org>
113
114 * isearch.el (isearch-edit-string): Let-bind `history-add-new-input'
115 to nil instead of binding `search-ring' and `regexp-search-ring'.
116 (Bug#9185)
117
1182011-11-19 Eli Zaretskii <eliz@gnu.org>
119
120 * simple.el (line-move): Force movement by logical lines for any
121 hscrolled window, not only when auto-hscroll-mode is on.
122 (line-move-visual): Update doc string to that effect. (Bug#10076)
123
1242011-11-19 Andreas Schwab <schwab@linux-m68k.org>
125
126 * language/european.el (macintosh): Define as alias for mac-roman.
127
1282011-11-19 Eli Zaretskii <eliz@gnu.org>
129
130 * mail/rmailmm.el (rmail-mime-display-header)
131 (rmail-mime-display-tagline, rmail-mime-display-body): New defsubsts.
132 (rmail-mime-entity-segment, rmail-mime-toggle-raw)
133 (rmail-mime-toggle-hidden, rmail-mime-insert-text)
134 (rmail-mime-insert-bulk, rmail-mime-insert-multipart)
135 (rmail-mime-insert, rmail-mime-insert-tagline): Use them instead
136 of a raw aref.
137 (rmail-mime-entity-segment): To get past the tagline, move forward
138 2 more lines, to account for the 2 empty lines that precede and
139 follow the line with the buttons.
140 (rmail-mime-update-tagline): Move one more line, to get past the
141 empty line that follows the buttons in the tagline. (Bug#9520)
142
1432011-11-19 Martin Rudalics <rudalics@gmx.at>
144
145 * window.el (window-max-delta-1, window-min-delta-1)
146 (window-min-size-1, window-state-get-1, window-state-put-1)
147 (window-state-put-2): Use "window--" prefix.
148
1492011-11-18 Stefan Monnier <monnier@iro.umontreal.ca>
150
151 * emacs-lisp/smie.el: Improve warnings and conflict detection.
152 (smie-warning-count): New var.
153 (smie-set-prec2tab): Use it.
154 (smie-bnf->prec2): Improve warnings. Add docstring.
155 (smie-bnf--closer-alist): Rename from smie-bnf-closer-alist.
156 (smie-bnf--set-class): New function.
157 (smie-bnf--classify): Rename from smie-bnf-classify. Rewrite to fix
158 corner case.
159
160 * progmodes/compile.el: Obey compilation-first-column in dest buffer.
161 (compilation-error-properties, compilation-move-to-column):
162 Handle compilation-first-column while in the target buffer.
163
164 * progmodes/cc-engine.el (c-remove-stale-state-cache-backwards):
165 Don't hardcode point-min==1.
166
167 * eshell/esh-cmd.el (eshell-do-eval): Handle `setq' (bug#9907).
168 (eshell-rewrite-for-command): Remove workaround.
169 (eshell-do-pipelines, eshell-do-pipelines-synchronously)
170 (eshell-do-eval, eshell-exec-lisp): Avoid gratuitous setq.
171 * eshell/esh-util.el (eshell-condition-case, eshell-for): Use declare.
172
173 * files-x.el (modify-file-local-variable): Obey commenting conventions.
174
12011-11-17 Glenn Morris <rgm@gnu.org> 1752011-11-17 Glenn Morris <rgm@gnu.org>
2 176
3 * emacs-lisp/autoload.el (autoload-generate-file-autoloads): 177 * emacs-lisp/autoload.el (autoload-generate-file-autoloads):
@@ -2914,7 +3088,7 @@
2914 more people. 3088 more people.
2915 3089
2916 * cus-edit.el (custom-file): When running under emacs -q, always 3090 * cus-edit.el (custom-file): When running under emacs -q, always
2917 refuse to save the customisations, even if the .emacs file doesn't 3091 refuse to save the customizations, even if the .emacs file doesn't
2918 exist. 3092 exist.
2919 3093
2920 * info.el: Remove the `Info-beginning-of-buffer' function 3094 * info.el: Remove the `Info-beginning-of-buffer' function
diff --git a/lisp/ChangeLog.10 b/lisp/ChangeLog.10
index 0cf64cf36e9..cb1d1af577b 100644
--- a/lisp/ChangeLog.10
+++ b/lisp/ChangeLog.10
@@ -374,7 +374,7 @@
374 the function is advised in cc-defs. However, that advice 374 the function is advised in cc-defs. However, that advice
375 doesn't help if the autoloads are updated in an old (X)Emacs 375 doesn't help if the autoloads are updated in an old (X)Emacs
376 with this version of CC Mode, but I believe it's unlikely that 376 with this version of CC Mode, but I believe it's unlikely that
377 anyone does that when CC Mode isn't distributed with with it. 377 anyone does that when CC Mode isn't distributed with it.
378 378
379 * progmodes/cc-defs.el (add-to-list): Add advice to get the 379 * progmodes/cc-defs.el (add-to-list): Add advice to get the
380 optional third append argument in older (X)Emacsen. 380 optional third append argument in older (X)Emacsen.
@@ -1036,13 +1036,13 @@
1036 1036
10372003-06-29 Nick Roberts <nick@nick.uklinux.net> 10372003-06-29 Nick Roberts <nick@nick.uklinux.net>
1038 1038
1039 * gdb-ui.el (gdb-display-number-end): Don't re-initialise local 1039 * gdb-ui.el (gdb-display-number-end): Don't re-initialize local
1040 variables to preserve array slices. 1040 variables to preserve array slices.
1041 (gdb-array-slice): Rename gdb-mouse-array-slice. 1041 (gdb-array-slice): Rename gdb-mouse-array-slice.
1042 (gdb-array-slice): Interactive function bound to "\r" for text 1042 (gdb-array-slice): Interactive function bound to "\r" for text
1043 terminals. 1043 terminals.
1044 (gdb-view-source): Rename gdb-view-source-function. 1044 (gdb-view-source): Rename gdb-view-source-function.
1045 Set uninitialised variables (defvars) to nil. 1045 Set uninitialized variables (defvars) to nil.
1046 1046
10472003-06-29 Kai Großjohann <kai.grossjohann@gmx.net> 10472003-06-29 Kai Großjohann <kai.grossjohann@gmx.net>
1048 1048
@@ -2016,7 +2016,7 @@
20162003-05-28 Andreas Schwab <schwab@suse.de> 20162003-05-28 Andreas Schwab <schwab@suse.de>
2017 2017
2018 * descr-text.el (describe-char): Use `char' instead of 2018 * descr-text.el (describe-char): Use `char' instead of
2019 `(char-after)'. Fix display of unicode. 2019 `(char-after)'. Fix display of Unicode.
2020 2020
20212003-05-28 Nick Roberts <nick@nick.uklinux.net> 20212003-05-28 Nick Roberts <nick@nick.uklinux.net>
2022 2022
@@ -2149,7 +2149,7 @@
2149 2149
21502003-05-25 Kevin Ryde <user42@zip.com.au> 21502003-05-25 Kevin Ryde <user42@zip.com.au>
2151 2151
2152 * info-look.el (autoconf-mode setups): Recognise AH_ and AU_ entries 2152 * info-look.el (autoconf-mode setups): Recognize AH_ and AU_ entries
2153 in "(autoconf)Autoconf Macro Index". Add "(autoconf)M4 Macro Index" 2153 in "(autoconf)Autoconf Macro Index". Add "(autoconf)M4 Macro Index"
2154 and "(autoconf)Autotest Macro Index". Remove duplicate copy of 2154 and "(autoconf)Autotest Macro Index". Remove duplicate copy of
2155 "(automake)Macro and Variable Index". Keep automake after all 2155 "(automake)Macro and Variable Index". Keep automake after all
@@ -2429,8 +2429,8 @@
24292003-05-21 Dave Love <fx@gnu.org> 24292003-05-21 Dave Love <fx@gnu.org>
2430 2430
2431 * descr-text.el (unicodedata-file): New. 2431 * descr-text.el (unicodedata-file): New.
2432 (unicode-data): New (adapted from unicode branch). 2432 (unicode-data): New (adapted from Unicode branch).
2433 (describe-char): Use it. Print char's unicode differently. 2433 (describe-char): Use it. Print char's Unicode code point differently.
2434 Avoid elements with null cadr when formatting list. Clarify error 2434 Avoid elements with null cadr when formatting list. Clarify error
2435 message when used in Help buffer. 2435 message when used in Help buffer.
2436 (button): Require when compiling. 2436 (button): Require when compiling.
@@ -2440,7 +2440,7 @@
2440 2440
2441 * gdb-ui.el (gud-gdba-command-name): Use -noasync option for Gdb 2441 * gdb-ui.el (gud-gdba-command-name): Use -noasync option for Gdb
2442 with MS windows. 2442 with MS windows.
2443 (gdb-display-end): Only make buffer writeable temporarily. 2443 (gdb-display-end): Only make buffer writable temporarily.
2444 Move "View" submenu up one level. 2444 Move "View" submenu up one level.
2445 2445
24462003-05-21 Nick Roberts <nick@nick.uklinux.net> 24462003-05-21 Nick Roberts <nick@nick.uklinux.net>
@@ -9827,7 +9827,7 @@
9827 (uniquify-delay-rationalize-file-buffer-names): Remove useless check. 9827 (uniquify-delay-rationalize-file-buffer-names): Remove useless check.
9828 (kill-buffer-hook): Don't change globally. 9828 (kill-buffer-hook): Don't change globally.
9829 9829
98302002-09-27 Stefan Monnier <monnier@cs.yale.edu>. 98302002-09-27 Stefan Monnier <monnier@cs.yale.edu>
9831 9831
9832 * calc/calc.el (calc-bug-address, calc-scan-for-dels, calc-stack) 9832 * calc/calc.el (calc-bug-address, calc-scan-for-dels, calc-stack)
9833 (calc-stack-top, calc-always-load-extensions) 9833 (calc-stack-top, calc-always-load-extensions)
@@ -11680,7 +11680,7 @@
116802002-08-27 Francesco Potortì <pot@gnu.org> 116802002-08-27 Francesco Potortì <pot@gnu.org>
11681 11681
11682 * net/ange-ftp.el (ange-ftp-skip-msgs): Skip the 530 response 11682 * net/ange-ftp.el (ange-ftp-skip-msgs): Skip the 530 response
11683 given by vsFTPd when accessed with a kerberised FTP client. 11683 given by vsFTPd when accessed with a kerberized FTP client.
11684 11684
116852002-08-27 Richard M. Stallman <rms@gnu.org> 116852002-08-27 Richard M. Stallman <rms@gnu.org>
11686 11686
@@ -14917,7 +14917,7 @@
14917 14917
149182002-05-14 Francesco Potortì <pot@gnu.org> 149182002-05-14 Francesco Potortì <pot@gnu.org>
14919 14919
14920 * shell.el (shell-mode): Make second part of initialisation 14920 * shell.el (shell-mode): Make second part of initialization
14921 depend on whether comint-input-ring is empty, rather than depend 14921 depend on whether comint-input-ring is empty, rather than depend
14922 on it being nil. 14922 on it being nil.
14923 14923
@@ -17991,7 +17991,7 @@
17991 * international/ucs-tables.el (ucs-unify-8859, ucs-fragment-8859): 17991 * international/ucs-tables.el (ucs-unify-8859, ucs-fragment-8859):
17992 Use unify-8859-on-decoding-mode. 17992 Use unify-8859-on-decoding-mode.
17993 (unify-8859-on-decoding-mode): Also set translation-table-for-input. 17993 (unify-8859-on-decoding-mode): Also set translation-table-for-input.
17994 (ucs-insert): Give an error if the unicode char can't be created. 17994 (ucs-insert): Give an error if the Unicode char can't be created.
17995 17995
17996 * pcvs-parse.el (cvs-parse-table): Be a bit more lenient. 17996 * pcvs-parse.el (cvs-parse-table): Be a bit more lenient.
17997 (cvs-parse-status): Handle the "used to have a conflict" marker. 17997 (cvs-parse-status): Handle the "used to have a conflict" marker.
@@ -19206,7 +19206,7 @@
19206 * language/cyril-util.el (cyrillic-encode-koi8-r-char) 19206 * language/cyril-util.el (cyrillic-encode-koi8-r-char)
19207 (cyrillic-encode-alternativnyj-char): Get translation tables from 19207 (cyrillic-encode-alternativnyj-char): Get translation tables from
19208 symbol properties, not as variables. 19208 symbol properties, not as variables.
19209 (standard-display-cyrillic-translit): Include unicodes. 19209 (standard-display-cyrillic-translit): Include Unicode characters.
19210 19210
192112002-02-06 Kim F. Storm <storm@cua.dk> 192112002-02-06 Kim F. Storm <storm@cua.dk>
19212 19212
@@ -20778,7 +20778,7 @@
20778 * Makefile.in (distclean): Remove Makefile in the build 20778 * Makefile.in (distclean): Remove Makefile in the build
20779 directory, not in the source directory. 20779 directory, not in the source directory.
20780 20780
207812001-12-21 Simon Josefsson <jas@extundo.com>. 207812001-12-21 Simon Josefsson <jas@extundo.com>
20782 20782
20783 * mail/smtpmail.el (smtpmail-send-queued-mail): 20783 * mail/smtpmail.el (smtpmail-send-queued-mail):
20784 Use with-temp-buffer instead of find-file-noselect, and bind 20784 Use with-temp-buffer instead of find-file-noselect, and bind
@@ -22669,7 +22669,7 @@
22669 22669
22670 Suggested by Kalle Olavi Niemitalo <kon@iki.fi>: 22670 Suggested by Kalle Olavi Niemitalo <kon@iki.fi>:
22671 22671
22672 * vc-hooks.el (vc-error-occured): Backquotified. 22672 * vc-hooks.el (vc-error-occurred): Backquotified.
22673 (vc-file-prop-obarray): Use prime length for better efficiency. 22673 (vc-file-prop-obarray): Use prime length for better efficiency.
22674 22674
22675 * vc.el (vc-clear-context): Fill obarray with 0, not nil. 22675 * vc.el (vc-clear-context): Fill obarray with 0, not nil.
diff --git a/lisp/ChangeLog.11 b/lisp/ChangeLog.11
index 08bd70926b4..c80091e4657 100644
--- a/lisp/ChangeLog.11
+++ b/lisp/ChangeLog.11
@@ -6884,7 +6884,7 @@
6884 6884
68852004-05-22 Richard M. Stallman <rms@gnu.org> 68852004-05-22 Richard M. Stallman <rms@gnu.org>
6886 6886
6887 * textmodes/paragraphs.el (sentence-end): Match unicode curly quotes 6887 * textmodes/paragraphs.el (sentence-end): Match Unicode curly quotes
6888 as a close quote. 6888 as a close quote.
6889 6889
6890 * textmodes/bibtex.el: Use assoc-string, not assoc-ignore-case. 6890 * textmodes/bibtex.el: Use assoc-string, not assoc-ignore-case.
@@ -7074,7 +7074,7 @@
70742004-05-14 Stefan Monnier <monnier@iro.umontreal.ca> 70742004-05-14 Stefan Monnier <monnier@iro.umontreal.ca>
7075 7075
7076 * descr-text.el (describe-char-unicode-data) 7076 * descr-text.el (describe-char-unicode-data)
7077 (describe-char-unicodedata-file): Re-enable the unicode code now that 7077 (describe-char-unicodedata-file): Re-enable the Unicode code now that
7078 the licensing issues have been cleared in the unicode-4 license. 7078 the licensing issues have been cleared in the unicode-4 license.
7079 (describe-text-properties-1): Remove unused `overlay' var. 7079 (describe-text-properties-1): Remove unused `overlay' var.
7080 (describe-char): Remove unused var `buffer'. 7080 (describe-char): Remove unused var `buffer'.
diff --git a/lisp/ChangeLog.12 b/lisp/ChangeLog.12
index e916db64f05..1660009aba7 100644
--- a/lisp/ChangeLog.12
+++ b/lisp/ChangeLog.12
@@ -1741,8 +1741,8 @@
1741 1741
1742 * outline.el (hide-sublevels): Keep empty last line, if available. 1742 * outline.el (hide-sublevels): Keep empty last line, if available.
1743 1743
1744 * buff-menu.el (list-buffers-noselect): Use explicit unicode code 1744 * buff-menu.el (list-buffers-noselect): Use explicit Unicode code
1745 rather than the corresponding unicode char, to make the code 1745 rather than the corresponding Unicode char, to make the code
1746 more readable. 1746 more readable.
1747 1747
17482007-02-19 Juanma Barranquero <lekktu@gmail.com> 17482007-02-19 Juanma Barranquero <lekktu@gmail.com>
@@ -2823,7 +2823,7 @@
28232007-01-01 Alan Mackenzie <acm@muc.de> 28232007-01-01 Alan Mackenzie <acm@muc.de>
2824 2824
2825 * progmodes/cc-engine.el (c-guess-basic-syntax, case 5N): 2825 * progmodes/cc-engine.el (c-guess-basic-syntax, case 5N):
2826 Check the format of c-state-cache is valid for an optimisation before 2826 Check the format of c-state-cache is valid for an optimization before
2827 using it. 2827 using it.
2828 2828
2829 * progmodes/cc-engine.el (c-guess-basic-syntax): New case 5Q "we 2829 * progmodes/cc-engine.el (c-guess-basic-syntax): New case 5Q "we
@@ -2840,11 +2840,11 @@
2840 * progmodes/cc-cmds.el (c-context-line-break): Don't indent the 2840 * progmodes/cc-cmds.el (c-context-line-break): Don't indent the
2841 new line after an escaped EOL in a string. 2841 new line after an escaped EOL in a string.
2842 2842
2843 * progmodes/cc-engine.el (c-forward-label): Recognise "foo:" as a 2843 * progmodes/cc-engine.el (c-forward-label): Recognize "foo:" as a
2844 label when it directly follows "else", "do", .... 2844 label when it directly follows "else", "do", ....
2845 2845
2846 * progmodes/cc-engine.el (c-backward-<>-arglist): Tolerate empty 2846 * progmodes/cc-engine.el (c-backward-<>-arglist): Tolerate empty
2847 angle brackets (as seen in "explicit specialisations" of C++ 2847 angle brackets (as seen in "explicit specializations" of C++
2848 templates). 2848 templates).
2849 2849
2850 * progmodes/cc-vars.el (c-indentation-style): Mention c-file-style 2850 * progmodes/cc-vars.el (c-indentation-style): Mention c-file-style
@@ -2871,7 +2871,7 @@
2871 * progmodes/cc-cmds.el (c-electric-slash): Extend the handling of 2871 * progmodes/cc-cmds.el (c-electric-slash): Extend the handling of
2872 clean-up comment-close-slash also to work when there's a comment 2872 clean-up comment-close-slash also to work when there's a comment
2873 terminator on the line. 2873 terminator on the line.
2874 (c-beginning-of-defun, c-end-of-defun): Refactor and optimise 2874 (c-beginning-of-defun, c-end-of-defun): Refactor and optimize
2875 these for large arg - only take account of top level {..}, except 2875 these for large arg - only take account of top level {..}, except
2876 for initial and final adjustments. M-- C-M-[ae] now go to the 2876 for initial and final adjustments. M-- C-M-[ae] now go to the
2877 right defuns when the starting point is between defuns. They use 2877 right defuns when the starting point is between defuns. They use
@@ -3257,7 +3257,7 @@
3257 3257
32582006-12-17 Alan Mackenzie <acm@muc.de> 32582006-12-17 Alan Mackenzie <acm@muc.de>
3259 3259
3260 * emacs-lisp/lisp.el (beginning-of-defun-raw): Optimise (for 3260 * emacs-lisp/lisp.el (beginning-of-defun-raw): Optimize (for
3261 speed) the case when open-paren-in-column-0-is-defun-start is nil. 3261 speed) the case when open-paren-in-column-0-is-defun-start is nil.
3262 Based on code by Martin Rudalics. 3262 Based on code by Martin Rudalics.
3263 3263
@@ -4124,7 +4124,7 @@
41242006-11-15 Simon Marshall <simon@gnu.org> 41242006-11-15 Simon Marshall <simon@gnu.org>
4125 4125
4126 * progmodes/cc-fonts.el (c-font-lock-declarators): Use c-at-toplevel-p 4126 * progmodes/cc-fonts.el (c-font-lock-declarators): Use c-at-toplevel-p
4127 to recognise "T t()" as a function declaration, rather than a 4127 to recognize "T t()" as a function declaration, rather than a
4128 variable instantiation, iff at the top-level or inside a class 4128 variable instantiation, iff at the top-level or inside a class
4129 declaration. Suggested by Feng Li <fengli@gmail.com>. 4129 declaration. Suggested by Feng Li <fengli@gmail.com>.
4130 4130
@@ -8722,7 +8722,7 @@
8722 8722
8723 * progmodes/gdb-ui.el (gdb-same-frame): New option. 8723 * progmodes/gdb-ui.el (gdb-same-frame): New option.
8724 (gud-old-arrow, gdb-frame-begin, gdb-printing): New variables. 8724 (gud-old-arrow, gdb-frame-begin, gdb-printing): New variables.
8725 (gdb-init-1): Initialise them. 8725 (gdb-init-1): Initialize them.
8726 (gdb-starting): Reset gdb-printing. 8726 (gdb-starting): Reset gdb-printing.
8727 (gdb-starting): Save value of gud-overlay-arrow-position. 8727 (gdb-starting): Save value of gud-overlay-arrow-position.
8728 (gdb-frame-begin): Set gdb-frame-begin, gdb-printing. 8728 (gdb-frame-begin): Set gdb-frame-begin, gdb-printing.
@@ -10937,7 +10937,7 @@
10937 10937
109382006-04-10 Nick Roberts <nickrob@snap.net.nz> 109382006-04-10 Nick Roberts <nickrob@snap.net.nz>
10939 10939
10940 * progmodes/gdb-ui.el (gdb-init-1): Re-initialise gdb-main-file to nil. 10940 * progmodes/gdb-ui.el (gdb-init-1): Re-initialize gdb-main-file to nil.
10941 (gdb-get-version): Make it work for pre "interpreter mi" (GDB 5.3?). 10941 (gdb-get-version): Make it work for pre "interpreter mi" (GDB 5.3?).
10942 (gdb-setup-windows): Put something in source window if we can't find 10942 (gdb-setup-windows): Put something in source window if we can't find
10943 the source file. 10943 the source file.
@@ -16153,7 +16153,7 @@
16153 much cruft in cc-awk.el, cc-cmds.el and cc-engine.el to clear out. 16153 much cruft in cc-awk.el, cc-cmds.el and cc-engine.el to clear out.
16154 * progmodes/cc-cmds.el: 16154 * progmodes/cc-cmds.el:
16155 (c-ascertain-adjacent-literal): In the backwards direction, now 16155 (c-ascertain-adjacent-literal): In the backwards direction, now
16156 recognises AWK regexp delimiters as string delimiters. 16156 recognizes AWK regexp delimiters as string delimiters.
16157 (c-after-statement-terminator-p): Adapt for virtual semicolons; 16157 (c-after-statement-terminator-p): Adapt for virtual semicolons;
16158 check more rigorously for "end of macro". 16158 check more rigorously for "end of macro".
16159 (c-back-over-illiterals, c-forward-over-illiterals): Adapt for 16159 (c-back-over-illiterals, c-forward-over-illiterals): Adapt for
@@ -16280,7 +16280,7 @@
16280 16280
16281 * progmodes/cc-cmds.el, cc-styles.el, cc-vars.el: New variables 16281 * progmodes/cc-cmds.el, cc-styles.el, cc-vars.el: New variables
16282 c-string-par-start/separate c-sentence-end-with-esc-eol, 16282 c-string-par-start/separate c-sentence-end-with-esc-eol,
16283 initialised in c-setup-paragraph-variables, used in string 16283 initialized in c-setup-paragraph-variables, used in string
16284 scanning subroutines of c-beginning-of-statement. 16284 scanning subroutines of c-beginning-of-statement.
16285 16285
16286 * progmodes/cc-cmds.el (c-electric-brace): Don't delete a comment 16286 * progmodes/cc-cmds.el (c-electric-brace): Don't delete a comment
@@ -22315,7 +22315,7 @@
22315 * ibuf-ext.el (ibuffer-auto-update-changed): 22315 * ibuf-ext.el (ibuffer-auto-update-changed):
22316 Use `frame-or-buffer-changed-p' to check whether we need to update. 22316 Use `frame-or-buffer-changed-p' to check whether we need to update.
22317 (ibuffer-auto-mode): Don't advise `get-buffer-create' and 22317 (ibuffer-auto-mode): Don't advise `get-buffer-create' and
22318 `kill-buffer'. Initialise `ibuffer-auto-buffers-changed' 22318 `kill-buffer'. Initialize `ibuffer-auto-buffers-changed'
22319 as a `frame-or-buffer-changed-p' state vector instead. 22319 as a `frame-or-buffer-changed-p' state vector instead.
22320 22320
223212005-08-27 Romain Francoise <romain@orebokech.com> 223212005-08-27 Romain Francoise <romain@orebokech.com>
diff --git a/lisp/ChangeLog.13 b/lisp/ChangeLog.13
index 319cdb14b9b..bfe0f4a7a51 100644
--- a/lisp/ChangeLog.13
+++ b/lisp/ChangeLog.13
@@ -36,7 +36,7 @@
362008-02-01 Vinicius Jose Latorre <viniciusjl@ig.com.br> 362008-02-01 Vinicius Jose Latorre <viniciusjl@ig.com.br>
37 37
38 * ps-print.el: Some face attributes (like :strike-through) were not 38 * ps-print.el: Some face attributes (like :strike-through) were not
39 being recognised. Reported by Leo <sdl.web@gmail.com>. 39 being recognized. Reported by Leo <sdl.web@gmail.com>.
40 (ps-print-version): New version 7.3.2. 40 (ps-print-version): New version 7.3.2.
41 (ps-screen-to-bit-face): Fix code. Call ps-face-strikeout-p, 41 (ps-screen-to-bit-face): Fix code. Call ps-face-strikeout-p,
42 ps-face-overline-p and ps-face-box-p functions. 42 ps-face-overline-p and ps-face-box-p functions.
@@ -315,7 +315,7 @@
315 * language/ethio-util.el: 315 * language/ethio-util.el:
316 * international/characters.el: Use utf-8 rather than utf-8-emacs 316 * international/characters.el: Use utf-8 rather than utf-8-emacs
317 since it works as well and has the advantage of working with 317 since it works as well and has the advantage of working with
318 non-unicode versions of Emacs. 318 non-Unicode versions of Emacs.
319 319
320 * international/encoded-kb.el (encoded-kbd-setup-display): Use the new 320 * international/encoded-kb.el (encoded-kbd-setup-display): Use the new
321 multi-tty code, which includes the previous local change. 321 multi-tty code, which includes the previous local change.
@@ -1171,7 +1171,7 @@
1171 1171
1172 * international/encoded-kb.el (encoded-kbd-self-insert-charset) 1172 * international/encoded-kb.el (encoded-kbd-self-insert-charset)
1173 (encoded-kbd-self-insert-utf-8, encoded-kbd-setup-keymap) 1173 (encoded-kbd-self-insert-utf-8, encoded-kbd-setup-keymap)
1174 (encoded-kbd-mode): Adjust code merged from trunk for unicode branch. 1174 (encoded-kbd-mode): Adjust code merged from trunk for Unicode branch.
1175 1175
11762008-02-01 Kenichi Handa <handa@m17n.org> 11762008-02-01 Kenichi Handa <handa@m17n.org>
1177 1177
@@ -1668,7 +1668,7 @@
16682008-02-01 Kenichi Handa <handa@m17n.org> 16682008-02-01 Kenichi Handa <handa@m17n.org>
1669 1669
1670 * international/fontset.el: Enable the default fontset to use 1670 * international/fontset.el: Enable the default fontset to use
1671 unicode fonts for ASCII characters. 1671 Unicode fonts for ASCII characters.
1672 (x-decompose-font-name): Don't try to resolve PATTERN by 1672 (x-decompose-font-name): Don't try to resolve PATTERN by
1673 x-resolve-font-name. 1673 x-resolve-font-name.
1674 (x-complement-fontset-spec): Never prepend an ASCII font. 1674 (x-complement-fontset-spec): Never prepend an ASCII font.
@@ -2331,9 +2331,9 @@
2331 New coding systems. 2331 New coding systems.
2332 ("Chinese-GBK"): New environment. 2332 ("Chinese-GBK"): New environment.
2333 2333
2334 * language/thai-util.el: Remove redundant unicodes in category-setting. 2334 * language/thai-util.el:
2335 2335 * language/lao-util.el: Remove redundant Unicode characters
2336 * language/lao-util.el: Remove redundant unicodes in category-setting. 2336 in category-setting.
2337 2337
2338 * international/mule-conf.el (japanese-jisx0213-1) 2338 * international/mule-conf.el (japanese-jisx0213-1)
2339 (japanese-jisx0213-2): Add unify-map. 2339 (japanese-jisx0213-2): Add unify-map.
@@ -2358,7 +2358,8 @@
2358 2358
2359 * language/cyril-util.el (cyrillic-encode-koi8-r-char) 2359 * language/cyril-util.el (cyrillic-encode-koi8-r-char)
2360 (cyrillic-encode-alternativnyj-char): Fix. 2360 (cyrillic-encode-alternativnyj-char): Fix.
2361 (standard-display-cyrillic-translit): Remove redundant unicodes. 2361 (standard-display-cyrillic-translit):
2362 Remove redundant Unicode characters.
2362 2363
23632008-02-01 Dave Love <fx@gnu.org> 23642008-02-01 Dave Love <fx@gnu.org>
2364 2365
@@ -2417,7 +2418,7 @@
2417 lengths of the pair. 2418 lengths of the pair.
2418 2419
2419 * international/characters.el: Add Vietnamese category to 2420 * international/characters.el: Add Vietnamese category to
2420 equivalent unicodes. 2421 equivalent Unicode characters.
2421 2422
24222008-02-01 Dave Love <fx@gnu.org> 24232008-02-01 Dave Love <fx@gnu.org>
2423 2424
@@ -2518,7 +2519,7 @@
2518 (print-designation): Partial re-write. 2519 (print-designation): Partial re-write.
2519 (describe-coding-system): Deal with iso-2022 designations, flags. 2520 (describe-coding-system): Deal with iso-2022 designations, flags.
2520 Fix shift_jis case. 2521 Fix shift_jis case.
2521 (describe-char-after): Use characterp. Print explicit unicode. 2522 (describe-char-after): Use characterp. Print explicit Unicode code point.
2522 Remove some obsolete code. 2523 Remove some obsolete code.
2523 (print-coding-system-briefly): Fix printing aliases. 2524 (print-coding-system-briefly): Fix printing aliases.
2524 (print-coding-system): Use coding-system-aliases. 2525 (print-coding-system): Use coding-system-aliases.
@@ -2587,7 +2588,7 @@
2587 2588
2588 * Makefile.in: Cancel the 2008-02-01 change of mine. 2589 * Makefile.in: Cancel the 2008-02-01 change of mine.
2589 2590
2590 * international/fontset.el: Add setting for unicode font at the 2591 * international/fontset.el: Add setting for Unicode font at the
2591 end of the default fontset. 2592 end of the default fontset.
2592 2593
25932008-02-01 Dave Love <fx@gnu.org> 25942008-02-01 Dave Love <fx@gnu.org>
@@ -2742,7 +2743,7 @@
2742 2743
2743 * international/ja-dic-utl.el (skkdic-jisx0208-hiragana-block): 2744 * international/ja-dic-utl.el (skkdic-jisx0208-hiragana-block):
2744 Fix the initial value to specify character range of 2745 Fix the initial value to specify character range of
2745 japanese-jisx0208, not unicode. 2746 japanese-jisx0208, not Unicode.
2746 2747
2747 * international/characters.el: Set syntax/category for 2748 * international/characters.el: Set syntax/category for
2748 japanese-jisx0208. 2749 japanese-jisx0208.
@@ -4137,7 +4138,7 @@
41372008-01-14 Alan Mackenzie <acm@muc.de> 41382008-01-14 Alan Mackenzie <acm@muc.de>
4138 4139
4139 * progmodes/cc-engine.el (c-guess-basic-syntax): Prevent a macro 4140 * progmodes/cc-engine.el (c-guess-basic-syntax): Prevent a macro
4140 call inside a struct being recognised as a K&R argument. 4141 call inside a struct being recognized as a K&R argument.
4141 4142
41422008-01-14 Stefan Monnier <monnier@iro.umontreal.ca> 41432008-01-14 Stefan Monnier <monnier@iro.umontreal.ca>
4143 4144
@@ -6265,7 +6266,7 @@
6265 delete .elc files. 6266 delete .elc files.
6266 6267
6267 * nxml/char-name/unicode: Move to etc/nxml/. 6268 * nxml/char-name/unicode: Move to etc/nxml/.
6268 * nxml/nxml-uchnm.el (top-level): Adapt for moved unicode files. 6269 * nxml/nxml-uchnm.el (top-level): Adapt for moved Unicode files.
6269 6270
6270 * nxml/nxml-enc.el (xmltok-get-declared-encoding-position): 6271 * nxml/nxml-enc.el (xmltok-get-declared-encoding-position):
6271 Declare as a function. 6272 Declare as a function.
@@ -12544,7 +12545,7 @@
12544 a weird set-buffer&prog1 combination. 12545 a weird set-buffer&prog1 combination.
12545 12546
12546 * emacs-lisp/byte-opt.el (byte-optimize-if): Move `progn' out of the 12547 * emacs-lisp/byte-opt.el (byte-optimize-if): Move `progn' out of the
12547 test so as to optimise cases where the `progn's result is constant. 12548 test so as to optimize cases where the `progn's result is constant.
12548 12549
125492007-08-23 Thien-Thi Nguyen <ttn@gnuvola.org> 125502007-08-23 Thien-Thi Nguyen <ttn@gnuvola.org>
12550 12551
@@ -13845,7 +13846,7 @@
138452007-07-24 Alan Mackenzie <acm@muc.de> 138462007-07-24 Alan Mackenzie <acm@muc.de>
13846 13847
13847 * emacs-lisp/bytecomp.el (byte-compile-from-buffer): 13848 * emacs-lisp/bytecomp.el (byte-compile-from-buffer):
13848 Initialise byte-compile-unresolved-functions before rather than 13849 Initialize byte-compile-unresolved-functions before rather than
13849 after a compilation. 13850 after a compilation.
13850 (byte-compile-unresolved-functions): Amplify doc string. 13851 (byte-compile-unresolved-functions): Amplify doc string.
13851 13852
@@ -14943,7 +14944,7 @@
149432007-07-05 Thien-Thi Nguyen <ttn@gnuvola.org> 149442007-07-05 Thien-Thi Nguyen <ttn@gnuvola.org>
14944 14945
14945 * Makefile.in (bootstrap-prepare): When copying from 14946 * Makefile.in (bootstrap-prepare): When copying from
14946 ldefs-boot.el, make sure loaddefs.el is writeable. 14947 ldefs-boot.el, make sure loaddefs.el is writable.
14947 14948
14948 (bootstrap-prepare): Make $(lisp)/ps-print.el 14949 (bootstrap-prepare): Make $(lisp)/ps-print.el
14949 and $(lisp)/emacs-lisp/cl-loaddefs.el writable, as well. 14950 and $(lisp)/emacs-lisp/cl-loaddefs.el writable, as well.
@@ -15910,14 +15911,14 @@
159102007-06-08 Stefan Monnier <monnier@iro.umontreal.ca> 159112007-06-08 Stefan Monnier <monnier@iro.umontreal.ca>
15911 15912
15912 * textmodes/css-mode.el (css-navigation-syntax-table): 15913 * textmodes/css-mode.el (css-navigation-syntax-table):
15913 Use set-char-table-range so it also works in the unicode branch. 15914 Use set-char-table-range so it also works in the Unicode branch.
15914 15915
159152007-06-08 Nick Roberts <nickrob@snap.net.nz> 159162007-06-08 Nick Roberts <nickrob@snap.net.nz>
15916 15917
15917 * help-mode.el (help-xref-forward-stack) 15918 * help-mode.el (help-xref-forward-stack)
15918 (help-xref-stack-forward-item, help-forward-label): New variables. 15919 (help-xref-stack-forward-item, help-forward-label): New variables.
15919 (help-forward): New button type. 15920 (help-forward): New button type.
15920 (help-setup-xref): Initialise help-xref-forward-stack. 15921 (help-setup-xref): Initialize help-xref-forward-stack.
15921 (help-make-xrefs): Add forward button, if appropriate. 15922 (help-make-xrefs): Add forward button, if appropriate.
15922 (help-xref-go-back): Push item on forward stack. 15923 (help-xref-go-back): Push item on forward stack.
15923 (help-xref-go-forward, help-go-forward): New functions. 15924 (help-xref-go-forward, help-go-forward): New functions.
diff --git a/lisp/ChangeLog.14 b/lisp/ChangeLog.14
index cd91dfad28c..0348a0141a2 100644
--- a/lisp/ChangeLog.14
+++ b/lisp/ChangeLog.14
@@ -30,7 +30,7 @@
302009-06-19 Kenichi Handa <handa@m17n.org> 302009-06-19 Kenichi Handa <handa@m17n.org>
31 31
32 * international/fontset.el (setup-default-fontset): Add a spec of 32 * international/fontset.el (setup-default-fontset): Add a spec of
33 non-OTF unicode font for Thai. 33 non-OTF Unicode font for Thai.
34 34
35 * fringe.el: Add coding: utf-8 cookie. 35 * fringe.el: Add coding: utf-8 cookie.
36 36
@@ -8483,7 +8483,7 @@
8483 8483
84842008-07-31 Chong Yidong <cyd@stupidchicken.com> 84842008-07-31 Chong Yidong <cyd@stupidchicken.com>
8485 8485
8486 * Makefile.in: Avoid maintainer warning for autogenerated unicode 8486 * Makefile.in: Avoid maintainer warning for autogenerated Unicode
8487 files. 8487 files.
8488 8488
8489 * apropos.el (apropos-symbol): Don't set button skip by default. 8489 * apropos.el (apropos-symbol): Don't set button skip by default.
@@ -13629,7 +13629,7 @@
13629 (completion-emacs22-try-completion): Place cursor after the /, as was 13629 (completion-emacs22-try-completion): Place cursor after the /, as was
13630 done in Emacs-22's minibuffer-complete-word. 13630 done in Emacs-22's minibuffer-complete-word.
13631 Fix bug reported by David Hansen <david.hansen@gmx.net>. 13631 Fix bug reported by David Hansen <david.hansen@gmx.net>.
13632 (completion-emacs22-try-completion): Merge all mergeable text rather 13632 (completion-emacs22-try-completion): Merge all mergable text rather
13633 than just /. 13633 than just /.
13634 (completion-pcm--delim-wild-regex): New var. 13634 (completion-pcm--delim-wild-regex): New var.
13635 (completion-pcm-word-delimiters): New custom. 13635 (completion-pcm-word-delimiters): New custom.
@@ -14189,7 +14189,7 @@
141892008-04-19 Nick Roberts <nickrob@snap.net.nz> 141892008-04-19 Nick Roberts <nickrob@snap.net.nz>
14190 14190
14191 * progmodes/gdb-ui.el (gdb-thread-indicator): New variable. 14191 * progmodes/gdb-ui.el (gdb-thread-indicator): New variable.
14192 (gdb-init-1): Initialise it. 14192 (gdb-init-1): Initialize it.
14193 (gdb-annotation-rules): New entry for "new-thread". 14193 (gdb-annotation-rules): New entry for "new-thread".
14194 (gdb-thread-identification): New function to customize 14194 (gdb-thread-identification): New function to customize
14195 mode-line-buffer-identification. 14195 mode-line-buffer-identification.
@@ -15994,11 +15994,11 @@
159942008-04-02 Alan Mackenzie <acm@muc.de> 159942008-04-02 Alan Mackenzie <acm@muc.de>
15995 15995
15996 * progmodes/cc-cmds.el (c-defun-name, c-cpp-define-name): 15996 * progmodes/cc-cmds.el (c-defun-name, c-cpp-define-name):
15997 New optimised functions to get the name of the current defun/macro. 15997 New optimized functions to get the name of the current defun/macro.
15998 15998
15999 * add-log.el (add-log-current-defun): Move the functionality which 15999 * add-log.el (add-log-current-defun): Move the functionality which
16000 gets the current function name for C like modes to cc-cmds.el, 16000 gets the current function name for C like modes to cc-cmds.el,
16001 thus optimising for speed. 16001 thus optimizing for speed.
16002 16002
160032008-04-02 Chong Yidong <cyd@stupidchicken.com> 160032008-04-02 Chong Yidong <cyd@stupidchicken.com>
16004 16004
@@ -16095,10 +16095,10 @@
16095 covering IPA (previously Latin), Phonetic Extensions and 16095 covering IPA (previously Latin), Phonetic Extensions and
16096 Phonetic Extensions Supplement (both previously unassigned). 16096 Phonetic Extensions Supplement (both previously unassigned).
16097 16097
16098 * international/fontset.el (setup-default-fontset): Use unicode fonts 16098 * international/fontset.el (setup-default-fontset): Use Unicode fonts
16099 that cover bopomofo script for bopomofo. 16099 that cover bopomofo script for bopomofo.
16100 Likewise for braille and mathematical. 16100 Likewise for braille and mathematical.
16101 Use unicode scripts that cover the phonetic script for IPA. 16101 Use Unicode scripts that cover the phonetic script for IPA.
16102 16102
161032008-04-01 Johan Bockgård <bojohan@gnu.org> 161032008-04-01 Johan Bockgård <bojohan@gnu.org>
16104 16104
@@ -19392,7 +19392,7 @@
19392 * progmodes/cc-mode.el (c-basic-common-init): C and ObjC now use 19392 * progmodes/cc-mode.el (c-basic-common-init): C and ObjC now use
19393 syntax-table text properties. 19393 syntax-table text properties.
19394 (c-common-init): Call language specific before/after-change 19394 (c-common-init): Call language specific before/after-change
19395 functions at mode initialisation. 19395 functions at mode initialization.
19396 (c-new-BEG, c-new-END, c-old-BOM, c-old-EOM): New variables. 19396 (c-new-BEG, c-new-END, c-old-BOM, c-old-EOM): New variables.
19397 (c-extend-region-for-CPP, c-neutralize-CPP-line) 19397 (c-extend-region-for-CPP, c-neutralize-CPP-line)
19398 (c-neutralize-syntax-in-CPP): New functions. 19398 (c-neutralize-syntax-in-CPP): New functions.
diff --git a/lisp/ChangeLog.15 b/lisp/ChangeLog.15
index ddd8ad7e7ff..04133f17364 100644
--- a/lisp/ChangeLog.15
+++ b/lisp/ChangeLog.15
@@ -2790,13 +2790,13 @@
2790 * net/tramp-gw.el: 2790 * net/tramp-gw.el:
2791 * net/tramp-imap.el: 2791 * net/tramp-imap.el:
2792 * net/tramp-sh.el: 2792 * net/tramp-sh.el:
2793 * net/tramp-smb.el: Add tramp-autoload cookie for initialisation 2793 * net/tramp-smb.el: Add tramp-autoload cookie for initialization
2794 code of `tramp-default-method-alist' and `tramp-default-user-alist'. 2794 code of `tramp-default-method-alist' and `tramp-default-user-alist'.
2795 2795
27962010-12-29 Karl Fogel <kfogel@red-bean.com> 27962010-12-29 Karl Fogel <kfogel@red-bean.com>
2797 2797
2798 * saveplace.el (save-place-alist-to-file): Save list sorted and 2798 * saveplace.el (save-place-alist-to-file): Save list sorted and
2799 pretty-printed, so that it is mergeable by line-based text merging, 2799 pretty-printed, so that it is mergable by line-based text merging,
2800 as suggested by Iain Dalton <iain.dalton {_AT_} gmail.com>. 2800 as suggested by Iain Dalton <iain.dalton {_AT_} gmail.com>.
2801 2801
28022010-12-28 Ken Manheimer <ken.manheimer@gmail.com> 28022010-12-28 Ken Manheimer <ken.manheimer@gmail.com>
@@ -5376,7 +5376,7 @@
5376 5376
53772010-10-21 Lars Magne Ingebrigtsen <larsi@gnus.org> 53772010-10-21 Lars Magne Ingebrigtsen <larsi@gnus.org>
5378 5378
5379 * newcomment.el (comment-dwim): Fix the intentation in the doc string. 5379 * newcomment.el (comment-dwim): Fix the indentation in the doc string.
5380 5380
53812010-10-21 Michael Albinus <michael.albinus@gmx.de> 53812010-10-21 Michael Albinus <michael.albinus@gmx.de>
5382 5382
@@ -7632,7 +7632,7 @@
7632 (post-self-insert-hook): Use it. 7632 (post-self-insert-hook): Use it.
7633 7633
7634 * emacs-lisp/pcase.el (pcase-split-memq): 7634 * emacs-lisp/pcase.el (pcase-split-memq):
7635 Fix overenthusiastic optimisation. 7635 Fix overenthusiastic optimization.
7636 (pcase-u1): Handle the case of a lambda pred. 7636 (pcase-u1): Handle the case of a lambda pred.
7637 7637
76382010-08-31 Kenichi Handa <handa@m17n.org> 76382010-08-31 Kenichi Handa <handa@m17n.org>
@@ -9381,7 +9381,7 @@
9381 9381
9382 Fix an indentation bug: 9382 Fix an indentation bug:
9383 9383
9384 * progmodes/cc-mode.el (c-common-init): Initialise c-new-BEG/END. 9384 * progmodes/cc-mode.el (c-common-init): Initialize c-new-BEG/END.
9385 (c-neutralize-syntax-in-and-mark-CPP): c-new-BEG/END: Take account 9385 (c-neutralize-syntax-in-and-mark-CPP): c-new-BEG/END: Take account
9386 of existing values. 9386 of existing values.
9387 9387
@@ -13225,7 +13225,7 @@
132252010-02-04 Michael Albinus <michael.albinus@gmx.de> 132252010-02-04 Michael Albinus <michael.albinus@gmx.de>
13226 13226
13227 * dired.el (dired-revert): If DIRED-DIRECTORY is a cons cell, call 13227 * dired.el (dired-revert): If DIRED-DIRECTORY is a cons cell, call
13228 `dired-uncache' for every elemnt which is an absolute file name. 13228 `dired-uncache' for every element which is an absolute file name.
13229 13229
13230 * net/tramp.el (tramp-handle-dired-uncache): When DIR is not a 13230 * net/tramp.el (tramp-handle-dired-uncache): When DIR is not a
13231 directory, handle its directory component. 13231 directory, handle its directory component.
@@ -14596,7 +14596,7 @@
145962009-12-05 Kevin Ryde <user42@zip.com.au> 145962009-12-05 Kevin Ryde <user42@zip.com.au>
14597 14597
14598 * textmodes/sgml-mode.el (sgml-lexical-context): 14598 * textmodes/sgml-mode.el (sgml-lexical-context):
14599 Recognise comment-start-skip to comment-end-skip as comment (Bug#4781). 14599 Recognize comment-start-skip to comment-end-skip as comment (Bug#4781).
14600 14600
146012009-12-05 Juri Linkov <juri@jurta.org> 146012009-12-05 Juri Linkov <juri@jurta.org>
14602 14602
diff --git a/lisp/ChangeLog.2 b/lisp/ChangeLog.2
index 36046562653..65005a4ba47 100644
--- a/lisp/ChangeLog.2
+++ b/lisp/ChangeLog.2
@@ -1960,7 +1960,7 @@
1960 window for it. 1960 window for it.
1961 1961
1962 * terminal.el (te-filter): 1962 * terminal.el (te-filter):
1963 Save/restore point from te-saved-point to minimise the lossage 1963 Save/restore point from te-saved-point to minimize the lossage
1964 vandals can inflict. 1964 vandals can inflict.
1965 1965
19661987-01-09 Richard M. Stallman (rms@prep) 19661987-01-09 Richard M. Stallman (rms@prep)
@@ -2190,7 +2190,7 @@
21901986-12-15 Richard Mlynarik (mly@prep) 21901986-12-15 Richard Mlynarik (mly@prep)
2191 2191
2192 * fortran.el: 2192 * fortran.el:
2193 Initialise fortran-mode-abbrev-table correctly. 2193 Initialize fortran-mode-abbrev-table correctly.
2194 2194
2195 * fortran.el: 2195 * fortran.el:
2196 fortran-comment-indent-char should be a character (a fixnum), not 2196 fortran-comment-indent-char should be a character (a fixnum), not
@@ -3788,7 +3788,7 @@
3788 3788
37891986-06-17 Richard M. Stallman (rms@prep) 37891986-06-17 Richard M. Stallman (rms@prep)
3790 3790
3791 * nroff-mode.el: Add elements to nrofff-brace-table. 3791 * nroff-mode.el: Add elements to nroff-brace-table.
3792 3792
37931986-06-16 Richard M. Stallman (rms@prep) 37931986-06-16 Richard M. Stallman (rms@prep)
3794 3794
@@ -4008,4 +4008,3 @@ See ChangeLog.1 for earlier changes.
4008 4008
4009 You should have received a copy of the GNU General Public License 4009 You should have received a copy of the GNU General Public License
4010 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. 4010 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
4011
diff --git a/lisp/ChangeLog.3 b/lisp/ChangeLog.3
index 8cafac2c0c4..2b384d79169 100644
--- a/lisp/ChangeLog.3
+++ b/lisp/ChangeLog.3
@@ -1905,7 +1905,7 @@
1905 1905
1906 * Makefile: Created. This exists mainly so developers elsewhere 1906 * Makefile: Created. This exists mainly so developers elsewhere
1907 can unlock the lisp files to accept an update tar, then relock 1907 can unlock the lisp files to accept an update tar, then relock
1908 them without locking the few that should stay writeable. 1908 them without locking the few that should stay writable.
1909 1909
1910 * solar.el, ange-ftp.el: Corrected Keywords header 1910 * solar.el, ange-ftp.el: Corrected Keywords header
1911 1911
diff --git a/lisp/ChangeLog.4 b/lisp/ChangeLog.4
index f9407ce20d8..b2cdc634f84 100644
--- a/lisp/ChangeLog.4
+++ b/lisp/ChangeLog.4
@@ -2462,7 +2462,7 @@
24621994-03-03 Simon Marshall (Simon.Marshall@mail.esrin.esa.it) 24621994-03-03 Simon Marshall (Simon.Marshall@mail.esrin.esa.it)
2463 2463
2464 * cmuscheme.el (inferior-scheme-mode): Removed unnecessary 2464 * cmuscheme.el (inferior-scheme-mode): Removed unnecessary
2465 initialisation of comint-input-sentinel. 2465 initialization of comint-input-sentinel.
2466 2466
2467 * shell.el (shell-dynamic-complete-functions): New variable. 2467 * shell.el (shell-dynamic-complete-functions): New variable.
2468 (shell-mode): Use it to set comint-dynamic-complete-functions. 2468 (shell-mode): Use it to set comint-dynamic-complete-functions.
@@ -4958,7 +4958,7 @@
49581993-11-08 Simon Marshall (Simon.Marshall@mail.esrin.esa.it) 49581993-11-08 Simon Marshall (Simon.Marshall@mail.esrin.esa.it)
4959 4959
4960 * comint.el (comint-preinput-scroll-to-bottom): Added 4960 * comint.el (comint-preinput-scroll-to-bottom): Added
4961 comint-magic-space to list of commands recognised as inserting. 4961 comint-magic-space to list of commands recognized as inserting.
4962 4962
4963 * comint.el (comint-output-filter): Corrected check for killed 4963 * comint.el (comint-output-filter): Corrected check for killed
4964 buffer. 4964 buffer.
@@ -5202,7 +5202,7 @@
5202 5202
5203 * comint.el (comint-last-output-start): New variable to record 5203 * comint.el (comint-last-output-start): New variable to record
5204 where most recent process output started from. 5204 where most recent process output started from.
5205 (comint-mode): Initialise it. 5205 (comint-mode): Initialize it.
5206 (comint-output-filter): Set it. 5206 (comint-output-filter): Set it.
5207 5207
5208 * comint.el (comint-previous-matching-input-string): Moved to 5208 * comint.el (comint-previous-matching-input-string): Moved to
@@ -5220,7 +5220,7 @@
5220 they move within the buffer rather than do input. 5220 they move within the buffer rather than do input.
5221 5221
5222 * comint.el (comint-send-input, comint-after-pmark-p) 5222 * comint.el (comint-send-input, comint-after-pmark-p)
5223 (comint-kill-input, comint-proc-query): Removed serialisation of 5223 (comint-kill-input, comint-proc-query): Removed serialization of
5224 obtaining the process mark's marker-position. 5224 obtaining the process mark's marker-position.
5225 5225
5226 * comint.el, shell.el: Commented out comint/shell-load-hooks. 5226 * comint.el, shell.el: Commented out comint/shell-load-hooks.
@@ -8952,4 +8952,3 @@ See ChangeLog.3 for earlier changes.
8952 8952
8953 You should have received a copy of the GNU General Public License 8953 You should have received a copy of the GNU General Public License
8954 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. 8954 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
8955
diff --git a/lisp/ChangeLog.5 b/lisp/ChangeLog.5
index 2d61f464a29..b536f7f1b66 100644
--- a/lisp/ChangeLog.5
+++ b/lisp/ChangeLog.5
@@ -475,8 +475,8 @@
475 * viper.el (vip-put-back, vip-Put-back): Now emulate Vi's behavior 475 * viper.el (vip-put-back, vip-Put-back): Now emulate Vi's behavior
476 more closely. 476 more closely.
477 477
478 * viper.el (vip-line): No longer not bombs out. 478 * viper.el (vip-line): No longer bombs out.
479 (vip-exec-shift) now preserves the point. 479 (vip-exec-shift): Now preserves the point.
480 480
481 * viper.el: Fixed the behavior of the Vi commands M, L, G, yw, dg, etc. 481 * viper.el: Fixed the behavior of the Vi commands M, L, G, yw, dg, etc.
482 482
@@ -2880,7 +2880,7 @@
2880 2880
28811995-03-02 Simon Marshall <simon@duality.gnu.ai.mit.edu> 28811995-03-02 Simon Marshall <simon@duality.gnu.ai.mit.edu>
2882 2882
2883 * font-lock.el (font-lock-maximum-decoration) New variable. 2883 * font-lock.el (font-lock-maximum-decoration): New variable.
2884 (font-lock-after-fontify-buffer-hook): New variable. 2884 (font-lock-after-fontify-buffer-hook): New variable.
2885 (font-lock-fontify-buffer): Run it after fontifying. 2885 (font-lock-fontify-buffer): Run it after fontifying.
2886 (font-lock-thing-lock-cleanup): New function to turn things off. 2886 (font-lock-thing-lock-cleanup): New function to turn things off.
@@ -4133,7 +4133,7 @@
4133 4133
4134 * startup.el (command-line-1): Handle -f with kbd macro. 4134 * startup.el (command-line-1): Handle -f with kbd macro.
4135 4135
4136 * msb.el (mouse-select-buffer) Handle an aborted selection. 4136 * msb.el (mouse-select-buffer): Handle an aborted selection.
4137 4137
41381995-01-11 Richard Stallman <rms@mole.gnu.ai.mit.edu> 41381995-01-11 Richard Stallman <rms@mole.gnu.ai.mit.edu>
4139 4139
@@ -4522,7 +4522,7 @@
4522 * gud.el (gdb): Correct tbreak doc string. 4522 * gud.el (gdb): Correct tbreak doc string.
4523 (gud-mode): Define a Gud menu. 4523 (gud-mode): Define a Gud menu.
4524 (gdb): Set debugger-specific menu entries. 4524 (gdb): Set debugger-specific menu entries.
4525 (sdb) (dbx) (xdb): Likewise. 4525 (sdb, dbx, xdb): Likewise.
4526 4526
45271994-12-22 Richard Stallman <rms@mole.gnu.ai.mit.edu> 45271994-12-22 Richard Stallman <rms@mole.gnu.ai.mit.edu>
4528 4528
@@ -6165,7 +6165,7 @@
6165 6165
61661994-10-05 Simon Marshall <Simon.Marshall@mail.esrin.esa.it> 61661994-10-05 Simon Marshall <Simon.Marshall@mail.esrin.esa.it>
6167 6167
6168 * comint.el (comint-check-proc): Recognise `open'. 6168 * comint.el (comint-check-proc): Recognize `open'.
6169 (comint-exec): Use open-network-stream if command is a cons pair. 6169 (comint-exec): Use open-network-stream if command is a cons pair.
6170 6170
6171 * font-lock.el (compilation-mode-font-lock-keywords, 6171 * font-lock.el (compilation-mode-font-lock-keywords,
@@ -6861,7 +6861,7 @@
6861 (Man-mode-map): Changed the meanings of ",", ".", "q". Added new 6861 (Man-mode-map): Changed the meanings of ",", ".", "q". Added new
6862 keys ">", "<", "k". 6862 keys ">", "<", "k".
6863 (Man-page-mode-string): Function deleted. 6863 (Man-page-mode-string): Function deleted.
6864 (Man-init-defvars): New function used for initialising the system 6864 (Man-init-defvars): New function used for initializing the system
6865 and environment dependent variables Man-fontify-manpage-flag, 6865 and environment dependent variables Man-fontify-manpage-flag,
6866 Man-uses-untabify, Man-sed-script, Man-filter-list. 6866 Man-uses-untabify, Man-sed-script, Man-filter-list.
6867 (Man-delete-trailing-newlines): Function deleted. 6867 (Man-delete-trailing-newlines): Function deleted.
@@ -6954,7 +6954,7 @@
6954 6954
69551994-09-19 Francesco Potortì <pot@cnuce.cnr.it> 69551994-09-19 Francesco Potortì <pot@cnuce.cnr.it>
6956 6956
6957 * rlogin.el (rlogin): Recognise the `-l user' option to rlogin and 6957 * rlogin.el (rlogin): Recognize the `-l user' option to rlogin and
6958 let comint and ange-ftp know about the correct home directory. 6958 let comint and ange-ftp know about the correct home directory.
6959 6959
69601994-09-19 Richard Stallman <rms@mole.gnu.ai.mit.edu> 69601994-09-19 Richard Stallman <rms@mole.gnu.ai.mit.edu>
@@ -8114,9 +8114,9 @@
8114 Modified to work with remote and compressed files. 8114 Modified to work with remote and compressed files.
8115 8115
8116 * ediff.el (ediff-read-file-name, ediff-buffers): Better defaults. 8116 * ediff.el (ediff-read-file-name, ediff-buffers): Better defaults.
8117 (ediff-read-file-name) Handle OS/2. 8117 (ediff-read-file-name): Handle OS/2.
8118 8118
8119 * ediff.el (ediff-forward-word-function) New function. 8119 * ediff.el (ediff-forward-word-function): New function.
8120 (ediff-wordify-function): Variable deleted. 8120 (ediff-wordify-function): Variable deleted.
8121 (ediff-toggle-regexp-match, ediff-hide-regexp-matches): New functions. 8121 (ediff-toggle-regexp-match, ediff-hide-regexp-matches): New functions.
8122 (ediff-focus-on-regexp-matches): New function. 8122 (ediff-focus-on-regexp-matches): New function.
@@ -8813,7 +8813,7 @@
8813 (gnus-uu-ask-to-save-file): New function. 8813 (gnus-uu-ask-to-save-file): New function.
8814 8814
8815 * gnus-uu.el (gnus-uu-interactive-set-up-windows): New function. 8815 * gnus-uu.el (gnus-uu-interactive-set-up-windows): New function.
8816 (gnus-uu-interactive-scan-directory) New function. 8816 (gnus-uu-interactive-scan-directory): New function.
8817 (gnus-uu-interactive-rescan-directory): New function. 8817 (gnus-uu-interactive-rescan-directory): New function.
8818 (gnus-uu-ignore-files-by-name, gnus-uu-ignore-files-by-type): New vars. 8818 (gnus-uu-ignore-files-by-name, gnus-uu-ignore-files-by-type): New vars.
8819 (gnus-uu-interactive-execute): Change directory to work dir before 8819 (gnus-uu-interactive-execute): Change directory to work dir before
@@ -9280,4 +9280,3 @@ See ChangeLog.4 for earlier changes.
9280 9280
9281 You should have received a copy of the GNU General Public License 9281 You should have received a copy of the GNU General Public License
9282 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. 9282 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
9283
diff --git a/lisp/ChangeLog.6 b/lisp/ChangeLog.6
index 7ba9261ccf0..42c9df84876 100644
--- a/lisp/ChangeLog.6
+++ b/lisp/ChangeLog.6
@@ -1491,9 +1491,9 @@
1491 1491
14921996-04-16 Francesco Potortì <F.Potorti@cnuce.cnr.it> 14921996-04-16 Francesco Potortì <F.Potorti@cnuce.cnr.it>
1493 1493
1494 * vc.el (vc-comment-ring): Initialise using make-ring. 1494 * vc.el (vc-comment-ring): Initialize using make-ring.
1495 (vc-clear-context): Initialise vc-comment-ring using make-ring. 1495 (vc-clear-context): Initialize vc-comment-ring using make-ring.
1496 (vc-finish-logentry): Don't initialise vc-comment-ring here. 1496 (vc-finish-logentry): Don't initialize vc-comment-ring here.
1497 1497
14981996-04-15 Eric Ding <ericding@mit.edu> 14981996-04-15 Eric Ding <ericding@mit.edu>
1499 1499
@@ -3055,7 +3055,7 @@
3055 (font-lock-mode): Use them. Doc fix. 3055 (font-lock-mode): Use them. Doc fix.
3056 Don't make font-lock-fontified buffer local here. 3056 Don't make font-lock-fontified buffer local here.
3057 (font-lock-set-defaults): Do it here. 3057 (font-lock-set-defaults): Do it here.
3058 (font-lock-compile-keyword): New function. Recognise `eval' keywords. 3058 (font-lock-compile-keyword): New function. Recognize `eval' keywords.
3059 (font-lock-compile-keywords): Use it. 3059 (font-lock-compile-keywords): Use it.
3060 (global-font-lock-mode): New command for Global Font Lock mode. 3060 (global-font-lock-mode): New command for Global Font Lock mode.
3061 (font-lock-global-modes): New variable. 3061 (font-lock-global-modes): New variable.
@@ -8038,4 +8038,3 @@ See ChangeLog.5 for earlier changes.
8038 8038
8039 You should have received a copy of the GNU General Public License 8039 You should have received a copy of the GNU General Public License
8040 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. 8040 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
8041
diff --git a/lisp/ChangeLog.8 b/lisp/ChangeLog.8
index 6d3d41a5a5c..7aca1b521a2 100644
--- a/lisp/ChangeLog.8
+++ b/lisp/ChangeLog.8
@@ -5516,7 +5516,7 @@
55161999-04-08 Andre Spiegel <spiegel@inf.fu-berlin.de> 55161999-04-08 Andre Spiegel <spiegel@inf.fu-berlin.de>
5517 5517
5518 * vc.el (vc-backend-revert): For CVS files that were made 5518 * vc.el (vc-backend-revert): For CVS files that were made
5519 writeable with "cvs edit", call "cvs unedit" to undo that. 5519 writable with "cvs edit", call "cvs unedit" to undo that.
5520 5520
55211999-04-08 Dave Love <fx@gnu.org> 55211999-04-08 Dave Love <fx@gnu.org>
5522 5522
@@ -6259,7 +6259,7 @@
6259 * sql.el: Added keywords from `finder-by-keyword'. 6259 * sql.el: Added keywords from `finder-by-keyword'.
6260 (sql-mode): Made sql-buffer a local variable, changed the 6260 (sql-mode): Made sql-buffer a local variable, changed the
6261 documentation: removed instructions to add *.sql files to 6261 documentation: removed instructions to add *.sql files to
6262 auto-mode-alist, added documentation for having mutliple SQL 6262 auto-mode-alist, added documentation for having multiple SQL
6263 buffers sending their stuff to different SQLi buffers, each 6263 buffers sending their stuff to different SQLi buffers, each
6264 running a different process. 6264 running a different process.
6265 (sql-postgres): Quoted *SQL* in doc string. 6265 (sql-postgres): Quoted *SQL* in doc string.
@@ -6270,7 +6270,7 @@
6270 (sql-sybase): Quoted *SQL* in doc string, added comma. 6270 (sql-sybase): Quoted *SQL* in doc string, added comma.
6271 (sql-oracle): Likewise. 6271 (sql-oracle): Likewise.
6272 (sql-interactive-mode): Added extensive documentation for having 6272 (sql-interactive-mode): Added extensive documentation for having
6273 mutliple SQL buffers sending their stuff to different SQLi 6273 multiple SQL buffers sending their stuff to different SQLi
6274 buffers, each running a different process. 6274 buffers, each running a different process.
6275 (sql-buffer): Changed doc from *SQL* to SQLi. 6275 (sql-buffer): Changed doc from *SQL* to SQLi.
6276 (sql-get-login): Doc fix. 6276 (sql-get-login): Doc fix.
diff --git a/lisp/ChangeLog.9 b/lisp/ChangeLog.9
index 4f867c24561..538f3f1d401 100644
--- a/lisp/ChangeLog.9
+++ b/lisp/ChangeLog.9
@@ -40,7 +40,7 @@
402001-10-17 Francesco Potortì <pot@gnu.org> 402001-10-17 Francesco Potortì <pot@gnu.org>
41 41
42 * comint.el (comint-password-prompt-regexp): Make it less 42 * comint.el (comint-password-prompt-regexp): Make it less
43 restrictive, letting comint recognise OpenSSH2 passphrase prompts. 43 restrictive, letting comint recognize OpenSSH2 passphrase prompts.
44 44
452001-10-17 John Wiegley <johnw@gnu.org> 452001-10-17 John Wiegley <johnw@gnu.org>
46 46
@@ -8638,7 +8638,7 @@
86382000-11-15 Gerd Moellmann <gerd@gnu.org> 86382000-11-15 Gerd Moellmann <gerd@gnu.org>
8639 8639
8640 * faces.el (face-set-after-frame-default): 8640 * faces.el (face-set-after-frame-default):
8641 If `inhibit-default-face-x-resources' is bound, don't intialize the 8641 If `inhibit-default-face-x-resources' is bound, don't initialize the
8642 default face from X resources. 8642 default face from X resources.
8643 8643
86442000-11-15 Eli Zaretskii <eliz@is.elta.co.il> 86442000-11-15 Eli Zaretskii <eliz@is.elta.co.il>
diff --git a/lisp/allout-widgets.el b/lisp/allout-widgets.el
index 3c2871594fc..dfd9adad2a7 100644
--- a/lisp/allout-widgets.el
+++ b/lisp/allout-widgets.el
@@ -1623,7 +1623,7 @@ We return the item-widget corresponding to the item at point."
1623 1623
1624 (set-buffer-modified-p was-modified) 1624 (set-buffer-modified-p was-modified)
1625 (goto-char steady-point) 1625 (goto-char steady-point)
1626 ;; must null the marker or the buffer gets clogged with impedence: 1626 ;; must null the marker or the buffer gets clogged with impedance:
1627 (set-marker steady-point nil) 1627 (set-marker steady-point nil)
1628 1628
1629 item-widget))) 1629 item-widget)))
diff --git a/lisp/allout.el b/lisp/allout.el
index 8cbdbee7303..e701d9685a1 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -170,7 +170,7 @@ respective allout-mode keybinding variables, `allout-command-prefix',
170 ;; the function value keymap of allout-mode-map is used in 170 ;; the function value keymap of allout-mode-map is used in
171 ;; minor-mode-map-alist - update it: 171 ;; minor-mode-map-alist - update it:
172 (fset allout-mode-map allout-mode-map-value)) 172 (fset allout-mode-map allout-mode-map-value))
173;;;_ * intialize the mode map: 173;;;_ * initialize the mode map:
174;; ensure that allout-mode-map has some setting even if allout-mode hasn't 174;; ensure that allout-mode-map has some setting even if allout-mode hasn't
175;; been invoked: 175;; been invoked:
176(allout-compose-and-institute-keymap) 176(allout-compose-and-institute-keymap)
@@ -612,7 +612,7 @@ headers look like comments in the programming language. It will also use
612the comment-start string, with an '_' appended, for `allout-primary-bullet'. 612the comment-start string, with an '_' appended, for `allout-primary-bullet'.
613 613
614String values are used as literals, not regular expressions, so 614String values are used as literals, not regular expressions, so
615do not escape any regulare-expression characters. 615do not escape any regular-expression characters.
616 616
617Value t means to first check for assoc value in `allout-mode-leaders' 617Value t means to first check for assoc value in `allout-mode-leaders'
618alist, then use comment-start string, if any, then use default (`.'). 618alist, then use comment-start string, if any, then use default (`.').
@@ -825,7 +825,7 @@ formatted copy."
825(defcustom allout-encrypt-unencrypted-on-saves t 825(defcustom allout-encrypt-unencrypted-on-saves t
826 "If non-nil, topics pending encryption are encrypted during buffer saves. 826 "If non-nil, topics pending encryption are encrypted during buffer saves.
827 827
828This provents file-system exposure of un-encrypted contents of 828This prevents file-system exposure of un-encrypted contents of
829items marked for encryption. 829items marked for encryption.
830 830
831When non-nil, if the topic currently being edited is decrypted, 831When non-nil, if the topic currently being edited is decrypted,
@@ -2283,7 +2283,7 @@ If topic has no offspring, then the next sibling with offspring will
2283determine whether or not this one is determined to be aberrant. 2283determine whether or not this one is determined to be aberrant.
2284 2284
2285If true, then the allout-recent-* settings are calibrated on the 2285If true, then the allout-recent-* settings are calibrated on the
2286offspring that qaulifies it as aberrant, ie with depth that 2286offspring that qualifies it as aberrant, ie with depth that
2287exceeds the topic by more than one." 2287exceeds the topic by more than one."
2288 2288
2289 ;; This is most clearly understood when considering standard-prefix-leader 2289 ;; This is most clearly understood when considering standard-prefix-leader
diff --git a/lisp/autorevert.el b/lisp/autorevert.el
index 817aaff55ca..f70025e9d3f 100644
--- a/lisp/autorevert.el
+++ b/lisp/autorevert.el
@@ -77,7 +77,7 @@
77;; M-x global-auto-revert-mode RET 77;; M-x global-auto-revert-mode RET
78;; 78;;
79;; To activate Global Auto-Revert Mode every time Emacs is started 79;; To activate Global Auto-Revert Mode every time Emacs is started
80;; customise the option `global-auto-revert-mode' or the following 80;; customize the option `global-auto-revert-mode' or the following
81;; line could be added to your ~/.emacs: 81;; line could be added to your ~/.emacs:
82;; (global-auto-revert-mode 1) 82;; (global-auto-revert-mode 1)
83;; 83;;
diff --git a/lisp/calc/calc-bin.el b/lisp/calc/calc-bin.el
index 20b4a9db5e2..44354f0822f 100644
--- a/lisp/calc/calc-bin.el
+++ b/lisp/calc/calc-bin.el
@@ -291,7 +291,7 @@ the size of a Calc bignum digit.")
291 (if (eq (car-safe b) 'mod) 291 (if (eq (car-safe b) 'mod)
292 (if (equal mod (nth 2 b)) 292 (if (equal mod (nth 2 b))
293 (setq b (nth 1 b)) 293 (setq b (nth 1 b))
294 (math-reject-arg b "*Inconsistent modulos")))) 294 (math-reject-arg b "*Inconsistent modulus"))))
295 (setq mod (nth 2 b) 295 (setq mod (nth 2 b)
296 b (nth 1 b))) 296 b (nth 1 b)))
297 (if (Math-messy-integerp mod) 297 (if (Math-messy-integerp mod)
@@ -303,9 +303,9 @@ the size of a Calc bignum digit.")
303 (if w 303 (if w
304 (if (/= w bits) 304 (if (/= w bits)
305 (calc-record-why 305 (calc-record-why
306 "*Warning: Modulo inconsistent with word size")) 306 "*Warning: Modulus inconsistent with word size"))
307 (setq w bits)) 307 (setq w bits))
308 (calc-record-why "*Warning: Modulo is not a power of 2")) 308 (calc-record-why "*Warning: Modulus is not a power of 2"))
309 (math-make-mod (if b 309 (math-make-mod (if b
310 (funcall f a b w) 310 (funcall f a b w)
311 (funcall f a w)) 311 (funcall f a w))
diff --git a/lisp/calc/calc-misc.el b/lisp/calc/calc-misc.el
index db86c08422e..6d034927ae0 100644
--- a/lisp/calc/calc-misc.el
+++ b/lisp/calc/calc-misc.el
@@ -260,13 +260,13 @@ Calc user interface as before (either C-x * C or C-x * K; initially C-x * C).
260 (length msg)) 32) 260 (length msg)) 32)
261 " [?=MORE]") 261 " [?=MORE]")
262 "")))))))) 262 ""))))))))
263 263
264 264
265 265
266 266
267;;;; Stack and buffer management. 267;;;; Stack and buffer management.
268 268
269;; The variable calc-last-why-command is set in calc-do-handly-whys 269;; The variable calc-last-why-command is set in calc-do-handle-whys
270;; and used in calc-why (in calc-stuff.el). 270;; and used in calc-why (in calc-stuff.el).
271(defvar calc-last-why-command) 271(defvar calc-last-why-command)
272 272
diff --git a/lisp/calc/calc-poly.el b/lisp/calc/calc-poly.el
index e16c26eaa19..97d955eb07d 100644
--- a/lisp/calc/calc-poly.el
+++ b/lisp/calc/calc-poly.el
@@ -419,7 +419,7 @@
419 (list 'frac 1 denom)) 419 (list 'frac 1 denom))
420 1)) 420 1))
421 421
422;;; Compute the GCD of two monovariate polynomial lists. 422;;; Compute the GCD of two univariate polynomial lists.
423;;; Knuth section 4.6.1, algorithm C. 423;;; Knuth section 4.6.1, algorithm C.
424(defun math-poly-gcd-coefs (u v) 424(defun math-poly-gcd-coefs (u v)
425 (let ((d (math-poly-gcd (math-poly-gcd-list u) 425 (let ((d (math-poly-gcd (math-poly-gcd-list u)
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index 60a84bdff35..626d2462b4f 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -1235,7 +1235,8 @@ Used by `calc-user-invocation'.")
1235 (glob (current-global-map)) 1235 (glob (current-global-map))
1236 (loc (current-local-map))) 1236 (loc (current-local-map)))
1237 (or (input-pending-p) (message "%s" prompt)) 1237 (or (input-pending-p) (message "%s" prompt))
1238 (let ((key (calc-read-key t))) 1238 (let ((key (calc-read-key t))
1239 (input-method-function nil))
1239 (calc-unread-command (cdr key)) 1240 (calc-unread-command (cdr key))
1240 (unwind-protect 1241 (unwind-protect
1241 (progn 1242 (progn
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index 1b980b3b1fa..d161602bec0 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -147,7 +147,7 @@ See the documentation for the function `diary-list-sexp-entries'."
147Nil means there are no comments. The diary does not display 147Nil means there are no comments. The diary does not display
148parts of entries that are inside comments. You can use comments 148parts of entries that are inside comments. You can use comments
149for whatever you like, e.g. for meta-data that packages such as 149for whatever you like, e.g. for meta-data that packages such as
150`appt.el' can use. Comments may not span mutliple lines, and there 150`appt.el' can use. Comments may not span multiple lines, and there
151can be only one comment on any line. 151can be only one comment on any line.
152See also `diary-comment-end'." 152See also `diary-comment-end'."
153 :version "24.1" 153 :version "24.1"
diff --git a/lisp/calendar/todo-mode.el b/lisp/calendar/todo-mode.el
index b0c7f125982..de232c25e3f 100644
--- a/lisp/calendar/todo-mode.el
+++ b/lisp/calendar/todo-mode.el
@@ -61,14 +61,14 @@
61;; 61;;
62;; The TODO list file has a special format and some auxiliary 62;; The TODO list file has a special format and some auxiliary
63;; information, which will be added by the todo-show function if 63;; information, which will be added by the todo-show function if
64;; it attempts to visit an un-initialised file. Hence it is 64;; it attempts to visit an un-initialized file. Hence it is
65;; recommended to use the todo-show function for the first time, 65;; recommended to use the todo-show function for the first time,
66;; in order to initialise the file, but it is not necessary 66;; in order to initialize the file, but it is not necessary
67;; afterwards. 67;; afterwards.
68;; 68;;
69;; As these commands are quite long to type, I would recommend 69;; As these commands are quite long to type, I would recommend
70;; the addition of two bindings to your to your global keymap. I 70;; the addition of two bindings to your to your global keymap. I
71;; personally have the following in my initialisation file: 71;; personally have the following in my initialization file:
72;; 72;;
73;; (global-set-key "\C-ct" 'todo-show) ; switch to TODO buffer 73;; (global-set-key "\C-ct" 'todo-show) ; switch to TODO buffer
74;; (global-set-key "\C-ci" 'todo-insert-item) ; insert new item 74;; (global-set-key "\C-ci" 'todo-insert-item) ; insert new item
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog
index e5969a3c291..788bf71845f 100644
--- a/lisp/cedet/ChangeLog
+++ b/lisp/cedet/ChangeLog
@@ -1,3 +1,27 @@
12011-11-20 Juanma Barranquero <lekktu@gmail.com>
2
3 * cedet-cscope.el (cedet-cscope-version-check):
4 * cedet-global.el (cedet-global-min-version)
5 (cedet-gnu-global-version-check):
6 * cedet.el (cedet-version):
7 * data-debug.el (data-debug-prev, data-debug-contract-current-line):
8 * ede.el (ede-buffer-belongs-to-project-p, ede-auto-add-to-target)
9 (ede-new, ede-invoke-method, project-edit-file-target, project-rescan)
10 (ede-add-project-to-global-list, ede-map-all-subprojects):
11 * inversion.el (inversion-check-version):
12 * mode-local.el (mode-local-map-file-buffers, define-child-mode)
13 (define-overloadable-function):
14 * pulse.el (pulse-flag, pulse):
15 * semantic.el (semantic-elapsed-time, semantic-parse-region)
16 (navigate-menu):
17 * ede/proj-comp.el (ede-compilation-program):
18 * semantic/debug.el (semantic-debug-parser-go)
19 (semantic-debug-parser-fail, semantic-debug-parser-quit)
20 (semantic-debug-parser-abort):
21 * semantic/idle.el (semantic-idle-core-handler):
22 * semantic/bovine/debug.el (semantic-bovine-debug-error-frame):
23 Fix typos.
24
12011-11-16 Juanma Barranquero <lekktu@gmail.com> 252011-11-16 Juanma Barranquero <lekktu@gmail.com>
2 26
3 * semantic/lex.el (semantic-lex-tokens): 27 * semantic/lex.el (semantic-lex-tokens):
diff --git a/lisp/cedet/cedet-cscope.el b/lisp/cedet/cedet-cscope.el
index 74892533ab6..71942698c5f 100644
--- a/lisp/cedet/cedet-cscope.el
+++ b/lisp/cedet/cedet-cscope.el
@@ -135,8 +135,8 @@ the error code."
135 135
136(defun cedet-cscope-version-check (&optional noerror) 136(defun cedet-cscope-version-check (&optional noerror)
137 "Check the version of the installed CScope command. 137 "Check the version of the installed CScope command.
138If optional programatic argument NOERROR is non-nil, then 138If optional programmatic argument NOERROR is non-nil,
139instead of throwing an error if CScope isn't available, then 139then instead of throwing an error if CScope isn't available,
140return nil." 140return nil."
141 (interactive) 141 (interactive)
142 (require 'inversion) 142 (require 'inversion)
diff --git a/lisp/cedet/cedet-files.el b/lisp/cedet/cedet-files.el
index ae037028bf7..6f40ee7030f 100644
--- a/lisp/cedet/cedet-files.el
+++ b/lisp/cedet/cedet-files.el
@@ -83,7 +83,7 @@ specific conversions during tests."
83 (setq file (concat driveletter ":" 83 (setq file (concat driveletter ":"
84 (substring file (match-end 1)))))) 84 (substring file (match-end 1))))))
85 85
86 ;; Handle the \\file\name nomenclature on some windows boxes. 86 ;; Handle the \\file\name nomenclature on some Windows boxes.
87 (when (string-match "^!" file) 87 (when (string-match "^!" file)
88 (setq file (concat "//" (substring file 1))))) 88 (setq file (concat "//" (substring file 1)))))
89 file)) 89 file))
diff --git a/lisp/cedet/cedet-global.el b/lisp/cedet/cedet-global.el
index d2a9794ec81..aa18c0d2f42 100644
--- a/lisp/cedet/cedet-global.el
+++ b/lisp/cedet/cedet-global.el
@@ -27,7 +27,7 @@
27(declare-function inversion-check-version "inversion") 27(declare-function inversion-check-version "inversion")
28 28
29(defvar cedet-global-min-version "5.0" 29(defvar cedet-global-min-version "5.0"
30 "Minimum version of GNU global required.") 30 "Minimum version of GNU Global required.")
31 31
32(defcustom cedet-global-command "global" 32(defcustom cedet-global-command "global"
33 "Command name for the GNU Global executable." 33 "Command name for the GNU Global executable."
@@ -131,8 +131,8 @@ If a default starting DIR is not specified, the current buffer's
131 131
132(defun cedet-gnu-global-version-check (&optional noerror) 132(defun cedet-gnu-global-version-check (&optional noerror)
133 "Check the version of the installed GNU Global command. 133 "Check the version of the installed GNU Global command.
134If optional programatic argument NOERROR is non-nil, then 134If optional programmatic argument NOERROR is non-nil,
135instead of throwing an error if Global isn't available, then 135then instead of throwing an error if Global isn't available,
136return nil." 136return nil."
137 (interactive) 137 (interactive)
138 (require 'inversion) 138 (require 'inversion)
diff --git a/lisp/cedet/cedet-idutils.el b/lisp/cedet/cedet-idutils.el
index e071265c143..ee8e432ddd9 100644
--- a/lisp/cedet/cedet-idutils.el
+++ b/lisp/cedet/cedet-idutils.el
@@ -84,7 +84,7 @@ Note: Scope is not yet supported."
84 84
85(defun cedet-idutils-fnid-call (flags) 85(defun cedet-idutils-fnid-call (flags)
86 "Call ID Utils fnid with the list of FLAGS. 86 "Call ID Utils fnid with the list of FLAGS.
87Return the created buffer with with program output." 87Return the created buffer with program output."
88 (let ((b (get-buffer-create "*CEDET fnid*")) 88 (let ((b (get-buffer-create "*CEDET fnid*"))
89 (cd default-directory) 89 (cd default-directory)
90 ) 90 )
@@ -112,7 +112,7 @@ Return the created buffer with with program output."
112 112
113(defun cedet-idutils-mkid-call (flags) 113(defun cedet-idutils-mkid-call (flags)
114 "Call ID Utils mkid with the list of FLAGS. 114 "Call ID Utils mkid with the list of FLAGS.
115Return the created buffer with with program output." 115Return the created buffer with program output."
116 (let ((b (get-buffer-create "*CEDET mkid*")) 116 (let ((b (get-buffer-create "*CEDET mkid*"))
117 (cd default-directory) 117 (cd default-directory)
118 ) 118 )
@@ -163,8 +163,8 @@ the error code."
163 163
164(defun cedet-idutils-version-check (&optional noerror) 164(defun cedet-idutils-version-check (&optional noerror)
165 "Check the version of the installed ID Utils command. 165 "Check the version of the installed ID Utils command.
166If optional programatic argument NOERROR is non-nil, then 166If optional programmatic argument NOERROR is non-nil,
167instead of throwing an error if Global isn't available, then 167then instead of throwing an error if Global isn't available,
168return nil." 168return nil."
169 (interactive) 169 (interactive)
170 (require 'inversion) 170 (require 'inversion)
diff --git a/lisp/cedet/cedet.el b/lisp/cedet/cedet.el
index d7645bc97ed..9ccf74de27a 100644
--- a/lisp/cedet/cedet.el
+++ b/lisp/cedet/cedet.el
@@ -75,7 +75,7 @@
75This is used by `semantic-mode' and `global-ede-mode'.") 75This is used by `semantic-mode' and `global-ede-mode'.")
76 76
77(defun cedet-version () 77(defun cedet-version ()
78 "Display all active versions of CEDET and Dependent packages. 78 "Display all active versions of CEDET and dependent packages.
79 79
80The PACKAGE column is the name of a given package from CEDET. 80The PACKAGE column is the name of a given package from CEDET.
81 81
@@ -85,7 +85,7 @@ See `cedet-packages' for details.
85FILE VERSION is the version number found in the source file 85FILE VERSION is the version number found in the source file
86for the specified PACKAGE. 86for the specified PACKAGE.
87 87
88LOADED VERSION is the version of PACKAGE current loaded in Emacs 88LOADED VERSION is the version of PACKAGE currently loaded in Emacs
89memory and (presumably) running in this Emacs instance. Value is X 89memory and (presumably) running in this Emacs instance. Value is X
90if the package has not been loaded." 90if the package has not been loaded."
91 (interactive) 91 (interactive)
diff --git a/lisp/cedet/data-debug.el b/lisp/cedet/data-debug.el
index e50e9993af0..329d1c608c2 100644
--- a/lisp/cedet/data-debug.el
+++ b/lisp/cedet/data-debug.el
@@ -916,7 +916,7 @@ If PARENT is non-nil, it is somehow related as a parent to thing."
916 (skip-chars-forward " *-><[]" (point-at-eol))) 916 (skip-chars-forward " *-><[]" (point-at-eol)))
917 917
918(defun data-debug-prev () 918(defun data-debug-prev ()
919 "Go to the next line in the Ddebug buffer." 919 "Go to the previous line in the Ddebug buffer."
920 (interactive) 920 (interactive)
921 (forward-line -1) 921 (forward-line -1)
922 (beginning-of-line) 922 (beginning-of-line)
@@ -972,7 +972,7 @@ Do nothing if already expanded."
972 972
973(defun data-debug-contract-current-line () 973(defun data-debug-contract-current-line ()
974 "Contract the current line (if possible). 974 "Contract the current line (if possible).
975Do nothing if already expanded." 975Do nothing if already contracted."
976 (when (and (data-debug-current-line-expanded-p) 976 (when (and (data-debug-current-line-expanded-p)
977 ;; Don't contract if the current line is not expandable. 977 ;; Don't contract if the current line is not expandable.
978 (get-text-property (point) 'ddebug-function)) 978 (get-text-property (point) 'ddebug-function))
diff --git a/lisp/cedet/ede.el b/lisp/cedet/ede.el
index 987351a25e0..741e1ffbe5f 100644
--- a/lisp/cedet/ede.el
+++ b/lisp/cedet/ede.el
@@ -214,7 +214,7 @@ Argument LIST-O-O is the list of objects to choose from."
214 (and obj (obj-of-class-p obj ede-target)))) 214 (and obj (obj-of-class-p obj ede-target))))
215 215
216(defun ede-buffer-belongs-to-project-p () 216(defun ede-buffer-belongs-to-project-p ()
217 "Return non-nil if this buffer belongs to at least one target." 217 "Return non-nil if this buffer belongs to at least one project."
218 (if (or (null ede-object) (consp ede-object)) nil 218 (if (or (null ede-object) (consp ede-object)) nil
219 (obj-of-class-p ede-object ede-project))) 219 (obj-of-class-p ede-object ede-project)))
220 220
@@ -243,7 +243,7 @@ Argument MENU-DEF is the menu definition to use."
243 ede-obj (if (listp ede-object) ede-object (list ede-object))) 243 ede-obj (if (listp ede-object) ede-object (list ede-object)))
244 ;; First, collect the build items from the project 244 ;; First, collect the build items from the project
245 (setq newmenu (append newmenu (ede-menu-items-build obj t))) 245 (setq newmenu (append newmenu (ede-menu-items-build obj t)))
246 ;; Second, Declare the current target menu items 246 ;; Second, declare the current target menu items
247 (if (and ede-obj (ede-menu-obj-of-class-p ede-target)) 247 (if (and ede-obj (ede-menu-obj-of-class-p ede-target))
248 (while ede-obj 248 (while ede-obj
249 (setq newmenu (append newmenu 249 (setq newmenu (append newmenu
@@ -264,7 +264,7 @@ Argument MENU-DEF is the menu definition to use."
264 (setq targets (cdr targets))) 264 (setq targets (cdr targets)))
265 ;; Fourth, build sub projects. 265 ;; Fourth, build sub projects.
266 ;; -- nerp 266 ;; -- nerp
267 ;; Fifth, Add make distribution 267 ;; Fifth, add make distribution
268 (append newmenu (list [ "Make distribution" ede-make-dist t ])) 268 (append newmenu (list [ "Make distribution" ede-make-dist t ]))
269 ))))) 269 )))))
270 270
@@ -512,7 +512,7 @@ an EDE controlled project."
512 "Look for a target that wants to own the current file. 512 "Look for a target that wants to own the current file.
513Follow the preference set with `ede-auto-add-method' and get the list 513Follow the preference set with `ede-auto-add-method' and get the list
514of objects with the `ede-want-file-p' method." 514of objects with the `ede-want-file-p' method."
515 (if ede-object (error "Ede-object already defined for %s" (buffer-name))) 515 (if ede-object (error "ede-object already defined for %s" (buffer-name)))
516 (if (or (eq ede-auto-add-method 'never) 516 (if (or (eq ede-auto-add-method 'never)
517 (ede-ignore-file (buffer-file-name))) 517 (ede-ignore-file (buffer-file-name)))
518 nil 518 nil
@@ -566,7 +566,7 @@ Argument FILE is the file or directory to load a project from."
566 (ede-load-project-file (file-name-directory file)))) 566 (ede-load-project-file (file-name-directory file))))
567 567
568(defun ede-new (type &optional name) 568(defun ede-new (type &optional name)
569 "Create a new project starting of project type TYPE. 569 "Create a new project starting from project type TYPE.
570Optional argument NAME is the name to give this project." 570Optional argument NAME is the name to give this project."
571 (interactive 571 (interactive
572 (list (completing-read "Project Type: " 572 (list (completing-read "Project Type: "
@@ -642,7 +642,7 @@ Optional argument NAME is the name to give this project."
642 642
643(defun ede-invoke-method (sym &rest args) 643(defun ede-invoke-method (sym &rest args)
644 "Invoke method SYM on the current buffer's project object. 644 "Invoke method SYM on the current buffer's project object.
645ARGS are additional arguments to pass to method sym." 645ARGS are additional arguments to pass to method SYM."
646 (if (not ede-object) 646 (if (not ede-object)
647 (error "Cannot invoke %s for %s" (symbol-name sym) 647 (error "Cannot invoke %s for %s" (symbol-name sym)
648 (buffer-name))) 648 (buffer-name)))
@@ -815,7 +815,7 @@ Argument FNND is an argument."
815 (error "remove-file not supported by %s" (object-name ot))) 815 (error "remove-file not supported by %s" (object-name ot)))
816 816
817(defmethod project-edit-file-target ((ot ede-target)) 817(defmethod project-edit-file-target ((ot ede-target))
818 "Edit the target OT associated w/ this file." 818 "Edit the target OT associated with this file."
819 (find-file (oref (ede-current-project) file))) 819 (find-file (oref (ede-current-project) file)))
820 820
821(defmethod project-new-target ((proj ede-project) &rest args) 821(defmethod project-new-target ((proj ede-project) &rest args)
@@ -857,7 +857,7 @@ Argument COMMAND is the command to use for compiling the target."
857 (error "Dist-files is not supported by %s" (object-name this))) 857 (error "Dist-files is not supported by %s" (object-name this)))
858 858
859(defmethod project-rescan ((this ede-project)) 859(defmethod project-rescan ((this ede-project))
860 "Rescan the EDE proj project THIS." 860 "Rescan the EDE project THIS."
861 (error "Rescanning a project is not supported by %s" (object-name this))) 861 (error "Rescanning a project is not supported by %s" (object-name this)))
862 862
863(defun ede-ecb-project-paths () 863(defun ede-ecb-project-paths ()
@@ -879,7 +879,7 @@ On success, return the added project."
879 (when (not proj) 879 (when (not proj)
880 (error "No project created to add to master list")) 880 (error "No project created to add to master list"))
881 (when (not (eieio-object-p proj)) 881 (when (not (eieio-object-p proj))
882 (error "Attempt to add Non-object to master project list")) 882 (error "Attempt to add non-object to master project list"))
883 (when (not (obj-of-class-p proj ede-project-placeholder)) 883 (when (not (obj-of-class-p proj ede-project-placeholder))
884 (error "Attempt to add a non-project to the ede projects list")) 884 (error "Attempt to add a non-project to the ede projects list"))
885 (add-to-list 'ede-projects proj) 885 (add-to-list 'ede-projects proj)
@@ -1157,7 +1157,7 @@ See also `ede-map-all-subprojects'."
1157 (mapcar proc (oref this subproj))) 1157 (mapcar proc (oref this subproj)))
1158 1158
1159(defmethod ede-map-all-subprojects ((this ede-project) allproc) 1159(defmethod ede-map-all-subprojects ((this ede-project) allproc)
1160 "For object THIS, execute PROC on THIS and all subprojects. 1160 "For object THIS, execute PROC on THIS and all subprojects.
1161This function also applies PROC to sub-sub projects. 1161This function also applies PROC to sub-sub projects.
1162See also `ede-map-subprojects'." 1162See also `ede-map-subprojects'."
1163 (apply 'append 1163 (apply 'append
diff --git a/lisp/cedet/ede/generic.el b/lisp/cedet/ede/generic.el
index 7efe534a640..69570771546 100644
--- a/lisp/cedet/ede/generic.el
+++ b/lisp/cedet/ede/generic.el
@@ -43,7 +43,7 @@
43;; 43;;
44;; Customization: 44;; Customization:
45;; 45;;
46;; Since these projects are all so increadibly generic, a user will 46;; Since these projects are all so incredibly generic, a user will
47;; need to configure some aspects of the project by hand. In order to 47;; need to configure some aspects of the project by hand. In order to
48;; enable this without configuring the project objects directly (which 48;; enable this without configuring the project objects directly (which
49;; are auto-generated) a special ede-generic-config object is defined to 49;; are auto-generated) a special ede-generic-config object is defined to
@@ -359,7 +359,7 @@ the new configuration."
359(defun ede-generic-new-autoloader (internal-name external-name 359(defun ede-generic-new-autoloader (internal-name external-name
360 projectfile class) 360 projectfile class)
361 "Add a new EDE Autoload instance for identifying a generic project. 361 "Add a new EDE Autoload instance for identifying a generic project.
362INTERNAL-NAME is a long name that identifies thsi project type. 362INTERNAL-NAME is a long name that identifies this project type.
363EXTERNAL-NAME is a shorter human readable name to describe the project. 363EXTERNAL-NAME is a shorter human readable name to describe the project.
364PROJECTFILE is a file name that identifies a project of this type to EDE, such as 364PROJECTFILE is a file name that identifies a project of this type to EDE, such as
365a Makefile, or SConstruct file. 365a Makefile, or SConstruct file.
diff --git a/lisp/cedet/ede/pconf.el b/lisp/cedet/ede/pconf.el
index 05290158189..ae503e836d8 100644
--- a/lisp/cedet/ede/pconf.el
+++ b/lisp/cedet/ede/pconf.el
@@ -82,7 +82,7 @@ don't do it. A value of nil means to just do it.")
82 (directory-file-name 82 (directory-file-name
83 (ede-subproject-relative-path sp top-level-project-local))))) 83 (ede-subproject-relative-path sp top-level-project-local)))))
84 (when (string= dir "./") (setq dir "")) 84 (when (string= dir "./") (setq dir ""))
85 ;; Use concat, because expand-file-name removes the relativeness. 85 ;; Use concat, because expand-file-name removes the relativity.
86 (concat dir "Makefile") ))))) 86 (concat dir "Makefile") )))))
87 ;; 87 ;;
88 ;; NOTE TO SELF. TURN THIS INTO THE OFFICIAL LIST 88 ;; NOTE TO SELF. TURN THIS INTO THE OFFICIAL LIST
diff --git a/lisp/cedet/ede/proj-comp.el b/lisp/cedet/ede/proj-comp.el
index ae5796e042b..84bf8ebf1a0 100644
--- a/lisp/cedet/ede/proj-comp.el
+++ b/lisp/cedet/ede/proj-comp.el
@@ -97,8 +97,8 @@ use the same autoconf form.")
97 (objectextention :initarg :objectextention 97 (objectextention :initarg :objectextention
98 :type string 98 :type string
99 :documentation 99 :documentation
100 "A string which is the extention used for object files. 100 "A string which is the extension used for object files.
101For example, C code uses .o on unix, and Emacs Lisp uses .elc.") 101For example, C code uses .o on Unix, and Emacs Lisp uses .elc.")
102 ) 102 )
103 "A program used to compile or link a program via a Makefile. 103 "A program used to compile or link a program via a Makefile.
104Contains everything needed to output code into a Makefile, or autoconf 104Contains everything needed to output code into a Makefile, or autoconf
diff --git a/lisp/cedet/ede/proj.el b/lisp/cedet/ede/proj.el
index 40e6165251c..79022be6a5f 100644
--- a/lisp/cedet/ede/proj.el
+++ b/lisp/cedet/ede/proj.el
@@ -584,7 +584,7 @@ Converts all symbols into the objects to be used."
584 link))) 584 link)))
585 585
586 586
587;;; Target type specific autogenerating gobbldegook. 587;;; Target type specific autogenerating gobbledygook.
588;; 588;;
589 589
590(defun ede-proj-makefile-type (&optional proj) 590(defun ede-proj-makefile-type (&optional proj)
diff --git a/lisp/cedet/ede/project-am.el b/lisp/cedet/ede/project-am.el
index 316309092e7..033a486f1a7 100644
--- a/lisp/cedet/ede/project-am.el
+++ b/lisp/cedet/ede/project-am.el
@@ -284,7 +284,7 @@ buffer being in order to provide a smart default target type."
284 (progn (forward-line -1) 284 (progn (forward-line -1)
285 (end-of-line) 285 (end-of-line)
286 (insert "\n")) 286 (insert "\n"))
287 ;; If the above search fails, thats ok. We'd just want to be at 287 ;; If the above search fails, that's ok. We'd just want to be at
288 ;; point-min anyway. 288 ;; point-min anyway.
289 ) 289 )
290 (makefile-insert-macro (car (cdr (cdr ntype)))))) 290 (makefile-insert-macro (car (cdr (cdr ntype))))))
diff --git a/lisp/cedet/inversion.el b/lisp/cedet/inversion.el
index 065ac6d0559..53639b19a96 100644
--- a/lisp/cedet/inversion.el
+++ b/lisp/cedet/inversion.el
@@ -216,14 +216,14 @@ not an indication of new features or bug fixes."
216 ))) 216 )))
217 217
218(defun inversion-check-version (version incompatible-version 218(defun inversion-check-version (version incompatible-version
219 minimum &rest reserved) 219 minimum &rest reserved)
220 "Check that a given version meets the minimum requirement. 220 "Check that a given version meets the minimum requirement.
221VERSION, INCOMPATIBLE-VERSION and MINIMUM are of similar format to 221VERSION, INCOMPATIBLE-VERSION and MINIMUM are of similar format to
222return entries of `inversion-decode-version', or a classic version 222return entries of `inversion-decode-version', or a classic version
223string. INCOMPATIBLE-VERSION can be nil. 223string. INCOMPATIBLE-VERSION can be nil.
224RESERVED arguments are kept for a later use. 224RESERVED arguments are kept for a later use.
225Return: 225Return:
226- nil if everything is ok 226- nil if everything is ok.
227- 'outdated if VERSION is less than MINIMUM. 227- 'outdated if VERSION is less than MINIMUM.
228- 'incompatible if VERSION is not backward compatible with MINIMUM. 228- 'incompatible if VERSION is not backward compatible with MINIMUM.
229- t if the check failed." 229- t if the check failed."
@@ -374,7 +374,7 @@ Return nil when VERSION-STRING was not found."
374 (with-temp-buffer 374 (with-temp-buffer
375 ;; The 3000 is a bit arbitrary, but should cut down on 375 ;; The 3000 is a bit arbitrary, but should cut down on
376 ;; fileio as version info usually is at the very top 376 ;; fileio as version info usually is at the very top
377 ;; of a file. AFter a long commentary could be bad. 377 ;; of a file. After a long commentary could be bad.
378 (insert-file-contents-literally file nil 0 3000) 378 (insert-file-contents-literally file nil 0 3000)
379 (goto-char (point-min)) 379 (goto-char (point-min))
380 (when (re-search-forward (format tag package 'version) nil t) 380 (when (re-search-forward (format tag package 'version) nil t)
diff --git a/lisp/cedet/mode-local.el b/lisp/cedet/mode-local.el
index 0e7657642c2..511a3cd1d8b 100644
--- a/lisp/cedet/mode-local.el
+++ b/lisp/cedet/mode-local.el
@@ -36,7 +36,7 @@
36;; 36;;
37;; You should use a mode-local variable or override to allow extension 37;; You should use a mode-local variable or override to allow extension
38;; only if you expect a mode author to provide that extension. If a 38;; only if you expect a mode author to provide that extension. If a
39;; user might wish to customize a give variable or function then 39;; user might wish to customize a given variable or function then
40;; the existing customization mechanism should be used. 40;; the existing customization mechanism should be used.
41 41
42;; To Do: 42;; To Do:
@@ -55,7 +55,7 @@
55FUNCTION does not have arguments; when it is entered `current-buffer' 55FUNCTION does not have arguments; when it is entered `current-buffer'
56is the currently selected file buffer. 56is the currently selected file buffer.
57If optional argument PREDICATE is non nil, only select file buffers 57If optional argument PREDICATE is non nil, only select file buffers
58for which the function PREDICATE return non-nil. 58for which the function PREDICATE returns non-nil.
59If optional argument BUFFERS is non-nil, it is a list of buffers to 59If optional argument BUFFERS is non-nil, it is a list of buffers to
60walk through. It defaults to `buffer-list'." 60walk through. It defaults to `buffer-list'."
61 (dolist (b (or buffers (buffer-list))) 61 (dolist (b (or buffers (buffer-list)))
@@ -146,7 +146,7 @@ local variables have been defined."
146 (mode-local-map-mode-buffers #'activate-mode-local-bindings mode)) 146 (mode-local-map-mode-buffers #'activate-mode-local-bindings mode))
147 147
148(defmacro define-child-mode (mode parent &optional docstring) 148(defmacro define-child-mode (mode parent &optional docstring)
149 "Make major mode MODE inherits behavior from PARENT mode. 149 "Make major mode MODE inherit behavior from PARENT mode.
150DOCSTRING is optional and not used. 150DOCSTRING is optional and not used.
151To work properly, this should be put after PARENT mode local variables 151To work properly, this should be put after PARENT mode local variables
152definition." 152definition."
@@ -523,11 +523,11 @@ See also the function `define-overload'."
523 result))) 523 result)))
524 524
525(defmacro define-overloadable-function (name args docstring &rest body) 525(defmacro define-overloadable-function (name args docstring &rest body)
526 "Define a new function, as with `defun' which can be overloaded. 526 "Define a new function, as with `defun', which can be overloaded.
527NAME is the name of the function to create. 527NAME is the name of the function to create.
528ARGS are the arguments to the function. 528ARGS are the arguments to the function.
529DOCSTRING is a documentation string to describe the function. The 529DOCSTRING is a documentation string to describe the function. The
530docstring will automatically had details about its overload symbol 530docstring will automatically have details about its overload symbol
531appended to the end. 531appended to the end.
532BODY is code that would be run when there is no override defined. The 532BODY is code that would be run when there is no override defined. The
533default is to call the function `NAME-default' with the appropriate 533default is to call the function `NAME-default' with the appropriate
diff --git a/lisp/cedet/pulse.el b/lisp/cedet/pulse.el
index 74dc1ecde31..4929feb0302 100644
--- a/lisp/cedet/pulse.el
+++ b/lisp/cedet/pulse.el
@@ -36,7 +36,7 @@
36;; 36;;
37;; `pulse-momentary-highlight-one-line' - Pulse a single line at POINT. 37;; `pulse-momentary-highlight-one-line' - Pulse a single line at POINT.
38;; `pulse-momentary-highlight-region' - Pulse a region. 38;; `pulse-momentary-highlight-region' - Pulse a region.
39;; `pulse-momentary-highlight-overlay' - Pulse an overlay 39;; `pulse-momentary-highlight-overlay' - Pulse an overlay.
40;; These three functions will just blink the specified area if 40;; These three functions will just blink the specified area if
41;; the version of Emacs you are using doesn't support pulsing. 41;; the version of Emacs you are using doesn't support pulsing.
42;; 42;;
@@ -65,7 +65,7 @@ background color.
65If the value is nil, highlight with an unchanging color until a 65If the value is nil, highlight with an unchanging color until a
66key is pressed. 66key is pressed.
67If the value is `never', do no coloring at all. 67If the value is `never', do no coloring at all.
68Any other value means to the default pulsing behavior. 68Any other value means to do the default pulsing behavior.
69 69
70If `pulse-flag' is non-nil, but `pulse-available-p' is nil, then 70If `pulse-flag' is non-nil, but `pulse-available-p' is nil, then
71this flag is ignored." 71this flag is ignored."
@@ -77,7 +77,7 @@ this flag is ignored."
77 (:background "#AAAA33")) 77 (:background "#AAAA33"))
78 (((class color) (background light)) 78 (((class color) (background light))
79 (:background "#FFFFAA"))) 79 (:background "#FFFFAA")))
80 "*Face used at beginning of a highight." 80 "*Face used at beginning of a highlight."
81 :group 'pulse) 81 :group 'pulse)
82 82
83(defface pulse-highlight-face 83(defface pulse-highlight-face
@@ -163,7 +163,7 @@ Return t if there is more drift to do, nil if completed."
163 163
164(defun pulse (&optional face) 164(defun pulse (&optional face)
165 "Pulse the colors on our highlight face. 165 "Pulse the colors on our highlight face.
166If optional FACE is provide, reset the face to FACE color, 166If optional FACE is provided, reset the face to FACE color,
167instead of `pulse-highlight-start-face'. 167instead of `pulse-highlight-start-face'.
168Be sure to call `pulse-reset-face' after calling pulse." 168Be sure to call `pulse-reset-face' after calling pulse."
169 (unwind-protect 169 (unwind-protect
diff --git a/lisp/cedet/semantic.el b/lisp/cedet/semantic.el
index 639b46ad2cf..3ffb6baee9f 100644
--- a/lisp/cedet/semantic.el
+++ b/lisp/cedet/semantic.el
@@ -344,7 +344,7 @@ to use Semantic, and `semantic-init-hook' is run."
344 ;; don't go along for the ride. 344 ;; don't go along for the ride.
345 (add-hook 'clone-indirect-buffer-hook 'semantic-clear-toplevel-cache 345 (add-hook 'clone-indirect-buffer-hook 'semantic-clear-toplevel-cache
346 nil t) 346 nil t)
347 ;; Specify that this function has done it's work. At this point 347 ;; Specify that this function has done its work. At this point
348 ;; we can consider that semantic is active in this buffer. 348 ;; we can consider that semantic is active in this buffer.
349 (setq semantic-new-buffer-fcn-was-run t) 349 (setq semantic-new-buffer-fcn-was-run t)
350 ;; Here are some buffer local variables we can initialize ourselves 350 ;; Here are some buffer local variables we can initialize ourselves
@@ -378,7 +378,7 @@ Do not set this yourself. Call `semantic-debug'.")
378 378
379(defun semantic-elapsed-time (start end) 379(defun semantic-elapsed-time (start end)
380 "Copied from elp.el. Was `elp-elapsed-time'. 380 "Copied from elp.el. Was `elp-elapsed-time'.
381Argument START and END bound the time being calculated." 381Arguments START and END bound the time being calculated."
382 (float-time (time-subtract end start))) 382 (float-time (time-subtract end start)))
383 383
384(defun bovinate (&optional clear) 384(defun bovinate (&optional clear)
@@ -431,7 +431,7 @@ will be silently ignored.
431 431
432Optional arguments: 432Optional arguments:
433NONTERMINAL is the rule to start parsing at. 433NONTERMINAL is the rule to start parsing at.
434DEPTH specifies the lexical depth to descend for parser that use 434DEPTH specifies the lexical depth to descend for parsers that use
435lexical analysis as their first step. 435lexical analysis as their first step.
436RETURNONERROR specifies that parsing should stop on the first 436RETURNONERROR specifies that parsing should stop on the first
437unmatched syntax encountered. When nil, parsing skips the syntax, 437unmatched syntax encountered. When nil, parsing skips the syntax,
@@ -960,7 +960,7 @@ Throw away all the old tags, and recreate the tag database."
960 '("--")) 960 '("--"))
961 (define-key navigate-menu [senator-go-to-up-reference] 961 (define-key navigate-menu [senator-go-to-up-reference]
962 '(menu-item "Parent Tag" senator-go-to-up-reference 962 '(menu-item "Parent Tag" senator-go-to-up-reference
963 :help "Navigate up one reference by tag.")) 963 :help "Navigate up one reference by tag"))
964 (define-key navigate-menu [senator-next-tag] 964 (define-key navigate-menu [senator-next-tag]
965 '(menu-item "Next Tag" senator-next-tag 965 '(menu-item "Next Tag" senator-next-tag
966 :help "Go to the next tag")) 966 :help "Go to the next tag"))
@@ -971,7 +971,7 @@ Throw away all the old tags, and recreate the tag database."
971 ;; Top level menu items: 971 ;; Top level menu items:
972 (define-key cedet-menu-map [semantic-force-refresh] 972 (define-key cedet-menu-map [semantic-force-refresh]
973 '(menu-item "Reparse Buffer" semantic-force-refresh 973 '(menu-item "Reparse Buffer" semantic-force-refresh
974 :help "Force a full reparse of the current buffer." 974 :help "Force a full reparse of the current buffer"
975 :visible semantic-mode)) 975 :visible semantic-mode))
976 (define-key cedet-menu-map [semantic-edit-menu] 976 (define-key cedet-menu-map [semantic-edit-menu]
977 `(menu-item "Edit Tags" ,edit-menu 977 `(menu-item "Edit Tags" ,edit-menu
diff --git a/lisp/cedet/semantic/analyze.el b/lisp/cedet/semantic/analyze.el
index 43e998b852e..ae199703c80 100644
--- a/lisp/cedet/semantic/analyze.el
+++ b/lisp/cedet/semantic/analyze.el
@@ -161,7 +161,7 @@ be just a string in some circumstances.")
161(defclass semantic-analyze-context-return (semantic-analyze-context) 161(defclass semantic-analyze-context-return (semantic-analyze-context)
162 () ; No extra data. 162 () ; No extra data.
163 "Analysis class for return data. 163 "Analysis class for return data.
164Return data methods identify the requred type by the return value 164Return data methods identify the required type by the return value
165of the parent function.") 165of the parent function.")
166 166
167;;; METHODS 167;;; METHODS
diff --git a/lisp/cedet/semantic/bovine/c.el b/lisp/cedet/semantic/bovine/c.el
index d8b004df1bd..686113c23e2 100644
--- a/lisp/cedet/semantic/bovine/c.el
+++ b/lisp/cedet/semantic/bovine/c.el
@@ -344,7 +344,7 @@ Uses known macro tables in SPP to determine what block to skip."
344 (string= sym "0")) 344 (string= sym "0"))
345 (and ifdef (not (semantic-lex-spp-symbol-p sym))) 345 (and ifdef (not (semantic-lex-spp-symbol-p sym)))
346 (and ifndef (semantic-lex-spp-symbol-p sym))) 346 (and ifndef (semantic-lex-spp-symbol-p sym)))
347 ;; The if indecates to skip this preprocessor section 347 ;; The if indicates to skip this preprocessor section.
348 (let ((pt nil)) 348 (let ((pt nil))
349 ;; (message "%s %s yes" ift sym) 349 ;; (message "%s %s yes" ift sym)
350 (beginning-of-line) 350 (beginning-of-line)
@@ -650,7 +650,7 @@ as for the parent."
650 (setq depth 0) 650 (setq depth 0)
651 651
652 ;; This is a copy of semantic-parse-region-default where we 652 ;; This is a copy of semantic-parse-region-default where we
653 ;; are doing something special with the lexication of the 653 ;; are doing something special with the lexing of the
654 ;; contents of the semantic-list token. Stuff not used by C 654 ;; contents of the semantic-list token. Stuff not used by C
655 ;; removed. 655 ;; removed.
656 (let ((tokstream 656 (let ((tokstream
@@ -954,7 +954,7 @@ now.
954 (nth 1 (car names)) ; name 954 (nth 1 (car names)) ; name
955 "typedef" 955 "typedef"
956 (semantic-tag-type-members tag) 956 (semantic-tag-type-members tag)
957 ;; parent is just tbe name of what 957 ;; parent is just the name of what
958 ;; is passed down as a tag. 958 ;; is passed down as a tag.
959 (list 959 (list
960 (semantic-tag-name 960 (semantic-tag-name
@@ -1591,7 +1591,7 @@ DO NOT return the list of tags encompassing point."
1591 (setq tagreturn (cons (semantic-tag-type (car (semanticdb-find-result-nth tmp idx))) tagreturn)) 1591 (setq tagreturn (cons (semantic-tag-type (car (semanticdb-find-result-nth tmp idx))) tagreturn))
1592 (setq idx (1+ idx))) 1592 (setq idx (1+ idx)))
1593 ) 1593 )
1594 ;; Use the encompased types around point to also look for using statements. 1594 ;; Use the encompassed types around point to also look for using statements.
1595 ;;(setq tagreturn (cons "bread_name" tagreturn)) 1595 ;;(setq tagreturn (cons "bread_name" tagreturn))
1596 (while (cdr tagsaroundpoint) ; don't search the last one 1596 (while (cdr tagsaroundpoint) ; don't search the last one
1597 (setq tmp (semantic-find-tags-by-class 'using (semantic-tag-components (car tagsaroundpoint)))) 1597 (setq tmp (semantic-find-tags-by-class 'using (semantic-tag-components (car tagsaroundpoint))))
diff --git a/lisp/cedet/semantic/bovine/debug.el b/lisp/cedet/semantic/bovine/debug.el
index 9ca7409e335..684db1e7bbf 100644
--- a/lisp/cedet/semantic/bovine/debug.el
+++ b/lisp/cedet/semantic/bovine/debug.el
@@ -114,7 +114,7 @@ LEXTOKEN, is a token returned by the lexer which is being matched."
114 :documentation 114 :documentation
115 "An error condition caught in an action.") 115 "An error condition caught in an action.")
116 ) 116 )
117 "Debugger frame representaion of a lisp error thrown during parsing.") 117 "Debugger frame representation of a lisp error thrown during parsing.")
118 118
119(defun semantic-create-bovine-debug-error-frame (condition) 119(defun semantic-create-bovine-debug-error-frame (condition)
120 "Create an error frame for bovine debugger. 120 "Create an error frame for bovine debugger.
diff --git a/lisp/cedet/semantic/bovine/el.el b/lisp/cedet/semantic/bovine/el.el
index 2151e9ef53b..98f744dca6e 100644
--- a/lisp/cedet/semantic/bovine/el.el
+++ b/lisp/cedet/semantic/bovine/el.el
@@ -863,7 +863,7 @@ fields and such to, but that is for some other day."
863In Emacs Lisp, a prototype for something may start (autoload ...). 863In Emacs Lisp, a prototype for something may start (autoload ...).
864This is certainly not expected if this is used to display a summary. 864This is certainly not expected if this is used to display a summary.
865Make up something else. When we go to write something that needs 865Make up something else. When we go to write something that needs
866a real Emacs Lisp protype, we can fix it then." 866a real Emacs Lisp prototype, we can fix it then."
867 (let ((class (semantic-tag-class tag)) 867 (let ((class (semantic-tag-class tag))
868 (name (semantic-format-tag-name tag parent color)) 868 (name (semantic-format-tag-name tag parent color))
869 ) 869 )
diff --git a/lisp/cedet/semantic/complete.el b/lisp/cedet/semantic/complete.el
index 41a569564d0..aaec4cb30ff 100644
--- a/lisp/cedet/semantic/complete.el
+++ b/lisp/cedet/semantic/complete.el
@@ -1025,7 +1025,7 @@ Output must be in semanticdb Find result format."
1025 ((obj semantic-collector-abstract) prefix) 1025 ((obj semantic-collector-abstract) prefix)
1026 "For OBJ, do whatepsace completion based on PREFIX. 1026 "For OBJ, do whatepsace completion based on PREFIX.
1027This implies that if there are two completions, one matching 1027This implies that if there are two completions, one matching
1028the test \"preifx\\>\", and one not, the one matching the full 1028the test \"prefix\\>\", and one not, the one matching the full
1029word version of PREFIX will be chosen, and that text returned. 1029word version of PREFIX will be chosen, and that text returned.
1030This function requires that `semantic-collector-calculate-completions' 1030This function requires that `semantic-collector-calculate-completions'
1031has been run first." 1031has been run first."
@@ -1478,7 +1478,7 @@ one in the source buffer."
1478 (tag (cdr nt)) 1478 (tag (cdr nt))
1479 (table (car nt)) 1479 (table (car nt))
1480 ) 1480 )
1481 ;; If we fail to normalize, resete. 1481 ;; If we fail to normalize, reset.
1482 (when (not tag) (setq table rtable tag rtag)) 1482 (when (not tag) (setq table rtable tag rtag))
1483 ;; Do the focus. 1483 ;; Do the focus.
1484 (let ((buf (or (semantic-tag-buffer tag) 1484 (let ((buf (or (semantic-tag-buffer tag)
diff --git a/lisp/cedet/semantic/db-find.el b/lisp/cedet/semantic/db-find.el
index 35aef5d16ef..4d5d8f35f51 100644
--- a/lisp/cedet/semantic/db-find.el
+++ b/lisp/cedet/semantic/db-find.el
@@ -675,7 +675,7 @@ Included databases are filtered based on `semanticdb-find-default-throttle'."
675 ;; 675 ;;
676 ;; NOTE: Not used if EDE is active! 676 ;; NOTE: Not used if EDE is active!
677 ((and (semanticdb-find-throttle-active-p 'project) 677 ((and (semanticdb-find-throttle-active-p 'project)
678 ;; And dont do this if it is a system include. Not supported by all languages, 678 ;; And don't do this if it is a system include. Not supported by all languages,
679 ;; but when it is, this is a nice fast way to skip this step. 679 ;; but when it is, this is a nice fast way to skip this step.
680 (not (semantic-tag-include-system-p includetag)) 680 (not (semantic-tag-include-system-p includetag))
681 ;; Don't do this if we have an EDE project. 681 ;; Don't do this if we have an EDE project.
diff --git a/lisp/cedet/semantic/db-javascript.el b/lisp/cedet/semantic/db-javascript.el
index 213216cee1a..e662290340d 100644
--- a/lisp/cedet/semantic/db-javascript.el
+++ b/lisp/cedet/semantic/db-javascript.el
@@ -137,7 +137,7 @@ Create one of our special tables that can act as an intermediary."
137 137
138(defmethod semanticdb-get-tags ((table semanticdb-table-javascript )) 138(defmethod semanticdb-get-tags ((table semanticdb-table-javascript ))
139 "Return the list of tags belonging to TABLE." 139 "Return the list of tags belonging to TABLE."
140 ;; NOTE: Omniscient databases probably don't want to keep large tabes 140 ;; NOTE: Omniscient databases probably don't want to keep large tables
141 ;; lolly-gagging about. Keep internal Emacs tables empty and 141 ;; lolly-gagging about. Keep internal Emacs tables empty and
142 ;; refer to alternate databases when you need something. 142 ;; refer to alternate databases when you need something.
143 semanticdb-javascript-tags) 143 semanticdb-javascript-tags)
@@ -151,7 +151,7 @@ local variable."
151 151
152;;; Usage 152;;; Usage
153;; 153;;
154;; Unlike other tables, an omniscent database does not need to 154;; Unlike other tables, an omniscient database does not need to
155;; be associated with a path. Use this routine to always add ourselves 155;; be associated with a path. Use this routine to always add ourselves
156;; to a search list. 156;; to a search list.
157(define-mode-local-override semanticdb-find-translate-path javascript-mode 157(define-mode-local-override semanticdb-find-translate-path javascript-mode
diff --git a/lisp/cedet/semantic/db-typecache.el b/lisp/cedet/semantic/db-typecache.el
index a4c4bd99f26..7d23ad17009 100644
--- a/lisp/cedet/semantic/db-typecache.el
+++ b/lisp/cedet/semantic/db-typecache.el
@@ -368,7 +368,7 @@ a master list."
368 (semanticdb-typecache-merge-streams 368 (semanticdb-typecache-merge-streams
369 incstream 369 incstream
370 ;; Getting the cache from this table will also cause this 370 ;; Getting the cache from this table will also cause this
371 ;; file to update its cache from its decendents. 371 ;; file to update its cache from its descendants.
372 ;; 372 ;;
373 ;; In theory, caches are only built for most includes 373 ;; In theory, caches are only built for most includes
374 ;; only once (in the loop before this one), so this ends 374 ;; only once (in the loop before this one), so this ends
diff --git a/lisp/cedet/semantic/db.el b/lisp/cedet/semantic/db.el
index c9013ed8c90..3d2128db29a 100644
--- a/lisp/cedet/semantic/db.el
+++ b/lisp/cedet/semantic/db.el
@@ -636,7 +636,7 @@ The file associated with OBJ does not need to be in a buffer."
636 (when (featurep 'semantic/lex-spp) 636 (when (featurep 'semantic/lex-spp)
637 (oset table lexical-table (semantic-lex-spp-save-table))) 637 (oset table lexical-table (semantic-lex-spp-save-table)))
638 638
639 ;; Incremental parser doesn't mokey around with this. 639 ;; Incremental parser doesn't monkey around with this.
640 (oset table unmatched-syntax semantic-unmatched-syntax-cache) 640 (oset table unmatched-syntax semantic-unmatched-syntax-cache)
641 641
642 ;; Synchronize the index 642 ;; Synchronize the index
diff --git a/lisp/cedet/semantic/debug.el b/lisp/cedet/semantic/debug.el
index ecab73a80dc..45b807df12b 100644
--- a/lisp/cedet/semantic/debug.el
+++ b/lisp/cedet/semantic/debug.el
@@ -519,22 +519,22 @@ down to your parser later."
519 ) 519 )
520 520
521(defmethod semantic-debug-parser-go ((parser semantic-debug-parser)) 521(defmethod semantic-debug-parser-go ((parser semantic-debug-parser))
522 "Continue executiong in this PARSER until the next breakpoint." 522 "Continue execution in this PARSER until the next breakpoint."
523 (setq semantic-debug-user-command 'go) 523 (setq semantic-debug-user-command 'go)
524 ) 524 )
525 525
526(defmethod semantic-debug-parser-fail ((parser semantic-debug-parser)) 526(defmethod semantic-debug-parser-fail ((parser semantic-debug-parser))
527 "Continue executiong in this PARSER until the next breakpoint." 527 "Continue execution in this PARSER until the next breakpoint."
528 (setq semantic-debug-user-command 'fail) 528 (setq semantic-debug-user-command 'fail)
529 ) 529 )
530 530
531(defmethod semantic-debug-parser-quit ((parser semantic-debug-parser)) 531(defmethod semantic-debug-parser-quit ((parser semantic-debug-parser))
532 "Continue executiong in this PARSER until the next breakpoint." 532 "Continue execution in this PARSER until the next breakpoint."
533 (setq semantic-debug-user-command 'quit) 533 (setq semantic-debug-user-command 'quit)
534 ) 534 )
535 535
536(defmethod semantic-debug-parser-abort ((parser semantic-debug-parser)) 536(defmethod semantic-debug-parser-abort ((parser semantic-debug-parser))
537 "Continue executiong in this PARSER until the next breakpoint." 537 "Continue execution in this PARSER until the next breakpoint."
538 (setq semantic-debug-user-command 'abort) 538 (setq semantic-debug-user-command 'abort)
539 ) 539 )
540 540
diff --git a/lisp/cedet/semantic/edit.el b/lisp/cedet/semantic/edit.el
index 4ac2733a34f..a2c8c5efd40 100644
--- a/lisp/cedet/semantic/edit.el
+++ b/lisp/cedet/semantic/edit.el
@@ -392,7 +392,7 @@ See `semantic-edits-change-leaf-tag' for details on parents."
392 ;; There are no tags left, and all tags originally 392 ;; There are no tags left, and all tags originally
393 ;; found are encompassed by the change. Setup our list 393 ;; found are encompassed by the change. Setup our list
394 ;; from the cache 394 ;; from the cache
395 (setq list-to-search semantic--buffer-cache);; We have a tag ouside the list. Check for 395 (setq list-to-search semantic--buffer-cache);; We have a tag outside the list. Check for
396 ;; We know we have a parent because it would 396 ;; We know we have a parent because it would
397 ;; completely cover the change. A tag can only 397 ;; completely cover the change. A tag can only
398 ;; do that if it is a parent after we get here. 398 ;; do that if it is a parent after we get here.
@@ -549,7 +549,7 @@ This function is for internal use by `semantic-edits-incremental-parser'."
549 ;; is not the first change for this 549 ;; is not the first change for this
550 ;; iteration, and it starts before the end 550 ;; iteration, and it starts before the end
551 ;; of current parse region, then it is 551 ;; of current parse region, then it is
552 ;; encompased within the bounds of tags 552 ;; encompassed within the bounds of tags
553 ;; modified by the previous iteration's 553 ;; modified by the previous iteration's
554 ;; change. 554 ;; change.
555 (< (semantic-overlay-start (car changes)) 555 (< (semantic-overlay-start (car changes))
@@ -649,7 +649,7 @@ This function is for internal use by `semantic-edits-incremental-parser'."
649 parent-tag (aref tmp 2)) 649 parent-tag (aref tmp 2))
650 ;; We can calculate parse begin/end by checking 650 ;; We can calculate parse begin/end by checking
651 ;; out what is in TAGS. The one near start is 651 ;; out what is in TAGS. The one near start is
652 ;; always first. Make sure the reprase includes 652 ;; always first. Make sure the reparse includes
653 ;; the `whitespace' around the snarfed tags. 653 ;; the `whitespace' around the snarfed tags.
654 ;; Since cache-list is positioned properly, use it 654 ;; Since cache-list is positioned properly, use it
655 ;; to find that boundary. 655 ;; to find that boundary.
@@ -707,7 +707,7 @@ This function is for internal use by `semantic-edits-incremental-parser'."
707 ;; since that is how the multi-tag parser works. Grab 707 ;; since that is how the multi-tag parser works. Grab
708 ;; the reparse symbol from the first of the returned tags. 708 ;; the reparse symbol from the first of the returned tags.
709 ;; 709 ;;
710 ;; Feb '06 - If repase-symbol is nil, then they are top level 710 ;; Feb '06 - If reparse-symbol is nil, then they are top level
711 ;; tags. (I'm guessing.) Is this right? 711 ;; tags. (I'm guessing.) Is this right?
712 (setq reparse-symbol 712 (setq reparse-symbol
713 (semantic--tag-get-property (car (or tags cache-list)) 713 (semantic--tag-get-property (car (or tags cache-list))
diff --git a/lisp/cedet/semantic/fw.el b/lisp/cedet/semantic/fw.el
index ca3015c5941..479044ec518 100644
--- a/lisp/cedet/semantic/fw.el
+++ b/lisp/cedet/semantic/fw.el
@@ -251,7 +251,7 @@ later installation should be done in MODE hook."
251 251
252(defmacro semantic-exit-on-input (symbol &rest forms) 252(defmacro semantic-exit-on-input (symbol &rest forms)
253 "Using SYMBOL as an argument to `throw', execute FORMS. 253 "Using SYMBOL as an argument to `throw', execute FORMS.
254If FORMS includes a call to `semantic-thow-on-input', then 254If FORMS includes a call to `semantic-throw-on-input', then
255if a user presses any key during execution, this form macro 255if a user presses any key during execution, this form macro
256will exit with the value passed to `semantic-throw-on-input'. 256will exit with the value passed to `semantic-throw-on-input'.
257If FORMS completes, then the return value is the same as `progn'." 257If FORMS completes, then the return value is the same as `progn'."
diff --git a/lisp/cedet/semantic/html.el b/lisp/cedet/semantic/html.el
index 137759d46ac..a7d150ec4a9 100644
--- a/lisp/cedet/semantic/html.el
+++ b/lisp/cedet/semantic/html.el
@@ -126,7 +126,7 @@ html parser. PNT is the new point to set."
126NAME is the name of this section. 126NAME is the name of this section.
127MEMBERS is a list of semantic tags representing the elements that make 127MEMBERS is a list of semantic tags representing the elements that make
128up this section. 128up this section.
129LEVEL is the levelling level. 129LEVEL is the leveling level.
130START and END define the location of data described by the tag." 130START and END define the location of data described by the tag."
131 (let ((anchorp (eq level 11))) 131 (let ((anchorp (eq level 11)))
132 (append (semantic-tag name 132 (append (semantic-tag name
diff --git a/lisp/cedet/semantic/idle.el b/lisp/cedet/semantic/idle.el
index b49d1db1ad5..6761a7f532b 100644
--- a/lisp/cedet/semantic/idle.el
+++ b/lisp/cedet/semantic/idle.el
@@ -245,7 +245,7 @@ And also manages services that depend on tag values."
245 ;; services. Stop on keypress. 245 ;; services. Stop on keypress.
246 246
247 ;; NOTE ON COMMENTED SAFE HERE 247 ;; NOTE ON COMMENTED SAFE HERE
248 ;; We used to not execute the services if the buffer wsa 248 ;; We used to not execute the services if the buffer was
249 ;; unparseable. We now assume that they are lexically 249 ;; unparseable. We now assume that they are lexically
250 ;; safe to do, because we have marked the buffer unparseable 250 ;; safe to do, because we have marked the buffer unparseable
251 ;; if there was a problem. 251 ;; if there was a problem.
@@ -254,11 +254,11 @@ And also manages services that depend on tag values."
254 (save-excursion 254 (save-excursion
255 (semantic-throw-on-input 'idle-queue) 255 (semantic-throw-on-input 'idle-queue)
256 (when semantic-idle-scheduler-verbose-flag 256 (when semantic-idle-scheduler-verbose-flag
257 (message "IDLE: execture service %s..." service)) 257 (message "IDLE: execute service %s..." service))
258 (semantic-safe (format "Idle Service Error %s: %%S" service) 258 (semantic-safe (format "Idle Service Error %s: %%S" service)
259 (funcall service)) 259 (funcall service))
260 (when semantic-idle-scheduler-verbose-flag 260 (when semantic-idle-scheduler-verbose-flag
261 (message "IDLE: execture service %s...done" service)) 261 (message "IDLE: execute service %s...done" service))
262 ))) 262 )))
263 ;;) 263 ;;)
264 ;; Finally loop over remaining buffers, trying to update them as 264 ;; Finally loop over remaining buffers, trying to update them as
diff --git a/lisp/cedet/semantic/imenu.el b/lisp/cedet/semantic/imenu.el
index 033c34e1b83..7566c08f13a 100644
--- a/lisp/cedet/semantic/imenu.el
+++ b/lisp/cedet/semantic/imenu.el
@@ -368,7 +368,7 @@ Optional argument PARENT is a tag parent of STREAM."
368 semantic-imenu-expandable-tag-classes) 368 semantic-imenu-expandable-tag-classes)
369 children 369 children
370 ) 370 )
371 ;; to keep an homogeneous menu organisation, type menu items 371 ;; to keep an homogeneous menu organization, type menu items
372 ;; always have a sub-menu with at least the *definition* 372 ;; always have a sub-menu with at least the *definition*
373 ;; item (even if the tag has no type components) 373 ;; item (even if the tag has no type components)
374 (progn 374 (progn
diff --git a/lisp/cedet/semantic/lex-spp.el b/lisp/cedet/semantic/lex-spp.el
index 8009a257a7b..03a3f1b0cb1 100644
--- a/lisp/cedet/semantic/lex-spp.el
+++ b/lisp/cedet/semantic/lex-spp.el
@@ -1067,7 +1067,7 @@ of type `spp-macro-undef' is to be created."
1067;; 1067;;
1068;; These analyzers help a language define how include files 1068;; These analyzers help a language define how include files
1069;; are identified. These are ONLY for languages that perform 1069;; are identified. These are ONLY for languages that perform
1070;; an actual textual includesion, and not for imports. 1070;; an actual textual inclusion, and not for imports.
1071;; 1071;;
1072;; This section is supposed to allow the macros from the headers to be 1072;; This section is supposed to allow the macros from the headers to be
1073;; added to the local dynamic macro table, but that hasn't been 1073;; added to the local dynamic macro table, but that hasn't been
diff --git a/lisp/cedet/semantic/lex.el b/lisp/cedet/semantic/lex.el
index 4da3be98f37..fca367ecb8c 100644
--- a/lisp/cedet/semantic/lex.el
+++ b/lisp/cedet/semantic/lex.el
@@ -1362,11 +1362,11 @@ Return either a paren token or a semantic list token depending on
1362 )) 1362 ))
1363 1363
1364(define-lex-simple-regex-analyzer semantic-lex-open-paren 1364(define-lex-simple-regex-analyzer semantic-lex-open-paren
1365 "Detect and create an open parenthisis token." 1365 "Detect and create an open parenthesis token."
1366 "\\s(" 'open-paren 0 (setq semantic-lex-current-depth (1+ semantic-lex-current-depth))) 1366 "\\s(" 'open-paren 0 (setq semantic-lex-current-depth (1+ semantic-lex-current-depth)))
1367 1367
1368(define-lex-simple-regex-analyzer semantic-lex-close-paren 1368(define-lex-simple-regex-analyzer semantic-lex-close-paren
1369 "Detect and create a close paren token." 1369 "Detect and create a close parenthesis token."
1370 "\\s)" 'close-paren 0 (setq semantic-lex-current-depth (1- semantic-lex-current-depth))) 1370 "\\s)" 'close-paren 0 (setq semantic-lex-current-depth (1- semantic-lex-current-depth)))
1371 1371
1372(define-lex-regex-analyzer semantic-lex-string 1372(define-lex-regex-analyzer semantic-lex-string
diff --git a/lisp/cedet/semantic/sb.el b/lisp/cedet/semantic/sb.el
index d9a3ede360d..8c3d6c17cf4 100644
--- a/lisp/cedet/semantic/sb.el
+++ b/lisp/cedet/semantic/sb.el
@@ -87,7 +87,7 @@ Restore the old current buffer when completed."
87;; @ type 87;; @ type
88;; = default value 88;; = default value
89;; 89;;
90;; +> keywrd Type 90;; +> keyword Type
91;; +> type part 91;; +> type part
92;; 92;;
93;; +> -> click to see additional information 93;; +> -> click to see additional information
diff --git a/lisp/cedet/semantic/scope.el b/lisp/cedet/semantic/scope.el
index 16deb245527..ea4903c70ea 100644
--- a/lisp/cedet/semantic/scope.el
+++ b/lisp/cedet/semantic/scope.el
@@ -303,7 +303,7 @@ are from nesting data types."
303 (miniscope (semantic-scope-cache "mini")) 303 (miniscope (semantic-scope-cache "mini"))
304 ptag) 304 ptag)
305 305
306 ;; Find the next entry in the refereneced type for 306 ;; Find the next entry in the referenced type for
307 ;; our function, and append to return list till our 307 ;; our function, and append to return list till our
308 ;; returnlist is empty. 308 ;; returnlist is empty.
309 (while snlist 309 (while snlist
diff --git a/lisp/cedet/semantic/symref/list.el b/lisp/cedet/semantic/symref/list.el
index a09928c7dfc..ce3500f83e1 100644
--- a/lisp/cedet/semantic/symref/list.el
+++ b/lisp/cedet/semantic/symref/list.el
@@ -24,7 +24,7 @@
24;; Provide a simple user facing API to finding symbol references. 24;; Provide a simple user facing API to finding symbol references.
25;; 25;;
26;; This UI is the base of some refactoring tools. For any refactor, 26;; This UI is the base of some refactoring tools. For any refactor,
27;; the user will execture [FIXME what?] `semantic-symref' in a tag. 27;; the user will execute `semantic-symref' in a tag.
28;; Once that data is collected, the output will be listed in a buffer. 28;; Once that data is collected, the output will be listed in a buffer.
29;; In the output buffer, the user can then initiate different 29;; In the output buffer, the user can then initiate different
30;; refactoring operations. 30;; refactoring operations.
@@ -103,7 +103,7 @@ Display the references in`semantic-symref-results-mode'."
103 (when (not res) (error "No references found")) 103 (when (not res) (error "No references found"))
104 (semantic-symref-result-get-tags res t) 104 (semantic-symref-result-get-tags res t)
105 (message "Gathering References...done") 105 (message "Gathering References...done")
106 ;; Build a refrences buffer. 106 ;; Build a references buffer.
107 (let ((buff (get-buffer-create 107 (let ((buff (get-buffer-create
108 (format "*Symref %s" str))) 108 (format "*Symref %s" str)))
109 ) 109 )
diff --git a/lisp/cedet/semantic/tag-file.el b/lisp/cedet/semantic/tag-file.el
index d118d9b6203..86fa382a766 100644
--- a/lisp/cedet/semantic/tag-file.el
+++ b/lisp/cedet/semantic/tag-file.el
@@ -125,7 +125,7 @@ Depends on `semantic-dependency-include-path' for searching. Always searches
125 (tag-fname nil)) 125 (tag-fname nil))
126 (cond ((semantic-tag-in-buffer-p tag) 126 (cond ((semantic-tag-in-buffer-p tag)
127 ;; If the tag has an overlay and buffer associated with it, 127 ;; If the tag has an overlay and buffer associated with it,
128 ;; switch to that buffer so that we get the right override metohds. 128 ;; switch to that buffer so that we get the right override methods.
129 (set-buffer (semantic-tag-buffer tag))) 129 (set-buffer (semantic-tag-buffer tag)))
130 ((semantic-tag-file-name tag) 130 ((semantic-tag-file-name tag)
131 ;; If it didn't have a buffer, but does have a file 131 ;; If it didn't have a buffer, but does have a file
diff --git a/lisp/cedet/semantic/tag.el b/lisp/cedet/semantic/tag.el
index cf3f5b603c8..f8538ef7901 100644
--- a/lisp/cedet/semantic/tag.el
+++ b/lisp/cedet/semantic/tag.el
@@ -919,7 +919,7 @@ That is the value of the attribute `:system-flag'."
919 "Return a filename representation of TAG. 919 "Return a filename representation of TAG.
920The default action is to return the `semantic-tag-name'. 920The default action is to return the `semantic-tag-name'.
921Some languages do not use full filenames in their include statements. 921Some languages do not use full filenames in their include statements.
922Override this method to translate the code represenation 922Override this method to translate the code representation
923into a filename. (A relative filename if necessary.) 923into a filename. (A relative filename if necessary.)
924 924
925See `semantic-dependency-tag-file' to expand an include 925See `semantic-dependency-tag-file' to expand an include
@@ -1162,7 +1162,7 @@ This function is for internal use only."
1162 (semantic-tag-components-with-overlays tag))))) 1162 (semantic-tag-components-with-overlays tag)))))
1163 1163
1164(defun semantic--tag-unlink-cache-from-buffer () 1164(defun semantic--tag-unlink-cache-from-buffer ()
1165 "Convert all tags in the current cache to use overlay proxys. 1165 "Convert all tags in the current cache to use overlay proxies.
1166This function is for internal use only." 1166This function is for internal use only."
1167 (require 'semantic) 1167 (require 'semantic)
1168 (semantic--tag-unlink-list-from-buffer 1168 (semantic--tag-unlink-list-from-buffer
diff --git a/lisp/cedet/semantic/texi.el b/lisp/cedet/semantic/texi.el
index c2f080ce75b..78d5569c2a7 100644
--- a/lisp/cedet/semantic/texi.el
+++ b/lisp/cedet/semantic/texi.el
@@ -262,7 +262,7 @@ can handle the @menu environment.")
262 (let ((parenthetical (semantic-up-context-default)) 262 (let ((parenthetical (semantic-up-context-default))
263 ) 263 )
264 (when (not parenthetical) 264 (when (not parenthetical)
265 ;; We are in parenthises. Are they the types of parens 265 ;; We are in parentheses. Are they the types of parens
266 ;; belonging to a texinfo construct? 266 ;; belonging to a texinfo construct?
267 (forward-word -1) 267 (forward-word -1)
268 (when (looking-at "@\\w+{") 268 (when (looking-at "@\\w+{")
@@ -483,7 +483,7 @@ that start with that symbol."
483;; This section provides specialized access into texinfo files. 483;; This section provides specialized access into texinfo files.
484;; Because texinfo files often directly refer to functions and programs 484;; Because texinfo files often directly refer to functions and programs
485;; it is useful to access the texinfo file from the C code for document 485;; it is useful to access the texinfo file from the C code for document
486;; maintainance. 486;; maintenance.
487(defun semantic-texi-associated-files (&optional buffer) 487(defun semantic-texi-associated-files (&optional buffer)
488 "Find texinfo files associated with BUFFER." 488 "Find texinfo files associated with BUFFER."
489 (save-excursion 489 (save-excursion
diff --git a/lisp/cedet/semantic/wisent/javat-wy.el b/lisp/cedet/semantic/wisent/javat-wy.el
index 38c19387440..4470b87a1f1 100644
--- a/lisp/cedet/semantic/wisent/javat-wy.el
+++ b/lisp/cedet/semantic/wisent/javat-wy.el
@@ -669,7 +669,7 @@ It ignores whitespaces, newlines and comments."
669 wisent-java-tags-wy--<symbol>-regexp-analyzer 669 wisent-java-tags-wy--<symbol>-regexp-analyzer
670 wisent-java-tags-wy--<punctuation>-string-analyzer 670 wisent-java-tags-wy--<punctuation>-string-analyzer
671 wisent-java-tags-wy--<block>-block-analyzer 671 wisent-java-tags-wy--<block>-block-analyzer
672 ;; In theory, unicode chars should be turned into normal chars 672 ;; In theory, Unicode chars should be turned into normal chars
673 ;; and then combined into regular ascii keywords and text. This 673 ;; and then combined into regular ascii keywords and text. This
674 ;; analyzer just keeps these things from making the lexer go boom. 674 ;; analyzer just keeps these things from making the lexer go boom.
675 wisent-java-tags-wy--<unicode>-regexp-analyzer 675 wisent-java-tags-wy--<unicode>-regexp-analyzer
diff --git a/lisp/cedet/semantic/wisent/python.el b/lisp/cedet/semantic/wisent/python.el
index 1f52e9eb3b6..c73033ce0ac 100644
--- a/lisp/cedet/semantic/wisent/python.el
+++ b/lisp/cedet/semantic/wisent/python.el
@@ -43,7 +43,7 @@
43;; The 'r' prefix means raw, i.e., normal backslash substitutions are 43;; The 'r' prefix means raw, i.e., normal backslash substitutions are
44;; to be suppressed. For example, r"01\n34" is a string with six 44;; to be suppressed. For example, r"01\n34" is a string with six
45;; characters 0, 1, \, n, 3 and 4. The 'u' prefix means the following 45;; characters 0, 1, \, n, 3 and 4. The 'u' prefix means the following
46;; string is a unicode. 46;; string is Unicode.
47(defconst wisent-python-string-re 47(defconst wisent-python-string-re
48 (concat (regexp-opt '("r" "u" "ur" "R" "U" "UR" "Ur" "uR") t) 48 (concat (regexp-opt '("r" "u" "ur" "R" "U" "UR" "Ur" "uR") t)
49 "?['\"]") 49 "?['\"]")
diff --git a/lisp/cedet/srecode/ctxt.el b/lisp/cedet/srecode/ctxt.el
index f392379347a..11d84e96f41 100644
--- a/lisp/cedet/srecode/ctxt.el
+++ b/lisp/cedet/srecode/ctxt.el
@@ -64,7 +64,7 @@ Some useful context values used by the provided srecode templates are:
64 \"comment\" - In a comment in a block of code 64 \"comment\" - In a comment in a block of code
65 -- these items show up at the end of the context list. -- 65 -- these items show up at the end of the context list. --
66 \"public\", \"protected\", \"private\" - 66 \"public\", \"protected\", \"private\" -
67 In or near a section of public/pritected/private entries. 67 In or near a section of public/protected/private entries.
68 \"code\" - In a block of code. 68 \"code\" - In a block of code.
69 \"string\" - In a string in a block of code 69 \"string\" - In a string in a block of code
70 \"comment\" - In a comment in a block of code 70 \"comment\" - In a comment in a block of code
diff --git a/lisp/cedet/srecode/dictionary.el b/lisp/cedet/srecode/dictionary.el
index 62ceff82448..1575ce7ae3b 100644
--- a/lisp/cedet/srecode/dictionary.el
+++ b/lisp/cedet/srecode/dictionary.el
@@ -437,7 +437,7 @@ The root dictionary is usually for a current or active insertion."
437;;; COMPOUND VALUE METHODS 437;;; COMPOUND VALUE METHODS
438;; 438;;
439;; Compound values must provide at least the toString method 439;; Compound values must provide at least the toString method
440;; for use in converting the compound value into sometehing insertable. 440;; for use in converting the compound value into something insertable.
441 441
442(defmethod srecode-compound-toString ((cp srecode-dictionary-compound-value) 442(defmethod srecode-compound-toString ((cp srecode-dictionary-compound-value)
443 function 443 function
diff --git a/lisp/cedet/srecode/document.el b/lisp/cedet/srecode/document.el
index caf1ddebdb2..e25905ead83 100644
--- a/lisp/cedet/srecode/document.el
+++ b/lisp/cedet/srecode/document.el
@@ -122,7 +122,7 @@ RESULT is a string."
122 ("read" . "Reads from") 122 ("read" . "Reads from")
123 ("reset" . "Resets the parameters and returns") 123 ("reset" . "Resets the parameters and returns")
124 ("scan" . "Scans the ") 124 ("scan" . "Scans the ")
125 ("setup\\|init\\(iallize\\)?" . "Initializes the ") 125 ("setup\\|init\\(ialize\\)?" . "Initializes the ")
126 ("select" . "Chooses the ") 126 ("select" . "Chooses the ")
127 ("send" . "Sends a") 127 ("send" . "Sends a")
128 ("re?c\\(v\\|ieves?\\)" . "Receives a ") 128 ("re?c\\(v\\|ieves?\\)" . "Receives a ")
@@ -698,7 +698,7 @@ allocating something based on its type."
698 (cdr (car al))))) 698 (cdr (car al)))))
699 (setq al nil))) 699 (setq al nil)))
700 (setq al (cdr al))) 700 (setq al (cdr al)))
701 ;; add tailers to names which are obviously returning something. 701 ;; add trailers to names which are obviously returning something.
702 (if tailit 702 (if tailit
703 (progn 703 (progn
704 (setq al srecode-document-autocomment-return-last-alist) 704 (setq al srecode-document-autocomment-return-last-alist)
diff --git a/lisp/cedet/srecode/find.el b/lisp/cedet/srecode/find.el
index d9765ebd449..b947c63f4dd 100644
--- a/lisp/cedet/srecode/find.el
+++ b/lisp/cedet/srecode/find.el
@@ -238,7 +238,7 @@ Optional argument HASH is the hash table to fill in."
238 (tabs (when mt (oref mt :tables))) 238 (tabs (when mt (oref mt :tables)))
239 ) 239 )
240 (while tabs 240 (while tabs
241 ;; Exclude templates for a perticular application. 241 ;; Exclude templates for a particular application.
242 (when (and (not (oref (car tabs) :application)) 242 (when (and (not (oref (car tabs) :application))
243 (srecode-template-table-in-project-p (car tabs))) 243 (srecode-template-table-in-project-p (car tabs)))
244 (maphash (lambda (key temp) 244 (maphash (lambda (key temp)
diff --git a/lisp/cedet/srecode/insert.el b/lisp/cedet/srecode/insert.el
index 9fbfc5dc042..60f277b2c9f 100644
--- a/lisp/cedet/srecode/insert.el
+++ b/lisp/cedet/srecode/insert.el
@@ -946,7 +946,7 @@ with the dictionaries found in the dictionary."
946;; It will first insert the included template, then insert the embedded 946;; It will first insert the included template, then insert the embedded
947;; template wherever the $^$ in the included template was. 947;; template wherever the $^$ in the included template was.
948;; 948;;
949;; Since it uses dual inheretance, it will magically get the end-matching 949;; Since it uses dual inheritance, it will magically get the end-matching
950;; behavior of #, with the including feature of >. 950;; behavior of #, with the including feature of >.
951;; 951;;
952(defclass srecode-template-inserter-include-wrap (srecode-template-inserter-include srecode-template-inserter-section-start) 952(defclass srecode-template-inserter-include-wrap (srecode-template-inserter-include srecode-template-inserter-section-start)
diff --git a/lisp/color.el b/lisp/color.el
index 5b67eb58a63..487e280dd59 100644
--- a/lisp/color.el
+++ b/lisp/color.el
@@ -28,7 +28,7 @@
28;; complements, and computing CIEDE2000 color distances. 28;; complements, and computing CIEDE2000 color distances.
29;; 29;;
30;; Supported color representations include RGB (red, green, blue), HSV 30;; Supported color representations include RGB (red, green, blue), HSV
31;; (hue, saturation, value), HSL (hue, saturation, luminence), sRGB, 31;; (hue, saturation, value), HSL (hue, saturation, luminance), sRGB,
32;; CIE XYZ, and CIE L*a*b* color components. 32;; CIE XYZ, and CIE L*a*b* color components.
33 33
34;;; Code: 34;;; Code:
diff --git a/lisp/comint.el b/lisp/comint.el
index f25293ff3ac..c0b02e5a230 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -1980,7 +1980,7 @@ Make backspaces delete the previous character."
1980 ;; The point should float after any insertion we do. 1980 ;; The point should float after any insertion we do.
1981 (saved-point (copy-marker (point) t))) 1981 (saved-point (copy-marker (point) t)))
1982 1982
1983 ;; We temporarly remove any buffer narrowing, in case the 1983 ;; We temporarily remove any buffer narrowing, in case the
1984 ;; process mark is outside of the restriction 1984 ;; process mark is outside of the restriction
1985 (save-restriction 1985 (save-restriction
1986 (widen) 1986 (widen)
@@ -2568,7 +2568,7 @@ This command is like `M-.' in bash."
2568 ;; First usage; initialize to a marker 2568 ;; First usage; initialize to a marker
2569 (setq comint-insert-previous-argument-last-start-pos 2569 (setq comint-insert-previous-argument-last-start-pos
2570 (make-marker))))) 2570 (make-marker)))))
2571 ;; Make sure we're not in the prompt, and add a beginning space if necess. 2571 ;; Make sure we're not in the prompt, and add a beginning space if necessary.
2572 (if (<= (point) (comint-line-beginning-position)) 2572 (if (<= (point) (comint-line-beginning-position))
2573 (comint-bol) 2573 (comint-bol)
2574 (just-one-space)) 2574 (just-one-space))
diff --git a/lisp/descr-text.el b/lisp/descr-text.el
index c175bd7c3c7..8b7fa89a19b 100644
--- a/lisp/descr-text.el
+++ b/lisp/descr-text.el
@@ -221,7 +221,7 @@ At the time of writing it is at the URL
221 file)) 221 file))
222 222
223(defun describe-char-unicode-data (char) 223(defun describe-char-unicode-data (char)
224 "Return a list of Unicode data for unicode CHAR. 224 "Return a list of Unicode data for Unicode CHAR.
225Each element is a list of a property description and the property value. 225Each element is a list of a property description and the property value.
226The list is null if CHAR isn't found in `describe-char-unicodedata-file'. 226The list is null if CHAR isn't found in `describe-char-unicodedata-file'.
227This function is semi-obsolete. Use `get-char-code-property'." 227This function is semi-obsolete. Use `get-char-code-property'."
diff --git a/lisp/dframe.el b/lisp/dframe.el
index 93d9e7948cf..b1eb2d636b9 100644
--- a/lisp/dframe.el
+++ b/lisp/dframe.el
@@ -82,7 +82,7 @@
82;; c) If successful (your -frame variable has a value), call 82;; c) If successful (your -frame variable has a value), call
83;; timer setup if applicable. 83;; timer setup if applicable.
84;; your-frame-reposition- -- Function to call from after-create-hook to 84;; your-frame-reposition- -- Function to call from after-create-hook to
85;; reposition your frame with `dframe-repsoition-frame'. 85;; reposition your frame with `dframe-reposition-frame'.
86;; your-mode -- Set up the major mode of the buffer for your app. 86;; your-mode -- Set up the major mode of the buffer for your app.
87;; Set these variables: dframe-track-mouse-function, 87;; Set these variables: dframe-track-mouse-function,
88;; dframe-help-echo-function, 88;; dframe-help-echo-function,
@@ -96,7 +96,7 @@
96;; dframe-track-mouse, dframe-help-echo-function -- 96;; dframe-track-mouse, dframe-help-echo-function --
97;; These variables need to be set to functions that display info 97;; These variables need to be set to functions that display info
98;; based on the mouse's position. 98;; based on the mouse's position.
99;; Text propert 'help-echo, set to `dframe-help-echo', which will 99;; Text property 'help-echo, set to `dframe-help-echo', which will
100;; call `dframe-help-echo-function'. 100;; call `dframe-help-echo-function'.
101;; Have a `-click' function, it can call `dframe-quick-mouse' for 101;; Have a `-click' function, it can call `dframe-quick-mouse' for
102;; positioning. If the variable `dframe-power-click' is non-nil, 102;; positioning. If the variable `dframe-power-click' is non-nil,
@@ -136,7 +136,7 @@ This is nil for terminals, since updating a frame in a terminal
136is not useful to the user.") 136is not useful to the user.")
137 137
138(defcustom dframe-update-speed 138(defcustom dframe-update-speed
139 (if (featurep 'xemacs) 2 ; 1 is too obrusive in XEmacs 139 (if (featurep 'xemacs) 2 ; 1 is too obtrusive in XEmacs
140 1) 140 1)
141 "Idle time in seconds needed before dframe will update itself. 141 "Idle time in seconds needed before dframe will update itself.
142Updates occur to allow dframe to display directory information 142Updates occur to allow dframe to display directory information
@@ -726,7 +726,7 @@ who requested the timer. NULL-ON-ERROR is ignored."
726 (if timeout 726 (if timeout
727 (add-to-list 'dframe-client-functions fn) 727 (add-to-list 'dframe-client-functions fn)
728 (setq dframe-client-functions (delete fn dframe-client-functions))) 728 (setq dframe-client-functions (delete fn dframe-client-functions)))
729 ;; Now decided what to do about the timout. 729 ;; Now decided what to do about the timeout.
730 (if (or 730 (if (or
731 ;; We have a timer, restart the timer with the new time. 731 ;; We have a timer, restart the timer with the new time.
732 timeout 732 timeout
diff --git a/lisp/dired.el b/lisp/dired.el
index e88ebc83b33..32a7f749681 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -704,7 +704,7 @@ Don't use that together with FILTER."
704 704
705(defun dired-file-name-at-point () 705(defun dired-file-name-at-point ()
706 "Try to get a file name at point in the current dired buffer. 706 "Try to get a file name at point in the current dired buffer.
707This hook is inteneded to be put in `file-name-at-point-functions'." 707This hook is intended to be put in `file-name-at-point-functions'."
708 (let ((filename (dired-get-filename nil t))) 708 (let ((filename (dired-get-filename nil t)))
709 (when filename 709 (when filename
710 (if (file-directory-p filename) 710 (if (file-directory-p filename)
diff --git a/lisp/electric.el b/lisp/electric.el
index 69acb773648..657b577bb1e 100644
--- a/lisp/electric.el
+++ b/lisp/electric.el
@@ -260,15 +260,23 @@ reindentation is triggered whenever you insert a character listed
260in `electric-indent-chars'." 260in `electric-indent-chars'."
261 :global t 261 :global t
262 :group 'electricity 262 :group 'electricity
263 (if electric-indent-mode 263 (if (not electric-indent-mode)
264 (add-hook 'post-self-insert-hook 264 (remove-hook 'post-self-insert-hook
265 #'electric-indent-post-self-insert-function 265 #'electric-indent-post-self-insert-function)
266 ;; post-self-insert-hooks interact in non-trivial ways. 266 ;; post-self-insert-hooks interact in non-trivial ways.
267 ;; It turns out that electric-indent-mode generally works 267 ;; It turns out that electric-indent-mode generally works better if run
268 ;; better last. 268 ;; late, but still before blink-paren.
269 'append) 269 (add-hook 'post-self-insert-hook
270 (remove-hook 'post-self-insert-hook 270 #'electric-indent-post-self-insert-function
271 #'electric-indent-post-self-insert-function))) 271 'append)
272 ;; FIXME: Ugly!
273 (let ((bp (memq #'blink-paren-post-self-insert-function
274 (default-value 'post-self-insert-hook))))
275 (when (memq #'electric-indent-post-self-insert-function bp)
276 (setcar bp #'electric-indent-post-self-insert-function)
277 (setcdr bp (cons #'blink-paren-post-self-insert-function
278 (delq #'electric-indent-post-self-insert-function
279 (cdr bp))))))))
272 280
273;; Electric pairing. 281;; Electric pairing.
274 282
diff --git a/lisp/emacs-lisp/advice.el b/lisp/emacs-lisp/advice.el
index 8527bc9e640..976848e155d 100644
--- a/lisp/emacs-lisp/advice.el
+++ b/lisp/emacs-lisp/advice.el
@@ -1608,7 +1608,7 @@
1608;; fii 1608;; fii
1609;; 1609;;
1610;; Now we advise `fii' to use an optional second argument that controls the 1610;; Now we advise `fii' to use an optional second argument that controls the
1611;; amount of incrementation. A list following the (optional) position 1611;; amount of incrementing. A list following the (optional) position
1612;; argument of the advice will be interpreted as an argument list 1612;; argument of the advice will be interpreted as an argument list
1613;; specification. This means you cannot specify an empty argument list, and 1613;; specification. This means you cannot specify an empty argument list, and
1614;; why would you want to anyway? 1614;; why would you want to anyway?
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el
index b3ac23b2b76..df98271832a 100644
--- a/lisp/emacs-lisp/autoload.el
+++ b/lisp/emacs-lisp/autoload.el
@@ -512,15 +512,7 @@ Return non-nil if and only if FILE adds no autoloads to OUTFILE
512 512
513 (when output-start 513 (when output-start
514 (let ((secondary-autoloads-file-buf 514 (let ((secondary-autoloads-file-buf
515 (if (local-variable-p 'generated-autoload-file) 515 (if otherbuf (current-buffer))))
516 (current-buffer))))
517 ;; Ignore a buffer-local setting if it points to the
518 ;; global value. Otherwise we end up writing a mix of md5s
519 ;; and time-stamps to the global file. (Bug#10049)
520 (and secondary-autoloads-file-buf
521 outfile
522 (not otherbuf)
523 (setq secondary-autoloads-file-buf nil))
524 (with-current-buffer (marker-buffer output-start) 516 (with-current-buffer (marker-buffer output-start)
525 (save-excursion 517 (save-excursion
526 ;; Insert the section-header line which lists the file name 518 ;; Insert the section-header line which lists the file name
diff --git a/lisp/emacs-lisp/avl-tree.el b/lisp/emacs-lisp/avl-tree.el
index e8b7a1f9a8b..9ecd4e12020 100644
--- a/lisp/emacs-lisp/avl-tree.el
+++ b/lisp/emacs-lisp/avl-tree.el
@@ -206,7 +206,7 @@ Return t if the height of the tree has shrunk."
206 206
207Return cons cell (SHRUNK . DATA), where SHRUNK is t if the 207Return cons cell (SHRUNK . DATA), where SHRUNK is t if the
208height of the tree has shrunk and nil otherwise, and DATA is 208height of the tree has shrunk and nil otherwise, and DATA is
209the releted data." 209the related data."
210 (let ((br (avl-tree--node-branch root branch))) 210 (let ((br (avl-tree--node-branch root branch)))
211 (cond 211 (cond
212 ;; DATA not in tree. 212 ;; DATA not in tree.
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 096e91ea4fb..3d593570c4e 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -359,10 +359,12 @@ else the global value will be modified."
359 "List of commands that are not meant to be called from Lisp.") 359 "List of commands that are not meant to be called from Lisp.")
360 360
361(defvar byte-compile-not-obsolete-vars nil 361(defvar byte-compile-not-obsolete-vars nil
362 "If non-nil, a list of variables that shouldn't be reported as obsolete.") 362 "List of variables that shouldn't be reported as obsolete.")
363(defvar byte-compile-global-not-obsolete-vars nil
364 "Global list of variables that shouldn't be reported as obsolete.")
363 365
364(defvar byte-compile-not-obsolete-funcs nil 366(defvar byte-compile-not-obsolete-funcs nil
365 "If non-nil, a list of functions that shouldn't be reported as obsolete.") 367 "List of functions that shouldn't be reported as obsolete.")
366 368
367(defcustom byte-compile-generate-call-tree nil 369(defcustom byte-compile-generate-call-tree nil
368 "Non-nil means collect call-graph information when compiling. 370 "Non-nil means collect call-graph information when compiling.
@@ -1113,7 +1115,7 @@ Each function's symbol gets added to `byte-compile-noruntime-functions'."
1113 (unless (and funcp (memq symbol byte-compile-not-obsolete-funcs)) 1115 (unless (and funcp (memq symbol byte-compile-not-obsolete-funcs))
1114 (byte-compile-warn "`%s' is an obsolete %s%s%s" symbol 1116 (byte-compile-warn "`%s' is an obsolete %s%s%s" symbol
1115 (if funcp "function" "variable") 1117 (if funcp "function" "variable")
1116 (if asof (concat " (as of Emacs " asof ")") "") 1118 (if asof (concat " (as of " asof ")") "")
1117 (cond ((stringp instead) 1119 (cond ((stringp instead)
1118 (concat "; " instead)) 1120 (concat "; " instead))
1119 (instead 1121 (instead
@@ -2195,7 +2197,7 @@ list that represents a doc string reference.
2195 (byte-compile-keep-pending form))))) 2197 (byte-compile-keep-pending form)))))
2196 2198
2197;; Functions and variables with doc strings must be output separately, 2199;; Functions and variables with doc strings must be output separately,
2198;; so make-docfile can recognise them. Most other things can be output 2200;; so make-docfile can recognize them. Most other things can be output
2199;; as byte-code. 2201;; as byte-code.
2200 2202
2201(put 'autoload 'byte-hunk-handler 'byte-compile-file-form-autoload) 2203(put 'autoload 'byte-hunk-handler 'byte-compile-file-form-autoload)
@@ -3030,6 +3032,7 @@ That command is designed for interactive use only" fn))
3030 ((let ((od (get var 'byte-obsolete-variable))) 3032 ((let ((od (get var 'byte-obsolete-variable)))
3031 (and od 3033 (and od
3032 (not (memq var byte-compile-not-obsolete-vars)) 3034 (not (memq var byte-compile-not-obsolete-vars))
3035 (not (memq var byte-compile-global-not-obsolete-vars))
3033 (or (case (nth 1 od) 3036 (or (case (nth 1 od)
3034 (set (not (eq access-type 'reference))) 3037 (set (not (eq access-type 'reference)))
3035 (get (eq access-type 'reference)) 3038 (get (eq access-type 'reference))
@@ -4116,7 +4119,7 @@ binding slots have been popped."
4116(byte-defop-compiler-1 make-obsolete-variable) 4119(byte-defop-compiler-1 make-obsolete-variable)
4117(defun byte-compile-make-obsolete-variable (form) 4120(defun byte-compile-make-obsolete-variable (form)
4118 (when (eq 'quote (car-safe (nth 1 form))) 4121 (when (eq 'quote (car-safe (nth 1 form)))
4119 (push (nth 1 (nth 1 form)) byte-compile-not-obsolete-vars)) 4122 (push (nth 1 (nth 1 form)) byte-compile-global-not-obsolete-vars))
4120 (byte-compile-normal-call form)) 4123 (byte-compile-normal-call form))
4121 4124
4122(defun byte-compile-defvar (form) 4125(defun byte-compile-defvar (form)
diff --git a/lisp/emacs-lisp/chart.el b/lisp/emacs-lisp/chart.el
index 75e7d62f395..e9f2ec54601 100644
--- a/lisp/emacs-lisp/chart.el
+++ b/lisp/emacs-lisp/chart.el
@@ -169,7 +169,7 @@ Make sure the width/height is correct."
169 :initform t) 169 :initform t)
170 (name-face :initarg :name-face 170 (name-face :initarg :name-face
171 :initform 'bold) 171 :initform 'bold)
172 (labels-face :initarg :lables-face 172 (labels-face :initarg :labels-face
173 :initform 'italic) 173 :initform 'italic)
174 (chart :initarg :chart 174 (chart :initarg :chart
175 :initform nil) 175 :initform nil)
diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el
index c9e32023187..9b708d4bbd2 100644
--- a/lisp/emacs-lisp/checkdoc.el
+++ b/lisp/emacs-lisp/checkdoc.el
@@ -2118,7 +2118,7 @@ before using the Ispell engine on it."
2118 ;; Find out how we spell-check this word. 2118 ;; Find out how we spell-check this word.
2119 (if (or 2119 (if (or
2120 ;; All caps w/ option th, or s tacked on the end 2120 ;; All caps w/ option th, or s tacked on the end
2121 ;; for pluralization or numberthness. 2121 ;; for pluralization or number.
2122 (string-match "^[A-Z][A-Z]+\\(s\\|th\\)?$" word) 2122 (string-match "^[A-Z][A-Z]+\\(s\\|th\\)?$" word)
2123 (looking-at "}") ; a keymap expression 2123 (looking-at "}") ; a keymap expression
2124 ) 2124 )
diff --git a/lisp/emacs-lisp/cl-indent.el b/lisp/emacs-lisp/cl-indent.el
index 287bb531538..81af2030ebe 100644
--- a/lisp/emacs-lisp/cl-indent.el
+++ b/lisp/emacs-lisp/cl-indent.el
@@ -159,12 +159,16 @@ is set to `defun'.")
159 (current-column)))) 159 (current-column))))
160 (goto-char indent-point) 160 (goto-char indent-point)
161 (beginning-of-line) 161 (beginning-of-line)
162 (cond ((not (extended-loop-p (elt state 1))) 162 (list
163 (+ loop-indentation lisp-simple-loop-indentation)) 163 (cond ((not (extended-loop-p (elt state 1)))
164 ((looking-at "^\\s-*\\(:?\\sw+\\|;\\)") 164 (+ loop-indentation lisp-simple-loop-indentation))
165 (+ loop-indentation lisp-loop-keyword-indentation)) 165 ((looking-at "^\\s-*\\(:?\\sw+\\|;\\)")
166 (t 166 (+ loop-indentation lisp-loop-keyword-indentation))
167 (+ loop-indentation lisp-loop-forms-indentation))))) 167 (t
168 (+ loop-indentation lisp-loop-forms-indentation)))
169 ;; Tell the caller that the next line needs recomputation, even
170 ;; though it doesn't start a sexp.
171 loop-indentation)))
168 172
169 173
170;; Cf (info "(elisp)Specification List") 174;; Cf (info "(elisp)Specification List")
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index 176b906632c..86c7e59fd07 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -1285,7 +1285,7 @@ expressions; a `progn' form will be returned enclosing these forms."
1285 ;; Wrap a form, usually a defining form, but any evaluated one. 1285 ;; Wrap a form, usually a defining form, but any evaluated one.
1286 ;; If speclist is non-nil, this is being called by edebug-defining-form. 1286 ;; If speclist is non-nil, this is being called by edebug-defining-form.
1287 ;; Otherwise it is being called from edebug-read-and-maybe-wrap-form1. 1287 ;; Otherwise it is being called from edebug-read-and-maybe-wrap-form1.
1288 ;; This is a hack, but I havent figured out a simpler way yet. 1288 ;; This is a hack, but I haven't figured out a simpler way yet.
1289 (let* ((form-data-entry (edebug-get-form-data-entry form-begin form-end)) 1289 (let* ((form-data-entry (edebug-get-form-data-entry form-begin form-end))
1290 ;; Set this marker before parsing. 1290 ;; Set this marker before parsing.
1291 (edebug-form-begin-marker 1291 (edebug-form-begin-marker
diff --git a/lisp/emacs-lisp/eieio-base.el b/lisp/emacs-lisp/eieio-base.el
index df57148962f..278dff0f085 100644
--- a/lisp/emacs-lisp/eieio-base.el
+++ b/lisp/emacs-lisp/eieio-base.el
@@ -178,7 +178,7 @@ only one object ever exists."
178;; calculate path names relative to a given instance. This will 178;; calculate path names relative to a given instance. This will
179;; make the saved object location independent by converting all file 179;; make the saved object location independent by converting all file
180;; references to be relative to the directory the object is saved to. 180;; references to be relative to the directory the object is saved to.
181;; You must call `eieio-peristent-path-relative' on each file name 181;; You must call `eieio-persistent-path-relative' on each file name
182;; saved in your object. 182;; saved in your object.
183(defclass eieio-persistent () 183(defclass eieio-persistent ()
184 ((file :initarg :file 184 ((file :initarg :file
diff --git a/lisp/emacs-lisp/elint.el b/lisp/emacs-lisp/elint.el
index 0b8aa034500..ba04a27021e 100644
--- a/lisp/emacs-lisp/elint.el
+++ b/lisp/emacs-lisp/elint.el
@@ -296,7 +296,7 @@ If necessary, this first calls `elint-initialize'."
296 (elint-display-log) 296 (elint-display-log)
297 (elint-set-mode-line t) 297 (elint-set-mode-line t)
298 (mapc 'elint-top-form (elint-update-env)) 298 (mapc 'elint-top-form (elint-update-env))
299 ;; Tell the user we're finished. This is terribly klugy: we set 299 ;; Tell the user we're finished. This is terribly kludgy: we set
300 ;; elint-top-form-logged so elint-log-message doesn't print the 300 ;; elint-top-form-logged so elint-log-message doesn't print the
301 ;; ** top form ** header... 301 ;; ** top form ** header...
302 (elint-set-mode-line) 302 (elint-set-mode-line)
@@ -335,7 +335,7 @@ Will be local in linted buffers.")
335Is measured in buffer-modified-ticks and is local in linted buffers.") 335Is measured in buffer-modified-ticks and is local in linted buffers.")
336 336
337;; This is a minor optimization. It is local to every buffer, and so 337;; This is a minor optimization. It is local to every buffer, and so
338;; does not prevent recursive requirs. It does not list the requires 338;; does not prevent recursive requires. It does not list the requires
339;; of requires. 339;; of requires.
340(defvar elint-features nil 340(defvar elint-features nil
341 "List of all libraries this buffer has required, or that have been provided.") 341 "List of all libraries this buffer has required, or that have been provided.")
diff --git a/lisp/emacs-lisp/ert.el b/lisp/emacs-lisp/ert.el
index 8b64cd84bb1..820519e92d8 100644
--- a/lisp/emacs-lisp/ert.el
+++ b/lisp/emacs-lisp/ert.el
@@ -392,7 +392,7 @@ DATA is displayed to the user and should state the reason of the failure."
392 ;; compiling doesn't depend on cl and thus doesn't need an 392 ;; compiling doesn't depend on cl and thus doesn't need an
393 ;; environment arg for `macroexpand'. 393 ;; environment arg for `macroexpand'.
394 (if (fboundp 'cl-macroexpand) 394 (if (fboundp 'cl-macroexpand)
395 ;; Suppress warning about run-time call to cl funtion: we 395 ;; Suppress warning about run-time call to cl function: we
396 ;; only call it if it's fboundp. 396 ;; only call it if it's fboundp.
397 (with-no-warnings 397 (with-no-warnings
398 (cl-macroexpand form (and (boundp 'cl-macro-environment) 398 (cl-macroexpand form (and (boundp 'cl-macro-environment)
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 9408c0a3c9d..f9e7fe44824 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -769,7 +769,7 @@ this command arranges for all errors to enter the debugger."
769Reset the `defvar' and `defcustom' variables to the initial value. 769Reset the `defvar' and `defcustom' variables to the initial value.
770Reinitialize the face according to the `defface' specification." 770Reinitialize the face according to the `defface' specification."
771 ;; The code in edebug-defun should be consistent with this, but not 771 ;; The code in edebug-defun should be consistent with this, but not
772 ;; the same, since this gets a macroexpended form. 772 ;; the same, since this gets a macroexpanded form.
773 (cond ((not (listp form)) 773 (cond ((not (listp form))
774 form) 774 form)
775 ((and (eq (car form) 'defvar) 775 ((and (eq (car form) 'defvar)
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 0bd37ce1d49..8417aa8d380 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -277,7 +277,7 @@ contrast, `package-user-dir' contains packages for personal use."
277 :version "24.1") 277 :version "24.1")
278 278
279;; The value is precomputed in finder-inf.el, but don't load that 279;; The value is precomputed in finder-inf.el, but don't load that
280;; until it's needed (i.e. when `package-intialize' is called). 280;; until it's needed (i.e. when `package-initialize' is called).
281(defvar package--builtins nil 281(defvar package--builtins nil
282 "Alist of built-in packages. 282 "Alist of built-in packages.
283The actual value is initialized by loading the library 283The actual value is initialized by loading the library
diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el
index 265328631e9..d43ba6c0d3e 100644
--- a/lisp/emacs-lisp/smie.el
+++ b/lisp/emacs-lisp/smie.el
@@ -69,13 +69,23 @@
69;; (exp ("IF" exp "ELSE" exp "END") ("CASE" cases "END")) 69;; (exp ("IF" exp "ELSE" exp "END") ("CASE" cases "END"))
70;; (cases (cases "ELSE" insts) ...) 70;; (cases (cases "ELSE" insts) ...)
71;; The IF-rule implies ELSE=END and the CASE-rule implies ELSE>END. 71;; The IF-rule implies ELSE=END and the CASE-rule implies ELSE>END.
72;; FIXME: we could try to resolve such conflicts automatically by changing 72;; This can be resolved simply with:
73;; the way BNF rules such as the IF-rule is handled. I.e. rather than 73;; (exp ("IF" expelseexp "END") ("CASE" cases "END"))
74;; IF=ELSE and ELSE=END, we could turn them into IF<ELSE and ELSE>END 74;; (expelseexp (exp) (exp "ELSE" exp))
75;; and IF=END, 75;; (cases (cases "ELSE" insts) ...)
76;; - Another source of conflict is when a terminator/separator is used to
77;; terminate elements at different levels, as in:
78;; (decls ("VAR" vars) (decls "," decls))
79;; (vars (id) (vars "," vars))
80;; often these can be resolved by making the lexer distinguish the two
81;; kinds of commas, e.g. based on the following token.
76 82
77;; TODO & BUGS: 83;; TODO & BUGS:
78;; 84;;
85;; - We could try to resolve conflicts such as the IFexpELSEexpEND -vs-
86;; CASE(casesELSEexp)END automatically by changing the way BNF rules such as
87;; the IF-rule is handled. I.e. rather than IF=ELSE and ELSE=END, we could
88;; turn them into IF<ELSE and ELSE>END and IF=END.
79;; - Using the structural information SMIE gives us, it should be possible to 89;; - Using the structural information SMIE gives us, it should be possible to
80;; implement a `smie-align' command that would automatically figure out what 90;; implement a `smie-align' command that would automatically figure out what
81;; there is to align and how to do it (something like: align the token of 91;; there is to align and how to do it (something like: align the token of
@@ -107,6 +117,10 @@
107 117
108;;; Code: 118;;; Code:
109 119
120;; FIXME:
121;; - smie-indent-comment doesn't interact well with mis-indented lines (where
122;; the indent rules don't do what the user wants). Not sure what to do.
123
110(eval-when-compile (require 'cl)) 124(eval-when-compile (require 'cl))
111 125
112(defgroup smie nil 126(defgroup smie nil
@@ -138,6 +152,8 @@
138;; turns them into a levels table, which is what's used by the rest of 152;; turns them into a levels table, which is what's used by the rest of
139;; the SMIE code. 153;; the SMIE code.
140 154
155(defvar smie-warning-count 0)
156
141(defun smie-set-prec2tab (table x y val &optional override) 157(defun smie-set-prec2tab (table x y val &optional override)
142 (assert (and x y)) 158 (assert (and x y))
143 (let* ((key (cons x y)) 159 (let* ((key (cons x y))
@@ -149,7 +165,8 @@
149 ;; be able to distinguish the two cases so that overrides 165 ;; be able to distinguish the two cases so that overrides
150 ;; don't hide real conflicts. 166 ;; don't hide real conflicts.
151 (puthash key (gethash key override) table) 167 (puthash key (gethash key override) table)
152 (display-warning 'smie (format "Conflict: %s %s/%s %s" x old val y))) 168 (display-warning 'smie (format "Conflict: %s %s/%s %s" x old val y))
169 (incf smie-warning-count))
153 (puthash key val table)))) 170 (puthash key val table))))
154 171
155(put 'smie-precs->prec2 'pure t) 172(put 'smie-precs->prec2 'pure t)
@@ -193,21 +210,54 @@ one of those elements share the same precedence level and associativity."
193 prec2))) 210 prec2)))
194 211
195(put 'smie-bnf->prec2 'pure t) 212(put 'smie-bnf->prec2 'pure t)
196(defun smie-bnf->prec2 (bnf &rest precs) 213(defun smie-bnf->prec2 (bnf &rest resolvers)
214 "Convert the BNF grammar into a prec2 table.
215BNF is a list of nonterminal definitions of the form:
216 \(NONTERM RHS1 RHS2 ...)
217where each RHS is a (non-empty) list of terminals (aka tokens) or non-terminals.
218Not all grammars are accepted:
219- an RHS cannot be an empty list (this is not needed, since SMIE allows all
220 non-terminals to match the empty string anyway).
221- an RHS cannot have 2 consecutive non-terminals: between each non-terminal
222 needs to be a terminal (aka token). This is a fundamental limitation of
223 the parsing technology used (operator precedence grammar).
224Additionally, conflicts can occur:
225- The returned prec2 table holds constraints between pairs of
226 token, and for any given pair only one constraint can be
227 present, either: T1 < T2, T1 = T2, or T1 > T2.
228- A token can either be an `opener' (something similar to an open-paren),
229 a `closer' (like a close-paren), or `neither' of the two (e.g. an infix
230 operator, or an inner token like \"else\").
231Conflicts can be resolved via RESOLVERS, which is a list of elements that can
232be either:
233- a precs table (see `smie-precs->prec2') to resolve conflicting constraints,
234- a constraint (T1 REL T2) where REL is one of = < or >."
197 ;; FIXME: Add repetition operator like (repeat <separator> <elems>). 235 ;; FIXME: Add repetition operator like (repeat <separator> <elems>).
198 ;; Maybe also add (or <elem1> <elem2>...) for things like 236 ;; Maybe also add (or <elem1> <elem2>...) for things like
199 ;; (exp (exp (or "+" "*" "=" ..) exp)). 237 ;; (exp (exp (or "+" "*" "=" ..) exp)).
200 ;; Basically, make it EBNF (except for the specification of a separator in 238 ;; Basically, make it EBNF (except for the specification of a separator in
201 ;; the repetition, maybe). 239 ;; the repetition, maybe).
202 (let ((nts (mapcar 'car bnf)) ;Non-terminals 240 (let* ((nts (mapcar 'car bnf)) ;Non-terminals.
203 (first-ops-table ()) 241 (first-ops-table ())
204 (last-ops-table ()) 242 (last-ops-table ())
205 (first-nts-table ()) 243 (first-nts-table ())
206 (last-nts-table ()) 244 (last-nts-table ())
207 (prec2 (make-hash-table :test 'equal)) 245 (smie-warning-count 0)
208 (override (apply 'smie-merge-prec2s 246 (prec2 (make-hash-table :test 'equal))
209 (mapcar 'smie-precs->prec2 precs))) 247 (override
210 again) 248 (let ((precs ())
249 (over (make-hash-table :test 'equal)))
250 (dolist (resolver resolvers)
251 (cond
252 ((and (= 3 (length resolver)) (memq (nth 1 resolver) '(= < >)))
253 (smie-set-prec2tab
254 over (nth 0 resolver) (nth 2 resolver) (nth 1 resolver)))
255 ((memq (caar resolver) '(left right assoc nonassoc))
256 (push resolver precs))
257 (t (error "Unknown resolver %S" resolver))))
258 (apply #'smie-merge-prec2s over
259 (mapcar 'smie-precs->prec2 precs))))
260 again)
211 (dolist (rules bnf) 261 (dolist (rules bnf)
212 (let ((nt (car rules)) 262 (let ((nt (car rules))
213 (last-ops ()) 263 (last-ops ())
@@ -287,8 +337,11 @@ one of those elements share the same precedence level and associativity."
287 (setq rhs (cdr rhs))))) 337 (setq rhs (cdr rhs)))))
288 ;; Keep track of which tokens are openers/closer, so they can get a nil 338 ;; Keep track of which tokens are openers/closer, so they can get a nil
289 ;; precedence in smie-prec2->grammar. 339 ;; precedence in smie-prec2->grammar.
290 (puthash :smie-open/close-alist (smie-bnf-classify bnf) prec2) 340 (puthash :smie-open/close-alist (smie-bnf--classify bnf) prec2)
291 (puthash :smie-closer-alist (smie-bnf-closer-alist bnf) prec2) 341 (puthash :smie-closer-alist (smie-bnf--closer-alist bnf) prec2)
342 (if (> smie-warning-count 0)
343 (display-warning
344 'smie (format "Total: %d warnings" smie-warning-count)))
292 prec2)) 345 prec2))
293 346
294;; (defun smie-prec2-closer-alist (prec2 include-inners) 347;; (defun smie-prec2-closer-alist (prec2 include-inners)
@@ -343,7 +396,7 @@ one of those elements share the same precedence level and associativity."
343;; openers) 396;; openers)
344;; alist))) 397;; alist)))
345 398
346(defun smie-bnf-closer-alist (bnf &optional no-inners) 399(defun smie-bnf--closer-alist (bnf &optional no-inners)
347 ;; We can also build this closer-alist table from a prec2 table, 400 ;; We can also build this closer-alist table from a prec2 table,
348 ;; but it takes more work, and the order is unpredictable, which 401 ;; but it takes more work, and the order is unpredictable, which
349 ;; is a problem for smie-close-block. 402 ;; is a problem for smie-close-block.
@@ -371,37 +424,33 @@ from the table, e.g. the table will not include things like (\"if\" . \"else\").
371 (pushnew (cons (car rhs) term) alist :test #'equal))))))) 424 (pushnew (cons (car rhs) term) alist :test #'equal)))))))
372 (nreverse alist))) 425 (nreverse alist)))
373 426
374(defun smie-bnf-classify (bnf) 427(defun smie-bnf--set-class (table token class)
428 (let ((prev (gethash token table class)))
429 (puthash token
430 (cond
431 ((eq prev class) class)
432 ((eq prev t) t) ;Non-terminal.
433 (t (display-warning
434 'smie
435 (format "token %s is both %s and %s" token class prev))
436 'neither))
437 table)))
438
439(defun smie-bnf--classify (bnf)
375 "Return a table classifying terminals. 440 "Return a table classifying terminals.
376Each terminal can either be an `opener', a `closer', or neither." 441Each terminal can either be an `opener', a `closer', or `neither'."
377 (let ((table (make-hash-table :test #'equal)) 442 (let ((table (make-hash-table :test #'equal))
378 (nts (mapcar #'car bnf))
379 (alist '())) 443 (alist '()))
380 (dolist (category bnf) 444 (dolist (category bnf)
381 (puthash (car category) 'neither table) ;Remove non-terminals. 445 (puthash (car category) t table)) ;Mark non-terminals.
446 (dolist (category bnf)
382 (dolist (rhs (cdr category)) 447 (dolist (rhs (cdr category))
383 (if (null (cdr rhs)) 448 (if (null (cdr rhs))
384 (puthash (pop rhs) 'neither table) 449 (smie-bnf--set-class table (pop rhs) 'neither)
385 (let ((first (pop rhs))) 450 (smie-bnf--set-class table (pop rhs) 'opener)
386 (puthash first 451 (while (cdr rhs) ;Remove internals.
387 (if (memq (gethash first table) '(nil opener)) 452 (smie-bnf--set-class table (pop rhs) 'neither))
388 'opener 453 (smie-bnf--set-class table (pop rhs) 'closer))))
389 (unless (member first nts)
390 (error "SMIE: token %s is both opener and non-opener"
391 first))
392 'neither)
393 table))
394 (while (cdr rhs)
395 (puthash (pop rhs) 'neither table)) ;Remove internals.
396 (let ((last (pop rhs)))
397 (puthash last
398 (if (memq (gethash last table) '(nil closer))
399 'closer
400 (unless (member last nts)
401 (error "SMIE: token %s is both closer and non-closer"
402 last))
403 'neither)
404 table)))))
405 (maphash (lambda (tok v) 454 (maphash (lambda (tok v)
406 (when (memq v '(closer opener)) 455 (when (memq v '(closer opener))
407 (push (cons tok v) alist))) 456 (push (cons tok v) alist)))
@@ -692,8 +741,22 @@ Possible return values:
692 ;; Keep looking as long as we haven't matched the 741 ;; Keep looking as long as we haven't matched the
693 ;; topmost operator. 742 ;; topmost operator.
694 (levels 743 (levels
695 (if (numberp (funcall op-forw toklevels)) 744 (cond
696 (push toklevels levels))) 745 ((numberp (funcall op-forw toklevels))
746 (push toklevels levels))
747 ;; FIXME: For some languages, we can express the grammar
748 ;; OK, but next-sexp doesn't stop where we'd want it to.
749 ;; E.g. in SML, we'd want to stop right in front of
750 ;; "local" if we're scanning (both forward and backward)
751 ;; from a "val/fun/..." at the same level.
752 ;; Same for Pascal/Modula2's "procedure" w.r.t
753 ;; "type/var/const".
754 ;;
755 ;; ((and (functionp (cadr (funcall op-forw toklevels)))
756 ;; (funcall (cadr (funcall op-forw toklevels))
757 ;; levels))
758 ;; (setq levels nil))
759 ))
697 ;; We matched the topmost operator. If the new operator 760 ;; We matched the topmost operator. If the new operator
698 ;; is the last in the corresponding BNF rule, we're done. 761 ;; is the last in the corresponding BNF rule, we're done.
699 ((not (numberp (funcall op-forw toklevels))) 762 ((not (numberp (funcall op-forw toklevels)))
@@ -980,7 +1043,7 @@ function should return nil for arguments it does not expect.
980 1043
981OFFSET can be: 1044OFFSET can be:
982nil use the default indentation rule. 1045nil use the default indentation rule.
983`(column . COLUMN) indent to column COLUMN. 1046\(column . COLUMN) indent to column COLUMN.
984NUMBER offset by NUMBER, relative to a base token 1047NUMBER offset by NUMBER, relative to a base token
985 which is the current token for :after and 1048 which is the current token for :after and
986 its parent for :before. 1049 its parent for :before.
diff --git a/lisp/emacs-lisp/tabulated-list.el b/lisp/emacs-lisp/tabulated-list.el
index e16970c6804..32ec2bbf7ee 100644
--- a/lisp/emacs-lisp/tabulated-list.el
+++ b/lisp/emacs-lisp/tabulated-list.el
@@ -146,7 +146,7 @@ If ADVANCE is non-nil, move forward by one line afterwards."
146(defvar tabulated-list-glyphless-char-display 146(defvar tabulated-list-glyphless-char-display
147 (let ((table (make-char-table 'glyphless-char-display nil))) 147 (let ((table (make-char-table 'glyphless-char-display nil)))
148 (set-char-table-parent table glyphless-char-display) 148 (set-char-table-parent table glyphless-char-display)
149 ;; Some text terminals can't display the unicode arrows; be safe. 149 ;; Some text terminals can't display the Unicode arrows; be safe.
150 (aset table 9650 (cons nil "^")) 150 (aset table 9650 (cons nil "^"))
151 (aset table 9660 (cons nil "v")) 151 (aset table 9660 (cons nil "v"))
152 table) 152 table)
diff --git a/lisp/emulation/cua-rect.el b/lisp/emulation/cua-rect.el
index 5d90ac694a4..76cab39f5b2 100644
--- a/lisp/emulation/cua-rect.el
+++ b/lisp/emulation/cua-rect.el
@@ -741,7 +741,7 @@ If command is repeated at same position, delete the rectangle."
741 ;; We try to reuse overlays where possible because this is more efficient 741 ;; We try to reuse overlays where possible because this is more efficient
742 ;; and results in less flicker. 742 ;; and results in less flicker.
743 ;; If cua--rectangle-virtual-edges is nil and the buffer contains tabs or short lines, 743 ;; If cua--rectangle-virtual-edges is nil and the buffer contains tabs or short lines,
744 ;; the higlighted region may not be perfectly rectangular. 744 ;; the highlighted region may not be perfectly rectangular.
745 (let ((deactivate-mark deactivate-mark) 745 (let ((deactivate-mark deactivate-mark)
746 (old cua--rectangle-overlays) 746 (old cua--rectangle-overlays)
747 (new nil) 747 (new nil)
diff --git a/lisp/emulation/edt-mapper.el b/lisp/emulation/edt-mapper.el
index 99d204692fa..e58656d7941 100644
--- a/lisp/emulation/edt-mapper.el
+++ b/lisp/emulation/edt-mapper.el
@@ -151,7 +151,7 @@
151;;; Logic in simple.el maps some of these unassigned function keys to 151;;; Logic in simple.el maps some of these unassigned function keys to
152;;; ordinary typing keys. Where this is the case, a call to 152;;; ordinary typing keys. Where this is the case, a call to
153;;; read-key-sequence, below, does not return the name of the function 153;;; read-key-sequence, below, does not return the name of the function
154;;; key pressd by the user but, instead, it returns the name of the 154;;; key pressed by the user but, instead, it returns the name of the
155;;; key to which it has been mapped. It needs to know the name of the 155;;; key to which it has been mapped. It needs to know the name of the
156;;; key pressed by the user. As a workaround, we assign a function to 156;;; key pressed by the user. As a workaround, we assign a function to
157;;; each of the unassigned function keys of interest, here. These 157;;; each of the unassigned function keys of interest, here. These
diff --git a/lisp/emulation/viper-ex.el b/lisp/emulation/viper-ex.el
index 93bf8251ce1..3e21e77a77b 100644
--- a/lisp/emulation/viper-ex.el
+++ b/lisp/emulation/viper-ex.el
@@ -259,7 +259,7 @@
259(defvar ex-addresses nil) 259(defvar ex-addresses nil)
260 260
261;; This flag is supposed to be set only by `#', `print', and `list', 261;; This flag is supposed to be set only by `#', `print', and `list',
262;; none of which is implemented. So, it and the pices of the code it 262;; none of which is implemented. So, it and the pieces of the code it
263;; controls are dead weight. We keep it just in case this might be 263;; controls are dead weight. We keep it just in case this might be
264;; needed in the future. 264;; needed in the future.
265(defvar ex-flag nil) 265(defvar ex-flag nil)
diff --git a/lisp/emulation/viper-init.el b/lisp/emulation/viper-init.el
index c069c387003..b0c37ed28e4 100644
--- a/lisp/emulation/viper-init.el
+++ b/lisp/emulation/viper-init.el
@@ -205,7 +205,7 @@ designated buffers.")
205 205
206(viper-deflocalvar viper-insert-diehard-minor-mode nil 206(viper-deflocalvar viper-insert-diehard-minor-mode nil
207 "Minor mode that simulates Vi very closely. 207 "Minor mode that simulates Vi very closely.
208Not recommened, except for the novice user.") 208Not recommended, except for the novice user.")
209 209
210(viper-deflocalvar viper-insert-kbd-minor-mode nil 210(viper-deflocalvar viper-insert-kbd-minor-mode nil
211"Minor mode for Ex command macros Insert state. 211"Minor mode for Ex command macros Insert state.
@@ -679,7 +679,7 @@ to a new place after repeating previous Vi command."
679 :group 'viper-search) 679 :group 'viper-search)
680 680
681(defcustom viper-search-scroll-threshold 2 681(defcustom viper-search-scroll-threshold 2
682 "*If search lands within this threshnold from the window top/bottom, 682 "*If search lands within this threshold from the window top/bottom,
683the window will be scrolled up or down appropriately, to reveal context. 683the window will be scrolled up or down appropriately, to reveal context.
684If you want Viper search to behave as usual in Vi, set this variable to a 684If you want Viper search to behave as usual in Vi, set this variable to a
685negative number." 685negative number."
diff --git a/lisp/emulation/viper-mous.el b/lisp/emulation/viper-mous.el
index 778910017cd..a2e289df5e8 100644
--- a/lisp/emulation/viper-mous.el
+++ b/lisp/emulation/viper-mous.el
@@ -95,7 +95,7 @@ considered related."
95 95
96;; remembers prefix argument to pass along to commands invoked by second 96;; remembers prefix argument to pass along to commands invoked by second
97;; click. 97;; click.
98;; This is needed because in Emacs (not XEmacs), assigning to preix-arg 98;; This is needed because in Emacs (not XEmacs), assigning to prefix-arg
99;; causes Emacs to count the second click as if it was a single click 99;; causes Emacs to count the second click as if it was a single click
100(defvar viper-global-prefix-argument nil) 100(defvar viper-global-prefix-argument nil)
101 101
diff --git a/lisp/emulation/viper.el b/lisp/emulation/viper.el
index 38a881845df..b2035e8ede6 100644
--- a/lisp/emulation/viper.el
+++ b/lisp/emulation/viper.el
@@ -777,7 +777,7 @@ It also can't undo some Viper settings."
777 (viper-unbind-mouse-search-key) 777 (viper-unbind-mouse-search-key)
778 (viper-unbind-mouse-insert-key) 778 (viper-unbind-mouse-insert-key)
779 ;; In emacs, we have to advice handle-switch-frame 779 ;; In emacs, we have to advice handle-switch-frame
780 ;; This advice is undone earlier, when all advices matchine "viper-" are 780 ;; This advice is undone earlier, when all advices matching "viper-" are
781 ;; deactivated. 781 ;; deactivated.
782 (if (featurep 'xemacs) 782 (if (featurep 'xemacs)
783 (remove-hook 'mouse-leave-frame-hook 'viper-remember-current-frame)) 783 (remove-hook 'mouse-leave-frame-hook 'viper-remember-current-frame))
@@ -1050,7 +1050,7 @@ It also can't undo some Viper settings."
1050 (memq 'down (event-modifiers (aref key 1))))) 1050 (memq 'down (event-modifiers (aref key 1)))))
1051 (read-event)))))) 1051 (read-event))))))
1052 ) ; (if (featurep 'xemacs) 1052 ) ; (if (featurep 'xemacs)
1053 1053
1054 (if (featurep 'xemacs) 1054 (if (featurep 'xemacs)
1055 ;; XEmacs 1055 ;; XEmacs
1056 (defadvice describe-key-briefly 1056 (defadvice describe-key-briefly
@@ -1076,7 +1076,7 @@ It also can't undo some Viper settings."
1076 (prefix-numeric-value current-prefix-arg)) 1076 (prefix-numeric-value current-prefix-arg))
1077 1)))) 1077 1))))
1078 ) ; (if (featurep 'xemacs) 1078 ) ; (if (featurep 'xemacs)
1079 1079
1080 (defadvice find-file (before viper-add-suffix-advice activate) 1080 (defadvice find-file (before viper-add-suffix-advice activate)
1081 "Use `read-file-name' for reading arguments." 1081 "Use `read-file-name' for reading arguments."
1082 (interactive (cons (read-file-name "Find file: " nil default-directory) 1082 (interactive (cons (read-file-name "Find file: " nil default-directory)
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog
index 9a029893352..3fd2c87d59c 100644
--- a/lisp/erc/ChangeLog
+++ b/lisp/erc/ChangeLog
@@ -1,3 +1,7 @@
12011-11-20 Juanma Barranquero <lekktu@gmail.com>
2
3 * erc-log.el (erc-logging-enabled): Fix typo.
4
12011-11-14 Juanma Barranquero <lekktu@gmail.com> 52011-11-14 Juanma Barranquero <lekktu@gmail.com>
2 6
3 * erc-notify.el (erc-notify-interval, erc-cmd-NOTIFY): Fix typos. 7 * erc-notify.el (erc-notify-interval, erc-cmd-NOTIFY): Fix typos.
diff --git a/lisp/erc/ChangeLog.01 b/lisp/erc/ChangeLog.01
index 1e90b33a23b..2b29acf5a25 100644
--- a/lisp/erc/ChangeLog.01
+++ b/lisp/erc/ChangeLog.01
@@ -93,7 +93,7 @@
93 93
94 * erc.el: 94 * erc.el:
95 * erc-insert-hook: Changed strategy completely, no start end parameters any more. 95 * erc-insert-hook: Changed strategy completely, no start end parameters any more.
96 We narrow-to-region now, thats much cleaner. 96 We narrow-to-region now, that's much cleaner.
97 * rename erc-fill-region to erc-fill and change the autoload 97 * rename erc-fill-region to erc-fill and change the autoload
98 ** You'll probably need to restart Emacs 98 ** You'll probably need to restart Emacs
99 99
@@ -221,7 +221,7 @@
221 * Applied antifuchs/mhp patches, the latest on erc-help, unmodified 221 * Applied antifuchs/mhp patches, the latest on erc-help, unmodified
222 * New variable: erc-reuse-buffers default to t. 222 * New variable: erc-reuse-buffers default to t.
223 * Modified erc-generate-new-buffer-name to use it. it checks if server and port are the same, 223 * Modified erc-generate-new-buffer-name to use it. it checks if server and port are the same,
224 then one can assume thats the same channel/query target again. 224 then one can assume that's the same channel/query target again.
225 225
2262001-11-23 Mario Lang <mlang@delysid.org> 2262001-11-23 Mario Lang <mlang@delysid.org>
227 227
@@ -399,7 +399,7 @@
399 399
400 * erc.el: * Tijs van Bakel's work from 10th Nov. merged in 400 * erc.el: * Tijs van Bakel's work from 10th Nov. merged in
401 * My additions to that idea merged in too 401 * My additions to that idea merged in too
402 Basicly, this is a major rewrite, if you are scared and want avoid problems, 402 Basically, this is a major rewrite, if you are scared and want avoid problems,
403 stay at your current version. It seems fairly stable though. 403 stay at your current version. It seems fairly stable though.
404 That changed? erc-buffer-name handling was completely rewritten, 404 That changed? erc-buffer-name handling was completely rewritten,
405 and erc-buffer-list local variable handling removed. 405 and erc-buffer-list local variable handling removed.
@@ -415,7 +415,7 @@
415 * erc.el: only some code beautification 415 * erc.el: only some code beautification
416 416
417 * erc-imenu.el: 417 * erc-imenu.el:
418 remove add-hook call, thats done in erc.el now for autoloadability 418 remove add-hook call, that's done in erc.el now for autoloadability
419 419
420 * erc.el: * Make erc-imenu autoloadable 420 * erc.el: * Make erc-imenu autoloadable
421 421
@@ -912,7 +912,7 @@
912 fixed one occurrence of a setq with only one argument (XEmacs didn't like that) 912 fixed one occurrence of a setq with only one argument (XEmacs didn't like that)
913 913
914 * erc.el: 914 * erc.el:
915 Added erc-next-line-add-newlines customisation possibility. 915 Added erc-next-line-add-newlines customization possibility.
916 916
917 * erc.el: 917 * erc.el:
918 added erc-fill-prefix for defining your own way of filling and fixed filling somehow 918 added erc-fill-prefix for defining your own way of filling and fixed filling somehow
@@ -940,8 +940,7 @@
940 940
941 * erc.el: typo 941 * erc.el: typo
942 942
943 * erc.el: ommit 943 * erc.el: omit
944 :wq
945 944
9462001-07-06 Alex Schroeder <alex@gnu.org> 9452001-07-06 Alex Schroeder <alex@gnu.org>
947 946
diff --git a/lisp/erc/ChangeLog.02 b/lisp/erc/ChangeLog.02
index d1b05a23140..279a336f15f 100644
--- a/lisp/erc/ChangeLog.02
+++ b/lisp/erc/ChangeLog.02
@@ -343,7 +343,7 @@
3432002-12-14 Damien Elmes <erc@repose.cx> 3432002-12-14 Damien Elmes <erc@repose.cx>
344 344
345 * erc.el: 345 * erc.el:
346 last-peers: initialise to a cons. thanks to Francis Litterio 346 last-peers: initialize to a cons. thanks to Francis Litterio
347 <franl@world.std.com> for the patch 347 <franl@world.std.com> for the patch
348 348
349 * erc.el: 349 * erc.el:
@@ -2616,4 +2616,3 @@ See ChangeLog.01 for earlier changes.
2616;; Local Variables: 2616;; Local Variables:
2617;; coding: utf-8 2617;; coding: utf-8
2618;; End: 2618;; End:
2619
diff --git a/lisp/erc/ChangeLog.03 b/lisp/erc/ChangeLog.03
index 956ef5f4c66..fc7fd09e76c 100644
--- a/lisp/erc/ChangeLog.03
+++ b/lisp/erc/ChangeLog.03
@@ -838,7 +838,7 @@
838 * erc.el: 838 * erc.el:
839 erc-log-channels: removed; set the directory to start logging 839 erc-log-channels: removed; set the directory to start logging
840 (erc-directory-writeable-p): create directory if it doesn't exist, check if 840 (erc-directory-writeable-p): create directory if it doesn't exist, check if
841 it's writeable 841 it's writable
842 (erc-logging-enabled): don't reference erc-log-channels 842 (erc-logging-enabled): don't reference erc-log-channels
843 843
8442003-04-07 Damien Elmes <erc@repose.cx> 8442003-04-07 Damien Elmes <erc@repose.cx>
@@ -1425,7 +1425,7 @@
1425 reference argument directly - no string matching 1425 reference argument directly - no string matching
1426 1426
1427 * erc.el(erc-extract-command-from-line): 1427 * erc.el(erc-extract-command-from-line):
1428 hmm, thinko in the canonicalisation. should 1428 hmm, thinko in the canonicalization. should
1429 be fixed 1429 be fixed
1430 1430
14312003-01-16 Francis Litterio <franl@users.sourceforge.net> 14312003-01-16 Francis Litterio <franl@users.sourceforge.net>
@@ -1556,7 +1556,7 @@
1556 1556
1557 * erc.el: This is the "everything is suddenly broken!" release 1557 * erc.el: This is the "everything is suddenly broken!" release
1558 You know, this is CVS, you can still go back, and wait until the transition 1558 You know, this is CVS, you can still go back, and wait until the transition
1559 is finished, but here is patch one, which basicly breaks every command 1559 is finished, but here is patch one, which basically breaks every command
1560 which is typed on the prompt. 1560 which is typed on the prompt.
1561 Hit me, we can still revert, but something needs to be done about this. 1561 Hit me, we can still revert, but something needs to be done about this.
1562 * (erc-extract-command-from-line): intern-soft the function here. 1562 * (erc-extract-command-from-line): intern-soft the function here.
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index f86c9ef845a..5baa676ab39 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -1432,7 +1432,7 @@ add things to `%s' instead."
1432 (when (string= cmd "PRIVMSG") 1432 (when (string= cmd "PRIVMSG")
1433 (erc-auto-query proc parsed)))))) 1433 (erc-auto-query proc parsed))))))
1434 1434
1435;; FIXME: need clean way of specifiying extra hooks in 1435;; FIXME: need clean way of specifying extra hooks in
1436;; define-erc-response-handler. 1436;; define-erc-response-handler.
1437(add-hook 'erc-server-PRIVMSG-functions 'erc-auto-query) 1437(add-hook 'erc-server-PRIVMSG-functions 'erc-auto-query)
1438 1438
diff --git a/lisp/erc/erc-log.el b/lisp/erc/erc-log.el
index 24990e1e068..f1754afd1ac 100644
--- a/lisp/erc/erc-log.el
+++ b/lisp/erc/erc-log.el
@@ -50,7 +50,7 @@
50;; erc-log-write-after-send t 50;; erc-log-write-after-send t
51;; erc-log-write-after-insert t) 51;; erc-log-write-after-insert t)
52;; 52;;
53;; If you only want to save logs for some buffers, customise the 53;; If you only want to save logs for some buffers, customize the
54;; variable `erc-enable-logging'. 54;; variable `erc-enable-logging'.
55 55
56;; How it works: 56;; How it works:
@@ -314,7 +314,7 @@ Returns nil if `erc-server-buffer-p' returns t."
314 "Return non-nil if logging is enabled for BUFFER. 314 "Return non-nil if logging is enabled for BUFFER.
315If BUFFER is nil, the value of `current-buffer' is used. 315If BUFFER is nil, the value of `current-buffer' is used.
316Logging is enabled if `erc-log-channels-directory' is non-nil, the directory 316Logging is enabled if `erc-log-channels-directory' is non-nil, the directory
317is writeable (it will be created as necessary) and 317is writable (it will be created as necessary) and
318`erc-enable-logging' returns a non-nil value." 318`erc-enable-logging' returns a non-nil value."
319 (and erc-log-channels-directory 319 (and erc-log-channels-directory
320 (or (functionp erc-log-channels-directory) 320 (or (functionp erc-log-channels-directory)
@@ -450,4 +450,3 @@ You can save every individual message by putting this function on
450;; indent-tabs-mode: t 450;; indent-tabs-mode: t
451;; tab-width: 8 451;; tab-width: 8
452;; End: 452;; End:
453
diff --git a/lisp/erc/erc-match.el b/lisp/erc/erc-match.el
index bde51da6e3d..7e567bd1648 100644
--- a/lisp/erc/erc-match.el
+++ b/lisp/erc/erc-match.el
@@ -36,7 +36,7 @@
36(require 'erc) 36(require 'erc)
37(eval-when-compile (require 'cl)) 37(eval-when-compile (require 'cl))
38 38
39;; Customisation: 39;; Customization:
40 40
41(defgroup erc-match nil 41(defgroup erc-match nil
42 "Keyword and Friend/Foe/... recognition. 42 "Keyword and Friend/Foe/... recognition.
@@ -633,4 +633,3 @@ This function is meant to be called from `erc-text-matched-hook'."
633;; indent-tabs-mode: t 633;; indent-tabs-mode: t
634;; tab-width: 8 634;; tab-width: 8
635;; End: 635;; End:
636
diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el
index b663aeed423..e2e5fa1c4f2 100644
--- a/lisp/erc/erc-track.el
+++ b/lisp/erc/erc-track.el
@@ -1040,7 +1040,7 @@ relative to `erc-track-switch-direction'"
1040 ((oldest leastactive) 1040 ((oldest leastactive)
1041 (- (length erc-modified-channels-alist) arg)) 1041 (- (length erc-modified-channels-alist) arg))
1042 (t (1- arg)))) 1042 (t (1- arg))))
1043 ;; normalise out of range user input 1043 ;; normalize out of range user input
1044 (cond ((>= offset (length erc-modified-channels-alist)) 1044 (cond ((>= offset (length erc-modified-channels-alist))
1045 (setq offset (1- (length erc-modified-channels-alist)))) 1045 (setq offset (1- (length erc-modified-channels-alist))))
1046 ((< offset 0) 1046 ((< offset 0)
@@ -1075,4 +1075,3 @@ switch back to the last non-ERC buffer visited. Next is defined by
1075;; indent-tabs-mode: t 1075;; indent-tabs-mode: t
1076;; tab-width: 8 1076;; tab-width: 8
1077;; End: 1077;; End:
1078
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 2d8c2565f69..a218dd12555 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -1569,7 +1569,7 @@ symbol, it may have these values:
1569 ;; current ERC buffer. 1569 ;; current ERC buffer.
1570 ;; if buf-name is taken by a different connection (or by something !erc) 1570 ;; if buf-name is taken by a different connection (or by something !erc)
1571 ;; then see if "buf-name/server" meets the same criteria 1571 ;; then see if "buf-name/server" meets the same criteria
1572 (dolist (candidate (list buf-name (concat buf-name "/" server))) 1572 (dolist (candidate (list buf-name (concat buf-name "/" server)))
1573 (if (and (not buffer-name) 1573 (if (and (not buffer-name)
1574 erc-reuse-buffers 1574 erc-reuse-buffers
1575 (get-buffer candidate) 1575 (get-buffer candidate)
@@ -4001,7 +4001,7 @@ and as second argument the event parsed as a vector."
4001 (not (string-match "^\C-a\\ACTION.*\C-a$" message)))) 4001 (not (string-match "^\C-a\\ACTION.*\C-a$" message))))
4002 4002
4003(defun erc-format-privmessage (nick msg privp msgp) 4003(defun erc-format-privmessage (nick msg privp msgp)
4004 "Format a PRIVMSG in an insertible fashion." 4004 "Format a PRIVMSG in an insertable fashion."
4005 (let* ((mark-s (if msgp (if privp "*" "<") "-")) 4005 (let* ((mark-s (if msgp (if privp "*" "<") "-"))
4006 (mark-e (if msgp (if privp "*" ">") "-")) 4006 (mark-e (if msgp (if privp "*" ">") "-"))
4007 (str (format "%s%s%s %s" mark-s nick mark-e msg)) 4007 (str (format "%s%s%s %s" mark-s nick mark-e msg))
@@ -5797,7 +5797,7 @@ If it doesn't exist, create it."
5797 "Give information about the nickname at `point'. 5797 "Give information about the nickname at `point'.
5798 5798
5799If called interactively, give a human readable message in the 5799If called interactively, give a human readable message in the
5800minibuffer. If called programatically, return the corresponding 5800minibuffer. If called programmatically, return the corresponding
5801entry of `channel-members'." 5801entry of `channel-members'."
5802 (interactive) 5802 (interactive)
5803 (require 'thingatpt) 5803 (require 'thingatpt)
diff --git a/lisp/eshell/em-alias.el b/lisp/eshell/em-alias.el
index 4e1dbd41045..04ba19d407d 100644
--- a/lisp/eshell/em-alias.el
+++ b/lisp/eshell/em-alias.el
@@ -74,7 +74,7 @@
74;; session, it is likely that they are experiencing a spelling 74;; session, it is likely that they are experiencing a spelling
75;; difficulty associated with a certain command. To combat this, 75;; difficulty associated with a certain command. To combat this,
76;; Eshell will offer to automatically define an alias for that 76;; Eshell will offer to automatically define an alias for that
77;; mispelled command, once a given tolerance threshold has been 77;; misspelled command, once a given tolerance threshold has been
78;; reached. 78;; reached.
79 79
80;; Whenever the same bad command name is encountered 80;; Whenever the same bad command name is encountered
diff --git a/lisp/eshell/em-glob.el b/lisp/eshell/em-glob.el
index db9b003895f..df1f7b67e29 100644
--- a/lisp/eshell/em-glob.el
+++ b/lisp/eshell/em-glob.el
@@ -90,7 +90,7 @@ This option slows down recursive glob processing by quite a bit."
90 90
91(defcustom eshell-error-if-no-glob nil 91(defcustom eshell-error-if-no-glob nil
92 "If non-nil, it is an error for a glob pattern not to match. 92 "If non-nil, it is an error for a glob pattern not to match.
93 This mimcs the behavior of zsh if non-nil, but bash if nil." 93 This mimics the behavior of zsh if non-nil, but bash if nil."
94 :type 'boolean 94 :type 'boolean
95 :group 'eshell-glob) 95 :group 'eshell-glob)
96 96
diff --git a/lisp/eshell/em-pred.el b/lisp/eshell/em-pred.el
index 2308e08ed62..e45b36e3511 100644
--- a/lisp/eshell/em-pred.el
+++ b/lisp/eshell/em-pred.el
@@ -173,7 +173,7 @@ OWNERSHIP:
173 173
174FILE ATTRIBUTES: 174FILE ATTRIBUTES:
175 l[+-]N +/-/= N links 175 l[+-]N +/-/= N links
176 a[Mwhms][+-](N|'FILE') access time +/-/= N mnths/weeks/hours/mins/secs 176 a[Mwhms][+-](N|'FILE') access time +/-/= N months/weeks/hours/mins/secs
177 (days if unspecified) if FILE specified, 177 (days if unspecified) if FILE specified,
178 use as comparison basis; so a+'file.c' 178 use as comparison basis; so a+'file.c'
179 shows files accessed before file.c was 179 shows files accessed before file.c was
diff --git a/lisp/eshell/em-term.el b/lisp/eshell/em-term.el
index 7d5fbbeabeb..bd575a0f809 100644
--- a/lisp/eshell/em-term.el
+++ b/lisp/eshell/em-term.el
@@ -24,7 +24,7 @@
24;; At the moment, eshell is stream-based in its interactive input and 24;; At the moment, eshell is stream-based in its interactive input and
25;; output. This means that full-screen commands, such as "vi" or 25;; output. This means that full-screen commands, such as "vi" or
26;; "lynx", will not display correctly. These are therefore thought of 26;; "lynx", will not display correctly. These are therefore thought of
27;; as "visual" programs. In order to run these progrem under Emacs, 27;; as "visual" programs. In order to run these programs under Emacs,
28;; Eshell uses the term.el package, and invokes them in a separate 28;; Eshell uses the term.el package, and invokes them in a separate
29;; buffer, giving the illusion that Eshell itself is allowing these 29;; buffer, giving the illusion that Eshell itself is allowing these
30;; visual processes to execute. 30;; visual processes to execute.
diff --git a/lisp/eshell/esh-cmd.el b/lisp/eshell/esh-cmd.el
index a7c92084bf9..7b90797eb43 100644
--- a/lisp/eshell/esh-cmd.el
+++ b/lisp/eshell/esh-cmd.el
@@ -480,25 +480,20 @@ implemented via rewriting, rather than as a function."
480 (let ((body (car (last terms)))) 480 (let ((body (car (last terms))))
481 (setcdr (last terms 2) nil) 481 (setcdr (last terms 2) nil)
482 `(let ((for-items 482 `(let ((for-items
483 ;; Apparently, eshell-do-eval only works for immutable 483 (append
484 ;; let-bindings, i.e. we cannot use `setq' on `for-items'. 484 ,@(mapcar
485 ;; Instead we store the list in the car of a cons-cell (which 485 (lambda (elem)
486 ;; acts as a ref-cell) so we can setcar instead of setq. 486 (if (listp elem)
487 (list 487 elem
488 (append 488 `(list ,elem)))
489 ,@(mapcar 489 (cdr (cddr terms)))))
490 (lambda (elem)
491 (if (listp elem)
492 elem
493 `(list ,elem)))
494 (cdr (cddr terms))))))
495 (eshell-command-body '(nil)) 490 (eshell-command-body '(nil))
496 (eshell-test-body '(nil))) 491 (eshell-test-body '(nil)))
497 (while (consp (car for-items)) 492 (while (consp for-items)
498 (let ((,(intern (cadr terms)) (caar for-items))) 493 (let ((,(intern (cadr terms)) (car for-items)))
499 (eshell-protect 494 (eshell-protect
500 ,(eshell-invokify-arg body t))) 495 ,(eshell-invokify-arg body t)))
501 (setcar for-items (cdar for-items))) 496 (setq for-items (cdr for-items)))
502 (eshell-close-handles 497 (eshell-close-handles
503 eshell-last-command-status 498 eshell-last-command-status
504 (list 'quote eshell-last-command-result)))))) 499 (list 'quote eshell-last-command-result))))))
@@ -766,9 +761,8 @@ This macro calls itself recursively, with NOTFIRST non-nil."
766 `(eshell-copy-handles 761 `(eshell-copy-handles
767 (progn 762 (progn
768 ,(when (cdr pipeline) 763 ,(when (cdr pipeline)
769 `(let (nextproc) 764 `(let ((nextproc
770 (setq nextproc 765 (eshell-do-pipelines (quote ,(cdr pipeline)) t)))
771 (eshell-do-pipelines (quote ,(cdr pipeline)) t))
772 (eshell-set-output-handle ,eshell-output-handle 766 (eshell-set-output-handle ,eshell-output-handle
773 'append nextproc) 767 'append nextproc)
774 (eshell-set-output-handle ,eshell-error-handle 768 (eshell-set-output-handle ,eshell-error-handle
@@ -796,10 +790,9 @@ This macro calls itself recursively, with NOTFIRST non-nil."
796Output of each command is passed as input to the next one in the pipeline. 790Output of each command is passed as input to the next one in the pipeline.
797This is used on systems where `start-process' is not supported." 791This is used on systems where `start-process' is not supported."
798 (when (setq pipeline (cadr pipeline)) 792 (when (setq pipeline (cadr pipeline))
799 `(let (result) 793 `(progn
800 ,(when (cdr pipeline) 794 ,(when (cdr pipeline)
801 `(let (output-marker) 795 `(let ((output-marker ,(point-marker)))
802 (setq output-marker ,(point-marker))
803 (eshell-set-output-handle ,eshell-output-handle 796 (eshell-set-output-handle ,eshell-output-handle
804 'append output-marker) 797 'append output-marker)
805 (eshell-set-output-handle ,eshell-error-handle 798 (eshell-set-output-handle ,eshell-error-handle
@@ -811,21 +804,21 @@ This is used on systems where `start-process' is not supported."
811 (when (memq (car head) eshell-deferrable-commands) 804 (when (memq (car head) eshell-deferrable-commands)
812 (ignore 805 (ignore
813 (setcar head 806 (setcar head
814 (intern-soft 807 (intern-soft
815 (concat (symbol-name (car head)) "*")))))) 808 (concat (symbol-name (car head)) "*"))))))
816 ;; The last process in the pipe should get its handles 809 ;; The last process in the pipe should get its handles
817 ;; redirected as we found them before running the pipe. 810 ;; redirected as we found them before running the pipe.
818 ,(if (null (cdr pipeline)) 811 ,(if (null (cdr pipeline))
819 `(progn 812 `(progn
820 (setq eshell-current-handles tail-handles) 813 (setq eshell-current-handles tail-handles)
821 (setq eshell-in-pipeline-p nil))) 814 (setq eshell-in-pipeline-p nil)))
822 (setq result ,(car pipeline)) 815 (let ((result ,(car pipeline)))
823 ;; tailproc gets the result of the last successful process in 816 ;; tailproc gets the result of the last successful process in
824 ;; the pipeline. 817 ;; the pipeline.
825 (setq tailproc (or result tailproc)) 818 (setq tailproc (or result tailproc))
826 ,(if (cdr pipeline) 819 ,(if (cdr pipeline)
827 `(eshell-do-pipelines-synchronously (quote ,(cdr pipeline)))) 820 `(eshell-do-pipelines-synchronously (quote ,(cdr pipeline))))
828 result))) 821 result))))
829 822
830(defalias 'eshell-process-identity 'identity) 823(defalias 'eshell-process-identity 'identity)
831 824
@@ -890,8 +883,7 @@ Returns a string comprising the output from the command."
890 (eshell-print "errors\n")) 883 (eshell-print "errors\n"))
891 (if eshell-debug-command 884 (if eshell-debug-command
892 (eshell-print "commands\n"))) 885 (eshell-print "commands\n")))
893 ((or (string= (car args) "-h") 886 ((member (car args) '("-h" "--help"))
894 (string= (car args) "--help"))
895 (eshell-print "usage: eshell-debug [kinds] 887 (eshell-print "usage: eshell-debug [kinds]
896 888
897This command is used to aid in debugging problems related to Eshell 889This command is used to aid in debugging problems related to Eshell
@@ -1091,6 +1083,11 @@ be finished later after the completion of an asynchronous subprocess."
1091 (eshell-manipulate "handling special form" 1083 (eshell-manipulate "handling special form"
1092 (setcar args `(eshell-do-eval ',(car args) ,synchronous-p)))) 1084 (setcar args `(eshell-do-eval ',(car args) ,synchronous-p))))
1093 (eval form)) 1085 (eval form))
1086 ((eq (car form) 'setq)
1087 (if (cddr args) (error "Unsupported form (setq X1 E1 X2 E2..)"))
1088 (eshell-manipulate "evaluating arguments to setq"
1089 (setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p)))
1090 (list 'quote (eval form)))
1094 (t 1091 (t
1095 (if (and args (not (memq (car form) '(run-hooks)))) 1092 (if (and args (not (memq (car form) '(run-hooks))))
1096 (eshell-manipulate 1093 (eshell-manipulate
@@ -1127,11 +1124,12 @@ be finished later after the completion of an asynchronous subprocess."
1127 ;; Thus, aliases can even contain references to asynchronous 1124 ;; Thus, aliases can even contain references to asynchronous
1128 ;; sub-commands, and things will still work out as they 1125 ;; sub-commands, and things will still work out as they
1129 ;; should. 1126 ;; should.
1130 (let (result new-form) 1127 (let* (result
1131 (if (setq new-form 1128 (new-form
1132 (catch 'eshell-replace-command 1129 (catch 'eshell-replace-command
1133 (ignore 1130 (ignore
1134 (setq result (eval form))))) 1131 (setq result (eval form))))))
1132 (if new-form
1135 (progn 1133 (progn
1136 (eshell-manipulate "substituting replacement form" 1134 (eshell-manipulate "substituting replacement form"
1137 (setcar form (car new-form)) 1135 (setcar form (car new-form))
@@ -1247,25 +1245,23 @@ or an external command."
1247PRINTER and ERRPRINT are functions to use for printing regular 1245PRINTER and ERRPRINT are functions to use for printing regular
1248messages, and errors. FORM-P should be non-nil if FUNC-OR-FORM 1246messages, and errors. FORM-P should be non-nil if FUNC-OR-FORM
1249represent a lisp form; ARGS will be ignored in that case." 1247represent a lisp form; ARGS will be ignored in that case."
1250 (let (result) 1248 (eshell-condition-case err
1251 (eshell-condition-case err 1249 (let ((result
1252 (progn 1250 (save-current-buffer
1253 (setq result 1251 (if form-p
1254 (save-current-buffer 1252 (eval func-or-form)
1255 (if form-p 1253 (apply func-or-form args)))))
1256 (eval func-or-form) 1254 (and result (funcall printer result))
1257 (apply func-or-form args)))) 1255 result)
1258 (and result (funcall printer result)) 1256 (error
1259 result) 1257 (let ((msg (error-message-string err)))
1260 (error 1258 (if (and (not form-p)
1261 (let ((msg (error-message-string err))) 1259 (string-match "^Wrong number of arguments" msg)
1262 (if (and (not form-p) 1260 (fboundp 'eldoc-get-fnsym-args-string))
1263 (string-match "^Wrong number of arguments" msg) 1261 (let ((func-doc (eldoc-get-fnsym-args-string func-or-form)))
1264 (fboundp 'eldoc-get-fnsym-args-string)) 1262 (setq msg (format "usage: %s" func-doc))))
1265 (let ((func-doc (eldoc-get-fnsym-args-string func-or-form))) 1263 (funcall errprint msg))
1266 (setq msg (format "usage: %s" func-doc)))) 1264 nil)))
1267 (funcall errprint msg))
1268 nil))))
1269 1265
1270(defsubst eshell-apply* (printer errprint func args) 1266(defsubst eshell-apply* (printer errprint func args)
1271 "Call FUNC, with ARGS, trapping errors and return them as output. 1267 "Call FUNC, with ARGS, trapping errors and return them as output.
diff --git a/lisp/eshell/esh-util.el b/lisp/eshell/esh-util.el
index 424d246a2b6..b508fd5352f 100644
--- a/lisp/eshell/esh-util.el
+++ b/lisp/eshell/esh-util.el
@@ -81,7 +81,7 @@ Setting this to nil is offered as an aid to debugging only."
81Numeric form is tested using the regular expression 81Numeric form is tested using the regular expression
82`eshell-number-regexp'. 82`eshell-number-regexp'.
83 83
84NOTE: If you find that numeric conversions are intefering with the 84NOTE: If you find that numeric conversions are interfering with the
85specification of filenames (for example, in calling `find-file', or 85specification of filenames (for example, in calling `find-file', or
86some other Lisp function that deals with files, not numbers), add the 86some other Lisp function that deals with files, not numbers), add the
87following in your .emacs file: 87following in your .emacs file:
@@ -140,14 +140,13 @@ function `string-to-number'."
140(defmacro eshell-condition-case (tag form &rest handlers) 140(defmacro eshell-condition-case (tag form &rest handlers)
141 "If `eshell-handle-errors' is non-nil, this is `condition-case'. 141 "If `eshell-handle-errors' is non-nil, this is `condition-case'.
142Otherwise, evaluates FORM with no error handling." 142Otherwise, evaluates FORM with no error handling."
143 (declare (indent 2))
143 (if eshell-handle-errors 144 (if eshell-handle-errors
144 `(condition-case ,tag 145 `(condition-case ,tag
145 ,form 146 ,form
146 ,@handlers) 147 ,@handlers)
147 form)) 148 form))
148 149
149(put 'eshell-condition-case 'lisp-indent-function 2)
150
151(defun eshell-find-delimiter 150(defun eshell-find-delimiter
152 (open close &optional bound reverse-p backslash-p) 151 (open close &optional bound reverse-p backslash-p)
153 "From point, find the CLOSE delimiter corresponding to OPEN. 152 "From point, find the CLOSE delimiter corresponding to OPEN.
@@ -275,14 +274,14 @@ Prepend remote identification of `default-directory', if any."
275 text)) 274 text))
276 275
277(defmacro eshell-for (for-var for-list &rest forms) 276(defmacro eshell-for (for-var for-list &rest forms)
278 "Iterate through a list" 277 "Iterate through a list."
278 (declare (indent 2))
279 `(let ((list-iter ,for-list)) 279 `(let ((list-iter ,for-list))
280 (while list-iter 280 (while list-iter
281 (let ((,for-var (car list-iter))) 281 (let ((,for-var (car list-iter)))
282 ,@forms) 282 ,@forms)
283 (setq list-iter (cdr list-iter))))) 283 (setq list-iter (cdr list-iter)))))
284 284
285(put 'eshell-for 'lisp-indent-function 2)
286 285
287(make-obsolete 'eshell-for 'dolist "24.1") 286(make-obsolete 'eshell-for 'dolist "24.1")
288 287
diff --git a/lisp/ezimage.el b/lisp/ezimage.el
index a3562944039..d0bbdfb2f8a 100644
--- a/lisp/ezimage.el
+++ b/lisp/ezimage.el
@@ -239,7 +239,7 @@ IMAGESPEC is the image data, and DOCSTRING is documentation for the image."
239 ("[ ]" . ezimage-page) 239 ("[ ]" . ezimage-page)
240 ("{+}" . ezimage-box-plus) 240 ("{+}" . ezimage-box-plus)
241 ("{-}" . ezimage-box-minus) 241 ("{-}" . ezimage-box-minus)
242 ;; Some vaguely representitive entries 242 ;; Some vaguely representative entries
243 ("*" . ezimage-checkout) 243 ("*" . ezimage-checkout)
244 ("#" . ezimage-object) 244 ("#" . ezimage-object)
245 ("!" . ezimage-object-out-of-date) 245 ("!" . ezimage-object-out-of-date)
diff --git a/lisp/faces.el b/lisp/faces.el
index 7bc103ca699..f10c9f87f25 100644
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -1925,7 +1925,7 @@ frame parameters in PARAMETERS."
1925 (progn 1925 (progn
1926 ;; Initialize faces from face spec and custom theme. 1926 ;; Initialize faces from face spec and custom theme.
1927 (face-spec-recalc face frame) 1927 (face-spec-recalc face frame)
1928 ;; X resouces for the default face are applied during 1928 ;; X resources for the default face are applied during
1929 ;; `x-create-frame'. 1929 ;; `x-create-frame'.
1930 (and (not (eq face 'default)) window-system-p 1930 (and (not (eq face 'default)) window-system-p
1931 (make-face-x-resource-internal face frame)) 1931 (make-face-x-resource-internal face frame))
diff --git a/lisp/files-x.el b/lisp/files-x.el
index a6320b32e50..ca847097184 100644
--- a/lisp/files-x.el
+++ b/lisp/files-x.el
@@ -149,7 +149,7 @@ from the Local Variables list ignoring the input argument VALUE."
149 149
150 (goto-char (point-max)) 150 (goto-char (point-max))
151 (let ((comment-style 'plain) 151 (let ((comment-style 'plain)
152 (comment-start (or comment-start ";;; "))) 152 (comment-start (or comment-start ";; ")))
153 (comment-region 153 (comment-region
154 (prog1 (setq beg (point)) 154 (prog1 (setq beg (point))
155 (insert "\nLocal Variables:\nEnd:\n")) 155 (insert "\nLocal Variables:\nEnd:\n"))
diff --git a/lisp/files.el b/lisp/files.el
index 6cf94a89c92..0f167ce3ffa 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -5790,7 +5790,7 @@ returns nil."
5790 5790
5791 ;; vc dired listings provide the state or blanks between file 5791 ;; vc dired listings provide the state or blanks between file
5792 ;; permissions and date. The state is always surrounded by 5792 ;; permissions and date. The state is always surrounded by
5793 ;; parantheses: 5793 ;; parentheses:
5794 ;; -rw-r--r-- (modified) 2005-10-22 21:25 files.el 5794 ;; -rw-r--r-- (modified) 2005-10-22 21:25 files.el
5795 ;; This is not supported yet. 5795 ;; This is not supported yet.
5796 (purecopy (concat "\\([0-9][BkKMGTPEZY]? " iso 5796 (purecopy (concat "\\([0-9][BkKMGTPEZY]? " iso
diff --git a/lisp/foldout.el b/lisp/foldout.el
index b0eaf753d60..4f93b4205b2 100644
--- a/lisp/foldout.el
+++ b/lisp/foldout.el
@@ -111,9 +111,9 @@
111;; setup a lot easier. 111;; setup a lot easier.
112;; 112;;
113;; folding.el by Jamie Lokier <u90jl@ecs.ox.ac.uk> supports folding by 113;; folding.el by Jamie Lokier <u90jl@ecs.ox.ac.uk> supports folding by
114;; recognising special marker text in you file. 114;; recognizing special marker text in you file.
115;; 115;;
116;; c-outline.el (by me) provides outline-mode support to recognise `C' 116;; c-outline.el (by me) provides outline-mode support to recognize `C'
117;; statements as outline headings, so with foldout you can have a folding `C' 117;; statements as outline headings, so with foldout you can have a folding `C'
118;; code editor without having to put in start- and end-of-fold markers. This 118;; code editor without having to put in start- and end-of-fold markers. This
119;; is a real winner! 119;; is a real winner!
diff --git a/lisp/follow.el b/lisp/follow.el
index 92efc8d8cfa..72a091e8ce2 100644
--- a/lisp/follow.el
+++ b/lisp/follow.el
@@ -87,7 +87,7 @@
87;; to turn it off. 87;; to turn it off.
88 88
89 89
90;; The command `follow-delete-other-windows-and-split' maximises the 90;; The command `follow-delete-other-windows-and-split' maximizes the
91;; visible area of the current buffer. 91;; visible area of the current buffer.
92;; 92;;
93;; I recommend adding it, and `follow-mode', to hotkeys in the global 93;; I recommend adding it, and `follow-mode', to hotkeys in the global
@@ -154,7 +154,7 @@
154;; follow-delete-other-windows-and-split C-c . 1 154;; follow-delete-other-windows-and-split C-c . 1
155;; Maximize the visible area of the current buffer, 155;; Maximize the visible area of the current buffer,
156;; and enter Follow mode. This is a very convenient 156;; and enter Follow mode. This is a very convenient
157;; way to start Follow mode, hence we recomend that 157;; way to start Follow mode, hence we recommend that
158;; this command be added to the global keymap. 158;; this command be added to the global keymap.
159;; 159;;
160;; follow-recenter C-c . C-l 160;; follow-recenter C-c . C-l
@@ -562,7 +562,7 @@ Keys specific to Follow mode:
562;; 562;;
563;; Almost like the real thing, except when the cursor ends up outside 563;; Almost like the real thing, except when the cursor ends up outside
564;; the top or bottom... In our case however, we end up outside the 564;; the top or bottom... In our case however, we end up outside the
565;; window and hence we are recenterd. Should we let `recenter' handle 565;; window and hence we are recentered. Should we let `recenter' handle
566;; the point position we would never leave the selected window. To do 566;; the point position we would never leave the selected window. To do
567;; it ourselves we would need to do our own redisplay, which is easier 567;; it ourselves we would need to do our own redisplay, which is easier
568;; said than done. (Why didn't I do a real display abstraction from 568;; said than done. (Why didn't I do a real display abstraction from
diff --git a/lisp/font-core.el b/lisp/font-core.el
index 0db17efd7b7..a5de29520f7 100644
--- a/lisp/font-core.el
+++ b/lisp/font-core.el
@@ -210,7 +210,7 @@ this function onto `change-major-mode-hook'."
210;; A few people have hassled in the past for a way to make it easier to turn on 210;; A few people have hassled in the past for a way to make it easier to turn on
211;; Font Lock mode, without the user needing to know for which modes s/he has to 211;; Font Lock mode, without the user needing to know for which modes s/he has to
212;; turn it on, perhaps the same way hilit19.el/hl319.el does. I've always 212;; turn it on, perhaps the same way hilit19.el/hl319.el does. I've always
213;; balked at that way, as I see it as just re-moulding the same problem in 213;; balked at that way, as I see it as just re-molding the same problem in
214;; another form. That is; some person would still have to keep track of which 214;; another form. That is; some person would still have to keep track of which
215;; modes (which may not even be distributed with Emacs) support Font Lock mode. 215;; modes (which may not even be distributed with Emacs) support Font Lock mode.
216;; The list would always be out of date. And that person might have to be me. 216;; The list would always be out of date. And that person might have to be me.
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index d410b8eb51a..c319974fb41 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -981,7 +981,7 @@ The value of this variable is used when Font Lock mode is turned on."
981;; rules one way and C code another. Neat! 981;; rules one way and C code another. Neat!
982;; 982;;
983;; A further reason to use the fontification indirection feature is when the 983;; A further reason to use the fontification indirection feature is when the
984;; default syntactual fontification, or the default fontification in general, 984;; default syntactic fontification, or the default fontification in general,
985;; is not flexible enough for a particular major mode. For example, perhaps 985;; is not flexible enough for a particular major mode. For example, perhaps
986;; comments are just too hairy for `font-lock-fontify-syntactically-region' to 986;; comments are just too hairy for `font-lock-fontify-syntactically-region' to
987;; cope with. You need to write your own version of that function, e.g., 987;; cope with. You need to write your own version of that function, e.g.,
diff --git a/lisp/forms.el b/lisp/forms.el
index ef6d9b023b4..215f3ce88f7 100644
--- a/lisp/forms.el
+++ b/lisp/forms.el
@@ -1295,7 +1295,7 @@ Commands: Equivalent keys in read-only mode:
1295 ) 1295 )
1296 1296
1297(defun forms--mode-menu-ro (map) 1297(defun forms--mode-menu-ro (map)
1298;;; Menu initialisation 1298;;; Menu initialization
1299; (define-key map [menu-bar] (make-sparse-keymap)) 1299; (define-key map [menu-bar] (make-sparse-keymap))
1300 (define-key map [menu-bar forms] 1300 (define-key map [menu-bar forms]
1301 (cons "Forms" (make-sparse-keymap "Forms"))) 1301 (cons "Forms" (make-sparse-keymap "Forms")))
@@ -1341,7 +1341,7 @@ Commands: Equivalent keys in read-only mode:
1341 (put 'forms-delete-record 'menu-enable '(not forms-read-only)) 1341 (put 'forms-delete-record 'menu-enable '(not forms-read-only))
1342) 1342)
1343(defun forms--mode-menu-edit (map) 1343(defun forms--mode-menu-edit (map)
1344;;; Menu initialisation 1344;;; Menu initialization
1345; (define-key map [menu-bar] (make-sparse-keymap)) 1345; (define-key map [menu-bar] (make-sparse-keymap))
1346 (define-key map [menu-bar forms] 1346 (define-key map [menu-bar forms]
1347 (cons "Forms" (make-sparse-keymap "Forms"))) 1347 (cons "Forms" (make-sparse-keymap "Forms")))
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 5e25d01da71..889a5230d15 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,24 @@
12011-11-22 Katsumi Yamaoka <yamaoka@jpl.org>
2
3 * gnus-art.el (gnus-article-setup-buffer): Decode group name used for
4 article buffers' name.
5
62011-11-22 Lars Magne Ingebrigtsen <larsi@gnus.org>
7
8 * shr.el (shr-table-horizontal-line): Revert infinite loops introduced
9 by Paul Eggert's spellfixes two days ago.
10
112011-11-21 Lars Magne Ingebrigtsen <larsi@gnus.org>
12
13 * mm-view.el (mm-display-inline-fontify): Make the font-lock variables
14 buffer-local instead of binding them to avoid warnings. Also demote
15 errors (bug#10063).
16 (font-lock-mode-hook): Shut up byte compiler.
17
182011-11-20 Juanma Barranquero <lekktu@gmail.com>
19
20 * mm-util.el (mm-charset-after): Fix typo.
21
12011-11-16 Juanma Barranquero <lekktu@gmail.com> 222011-11-16 Juanma Barranquero <lekktu@gmail.com>
2 23
3 * gnus-sum.el (gnus-summary-make-menu-bar): 24 * gnus-sum.el (gnus-summary-make-menu-bar):
@@ -332,7 +353,7 @@
332 decoding nnimap groups. 353 decoding nnimap groups.
333 354
334 * gnus.el (gnus-variable-list): Don't save `gnus-format-specs' in the 355 * gnus.el (gnus-variable-list): Don't save `gnus-format-specs' in the
335 newsrc file. It doesn't seem like an important optimisation any more. 356 newsrc file. It doesn't seem like an important optimization any more.
336 357
3372011-09-10 Dave Abrahams <dave@boostpro.com> (tiny change) 3582011-09-10 Dave Abrahams <dave@boostpro.com> (tiny change)
338 359
@@ -985,7 +1006,7 @@
985 * nnimap.el (nnimap-process-expiry-targets): Say what target we're 1006 * nnimap.el (nnimap-process-expiry-targets): Say what target we're
986 expiring articles to. 1007 expiring articles to.
987 1008
988 * mm-util.el (mm-charset-to-coding-system): Recognise all ANSI.x3.4 1009 * mm-util.el (mm-charset-to-coding-system): Recognize all ANSI.x3.4
989 variations as ASCII (bug#5458). 1010 variations as ASCII (bug#5458).
990 1011
9912011-06-30 Katsumi Yamaoka <yamaoka@jpl.org> 10122011-06-30 Katsumi Yamaoka <yamaoka@jpl.org>
@@ -2849,7 +2870,7 @@
2849 2870
28502011-01-24 Lars Ingebrigtsen <larsi@gnus.org> 28712011-01-24 Lars Ingebrigtsen <larsi@gnus.org>
2851 2872
2852 * shr.el (shr-expand-newlines): Proof of concept implemantation of boxy 2873 * shr.el (shr-expand-newlines): Proof of concept implementation of boxy
2853 backgrounds. 2874 backgrounds.
2854 (shr-expand-newlines): Switch to using overlays to enable kill'n'yank 2875 (shr-expand-newlines): Switch to using overlays to enable kill'n'yank
2855 in a more sensible manner. 2876 in a more sensible manner.
@@ -4504,7 +4525,7 @@
4504 4525
45052010-10-30 Lars Magne Ingebrigtsen <larsi@gnus.org> 45262010-10-30 Lars Magne Ingebrigtsen <larsi@gnus.org>
4506 4527
4507 * shr.el (shr-tag-span): Drop colorisation of regions since we don't 4528 * shr.el (shr-tag-span): Drop colorization of regions since we don't
4508 control the background color. 4529 control the background color.
4509 (shr-tag-img): Ignore very small web bug type images. 4530 (shr-tag-img): Ignore very small web bug type images.
4510 (shr-put-image): Add help-echo alt texts to the images. 4531 (shr-put-image): Add help-echo alt texts to the images.
@@ -11860,7 +11881,7 @@
11860 11881
11861 * message.el (message-font-lock-keywords): Use message-header-xheader 11882 * message.el (message-font-lock-keywords): Use message-header-xheader
11862 face for "X-Foo", its apparent intended purpose. Move "X-" pattern 11883 face for "X-Foo", its apparent intended purpose. Move "X-" pattern
11863 ahead of the anything pattern, to get it recognised. 11884 ahead of the anything pattern, to get it recognized.
11864 11885
118652007-05-12 Michaël Cadilhac <michael@cadilhac.name> 118862007-05-12 Michaël Cadilhac <michael@cadilhac.name>
11866 11887
@@ -14905,7 +14926,7 @@
14905 (nnweb-request-list): Don't list bogus groups. There can only be one. 14926 (nnweb-request-list): Don't list bogus groups. There can only be one.
14906 (nnweb-request-create-group): Don't use ARGS. 14927 (nnweb-request-create-group): Don't use ARGS.
14907 (nnweb-possibly-change-server, nnweb-request-group): Remove some 14928 (nnweb-possibly-change-server, nnweb-request-group): Remove some
14908 initialisations. Let nnoo do the work. 14929 initializations. Let nnoo do the work.
14909 14930
149102006-01-31 Katsumi Yamaoka <yamaoka@jpl.org> 149312006-01-31 Katsumi Yamaoka <yamaoka@jpl.org>
14911 14932
@@ -19398,7 +19419,7 @@
19398 * gnus-group.el (gnus-group-get-new-news-this-group): 19419 * gnus-group.el (gnus-group-get-new-news-this-group):
19399 Don't update info that isn't there. 19420 Don't update info that isn't there.
19400 19421
194012004-06-29 Ilya N. Golubev <gin@mo.msk.ru>. 194222004-06-29 Ilya N. Golubev <gin@mo.msk.ru>
19402 19423
19403 * mm-util.el (mm-mime-mule-charset-alist): Add the windows-1251 19424 * mm-util.el (mm-mime-mule-charset-alist): Add the windows-1251
19404 entry. 19425 entry.
diff --git a/lisp/gnus/ChangeLog.2 b/lisp/gnus/ChangeLog.2
index e52f898b184..e519ce340c2 100644
--- a/lisp/gnus/ChangeLog.2
+++ b/lisp/gnus/ChangeLog.2
@@ -2111,7 +2111,7 @@
2111 * gnus-srvr.el (gnus-browse-foreign-server): Parse garbage NNTP 2111 * gnus-srvr.el (gnus-browse-foreign-server): Parse garbage NNTP
2112 groups correctly. 2112 groups correctly.
2113 2113
21142003-06-06 Benjamin Rutt <rutt+news@cis.ohio-state.edu>. 21142003-06-06 Benjamin Rutt <rutt+news@cis.ohio-state.edu>
2115 2115
2116 * message.el (message-fetch-field): Augment documentation to state 2116 * message.el (message-fetch-field): Augment documentation to state
2117 the narrowed-to-headers restriction. 2117 the narrowed-to-headers restriction.
@@ -6816,7 +6816,7 @@
6816 downloaded variable if we're in an uncovered group. 6816 downloaded variable if we're in an uncovered group.
6817 6817
6818 * gnus-agent.el (gnus-agent-downloaded-article-face): Change the 6818 * gnus-agent.el (gnus-agent-downloaded-article-face): Change the
6819 font to soemthing less noticeable. 6819 font to something less noticeable.
6820 (gnus-agent-group-covered-p): New function. 6820 (gnus-agent-group-covered-p): New function.
6821 6821
68222002-12-09 ShengHuo ZHU <zsh@cs.rochester.edu> 68222002-12-09 ShengHuo ZHU <zsh@cs.rochester.edu>
@@ -6972,7 +6972,7 @@
6972 * gnus-agent.el (gnus-agent-check-overview-buffer): Make debugger 6972 * gnus-agent.el (gnus-agent-check-overview-buffer): Make debugger
6973 print message on entry. 6973 print message on entry.
6974 6974
69752002-11-25 Kevin Greiner <kgreiner@xpediantsolutions.com>. 69752002-11-25 Kevin Greiner <kgreiner@xpediantsolutions.com>
6976 6976
6977 * gnus-range.el (gnus-range-difference): New function. 6977 * gnus-range.el (gnus-range-difference): New function.
6978 * gnus-sum.el (gnus-summary-insert-old-articles): Use it. 6978 * gnus-sum.el (gnus-summary-insert-old-articles): Use it.
@@ -7964,7 +7964,7 @@
7964 (mml2015-pgg-encrypt): New functions. 7964 (mml2015-pgg-encrypt): New functions.
7965 (defvar, autoload): Prevent byte-compile warnings. 7965 (defvar, autoload): Prevent byte-compile warnings.
7966 7966
79672002-09-24 TSUCHIYA Masatoshi <tsuchiya@namazu.org>. 79672002-09-24 TSUCHIYA Masatoshi <tsuchiya@namazu.org>
7968 7968
7969 * gnus-art.el (article-strip-banner): Check for the existence of 7969 * gnus-art.el (article-strip-banner): Check for the existence of
7970 from header. 7970 from header.
@@ -8097,7 +8097,7 @@
8097 8097
8098 * gnus-sum.el (gnus-summary-next-group): Semi-exit only when needed. 8098 * gnus-sum.el (gnus-summary-next-group): Semi-exit only when needed.
8099 8099
81002002-09-12 John Paul Wallington <jpw@shootybangbang.com>. 81002002-09-12 John Paul Wallington <jpw@shootybangbang.com>
8101 8101
8102 * gnus.el (gnus-visual, gnus-meta): Fix typo. 8102 * gnus.el (gnus-visual, gnus-meta): Fix typo.
8103 8103
@@ -8111,7 +8111,7 @@
8111 (nnimap-split-rule): Doc fix. 8111 (nnimap-split-rule): Doc fix.
8112 (nnimap-request-expire-articles): Cleanup code. 8112 (nnimap-request-expire-articles): Cleanup code.
8113 8113
81142002-09-11 TSUCHIYA Masatoshi <tsuchiya@namazu.org>. 81142002-09-11 TSUCHIYA Masatoshi <tsuchiya@namazu.org>
8115 8115
8116 * gnus-art.el (gnus-article-address-banner-alist): New option. 8116 * gnus-art.el (gnus-article-address-banner-alist): New option.
8117 (article-strip-banner): Refer the above option to split banners of 8117 (article-strip-banner): Refer the above option to split banners of
@@ -8170,7 +8170,7 @@
8170 8170
81712002-09-03 Simon Josefsson <jas@extundo.com> 81712002-09-03 Simon Josefsson <jas@extundo.com>
8172 8172
8173 * nntp.el (nntp-wait-for-string): Dont infloop if process died. 8173 * nntp.el (nntp-wait-for-string): Don't infloop if process died.
8174 8174
8175 * gnus-agent.el (gnus-agent-batch): Add doc. 8175 * gnus-agent.el (gnus-agent-batch): Add doc.
8176 8176
@@ -8205,7 +8205,7 @@
8205 (gnus-group-fetch-control): New function. 8205 (gnus-group-fetch-control): New function.
8206 Add them to the keymap and menu. Require mm-url. 8206 Add them to the keymap and menu. Require mm-url.
8207 8207
82082002-08-30 Alex Schroeder <alex@emacswiki.org>. 82082002-08-30 Alex Schroeder <alex@emacswiki.org>
8209 8209
8210 * gnus-mlspl.el (gnus-group-split-fancy): Doc fix. 8210 * gnus-mlspl.el (gnus-group-split-fancy): Doc fix.
8211 8211
@@ -8270,7 +8270,7 @@
8270 8270
8271 * gnus-util.el (gnus-select-frame-set-input-focus): New function. 8271 * gnus-util.el (gnus-select-frame-set-input-focus): New function.
8272 8272
82732002-08-20 $B>.4X(B $B5HB'(B (KOSEKI Yoshinori) <kose@meadowy.org>. 82732002-08-20 $B>.4X(B $B5HB'(B (KOSEKI Yoshinori) <kose@meadowy.org>
8274 8274
8275 * message.el (message-set-auto-save-file-name): Add support for 8275 * message.el (message-set-auto-save-file-name): Add support for
8276 the Cygwin Emacs; the system-type is `cygwin'. 8276 the Cygwin Emacs; the system-type is `cygwin'.
@@ -8396,7 +8396,7 @@
8396 * nnimap.el (nnimap-split-articles): Do not call nnmail-fetch-field 8396 * nnimap.el (nnimap-split-articles): Do not call nnmail-fetch-field
8397 when splitting malformed messages without message-id. 8397 when splitting malformed messages without message-id.
8398 8398
83992002-07-28 Niklas Morberg <niklas.morberg@axis.com>. 83992002-07-28 Niklas Morberg <niklas.morberg@axis.com>
8400 8400
8401 * nnweb.el (nnweb-type, nnweb-type-definition) 8401 * nnweb.el (nnweb-type, nnweb-type-definition)
8402 (nnweb-gmane-create-mapping, nnweb-gmane-wash-article) 8402 (nnweb-gmane-create-mapping, nnweb-gmane-wash-article)
@@ -8440,18 +8440,18 @@
8440 nnmail-expiry-target to 'delete, so that absolute deletion 8440 nnmail-expiry-target to 'delete, so that absolute deletion
8441 happens when absolute deletion is requested. 8441 happens when absolute deletion is requested.
8442 8442
84432002-07-21 Nevin Kapur <nevin@jhu.edu>. 84432002-07-21 Nevin Kapur <nevin@jhu.edu>
8444 8444
8445 * nnmail.el (nnmail-fancy-expiry-target): Treat nonexisting 8445 * nnmail.el (nnmail-fancy-expiry-target): Treat nonexisting
8446 headers as empty headers. 8446 headers as empty headers.
8447 8447
84482002-07-21 Jochen Hein <jochen@jochen.org>. 84482002-07-21 Jochen Hein <jochen@jochen.org>
8449 8449
8450 * gnus-art.el (gnus-emphasis-alist): Add strikethrough and 8450 * gnus-art.el (gnus-emphasis-alist): Add strikethrough and
8451 correct typo. 8451 correct typo.
8452 (gnus-emphasis-strikethru): New face. 8452 (gnus-emphasis-strikethru): New face.
8453 8453
84542002-07-20 Jason Merrill <jason@redhat.com>. 84542002-07-20 Jason Merrill <jason@redhat.com>
8455 8455
8456 * nnfolder.el (nnfolder-retrieve-headers): Avoid searching the 8456 * nnfolder.el (nnfolder-retrieve-headers): Avoid searching the
8457 entire file for each of a sequence of missing articles. 8457 entire file for each of a sequence of missing articles.
@@ -9879,7 +9879,7 @@
9879 (rfc2047-decode-region): Don't unfold. Let 9879 (rfc2047-decode-region): Don't unfold. Let
9880 gnus-article-treat-unfold-headers do it. 9880 gnus-article-treat-unfold-headers do it.
9881 9881
98822002-02-07 Matt Armstrong <matt@lickey.com>. 98822002-02-07 Matt Armstrong <matt@lickey.com>
9883 9883
9884 * message.el (message-mode): Set local-abbrev-table. 9884 * message.el (message-mode): Set local-abbrev-table.
9885 9885
@@ -10428,7 +10428,7 @@
10428 * mml-sec.el (mml-secure-message-encrypt-smime): New. 10428 * mml-sec.el (mml-secure-message-encrypt-smime): New.
10429 * mml-sec.el (mml-secure-message-encrypt-pgp): New. 10429 * mml-sec.el (mml-secure-message-encrypt-pgp): New.
10430 * mml-sec.el (mml-secure-message-encrypt-pgpmime): New. 10430 * mml-sec.el (mml-secure-message-encrypt-pgpmime): New.
10431 * mml.el (mml-parse-1): Added code to recognise the secure tag and 10431 * mml.el (mml-parse-1): Added code to recognize the secure tag and
10432 convert it to either a part or multipart depending on if there are 10432 convert it to either a part or multipart depending on if there are
10433 other parts in the message. 10433 other parts in the message.
10434 * mml.el (mml-mode-map): Changed default sign/encrypt keybindings 10434 * mml.el (mml-mode-map): Changed default sign/encrypt keybindings
@@ -13226,7 +13226,7 @@
13226 (gnus-topic-catchup-articles): New function. Suggested by Robin 13226 (gnus-topic-catchup-articles): New function. Suggested by Robin
13227 S. Socha <robin-dated-1001857693.185e29@socha.net>. 13227 S. Socha <robin-dated-1001857693.185e29@socha.net>.
13228 13228
132292001-09-27 11:00:00 Gerd M,Av(Bllmann <gerd@gnu.org>. 132292001-09-27 11:00:00 Gerd M,Av(Bllmann <gerd@gnu.org>
13230 13230
13231 * gnus-ems.el (gnus-article-display-xface): Insert xface after 13231 * gnus-ems.el (gnus-article-display-xface): Insert xface after
13232 previous ones. 13232 previous ones.
@@ -13977,7 +13977,7 @@
13977 * mml.el (mml-menu): Changed name to "Attachments". 13977 * mml.el (mml-menu): Changed name to "Attachments".
13978 13978
13979 * mm-decode.el (mm-destroy-postponed-undisplay-list): Only message 13979 * mm-decode.el (mm-destroy-postponed-undisplay-list): Only message
13980 when there is something to detroy. 13980 when there is something to destroy.
13981 13981
139822001-05-21 17:11:46 Lars Magne Ingebrigtsen <larsi@gnus.org> 139822001-05-21 17:11:46 Lars Magne Ingebrigtsen <larsi@gnus.org>
13983 13983
diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
index 71f8cf82d39..bf7f31e6392 100644
--- a/lisp/gnus/gnus-agent.el
+++ b/lisp/gnus/gnus-agent.el
@@ -1368,7 +1368,7 @@ downloaded into the agent."
1368 ;; disable the set read each time this server is opened. 1368 ;; disable the set read each time this server is opened.
1369 ;; NOTE: Opening this group will restore the valid local 1369 ;; NOTE: Opening this group will restore the valid local
1370 ;; range but it will also expand the local range to 1370 ;; range but it will also expand the local range to
1371 ;; incompass the new active range. 1371 ;; encompass the new active range.
1372 (gnus-agent-set-local group agent-min (1- active-min))))))) 1372 (gnus-agent-set-local group agent-min (1- active-min)))))))
1373 1373
1374(defun gnus-agent-save-group-info (method group active) 1374(defun gnus-agent-save-group-info (method group active)
@@ -3232,7 +3232,7 @@ FORCE is equivalent to setting the expiration predicates to true."
3232 3232
3233 ;; Convert the keep lists to elements that look like (article# 3233 ;; Convert the keep lists to elements that look like (article#
3234 ;; nil keep_flag nil) then append it to the expanded dlist 3234 ;; nil keep_flag nil) then append it to the expanded dlist
3235 ;; These statements are sorted by ascending precidence of the 3235 ;; These statements are sorted by ascending precedence of the
3236 ;; keep_flag. 3236 ;; keep_flag.
3237 (setq dlist (nconc dlist 3237 (setq dlist (nconc dlist
3238 (mapcar (lambda (e) 3238 (mapcar (lambda (e)
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index dd41947a2af..0abc802f558 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -4497,7 +4497,9 @@ commands:
4497(defun gnus-article-setup-buffer () 4497(defun gnus-article-setup-buffer ()
4498 "Initialize the article buffer." 4498 "Initialize the article buffer."
4499 (let* ((name (if gnus-single-article-buffer "*Article*" 4499 (let* ((name (if gnus-single-article-buffer "*Article*"
4500 (concat "*Article " gnus-newsgroup-name "*"))) 4500 (concat "*Article "
4501 (gnus-group-decoded-name gnus-newsgroup-name)
4502 "*")))
4501 (original 4503 (original
4502 (progn (string-match "\\*Article" name) 4504 (progn (string-match "\\*Article" name)
4503 (concat " *Original Article" 4505 (concat " *Original Article"
diff --git a/lisp/gnus/gnus-dired.el b/lisp/gnus/gnus-dired.el
index c38b0cd3606..b4d23ff579c 100644
--- a/lisp/gnus/gnus-dired.el
+++ b/lisp/gnus/gnus-dired.el
@@ -251,7 +251,7 @@ file to save in."
251 (if (eq gnus-dired-mail-mode 'gnus-user-agent) 251 (if (eq gnus-dired-mail-mode 'gnus-user-agent)
252 (gnus-print-buffer) 252 (gnus-print-buffer)
253 ;; FIXME: 253 ;; FIXME:
254 (error "MIME print only implemeted via Gnus"))) 254 (error "MIME print only implemented via Gnus")))
255 (ps-despool print-to)))) 255 (ps-despool print-to))))
256 ((file-symlink-p file-name) 256 ((file-symlink-p file-name)
257 (error "File is a symlink to a nonexistent target")) 257 (error "File is a symlink to a nonexistent target"))
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 4c527caff5c..6f146644115 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -1361,7 +1361,7 @@ if it is a string, only list groups matching REGEXP."
1361 ; We list groups with unread articles 1361 ; We list groups with unread articles
1362 (and gnus-list-groups-with-ticked-articles 1362 (and gnus-list-groups-with-ticked-articles
1363 (cdr (assq 'tick (gnus-info-marks info)))) 1363 (cdr (assq 'tick (gnus-info-marks info))))
1364 ; And groups with tickeds 1364 ; And groups with ticked articles
1365 ;; Check for permanent visibility. 1365 ;; Check for permanent visibility.
1366 (and gnus-permanently-visible-groups 1366 (and gnus-permanently-visible-groups
1367 (string-match gnus-permanently-visible-groups 1367 (string-match gnus-permanently-visible-groups
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 08f5e44e13f..7cea88e7f54 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -364,7 +364,7 @@ newsgroups, set the variable to nil in `gnus-select-group-hook'."
364This variable can either be the symbols `first' (place point on the 364This variable can either be the symbols `first' (place point on the
365first subject), `unread' (place point on the subject line of the first 365first subject), `unread' (place point on the subject line of the first
366unread article), `best' (place point on the subject line of the 366unread article), `best' (place point on the subject line of the
367higest-scored article), `unseen' (place point on the subject line of 367highest-scored article), `unseen' (place point on the subject line of
368the first unseen article), `unseen-or-unread' (place point on the subject 368the first unseen article), `unseen-or-unread' (place point on the subject
369line of the first unseen article or, if all articles have been seen, on the 369line of the first unseen article or, if all articles have been seen, on the
370subject line of the first unread article), or a function to be called to 370subject line of the first unread article), or a function to be called to
@@ -1657,7 +1657,7 @@ For example:
1657 1657
1658This variable is a list of FUNCTION or (REGEXP . FUNCTION). If item 1658This variable is a list of FUNCTION or (REGEXP . FUNCTION). If item
1659is FUNCTION, FUNCTION will be apply to all newsgroups. If item is a 1659is FUNCTION, FUNCTION will be apply to all newsgroups. If item is a
1660\(REGEXP . FUNCTION), FUNCTION will be only apply to thes newsgroups 1660\(REGEXP . FUNCTION), FUNCTION will be applied only to the newsgroups
1661whose names match REGEXP. 1661whose names match REGEXP.
1662 1662
1663For example: 1663For example:
diff --git a/lisp/gnus/mail-parse.el b/lisp/gnus/mail-parse.el
index 06aac776486..0fcc206cf71 100644
--- a/lisp/gnus/mail-parse.el
+++ b/lisp/gnus/mail-parse.el
@@ -22,7 +22,7 @@
22 22
23;; This file contains wrapper functions for a wide range of mail 23;; This file contains wrapper functions for a wide range of mail
24;; parsing functions. The idea is that there are low-level libraries 24;; parsing functions. The idea is that there are low-level libraries
25;; that impement according to various specs (RFC2231, DRUMS, USEFOR), 25;; that implement according to various specs (RFC2231, DRUMS, USEFOR),
26;; but that programmers that want to parse some header (say, 26;; but that programmers that want to parse some header (say,
27;; Content-Type) will want to use the latest spec. 27;; Content-Type) will want to use the latest spec.
28;; 28;;
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 176857633e1..5d82faee20d 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -7167,7 +7167,7 @@ header line with the old Message-ID."
7167 7167
7168(defun message-wash-subject (subject) 7168(defun message-wash-subject (subject)
7169 "Remove junk like \"Re:\", \"(fwd)\", etc. added to subject string SUBJECT. 7169 "Remove junk like \"Re:\", \"(fwd)\", etc. added to subject string SUBJECT.
7170Previous forwarders, replyers, etc. may add it." 7170Previous forwarders, repliers, etc. may add it."
7171 (with-temp-buffer 7171 (with-temp-buffer
7172 (insert subject) 7172 (insert subject)
7173 (goto-char (point-min)) 7173 (goto-char (point-min))
diff --git a/lisp/gnus/mm-util.el b/lisp/gnus/mm-util.el
index d57b61dac83..129609df10d 100644
--- a/lisp/gnus/mm-util.el
+++ b/lisp/gnus/mm-util.el
@@ -956,7 +956,7 @@ This is a no-op in XEmacs."
956 956
957(defun mm-charset-after (&optional pos) 957(defun mm-charset-after (&optional pos)
958 "Return charset of a character in current buffer at position POS. 958 "Return charset of a character in current buffer at position POS.
959If POS is nil, it defauls to the current point. 959If POS is nil, it defaults to the current point.
960If POS is out of range, the value is nil. 960If POS is out of range, the value is nil.
961If the charset is `composition', return the actual one." 961If the charset is `composition', return the actual one."
962 (let ((char (char-after pos)) charset) 962 (let ((char (char-after pos)) charset)
diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el
index 6358e34176f..854ca3497da 100644
--- a/lisp/gnus/mm-view.el
+++ b/lisp/gnus/mm-view.el
@@ -566,6 +566,8 @@
566 (face-property 'default prop) (current-buffer)))) 566 (face-property 'default prop) (current-buffer))))
567 (delete-region ,(point-min-marker) ,(point-max-marker))))))))) 567 (delete-region ,(point-min-marker) ,(point-max-marker)))))))))
568 568
569;; Shut up byte-compiler.
570(defvar font-lock-mode-hook)
569(defun mm-display-inline-fontify (handle &optional mode) 571(defun mm-display-inline-fontify (handle &optional mode)
570 "Insert HANDLE inline fontifying with MODE. 572 "Insert HANDLE inline fontifying with MODE.
571If MODE is not set, try to find mode automatically." 573If MODE is not set, try to find mode automatically."
@@ -597,25 +599,25 @@ If MODE is not set, try to find mode automatically."
597 (t 599 (t
598 text))) 600 text)))
599 (require 'font-lock) 601 (require 'font-lock)
600 (let ((font-lock-maximum-size nil) 602 ;; I find font-lock a bit too verbose.
601 ;; Disable support modes, e.g., jit-lock, lazy-lock, etc. 603 (let ((font-lock-verbose nil))
602 (font-lock-mode-hook nil) 604 ;; Disable support modes, e.g., jit-lock, lazy-lock, etc.
603 (font-lock-support-mode nil) 605 (set (make-local-variable 'font-lock-mode-hook) nil)
604 ;; I find font-lock a bit too verbose. 606 (set (make-local-variable 'font-lock-support-mode) nil)
605 (font-lock-verbose nil))
606 (setq buffer-file-name (mm-handle-filename handle)) 607 (setq buffer-file-name (mm-handle-filename handle))
607 (set (make-local-variable 'enable-local-variables) nil) 608 (set (make-local-variable 'enable-local-variables) nil)
608 (if mode 609 (with-demoted-errors
609 (funcall mode) 610 (if mode
610 (let ((auto-mode-alist 611 (funcall mode)
611 (delq (rassq 'doc-view-mode-maybe auto-mode-alist) 612 (let ((auto-mode-alist
612 (copy-sequence auto-mode-alist)))) 613 (delq (rassq 'doc-view-mode-maybe auto-mode-alist)
613 (set-auto-mode))) 614 (copy-sequence auto-mode-alist))))
614 ;; The mode function might have already turned on font-lock. 615 (set-auto-mode)))
615 ;; Do not fontify if the guess mode is fundamental. 616 ;; The mode function might have already turned on font-lock.
616 (unless (or (symbol-value 'font-lock-mode) 617 ;; Do not fontify if the guess mode is fundamental.
617 (eq major-mode 'fundamental-mode)) 618 (unless (or (symbol-value 'font-lock-mode)
618 (font-lock-fontify-buffer))) 619 (eq major-mode 'fundamental-mode))
620 (font-lock-fontify-buffer))))
619 ;; By default, XEmacs font-lock uses non-duplicable text 621 ;; By default, XEmacs font-lock uses non-duplicable text
620 ;; properties. This code forces all the text properties 622 ;; properties. This code forces all the text properties
621 ;; to be copied along with the text. 623 ;; to be copied along with the text.
diff --git a/lisp/gnus/nndiary.el b/lisp/gnus/nndiary.el
index a798e22902f..043356ca841 100644
--- a/lisp/gnus/nndiary.el
+++ b/lisp/gnus/nndiary.el
@@ -55,7 +55,7 @@
55 55
56;; * nnoo. NNDiary is very similar to nnml. This makes the idea of using nnoo 56;; * nnoo. NNDiary is very similar to nnml. This makes the idea of using nnoo
57;; (to derive nndiary from nnml) natural. However, my experience with nnoo 57;; (to derive nndiary from nnml) natural. However, my experience with nnoo
58;; is that for reasonably complex back ends like this one, noo is a burden 58;; is that for reasonably complex back ends like this one, nnoo is a burden
59;; rather than an help. It's tricky to use, not everything can be inherited, 59;; rather than an help. It's tricky to use, not everything can be inherited,
60;; what can be inherited and when is not very clear, and you've got to be 60;; what can be inherited and when is not very clear, and you've got to be
61;; very careful because a little mistake can fuck up your other back ends, 61;; very careful because a little mistake can fuck up your other back ends,
@@ -1320,7 +1320,7 @@ all. This may very well take some time.")
1320 (or minute (setq minute 59)) 1320 (or minute (setq minute 59))
1321 (or hour (setq hour 23)) 1321 (or hour (setq hour 23))
1322 ;; I'll just compute all possible values and test them by decreasing 1322 ;; I'll just compute all possible values and test them by decreasing
1323 ;; order until one succeeds. This is probably quide rude, but I got 1323 ;; order until one succeeds. This is probably quite rude, but I got
1324 ;; bored in finding a good algorithm for doing that ;-) 1324 ;; bored in finding a good algorithm for doing that ;-)
1325 ;; ### FIXME: remove identical entries. 1325 ;; ### FIXME: remove identical entries.
1326 (let ((dom-list (nth 2 sched)) 1326 (let ((dom-list (nth 2 sched))
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index cda17ba57c6..b4e6e31fae4 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -1035,7 +1035,7 @@ textual parts.")
1035 ((eq action 'set) "")) 1035 ((eq action 'set) ""))
1036 (mapconcat #'identity flags " "))))))) 1036 (mapconcat #'identity flags " ")))))))
1037 ;; Wait for the last command to complete to avoid later 1037 ;; Wait for the last command to complete to avoid later
1038 ;; syncronisation problems with the stream. 1038 ;; synchronization problems with the stream.
1039 (when sequence 1039 (when sequence
1040 (nnimap-wait-for-response sequence)))))) 1040 (nnimap-wait-for-response sequence))))))
1041 1041
diff --git a/lisp/gnus/nnir.el b/lisp/gnus/nnir.el
index 88fd4fe1ff6..78d2478b4fb 100644
--- a/lisp/gnus/nnir.el
+++ b/lisp/gnus/nnir.el
@@ -1269,7 +1269,7 @@ Tested with swish-e-2.0.1 on Windows NT 4.0."
1269 ;; nnir-search failure reason is in this buffer, show it if 1269 ;; nnir-search failure reason is in this buffer, show it if
1270 ;; the user wants it. 1270 ;; the user wants it.
1271 (when (> gnus-verbose 6) 1271 (when (> gnus-verbose 6)
1272 (display-buffer nnir-tmp-buffer)))) ;; FIXME: Dont clear buffer ! 1272 (display-buffer nnir-tmp-buffer)))) ;; FIXME: Don't clear buffer !
1273 (message "Doing hyrex-search query \"%s\"...done" qstring) 1273 (message "Doing hyrex-search query \"%s\"...done" qstring)
1274 (sit-for 0) 1274 (sit-for 0)
1275 ;; nnir-search returns: 1275 ;; nnir-search returns:
diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el
index d83467a1ed5..93e8544b633 100644
--- a/lisp/gnus/nnmail.el
+++ b/lisp/gnus/nnmail.el
@@ -1799,7 +1799,7 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
1799 (i 0) 1799 (i 0)
1800 (new 0) 1800 (new 0)
1801 (total 0) 1801 (total 0)
1802 incoming incomings source) 1802 source)
1803 (when (and (nnmail-get-value "%s-get-new-mail" method) 1803 (when (and (nnmail-get-value "%s-get-new-mail" method)
1804 sources) 1804 sources)
1805 (while (setq source (pop sources)) 1805 (while (setq source (pop sources))
diff --git a/lisp/gnus/nnmairix.el b/lisp/gnus/nnmairix.el
index 9d6011e6573..4ad9d11f906 100644
--- a/lisp/gnus/nnmairix.el
+++ b/lisp/gnus/nnmairix.el
@@ -204,7 +204,7 @@
204(add-hook 'gnus-summary-mode-hook 'nnmairix-summary-mode-hook) 204(add-hook 'gnus-summary-mode-hook 'nnmairix-summary-mode-hook)
205 205
206;; ;;;###autoload 206;; ;;;###autoload
207;; (defun nnmairix-initalize (&optional force) 207;; (defun nnmairix-initialize (&optional force)
208;; (interactive "P") 208;; (interactive "P")
209;; (if (not (or (file-readable-p "~/.mairixrc") 209;; (if (not (or (file-readable-p "~/.mairixrc")
210;; force)) 210;; force))
@@ -333,7 +333,7 @@ can happen are wrong marks in nnmairix groups."
333 "Use only the registry for determining original group(s). 333 "Use only the registry for determining original group(s).
334If set to t, nnmairix will only use the registry for determining 334If set to t, nnmairix will only use the registry for determining
335the original group(s) of an article (which is also necessary for 335the original group(s) of an article (which is also necessary for
336propapagting marks). If set to nil, it will also try to determine 336propagating marks). If set to nil, it will also try to determine
337the group from an additional mairix search which might be slow 337the group from an additional mairix search which might be slow
338when propagating lots of marks." 338when propagating lots of marks."
339 :version "23.1" 339 :version "23.1"
@@ -512,7 +512,7 @@ Other back ends might or might not work.")
512 ;; Everything else is an error 512 ;; Everything else is an error
513 (t 513 (t
514 (nnheader-report 514 (nnheader-report
515 'nnmairix "Error running marix. See buffer %s for details" 515 'nnmairix "Error running mairix. See buffer %s for details"
516 nnmairix-mairix-output-buffer) 516 nnmairix-mairix-output-buffer)
517 nil)))))) 517 nil))))))
518 518
diff --git a/lisp/gnus/nntp.el b/lisp/gnus/nntp.el
index 325aa67f80d..9816c208fab 100644
--- a/lisp/gnus/nntp.el
+++ b/lisp/gnus/nntp.el
@@ -1681,7 +1681,7 @@ password contained in '~/.nntp-authinfo'."
1681 ;; for the first available article. Obviously, a client can 1681 ;; for the first available article. Obviously, a client can
1682 ;; use that entry to avoid making unnecessary requests. The 1682 ;; use that entry to avoid making unnecessary requests. The
1683 ;; only problem is for a client that assumes that the response 1683 ;; only problem is for a client that assumes that the response
1684 ;; will always be within the requested ranage. For such a 1684 ;; will always be within the requested range. For such a
1685 ;; client, we can get N copies of the same entry (one for each 1685 ;; client, we can get N copies of the same entry (one for each
1686 ;; XOVER command sent to the server). 1686 ;; XOVER command sent to the server).
1687 1687
diff --git a/lisp/gnus/shr.el b/lisp/gnus/shr.el
index 7b9af3302af..119d8e0a7f3 100644
--- a/lisp/gnus/shr.el
+++ b/lisp/gnus/shr.el
@@ -53,17 +53,17 @@ fit these criteria."
53 :group 'shr 53 :group 'shr
54 :type 'regexp) 54 :type 'regexp)
55 55
56(defcustom shr-table-horizontal-line ? 56(defcustom shr-table-horizontal-line ? ; space
57 "Character used to draw horizontal table lines." 57 "Character used to draw horizontal table lines."
58 :group 'shr 58 :group 'shr
59 :type 'character) 59 :type 'character)
60 60
61(defcustom shr-table-vertical-line ? 61(defcustom shr-table-vertical-line ? ; space
62 "Character used to draw vertical table lines." 62 "Character used to draw vertical table lines."
63 :group 'shr 63 :group 'shr
64 :type 'character) 64 :type 'character)
65 65
66(defcustom shr-table-corner ? 66(defcustom shr-table-corner ? ; space
67 "Character used to draw table corners." 67 "Character used to draw table corners."
68 :group 'shr 68 :group 'shr
69 :type 'character) 69 :type 'character)
@@ -583,7 +583,7 @@ Return a string with image data."
583 "Return a function to display an image. 583 "Return a function to display an image.
584CONTENT-FUNCTION is a function to retrieve an image for a cid url that 584CONTENT-FUNCTION is a function to retrieve an image for a cid url that
585is an argument. The function to be returned takes three arguments URL, 585is an argument. The function to be returned takes three arguments URL,
586START, and END. Note that START and END should be merkers." 586START, and END. Note that START and END should be markers."
587 `(lambda (url start end) 587 `(lambda (url start end)
588 (when url 588 (when url
589 (if (string-match "\\`cid:" url) 589 (if (string-match "\\`cid:" url)
diff --git a/lisp/gnus/sieve-manage.el b/lisp/gnus/sieve-manage.el
index 5c2e775a211..a0c1d4f108b 100644
--- a/lisp/gnus/sieve-manage.el
+++ b/lisp/gnus/sieve-manage.el
@@ -1,4 +1,4 @@
1;;; sieve-manage.el --- Implementation of the managesive protocol in elisp 1;;; sieve-manage.el --- Implementation of the managesieve protocol in elisp
2 2
3;; Copyright (C) 2001-2011 Free Software Foundation, Inc. 3;; Copyright (C) 2001-2011 Free Software Foundation, Inc.
4 4
diff --git a/lisp/gnus/smime.el b/lisp/gnus/smime.el
index 128bda6f516..3c1f75f3dc9 100644
--- a/lisp/gnus/smime.el
+++ b/lisp/gnus/smime.el
@@ -99,7 +99,7 @@
99;; 99;;
100;; I would include pointers to introductory text on concepts used in 100;; I would include pointers to introductory text on concepts used in
101;; this library here, but the material I've read are so horrible I 101;; this library here, but the material I've read are so horrible I
102;; don't want to recomend them. 102;; don't want to recommend them.
103;; 103;;
104;; Why can't someone write a simple introduction to all this stuff? 104;; Why can't someone write a simple introduction to all this stuff?
105;; Until then, much of this resemble security by obscurity. 105;; Until then, much of this resemble security by obscurity.
@@ -180,7 +180,7 @@ File should contain certificates in PEM format."
180(defcustom smime-certificate-directory "~/Mail/certs/" 180(defcustom smime-certificate-directory "~/Mail/certs/"
181 "*Directory containing other people's certificates. 181 "*Directory containing other people's certificates.
182It should contain files named to the X.509 hash of the certificate, 182It should contain files named to the X.509 hash of the certificate,
183and the files themself should be in PEM format." 183and the files themselves should be in PEM format."
184;The S/MIME library provide simple functionality for fetching 184;The S/MIME library provide simple functionality for fetching
185;certificates into this directory, so there is no need to populate it 185;certificates into this directory, so there is no need to populate it
186;manually. 186;manually.
diff --git a/lisp/gnus/spam-report.el b/lisp/gnus/spam-report.el
index 95b5fb578f4..6c94dbdd2c4 100644
--- a/lisp/gnus/spam-report.el
+++ b/lisp/gnus/spam-report.el
@@ -102,7 +102,7 @@ Reports is as ham when HAM is set."
102 (customize-set-variable 102 (customize-set-variable
103 spam-report-resend-to 103 spam-report-resend-to
104 (read-from-minibuffer "email address to resend SPAM/HAM to? "))) 104 (read-from-minibuffer "email address to resend SPAM/HAM to? ")))
105 ;; This is ganked from the `gnus-summary-resend-message' function. 105 ;; This is yanked from the `gnus-summary-resend-message' function.
106 ;; It involves rendering the SPAM, which is undesirable, but there does 106 ;; It involves rendering the SPAM, which is undesirable, but there does
107 ;; not seem to be a nicer way to achieve this. 107 ;; not seem to be a nicer way to achieve this.
108 ;; select this particular article 108 ;; select this particular article
diff --git a/lisp/gnus/spam.el b/lisp/gnus/spam.el
index fa152f688c4..869dbc9bc0e 100644
--- a/lisp/gnus/spam.el
+++ b/lisp/gnus/spam.el
@@ -156,7 +156,7 @@ last rule in your split configuration."
156 :group 'spam) 156 :group 'spam)
157 157
158(defcustom spam-autodetect-recheck-messages nil 158(defcustom spam-autodetect-recheck-messages nil
159 "Should spam.el recheck all meessages when autodetecting? 159 "Should spam.el recheck all messages when autodetecting?
160Normally this is nil, so only unseen messages will be checked." 160Normally this is nil, so only unseen messages will be checked."
161 :type 'boolean 161 :type 'boolean
162 :group 'spam) 162 :group 'spam)
diff --git a/lisp/help-mode.el b/lisp/help-mode.el
index 5d67a6c4f4c..5906683071b 100644
--- a/lisp/help-mode.el
+++ b/lisp/help-mode.el
@@ -141,7 +141,7 @@ The format is (FUNCTION ARGS...).")
141 'help-function 'describe-character-set 141 'help-function 'describe-character-set
142 'help-echo (purecopy "mouse-2, RET: describe this character set")) 142 'help-echo (purecopy "mouse-2, RET: describe this character set"))
143 143
144;; make some more ideosyncratic button types 144;; Make some more idiosyncratic button types.
145 145
146(define-button-type 'help-symbol 146(define-button-type 'help-symbol
147 :supertype 'help-xref 147 :supertype 'help-xref
diff --git a/lisp/hippie-exp.el b/lisp/hippie-exp.el
index 75bc1f9743c..69da8fc6110 100644
--- a/lisp/hippie-exp.el
+++ b/lisp/hippie-exp.el
@@ -391,7 +391,7 @@ undoes the expansion."
391 lst))) 391 lst)))
392 392
393;; Check if current buffer matches any atom or regexp in LST. 393;; Check if current buffer matches any atom or regexp in LST.
394;; Atoms are interpreted as major modes, strings as regexps mathing the name. 394;; Atoms are interpreted as major modes, strings as regexps matching the name.
395(defun he-buffer-member (lst) 395(defun he-buffer-member (lst)
396 (or (memq major-mode lst) 396 (or (memq major-mode lst)
397 (progn 397 (progn
diff --git a/lisp/htmlfontify.el b/lisp/htmlfontify.el
index cd9f1fa6b43..056115f57b7 100644
--- a/lisp/htmlfontify.el
+++ b/lisp/htmlfontify.el
@@ -1,4 +1,4 @@
1;;; htmlfontify.el --- htmlise a buffer/source tree with optional hyperlinks 1;;; htmlfontify.el --- htmlize a buffer/source tree with optional hyperlinks
2 2
3;; Copyright (C) 2002-2003, 2009-2011 Free Software Foundation, Inc. 3;; Copyright (C) 2002-2003, 2009-2011 Free Software Foundation, Inc.
4 4
@@ -10,7 +10,7 @@
10;; Author: Vivek Dasmohapatra <vivek@etla.org> 10;; Author: Vivek Dasmohapatra <vivek@etla.org>
11;; Maintainer: Vivek Dasmohapatra <vivek@etla.org> 11;; Maintainer: Vivek Dasmohapatra <vivek@etla.org>
12;; Created: 2002-01-05 12;; Created: 2002-01-05
13;; Description: htmlise a buffer/source tree with optional hyperlinks 13;; Description: htmlize a buffer/source tree with optional hyperlinks
14;; URL: http://rtfm.etla.org/emacs/htmlfontify/ 14;; URL: http://rtfm.etla.org/emacs/htmlfontify/
15;; Compatibility: Emacs23, Emacs22 15;; Compatibility: Emacs23, Emacs22
16;; Incompatibility: Emacs19, Emacs20, Emacs21 16;; Incompatibility: Emacs19, Emacs20, Emacs21
@@ -1576,7 +1576,7 @@ FILE, if set, is the file name."
1576 (delete-overlay rovl)) 1576 (delete-overlay rovl))
1577 (copy-to-buffer html-buffer (point-min) (point-max)) 1577 (copy-to-buffer html-buffer (point-min) (point-max))
1578 (set-buffer html-buffer) 1578 (set-buffer html-buffer)
1579 ;; rip out props that could interfere with our htmlisation of the buffer: 1579 ;; rip out props that could interfere with our htmlization of the buffer:
1580 (remove-text-properties (point-min) (point-max) hfy-ignored-properties) 1580 (remove-text-properties (point-min) (point-max) hfy-ignored-properties)
1581 ;; Apply overlay invisible spec 1581 ;; Apply overlay invisible spec
1582 (setq orig-ovls 1582 (setq orig-ovls
@@ -1774,7 +1774,7 @@ Strips any leading \"./\" from each filename."
1774 (split-string (shell-command-to-string hfy-find-cmd))) ) 1774 (split-string (shell-command-to-string hfy-find-cmd))) )
1775 1775
1776;; strip the filename off, return a directory name 1776;; strip the filename off, return a directory name
1777;; not a particularly thorough implementaion, but it will be 1777;; not a particularly thorough implementation, but it will be
1778;; fed pretty carefully, so it should be Ok: 1778;; fed pretty carefully, so it should be Ok:
1779(defun hfy-dirname (file) 1779(defun hfy-dirname (file)
1780 "Return everything preceding the last \"/\" from a relative filename FILE, 1780 "Return everything preceding the last \"/\" from a relative filename FILE,
@@ -2026,13 +2026,13 @@ FILE is the specific file we are rendering."
2026 (hash-entry nil) (tag-string nil) (tag-line nil) 2026 (hash-entry nil) (tag-string nil) (tag-line nil)
2027 (tag-point nil) (new-entry nil) (etags-file nil)) 2027 (tag-point nil) (new-entry nil) (etags-file nil))
2028 2028
2029 ;; (re)initialise the tag reverse map: 2029 ;; (re)initialize the tag reverse map:
2030 (if trmap-cache (setq trmap-hash (cadr trmap-cache)) 2030 (if trmap-cache (setq trmap-hash (cadr trmap-cache))
2031 (setq trmap-hash (make-hash-table :test 'equal)) 2031 (setq trmap-hash (make-hash-table :test 'equal))
2032 (setq hfy-tags-rmap (list (list srcdir trmap-hash) hfy-tags-rmap))) 2032 (setq hfy-tags-rmap (list (list srcdir trmap-hash) hfy-tags-rmap)))
2033 (clrhash trmap-hash) 2033 (clrhash trmap-hash)
2034 2034
2035 ;; (re)initialise the tag cache: 2035 ;; (re)initialize the tag cache:
2036 (if cache-entry (setq cache-hash (cadr cache-entry)) 2036 (if cache-entry (setq cache-hash (cadr cache-entry))
2037 (setq cache-hash (make-hash-table :test 'equal)) 2037 (setq cache-hash (make-hash-table :test 'equal))
2038 (setq hfy-tags-cache (list (list srcdir cache-hash) hfy-tags-cache))) 2038 (setq hfy-tags-cache (list (list srcdir cache-hash) hfy-tags-cache)))
diff --git a/lisp/ido.el b/lisp/ido.el
index 6af431a2882..f425fd5fc63 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -770,7 +770,7 @@ can be completed using TAB,
770(defcustom ido-use-virtual-buffers nil 770(defcustom ido-use-virtual-buffers nil
771 "If non-nil, refer to past buffers as well as existing ones. 771 "If non-nil, refer to past buffers as well as existing ones.
772Essentially it works as follows: Say you are visiting a file and 772Essentially it works as follows: Say you are visiting a file and
773the buffer gets cleaned up by mignight.el. Later, you want to 773the buffer gets cleaned up by midnight.el. Later, you want to
774switch to that buffer, but find it's no longer open. With 774switch to that buffer, but find it's no longer open. With
775virtual buffers enabled, the buffer name stays in the buffer 775virtual buffers enabled, the buffer name stays in the buffer
776list (using the `ido-virtual' face, and always at the end), and if 776list (using the `ido-virtual' face, and always at the end), and if
diff --git a/lisp/image-dired.el b/lisp/image-dired.el
index 8c151d35ed2..4a164dfaa42 100644
--- a/lisp/image-dired.el
+++ b/lisp/image-dired.el
@@ -469,7 +469,7 @@ For more information, see the documentation for
469If non-nil, using `image-dired-next-line-and-display' and 469If non-nil, using `image-dired-next-line-and-display' and
470`image-dired-previous-line-and-display' will leave a trail of thumbnail 470`image-dired-previous-line-and-display' will leave a trail of thumbnail
471images in the thumbnail buffer. If you enable this and want to clean 471images in the thumbnail buffer. If you enable this and want to clean
472the thumbnail buffer because it is filled with too many thumbmnails, 472the thumbnail buffer because it is filled with too many thumbnails,
473just call `image-dired-display-thumb' to display only the image at point. 473just call `image-dired-display-thumb' to display only the image at point.
474This value can be toggled using `image-dired-toggle-append-browsing'." 474This value can be toggled using `image-dired-toggle-append-browsing'."
475 :type 'boolean 475 :type 'boolean
@@ -1605,7 +1605,7 @@ With prefix argument ARG, create thumbnails even if they already exist
1605 (setq thumb-name (image-dired-thumb-name curr-file)) 1605 (setq thumb-name (image-dired-thumb-name curr-file))
1606 ;; If the user overrides the exist check, we must clear the 1606 ;; If the user overrides the exist check, we must clear the
1607 ;; image cache so that if the user wants to display the 1607 ;; image cache so that if the user wants to display the
1608 ;; thumnail, it is not fetched from cache. 1608 ;; thumbnail, it is not fetched from cache.
1609 (if arg 1609 (if arg
1610 (clear-image-cache)) 1610 (clear-image-cache))
1611 (if (or (not (file-exists-p thumb-name)) 1611 (if (or (not (file-exists-p thumb-name))
@@ -2043,7 +2043,7 @@ function. The result is a couple of new files in
2043 files))) 2043 files)))
2044 2044
2045(defun image-dired-display-next-thumbnail-original () 2045(defun image-dired-display-next-thumbnail-original ()
2046 "In thubnail buffer, move to next thumbnail and display the image." 2046 "In thumbnail buffer, move to next thumbnail and display the image."
2047 (interactive) 2047 (interactive)
2048 (image-dired-forward-image) 2048 (image-dired-forward-image)
2049 (image-dired-display-thumbnail-original-image)) 2049 (image-dired-display-thumbnail-original-image))
diff --git a/lisp/info-xref.el b/lisp/info-xref.el
index 41da9d12c99..805bec064cf 100644
--- a/lisp/info-xref.el
+++ b/lisp/info-xref.el
@@ -313,7 +313,7 @@ should be harmless."
313 (interactive) 313 (interactive)
314 (info-xref-check-list (info-xref-all-info-files))) 314 (info-xref-check-list (info-xref-all-info-files)))
315 315
316;; An alternative for geting only top-level files here would be to simply 316;; An alternative for getting only top-level files here would be to simply
317;; return all files and have info-xref-check-list not follow "Indirect:". 317;; return all files and have info-xref-check-list not follow "Indirect:".
318;; The current way seems better because it (potentially) gets the proper 318;; The current way seems better because it (potentially) gets the proper
319;; top-level filename into the error messages, and suppresses duplicate "not 319;; top-level filename into the error messages, and suppresses duplicate "not
@@ -413,7 +413,7 @@ and can take a long time."
413 (unless (boundp 'viper-mode) 413 (unless (boundp 'viper-mode)
414 (setq viper-mode nil)) ;; avoid viper.el ask about viperizing 414 (setq viper-mode nil)) ;; avoid viper.el ask about viperizing
415 (unless (boundp 'gnus-registry-install) 415 (unless (boundp 'gnus-registry-install)
416 (setq gnus-registry-install nil)) ;; avoid gnus-registery.el querying 416 (setq gnus-registry-install nil)) ;; avoid gnus-registry.el querying
417 417
418 (mapatoms 418 (mapatoms
419 (lambda (symbol) 419 (lambda (symbol)
diff --git a/lisp/info.el b/lisp/info.el
index 0148ee544f9..4f2f33d017c 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -231,6 +231,12 @@ want to set `Info-refill-paragraphs'."
231 (const :tag "Replace tag and hide reference" t) 231 (const :tag "Replace tag and hide reference" t)
232 (const :tag "Hide tag and reference" hide) 232 (const :tag "Hide tag and reference" hide)
233 (other :tag "Only replace tag" tag)) 233 (other :tag "Only replace tag" tag))
234 :set (lambda (sym val)
235 (set sym val)
236 (dolist (buffer (buffer-list))
237 (with-current-buffer buffer
238 (when (eq major-mode 'Info-mode)
239 (revert-buffer t t)))))
234 :group 'info) 240 :group 'info)
235 241
236(defcustom Info-refill-paragraphs nil 242(defcustom Info-refill-paragraphs nil
@@ -811,10 +817,6 @@ otherwise, that defaults to `Top'."
811 (concat default-directory (buffer-name)))) 817 (concat default-directory (buffer-name))))
812 (Info-find-node-2 nil nodename)) 818 (Info-find-node-2 nil nodename))
813 819
814;; It's perhaps a bit nasty to kill the *info* buffer to force a re-read,
815;; but at least it keeps this routine (which is for makeinfo-buffer and
816;; Info-revert-buffer-function) out of the way of normal operations.
817;;
818(defun Info-revert-find-node (filename nodename) 820(defun Info-revert-find-node (filename nodename)
819 "Go to an Info node FILENAME and NODENAME, re-reading disk contents. 821 "Go to an Info node FILENAME and NODENAME, re-reading disk contents.
820When *info* is already displaying FILENAME and NODENAME, the window position 822When *info* is already displaying FILENAME and NODENAME, the window position
@@ -822,27 +824,23 @@ is preserved, if possible."
822 (or (eq major-mode 'Info-mode) (switch-to-buffer "*info*")) 824 (or (eq major-mode 'Info-mode) (switch-to-buffer "*info*"))
823 (let ((old-filename Info-current-file) 825 (let ((old-filename Info-current-file)
824 (old-nodename Info-current-node) 826 (old-nodename Info-current-node)
825 (old-buffer-name (buffer-name)) 827 (window-selected (eq (selected-window) (get-buffer-window)))
826 (pcolumn (current-column)) 828 (pcolumn (current-column))
827 (pline (count-lines (point-min) (line-beginning-position))) 829 (pline (count-lines (point-min) (line-beginning-position)))
828 (wline (count-lines (point-min) (window-start))) 830 (wline (count-lines (point-min) (window-start)))
829 (old-history-forward Info-history-forward)
830 (old-history Info-history)
831 (new-history (and Info-current-file 831 (new-history (and Info-current-file
832 (list Info-current-file Info-current-node (point))))) 832 (list Info-current-file Info-current-node (point)))))
833 (kill-buffer (current-buffer)) 833 ;; When `Info-current-file' is nil, `Info-find-node-2' rereads the file.
834 (switch-to-buffer (or old-buffer-name "*info*")) 834 (setq Info-current-file nil)
835 (Info-mode)
836 (Info-find-node filename nodename) 835 (Info-find-node filename nodename)
837 (setq Info-history-forward old-history-forward)
838 (setq Info-history old-history)
839 (if (and (equal old-filename Info-current-file) 836 (if (and (equal old-filename Info-current-file)
840 (equal old-nodename Info-current-node)) 837 (equal old-nodename Info-current-node))
841 (progn 838 (progn
842 ;; note goto-line is no good, we want to measure from point-min 839 ;; note goto-line is no good, we want to measure from point-min
843 (goto-char (point-min)) 840 (when window-selected
844 (forward-line wline) 841 (goto-char (point-min))
845 (set-window-start (selected-window) (point)) 842 (forward-line wline)
843 (set-window-start (selected-window) (point)))
846 (goto-char (point-min)) 844 (goto-char (point-min))
847 (forward-line pline) 845 (forward-line pline)
848 (move-to-column pcolumn)) 846 (move-to-column pcolumn))
@@ -1087,7 +1085,7 @@ a case-insensitive match is tried."
1087 ;; Add anchors to the history too 1085 ;; Add anchors to the history too
1088 (setq Info-history-list 1086 (setq Info-history-list
1089 (cons new-history 1087 (cons new-history
1090 (delete new-history Info-history-list)))) 1088 (remove new-history Info-history-list))))
1091 (goto-char anchorpos)) 1089 (goto-char anchorpos))
1092 ((numberp Info-point-loc) 1090 ((numberp Info-point-loc)
1093 (forward-line (- Info-point-loc 2)) 1091 (forward-line (- Info-point-loc 2))
@@ -1514,7 +1512,7 @@ escaped (\\\",\\\\)."
1514 ;; Add a new unique history item to full history list 1512 ;; Add a new unique history item to full history list
1515 (let ((new-history (list Info-current-file Info-current-node))) 1513 (let ((new-history (list Info-current-file Info-current-node)))
1516 (setq Info-history-list 1514 (setq Info-history-list
1517 (cons new-history (delete new-history Info-history-list))) 1515 (cons new-history (remove new-history Info-history-list)))
1518 (setq Info-history-forward nil)) 1516 (setq Info-history-forward nil))
1519 (if (not (eq Info-fontify-maximum-menu-size nil)) 1517 (if (not (eq Info-fontify-maximum-menu-size nil))
1520 (Info-fontify-node)) 1518 (Info-fontify-node))
@@ -1846,7 +1844,9 @@ If DIRECTION is `backward', search in the reverse direction."
1846 (setq list nil))) 1844 (setq list nil)))
1847 (if found 1845 (if found
1848 (message "") 1846 (message "")
1849 (signal 'search-failed (list regexp)))) 1847 (signal 'search-failed (if isearch-mode
1848 (list regexp "end of the manual")
1849 (list regexp)))))
1850 (if (not found) 1850 (if (not found)
1851 (progn (Info-read-subfile osubfile) 1851 (progn (Info-read-subfile osubfile)
1852 (goto-char opoint) 1852 (goto-char opoint)
@@ -2153,7 +2153,7 @@ If SAME-FILE is non-nil, do not move to a different Info file."
2153 (insert "Recently Visited Nodes\n") 2153 (insert "Recently Visited Nodes\n")
2154 (insert "**********************\n\n") 2154 (insert "**********************\n\n")
2155 (insert "* Menu:\n\n") 2155 (insert "* Menu:\n\n")
2156 (let ((hl (delete '("*History*" "Top") Info-history-list))) 2156 (let ((hl (remove '("*History*" "Top") Info-history-list)))
2157 (while hl 2157 (while hl
2158 (let ((file (nth 0 (car hl))) 2158 (let ((file (nth 0 (car hl)))
2159 (node (nth 1 (car hl)))) 2159 (node (nth 1 (car hl))))
@@ -3403,7 +3403,7 @@ Build a menu of the possible matches."
3403(declare-function finder-unknown-keywords "finder" ()) 3403(declare-function finder-unknown-keywords "finder" ())
3404(declare-function lm-commentary "lisp-mnt" (&optional file)) 3404(declare-function lm-commentary "lisp-mnt" (&optional file))
3405(defvar finder-keywords-hash) 3405(defvar finder-keywords-hash)
3406(defvar package-alist) ; finder requires package 3406(defvar package--builtins) ; finder requires package
3407 3407
3408(defun Info-finder-find-node (_filename nodename &optional _no-going-back) 3408(defun Info-finder-find-node (_filename nodename &optional _no-going-back)
3409 "Finder-specific implementation of `Info-find-node-2'." 3409 "Finder-specific implementation of `Info-find-node-2'."
@@ -3417,14 +3417,14 @@ Build a menu of the possible matches."
3417 (insert "***************\n\n") 3417 (insert "***************\n\n")
3418 (insert "* Menu:\n\n") 3418 (insert "* Menu:\n\n")
3419 (dolist (assoc (append '((all . "All package info") 3419 (dolist (assoc (append '((all . "All package info")
3420 (unknown . "unknown keywords")) 3420 (unknown . "Unknown keywords"))
3421 finder-known-keywords)) 3421 finder-known-keywords))
3422 (let ((keyword (car assoc))) 3422 (let ((keyword (car assoc)))
3423 (insert (format "* %s %s.\n" 3423 (insert (format "* %s %s.\n"
3424 (concat (symbol-name keyword) ": " 3424 (concat (symbol-name keyword) ": "
3425 "kw:" (symbol-name keyword) ".") 3425 "Keyword " (symbol-name keyword) ".")
3426 (cdr assoc)))))) 3426 (cdr assoc))))))
3427 ((equal nodename "unknown") 3427 ((equal nodename "Keyword unknown")
3428 ;; Display unknown keywords 3428 ;; Display unknown keywords
3429 (insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n" 3429 (insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n"
3430 Info-finder-file nodename)) 3430 Info-finder-file nodename))
@@ -3434,24 +3434,29 @@ Build a menu of the possible matches."
3434 (mapc 3434 (mapc
3435 (lambda (assoc) 3435 (lambda (assoc)
3436 (insert (format "* %-14s %s.\n" 3436 (insert (format "* %-14s %s.\n"
3437 (concat (symbol-name (car assoc)) "::") 3437 (concat (symbol-name (car assoc)) ": "
3438 "Keyword " (symbol-name (car assoc)) ".")
3438 (cdr assoc)))) 3439 (cdr assoc))))
3439 (finder-unknown-keywords))) 3440 (finder-unknown-keywords)))
3440 ((equal nodename "all") 3441 ((equal nodename "Keyword all")
3441 ;; Display all package info. 3442 ;; Display all package info.
3442 (insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n" 3443 (insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n"
3443 Info-finder-file nodename)) 3444 Info-finder-file nodename))
3444 (insert "Finder Package Info\n") 3445 (insert "Finder Package Info\n")
3445 (insert "*******************\n\n") 3446 (insert "*******************\n\n")
3446 (dolist (package package-alist) 3447 (insert "* Menu:\n\n")
3447 (insert (format "%s - %s\n" 3448 (let (desc)
3448 (format "*Note %s::" (nth 0 package)) 3449 (dolist (package package--builtins)
3449 (nth 1 package))))) 3450 (setq desc (cdr-safe package))
3450 ((string-match "\\`kw:" nodename) 3451 (when (vectorp desc)
3452 (insert (format "* %-16s %s.\n"
3453 (concat (symbol-name (car package)) "::")
3454 (aref desc 2)))))))
3455 ((string-match "\\`Keyword " nodename)
3451 (setq nodename (substring nodename (match-end 0))) 3456 (setq nodename (substring nodename (match-end 0)))
3452 ;; Display packages that match the keyword 3457 ;; Display packages that match the keyword
3453 ;; or the list of keywords separated by comma. 3458 ;; or the list of keywords separated by comma.
3454 (insert (format "\n\^_\nFile: %s, Node: kw:%s, Up: Top\n\n" 3459 (insert (format "\n\^_\nFile: %s, Node: Keyword %s, Up: Top\n\n"
3455 Info-finder-file nodename)) 3460 Info-finder-file nodename))
3456 (insert "Finder Packages\n") 3461 (insert "Finder Packages\n")
3457 (insert "***************\n\n") 3462 (insert "***************\n\n")
@@ -3463,11 +3468,11 @@ Build a menu of the possible matches."
3463 (split-string nodename ",[ \t\n]*" t) 3468 (split-string nodename ",[ \t\n]*" t)
3464 (list nodename)))) 3469 (list nodename))))
3465 hits desc) 3470 hits desc)
3466 (dolist (kw keywords) 3471 (dolist (keyword keywords)
3467 (push (copy-tree (gethash kw finder-keywords-hash)) hits)) 3472 (push (copy-tree (gethash keyword finder-keywords-hash)) hits))
3468 (setq hits (delete-dups (apply 'append hits))) 3473 (setq hits (delete-dups (apply 'append hits)))
3469 (dolist (package hits) 3474 (dolist (package hits)
3470 (setq desc (cdr-safe (assq package package-alist))) 3475 (setq desc (cdr-safe (assq package package--builtins)))
3471 (when (vectorp desc) 3476 (when (vectorp desc)
3472 (insert (format "* %-16s %s.\n" 3477 (insert (format "* %-16s %s.\n"
3473 (concat (symbol-name package) "::") 3478 (concat (symbol-name package) "::")
diff --git a/lisp/international/characters.el b/lisp/international/characters.el
index 94237a0a489..55aee4d53db 100644
--- a/lisp/international/characters.el
+++ b/lisp/international/characters.el
@@ -410,7 +410,7 @@ with L, LRE, or LRO Unicode bidi character type.")
410 ("à¾-ྐྵྺྻྼ" "w" ?0) ; 410 ("à¾-ྐྵྺྻྼ" "w" ?0) ;
411 ("ིེཻོཽྀ" "w" ?2) ; upper vowel 411 ("ིེཻོཽྀ" "w" ?2) ; upper vowel
412 ("ཾྂྃ྆྇ྈྉྊྋ" "w" ?2) ; upper modifier 412 ("ཾྂྃ྆྇ྈྉྊྋ" "w" ?2) ; upper modifier
413 ("྄ཱུ༙༵༷" "w" ?3) ; lowel vowel/modifier 413 ("྄ཱུ༙༵༷" "w" ?3) ; lower vowel/modifier
414 ("཰" "w" ?3) ; invisible vowel a 414 ("཰" "w" ?3) ; invisible vowel a
415 ("༠-༩༪-༳" "w" ?6) ; digit 415 ("༠-༩༪-༳" "w" ?6) ; digit
416 ("་à¼-༒༔ཿ" "." ?|) ; line-break char 416 ("་à¼-༒༔ཿ" "." ?|) ; line-break char
@@ -512,7 +512,7 @@ with L, LRE, or LRO Unicode bidi character type.")
512 ;; relating Unicode categories to Emacs syntax codes. 512 ;; relating Unicode categories to Emacs syntax codes.
513 513
514 ;; NBSP isn't semantically interchangeable with other whitespace chars, 514 ;; NBSP isn't semantically interchangeable with other whitespace chars,
515 ;; so it's more like punctation. 515 ;; so it's more like punctuation.
516 (set-case-syntax ?  "." tbl) 516 (set-case-syntax ?  "." tbl)
517 (set-case-syntax ?¡ "." tbl) 517 (set-case-syntax ?¡ "." tbl)
518 (set-case-syntax ?¦ "_" tbl) 518 (set-case-syntax ?¦ "_" tbl)
diff --git a/lisp/international/mule-conf.el b/lisp/international/mule-conf.el
index 870f2bece28..e27424b2328 100644
--- a/lisp/international/mule-conf.el
+++ b/lisp/international/mule-conf.el
@@ -218,7 +218,7 @@
218(fmakunbound 'define-iso-single-byte-charset) 218(fmakunbound 'define-iso-single-byte-charset)
219 219
220;; Can this be shared with 8859-11? 220;; Can this be shared with 8859-11?
221;; N.b. not all of these are defined unicodes. 221;; N.b. not all of these are defined in Unicode.
222(define-charset 'thai-tis620 222(define-charset 'thai-tis620
223 "TIS620.2533" 223 "TIS620.2533"
224 :short-name "TIS620.2533" 224 :short-name "TIS620.2533"
@@ -865,7 +865,7 @@
865 865
866;; Lao script. 866;; Lao script.
867;; Codes 0x21..0x7E are mapped to Unicode U+0E81..U+0EDF. 867;; Codes 0x21..0x7E are mapped to Unicode U+0E81..U+0EDF.
868;; Not all of them are defined unicodes. 868;; Not all of them are defined in Unicode.
869(define-charset 'lao 869(define-charset 'lao
870 "Lao characters (ISO10646 0E81..0EDF)" 870 "Lao characters (ISO10646 0E81..0EDF)"
871 :short-name "Lao" 871 :short-name "Lao"
diff --git a/lisp/international/mule.el b/lisp/international/mule.el
index 6888056704d..58a08f4506f 100644
--- a/lisp/international/mule.el
+++ b/lisp/international/mule.el
@@ -1572,7 +1572,7 @@ of `ctext-non-standard-encodings-alist'.")
1572;; character in CHARSET is encoded using extended segment. In the 1572;; character in CHARSET is encoded using extended segment. In the
1573;; latter case, a character in CHARSET is encoded using normal ISO2022 1573;; latter case, a character in CHARSET is encoded using normal ISO2022
1574;; designation sequence. If a character is not in any of CHARSETs, it 1574;; designation sequence. If a character is not in any of CHARSETs, it
1575;; is encoded using UTF-8 encoding extention. 1575;; is encoded using UTF-8 encoding extension.
1576 1576
1577(defun ctext-non-standard-encodings-table () 1577(defun ctext-non-standard-encodings-table ()
1578 (let* ((table (append ctext-non-standard-encodings 1578 (let* ((table (append ctext-non-standard-encodings
@@ -1656,7 +1656,7 @@ in-place."
1656 (insert 2))) 1656 (insert 2)))
1657 ;; Encode this range as characters in CHARSET. 1657 ;; Encode this range as characters in CHARSET.
1658 (put-text-property last-pos (point) 'charset charset)) 1658 (put-text-property last-pos (point) 'charset charset))
1659 ;; Encode this range using UTF-8 encoding extention. 1659 ;; Encode this range using UTF-8 encoding extension.
1660 (encode-coding-region last-pos (point) 'mule-utf-8) 1660 (encode-coding-region last-pos (point) 'mule-utf-8)
1661 (save-excursion 1661 (save-excursion
1662 (goto-char last-pos) 1662 (goto-char last-pos)
diff --git a/lisp/international/ogonek.el b/lisp/international/ogonek.el
index 0da6cc614fd..cc8d1e25c66 100644
--- a/lisp/international/ogonek.el
+++ b/lisp/international/ogonek.el
@@ -284,11 +284,11 @@ The functions come in the following groups.
284 :type 'character 284 :type 'character
285 :group 'ogonek) 285 :group 'ogonek)
286(defcustom ogonek-prefix-from-encoding "iso8859-2" 286(defcustom ogonek-prefix-from-encoding "iso8859-2"
287 "Encoding in the source file subject to prefixifation." 287 "Encoding in the source file subject to prefixation."
288 :type ogonek-encoding-choices 288 :type ogonek-encoding-choices
289 :group 'ogonek) 289 :group 'ogonek)
290(defcustom ogonek-prefix-to-encoding "iso8859-2" 290(defcustom ogonek-prefix-to-encoding "iso8859-2"
291 "Encoding in the target file subject to deprefixifation." 291 "Encoding in the target file subject to deprefixation."
292 :type ogonek-encoding-choices 292 :type ogonek-encoding-choices
293 :group 'ogonek) 293 :group 'ogonek)
294 294
diff --git a/lisp/international/quail.el b/lisp/international/quail.el
index bdbf2c07b7a..a29b729dcf0 100644
--- a/lisp/international/quail.el
+++ b/lisp/international/quail.el
@@ -2701,7 +2701,7 @@ KEY BINDINGS FOR CONVERSION
2701 2701
2702(put 'quail-decode-map 'char-table-extra-slots 0) 2702(put 'quail-decode-map 'char-table-extra-slots 0)
2703 2703
2704;; Generate a halfly-cooked decode map (char-table) for the current 2704;; Generate a half-cooked decode map (char-table) for the current
2705;; Quail map. An element for a character C is a key string or a list 2705;; Quail map. An element for a character C is a key string or a list
2706;; of a key strings to type to input C. The lenth of key string is at 2706;; of a key strings to type to input C. The lenth of key string is at
2707;; most 2. If it is 2, more keys may be required to input C. 2707;; most 2. If it is 2, more keys may be required to input C.
@@ -2974,7 +2974,7 @@ of each directory."
2974 (if (not (re-search-forward leim-list-entry-regexp nil t)) 2974 (if (not (re-search-forward leim-list-entry-regexp nil t))
2975 nil 2975 nil
2976 2976
2977 ;; Remove garbages after the header. 2977 ;; Remove garbage after the header.
2978 (goto-char (match-beginning 0)) 2978 (goto-char (match-beginning 0))
2979 (if (< pos (point)) 2979 (if (< pos (point))
2980 (delete-region pos (point))) 2980 (delete-region pos (point)))
diff --git a/lisp/international/titdic-cnv.el b/lisp/international/titdic-cnv.el
index 757322aa0ce..0ba0b9085b9 100644
--- a/lisp/international/titdic-cnv.el
+++ b/lisp/international/titdic-cnv.el
@@ -1179,7 +1179,7 @@ the generated Quail package is saved."
1179 (setq tail (cdr tail))))) 1179 (setq tail (cdr tail)))))
1180 1180
1181(defun batch-miscdic-convert () 1181(defun batch-miscdic-convert ()
1182 "Run `miscdic-convert' on the files remaing on the command line. 1182 "Run `miscdic-convert' on the files remaining on the command line.
1183Use this from the command line, with `-batch'; 1183Use this from the command line, with `-batch';
1184it won't work in an interactive Emacs. 1184it won't work in an interactive Emacs.
1185If there's an argument \"-dir\", the next argument specifies a directory 1185If there's an argument \"-dir\", the next argument specifies a directory
diff --git a/lisp/isearch.el b/lisp/isearch.el
index 977de6ac4b0..39ed7adc9c4 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -1162,11 +1162,10 @@ The following additional command keys are active while editing.
1162 1162
1163 (unwind-protect 1163 (unwind-protect
1164 (let* ((message-log-max nil) 1164 (let* ((message-log-max nil)
1165 ;; Protect global value of search rings from updating 1165 ;; Don't add a new search string to the search ring here
1166 ;; by `read-from-minibuffer'. It should be updated only 1166 ;; in `read-from-minibuffer'. It should be added only
1167 ;; by `isearch-update-ring' in `isearch-done', not here. 1167 ;; by `isearch-update-ring' called from `isearch-done'.
1168 (search-ring search-ring) 1168 (history-add-new-input nil)
1169 (regexp-search-ring regexp-search-ring)
1170 ;; Binding minibuffer-history-symbol to nil is a work-around 1169 ;; Binding minibuffer-history-symbol to nil is a work-around
1171 ;; for some incompatibility with gmhist. 1170 ;; for some incompatibility with gmhist.
1172 (minibuffer-history-symbol)) 1171 (minibuffer-history-symbol))
@@ -2674,25 +2673,27 @@ by other Emacs features."
2674 ;; something important did indeed change 2673 ;; something important did indeed change
2675 (lazy-highlight-cleanup t) ;kill old loop & remove overlays 2674 (lazy-highlight-cleanup t) ;kill old loop & remove overlays
2676 (setq isearch-lazy-highlight-error isearch-error) 2675 (setq isearch-lazy-highlight-error isearch-error)
2677 (when (not isearch-error) 2676 ;; It used to check for `(not isearch-error)' here, but actually
2678 (setq isearch-lazy-highlight-start-limit beg 2677 ;; lazy-highlighting might find matches to highlight even when
2679 isearch-lazy-highlight-end-limit end) 2678 ;; `isearch-error' is non-nil. (Bug#9918)
2680 (setq isearch-lazy-highlight-window (selected-window) 2679 (setq isearch-lazy-highlight-start-limit beg
2681 isearch-lazy-highlight-window-start (window-start) 2680 isearch-lazy-highlight-end-limit end)
2682 isearch-lazy-highlight-window-end (window-end) 2681 (setq isearch-lazy-highlight-window (selected-window)
2683 isearch-lazy-highlight-start (point) 2682 isearch-lazy-highlight-window-start (window-start)
2684 isearch-lazy-highlight-end (point) 2683 isearch-lazy-highlight-window-end (window-end)
2685 isearch-lazy-highlight-wrapped nil 2684 isearch-lazy-highlight-start (point)
2686 isearch-lazy-highlight-last-string isearch-string 2685 isearch-lazy-highlight-end (point)
2687 isearch-lazy-highlight-case-fold-search isearch-case-fold-search 2686 isearch-lazy-highlight-wrapped nil
2688 isearch-lazy-highlight-regexp isearch-regexp 2687 isearch-lazy-highlight-last-string isearch-string
2689 isearch-lazy-highlight-space-regexp search-whitespace-regexp 2688 isearch-lazy-highlight-case-fold-search isearch-case-fold-search
2690 isearch-lazy-highlight-word isearch-word 2689 isearch-lazy-highlight-regexp isearch-regexp
2691 isearch-lazy-highlight-forward isearch-forward) 2690 isearch-lazy-highlight-space-regexp search-whitespace-regexp
2691 isearch-lazy-highlight-word isearch-word
2692 isearch-lazy-highlight-forward isearch-forward)
2692 (unless (equal isearch-string "") 2693 (unless (equal isearch-string "")
2693 (setq isearch-lazy-highlight-timer 2694 (setq isearch-lazy-highlight-timer
2694 (run-with-idle-timer lazy-highlight-initial-delay nil 2695 (run-with-idle-timer lazy-highlight-initial-delay nil
2695 'isearch-lazy-highlight-update)))))) 2696 'isearch-lazy-highlight-update)))))
2696 2697
2697(defun isearch-lazy-highlight-search () 2698(defun isearch-lazy-highlight-search ()
2698 "Search ahead for the next or previous match, for lazy highlighting. 2699 "Search ahead for the next or previous match, for lazy highlighting.
diff --git a/lisp/iswitchb.el b/lisp/iswitchb.el
index a96fbf9253f..21201c6cff5 100644
--- a/lisp/iswitchb.el
+++ b/lisp/iswitchb.el
@@ -122,7 +122,7 @@
122;; t IN | INBOX 122;; t IN | INBOX
123;; t In | [No match] 123;; t In | [No match]
124 124
125;;; Customisation 125;;; Customization
126 126
127;; See the User Variables section below for easy ways to change the 127;; See the User Variables section below for easy ways to change the
128;; functionality of the program. These are accessible using the 128;; functionality of the program. These are accessible using the
diff --git a/lisp/json.el b/lisp/json.el
index 33e985abbee..2debd46c842 100644
--- a/lisp/json.el
+++ b/lisp/json.el
@@ -166,7 +166,7 @@ this around your call to `json-read' instead of `setq'ing it.")
166(put 'json-number-format 'error-conditions 166(put 'json-number-format 'error-conditions
167 '(json-number-format json-error error)) 167 '(json-number-format json-error error))
168 168
169(put 'json-string-escape 'error-message "Bad unicode escape") 169(put 'json-string-escape 'error-message "Bad Unicode escape")
170(put 'json-string-escape 'error-conditions 170(put 'json-string-escape 'error-conditions
171 '(json-string-escape json-error error)) 171 '(json-string-escape json-error error))
172 172
diff --git a/lisp/language/european.el b/lisp/language/european.el
index 5bdec6dec7b..3c2cb083ff6 100644
--- a/lisp/language/european.el
+++ b/lisp/language/european.el
@@ -613,6 +613,7 @@ method and applying Turkish case rules for the characters i, I, $(D)E(B, $(D*
613 :mnemonic ?M 613 :mnemonic ?M
614 :charset-list '(mac-roman) 614 :charset-list '(mac-roman)
615 :mime-charset 'macintosh) 615 :mime-charset 'macintosh)
616(define-coding-system-alias 'macintosh 'mac-roman)
616 617
617(define-coding-system 'next 618(define-coding-system 'next
618 "NeXTstep encoding" 619 "NeXTstep encoding"
diff --git a/lisp/language/thai-util.el b/lisp/language/thai-util.el
index b7dbcc1a956..e9943df12a8 100644
--- a/lisp/language/thai-util.el
+++ b/lisp/language/thai-util.el
@@ -124,7 +124,7 @@
124 (?ใ vowel-base "VOWEL SIGN SARA MAI MUAN") ; 0xE3 124 (?ใ vowel-base "VOWEL SIGN SARA MAI MUAN") ; 0xE3
125 (?ไ vowel-base "VOWEL SIGN SARA MAI MALAI") ; 0xE4 125 (?ไ vowel-base "VOWEL SIGN SARA MAI MALAI") ; 0xE4
126 (?ๅ vowel-base "LAK KHANG YAO") ; 0xE5 126 (?ๅ vowel-base "LAK KHANG YAO") ; 0xE5
127 (?ๆ special "MAI YAMOK (repetion)") ; 0xE6 127 (?ๆ special "MAI YAMOK (repetition)") ; 0xE6
128 (?็ sign-upper "VOWEL SIGN MAI TAI KHU N/S-T") ; 0xE7 128 (?็ sign-upper "VOWEL SIGN MAI TAI KHU N/S-T") ; 0xE7
129 (?่ tone "TONE MAI EK N/S-T") ; 0xE8 129 (?่ tone "TONE MAI EK N/S-T") ; 0xE8
130 (?้ tone "TONE MAI THO N/S-T") ; 0xE9 130 (?้ tone "TONE MAI THO N/S-T") ; 0xE9
diff --git a/lisp/loadhist.el b/lisp/loadhist.el
index da20e4cb7ca..51df6ecff0a 100644
--- a/lisp/loadhist.el
+++ b/lisp/loadhist.el
@@ -133,7 +133,7 @@ from a file."
133 font-lock-unfontify-region-function 133 font-lock-unfontify-region-function
134 kill-buffer-query-functions kill-emacs-query-functions 134 kill-buffer-query-functions kill-emacs-query-functions
135 lisp-indent-function mouse-position-function 135 lisp-indent-function mouse-position-function
136 redisplaylay-end-trigger-functions suspend-tty-functions 136 redisplay-end-trigger-functions suspend-tty-functions
137 temp-buffer-show-function window-scroll-functions 137 temp-buffer-show-function window-scroll-functions
138 window-size-change-functions write-contents-functions 138 window-size-change-functions write-contents-functions
139 write-file-functions write-region-annotate-functions) 139 write-file-functions write-region-annotate-functions)
diff --git a/lisp/mail/feedmail.el b/lisp/mail/feedmail.el
index 47583e3f860..7167fa567d3 100644
--- a/lisp/mail/feedmail.el
+++ b/lisp/mail/feedmail.el
@@ -1010,7 +1010,7 @@ If it contains a \"%s\", that will be replaced with the value of
1010 1010
1011 1011
1012(defcustom feedmail-ask-before-queue-reprompt "FQM: Please type q, i, d, or e; or ? for help [%s]: " 1012(defcustom feedmail-ask-before-queue-reprompt "FQM: Please type q, i, d, or e; or ? for help [%s]: "
1013 "A string which will be used for repompting after invalid input. 1013 "A string which will be used for reprompting after invalid input.
1014If it contains a \"%s\", that will be replaced with the value of 1014If it contains a \"%s\", that will be replaced with the value of
1015`feedmail-ask-before-queue-default'." 1015`feedmail-ask-before-queue-default'."
1016 :group 'feedmail-queue 1016 :group 'feedmail-queue
@@ -2188,7 +2188,7 @@ you can set `feedmail-queue-reminder-alist' to nil."
2188 (if (or (eq user-sez ?\C-m) (eq user-sez ?\C-j) (eq user-sez ?y)) 2188 (if (or (eq user-sez ?\C-m) (eq user-sez ?\C-j) (eq user-sez ?y))
2189 (setq user-sez d-char)) 2189 (setq user-sez d-char))
2190 ;; these char-to-int things are because of some 2190 ;; these char-to-int things are because of some
2191 ;; incomprensible difference between the two in 2191 ;; incomprehensible difference between the two in
2192 ;; byte-compiled stuff between Emacs and XEmacs 2192 ;; byte-compiled stuff between Emacs and XEmacs
2193 ;; (well, I'm sure someone could comprehend it, 2193 ;; (well, I'm sure someone could comprehend it,
2194 ;; but I say 'uncle') 2194 ;; but I say 'uncle')
@@ -2261,9 +2261,9 @@ the counts."
2261 (while (string-match feedmail-queue-slug-suspect-regexp slug) (setq slug (replace-match "-" nil nil slug))) 2261 (while (string-match feedmail-queue-slug-suspect-regexp slug) (setq slug (replace-match "-" nil nil slug)))
2262 ;; collapse multiple hyphens to one 2262 ;; collapse multiple hyphens to one
2263 (while (string-match "--+" slug) (setq slug (replace-match "-" nil nil slug))) 2263 (while (string-match "--+" slug) (setq slug (replace-match "-" nil nil slug)))
2264 ;; for tidyness, peel off leading hyphens 2264 ;; for tidiness, peel off leading hyphens
2265 (if (string-match "^-*" slug) (setq slug (replace-match "" nil nil slug))) 2265 (if (string-match "^-*" slug) (setq slug (replace-match "" nil nil slug)))
2266 ;; for tidyness, peel off trailing hyphens 2266 ;; for tidiness, peel off trailing hyphens
2267 (if (string-match "-*$" slug) (setq slug (replace-match "" nil nil slug))) 2267 (if (string-match "-*$" slug) (setq slug (replace-match "" nil nil slug)))
2268 slug 2268 slug
2269 ) 2269 )
diff --git a/lisp/mail/footnote.el b/lisp/mail/footnote.el
index 0f1669562de..342d6c16b6e 100644
--- a/lisp/mail/footnote.el
+++ b/lisp/mail/footnote.el
@@ -294,14 +294,14 @@ Use a range of Latin-1 non-ASCII characters for footnoting."
294;; Unicode 294;; Unicode
295 295
296(defconst footnote-unicode-string "â°Â¹Â²Â³â´âµâ¶â·â¸â¹" 296(defconst footnote-unicode-string "â°Â¹Â²Â³â´âµâ¶â·â¸â¹"
297 "String of unicode footnoting characters.") 297 "String of Unicode footnoting characters.")
298 298
299(defconst footnote-unicode-regexp (concat "[" footnote-unicode-string "]+") 299(defconst footnote-unicode-regexp (concat "[" footnote-unicode-string "]+")
300 "Regexp for unicode footnoting characters.") 300 "Regexp for Unicode footnoting characters.")
301 301
302(defun Footnote-unicode (n) 302(defun Footnote-unicode (n)
303 "Unicode footnote style. 303 "Unicode footnote style.
304Use unicode characters for footnoting." 304Use Unicode characters for footnoting."
305 (let (modulus result done) 305 (let (modulus result done)
306 (while (not done) 306 (while (not done)
307 (setq modulus (mod n 10) 307 (setq modulus (mod n 10)
@@ -348,7 +348,7 @@ buffer use the command `Footnote-set-style'."
348 348
349;;; Style utilities & functions 349;;; Style utilities & functions
350(defun Footnote-style-p (style) 350(defun Footnote-style-p (style)
351 "Return non-nil if style is a valid style known to footnote-mode." 351 "Return non-nil if style is a valid style known to `footnote-mode'."
352 (assq style footnote-style-alist)) 352 (assq style footnote-style-alist))
353 353
354(defun Footnote-index-to-string (index) 354(defun Footnote-index-to-string (index)
diff --git a/lisp/mail/metamail.el b/lisp/mail/metamail.el
index 9269a24c4cb..fcc334ea30b 100644
--- a/lisp/mail/metamail.el
+++ b/lisp/mail/metamail.el
@@ -165,7 +165,7 @@ redisplayed as output is inserted."
165 (list (format "EMACS_VIEW_MODE=%d" 165 (list (format "EMACS_VIEW_MODE=%d"
166 (if (numberp viewmode) viewmode 1))))) 166 (if (numberp viewmode) viewmode 1)))))
167 (save-excursion 167 (save-excursion
168 ;; Gee! Metamail does not ouput to stdout if input comes from 168 ;; Gee! Metamail does not output to stdout if input comes from
169 ;; stdin. 169 ;; stdin.
170 (let ((selective-display nil)) ;Disable ^M to nl translation. 170 (let ((selective-display nil)) ;Disable ^M to nl translation.
171 (write-region beg end metafile nil 'nomessage)) 171 (write-region beg end metafile nil 'nomessage))
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 5d219c0084f..184eaca6c4b 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -638,8 +638,11 @@ be available."
638 :version "23.3" 638 :version "23.3"
639 :group 'rmail) 639 :group 'rmail)
640 640
641(defvar rmail-enable-mime-composing t 641(defcustom rmail-enable-mime-composing t
642 "*If non-nil, RMAIL uses `rmail-insert-mime-forwarded-message-function' to forward.") 642 "If non-nil, use `rmail-insert-mime-forwarded-message-function' to forward."
643 :type 'boolean
644 :version "24.1" ; nil -> t
645 :group 'rmail)
643 646
644(defvar rmail-show-mime-function nil 647(defvar rmail-show-mime-function nil
645 "Function of no argument called to show a decoded MIME message. 648 "Function of no argument called to show a decoded MIME message.
@@ -649,8 +652,8 @@ The package providing MIME support should set this.")
649;;;###autoload 652;;;###autoload
650(defvar rmail-insert-mime-forwarded-message-function nil 653(defvar rmail-insert-mime-forwarded-message-function nil
651 "Function to insert a message in MIME format so it can be forwarded. 654 "Function to insert a message in MIME format so it can be forwarded.
652This function is called if `rmail-enable-mime' or 655This function is called if `rmail-enable-mime' and
653`rmail-enable-mime-composing' is non-nil. 656`rmail-enable-mime-composing' are non-nil.
654It is called with one argument FORWARD-BUFFER, which is a 657It is called with one argument FORWARD-BUFFER, which is a
655buffer containing the message to forward. The current buffer 658buffer containing the message to forward. The current buffer
656is the outgoing mail buffer.") 659is the outgoing mail buffer.")
@@ -681,12 +684,17 @@ expression, LIMIT is the position specifying the end of header.")
681 684
682(defvar rmail-mime-feature 'rmailmm 685(defvar rmail-mime-feature 'rmailmm
683 "Feature to require for MIME support in Rmail. 686 "Feature to require for MIME support in Rmail.
684When starting Rmail, if `rmail-enable-mime' is non-nil, 687When starting Rmail, if `rmail-enable-mime' is non-nil, this
685this feature is required with `require'. 688feature is loaded with `require'. The default value is `rmailmm'.
686 689
687The default value is `rmailmm'") 690The library should set the variable `rmail-show-mime-function'
691to an appropriate value, and optionally also set
692`rmail-search-mime-message-function',
693`rmail-search-mime-header-function',
694`rmail-insert-mime-forwarded-message-function', and
695`rmail-insert-mime-resent-message-function'.")
688 696
689;; FIXME this is unused. 697;; FIXME this is unused since 23.1.
690(defvar rmail-decode-mime-charset t 698(defvar rmail-decode-mime-charset t
691 "*Non-nil means a message is decoded by MIME's charset specification. 699 "*Non-nil means a message is decoded by MIME's charset specification.
692If this variable is nil, or the message has not MIME specification, 700If this variable is nil, or the message has not MIME specification,
@@ -696,6 +704,9 @@ If the variable `rmail-enable-mime' is non-nil, this variable is
696ignored, and all the decoding work is done by a feature specified by 704ignored, and all the decoding work is done by a feature specified by
697the variable `rmail-mime-feature'.") 705the variable `rmail-mime-feature'.")
698 706
707(make-obsolete-variable 'rmail-decode-mime-charset
708 "it does nothing." "23.1")
709
699(defvar rmail-mime-charset-pattern 710(defvar rmail-mime-charset-pattern
700 (concat "^content-type:[ \t]*text/plain;" 711 (concat "^content-type:[ \t]*text/plain;"
701 "\\(?:[ \t\n]*\\(?:format\\|delsp\\)=\"?[-a-z0-9]+\"?;\\)*" 712 "\\(?:[ \t\n]*\\(?:format\\|delsp\\)=\"?[-a-z0-9]+\"?;\\)*"
@@ -3128,10 +3139,9 @@ but probably is garbage."
3128 ;; This is adequate because its only caller, rmail-search, 3139 ;; This is adequate because its only caller, rmail-search,
3129 ;; unswaps the buffers. 3140 ;; unswaps the buffers.
3130 (goto-char (rmail-msgbeg msg)) 3141 (goto-char (rmail-msgbeg msg))
3131 (if rmail-enable-mime 3142 (if (and rmail-enable-mime
3132 (if rmail-search-mime-message-function 3143 rmail-search-mime-message-function)
3133 (funcall rmail-search-mime-message-function msg regexp) 3144 (funcall rmail-search-mime-message-function msg regexp)
3134 (error "You must set `rmail-search-mime-message-function'"))
3135 (re-search-forward regexp (rmail-msgend msg) t))) 3145 (re-search-forward regexp (rmail-msgend msg) t)))
3136 3146
3137(defvar rmail-search-last-regexp nil) 3147(defvar rmail-search-last-regexp nil)
@@ -3798,7 +3808,8 @@ see the documentation of `rmail-resend'."
3798 ;; Insert after header separator--before signature if any. 3808 ;; Insert after header separator--before signature if any.
3799 (rfc822-goto-eoh) 3809 (rfc822-goto-eoh)
3800 (forward-line 1) 3810 (forward-line 1)
3801 (if (and rmail-enable-mime rmail-enable-mime-composing) 3811 (if (and rmail-enable-mime rmail-enable-mime-composing
3812 rmail-insert-mime-forwarded-message-function)
3802 (prog1 3813 (prog1
3803 (funcall rmail-insert-mime-forwarded-message-function 3814 (funcall rmail-insert-mime-forwarded-message-function
3804 forward-buffer) 3815 forward-buffer)
@@ -3854,10 +3865,9 @@ typically for purposes of moderating a list."
3854 (unwind-protect 3865 (unwind-protect
3855 (with-current-buffer tembuf 3866 (with-current-buffer tembuf
3856 ;;>> Copy message into temp buffer 3867 ;;>> Copy message into temp buffer
3857 (if rmail-enable-mime 3868 (if (and rmail-enable-mime
3858 (if rmail-insert-mime-resent-message-function 3869 rmail-insert-mime-resent-message-function)
3859 (funcall rmail-insert-mime-resent-message-function mailbuf) 3870 (funcall rmail-insert-mime-resent-message-function mailbuf)
3860 (error "You must set `rmail-insert-mime-resent-message-function'"))
3861 (insert-buffer-substring mailbuf)) 3871 (insert-buffer-substring mailbuf))
3862 (goto-char (point-min)) 3872 (goto-char (point-min))
3863 ;; Delete any Sender field, since that's not specifiable. 3873 ;; Delete any Sender field, since that's not specifiable.
@@ -4494,7 +4504,7 @@ With prefix argument N moves forward N messages with these labels.
4494 4504
4495;;;*** 4505;;;***
4496 4506
4497;;;### (autoloads (rmail-mime) "rmailmm" "rmailmm.el" "6296f0170a37670c49a88a1b92d78187") 4507;;;### (autoloads (rmail-mime) "rmailmm" "rmailmm.el" "5ecb69456c4d86a4e905eb3008602a95")
4498;;; Generated autoloads from rmailmm.el 4508;;; Generated autoloads from rmailmm.el
4499 4509
4500(autoload 'rmail-mime "rmailmm" "\ 4510(autoload 'rmail-mime "rmailmm" "\
@@ -4596,7 +4606,7 @@ If prefix argument REVERSE is non-nil, sorts in reverse order.
4596 4606
4597;;;### (autoloads (rmail-summary-by-senders rmail-summary-by-topic 4607;;;### (autoloads (rmail-summary-by-senders rmail-summary-by-topic
4598;;;;;; rmail-summary-by-regexp rmail-summary-by-recipients rmail-summary-by-labels 4608;;;;;; rmail-summary-by-regexp rmail-summary-by-recipients rmail-summary-by-labels
4599;;;;;; rmail-summary) "rmailsum" "rmailsum.el" "35e07b0a5ea8e41971f31a8780eba6bb") 4609;;;;;; rmail-summary) "rmailsum" "rmailsum.el" "1375d6512b953c0d7c3bde52192f4055")
4600;;; Generated autoloads from rmailsum.el 4610;;; Generated autoloads from rmailsum.el
4601 4611
4602(autoload 'rmail-summary "rmailsum" "\ 4612(autoload 'rmail-summary "rmailsum" "\
diff --git a/lisp/mail/rmailmm.el b/lisp/mail/rmailmm.el
index f3b539c52d0..e53e0c0744e 100644
--- a/lisp/mail/rmailmm.el
+++ b/lisp/mail/rmailmm.el
@@ -281,13 +281,20 @@ TRUNCATED is non-nil if the text of this entity was truncated."
281 281
282(define-button-type 'rmail-mime-save 'action 'rmail-mime-save) 282(define-button-type 'rmail-mime-save 'action 'rmail-mime-save)
283 283
284;; Display options returned by rmail-mime-entity-display.
285;; Value is on of nil, t, raw.
286(defsubst rmail-mime-display-header (disp) (aref disp 0))
287(defsubst rmail-mime-display-tagline (disp) (aref disp 1))
288(defsubst rmail-mime-display-body (disp) (aref disp 2))
289
284(defun rmail-mime-entity-segment (pos &optional entity) 290(defun rmail-mime-entity-segment (pos &optional entity)
285 "Return a vector describing the displayed region of a MIME-entity at POS. 291 "Return a vector describing the displayed region of a MIME-entity at POS.
286Optional 2nd argument ENTITY is the MIME-entity at POS. 292Optional 2nd argument ENTITY is the MIME-entity at POS.
287The value is a vector [INDEX HEADER TAGLINE BODY END], where 293The value is a vector [INDEX HEADER TAGLINE BODY END], where
288 INDEX: index into the returned vector indicating where POS is (1..3) 294 INDEX: index into the returned vector indicating where POS is (1..3)
289 HEADER: the position of the beginning of a header 295 HEADER: the position of the beginning of a header
290 TAGLINE: the position of the beginning of a tag line 296 TAGLINE: the position of the beginning of a tag line, including
297 the newline that precedes it
291 BODY: the position of the beginning of a body 298 BODY: the position of the beginning of a body
292 END: the position of the end of the entity." 299 END: the position of the end of the entity."
293 (save-excursion 300 (save-excursion
@@ -305,21 +312,32 @@ The value is a vector [INDEX HEADER TAGLINE BODY END], where
305 (index 1) 312 (index 1)
306 tagline-beg body-beg end) 313 tagline-beg body-beg end)
307 (goto-char beg) 314 (goto-char beg)
308 (if (aref current 0) 315 ;; If the header is displayed, get past it to the tagline.
316 (if (rmail-mime-display-header current)
309 (search-forward "\n\n" nil t)) 317 (search-forward "\n\n" nil t))
310 (setq tagline-beg (point)) 318 (setq tagline-beg (point))
311 (if (>= pos tagline-beg) 319 (if (>= pos tagline-beg)
312 (setq index 2)) 320 (setq index 2))
313 (if (aref current 1) 321 ;; If the tagline is displayed, get past it to the body.
314 (forward-line 1)) 322 (if (rmail-mime-display-tagline current)
323 ;; The next foward-line call must be in sync with how
324 ;; `rmail-mime-insert-tagline' formats the tagline. The
325 ;; body begins after the empty line that ends the tagline.
326 (forward-line 3))
315 (setq body-beg (point)) 327 (setq body-beg (point))
316 (if (>= pos body-beg) 328 (if (>= pos body-beg)
317 (setq index 3)) 329 (setq index 3))
318 (if (aref current 2) 330 ;; If the body is displayed, find its end.
331 (if (rmail-mime-display-body current)
319 (let ((tag (aref (rmail-mime-entity-tagline entity) 0)) 332 (let ((tag (aref (rmail-mime-entity-tagline entity) 0))
320 tag2) 333 tag2)
321 (setq end (next-single-property-change beg 'rmail-mime-entity 334 (setq end (next-single-property-change beg 'rmail-mime-entity
322 nil (point-max))) 335 nil (point-max)))
336 ;; `tag' is either an empty string or "/n" where n is
337 ;; the number of the part of the multipart MIME message.
338 ;; The loop below finds the next location whose
339 ;; `rmail-mime-entity' property specifies a tag of a
340 ;; different value.
323 (while (and (< end (point-max)) 341 (while (and (< end (point-max))
324 (setq entity (get-text-property end 'rmail-mime-entity) 342 (setq entity (get-text-property end 'rmail-mime-entity)
325 tag2 (aref (rmail-mime-entity-tagline entity) 0)) 343 tag2 (aref (rmail-mime-entity-tagline entity) 0))
@@ -367,7 +385,7 @@ Use `raw' for raw mode, and any other non-nil value for decoded mode."
367 (segment (rmail-mime-entity-segment pos entity))) 385 (segment (rmail-mime-entity-segment pos entity)))
368 (if (or (eq state 'raw) 386 (if (or (eq state 'raw)
369 (and (not state) 387 (and (not state)
370 (not (eq (aref current 0) 'raw)))) 388 (not (eq (rmail-mime-display-header current) 'raw))))
371 ;; Enter the raw mode. 389 ;; Enter the raw mode.
372 (rmail-mime-raw-mode entity) 390 (rmail-mime-raw-mode entity)
373 ;; Enter the shown mode. 391 ;; Enter the shown mode.
@@ -389,7 +407,7 @@ Use `raw' for raw mode, and any other non-nil value for decoded mode."
389 (entity (get-text-property pos 'rmail-mime-entity)) 407 (entity (get-text-property pos 'rmail-mime-entity))
390 (current (aref (rmail-mime-entity-display entity) 0)) 408 (current (aref (rmail-mime-entity-display entity) 0))
391 (segment (rmail-mime-entity-segment pos entity))) 409 (segment (rmail-mime-entity-segment pos entity)))
392 (if (aref current 2) 410 (if (rmail-mime-display-body current)
393 ;; Enter the hidden mode. 411 ;; Enter the hidden mode.
394 (progn 412 (progn
395 ;; If point is in the body part, move it to the tagline 413 ;; If point is in the body part, move it to the tagline
@@ -430,12 +448,15 @@ Use `raw' for raw mode, and any other non-nil value for decoded mode."
430 "Insert a tag line for MIME-entity ENTITY. 448 "Insert a tag line for MIME-entity ENTITY.
431ITEM-LIST is a list of strings or button-elements (list) to add 449ITEM-LIST is a list of strings or button-elements (list) to add
432to the tag line." 450to the tag line."
451 ;; Precede the tagline by an empty line to make it a separate
452 ;; paragraph, so that it is aligned to the left margin of the window
453 ;; even if preceded by a right-to-left paragraph.
433 (insert "\n[") 454 (insert "\n[")
434 (let ((tag (aref (rmail-mime-entity-tagline entity) 0))) 455 (let ((tag (aref (rmail-mime-entity-tagline entity) 0)))
435 (if (> (length tag) 0) (insert (substring tag 1) ":"))) 456 (if (> (length tag) 0) (insert (substring tag 1) ":")))
436 (insert (car (rmail-mime-entity-type entity)) " ") 457 (insert (car (rmail-mime-entity-type entity)) " ")
437 (insert-button (let ((new (aref (rmail-mime-entity-display entity) 1))) 458 (insert-button (let ((new (aref (rmail-mime-entity-display entity) 1)))
438 (if (aref new 2) "Hide" "Show")) 459 (if (rmail-mime-display-body new) "Hide" "Show"))
439 :type 'rmail-mime-toggle 460 :type 'rmail-mime-toggle
440 'help-echo "mouse-2, RET: Toggle show/hide") 461 'help-echo "mouse-2, RET: Toggle show/hide")
441 (dolist (item item-list) 462 (dolist (item item-list)
@@ -443,6 +464,9 @@ to the tag line."
443 (if (stringp item) 464 (if (stringp item)
444 (insert item) 465 (insert item)
445 (apply 'insert-button item)))) 466 (apply 'insert-button item))))
467 ;; Follow the tagline by an empty line to make it a separate
468 ;; paragraph, so that the paragraph direction of the following text
469 ;; is determined based on that text.
446 (insert "]\n\n")) 470 (insert "]\n\n"))
447 471
448(defun rmail-mime-update-tagline (entity) 472(defun rmail-mime-update-tagline (entity)
@@ -463,7 +487,9 @@ to the tag line."
463 (delete-region (button-start button) (point)) 487 (delete-region (button-start button) (point))
464 (put-text-property (point) (button-end button) 'rmail-mime-entity entity) 488 (put-text-property (point) (button-end button) 'rmail-mime-entity entity)
465 (restore-buffer-modified-p modified) 489 (restore-buffer-modified-p modified)
466 (forward-line 1))) 490 ;; The following call to forward-line must be in sync with how
491 ;; rmail-mime-insert-tagline formats the tagline.
492 (forward-line 2)))
467 493
468(defun rmail-mime-insert-header (header) 494(defun rmail-mime-insert-header (header)
469 "Decode and insert a MIME-entity header HEADER in the current buffer. 495 "Decode and insert a MIME-entity header HEADER in the current buffer.
@@ -557,48 +583,35 @@ HEADER is a header component of a MIME-entity object (see
557 (delete-region (point-min) (point-max)))) 583 (delete-region (point-min) (point-max))))
558 584
559 ;; header 585 ;; header
560 (if (eq (aref current 0) (aref new 0)) 586 (if (eq (rmail-mime-display-header current)
587 (rmail-mime-display-header new))
561 (goto-char (aref segment 2)) 588 (goto-char (aref segment 2))
562 (if (aref current 0) 589 (if (rmail-mime-display-header current)
563 (delete-char (- (aref segment 2) (aref segment 1)))) 590 (delete-char (- (aref segment 2) (aref segment 1))))
564 (if (aref new 0) 591 (if (rmail-mime-display-header new)
565 (rmail-mime-insert-header header))) 592 (rmail-mime-insert-header header)))
566 ;; tagline 593 ;; tagline
567 (if (eq (aref current 1) (aref new 1)) 594 (if (eq (rmail-mime-display-tagline current)
568 (if (or (not (aref current 1)) 595 (rmail-mime-display-tagline new))
569 (eq (aref current 2) (aref new 2))) 596 (if (or (not (rmail-mime-display-tagline current))
597 (eq (rmail-mime-display-body current)
598 (rmail-mime-display-body new)))
570 (forward-char (- (aref segment 3) (aref segment 2))) 599 (forward-char (- (aref segment 3) (aref segment 2)))
571 (rmail-mime-update-tagline entity)) 600 (rmail-mime-update-tagline entity))
572 (if (aref current 1) 601 (if (rmail-mime-display-tagline current)
573 (delete-char (- (aref segment 3) (aref segment 2)))) 602 (delete-char (- (aref segment 3) (aref segment 2))))
574 (if (aref new 1) 603 (if (rmail-mime-display-tagline new)
575 (rmail-mime-insert-tagline entity))) 604 (rmail-mime-insert-tagline entity)))
576 ;; body 605 ;; body
577 (if (eq (aref current 2) (aref new 2)) 606 (if (eq (rmail-mime-display-body current)
607 (rmail-mime-display-body new))
578 (forward-char (- (aref segment 4) (aref segment 3))) 608 (forward-char (- (aref segment 4) (aref segment 3)))
579 (if (aref current 2) 609 (if (rmail-mime-display-body current)
580 (delete-char (- (aref segment 4) (aref segment 3)))) 610 (delete-char (- (aref segment 4) (aref segment 3))))
581 (if (aref new 2) 611 (if (rmail-mime-display-body new)
582 (rmail-mime-insert-decoded-text entity))) 612 (rmail-mime-insert-decoded-text entity)))
583 (put-text-property beg (point) 'rmail-mime-entity entity))) 613 (put-text-property beg (point) 'rmail-mime-entity entity)))
584 614
585;; FIXME move to the test/ directory?
586(defun test-rmail-mime-handler ()
587 "Test of a mail using no MIME parts at all."
588 (let ((mail "To: alex@gnu.org
589Content-Type: text/plain; charset=koi8-r
590Content-Transfer-Encoding: 8bit
591MIME-Version: 1.0
592
593\372\304\322\301\327\323\324\327\325\312\324\305\41"))
594 (switch-to-buffer (get-buffer-create "*test*"))
595 (erase-buffer)
596 (set-buffer-multibyte nil)
597 (insert mail)
598 (rmail-mime-show t)
599 (set-buffer-multibyte t)))
600
601
602(defun rmail-mime-insert-image (entity) 615(defun rmail-mime-insert-image (entity)
603 "Decode and insert the image body of MIME-entity ENTITY." 616 "Decode and insert the image body of MIME-entity ENTITY."
604 (let* ((content-type (car (rmail-mime-entity-type entity))) 617 (let* ((content-type (car (rmail-mime-entity-type entity)))
@@ -726,22 +739,25 @@ directly."
726 (setq beg (point)) 739 (setq beg (point))
727 740
728 ;; header 741 ;; header
729 (if (eq (aref current 0) (aref new 0)) 742 (if (eq (rmail-mime-display-header current)
743 (rmail-mime-display-header new))
730 (goto-char (aref segment 2)) 744 (goto-char (aref segment 2))
731 (if (aref current 0) 745 (if (rmail-mime-display-header current)
732 (delete-char (- (aref segment 2) (aref segment 1)))) 746 (delete-char (- (aref segment 2) (aref segment 1))))
733 (if (aref new 0) 747 (if (rmail-mime-display-header new)
734 (rmail-mime-insert-header header))) 748 (rmail-mime-insert-header header)))
735 749
736 ;; tagline 750 ;; tagline
737 (if (eq (aref current 1) (aref new 1)) 751 (if (eq (rmail-mime-display-tagline current)
738 (if (or (not (aref current 1)) 752 (rmail-mime-display-tagline new))
739 (eq (aref current 2) (aref new 2))) 753 (if (or (not (rmail-mime-display-tagline current))
754 (eq (rmail-mime-display-body current)
755 (rmail-mime-display-body new)))
740 (forward-char (- (aref segment 3) (aref segment 2))) 756 (forward-char (- (aref segment 3) (aref segment 2)))
741 (rmail-mime-update-tagline entity)) 757 (rmail-mime-update-tagline entity))
742 (if (aref current 1) 758 (if (rmail-mime-display-tagline current)
743 (delete-char (- (aref segment 3) (aref segment 2)))) 759 (delete-char (- (aref segment 3) (aref segment 2))))
744 (if (aref new 1) 760 (if (rmail-mime-display-tagline new)
745 (rmail-mime-insert-tagline 761 (rmail-mime-insert-tagline
746 entity 762 entity
747 " Save:" 763 " Save:"
@@ -764,11 +780,12 @@ directly."
764 ;; 'image-data data)) 780 ;; 'image-data data))
765 ))) 781 )))
766 ;; body 782 ;; body
767 (if (eq (aref current 2) (aref new 2)) 783 (if (eq (rmail-mime-display-body current)
784 (rmail-mime-display-body new))
768 (forward-char (- (aref segment 4) (aref segment 3))) 785 (forward-char (- (aref segment 4) (aref segment 3)))
769 (if (aref current 2) 786 (if (rmail-mime-display-body current)
770 (delete-char (- (aref segment 4) (aref segment 3)))) 787 (delete-char (- (aref segment 4) (aref segment 3))))
771 (if (aref new 2) 788 (if (rmail-mime-display-body new)
772 (cond ((eq (cdr bulk-data) 'text) 789 (cond ((eq (cdr bulk-data) 'text)
773 (rmail-mime-insert-decoded-text entity)) 790 (rmail-mime-insert-decoded-text entity))
774 ((cdr bulk-data) 791 ((cdr bulk-data)
@@ -779,27 +796,6 @@ directly."
779 (rmail-mime-insert-decoded-text entity))))) 796 (rmail-mime-insert-decoded-text entity)))))
780 (put-text-property beg (point) 'rmail-mime-entity entity))) 797 (put-text-property beg (point) 'rmail-mime-entity entity)))
781 798
782(defun test-rmail-mime-bulk-handler ()
783 "Test of a mail used as an example in RFC 2183."
784 (let ((mail "Content-Type: image/jpeg
785Content-Disposition: attachment; filename=genome.jpeg;
786 modification-date=\"Wed, 12 Feb 1997 16:29:51 -0500\";
787Content-Description: a complete map of the human genome
788Content-Transfer-Encoding: base64
789
790iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAABGdBTUEAALGPC/xhBQAAAAZQ
791TFRF////AAAAVcLTfgAAAPZJREFUeNq9ldsOwzAIQ+3//+l1WlvA5ZLsoUiTto4TB+ISoAjy
792+ITfRBfcAmgRFFeAm+J6uhdKdFhFWUgDkFsK0oUp/9G2//Kj7Jx+5tSKOdBscgUYiKHRS/me
793WATQdRUvAK0Bnmshmtn79PpaLBbbOZkjKvRnjRZoRswOkG1wFchKew2g9wXVJVZL/m4+B+vv
7949AxQQR2Q33SgAYJzzVACdAWjAfRYzYFO9n6SLnydtQHSMxYDMAKqZ/8FS/lTK+zuq3CtK64L
795UDwbgUEAUmk2Zyg101d6PhCDySgAvTvDgKiuOrc4dLxUb7UMnhGIexyI+d6U+ABuNAP4Simx
796lgAAAABJRU5ErkJggg==
797"))
798 (switch-to-buffer (get-buffer-create "*test*"))
799 (erase-buffer)
800 (insert mail)
801 (rmail-mime-show)))
802
803(defun rmail-mime-multipart-handler (content-type 799(defun rmail-mime-multipart-handler (content-type
804 content-disposition 800 content-disposition
805 content-transfer-encoding) 801 content-transfer-encoding)
@@ -937,37 +933,6 @@ The other arguments are the same as `rmail-mime-multipart-handler'."
937 (rmail-mime-hidden-mode child))))) 933 (rmail-mime-hidden-mode child)))))
938 entities))) 934 entities)))
939 935
940(defun test-rmail-mime-multipart-handler ()
941 "Test of a mail used as an example in RFC 2046."
942 (let ((mail "From: Nathaniel Borenstein <nsb@bellcore.com>
943To: Ned Freed <ned@innosoft.com>
944Date: Sun, 21 Mar 1993 23:56:48 -0800 (PST)
945Subject: Sample message
946MIME-Version: 1.0
947Content-type: multipart/mixed; boundary=\"simple boundary\"
948
949This is the preamble. It is to be ignored, though it
950is a handy place for composition agents to include an
951explanatory note to non-MIME conformant readers.
952
953--simple boundary
954
955This is implicitly typed plain US-ASCII text.
956It does NOT end with a linebreak.
957--simple boundary
958Content-type: text/plain; charset=us-ascii
959
960This is explicitly typed plain US-ASCII text.
961It DOES end with a linebreak.
962
963--simple boundary--
964
965This is the epilogue. It is also to be ignored."))
966 (switch-to-buffer (get-buffer-create "*test*"))
967 (erase-buffer)
968 (insert mail)
969 (rmail-mime-show t)))
970
971(defun rmail-mime-insert-multipart (entity) 936(defun rmail-mime-insert-multipart (entity)
972 "Presentation handler for a multipart MIME entity." 937 "Presentation handler for a multipart MIME entity."
973 (let ((current (aref (rmail-mime-entity-display entity) 0)) 938 (let ((current (aref (rmail-mime-entity-display entity) 0))
@@ -978,27 +943,31 @@ This is the epilogue. It is also to be ignored."))
978 (beg (point)) 943 (beg (point))
979 (segment (rmail-mime-entity-segment (point) entity))) 944 (segment (rmail-mime-entity-segment (point) entity)))
980 ;; header 945 ;; header
981 (if (eq (aref current 0) (aref new 0)) 946 (if (eq (rmail-mime-display-header current)
947 (rmail-mime-display-header new))
982 (goto-char (aref segment 2)) 948 (goto-char (aref segment 2))
983 (if (aref current 0) 949 (if (rmail-mime-display-header current)
984 (delete-char (- (aref segment 2) (aref segment 1)))) 950 (delete-char (- (aref segment 2) (aref segment 1))))
985 (if (aref new 0) 951 (if (rmail-mime-display-header new)
986 (rmail-mime-insert-header header))) 952 (rmail-mime-insert-header header)))
987 ;; tagline 953 ;; tagline
988 (if (eq (aref current 1) (aref new 1)) 954 (if (eq (rmail-mime-display-tagline current)
989 (if (or (not (aref current 1)) 955 (rmail-mime-display-tagline new))
990 (eq (aref current 2) (aref new 2))) 956 (if (or (not (rmail-mime-display-tagline current))
957 (eq (rmail-mime-display-body current)
958 (rmail-mime-display-body new)))
991 (forward-char (- (aref segment 3) (aref segment 2))) 959 (forward-char (- (aref segment 3) (aref segment 2)))
992 (rmail-mime-update-tagline entity)) 960 (rmail-mime-update-tagline entity))
993 (if (aref current 1) 961 (if (rmail-mime-display-tagline current)
994 (delete-char (- (aref segment 3) (aref segment 2)))) 962 (delete-char (- (aref segment 3) (aref segment 2))))
995 (if (aref new 1) 963 (if (rmail-mime-display-tagline new)
996 (rmail-mime-insert-tagline entity))) 964 (rmail-mime-insert-tagline entity)))
997 965
998 (put-text-property beg (point) 'rmail-mime-entity entity) 966 (put-text-property beg (point) 'rmail-mime-entity entity)
999 967
1000 ;; body 968 ;; body
1001 (if (eq (aref current 2) (aref new 2)) 969 (if (eq (rmail-mime-display-body current)
970 (rmail-mime-display-body new))
1002 (forward-char (- (aref segment 4) (aref segment 3))) 971 (forward-char (- (aref segment 4) (aref segment 3)))
1003 (dolist (child (rmail-mime-entity-children entity)) 972 (dolist (child (rmail-mime-entity-children entity))
1004 (rmail-mime-insert child))) 973 (rmail-mime-insert child)))
@@ -1228,7 +1197,7 @@ This function will be called recursively if multiple parts are
1228available." 1197available."
1229 (let ((current (aref (rmail-mime-entity-display entity) 0)) 1198 (let ((current (aref (rmail-mime-entity-display entity) 0))
1230 (new (aref (rmail-mime-entity-display entity) 1))) 1199 (new (aref (rmail-mime-entity-display entity) 1)))
1231 (if (not (eq (aref new 0) 'raw)) 1200 (if (not (eq (rmail-mime-display-header new) 'raw))
1232 ;; Not a raw-mode. Each handler should handle it. 1201 ;; Not a raw-mode. Each handler should handle it.
1233 (funcall (rmail-mime-entity-handler entity) entity) 1202 (funcall (rmail-mime-entity-handler entity) entity)
1234 (let ((header (rmail-mime-entity-header entity)) 1203 (let ((header (rmail-mime-entity-header entity))
@@ -1237,14 +1206,15 @@ available."
1237 (beg (point)) 1206 (beg (point))
1238 (segment (rmail-mime-entity-segment (point) entity))) 1207 (segment (rmail-mime-entity-segment (point) entity)))
1239 ;; header 1208 ;; header
1240 (if (eq (aref current 0) (aref new 0)) 1209 (if (eq (rmail-mime-display-header current)
1210 (rmail-mime-display-header new))
1241 (goto-char (aref segment 2)) 1211 (goto-char (aref segment 2))
1242 (if (aref current 0) 1212 (if (rmail-mime-display-header current)
1243 (delete-char (- (aref segment 2) (aref segment 1)))) 1213 (delete-char (- (aref segment 2) (aref segment 1))))
1244 (insert-buffer-substring rmail-mime-mbox-buffer 1214 (insert-buffer-substring rmail-mime-mbox-buffer
1245 (aref header 0) (aref header 1))) 1215 (aref header 0) (aref header 1)))
1246 ;; tagline 1216 ;; tagline
1247 (if (aref current 1) 1217 (if (rmail-mime-display-tagline current)
1248 (delete-char (- (aref segment 3) (aref segment 2)))) 1218 (delete-char (- (aref segment 3) (aref segment 2))))
1249 ;; body 1219 ;; body
1250 (let ((children (rmail-mime-entity-children entity))) 1220 (let ((children (rmail-mime-entity-children entity)))
@@ -1253,9 +1223,10 @@ available."
1253 (put-text-property beg (point) 'rmail-mime-entity entity) 1223 (put-text-property beg (point) 'rmail-mime-entity entity)
1254 (dolist (child children) 1224 (dolist (child children)
1255 (rmail-mime-insert child))) 1225 (rmail-mime-insert child)))
1256 (if (eq (aref current 2) (aref new 2)) 1226 (if (eq (rmail-mime-display-body current)
1227 (rmail-mime-display-body new))
1257 (forward-char (- (aref segment 4) (aref segment 3))) 1228 (forward-char (- (aref segment 4) (aref segment 3)))
1258 (if (aref current 2) 1229 (if (rmail-mime-display-body current)
1259 (delete-char (- (aref segment 4) (aref segment 3)))) 1230 (delete-char (- (aref segment 4) (aref segment 3))))
1260 (insert-buffer-substring rmail-mime-mbox-buffer 1231 (insert-buffer-substring rmail-mime-mbox-buffer
1261 (aref body 0) (aref body 1)) 1232 (aref body 0) (aref body 1))
diff --git a/lisp/mail/rmailsum.el b/lisp/mail/rmailsum.el
index a3f722443dc..e6a0a34f33b 100644
--- a/lisp/mail/rmailsum.el
+++ b/lisp/mail/rmailsum.el
@@ -342,10 +342,9 @@ Emacs will list the message in the summary."
342(defun rmail-message-regexp-p-1 (msg regexp) 342(defun rmail-message-regexp-p-1 (msg regexp)
343 ;; Search functions can expect to start from the beginning. 343 ;; Search functions can expect to start from the beginning.
344 (narrow-to-region (point) (save-excursion (search-forward "\n\n") (point))) 344 (narrow-to-region (point) (save-excursion (search-forward "\n\n") (point)))
345 (if rmail-enable-mime 345 (if (and rmail-enable-mime
346 (if rmail-search-mime-header-function 346 rmail-search-mime-header-function)
347 (funcall rmail-search-mime-header-function msg regexp (point)) 347 (funcall rmail-search-mime-header-function msg regexp (point))
348 (error "You must set `rmail-search-mime-header-function'"))
349 (re-search-forward regexp nil t))) 348 (re-search-forward regexp nil t)))
350 349
351;;;###autoload 350;;;###autoload
diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el
index 026b03e350f..bc38b10124e 100644
--- a/lisp/mail/smtpmail.el
+++ b/lisp/mail/smtpmail.el
@@ -975,7 +975,7 @@ The list is in preference order.")
975 (subst-char-in-region (point-min) (point-max) 9 ? t) ; tab --> blank 975 (subst-char-in-region (point-min) (point-max) 9 ? t) ; tab --> blank
976 976
977 (goto-char (point-min)) 977 (goto-char (point-min))
978 ;; tidyness in case hook is not robust when it looks at this 978 ;; tidiness in case hook is not robust when it looks at this
979 (while (re-search-forward "[ \t]+" header-end t) (replace-match " ")) 979 (while (re-search-forward "[ \t]+" header-end t) (replace-match " "))
980 980
981 (goto-char (point-min)) 981 (goto-char (point-min))
diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el
index 9aa0ba4e262..9c020ffadab 100644
--- a/lisp/menu-bar.el
+++ b/lisp/menu-bar.el
@@ -445,7 +445,7 @@
445 (define-key menu [props] 445 (define-key menu [props]
446 `(menu-item ,(purecopy "Text Properties") facemenu-menu)) 446 `(menu-item ,(purecopy "Text Properties") facemenu-menu))
447 447
448 ;; ns-win.el said: Add spell for platorm consistency. 448 ;; ns-win.el said: Add spell for platform consistency.
449 (if (featurep 'ns) 449 (if (featurep 'ns)
450 (define-key menu [spell] 450 (define-key menu [spell]
451 `(menu-item ,(purecopy "Spell") ispell-menu-map))) 451 `(menu-item ,(purecopy "Spell") ispell-menu-map)))
diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog
index ca179a78b61..6bdd96c0fcc 100644
--- a/lisp/mh-e/ChangeLog
+++ b/lisp/mh-e/ChangeLog
@@ -1,3 +1,14 @@
12011-11-20 Bill Wohler <wohler@newt.com>
2
3 * Release MH-E version 8.3.1.
4
5 * mh-e.el (Version, mh-version): Update for release 8.3.1.
6
72011-11-20 Juanma Barranquero <lekktu@gmail.com>
8
9 * mh-utils.el (mh-folder-list): Fix typo.
10 (mh-children-p): Move part of the docstring to a comment.
11
12011-11-16 Juanma Barranquero <lekktu@gmail.com> 122011-11-16 Juanma Barranquero <lekktu@gmail.com>
2 13
3 * mh-search.el (mh-pick-parse-search-buffer): Fix typo. 14 * mh-search.el (mh-pick-parse-search-buffer): Fix typo.
@@ -347,7 +358,7 @@
347 358
3482008-06-20 Stephen Eglen <stephen@gnu.org> 3592008-06-20 Stephen Eglen <stephen@gnu.org>
349 360
350 * mh-show.el (mh-defun-show-buffer): Use `...' rather than than 361 * mh-show.el (mh-defun-show-buffer): Use `...' rather than
351 "..." in generated docstrings. 362 "..." in generated docstrings.
352 363
3532008-06-12 Glenn Morris <rgm@gnu.org> 3642008-06-12 Glenn Morris <rgm@gnu.org>
diff --git a/lisp/mh-e/ChangeLog.1 b/lisp/mh-e/ChangeLog.1
index b12c47e7f1f..d35d7d4c676 100644
--- a/lisp/mh-e/ChangeLog.1
+++ b/lisp/mh-e/ChangeLog.1
@@ -10944,7 +10944,7 @@
109442001-11-21 Peter S Galbraith <psg@debian.org> 109442001-11-21 Peter S Galbraith <psg@debian.org>
10945 10945
10946 * mh-comp.el (mh-reply-show-message-p): The setting of this 10946 * mh-comp.el (mh-reply-show-message-p): The setting of this
10947 variable determines whether the MH show-buffer is diplayed with 10947 variable determines whether the MH show-buffer is displayed with
10948 the current message when using mh-reply without a prefix argument. 10948 the current message when using mh-reply without a prefix argument.
10949 Set it to nil if you already include the message automatically in 10949 Set it to nil if you already include the message automatically in
10950 your draft using "repl: -filter repl.filter" in your ~/.mh_profile 10950 your draft using "repl: -filter repl.filter" in your ~/.mh_profile
diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el
index b614cdb7991..77ff914b0cc 100644
--- a/lisp/mh-e/mh-e.el
+++ b/lisp/mh-e/mh-e.el
@@ -5,7 +5,7 @@
5 5
6;; Author: Bill Wohler <wohler@newt.com> 6;; Author: Bill Wohler <wohler@newt.com>
7;; Maintainer: Bill Wohler <wohler@newt.com> 7;; Maintainer: Bill Wohler <wohler@newt.com>
8;; Version: 8.3 8;; Version: 8.3.1
9;; Keywords: mail 9;; Keywords: mail
10 10
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
@@ -127,7 +127,7 @@
127;; Try to keep variables local to a single file. Provide accessors if 127;; Try to keep variables local to a single file. Provide accessors if
128;; variables are shared. Use this section as a last resort. 128;; variables are shared. Use this section as a last resort.
129 129
130(defconst mh-version "8.3" "Version number of MH-E.") 130(defconst mh-version "8.3.1" "Version number of MH-E.")
131 131
132;; Variants 132;; Variants
133 133
diff --git a/lisp/mh-e/mh-mime.el b/lisp/mh-e/mh-mime.el
index 0327b64a33f..a97185e1496 100644
--- a/lisp/mh-e/mh-mime.el
+++ b/lisp/mh-e/mh-mime.el
@@ -1399,7 +1399,7 @@ See also \\[mh-mh-to-mime]."
1399 ("mailto") ; RFC1738 Electronic mail address 1399 ("mailto") ; RFC1738 Electronic mail address
1400 ("news") ; RFC1738 Usenet news 1400 ("news") ; RFC1738 Usenet news
1401 ("nntp") ; RFC1738 Usenet news using NNTP access 1401 ("nntp") ; RFC1738 Usenet news using NNTP access
1402 ("propspero") ; RFC1738 Prospero Directory Service 1402 ("prospero") ; RFC1738 Prospero Directory Service
1403 ("telnet") ; RFC1738 Telnet 1403 ("telnet") ; RFC1738 Telnet
1404 ("tftp") ; RFC2046 Trivial File Transfer Protocol 1404 ("tftp") ; RFC2046 Trivial File Transfer Protocol
1405 ("url") ; RFC2017 URL scheme MIME access-type Protocol 1405 ("url") ; RFC2017 URL scheme MIME access-type Protocol
diff --git a/lisp/mh-e/mh-utils.el b/lisp/mh-e/mh-utils.el
index 6132af17dab..327d8ad7040 100644
--- a/lisp/mh-e/mh-utils.el
+++ b/lisp/mh-e/mh-utils.el
@@ -484,18 +484,18 @@ no effect."
484 folder) 484 folder)
485 485
486(defmacro mh-children-p (folder) 486(defmacro mh-children-p (folder)
487 "Return t if FOLDER from sub-folders cache has children. 487 "Return t if FOLDER from sub-folders cache has children."
488The car of folder is the name, and the cdr is either t or some 488;; The car of folder is the name, and the cdr is either t or some
489sort of count that I do not understand. It's too small to be the 489;; sort of count that I do not understand. It's too small to be the
490number of messages in the sub-folders and too large to be the 490;; number of messages in the sub-folders and too large to be the
491number of sub-folders. XXX" 491;; number of sub-folders. XXX
492 `(if (cdr ,folder) 492 `(if (cdr ,folder)
493 t 493 t
494 nil)) 494 nil))
495 495
496;;;###mh-autoload 496;;;###mh-autoload
497(defun mh-folder-list (folder) 497(defun mh-folder-list (folder)
498 "Return FOLDER and its descendents. 498 "Return FOLDER and its descendants.
499FOLDER may have a + prefix. Returns a list of strings without the 499FOLDER may have a + prefix. Returns a list of strings without the
500+ prefix. If FOLDER is nil, then all folders are considered. For 500+ prefix. If FOLDER is nil, then all folders are considered. For
501example, if your Mail directory only contains the folders +inbox, 501example, if your Mail directory only contains the folders +inbox,
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 38785fc48e8..11e195d4f7f 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -51,7 +51,7 @@
51;; - choose-completion doesn't know how to quote the text it inserts. 51;; - choose-completion doesn't know how to quote the text it inserts.
52;; E.g. it fails to double the dollars in file-name completion, or 52;; E.g. it fails to double the dollars in file-name completion, or
53;; to backslash-escape spaces and other chars in comint completion. 53;; to backslash-escape spaces and other chars in comint completion.
54;; - when completing ~/tmp/fo$$o, the highligting in *Completions* 54;; - when completing ~/tmp/fo$$o, the highlighting in *Completions*
55;; is off by one position. 55;; is off by one position.
56;; - all code like PCM which relies on all-completions to match 56;; - all code like PCM which relies on all-completions to match
57;; its argument gets confused because all-completions returns unquoted 57;; its argument gets confused because all-completions returns unquoted
@@ -2427,7 +2427,7 @@ PATTERN is as returned by `completion-pcm--string->pattern'."
2427 "Find all completions for STRING at POINT in TABLE, satisfying PRED. 2427 "Find all completions for STRING at POINT in TABLE, satisfying PRED.
2428POINT is a position inside STRING. 2428POINT is a position inside STRING.
2429FILTER is a function applied to the return value, that can be used, e.g. to 2429FILTER is a function applied to the return value, that can be used, e.g. to
2430filter out additional entries (because TABLE migth not obey PRED)." 2430filter out additional entries (because TABLE might not obey PRED)."
2431 (unless filter (setq filter 'identity)) 2431 (unless filter (setq filter 'identity))
2432 (let* ((beforepoint (substring string 0 point)) 2432 (let* ((beforepoint (substring string 0 point))
2433 (afterpoint (substring string point)) 2433 (afterpoint (substring string point))
diff --git a/lisp/misearch.el b/lisp/misearch.el
index c533562f073..de1a32ff7d5 100644
--- a/lisp/misearch.el
+++ b/lisp/misearch.el
@@ -142,7 +142,7 @@ Intended to be added to `isearch-mode-hook'."
142 ;; 1. First try searching in the initial buffer 142 ;; 1. First try searching in the initial buffer
143 (let ((res (funcall search-fun string bound noerror))) 143 (let ((res (funcall search-fun string bound noerror)))
144 ;; Reset wrapping for all-buffers pause after successful search 144 ;; Reset wrapping for all-buffers pause after successful search
145 (if (and res (eq multi-isearch-pause t)) 145 (if (and res (not bound) (eq multi-isearch-pause t))
146 (setq multi-isearch-current-buffer nil)) 146 (setq multi-isearch-current-buffer nil))
147 res) 147 res)
148 ;; 2. If the above search fails, start visiting next/prev buffers 148 ;; 2. If the above search fails, start visiting next/prev buffers
@@ -173,8 +173,8 @@ Intended to be added to `isearch-mode-hook'."
173 found) 173 found)
174 ;; Return nil when multi-isearch-next-buffer-current-function fails 174 ;; Return nil when multi-isearch-next-buffer-current-function fails
175 ;; (`with-current-buffer' raises an error for nil returned from it). 175 ;; (`with-current-buffer' raises an error for nil returned from it).
176 (error nil)) 176 (error (signal 'search-failed (list string "end of multi"))))
177 (signal 'search-failed (list string "Repeat for next buffer")))))))) 177 (signal 'search-failed (list string "repeat for next buffer"))))))))
178 178
179(defun multi-isearch-wrap () 179(defun multi-isearch-wrap ()
180 "Wrap the multiple buffers search when search is failed. 180 "Wrap the multiple buffers search when search is failed.
diff --git a/lisp/mouse-sel.el b/lisp/mouse-sel.el
index bcf1749e13f..7f04cac96fe 100644
--- a/lisp/mouse-sel.el
+++ b/lisp/mouse-sel.el
@@ -60,7 +60,7 @@
60;; 60;;
61;; Thanks to KevinB@bartley.demon.co.uk for his useful input. 61;; Thanks to KevinB@bartley.demon.co.uk for his useful input.
62;; 62;;
63;;--- Customisation ------------------------------------------------------- 63;;--- Customization -------------------------------------------------------
64;; 64;;
65;; * You may want to use none or more of following: 65;; * You may want to use none or more of following:
66;; 66;;
diff --git a/lisp/mpc.el b/lisp/mpc.el
index 238e8ad68ae..6c2556b1f39 100644
--- a/lisp/mpc.el
+++ b/lisp/mpc.el
@@ -1589,7 +1589,7 @@ when constructing the set of constraints."
1589(defvar mpc--changed-selection) 1589(defvar mpc--changed-selection)
1590 1590
1591(defun mpc-reorder (&optional nodeactivate) 1591(defun mpc-reorder (&optional nodeactivate)
1592 "Reorder entries based on thre currently active selections. 1592 "Reorder entries based on the currently active selections.
1593I.e. split the current browser buffer into a first part containing the 1593I.e. split the current browser buffer into a first part containing the
1594entries included in the selection, then a separator, and then the entries 1594entries included in the selection, then a separator, and then the entries
1595not included in the selection. 1595not included in the selection.
diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el
index cbad30199d7..f6a5b53ae7f 100644
--- a/lisp/net/ange-ftp.el
+++ b/lisp/net/ange-ftp.el
@@ -46,7 +46,7 @@
46;; Extended filename syntax: 46;; Extended filename syntax:
47;; 47;;
48;; The default extended filename syntax is '/user@host:name', where the 48;; The default extended filename syntax is '/user@host:name', where the
49;; 'user@' part may be omitted. This syntax can be customised to a certain 49;; 'user@' part may be omitted. This syntax can be customized to a certain
50;; extent by changing ange-ftp-name-format. There are limitations. 50;; extent by changing ange-ftp-name-format. There are limitations.
51;; The `host' part has an optional suffix `#port' which may be used to 51;; The `host' part has an optional suffix `#port' which may be used to
52;; specify a non-default port number for the connexion. 52;; specify a non-default port number for the connexion.
@@ -721,7 +721,7 @@ parenthesized expressions in REGEXP for the components (in that order)."
721 "^local:\\|^Trying\\|^125 \\|^550-\\|^221 .*oodbye\\|" 721 "^local:\\|^Trying\\|^125 \\|^550-\\|^221 .*oodbye\\|"
722 "^500 .*AUTH\\|^KERBEROS\\|" 722 "^500 .*AUTH\\|^KERBEROS\\|"
723 "^504 Unknown security mechanism\\|" 723 "^504 Unknown security mechanism\\|"
724 "^530 Please login with USER and PASS\\|" ; non kerberised vsFTPd 724 "^530 Please login with USER and PASS\\|" ; non kerberized vsFTPd
725 "^534 Kerberos Authentication not enabled\\|" 725 "^534 Kerberos Authentication not enabled\\|"
726 "^22[789] .*[Pp]assive\\|^200 EPRT\\|^500 .*EPRT") 726 "^22[789] .*[Pp]assive\\|^200 EPRT\\|^500 .*EPRT")
727 "Regular expression matching FTP messages that can be ignored." 727 "Regular expression matching FTP messages that can be ignored."
@@ -1665,7 +1665,7 @@ good, skip, fatal, or unknown."
1665 (ange-ftp-process-handle-line line proc) 1665 (ange-ftp-process-handle-line line proc)
1666 ;; If we've seen a potential error message and it 1666 ;; If we've seen a potential error message and it
1667 ;; hasn't been cancelled by a good message before 1667 ;; hasn't been cancelled by a good message before
1668 ;; seeing a propt, then the error was real. 1668 ;; seeing a prompt, then the error was real.
1669 (delete-process proc) 1669 (delete-process proc)
1670 (setq ange-ftp-process-busy nil 1670 (setq ange-ftp-process-busy nil
1671 ange-ftp-process-result-line ange-ftp-pending-error-line)))) 1671 ange-ftp-process-result-line ange-ftp-pending-error-line))))
diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el
index b78e8d5676c..34bfb403e1c 100644
--- a/lisp/net/browse-url.el
+++ b/lisp/net/browse-url.el
@@ -100,7 +100,7 @@
100;; <URL:ftp://ftp.lysator.liu.se/pub/sgml>; hm--html-menus can be used 100;; <URL:ftp://ftp.lysator.liu.se/pub/sgml>; hm--html-menus can be used
101;; with this. 101;; with this.
102 102
103;; This package generalises function html-previewer-process in Marc 103;; This package generalizes function html-previewer-process in Marc
104;; Andreessen's html-mode (LCD modes/html-mode.el.Z). See also the 104;; Andreessen's html-mode (LCD modes/html-mode.el.Z). See also the
105;; ffap.el package. The huge hyperbole package also contains similar 105;; ffap.el package. The huge hyperbole package also contains similar
106;; functions. 106;; functions.
@@ -138,7 +138,7 @@
138;; M-x browse-url-of-dired-file RET 138;; M-x browse-url-of-dired-file RET
139 139
140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
141;; Customisation (~/.emacs) 141;; Customization (~/.emacs)
142 142
143;; To see what variables are available for customization, type 143;; To see what variables are available for customization, type
144;; `M-x set-variable browse-url TAB'. Better, use 144;; `M-x set-variable browse-url TAB'. Better, use
@@ -190,7 +190,7 @@
190;; 190;;
191;; (add-hook 'browse-url-of-file-hook 'browse-url-netscape-reload) 191;; (add-hook 'browse-url-of-file-hook 'browse-url-netscape-reload)
192 192
193;; You may also want to customise browse-url-netscape-arguments, e.g. 193;; You may also want to customize browse-url-netscape-arguments, e.g.
194;; (setq browse-url-netscape-arguments '("-install")) 194;; (setq browse-url-netscape-arguments '("-install"))
195;; 195;;
196;; or similarly for the other browsers. 196;; or similarly for the other browsers.
diff --git a/lisp/net/newst-plainview.el b/lisp/net/newst-plainview.el
index 16b36df07f8..f1b3ce7fd05 100644
--- a/lisp/net/newst-plainview.el
+++ b/lisp/net/newst-plainview.el
@@ -1574,7 +1574,7 @@ property to '(<nt-type>-<nt-age> <nt-type> <nt-age>)."
1574 (while (and (setq pos2 (next-single-property-change pos1 'nt-type)) 1574 (while (and (setq pos2 (next-single-property-change pos1 'nt-type))
1575 (<= pos2 end) 1575 (<= pos2 end)
1576 (> pos2 pos1)) 1576 (> pos2 pos1))
1577 ;; must shift one char to the left in order to handle inivisible 1577 ;; must shift one char to the left in order to handle invisible
1578 ;; newlines, motion in invisible text areas and all that correctly 1578 ;; newlines, motion in invisible text areas and all that correctly
1579 (put-text-property (1- pos1) (1- pos2) 1579 (put-text-property (1- pos1) (1- pos2)
1580 'invisible 1580 'invisible
diff --git a/lisp/net/newst-treeview.el b/lisp/net/newst-treeview.el
index 7cfdd2cb89d..8ff74a94eb0 100644
--- a/lisp/net/newst-treeview.el
+++ b/lisp/net/newst-treeview.el
@@ -1793,7 +1793,7 @@ Update teeview afterwards unless NO-UPDATE is non-nil."
1793 result)) 1793 result))
1794 1794
1795(defun newsticker--group-remove-obsolete-feeds (group) 1795(defun newsticker--group-remove-obsolete-feeds (group)
1796 "Recursively remove obselete feeds from GROUP." 1796 "Recursively remove obsolete feeds from GROUP."
1797 (let ((result nil) 1797 (let ((result nil)
1798 (urls (append newsticker-url-list newsticker-url-list-defaults))) 1798 (urls (append newsticker-url-list newsticker-url-list-defaults)))
1799 (mapc (lambda (g) 1799 (mapc (lambda (g)
diff --git a/lisp/net/ntlm.el b/lisp/net/ntlm.el
index 25e7a7b43de..9af148e8faa 100644
--- a/lisp/net/ntlm.el
+++ b/lisp/net/ntlm.el
@@ -102,8 +102,8 @@ is not given."
102 (md4-pack-int16 ld) ;domain field, count field 102 (md4-pack-int16 ld) ;domain field, count field
103 (md4-pack-int16 ld) ;domain field, max count field 103 (md4-pack-int16 ld) ;domain field, max count field
104 (md4-pack-int32 (cons 0 off-d)) ;domain field, offset field 104 (md4-pack-int32 (cons 0 off-d)) ;domain field, offset field
105 user ;bufer field 105 user ;buffer field
106 domain ;bufer field 106 domain ;buffer field
107 ))) 107 )))
108 108
109(eval-when-compile 109(eval-when-compile
@@ -207,16 +207,16 @@ by PASSWORD-HASHES. PASSWORD-HASHES should be a return value of
207 ;; buffer field 207 ;; buffer field
208 lmRespData ;lmResponse, 24 bytes 208 lmRespData ;lmResponse, 24 bytes
209 ntRespData ;ntResponse, 24 bytes 209 ntRespData ;ntResponse, 24 bytes
210 (ntlm-ascii2unicode domain ;unicode domain string, 2*ld bytes 210 (ntlm-ascii2unicode domain ;Unicode domain string, 2*ld bytes
211 (length domain)) ; 211 (length domain)) ;
212 (ntlm-ascii2unicode user ;unicode user string, 2*lu bytes 212 (ntlm-ascii2unicode user ;Unicode user string, 2*lu bytes
213 (length user)) ; 213 (length user)) ;
214 (ntlm-ascii2unicode user ;unicode user string, 2*lu bytes 214 (ntlm-ascii2unicode user ;Unicode user string, 2*lu bytes
215 (length user)) ; 215 (length user)) ;
216 ))) 216 )))
217 217
218(defun ntlm-get-password-hashes (password) 218(defun ntlm-get-password-hashes (password)
219 "Return a pair of SMB hash and NT MD4 hash of the given password PASSWORD" 219 "Return a pair of SMB hash and NT MD4 hash of the given password PASSWORD."
220 (list (ntlm-smb-passwd-hash password) 220 (list (ntlm-smb-passwd-hash password)
221 (ntlm-md4hash password))) 221 (ntlm-md4hash password)))
222 222
@@ -526,7 +526,7 @@ into a Unicode string. PASSWD is truncated to 128 bytes if longer."
526 (setq len (length passwd)) 526 (setq len (length passwd))
527 (if (> len 128) 527 (if (> len 128)
528 (setq len 128)) 528 (setq len 128))
529 ;; Password must be converted to NT unicode 529 ;; Password must be converted to NT Unicode
530 (setq wpwd (ntlm-ascii2unicode passwd len)) 530 (setq wpwd (ntlm-ascii2unicode passwd len))
531 ;; Calculate length in bytes 531 ;; Calculate length in bytes
532 (setq len (* len 2)) 532 (setq len (* len 2))
diff --git a/lisp/net/quickurl.el b/lisp/net/quickurl.el
index 7a1e5fc6a80..a31ec496c16 100644
--- a/lisp/net/quickurl.el
+++ b/lisp/net/quickurl.el
@@ -201,7 +201,7 @@ in your ~/.emacs (after loading/requiring quickurl).")
201 (listp (cdr url))) 201 (listp (cdr url)))
202 202
203(defun quickurl-make-url (keyword url &optional comment) 203(defun quickurl-make-url (keyword url &optional comment)
204 "Create a URL from KEYWORD, URL and (optionaly) COMMENT." 204 "Create a URL from KEYWORD, URL and (optionally) COMMENT."
205 (if (and comment (not (zerop (length comment)))) 205 (if (and comment (not (zerop (length comment))))
206 (list keyword url comment) 206 (list keyword url comment)
207 (cons keyword url))) 207 (cons keyword url)))
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el
index f6981aeabd9..7d069a0f306 100644
--- a/lisp/net/rcirc.el
+++ b/lisp/net/rcirc.el
@@ -659,7 +659,7 @@ Functions are called with PROCESS and SENTINEL arguments.")
659(defun rcirc-disconnect-buffer (&optional buffer) 659(defun rcirc-disconnect-buffer (&optional buffer)
660 (with-current-buffer (or buffer (current-buffer)) 660 (with-current-buffer (or buffer (current-buffer))
661 ;; set rcirc-target to nil for each channel so cleanup 661 ;; set rcirc-target to nil for each channel so cleanup
662 ;; doesnt happen when we reconnect 662 ;; doesn't happen when we reconnect
663 (setq rcirc-target nil) 663 (setq rcirc-target nil)
664 (setq mode-line-process ":disconnected"))) 664 (setq mode-line-process ":disconnected")))
665 665
diff --git a/lisp/net/tramp-cmds.el b/lisp/net/tramp-cmds.el
index fcf523a7068..998f62920a1 100644
--- a/lisp/net/tramp-cmds.el
+++ b/lisp/net/tramp-cmds.el
@@ -23,7 +23,7 @@
23 23
24;;; Commentary: 24;;; Commentary:
25 25
26;; This package provides all interactive commands which are releated 26;; This package provides all interactive commands which are related
27;; to Tramp. 27;; to Tramp.
28 28
29;;; Code: 29;;; Code:
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index 269b47be20c..fda88351253 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -39,7 +39,7 @@
39;; Consequently, GNU Emacs 23.1 with enabled D-Bus bindings is a 39;; Consequently, GNU Emacs 23.1 with enabled D-Bus bindings is a
40;; precondition. 40;; precondition.
41 41
42;; The GVFS D-Bus interface is said to be instable. There are even no 42;; The GVFS D-Bus interface is said to be unstable. There are even no
43;; introspection data. The interface, as discovered during 43;; introspection data. The interface, as discovered during
44;; development time, is given in respective comments. 44;; development time, is given in respective comments.
45 45
diff --git a/lisp/net/tramp-gw.el b/lisp/net/tramp-gw.el
index 70b70004de9..4ddd63bc3b8 100644
--- a/lisp/net/tramp-gw.el
+++ b/lisp/net/tramp-gw.el
@@ -178,7 +178,7 @@ instead of the host name declared in TARGET-VEC."
178 (tramp-file-name-host gw-vec))) 178 (tramp-file-name-host gw-vec)))
179 ;; Declare the SOCKS server to be used. 179 ;; Declare the SOCKS server to be used.
180 (socks-server 180 (socks-server
181 (list "Tramp tempory socks server list" 181 (list "Tramp temporary socks server list"
182 ;; Host name. 182 ;; Host name.
183 (tramp-file-name-real-host gw-vec) 183 (tramp-file-name-real-host gw-vec)
184 ;; Port number. 184 ;; Port number.
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 50a3c1fca5e..941b788ae4d 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -4905,7 +4905,7 @@ If no corresponding command is found, nil is returned."
4905 4905
4906(defun tramp-get-inline-coding (vec prop size) 4906(defun tramp-get-inline-coding (vec prop size)
4907 "Return the coding command related to PROP. 4907 "Return the coding command related to PROP.
4908PROP is either `remote-encoding', `remode-decoding', 4908PROP is either `remote-encoding', `remote-decoding',
4909`local-encoding' or `local-decoding'. 4909`local-encoding' or `local-decoding'.
4910 4910
4911SIZE is the length of the file to be coded. Depending on SIZE, 4911SIZE is the length of the file to be coded. Depending on SIZE,
@@ -5033,11 +5033,11 @@ function cell is returned to be applied on a buffer."
5033;; until the last but one hop via `start-file-process'. Apply it 5033;; until the last but one hop via `start-file-process'. Apply it
5034;; also for ftp and smb. 5034;; also for ftp and smb.
5035;; * WIBNI if we had a command "trampclient"? If I was editing in 5035;; * WIBNI if we had a command "trampclient"? If I was editing in
5036;; some shell with root priviledges, it would be nice if I could 5036;; some shell with root privileges, it would be nice if I could
5037;; just call 5037;; just call
5038;; trampclient filename.c 5038;; trampclient filename.c
5039;; as an editor, and the _current_ shell would connect to an Emacs 5039;; as an editor, and the _current_ shell would connect to an Emacs
5040;; server and would be used in an existing non-priviledged Emacs 5040;; server and would be used in an existing non-privileged Emacs
5041;; session for doing the editing in question. 5041;; session for doing the editing in question.
5042;; That way, I need not tell Emacs my password again and be afraid 5042;; That way, I need not tell Emacs my password again and be afraid
5043;; that it makes it into core dumps or other ugly stuff (I had Emacs 5043;; that it makes it into core dumps or other ugly stuff (I had Emacs
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el
index 150ef18be52..73b9339e25a 100644
--- a/lisp/net/tramp-smb.el
+++ b/lisp/net/tramp-smb.el
@@ -480,7 +480,7 @@ PRESERVE-UID-GID and PRESERVE-SELINUX-CONTEXT are completely ignored."
480 ;; Dissect NAME. 480 ;; Dissect NAME.
481 (with-parsed-tramp-file-name name nil 481 (with-parsed-tramp-file-name name nil
482 ;; Tilde expansion if necessary. We use the user name as share, 482 ;; Tilde expansion if necessary. We use the user name as share,
483 ;; which is offen the case in domains. 483 ;; which is often the case in domains.
484 (when (string-match "\\`/?~\\([^/]*\\)" localname) 484 (when (string-match "\\`/?~\\([^/]*\\)" localname)
485 (setq localname 485 (setq localname
486 (replace-match 486 (replace-match
diff --git a/lisp/net/xesam.el b/lisp/net/xesam.el
index efb2cdd6166..ea4a887898e 100644
--- a/lisp/net/xesam.el
+++ b/lisp/net/xesam.el
@@ -88,7 +88,7 @@
88;; 88;;
89;; (setq xesam-query-type 'fulltext-query) 89;; (setq xesam-query-type 'fulltext-query)
90;; 90;;
91;; Another option to be customised is the number of hits to be 91;; Another option to be customized is the number of hits to be
92;; presented at once. 92;; presented at once.
93;; 93;;
94;; (setq xesam-hits-per-page 50) 94;; (setq xesam-hits-per-page 50)
diff --git a/lisp/notifications.el b/lisp/notifications.el
index a4e7fdd5425..e4e44fb0f67 100644
--- a/lisp/notifications.el
+++ b/lisp/notifications.el
@@ -163,7 +163,7 @@ Various PARAMS can be set:
163 only URI schema supported right now) or a name 163 only URI schema supported right now) or a name
164 in a freedesktop.org-compliant icon theme. 164 in a freedesktop.org-compliant icon theme.
165 :sound-file The path to a sound file to play when the notification pops up. 165 :sound-file The path to a sound file to play when the notification pops up.
166 :sound-name A themeable named sound from the freedesktop.org sound naming 166 :sound-name A themable named sound from the freedesktop.org sound naming
167 specification to play when the notification pops up. 167 specification to play when the notification pops up.
168 Similar to icon-name,only for sounds. An example would 168 Similar to icon-name,only for sounds. An example would
169 be \"message-new-instant\". 169 be \"message-new-instant\".
diff --git a/lisp/nxml/xsd-regexp.el b/lisp/nxml/xsd-regexp.el
index fbf0e159247..9701b8dc6e0 100644
--- a/lisp/nxml/xsd-regexp.el
+++ b/lisp/nxml/xsd-regexp.el
@@ -49,7 +49,7 @@
49;; Unicode character means a character in one of the Mule charsets 49;; Unicode character means a character in one of the Mule charsets
50;; ascii, latin-iso8859-1, mule-unicode-0100-24ff, 50;; ascii, latin-iso8859-1, mule-unicode-0100-24ff,
51;; mule-unicode-2500-33ff, mule-unicode-e000-ffff, eight-bit-control 51;; mule-unicode-2500-33ff, mule-unicode-e000-ffff, eight-bit-control
52;; or a character translateable to such a character (i.e a character 52;; or a character translatable to such a character (i.e a character
53;; for which `encode-char' will return non-nil). 53;; for which `encode-char' will return non-nil).
54;; 54;;
55;; Using unify-8859-on-decoding-mode is probably a good idea here 55;; Using unify-8859-on-decoding-mode is probably a good idea here
diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog
index b946d147e5b..1cdb0a6f574 100644
--- a/lisp/org/ChangeLog
+++ b/lisp/org/ChangeLog
@@ -1,3 +1,15 @@
12011-11-20 Juanma Barranquero <lekktu@gmail.com>
2
3 * org.el (org-link-unescape, org-link-unescape-compound): Fix typos.
4
52011-11-20 Andreas Schwab <schwab@linux-m68k.org>
6
7 * org-list.el (org-list-send-item): Use sort instead of sort*.
8
92011-11-20 Juanma Barranquero <lekktu@gmail.com>
10
11 * org-table.el (org-table-line-to-dline): Fix typo.
12
12011-11-16 Juanma Barranquero <lekktu@gmail.com> 132011-11-16 Juanma Barranquero <lekktu@gmail.com>
2 14
3 * org-agenda.el (org-agenda-add-entry-text-descriptive-links) 15 * org-agenda.el (org-agenda-add-entry-text-descriptive-links)
@@ -4165,7 +4177,7 @@
4165 4177
41662011-07-28 David Maus <dmaus@ictsoc.de> 41782011-07-28 David Maus <dmaus@ictsoc.de>
4167 4179
4168 * org.el (org-link-escape): New unicode aware percent encoding 4180 * org.el (org-link-escape): New Unicode aware percent encoding
4169 algorithm. 4181 algorithm.
4170 4182
41712011-07-28 Sebastian Rose <sebastian_rose@gmx.de> 41832011-07-28 Sebastian Rose <sebastian_rose@gmx.de>
@@ -4173,7 +4185,7 @@
4173 * org-protocol.el (org-protocol-unhex-single-byte-sequence): New 4185 * org-protocol.el (org-protocol-unhex-single-byte-sequence): New
4174 function. Decode hex-encoded singly byte sequences. 4186 function. Decode hex-encoded singly byte sequences.
4175 (org-protocol-unhex-compound): Use new function if decoding sequence 4187 (org-protocol-unhex-compound): Use new function if decoding sequence
4176 as unicode character failed. 4188 as Unicode character failed.
4177 4189
41782011-07-28 Bastien Guerry <bzg@gnu.org> 41902011-07-28 Bastien Guerry <bzg@gnu.org>
4179 4191
@@ -6185,8 +6197,8 @@
61852010-11-11 Carsten Dominik <carsten.dominik@gmail.com> 61972010-11-11 Carsten Dominik <carsten.dominik@gmail.com>
6186 6198
6187 * org-indent.el (org-indent-add-properties): 6199 * org-indent.el (org-indent-add-properties):
6188 Use `with-silent-modificatons'. 6200 Use `with-silent-modifications'.
6189 (org-indent-remove-properties): Use `with-silent-modificatons'. 6201 (org-indent-remove-properties): Use `with-silent-modifications'.
6190 6202
61912010-11-11 Carsten Dominik <carsten.dominik@gmail.com> 62032010-11-11 Carsten Dominik <carsten.dominik@gmail.com>
6192 6204
@@ -13637,7 +13649,7 @@
136372009-08-06 Carsten Dominik <carsten.dominik@gmail.com> 136492009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
13638 13650
13639 * org.el (org-remove-empty-overlays-at) 13651 * org.el (org-remove-empty-overlays-at)
13640 (org-clean-visibility-after-subtree-move): New functons. 13652 (org-clean-visibility-after-subtree-move): New functions.
13641 (org-move-subtree-down): Simplify cleanup of display. 13653 (org-move-subtree-down): Simplify cleanup of display.
13642 13654
136432009-08-06 Carsten Dominik <carsten.dominik@gmail.com> 136552009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
@@ -14386,7 +14398,7 @@
143862009-08-06 Carsten Dominik <carsten.dominik@gmail.com> 143982009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
14387 14399
14388 * org.el (org-edit-src-code, org-edit-fixed-width-region): Use a 14400 * org.el (org-edit-src-code, org-edit-fixed-width-region): Use a
14389 better bufer-generating mechanism. 14401 better buffer-generating mechanism.
14390 (org-edit-src-find-buffer): New function. 14402 (org-edit-src-find-buffer): New function.
14391 14403
14392 * org-icalendar.el (org-print-icalendar-entries): Don't check for 14404 * org-icalendar.el (org-print-icalendar-entries): Don't check for
@@ -14739,7 +14751,7 @@
14739 14751
147402009-08-06 Carsten Dominik <carsten.dominik@gmail.com> 147522009-08-06 Carsten Dominik <carsten.dominik@gmail.com>
14741 14753
14742 * org.el (org-sort-entries-or-items): Match TODO keywrds 14754 * org.el (org-sort-entries-or-items): Match TODO keywords
14743 case-sensitively, when sorting. 14755 case-sensitively, when sorting.
14744 (org-priority): Do not match TODO keywords with wrong case. 14756 (org-priority): Do not match TODO keywords with wrong case.
14745 14757
@@ -15201,7 +15213,7 @@
15201 15213
15202 * org-exp.el (org-export-as-html): Use IDs in the correct way. 15214 * org-exp.el (org-export-as-html): Use IDs in the correct way.
15203 15215
15204 * org.el (org-uuidgen-p): New funtion. 15216 * org.el (org-uuidgen-p): New function.
15205 15217
15206 * org-agenda.el (org-agenda-fontify-priorities): New default value 15218 * org-agenda.el (org-agenda-fontify-priorities): New default value
15207 `cookies'. 15219 `cookies'.
@@ -17067,7 +17079,7 @@
17067 (org-file-apps-defaults-macosx): Let PostScript files be opened by 17079 (org-file-apps-defaults-macosx): Let PostScript files be opened by
17068 preview. 17080 preview.
17069 (org-time-stamp-inactive): Call `org-time-stamp'. 17081 (org-time-stamp-inactive): Call `org-time-stamp'.
17070 (org-time-stamp): New argument `inactive'. Also edit inacive 17082 (org-time-stamp): New argument `inactive'. Also edit inactive
17071 stamps. Convert time stamp type. 17083 stamps. Convert time stamp type.
17072 (org-open-file): Interpret the `default' value for the `command' 17084 (org-open-file): Interpret the `default' value for the `command'
17073 in `org-file-apps'. 17085 in `org-file-apps'.
diff --git a/lisp/org/ob-ledger.el b/lisp/org/ob-ledger.el
index a5bdcbf2f73..4fe61451982 100644
--- a/lisp/org/ob-ledger.el
+++ b/lisp/org/ob-ledger.el
@@ -30,7 +30,7 @@
30;; 30;;
31;; 1) there is no such thing as a "session" in ledger 31;; 1) there is no such thing as a "session" in ledger
32;; 32;;
33;; 2) we are generally only going to return output from the leger program 33;; 2) we are generally only going to return output from the ledger program
34;; 34;;
35;; 3) we are adding the "cmdline" header argument 35;; 3) we are adding the "cmdline" header argument
36;; 36;;
diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el
index f7aa7bf4701..50761ede7cb 100644
--- a/lisp/org/org-agenda.el
+++ b/lisp/org/org-agenda.el
@@ -1619,7 +1619,7 @@ Where CATEGORY-REGEXP is a regexp matching the categories where
1619the icon should be displayed. 1619the icon should be displayed.
1620FILE-OR-DATA either a file path or a string containing image data. 1620FILE-OR-DATA either a file path or a string containing image data.
1621 1621
1622The other fields can be omited safely if not needed: 1622The other fields can be omitted safely if not needed:
1623TYPE indicates the image type. 1623TYPE indicates the image type.
1624DATA-P is a boolean indicating whether the FILE-OR-DATA string is 1624DATA-P is a boolean indicating whether the FILE-OR-DATA string is
1625image data. 1625image data.
diff --git a/lisp/org/org-capture.el b/lisp/org/org-capture.el
index 05cca0e311e..e3a87b77b5c 100644
--- a/lisp/org/org-capture.el
+++ b/lisp/org/org-capture.el
@@ -372,7 +372,7 @@ to avoid conflicts with other active capture processes."
372 (plist-get (if local org-capture-current-plist org-capture-plist) prop)) 372 (plist-get (if local org-capture-current-plist org-capture-plist) prop))
373 373
374(defun org-capture-member (prop &optional local) 374(defun org-capture-member (prop &optional local)
375 "Is PROP a preperty in `org-capture-plist'. 375 "Is PROP a property in `org-capture-plist'.
376When LOCAL is set, use the local variable `org-capture-current-plist', 376When LOCAL is set, use the local variable `org-capture-current-plist',
377this is necessary after initialization of the capture process, 377this is necessary after initialization of the capture process,
378to avoid conflicts with other active capture processes." 378to avoid conflicts with other active capture processes."
@@ -1449,7 +1449,7 @@ The template may still contain \"%?\" for cursor positioning."
1449 (goto-char (point-min)) 1449 (goto-char (point-min))
1450 (while (looking-at "[ \t]*\n") (replace-match "")) 1450 (while (looking-at "[ \t]*\n") (replace-match ""))
1451 (if (re-search-forward "[ \t\n]*\\'" nil t) (replace-match "\n")) 1451 (if (re-search-forward "[ \t\n]*\\'" nil t) (replace-match "\n"))
1452 ;; Return the expanded tempate and kill the temporary buffer 1452 ;; Return the expanded template and kill the temporary buffer
1453 (untabify (point-min) (point-max)) 1453 (untabify (point-min) (point-max))
1454 (set-buffer-modified-p nil) 1454 (set-buffer-modified-p nil)
1455 (prog1 (buffer-string) (kill-buffer (current-buffer)))))) 1455 (prog1 (buffer-string) (kill-buffer (current-buffer))))))
diff --git a/lisp/org/org-ctags.el b/lisp/org/org-ctags.el
index 352d414a4b6..d567b929056 100644
--- a/lisp/org/org-ctags.el
+++ b/lisp/org/org-ctags.el
@@ -36,7 +36,7 @@
36;; links to these 'tagged' destinations, allowing seamless navigation between 36;; links to these 'tagged' destinations, allowing seamless navigation between
37;; multiple org-mode files. Topics can be created in any org mode file and 37;; multiple org-mode files. Topics can be created in any org mode file and
38;; will always be found by plain links from other files. Other file types 38;; will always be found by plain links from other files. Other file types
39;; recognised by ctags (source code files, latex files, etc) will also be 39;; recognized by ctags (source code files, latex files, etc) will also be
40;; available as destinations for plain links, and similarly, org-mode links 40;; available as destinations for plain links, and similarly, org-mode links
41;; will be available as tags from source files. Finally, the function 41;; will be available as tags from source files. Finally, the function
42;; `org-ctags-find-tag-interactive' lets you choose any known tag, using 42;; `org-ctags-find-tag-interactive' lets you choose any known tag, using
diff --git a/lisp/org/org-exp.el b/lisp/org/org-exp.el
index ee8e6027706..35a51649452 100644
--- a/lisp/org/org-exp.el
+++ b/lisp/org/org-exp.el
@@ -2922,7 +2922,7 @@ to the value of `temporary-file-directory'."
2922 (org-load-modules-maybe) 2922 (org-load-modules-maybe)
2923 (unless org-local-vars 2923 (unless org-local-vars
2924 (setq org-local-vars (org-get-local-variables))) 2924 (setq org-local-vars (org-get-local-variables)))
2925 (eval ;; convert to fmt -- mimicing `org-run-like-in-org-mode' 2925 (eval ;; convert to fmt -- mimicking `org-run-like-in-org-mode'
2926 (list 'let org-local-vars 2926 (list 'let org-local-vars
2927 (list (intern (format "org-export-as-%s" fmt)) 2927 (list (intern (format "org-export-as-%s" fmt))
2928 nil nil nil ''string t)))) 2928 nil nil nil ''string t))))
diff --git a/lisp/org/org-list.el b/lisp/org/org-list.el
index 9184f0c3d54..a86c145a9ee 100644
--- a/lisp/org/org-list.el
+++ b/lisp/org/org-list.el
@@ -1439,7 +1439,7 @@ This function returns, destructively, the new list structure."
1439 ;; 1.1. Remove the item just created in structure. 1439 ;; 1.1. Remove the item just created in structure.
1440 (setq struct (delete (assq new-item struct) struct)) 1440 (setq struct (delete (assq new-item struct) struct))
1441 ;; 1.2. Copy ITEM and any of its sub-items at NEW-ITEM. 1441 ;; 1.2. Copy ITEM and any of its sub-items at NEW-ITEM.
1442 (setq struct (sort* 1442 (setq struct (sort
1443 (append 1443 (append
1444 struct 1444 struct
1445 (mapcar (lambda (e) 1445 (mapcar (lambda (e)
@@ -3008,7 +3008,7 @@ Valid parameters PARAMS are:
3008 3008
3009Alternatively, each parameter can also be a form returning 3009Alternatively, each parameter can also be a form returning
3010a string. These sexp can use keywords `counter' and `depth', 3010a string. These sexp can use keywords `counter' and `depth',
3011reprensenting respectively counter associated to the current 3011representing respectively counter associated to the current
3012item, and depth of the current sub-list, starting at 0. 3012item, and depth of the current sub-list, starting at 0.
3013Obviously, `counter' is only available for parameters applying to 3013Obviously, `counter' is only available for parameters applying to
3014items." 3014items."
diff --git a/lisp/org/org-table.el b/lisp/org/org-table.el
index 2fba931528e..76e4eae4b45 100644
--- a/lisp/org/org-table.el
+++ b/lisp/org/org-table.el
@@ -51,7 +51,7 @@
51(defvar orgtbl-after-send-table-hook nil 51(defvar orgtbl-after-send-table-hook nil
52 "Hook for functions attaching to `C-c C-c', if the table is sent. 52 "Hook for functions attaching to `C-c C-c', if the table is sent.
53This can be used to add additional functionality after the table is sent 53This can be used to add additional functionality after the table is sent
54to the receiver position, othewise, if table is not sent, the functions 54to the receiver position, otherwise, if table is not sent, the functions
55are not run.") 55are not run.")
56 56
57(defcustom orgtbl-optimized (eq org-enable-table-editor 'optimized) 57(defcustom orgtbl-optimized (eq org-enable-table-editor 'optimized)
@@ -1302,7 +1302,7 @@ However, when FORCE is non-nil, create new columns if necessary."
1302(defun org-table-line-to-dline (line &optional above) 1302(defun org-table-line-to-dline (line &optional above)
1303 "Turn a buffer line number into a data line number. 1303 "Turn a buffer line number into a data line number.
1304If there is no data line in this line, return nil. 1304If there is no data line in this line, return nil.
1305If there is no matchin dline (most likely te refrence was a hline), the 1305If there is no matching dline (most likely the reference was a hline), the
1306first dline below it is used. When ABOVE is non-nil, the one above is used." 1306first dline below it is used. When ABOVE is non-nil, the one above is used."
1307 (catch 'exit 1307 (catch 'exit
1308 (let ((ll (length org-table-dlines)) 1308 (let ((ll (length org-table-dlines))
@@ -2641,7 +2641,7 @@ in the buffer and column1 and column2 are table column numbers."
2641 (prog1 (org-trim (org-table-get-field c1)) 2641 (prog1 (org-trim (org-table-get-field c1))
2642 (if highlight (org-table-highlight-rectangle (point) (point))))) 2642 (if highlight (org-table-highlight-rectangle (point) (point)))))
2643 ;; A range, return a vector 2643 ;; A range, return a vector
2644 ;; First sort the numbers to get a regular ractangle 2644 ;; First sort the numbers to get a regular rectangle
2645 (if (< r2 r1) (setq tmp r1 r1 r2 r2 tmp)) 2645 (if (< r2 r1) (setq tmp r1 r1 r2 r2 tmp))
2646 (if (< c2 c1) (setq tmp c1 c1 c2 c2 tmp)) 2646 (if (< c2 c1) (setq tmp c1 c1 c2 c2 tmp))
2647 (if corners-only 2647 (if corners-only
@@ -2901,7 +2901,7 @@ known that the table will be realigned a little later anyway."
2901 2901
2902(defun org-table-iterate (&optional arg) 2902(defun org-table-iterate (&optional arg)
2903 "Recalculate the table until it does not change anymore. 2903 "Recalculate the table until it does not change anymore.
2904The maximun number of iterations is 10, but you can chose a different value 2904The maximum number of iterations is 10, but you can chose a different value
2905with the prefix ARG." 2905with the prefix ARG."
2906 (interactive "P") 2906 (interactive "P")
2907 (let ((imax (if arg (prefix-numeric-value arg) 10)) 2907 (let ((imax (if arg (prefix-numeric-value arg) 10))
diff --git a/lisp/org/org-taskjuggler.el b/lisp/org/org-taskjuggler.el
index 0d9516a389e..1fb3114bf3f 100644
--- a/lisp/org/org-taskjuggler.el
+++ b/lisp/org/org-taskjuggler.el
@@ -70,7 +70,7 @@
70;; "taskjuggler_project" (or whatever you customized 70;; "taskjuggler_project" (or whatever you customized
71;; `org-export-taskjuggler-project-tag' to). You are now ready to 71;; `org-export-taskjuggler-project-tag' to). You are now ready to
72;; export the project plan with `org-export-as-taskjuggler-and-open' 72;; export the project plan with `org-export-as-taskjuggler-and-open'
73;; which will export the project plan and open a gant chart in 73;; which will export the project plan and open a Gantt chart in
74;; TaskJugglerUI. 74;; TaskJugglerUI.
75;; 75;;
76;; * Resources 76;; * Resources
@@ -354,8 +354,8 @@ information, all the properties, etc."
354 (let* ((props (org-entry-properties)) 354 (let* ((props (org-entry-properties))
355 (components (org-heading-components)) 355 (components (org-heading-components))
356 (level (nth 1 components)) 356 (level (nth 1 components))
357 (headline 357 (headline
358 (replace-regexp-in-string 358 (replace-regexp-in-string
359 "\"" "\\\"" (nth 4 components) t t)) ; quote double quotes in headlines 359 "\"" "\\\"" (nth 4 components) t t)) ; quote double quotes in headlines
360 (parent-ordered (org-taskjuggler-parent-is-ordered-p))) 360 (parent-ordered (org-taskjuggler-parent-is-ordered-p)))
361 (push (cons "level" level) props) 361 (push (cons "level" level) props)
@@ -405,10 +405,10 @@ deeper), then it's not a leaf."
405 (successor (car (cdr tasks)))) 405 (successor (car (cdr tasks))))
406 (cond 406 (cond
407 ;; if a task has no successors it is a leaf 407 ;; if a task has no successors it is a leaf
408 ((null successor) 408 ((null successor)
409 (push (cons (cons "leaf-node" t) task) new-list)) 409 (push (cons (cons "leaf-node" t) task) new-list))
410 ;; if the successor has a lower level than task it is a leaf 410 ;; if the successor has a lower level than task it is a leaf
411 ((<= (cdr (assoc "level" successor)) (cdr (assoc "level" task))) 411 ((<= (cdr (assoc "level" successor)) (cdr (assoc "level" task)))
412 (push (cons (cons "leaf-node" t) task) new-list)) 412 (push (cons (cons "leaf-node" t) task) new-list))
413 ;; otherwise examine the rest of the tasks 413 ;; otherwise examine the rest of the tasks
414 (t (push task new-list)))) 414 (t (push task new-list))))
diff --git a/lisp/org/org.el b/lisp/org/org.el
index 25bfb8a78e8..afd4ea6b4c3 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -8775,8 +8775,8 @@ If optional argument MERGE is set, merge TABLE into
8775 (char-to-string char))) text ""))) 8775 (char-to-string char))) text "")))
8776 8776
8777(defun org-link-unescape (str) 8777(defun org-link-unescape (str)
8778 "Unhex hexified unicode strings as returned from the JavaScript function 8778 "Unhex hexified Unicode strings as returned from the JavaScript function
8779encodeURIComponent. E.g. `%C3%B6' is the german Umlaut `ö'." 8779encodeURIComponent. E.g. `%C3%B6' is the german Umlaut `ö'."
8780 (unless (and (null str) (string= "" str)) 8780 (unless (and (null str) (string= "" str))
8781 (let ((pos 0) (case-fold-search t) unhexed) 8781 (let ((pos 0) (case-fold-search t) unhexed)
8782 (while (setq pos (string-match "\\(%[0-9a-f][0-9a-f]\\)+" str pos)) 8782 (while (setq pos (string-match "\\(%[0-9a-f][0-9a-f]\\)+" str pos))
@@ -8786,7 +8786,7 @@ encodeURIComponent. E.g. `%C3%B6' is the german Umlaut `ö'."
8786 str) 8786 str)
8787 8787
8788(defun org-link-unescape-compound (hex) 8788(defun org-link-unescape-compound (hex)
8789 "Unhexify unicode hex-chars. E.g. `%C3%B6' is the German Umlaut `ö'. 8789 "Unhexify Unicode hex-chars. E.g. `%C3%B6' is the German Umlaut `ö'.
8790Note: this function also decodes single byte encodings like 8790Note: this function also decodes single byte encodings like
8791`%E1' (\"á\") if not followed by another `%[A-F0-9]{2}' group." 8791`%E1' (\"á\") if not followed by another `%[A-F0-9]{2}' group."
8792 (save-match-data 8792 (save-match-data
diff --git a/lisp/play/5x5.el b/lisp/play/5x5.el
index a7a332d97f2..e111e743608 100644
--- a/lisp/play/5x5.el
+++ b/lisp/play/5x5.el
@@ -579,7 +579,7 @@ Solutions are sorted from least to greatest Hamming weight."
579 (let* (calc-command-flags 579 (let* (calc-command-flags
580 (grid-size-squared (* 5x5-grid-size 5x5-grid-size)) 580 (grid-size-squared (* 5x5-grid-size 5x5-grid-size))
581 581
582 ;; targetv is the vector the origine of which is org="current 582 ;; targetv is the vector the origin of which is org="current
583 ;; grid" and the end of which is dest="all ones". 583 ;; grid" and the end of which is dest="all ones".
584 (targetv 584 (targetv
585 (5x5-log 585 (5x5-log
@@ -649,7 +649,7 @@ Solutions are sorted from least to greatest Hamming weight."
649 ;; 23x25 is a diagonal of 1, and the two last columns are a 649 ;; 23x25 is a diagonal of 1, and the two last columns are a
650 ;; base of kernel of transferm. 650 ;; base of kernel of transferm.
651 ;; 651 ;;
652 ;; base-change must be by construction inversible. 652 ;; base-change must be by construction invertible.
653 (base-change 653 (base-change
654 (5x5-log 654 (5x5-log
655 "p" 655 "p"
diff --git a/lisp/play/bubbles.el b/lisp/play/bubbles.el
index f2b7294e2d0..62d486ffca5 100644
--- a/lisp/play/bubbles.el
+++ b/lisp/play/bubbles.el
@@ -55,7 +55,7 @@
55 55
56;; 0.3 (2007-03-11) 56;; 0.3 (2007-03-11)
57;; - Renamed shift modes and thus names of score files. All 57;; - Renamed shift modes and thus names of score files. All
58;; highscores are lost, unless you rename the score files from 58;; high scores are lost, unless you rename the score files from
59;; bubbles-shift-... to bubbles-...! 59;; bubbles-shift-... to bubbles-...!
60;; - Bugfixes: Check for successful image creation. 60;; - Bugfixes: Check for successful image creation.
61;; Disable menus and counter when game is over. 61;; Disable menus and counter when game is over.
diff --git a/lisp/printing.el b/lisp/printing.el
index c5951a4983f..d6c67cc68a6 100644
--- a/lisp/printing.el
+++ b/lisp/printing.el
@@ -3692,7 +3692,7 @@ VI. Customization:
3692 "\n\n 3692 "\n\n
3693The printing interface buffer has the same functionality as the printing menu. 3693The printing interface buffer has the same functionality as the printing menu.
3694The major difference is that the states (like sending PostScript generated to a 3694The major difference is that the states (like sending PostScript generated to a
3695file, n-up printing, etc.) are set and saved between priting buffer 3695file, n-up printing, etc.) are set and saved between printing buffer
3696activation. Also, the landscape, duplex and tumble values are the same for 3696activation. Also, the landscape, duplex and tumble values are the same for
3697PostScript file and directory/buffer/region/mode processing; using menu, there 3697PostScript file and directory/buffer/region/mode processing; using menu, there
3698are different value sets for PostScript file and directory/buffer/region/mode 3698are different value sets for PostScript file and directory/buffer/region/mode
diff --git a/lisp/progmodes/ada-mode.el b/lisp/progmodes/ada-mode.el
index 9d2aad7741b..b8bf62d90b4 100644
--- a/lisp/progmodes/ada-mode.el
+++ b/lisp/progmodes/ada-mode.el
@@ -826,7 +826,7 @@ the 4 file locations can be clicked on and jumped to."
826;; to be considered as part of a word or not. 826;; to be considered as part of a word or not.
827;; Some characters may have multiple meanings depending on the context: 827;; Some characters may have multiple meanings depending on the context:
828;; - ' is either the beginning of a constant character or an attribute 828;; - ' is either the beginning of a constant character or an attribute
829;; - # is either part of a based litteral or a gnatprep statement. 829;; - # is either part of a based literal or a gnatprep statement.
830;; - " starts a string, but not if inside a constant character. 830;; - " starts a string, but not if inside a constant character.
831;; - ( and ) should be ignored if inside a constant character. 831;; - ( and ) should be ignored if inside a constant character.
832;; Thus their syntax property is changed automatically, and we can still use 832;; Thus their syntax property is changed automatically, and we can still use
diff --git a/lisp/progmodes/cc-awk.el b/lisp/progmodes/cc-awk.el
index aa1289cd632..8213a83461b 100644
--- a/lisp/progmodes/cc-awk.el
+++ b/lisp/progmodes/cc-awk.el
@@ -128,7 +128,7 @@
128;; REGEXPS FOR "HARMLESS" STRINGS/LINES. 128;; REGEXPS FOR "HARMLESS" STRINGS/LINES.
129(defconst c-awk-harmless-char-re "[^_#/\"\\\\\n\r]") 129(defconst c-awk-harmless-char-re "[^_#/\"\\\\\n\r]")
130;; Matches any character but a _, #, /, ", \, or newline. N.B. _" starts a 130;; Matches any character but a _, #, /, ", \, or newline. N.B. _" starts a
131;; localisation string in gawk 3.1 131;; localization string in gawk 3.1
132(defconst c-awk-harmless-_ "_\\([^\"]\\|\\'\\)") 132(defconst c-awk-harmless-_ "_\\([^\"]\\|\\'\\)")
133;; Matches an underline NOT followed by ". 133;; Matches an underline NOT followed by ".
134(defconst c-awk-harmless-string*-re 134(defconst c-awk-harmless-string*-re
@@ -160,7 +160,7 @@
160(defconst c-awk-string-without-end-here-re 160(defconst c-awk-string-without-end-here-re
161 (concat "\\=_?\"" c-awk-string-innards-re)) 161 (concat "\\=_?\"" c-awk-string-innards-re))
162;; Matches an AWK string at point up to, but not including, any terminator. 162;; Matches an AWK string at point up to, but not including, any terminator.
163;; A gawk 3.1+ string may look like _"localisable string". 163;; A gawk 3.1+ string may look like _"localizable string".
164(defconst c-awk-one-line-possibly-open-string-re 164(defconst c-awk-one-line-possibly-open-string-re
165 (concat "\"\\(" c-awk-string-ch-re "\\|" c-awk-non-eol-esc-pair-re "\\)*" 165 (concat "\"\\(" c-awk-string-ch-re "\\|" c-awk-non-eol-esc-pair-re "\\)*"
166 "\\(\"\\|\\\\?$\\|\\'\\)")) 166 "\\(\"\\|\\\\?$\\|\\'\\)"))
@@ -231,7 +231,7 @@
231;; to foul things up. 231;; to foul things up.
232(defconst c-awk-non-arith-op-bra-re 232(defconst c-awk-non-arith-op-bra-re
233 "[[\(&=:!><,?;'~|]") 233 "[[\(&=:!><,?;'~|]")
234;; Matches an openeing BRAcket ,round or square, or any operator character 234;; Matches an opening BRAcket, round or square, or any operator character
235;; apart from +,-,/,*,%. For the purpose at hand (detecting a / which is a 235;; apart from +,-,/,*,%. For the purpose at hand (detecting a / which is a
236;; regexp bracket) these arith ops are unnecessary and a pain, because of "++" 236;; regexp bracket) these arith ops are unnecessary and a pain, because of "++"
237;; and "--". 237;; and "--".
diff --git a/lisp/progmodes/cc-cmds.el b/lisp/progmodes/cc-cmds.el
index 68f31c55e71..1eaf8910d14 100644
--- a/lisp/progmodes/cc-cmds.el
+++ b/lisp/progmodes/cc-cmds.el
@@ -2178,7 +2178,7 @@ function does not require the declaration to contain a brace block."
2178 (end (1- (cdr range))) 2178 (end (1- (cdr range)))
2179 (here-filler ; matches WS and escaped newlines at point. 2179 (here-filler ; matches WS and escaped newlines at point.
2180 "\\=\\([ \t\n\r\f]\\|\\\\[\n\r]\\)*") 2180 "\\=\\([ \t\n\r\f]\\|\\\\[\n\r]\\)*")
2181 ;; Enhance paragraph-start and paragraph-separate also to recognise 2181 ;; Enhance paragraph-start and paragraph-separate also to recognize
2182 ;; blank lines terminated by escaped EOLs. IT MAY WELL BE that 2182 ;; blank lines terminated by escaped EOLs. IT MAY WELL BE that
2183 ;; these values should be customizable user options, or something. 2183 ;; these values should be customizable user options, or something.
2184 (paragraph-start c-string-par-start) 2184 (paragraph-start c-string-par-start)
@@ -2234,7 +2234,7 @@ function does not require the declaration to contain a brace block."
2234 (save-match-data 2234 (save-match-data
2235 (let* ((here (point)) 2235 (let* ((here (point))
2236 last 2236 last
2237 ;; Enhance paragraph-start and paragraph-separate to recognise 2237 ;; Enhance paragraph-start and paragraph-separate to recognize
2238 ;; blank lines terminated by escaped EOLs. 2238 ;; blank lines terminated by escaped EOLs.
2239 (paragraph-start c-string-par-start) 2239 (paragraph-start c-string-par-start)
2240 (paragraph-separate c-string-par-separate) 2240 (paragraph-separate c-string-par-separate)
diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el
index fb9fd406ef8..c91fe13543a 100644
--- a/lisp/progmodes/cc-defs.el
+++ b/lisp/progmodes/cc-defs.el
@@ -774,7 +774,7 @@ be after it."
774;; In addition to `c-at-vsemi-p-fn', a mode may need to supply a function for 774;; In addition to `c-at-vsemi-p-fn', a mode may need to supply a function for
775;; `c-vsemi-status-unknown-p-fn'. The macro `c-vsemi-status-unknown-p' is a 775;; `c-vsemi-status-unknown-p-fn'. The macro `c-vsemi-status-unknown-p' is a
776;; rather recondite kludge. It exists because the function 776;; rather recondite kludge. It exists because the function
777;; `c-beginning-of-statement-1' sometimes tests for VSs as an optimisation, 777;; `c-beginning-of-statement-1' sometimes tests for VSs as an optimization,
778;; but `c-at-vsemi-p' might well need to call `c-beginning-of-statement-1' in 778;; but `c-at-vsemi-p' might well need to call `c-beginning-of-statement-1' in
779;; its calculations, thus potentially leading to infinite recursion. 779;; its calculations, thus potentially leading to infinite recursion.
780;; 780;;
@@ -1249,7 +1249,7 @@ been put there by c-put-char-property. POINT remains unchanged."
1249;; which introduces a CPP construct and every EOL (or EOB, or character 1249;; which introduces a CPP construct and every EOL (or EOB, or character
1250;; preceding //, etc.) which terminates it. We can instantly "comment 1250;; preceding //, etc.) which terminates it. We can instantly "comment
1251;; out" all CPP constructs by giving `c-cpp-delimiter' a syntax-table 1251;; out" all CPP constructs by giving `c-cpp-delimiter' a syntax-table
1252;; propery '(14) (generic comment delimiter). 1252;; property '(14) (generic comment delimiter).
1253(defmacro c-set-cpp-delimiters (beg end) 1253(defmacro c-set-cpp-delimiters (beg end)
1254 ;; This macro does a hidden buffer change. 1254 ;; This macro does a hidden buffer change.
1255 `(progn 1255 `(progn
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index 31a58e48f50..c794cad65db 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -893,7 +893,7 @@ comment at the start of cc-engine.el for more info."
893 ((eq sym 'while) 893 ((eq sym 'while)
894 ;; Is this a real while, or a do-while? 894 ;; Is this a real while, or a do-while?
895 ;; The next `when' triggers unless we are SURE that 895 ;; The next `when' triggers unless we are SURE that
896 ;; the `while' is not the tailend of a `do-while'. 896 ;; the `while' is not the tail end of a `do-while'.
897 (when (or (not pptok) 897 (when (or (not pptok)
898 (memq (char-after pptok) delims) 898 (memq (char-after pptok) delims)
899 ;; The following kludge is to prevent 899 ;; The following kludge is to prevent
@@ -2364,7 +2364,7 @@ comment at the start of cc-engine.el for more info."
2364 2364
2365(defun c-parse-state-get-strategy (here good-pos) 2365(defun c-parse-state-get-strategy (here good-pos)
2366 ;; Determine the scanning strategy for adjusting `c-parse-state', attempting 2366 ;; Determine the scanning strategy for adjusting `c-parse-state', attempting
2367 ;; to minimise the amount of scanning. HERE is the pertinent position in 2367 ;; to minimize the amount of scanning. HERE is the pertinent position in
2368 ;; the buffer, GOOD-POS is a position where `c-state-cache' (possibly with 2368 ;; the buffer, GOOD-POS is a position where `c-state-cache' (possibly with
2369 ;; its head trimmed) is known to be good, or nil if there is no such 2369 ;; its head trimmed) is known to be good, or nil if there is no such
2370 ;; position. 2370 ;; position.
@@ -2548,7 +2548,7 @@ comment at the start of cc-engine.el for more info."
2548 c-state-cache))) 2548 c-state-cache)))
2549 ;; N.B. This defsubst codes one method for the simple, normal case, 2549 ;; N.B. This defsubst codes one method for the simple, normal case,
2550 ;; and a more sophisticated, slower way for the general case. Don't 2550 ;; and a more sophisticated, slower way for the general case. Don't
2551 ;; eliminate this defsubst - it's a speed optimisation. 2551 ;; eliminate this defsubst - it's a speed optimization.
2552 (c-append-lower-brace-pair-to-state-cache (1- bra+1))))) 2552 (c-append-lower-brace-pair-to-state-cache (1- bra+1)))))
2553 2553
2554(defun c-append-to-state-cache (from) 2554(defun c-append-to-state-cache (from)
@@ -2788,7 +2788,7 @@ comment at the start of cc-engine.el for more info."
2788 ;; 2788 ;;
2789 ;; This function must only be called only when (> `c-state-cache-good-pos' 2789 ;; This function must only be called only when (> `c-state-cache-good-pos'
2790 ;; HERE). Usually the gap between CACHE-POS and HERE is large. It is thus 2790 ;; HERE). Usually the gap between CACHE-POS and HERE is large. It is thus
2791 ;; optimised to eliminate (or minimise) scanning between these two 2791 ;; optimized to eliminate (or minimize) scanning between these two
2792 ;; positions. 2792 ;; positions.
2793 ;; 2793 ;;
2794 ;; Return a three element list (GOOD-POS SCAN-BACK-POS FWD-FLAG), where: 2794 ;; Return a three element list (GOOD-POS SCAN-BACK-POS FWD-FLAG), where:
@@ -2820,7 +2820,7 @@ comment at the start of cc-engine.el for more info."
2820 ; or `here' itself. 2820 ; or `here' itself.
2821 here- here+ ; start/end of macro around HERE, or HERE 2821 here- here+ ; start/end of macro around HERE, or HERE
2822 (here-bol (c-point 'bol here)) 2822 (here-bol (c-point 'bol here))
2823 (too-far-back (max (- here c-state-cache-too-far) 1))) 2823 (too-far-back (max (- here c-state-cache-too-far) (point-min))))
2824 2824
2825 ;; Remove completely irrelevant entries from `c-state-cache'. 2825 ;; Remove completely irrelevant entries from `c-state-cache'.
2826 (while (and c-state-cache 2826 (while (and c-state-cache
@@ -2964,9 +2964,9 @@ comment at the start of cc-engine.el for more info."
2964 c-state-cache-good-pos nil 2964 c-state-cache-good-pos nil
2965 c-state-min-scan-pos nil) 2965 c-state-min-scan-pos nil)
2966 2966
2967;;; Truncate `c-state-cache' and set `c-state-cache-good-pos' to a value below 2967 ;; Truncate `c-state-cache' and set `c-state-cache-good-pos' to a value
2968;;; `here'. To maintain its consistency, we may need to insert a new brace 2968 ;; below `here'. To maintain its consistency, we may need to insert a new
2969;;; pair. 2969 ;; brace pair.
2970 (let ((here-bol (c-point 'bol here)) 2970 (let ((here-bol (c-point 'bol here))
2971 too-high-pa ; recorded {/(/[ next above here, or nil. 2971 too-high-pa ; recorded {/(/[ next above here, or nil.
2972 dropped-cons ; was the last removed element a brace pair? 2972 dropped-cons ; was the last removed element a brace pair?
@@ -4233,9 +4233,9 @@ comment at the start of cc-engine.el for more info."
4233;; fails to take account of the change of the s-t property on the opening / to 4233;; fails to take account of the change of the s-t property on the opening / to
4234;; "string", and reports that the { is within a string started by the second /. 4234;; "string", and reports that the { is within a string started by the second /.
4235;; 4235;;
4236;; The workaround for this is for the AWK Mode initialisation to switch the 4236;; The workaround for this is for the AWK Mode initialization to switch the
4237;; defalias for c-in-literal to c-slow-in-literal. This will slow down other 4237;; defalias for c-in-literal to c-slow-in-literal. This will slow down other
4238;; cc-modes in XEmacs whenever an awk-buffer has been initialised. 4238;; cc-modes in XEmacs whenever an awk-buffer has been initialized.
4239;; 4239;;
4240;; (Alan Mackenzie, 2003/4/30). 4240;; (Alan Mackenzie, 2003/4/30).
4241 4241
@@ -4904,7 +4904,7 @@ comment at the start of cc-engine.el for more info."
4904 (setq cfd-prop-match nil)) 4904 (setq cfd-prop-match nil))
4905 4905
4906 (when (/= cfd-macro-end 0) 4906 (when (/= cfd-macro-end 0)
4907 ;; Restore limits if we did macro narrowment above. 4907 ;; Restore limits if we did macro narrowing above.
4908 (narrow-to-region (point-min) cfd-buffer-end))) 4908 (narrow-to-region (point-min) cfd-buffer-end)))
4909 4909
4910 (goto-char cfd-continue-pos) 4910 (goto-char cfd-continue-pos)
@@ -5052,7 +5052,7 @@ comment at the start of cc-engine.el for more info."
5052;; The strategy now (2010-01) adopted is to mark and unmark < and 5052;; The strategy now (2010-01) adopted is to mark and unmark < and
5053;; > IN MATCHING PAIRS ONLY. [Previously, they were marked 5053;; > IN MATCHING PAIRS ONLY. [Previously, they were marked
5054;; individually when their context so indicated. This gave rise to 5054;; individually when their context so indicated. This gave rise to
5055;; intractible problems when one of a matching pair was deleted, or 5055;; intractable problems when one of a matching pair was deleted, or
5056;; pulled into a literal.] 5056;; pulled into a literal.]
5057;; 5057;;
5058;; At each buffer change, the syntax-table properties are removed in a 5058;; At each buffer change, the syntax-table properties are removed in a
@@ -5965,7 +5965,7 @@ comment at the start of cc-engine.el for more info."
5965 ;; `*-font-lock-extra-types'); 5965 ;; `*-font-lock-extra-types');
5966 ;; o - 'prefix if it's a known prefix of a type; 5966 ;; o - 'prefix if it's a known prefix of a type;
5967 ;; o - 'found if it's a type that matches one in `c-found-types'; 5967 ;; o - 'found if it's a type that matches one in `c-found-types';
5968 ;; o - 'maybe if it's an identfier that might be a type; or 5968 ;; o - 'maybe if it's an identifier that might be a type; or
5969 ;; o - nil if it can't be a type (the point isn't moved then). 5969 ;; o - nil if it can't be a type (the point isn't moved then).
5970 ;; 5970 ;;
5971 ;; The point is assumed to be at the beginning of a token. 5971 ;; The point is assumed to be at the beginning of a token.
@@ -7100,7 +7100,7 @@ comment at the start of cc-engine.el for more info."
7100 ;; colon). Currently (2006-03), this applies only to Objective C's 7100 ;; colon). Currently (2006-03), this applies only to Objective C's
7101 ;; keywords "@private", "@protected", and "@public". Returns t. 7101 ;; keywords "@private", "@protected", and "@public". Returns t.
7102 ;; 7102 ;;
7103 ;; One of the things which will NOT be recognised as a label is a bit-field 7103 ;; One of the things which will NOT be recognized as a label is a bit-field
7104 ;; element of a struct, something like "int foo:5". 7104 ;; element of a struct, something like "int foo:5".
7105 ;; 7105 ;;
7106 ;; The end of the label is taken to be just after the colon, or the end of 7106 ;; The end of the label is taken to be just after the colon, or the end of
@@ -9582,7 +9582,7 @@ comment at the start of cc-engine.el for more info."
9582 (c-add-syntax 'inher-cont (c-point 'boi))) 9582 (c-add-syntax 'inher-cont (c-point 'boi)))
9583 9583
9584 ;; CASE 5D.5: Continuation of the "expression part" of a 9584 ;; CASE 5D.5: Continuation of the "expression part" of a
9585 ;; top level construct. Or, perhaps, an unrecognised construct. 9585 ;; top level construct. Or, perhaps, an unrecognized construct.
9586 (t 9586 (t
9587 (while (and (setq placeholder (point)) 9587 (while (and (setq placeholder (point))
9588 (eq (car (c-beginning-of-decl-1 containing-sexp)) 9588 (eq (car (c-beginning-of-decl-1 containing-sexp))
@@ -9593,7 +9593,7 @@ comment at the start of cc-engine.el for more info."
9593 (< (point) placeholder))) 9593 (< (point) placeholder)))
9594 (c-add-stmt-syntax 9594 (c-add-stmt-syntax
9595 (cond 9595 (cond
9596 ((eq (point) placeholder) 'statement) ; unrecognised construct 9596 ((eq (point) placeholder) 'statement) ; unrecognized construct
9597 ;; A preceding comma at the top level means that a 9597 ;; A preceding comma at the top level means that a
9598 ;; new variable declaration starts here. Use 9598 ;; new variable declaration starts here. Use
9599 ;; topmost-intro-cont for it, for consistency with 9599 ;; topmost-intro-cont for it, for consistency with
@@ -9784,7 +9784,7 @@ comment at the start of cc-engine.el for more info."
9784 (c-beginning-of-statement-1 containing-sexp) 9784 (c-beginning-of-statement-1 containing-sexp)
9785 (c-add-stmt-syntax 'statement nil t containing-sexp paren-state)) 9785 (c-add-stmt-syntax 'statement nil t containing-sexp paren-state))
9786 9786
9787 ;;CASE 5N: We are at a tompmost continuation line and the only 9787 ;;CASE 5N: We are at a topmost continuation line and the only
9788 ;;preceding items are annotations. 9788 ;;preceding items are annotations.
9789 ((and (c-major-mode-is 'java-mode) 9789 ((and (c-major-mode-is 'java-mode)
9790 (setq placeholder (point)) 9790 (setq placeholder (point))
diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el
index a5a9582315b..a31de35f3ba 100644
--- a/lisp/progmodes/cc-fonts.el
+++ b/lisp/progmodes/cc-fonts.el
@@ -1040,7 +1040,7 @@ casts and declarations are fontified. Used on level 2 and higher."
1040 ;; Inside the following "condition form", we move forward over the 1040 ;; Inside the following "condition form", we move forward over the
1041 ;; declarator's identifier up as far as any opening bracket (for array 1041 ;; declarator's identifier up as far as any opening bracket (for array
1042 ;; size) or paren (for parameters of function-type) or brace (for 1042 ;; size) or paren (for parameters of function-type) or brace (for
1043 ;; array/struct initialisation) or "=" or terminating delimiter 1043 ;; array/struct initialization) or "=" or terminating delimiter
1044 ;; (e.g. "," or ";" or "}"). 1044 ;; (e.g. "," or ";" or "}").
1045 (and 1045 (and
1046 pos 1046 pos
@@ -1122,7 +1122,7 @@ casts and declarations are fontified. Used on level 2 and higher."
1122 (char-after (match-beginning 1)))) 1122 (char-after (match-beginning 1))))
1123 1123
1124 (if types 1124 (if types
1125 ;; Register and fontify the identifer as a type. 1125 ;; Register and fontify the identifier as a type.
1126 (let ((c-promote-possible-types t)) 1126 (let ((c-promote-possible-types t))
1127 (goto-char id-start) 1127 (goto-char id-start)
1128 (c-forward-type)) 1128 (c-forward-type))
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index e1fb69c30c8..4a6344727b4 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -221,7 +221,7 @@ the evaluated constant value at compile time."
221 ;; 221 ;;
222 ;; OPS either has the structure of `c-operators', is a single 222 ;; OPS either has the structure of `c-operators', is a single
223 ;; group in `c-operators', or is a plain list of operators. 223 ;; group in `c-operators', or is a plain list of operators.
224 ;; 224 ;;
225 ;; OPGROUP-FILTER specifies how to select the operator groups. It 225 ;; OPGROUP-FILTER specifies how to select the operator groups. It
226 ;; can be t to choose all groups, a list of group type symbols 226 ;; can be t to choose all groups, a list of group type symbols
227 ;; (such as 'prefix) to accept, or a function which will be called 227 ;; (such as 'prefix) to accept, or a function which will be called
@@ -772,7 +772,7 @@ literal are multiline."
772 "Regexp matching the prefix of a cpp directive in the languages that 772 "Regexp matching the prefix of a cpp directive in the languages that
773normally use that macro preprocessor. Tested at bol or at boi. 773normally use that macro preprocessor. Tested at bol or at boi.
774Assumed to not contain any submatches or \\| operators." 774Assumed to not contain any submatches or \\| operators."
775 ;; TODO (ACM, 2005-04-01). Amend the following to recognise escaped NLs; 775 ;; TODO (ACM, 2005-04-01). Amend the following to recognize escaped NLs;
776 ;; amend all uses of c-opt-cpp-prefix which count regexp-depth. 776 ;; amend all uses of c-opt-cpp-prefix which count regexp-depth.
777 t "\\s *#\\s *" 777 t "\\s *#\\s *"
778 (java awk) nil) 778 (java awk) nil)
@@ -1520,7 +1520,7 @@ properly."
1520;; end-of-defun-function will be set so that commands like 1520;; end-of-defun-function will be set so that commands like
1521;; `mark-defun' and `narrow-to-defun' work right. The key sequences 1521;; `mark-defun' and `narrow-to-defun' work right. The key sequences
1522;; C-M-a and C-M-e are, however, bound directly to the CC Mode 1522;; C-M-a and C-M-e are, however, bound directly to the CC Mode
1523;; functions, allowing optimisation for large n. 1523;; functions, allowing optimization for large n.
1524(c-lang-defconst beginning-of-defun-function 1524(c-lang-defconst beginning-of-defun-function
1525 "Function to which beginning-of-defun-function will be set." 1525 "Function to which beginning-of-defun-function will be set."
1526 t 'c-beginning-of-defun 1526 t 'c-beginning-of-defun
@@ -2530,7 +2530,7 @@ Note that Java specific rules are currently applied to tell this from
2530 "\\.?[0-9]" 2530 "\\.?[0-9]"
2531 2531
2532 "\\|" 2532 "\\|"
2533 ;; The nonambiguous operators from `prefix-ops'. 2533 ;; The unambiguous operators from `prefix-ops'.
2534 (c-make-keywords-re nil 2534 (c-make-keywords-re nil
2535 (set-difference nonkeyword-prefix-ops in-or-postfix-ops 2535 (set-difference nonkeyword-prefix-ops in-or-postfix-ops
2536 :test 'string-equal)) 2536 :test 'string-equal))
@@ -2681,7 +2681,7 @@ possible for good performance."
2681 pos (match-end 0))) 2681 pos (match-end 0)))
2682 res)))) 2682 res))))
2683 2683
2684 ;; Allow cpp operatios (where applicable). 2684 ;; Allow cpp operations (where applicable).
2685 t (if (c-lang-const c-opt-cpp-prefix) 2685 t (if (c-lang-const c-opt-cpp-prefix)
2686 (set-difference (c-lang-const c-block-prefix-disallowed-chars) 2686 (set-difference (c-lang-const c-block-prefix-disallowed-chars)
2687 '(?#)) 2687 '(?#))
diff --git a/lisp/progmodes/cc-menus.el b/lisp/progmodes/cc-menus.el
index 4e9350de425..942303b1096 100644
--- a/lisp/progmodes/cc-menus.el
+++ b/lisp/progmodes/cc-menus.el
@@ -66,7 +66,7 @@ A sample value might look like: `\\(_P\\|_PROTO\\)'.")
66(defvar cc-imenu-c++-generic-expression 66(defvar cc-imenu-c++-generic-expression
67 `( 67 `(
68 ;; Try to match ::operator definitions first. Otherwise `X::operator new ()' 68 ;; Try to match ::operator definitions first. Otherwise `X::operator new ()'
69 ;; will be incorrectly recognised as function `new ()' because the regexps 69 ;; will be incorrectly recognized as function `new ()' because the regexps
70 ;; work by backtracking from the end of the definition. 70 ;; work by backtracking from the end of the definition.
71 (nil 71 (nil
72 ,(concat 72 ,(concat
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el
index d93d174047b..cc5a5236255 100644
--- a/lisp/progmodes/cc-mode.el
+++ b/lisp/progmodes/cc-mode.el
@@ -293,7 +293,7 @@ control). See \"cc-mode.el\" for more info."
293 ;; replaces `fill-paragraph' and does the adaption before calling 293 ;; replaces `fill-paragraph' and does the adaption before calling
294 ;; `fill-paragraph-function', and we have to mask comments etc 294 ;; `fill-paragraph-function', and we have to mask comments etc
295 ;; before that. Also, `c-fill-paragraph' chains on to 295 ;; before that. Also, `c-fill-paragraph' chains on to
296 ;; `fill-paragraph' and the value on `fill-parapgraph-function' to 296 ;; `fill-paragraph' and the value on `fill-paragraph-function' to
297 ;; do the actual filling work. 297 ;; do the actual filling work.
298 (substitute-key-definition 'fill-paragraph 'c-fill-paragraph 298 (substitute-key-definition 'fill-paragraph 'c-fill-paragraph
299 c-mode-base-map global-map) 299 c-mode-base-map global-map)
@@ -505,7 +505,7 @@ that requires a literal mode spec at compile time."
505 ;; doesn't work with filladapt but it's better than nothing. 505 ;; doesn't work with filladapt but it's better than nothing.
506 (set (make-local-variable 'fill-paragraph-function) 'c-fill-paragraph) 506 (set (make-local-variable 'fill-paragraph-function) 'c-fill-paragraph)
507 507
508 ;; Initialise the cache of brace pairs, and opening braces/brackets/parens. 508 ;; Initialize the cache of brace pairs, and opening braces/brackets/parens.
509 (c-state-cache-init) 509 (c-state-cache-init)
510 510
511 (when (or c-recognize-<>-arglists 511 (when (or c-recognize-<>-arglists
@@ -587,7 +587,7 @@ that requires a literal mode spec at compile time."
587 (add-hook 'after-change-functions 'c-after-change nil t) 587 (add-hook 'after-change-functions 'c-after-change nil t)
588 (set (make-local-variable 'font-lock-extend-after-change-region-function) 588 (set (make-local-variable 'font-lock-extend-after-change-region-function)
589 'c-extend-after-change-region)) ; Currently (2009-05) used by all 589 'c-extend-after-change-region)) ; Currently (2009-05) used by all
590 ; lanaguages with #define (C, C++,; ObjC), and by AWK. 590 ; languages with #define (C, C++,; ObjC), and by AWK.
591 591
592(defun c-setup-doc-comment-style () 592(defun c-setup-doc-comment-style ()
593 "Initialize the variables that depend on the value of `c-doc-comment-style'." 593 "Initialize the variables that depend on the value of `c-doc-comment-style'."
diff --git a/lisp/progmodes/cc-vars.el b/lisp/progmodes/cc-vars.el
index 02256ead392..549f94387d2 100644
--- a/lisp/progmodes/cc-vars.el
+++ b/lisp/progmodes/cc-vars.el
@@ -420,7 +420,7 @@ If a LINE-TYPE is missing, then \\[indent-for-comment] indents the comment
420according to `comment-column'. 420according to `comment-column'.
421 421
422Note that a non-nil value on `c-indent-comments-syntactically-p' 422Note that a non-nil value on `c-indent-comments-syntactically-p'
423overrides this variable, so empty lines are indentented syntactically 423overrides this variable, so empty lines are indented syntactically
424in that case, i.e. as if \\[c-indent-command] was used instead." 424in that case, i.e. as if \\[c-indent-command] was used instead."
425 :type 425 :type
426 (let ((space '(cons :tag "space" 426 (let ((space '(cons :tag "space"
diff --git a/lisp/progmodes/cfengine.el b/lisp/progmodes/cfengine.el
index eea822328f1..823304bd250 100644
--- a/lisp/progmodes/cfengine.el
+++ b/lisp/progmodes/cfengine.el
@@ -24,7 +24,7 @@
24;;; Commentary: 24;;; Commentary:
25 25
26;; Provides support for editing GNU Cfengine files, including 26;; Provides support for editing GNU Cfengine files, including
27;; font-locking, Imenu and indention, but with no special keybindings. 27;; font-locking, Imenu and indentation, but with no special keybindings.
28 28
29;; The CFEngine 3.x support doesn't have Imenu support but patches are 29;; The CFEngine 3.x support doesn't have Imenu support but patches are
30;; welcome. 30;; welcome.
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index 3dba1af515a..73e990e2755 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -1013,11 +1013,11 @@ POS and RES.")
1013 (setq col (funcall col)) 1013 (setq col (funcall col))
1014 (and 1014 (and
1015 (setq col (match-string-no-properties col)) 1015 (setq col (match-string-no-properties col))
1016 (setq col (- (string-to-number col) compilation-first-column))))) 1016 (setq col (string-to-number col)))))
1017 (if (and end-col (functionp end-col)) 1017 (if (and end-col (functionp end-col))
1018 (setq end-col (funcall end-col)) 1018 (setq end-col (funcall end-col))
1019 (if (and end-col (setq end-col (match-string-no-properties end-col))) 1019 (if (and end-col (setq end-col (match-string-no-properties end-col)))
1020 (setq end-col (- (string-to-number end-col) compilation-first-column -1)) 1020 (setq end-col (- (string-to-number end-col) -1))
1021 (if end-line (setq end-col -1)))) 1021 (if end-line (setq end-col -1))))
1022 (if (consp type) ; not a static type, check what it is. 1022 (if (consp type) ; not a static type, check what it is.
1023 (setq type (or (and (car type) (match-end (car type)) 1) 1023 (setq type (or (and (car type) (match-end (car type)) 1)
@@ -1037,6 +1037,7 @@ POS and RES.")
1037 "Go to column COL on the current line. 1037 "Go to column COL on the current line.
1038If SCREEN is non-nil, columns are screen columns, otherwise, they are 1038If SCREEN is non-nil, columns are screen columns, otherwise, they are
1039just char-counts." 1039just char-counts."
1040 (setq col (- col compilation-first-column))
1040 (if screen 1041 (if screen
1041 (move-to-column (max col 0)) 1042 (move-to-column (max col 0))
1042 (goto-char (min (+ (line-beginning-position) col) (line-end-position))))) 1043 (goto-char (min (+ (line-beginning-position) col) (line-end-position)))))
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index 1925d16ba58..0e649480dda 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -839,7 +839,7 @@ voice);
839 b) Can lineup vertically \"middles\" of rows, like `=' in 839 b) Can lineup vertically \"middles\" of rows, like `=' in
840 a = b; 840 a = b;
841 cc = d; 841 cc = d;
842 c) Can insert spaces where this impoves readability (in one 842 c) Can insert spaces where this improves readability (in one
843 interactive sweep over the buffer); 843 interactive sweep over the buffer);
844 d) Has support for imenu, including: 844 d) Has support for imenu, including:
845 1) Separate unordered list of \"interesting places\"; 845 1) Separate unordered list of \"interesting places\";
@@ -927,7 +927,7 @@ syntax-parsing routines, and marks them up so that either
927 927
928 A1) CPerl may work around these deficiencies (for big chunks, mostly 928 A1) CPerl may work around these deficiencies (for big chunks, mostly
929 PODs and HERE-documents), or 929 PODs and HERE-documents), or
930 A2) On capable Emaxen CPerl will use improved syntax-handlings 930 A2) On capable Emaxen CPerl will use improved syntax-handling
931 which reads mark-up hints directly. 931 which reads mark-up hints directly.
932 932
933 The scan in case A2 is much more comprehensive, thus may be slower. 933 The scan in case A2 is much more comprehensive, thus may be slower.
@@ -1277,7 +1277,7 @@ versions of Emacs."
1277 "----" 1277 "----"
1278 ["Ispell PODs" cperl-pod-spell 1278 ["Ispell PODs" cperl-pod-spell
1279 ;; Better not to update syntaxification here: 1279 ;; Better not to update syntaxification here:
1280 ;; debugging syntaxificatio can be broken by this??? 1280 ;; debugging syntaxification can be broken by this???
1281 (or 1281 (or
1282 (get-text-property (point-min) 'in-pod) 1282 (get-text-property (point-min) 'in-pod)
1283 (< (progn 1283 (< (progn
@@ -2801,7 +2801,7 @@ Will not look before LIM."
2801 (skip-chars-forward " \t") 2801 (skip-chars-forward " \t")
2802 (if (memq (char-after (point)) 2802 (if (memq (char-after (point))
2803 (append "#\n" nil)) 2803 (append "#\n" nil))
2804 nil ; Can't use intentation of this line... 2804 nil ; Can't use indentation of this line...
2805 (point))) 2805 (point)))
2806 (skip-chars-forward " \t") 2806 (skip-chars-forward " \t")
2807 (point))) 2807 (point)))
@@ -4540,7 +4540,7 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
4540 (forward-char 2)) 4540 (forward-char 2))
4541 (and (eq (following-char) ?\] ) 4541 (and (eq (following-char) ?\] )
4542 (forward-char 1))) 4542 (forward-char 1)))
4543 (setq REx-subgr-end qtag) ;EndOf smart-highlighed 4543 (setq REx-subgr-end qtag) ;End smart-highlighted
4544 ;; Apparently, I can't put \] into a charclass 4544 ;; Apparently, I can't put \] into a charclass
4545 ;; in m]]: m][\\\]\]] produces [\\]] 4545 ;; in m]]: m][\\\]\]] produces [\\]]
4546;;; POSIX? [:word:] [:^word:] only inside [] 4546;;; POSIX? [:word:] [:^word:] only inside []
diff --git a/lisp/progmodes/cwarn.el b/lisp/progmodes/cwarn.el
index 211c856f9b7..0516aca8d2b 100644
--- a/lisp/progmodes/cwarn.el
+++ b/lisp/progmodes/cwarn.el
@@ -210,16 +210,16 @@ This function is designed to be added to hooks, for example:
210 210
211(defun cwarn-is-enabled (mode &optional feature) 211(defun cwarn-is-enabled (mode &optional feature)
212 "Non-nil if CWarn FEATURE is enabled for MODE. 212 "Non-nil if CWarn FEATURE is enabled for MODE.
213feature is an atom representing one construction to highlight. 213FEATURE is an atom representing one construction to highlight.
214 214
215Check if any feature is enabled for MODE if no feature is specified. 215Check if any feature is enabled for MODE if no feature is specified.
216 216
217The valid features are described by the variable 217The valid features are described by the variable
218`cwarn-font-lock-feature-keywords-alist'." 218`cwarn-font-lock-feature-keywords-alist'."
219 (let ((mode-configuraion (assq mode cwarn-configuration))) 219 (let ((mode-configuration (assq mode cwarn-configuration)))
220 (and mode-configuraion 220 (and mode-configuration
221 (or (null feature) 221 (or (null feature)
222 (let ((list-or-t (nth 1 mode-configuraion))) 222 (let ((list-or-t (nth 1 mode-configuration)))
223 (or (eq list-or-t t) 223 (or (eq list-or-t t)
224 (if (eq (car-safe list-or-t) 'not) 224 (if (eq (car-safe list-or-t) 'not)
225 (not (memq feature (cdr list-or-t))) 225 (not (memq feature (cdr list-or-t)))
@@ -235,7 +235,7 @@ The valid features are described by the variable
235 (eq (char-after) ?#))) 235 (eq (char-after) ?#)))
236 236
237(defun cwarn-font-lock-keywords (addp) 237(defun cwarn-font-lock-keywords (addp)
238 "Install/Remove keywords into current buffer. 238 "Install/remove keywords into current buffer.
239If ADDP is non-nil, install else remove." 239If ADDP is non-nil, install else remove."
240 (dolist (pair cwarn-font-lock-feature-keywords-alist) 240 (dolist (pair cwarn-font-lock-feature-keywords-alist)
241 (let ((feature (car pair)) 241 (let ((feature (car pair))
diff --git a/lisp/progmodes/ebnf-dtd.el b/lisp/progmodes/ebnf-dtd.el
index 204b6a91b0f..7b63575195e 100644
--- a/lisp/progmodes/ebnf-dtd.el
+++ b/lisp/progmodes/ebnf-dtd.el
@@ -515,7 +515,7 @@
515;; ----- 515;; -----
516;; 516;;
517;; At moment, only the `<!ELEMENT' generates a syntactic chart. The 517;; At moment, only the `<!ELEMENT' generates a syntactic chart. The
518;; `<!ATTLIST', `<!NOTATION' and `<!ENTITY' are syntacticly checked but they 518;; `<!ATTLIST', `<!NOTATION' and `<!ENTITY' are syntactically checked but they
519;; don't generate a syntactic chart. 519;; don't generate a syntactic chart.
520;; 520;;
521;; Besides the syntax above, ebnf-dtd also accepts a `pure' dtd file. An 521;; Besides the syntax above, ebnf-dtd also accepts a `pure' dtd file. An
diff --git a/lisp/progmodes/ebnf2ps.el b/lisp/progmodes/ebnf2ps.el
index f98f3d191d7..d9adff6c8b8 100644
--- a/lisp/progmodes/ebnf2ps.el
+++ b/lisp/progmodes/ebnf2ps.el
@@ -6069,7 +6069,7 @@ killed after process termination."
6069 6069
6070 6070
6071(defun ebnf-make-terminal1 (name gen-func dim-func) 6071(defun ebnf-make-terminal1 (name gen-func dim-func)
6072 (vector gen-func ; 0 generatore 6072 (vector gen-func ; 0 generator
6073 'ignore ; 1 width fun 6073 'ignore ; 1 width fun
6074 dim-func ; 2 dimension fun 6074 dim-func ; 2 dimension fun
6075 0.0 ; 3 entry 6075 0.0 ; 3 entry
diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el
index 13cba0fe701..2d0b18f3dae 100644
--- a/lisp/progmodes/etags.el
+++ b/lisp/progmodes/etags.el
@@ -1191,7 +1191,7 @@ error message."
1191 ;; Note: there is a small inefficiency in find-buffer-visiting : 1191 ;; Note: there is a small inefficiency in find-buffer-visiting :
1192 ;; truename is computed even if not needed. Not too sure about this 1192 ;; truename is computed even if not needed. Not too sure about this
1193 ;; but I suspect truename computation accesses the disk. 1193 ;; but I suspect truename computation accesses the disk.
1194 ;; It is maybe a good idea to optimise this find-buffer-visiting. 1194 ;; It is maybe a good idea to optimize this find-buffer-visiting.
1195 ;; An alternative would be to use only get-file-buffer 1195 ;; An alternative would be to use only get-file-buffer
1196 ;; but this looks less "sure" to find the buffer for the file. 1196 ;; but this looks less "sure" to find the buffer for the file.
1197 (while (and (not the-buffer) buffer-search-extensions) 1197 (while (and (not the-buffer) buffer-search-extensions)
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index 7d31fb63e91..a1a41bd0b1b 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -74,7 +74,7 @@
74;; GDB in Emacs on Mac OSX works best with FSF GDB as Apple have made 74;; GDB in Emacs on Mac OSX works best with FSF GDB as Apple have made
75;; some changes to the version that they include as part of Mac OSX. 75;; some changes to the version that they include as part of Mac OSX.
76;; This requires GDB version 7.0 or later (estimated release date Aug 2009) 76;; This requires GDB version 7.0 or later (estimated release date Aug 2009)
77;; as earlier versions don not compile on Mac OSX. 77;; as earlier versions do not compile on Mac OSX.
78 78
79;;; Known Bugs: 79;;; Known Bugs:
80 80
@@ -823,7 +823,7 @@ detailed description of this mode.
823 (run-hooks 'gdb-mode-hook)) 823 (run-hooks 'gdb-mode-hook))
824 824
825(defun gdb-init-1 () 825(defun gdb-init-1 ()
826 ;; (re-)initialise 826 ;; (re-)initialize
827 (setq gdb-selected-frame nil 827 (setq gdb-selected-frame nil
828 gdb-frame-number nil 828 gdb-frame-number nil
829 gdb-thread-number nil 829 gdb-thread-number nil
@@ -3578,7 +3578,7 @@ member."
3578 (gud-basic-call 3578 (gud-basic-call
3579 (concat "-gdb-set variable " var " = " value))))) 3579 (concat "-gdb-set variable " var " = " value)))))
3580 3580
3581;; Dont display values of arrays or structures. 3581;; Don't display values of arrays or structures.
3582;; These can be expanded using gud-watch. 3582;; These can be expanded using gud-watch.
3583(defun gdb-locals-handler-custom () 3583(defun gdb-locals-handler-custom ()
3584 (let ((locals-list (bindat-get-field (gdb-json-partial-output) 'locals)) 3584 (let ((locals-list (bindat-get-field (gdb-json-partial-output) 'locals))
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index c60e8d72abc..527bc51eef8 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -1168,7 +1168,7 @@ containing the executable being debugged."
1168;; appears to indicate a breakpoint. Then we prod the dbx sub-process 1168;; appears to indicate a breakpoint. Then we prod the dbx sub-process
1169;; to output the information we want with a combination of the 1169;; to output the information we want with a combination of the
1170;; `printf' and `file' commands as a pseudo marker which we can 1170;; `printf' and `file' commands as a pseudo marker which we can
1171;; recognise next time through the marker-filter. This would be like 1171;; recognize next time through the marker-filter. This would be like
1172;; the gdb marker but you can't get the file name without a newline... 1172;; the gdb marker but you can't get the file name without a newline...
1173;; Note that gud-remove won't work since Irix dbx expects a breakpoint 1173;; Note that gud-remove won't work since Irix dbx expects a breakpoint
1174;; number rather than a line number etc. Maybe this could be made to 1174;; number rather than a line number etc. Maybe this could be made to
@@ -1689,7 +1689,7 @@ and source-file directory for your debugger."
1689;; Run jdb (like this): jdb 1689;; Run jdb (like this): jdb
1690;; 1690;;
1691;; type any jdb switches followed by the name of the class you'd like to debug. 1691;; type any jdb switches followed by the name of the class you'd like to debug.
1692;; Supply a fully qualfied classname (these do not have the ".class" extension) 1692;; Supply a fully qualified classname (these don't have the ".class" extension)
1693;; for the name of the class to debug (e.g. "COM.the-kind.ddavies.CoolClass"). 1693;; for the name of the class to debug (e.g. "COM.the-kind.ddavies.CoolClass").
1694;; See the known problems section below for restrictions when specifying jdb 1694;; See the known problems section below for restrictions when specifying jdb
1695;; command line switches (search forward for '-classpath'). 1695;; command line switches (search forward for '-classpath').
@@ -2094,7 +2094,7 @@ extension EXTN. Normally EXTN is given as the regular expression
2094 2094
2095 ;; By this point the current directory is all screwed up. Maybe we 2095 ;; By this point the current directory is all screwed up. Maybe we
2096 ;; could fix things and re-invoke gud-common-init, but for now I think 2096 ;; could fix things and re-invoke gud-common-init, but for now I think
2097 ;; issueing the error is good enough. 2097 ;; issuing the error is good enough.
2098 (if user-error 2098 (if user-error
2099 (progn 2099 (progn
2100 (kill-buffer (current-buffer)) 2100 (kill-buffer (current-buffer))
diff --git a/lisp/progmodes/idlw-help.el b/lisp/progmodes/idlw-help.el
index 2708346f05f..0266fc17f9c 100644
--- a/lisp/progmodes/idlw-help.el
+++ b/lisp/progmodes/idlw-help.el
@@ -986,10 +986,10 @@ describes the correct routine - even if the keyword description cannot
986be found. TYPE is ignored. 986be found. TYPE is ignored.
987 987
988This function expects a more or less standard routine header. In 988This function expects a more or less standard routine header. In
989particlar it looks for the `NAME:' tag, either with a colon, or alone 989particular it looks for the `NAME:' tag, either with a colon, or alone
990on a line. Then `NAME:' must be followed by the routine name on the 990on a line. Then `NAME:' must be followed by the routine name on the
991same or the next line. When KEYWORD is non-nil, looks first for a 991same or the next line. When KEYWORD is non-nil, looks first for a
992`KEYWORDS' section. It is amazing how inconsisten this is through 992`KEYWORDS' section. It is amazing how inconsistent this is through
993some IDL libraries I have seen. We settle for a line containing an 993some IDL libraries I have seen. We settle for a line containing an
994upper case \"KEYWORD\" string. If this line is not found we search 994upper case \"KEYWORD\" string. If this line is not found we search
995for the keyword anyway to increase the hit-rate 995for the keyword anyway to increase the hit-rate
diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el
index 1233ee19ff6..d8715599d74 100644
--- a/lisp/progmodes/idlwave.el
+++ b/lisp/progmodes/idlwave.el
@@ -5789,7 +5789,7 @@ end
5789 (setq idlwave-idlwave_routine_info-compiled t)) 5789 (setq idlwave-idlwave_routine_info-compiled t))
5790 5790
5791 ;; Restore if necessary. Must use execute to hide lame routine_info 5791 ;; Restore if necessary. Must use execute to hide lame routine_info
5792 ;; errors on undefinded routine 5792 ;; errors on undefined routine
5793 (idlwave-shell-send-command 5793 (idlwave-shell-send-command
5794 (format "if execute(\"_v=routine_info('idlwave_routine_info',/SOURCE)\") eq 0 then restore,'%s' else if _v.path eq '' then restore,'%s'" 5794 (format "if execute(\"_v=routine_info('idlwave_routine_info',/SOURCE)\") eq 0 then restore,'%s' else if _v.path eq '' then restore,'%s'"
5795 idlwave-shell-temp-rinfo-save-file 5795 idlwave-shell-temp-rinfo-save-file
diff --git a/lisp/progmodes/inf-lisp.el b/lisp/progmodes/inf-lisp.el
index 636766b36e7..1328e303d45 100644
--- a/lisp/progmodes/inf-lisp.el
+++ b/lisp/progmodes/inf-lisp.el
@@ -598,7 +598,7 @@ See variable `lisp-describe-sym-command'."
598 (error "No Lisp subprocess; see variable `inferior-lisp-buffer'")))) 598 (error "No Lisp subprocess; see variable `inferior-lisp-buffer'"))))
599 599
600 600
601;;; Do the user's customisation... 601;;; Do the user's customization...
602;;;=============================== 602;;;===============================
603(defvar inferior-lisp-load-hook nil 603(defvar inferior-lisp-load-hook nil
604 "This hook is run when the library `inf-lisp' is loaded.") 604 "This hook is run when the library `inf-lisp' is loaded.")
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index 0e3fdc78a39..94a9c250fee 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -1599,7 +1599,7 @@ will be returned."
1599 1599
1600(defun js-syntactic-context () 1600(defun js-syntactic-context ()
1601 "Return the JavaScript syntactic context at point. 1601 "Return the JavaScript syntactic context at point.
1602When called interatively, also display a message with that 1602When called interactively, also display a message with that
1603context." 1603context."
1604 (interactive) 1604 (interactive)
1605 (let* ((syntactic-context (js--syntactic-context-from-pstate 1605 (let* ((syntactic-context (js--syntactic-context-from-pstate
diff --git a/lisp/progmodes/pascal.el b/lisp/progmodes/pascal.el
index 67e3c4a18b4..b1502adbeb1 100644
--- a/lisp/progmodes/pascal.el
+++ b/lisp/progmodes/pascal.el
@@ -414,7 +414,7 @@ no args, if that value is non-nil."
414 (electric-pascal-terminate-line))) 414 (electric-pascal-terminate-line)))
415 415
416(defun electric-pascal-colon () 416(defun electric-pascal-colon ()
417 "Insert `:' and do all indentions except line indent on this line." 417 "Insert `:' and do all indentations except line indent on this line."
418 (interactive) 418 (interactive)
419 (insert last-command-event) 419 (insert last-command-event)
420 ;; Do nothing if within string. 420 ;; Do nothing if within string.
@@ -427,7 +427,7 @@ no args, if that value is non-nil."
427 (pascal-indent-command)))) 427 (pascal-indent-command))))
428 428
429(defun electric-pascal-equal () 429(defun electric-pascal-equal ()
430 "Insert `=', and do indention if within type declaration." 430 "Insert `=', and do indentation if within type declaration."
431 (interactive) 431 (interactive)
432 (insert last-command-event) 432 (insert last-command-event)
433 (if (eq (car (pascal-calculate-indent)) 'declaration) 433 (if (eq (car (pascal-calculate-indent)) 'declaration)
diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el
index ef0905bb2a8..8b4798e1c14 100644
--- a/lisp/progmodes/prolog.el
+++ b/lisp/progmodes/prolog.el
@@ -169,7 +169,7 @@
169;; package requirements. 169;; package requirements.
170;; Version 1.13: 170;; Version 1.13:
171;; o Removed the use of `map-char-table' in `prolog-build-case-strings' 171;; o Removed the use of `map-char-table' in `prolog-build-case-strings'
172;; which appears to cause prblems in (at least) Emacs 23.0.0.1. 172;; which appears to cause problems in (at least) Emacs 23.0.0.1.
173;; o Added if-then-else indentation + corresponding electric 173;; o Added if-then-else indentation + corresponding electric
174;; characters. New customization: `prolog-electric-if-then-else-flag' 174;; characters. New customization: `prolog-electric-if-then-else-flag'
175;; o Align support (requires `align'). New customization: 175;; o Align support (requires `align'). New customization:
@@ -391,7 +391,7 @@ Otherwise indent to `prolog-indent-width'."
391 391
392(defcustom prolog-left-indent-regexp "\\(;\\|\\*?->\\)" 392(defcustom prolog-left-indent-regexp "\\(;\\|\\*?->\\)"
393 "*Regexp for character sequences after which next line is indented. 393 "*Regexp for character sequences after which next line is indented.
394Next line after such a regexp is indented to the opening paranthesis level." 394Next line after such a regexp is indented to the opening parenthesis level."
395 :group 'prolog-indentation 395 :group 'prolog-indentation
396 :type 'regexp) 396 :type 'regexp)
397 397
diff --git a/lisp/progmodes/ps-mode.el b/lisp/progmodes/ps-mode.el
index 94d55ee3f61..c2adc3b801b 100644
--- a/lisp/progmodes/ps-mode.el
+++ b/lisp/progmodes/ps-mode.el
@@ -267,7 +267,7 @@ If nil, use `temporary-file-directory'."
267 . (1 font-lock-function-name-face)) 267 . (1 font-lock-function-name-face))
268 '("/\\w+" . font-lock-variable-name-face) 268 '("/\\w+" . font-lock-variable-name-face)
269 (cons ps-mode-operators 'font-lock-keyword-face))) 269 (cons ps-mode-operators 'font-lock-keyword-face)))
270 "High level highliting for PostScript mode.") 270 "High level highlighting for PostScript mode.")
271 271
272(defconst ps-mode-font-lock-keywords ps-mode-font-lock-keywords-1 272(defconst ps-mode-font-lock-keywords ps-mode-font-lock-keywords-1
273 "Default expressions to highlight in PostScript mode.") 273 "Default expressions to highlight in PostScript mode.")
@@ -713,7 +713,7 @@ defines the beginning of a group. These tokens are: { [ <<"
713 (ps-mode-r-balance ">>")) 713 (ps-mode-r-balance ">>"))
714 714
715(defun ps-mode-r-balance (right) 715(defun ps-mode-r-balance (right)
716 "Adjust indentification if point after RIGHT." 716 "Adjust indenting if point after RIGHT."
717 (if ps-mode-auto-indent 717 (if ps-mode-auto-indent
718 (save-excursion 718 (save-excursion
719 (when (re-search-backward (concat "^[ \t]*" (regexp-quote right) "\\=") nil t) 719 (when (re-search-backward (concat "^[ \t]*" (regexp-quote right) "\\=") nil t)
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index a0a368777e7..fbf7c3c42f7 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -1122,7 +1122,7 @@ don't move and return nil. Otherwise return t."
1122 1122
1123;;;; Imenu. 1123;;;; Imenu.
1124 1124
1125;; For possibily speeding this up, here's the top of the ELP profile 1125;; For possibly speeding this up, here's the top of the ELP profile
1126;; for rescanning pydoc.py (2.2k lines, 90kb): 1126;; for rescanning pydoc.py (2.2k lines, 90kb):
1127;; Function Name Call Count Elapsed Time Average Time 1127;; Function Name Call Count Elapsed Time Average Time
1128;; ==================================== ========== ============= ============ 1128;; ==================================== ========== ============= ============
@@ -1549,7 +1549,7 @@ behavior, change `python-remove-cwd-from-path' to nil."
1549 (if path (concat path path-separator)) 1549 (if path (concat path path-separator))
1550 data-directory) 1550 data-directory)
1551 process-environment)) 1551 process-environment))
1552 ;; If we use a pipe, unicode characters are not printed 1552 ;; If we use a pipe, Unicode characters are not printed
1553 ;; correctly (Bug#5794) and IPython does not work at 1553 ;; correctly (Bug#5794) and IPython does not work at
1554 ;; all (Bug#5390). 1554 ;; all (Bug#5390).
1555 (process-connection-type t)) 1555 (process-connection-type t))
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index bca5c93e0a5..62ca2ce085f 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -567,6 +567,7 @@ This is buffer-local in every such buffer.")
567 '((csh . "\\<\\([[:alnum:]_]+\\)\\(\\[.+\\]\\)?[ \t]*[-+*/%^]?=") 567 '((csh . "\\<\\([[:alnum:]_]+\\)\\(\\[.+\\]\\)?[ \t]*[-+*/%^]?=")
568 ;; actually spaces are only supported in let/(( ... )) 568 ;; actually spaces are only supported in let/(( ... ))
569 (ksh88 . "\\<\\([[:alnum:]_]+\\)\\(\\[.+\\]\\)?[ \t]*\\([-+*/%&|~^]\\|<<\\|>>\\)?=") 569 (ksh88 . "\\<\\([[:alnum:]_]+\\)\\(\\[.+\\]\\)?[ \t]*\\([-+*/%&|~^]\\|<<\\|>>\\)?=")
570 (bash . "\\<\\([[:alnum:]_]+\\)\\(\\[.+\\]\\)?\\+?=")
570 (rc . "\\<\\([[:alnum:]_*]+\\)[ \t]*=") 571 (rc . "\\<\\([[:alnum:]_*]+\\)[ \t]*=")
571 (sh . "\\<\\([[:alnum:]_]+\\)=")) 572 (sh . "\\<\\([[:alnum:]_]+\\)="))
572 "Regexp for the variable name and what may follow in an assignment. 573 "Regexp for the variable name and what may follow in an assignment.
diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el
index 2d8334bcb7d..4cc4a133c8e 100644
--- a/lisp/progmodes/verilog-mode.el
+++ b/lisp/progmodes/verilog-mode.el
@@ -2622,7 +2622,7 @@ user-visible changes to the buffer must not be within a
2622 2622
2623(defmacro verilog-save-no-change-functions (&rest body) 2623(defmacro verilog-save-no-change-functions (&rest body)
2624 "Execute BODY forms, disabling all change hooks in BODY. 2624 "Execute BODY forms, disabling all change hooks in BODY.
2625For insigificant changes, see instead `verilog-save-buffer-state'." 2625For insignificant changes, see instead `verilog-save-buffer-state'."
2626 `(let* ((inhibit-point-motion-hooks t) 2626 `(let* ((inhibit-point-motion-hooks t)
2627 before-change-functions 2627 before-change-functions
2628 after-change-functions) 2628 after-change-functions)
@@ -3596,7 +3596,7 @@ With ARG, first kill any existing labels."
3596 (looking-at "\\w+\\W*:\\W*\\(coverpoint\\|cross\\|constraint\\)") 3596 (looking-at "\\w+\\W*:\\W*\\(coverpoint\\|cross\\|constraint\\)")
3597 ;; keep going if we are in the middle of a word 3597 ;; keep going if we are in the middle of a word
3598 (not (or (looking-at "\\<") (forward-word -1))) 3598 (not (or (looking-at "\\<") (forward-word -1)))
3599 ;; stop if we see an assertion (perhaps labled) 3599 ;; stop if we see an assertion (perhaps labeled)
3600 (and 3600 (and
3601 (looking-at "\\(\\<\\(assert\\|assume\\|cover\\)\\>\\s-+\\<property\\>\\)\\|\\(\\<assert\\>\\)") 3601 (looking-at "\\(\\<\\(assert\\|assume\\|cover\\)\\>\\s-+\\<property\\>\\)\\|\\(\\<assert\\>\\)")
3602 (progn 3602 (progn
@@ -6974,7 +6974,7 @@ Signals must be in standard (base vector) form."
6974;;(verilog-signals-not-in '(("A" "") ("B" "") ("DEL" "[2:3]")) '(("DEL" "") ("EXT" ""))) 6974;;(verilog-signals-not-in '(("A" "") ("B" "") ("DEL" "[2:3]")) '(("DEL" "") ("EXT" "")))
6975 6975
6976(defun verilog-signals-memory (in-list) 6976(defun verilog-signals-memory (in-list)
6977 "Return list of signals in IN-LIST that are memoried (multidimensional)." 6977 "Return list of signals in IN-LIST that are memorized (multidimensional)."
6978 (let (out-list) 6978 (let (out-list)
6979 (while in-list 6979 (while in-list
6980 (if (nth 3 (car in-list)) 6980 (if (nth 3 (car in-list))
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index cd2d45b7856..3a94601768d 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -16857,7 +16857,7 @@ User Options
16857`vhdl-configuration-file-name': (new) 16857`vhdl-configuration-file-name': (new)
16858 Specify how the configuration file name is obtained. 16858 Specify how the configuration file name is obtained.
16859`vhdl-compose-configuration-name': (new) 16859`vhdl-compose-configuration-name': (new)
16860 Specify how the configuration name is optained. 16860 Specify how the configuration name is obtained.
16861`vhdl-compose-configuration-create-file': (new) 16861`vhdl-compose-configuration-create-file': (new)
16862 Specify whether a new file should be created for a configuration. 16862 Specify whether a new file should be created for a configuration.
16863`vhdl-compose-configuration-hierarchical': (new) 16863`vhdl-compose-configuration-hierarchical': (new)
diff --git a/lisp/ps-mule.el b/lisp/ps-mule.el
index c0e4d68107b..65cdb600d74 100644
--- a/lisp/ps-mule.el
+++ b/lisp/ps-mule.el
@@ -1010,7 +1010,7 @@ the sequence."
1010 ps-mule-external-libraries)) 1010 ps-mule-external-libraries))
1011 1011
1012(defun ps-mule-encode-header-string (string fonttag) 1012(defun ps-mule-encode-header-string (string fonttag)
1013 "Generate PostScript code for ploting STRING by font FONTTAG. 1013 "Generate PostScript code for plotting STRING by font FONTTAG.
1014FONTTAG should be a string \"/h0\", \"/h1\", \"/L0\", or \"/H0\". 1014FONTTAG should be a string \"/h0\", \"/h1\", \"/L0\", or \"/H0\".
1015Any other value is treated as \"/H0\"." 1015Any other value is treated as \"/H0\"."
1016 (with-temp-buffer 1016 (with-temp-buffer
diff --git a/lisp/ps-print.el b/lisp/ps-print.el
index 6c80705f993..6d05e6db586 100644
--- a/lisp/ps-print.el
+++ b/lisp/ps-print.el
@@ -5372,9 +5372,9 @@ Where:
5372KIND is a valid value of `ps-n-up-filling'. 5372KIND is a valid value of `ps-n-up-filling'.
5373XCOL YCOL are the relative position for the next column. 5373XCOL YCOL are the relative position for the next column.
5374XLIN YLIN are the relative position for the beginning of next line. 5374XLIN YLIN are the relative position for the beginning of next line.
5375REPEAT is the number of repetions for external loop. 5375REPEAT is the number of repetitions for external loop.
5376END is the number of repetions for internal loop and also the number of pages in 5376END is the number of repetitions for internal loop and also the number
5377 a row. 5377 of pages in a row.
5378XSTART YSTART are the relative position for the first page in a sheet.") 5378XSTART YSTART are the relative position for the first page in a sheet.")
5379 5379
5380 5380
@@ -6658,7 +6658,7 @@ If FACE is not a valid face name, use default face."
6658;; But autoload them here to make the separation invisible. 6658;; But autoload them here to make the separation invisible.
6659 6659
6660;;;### (autoloads (ps-mule-end-job ps-mule-begin-job ps-mule-initialize 6660;;;### (autoloads (ps-mule-end-job ps-mule-begin-job ps-mule-initialize
6661;;;;;; ps-multibyte-buffer) "ps-mule" "ps-mule.el" "cf055ee6ba398da614a675dc25bdb123") 6661;;;;;; ps-multibyte-buffer) "ps-mule" "ps-mule.el" "afb9022f2e1e366c51672aa11a3bd76f")
6662;;; Generated autoloads from ps-mule.el 6662;;; Generated autoloads from ps-mule.el
6663 6663
6664(defvar ps-multibyte-buffer nil "\ 6664(defvar ps-multibyte-buffer nil "\
diff --git a/lisp/recentf.el b/lisp/recentf.el
index 79f4eb437d9..2dac870afd5 100644
--- a/lisp/recentf.el
+++ b/lisp/recentf.el
@@ -567,7 +567,7 @@ menu-elements (no sub-menu)."
567 (if (and l (functionp filter)) 567 (if (and l (functionp filter))
568 (let ((case-fold-search recentf-case-fold-search) 568 (let ((case-fold-search recentf-case-fold-search)
569 elts others) 569 elts others)
570 ;; split L into two sub-listes, one of sub-menus elements and 570 ;; split L into two sub-lists, one of sub-menus elements and
571 ;; another of single menu elements. 571 ;; another of single menu elements.
572 (dolist (elt l) 572 (dolist (elt l)
573 (if (recentf-sub-menu-element-p elt) 573 (if (recentf-sub-menu-element-p elt)
diff --git a/lisp/repeat.el b/lisp/repeat.el
index 8bab8691b4f..8ddc8d41429 100644
--- a/lisp/repeat.el
+++ b/lisp/repeat.el
@@ -26,7 +26,7 @@
26 26
27;; Sometimes the fastest way to get something done is just to lean on a key; 27;; Sometimes the fastest way to get something done is just to lean on a key;
28;; moving forward through a series of words by leaning on M-f is an example. 28;; moving forward through a series of words by leaning on M-f is an example.
29;; But 'forward-page is orthodoxily bound to C-x ], so moving forward through 29;; But 'forward-page is orthodoxly bound to C-x ], so moving forward through
30;; several pages requires 30;; several pages requires
31;; Loop until desired page is reached: 31;; Loop until desired page is reached:
32;; Hold down control key with left pinkie. 32;; Hold down control key with left pinkie.
diff --git a/lisp/replace.el b/lisp/replace.el
index bf6425f4099..4ea3f747caa 100644
--- a/lisp/replace.el
+++ b/lisp/replace.el
@@ -1225,7 +1225,7 @@ See also `multi-occur'."
1225 1225
1226 (with-current-buffer occur-buf 1226 (with-current-buffer occur-buf
1227 (if (stringp nlines) 1227 (if (stringp nlines)
1228 (fundamental-mode) ;; This is for collect opeartion. 1228 (fundamental-mode) ;; This is for collect operation.
1229 (occur-mode)) 1229 (occur-mode))
1230 (let ((inhibit-read-only t) 1230 (let ((inhibit-read-only t)
1231 ;; Don't generate undo entries for creation of the initial contents. 1231 ;; Don't generate undo entries for creation of the initial contents.
diff --git a/lisp/ses.el b/lisp/ses.el
index c71c603726c..cdc58e12d00 100644
--- a/lisp/ses.el
+++ b/lisp/ses.el
@@ -1315,7 +1315,7 @@ Newlines in the data are escaped."
1315 (setq formula (cadr formula))) 1315 (setq formula (cadr formula)))
1316 (if (eq (car-safe printer) 'ses-safe-printer) 1316 (if (eq (car-safe printer) 'ses-safe-printer)
1317 (setq printer (cadr printer))) 1317 (setq printer (cadr printer)))
1318 ;; This is noticably faster than (format "%S %S %S %S %S") 1318 ;; This is noticeably faster than (format "%S %S %S %S %S")
1319 (setq text (concat "(ses-cell " 1319 (setq text (concat "(ses-cell "
1320 (symbol-name sym) 1320 (symbol-name sym)
1321 " " 1321 " "
@@ -2720,7 +2720,7 @@ When inserting cells, the formulas are usually relocated to keep the same
2720relative references to neighboring cells. This is best if the formulas 2720relative references to neighboring cells. This is best if the formulas
2721generally refer to other cells within the yanked text. You can use the C-u 2721generally refer to other cells within the yanked text. You can use the C-u
2722prefix to specify insertion without relocation, which is best when the 2722prefix to specify insertion without relocation, which is best when the
2723formulas refer to cells outsite the yanked text. 2723formulas refer to cells outside the yanked text.
2724 2724
2725When inserting formulas, the text is treated as a string constant if it doesn't 2725When inserting formulas, the text is treated as a string constant if it doesn't
2726make sense as a sexp or would otherwise be considered a symbol. Use 'sym to 2726make sense as a sexp or would otherwise be considered a symbol. Use 'sym to
diff --git a/lisp/shell.el b/lisp/shell.el
index c75594ddbe4..47119e6769c 100644
--- a/lisp/shell.el
+++ b/lisp/shell.el
@@ -89,7 +89,7 @@
89;; comint-strip-ctrl-m Remove trailing ^Ms from output 89;; comint-strip-ctrl-m Remove trailing ^Ms from output
90;; 90;;
91;; The shell mode hook is shell-mode-hook 91;; The shell mode hook is shell-mode-hook
92;; comint-prompt-regexp is initialised to shell-prompt-pattern, for backwards 92;; comint-prompt-regexp is initialized to shell-prompt-pattern, for backwards
93;; compatibility. 93;; compatibility.
94 94
95;; Read the rest of this file for more information. 95;; Read the rest of this file for more information.
@@ -293,7 +293,7 @@ Value is a list of strings, which may be nil."
293 (getenv "ESHELL") shell-file-name)) 293 (getenv "ESHELL") shell-file-name))
294 (name (file-name-nondirectory prog))) 294 (name (file-name-nondirectory prog)))
295 ;; Tell bash not to use readline, except for bash 1.x which 295 ;; Tell bash not to use readline, except for bash 1.x which
296 ;; doesn't grook --noediting. Bash 1.x has -nolineediting, but 296 ;; doesn't grok --noediting. Bash 1.x has -nolineediting, but
297 ;; process-send-eof cannot terminate bash if we use it. 297 ;; process-send-eof cannot terminate bash if we use it.
298 (if (and (not purify-flag) 298 (if (and (not purify-flag)
299 (equal name "bash") 299 (equal name "bash")
diff --git a/lisp/simple.el b/lisp/simple.el
index e70d37588a0..1dc866cf64d 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -4277,8 +4277,8 @@ into account variable-width characters and line continuation.
4277If nil, `line-move' moves point by logical lines. 4277If nil, `line-move' moves point by logical lines.
4278A non-nil setting of `goal-column' overrides the value of this variable 4278A non-nil setting of `goal-column' overrides the value of this variable
4279and forces movement by logical lines. 4279and forces movement by logical lines.
4280Disabling `auto-hscroll-mode' also overrides forces movement by logical 4280A window that is horizontally scrolled also forces movement by logical
4281lines when the window is horizontally scrolled." 4281lines."
4282 :type 'boolean 4282 :type 'boolean
4283 :group 'editing-basics 4283 :group 'editing-basics
4284 :version "23.1") 4284 :version "23.1")
@@ -4358,12 +4358,10 @@ lines when the window is horizontally scrolled."
4358 (if (and line-move-visual 4358 (if (and line-move-visual
4359 ;; Display-based column are incompatible with goal-column. 4359 ;; Display-based column are incompatible with goal-column.
4360 (not goal-column) 4360 (not goal-column)
4361 ;; When auto-hscroll-mode is turned off and the text in 4361 ;; When the text in the window is scrolled to the left,
4362 ;; the window is scrolled to the left, display-based 4362 ;; display-based motion doesn't make sense (because each
4363 ;; motion doesn't make sense (because each logical line 4363 ;; logical line occupies exactly one screen line).
4364 ;; occupies exactly one screen line). 4364 (not (> (window-hscroll) 0)))
4365 (not (and (null auto-hscroll-mode)
4366 (> (window-hscroll) 0))))
4367 (line-move-visual arg noerror) 4365 (line-move-visual arg noerror)
4368 (line-move-1 arg noerror to-end)))) 4366 (line-move-1 arg noerror to-end))))
4369 4367
diff --git a/lisp/speedbar.el b/lisp/speedbar.el
index 23a91888c1b..30642e8f2f7 100644
--- a/lisp/speedbar.el
+++ b/lisp/speedbar.el
@@ -35,7 +35,7 @@ this version is not backward compatible to 0.14 or earlier.")
35;; 35;;
36;;; Customizing and Developing for speedbar 36;;; Customizing and Developing for speedbar
37;; 37;;
38;; Please see the speedbar manual for informaion. 38;; Please see the speedbar manual for information.
39;; 39;;
40;;; Notes: 40;;; Notes:
41;; 41;;
@@ -471,7 +471,7 @@ Possible values are:
471 'trim - trim large directories to only show the last few. 471 'trim - trim large directories to only show the last few.
472 nil - no trimming." 472 nil - no trimming."
473 :group 'speedbar 473 :group 'speedbar
474 :type '(radio (const :tag "Span large directories over mutiple lines." 474 :type '(radio (const :tag "Span large directories over multiple lines."
475 span) 475 span)
476 (const :tag "Trim large directories to only show the last few." 476 (const :tag "Trim large directories to only show the last few."
477 trim) 477 trim)
@@ -1004,7 +1004,7 @@ supported at a time.
1004 #'speedbar-frame-mode 1004 #'speedbar-frame-mode
1005 (if (featurep 'xemacs) 1005 (if (featurep 'xemacs)
1006 (append speedbar-frame-plist 1006 (append speedbar-frame-plist
1007 ;; This is a hack to get speedbar to iconfiy 1007 ;; This is a hack to get speedbar to iconify
1008 ;; with the selected frame. 1008 ;; with the selected frame.
1009 (list 'parent (selected-frame))) 1009 (list 'parent (selected-frame)))
1010 speedbar-frame-parameters) 1010 speedbar-frame-parameters)
diff --git a/lisp/startup.el b/lisp/startup.el
index 877ba1987f6..06911e00d0d 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -943,7 +943,7 @@ opening the first frame (e.g. open a connection to an X server).")
943 (normal-erase-is-backspace-setup-frame) 943 (normal-erase-is-backspace-setup-frame)
944 944
945 ;; Register default TTY colors for the case the terminal hasn't a 945 ;; Register default TTY colors for the case the terminal hasn't a
946 ;; terminal init file. We do this regardles of whether the terminal 946 ;; terminal init file. We do this regardless of whether the terminal
947 ;; supports colors or not and regardless the current display type, 947 ;; supports colors or not and regardless the current display type,
948 ;; since users can connect to color-capable terminals and also 948 ;; since users can connect to color-capable terminals and also
949 ;; switch color support on or off in mid-session by setting the 949 ;; switch color support on or off in mid-session by setting the
diff --git a/lisp/subr.el b/lisp/subr.el
index 1cd6598eeb5..6d652f55b29 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1,4 +1,4 @@
1;;; subr.el --- basic lisp subroutines for Emacs 1;;; subr.el --- basic lisp subroutines for Emacs -*- coding: utf-8 -*-
2 2
3;; Copyright (C) 1985-1986, 1992, 1994-1995, 1999-2011 3;; Copyright (C) 1985-1986, 1992, 1994-1995, 1999-2011
4;; Free Software Foundation, Inc. 4;; Free Software Foundation, Inc.
diff --git a/lisp/term.el b/lisp/term.el
index e1638aecc76..dc5ae29ffd2 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -2122,7 +2122,7 @@ If this takes us past the end of the current line, don't skip at all."
2122 "Is point after the process output marker?" 2122 "Is point after the process output marker?"
2123 ;; Since output could come into the buffer after we looked at the point 2123 ;; Since output could come into the buffer after we looked at the point
2124 ;; but before we looked at the process marker's value, we explicitly 2124 ;; but before we looked at the process marker's value, we explicitly
2125 ;; serialise. This is just because I don't know whether or not Emacs 2125 ;; serialize. This is just because I don't know whether or not Emacs
2126 ;; services input during execution of lisp commands. 2126 ;; services input during execution of lisp commands.
2127 (let ((proc-pos (marker-position 2127 (let ((proc-pos (marker-position
2128 (process-mark (get-buffer-process (current-buffer)))))) 2128 (process-mark (get-buffer-process (current-buffer))))))
@@ -3890,7 +3890,7 @@ if KIND is 1, erase from home to point; else erase from home to point-max."
3890 (goto-char (point-max)) 3890 (goto-char (point-max))
3891 (recenter -1)) 3891 (recenter -1))
3892 3892
3893;;; Do the user's customisation... 3893;;; Do the user's customization...
3894 3894
3895(defvar term-load-hook nil 3895(defvar term-load-hook nil
3896 "This hook is run when term is loaded in. 3896 "This hook is run when term is loaded in.
diff --git a/lisp/term/iris-ansi.el b/lisp/term/iris-ansi.el
index 490c06148a9..3e06810cce6 100644
--- a/lisp/term/iris-ansi.el
+++ b/lisp/term/iris-ansi.el
@@ -136,8 +136,8 @@
136 136
137 (define-key map "\e[Z" [?\S-\t]) 137 (define-key map "\e[Z" [?\S-\t])
138 (define-key map "\e[072q" [?\C-\t]) 138 (define-key map "\e[072q" [?\C-\t])
139 ;; This only works if you remove the M-TAB keybing from the system.4Dwmrc 139 ;; This only works if you remove the M-TAB keybinding from the system.4Dwmrc
140 ;; our your ~/.4Dwmrc, if you use the 4Dwm window manager. 140 ;; or your ~/.4Dwmrc, if you use the 4Dwm window manager.
141 (define-key map "\e[073q" [?\M-\t]) 141 (define-key map "\e[073q" [?\M-\t])
142 142
143 (define-key map "\e[074q" [?\M-q]) 143 (define-key map "\e[074q" [?\M-q])
diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el
index db826f1db8a..10c1c19e0c4 100644
--- a/lisp/term/ns-win.el
+++ b/lisp/term/ns-win.el
@@ -662,7 +662,7 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.")
662(defvar ns-reg-to-script) ; nsfont.m 662(defvar ns-reg-to-script) ; nsfont.m
663 663
664;; This maps font registries (not exposed by NS APIs for font selection) to 664;; This maps font registries (not exposed by NS APIs for font selection) to
665;; unicode scripts (which can be mapped to unicode character ranges which are). 665;; Unicode scripts (which can be mapped to Unicode character ranges which are).
666;; See ../international/fontset.el 666;; See ../international/fontset.el
667(setq ns-reg-to-script 667(setq ns-reg-to-script
668 '(("iso8859-1" . latin) 668 '(("iso8859-1" . latin)
diff --git a/lisp/term/rxvt.el b/lisp/term/rxvt.el
index 5b21913c32e..c784892ce6b 100644
--- a/lisp/term/rxvt.el
+++ b/lisp/term/rxvt.el
@@ -114,11 +114,11 @@
114 114
115(defvar rxvt-alternatives-map 115(defvar rxvt-alternatives-map
116 (let ((map (make-sparse-keymap))) 116 (let ((map (make-sparse-keymap)))
117 ;; The terminal intialization C code file might have initialized 117 ;; The terminal initialization C code file might have initialized
118 ;; function keys F11->F42 from the termcap/terminfo information. On 118 ;; function keys F11->F42 from the termcap/terminfo information. On
119 ;; a PC-style keyboard these keys correspond to 119 ;; a PC-style keyboard these keys correspond to
120 ;; MODIFIER-FUNCTION_KEY, where modifier is S-, C-, C-S-. The 120 ;; MODIFIER-FUNCTION_KEY, where modifier is S-, C-, C-S-. The
121 ;; code here subsitutes the corresponding definitions in 121 ;; code here substitutes the corresponding definitions in
122 ;; function-key-map. This substitution is needed because if a key 122 ;; function-key-map. This substitution is needed because if a key
123 ;; definition if found in function-key-map, there are no further 123 ;; definition if found in function-key-map, there are no further
124 ;; lookups in other keymaps. 124 ;; lookups in other keymaps.
diff --git a/lisp/term/tty-colors.el b/lisp/term/tty-colors.el
index 9a900916830..d62db664d21 100644
--- a/lisp/term/tty-colors.el
+++ b/lisp/term/tty-colors.el
@@ -76,7 +76,7 @@
76;; defined for the MS-DOS and MS-Windows consoles, because the users 76;; defined for the MS-DOS and MS-Windows consoles, because the users
77;; on those systems expect these colors to be available. 77;; on those systems expect these colors to be available.
78;; 78;;
79;; For these reasons, package maintaners are advised NOT to use color 79;; For these reasons, package maintainers are advised NOT to use color
80;; names such as "lightred" or "lightblue", because they will have 80;; names such as "lightred" or "lightblue", because they will have
81;; different effect on different displays. Instead, use "red1" and 81;; different effect on different displays. Instead, use "red1" and
82;; "blue1", respectively. 82;; "blue1", respectively.
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el
index 47da0bf4de5..c2856660ea8 100644
--- a/lisp/term/xterm.el
+++ b/lisp/term/xterm.el
@@ -460,7 +460,7 @@ features. Set to nil to skip the checks."
460 "Terminal initialization function for xterm." 460 "Terminal initialization function for xterm."
461 ;; rxvt terminals sometimes set the TERM variable to "xterm", but 461 ;; rxvt terminals sometimes set the TERM variable to "xterm", but
462 ;; rxvt's keybindings are incompatible with xterm's. It is 462 ;; rxvt's keybindings are incompatible with xterm's. It is
463 ;; better in that case to use rxvt's initializion function. 463 ;; better in that case to use rxvt's initialization function.
464 (if (and (getenv "COLORTERM" (selected-frame)) 464 (if (and (getenv "COLORTERM" (selected-frame))
465 (string-match "\\`rxvt" (getenv "COLORTERM" (selected-frame)))) 465 (string-match "\\`rxvt" (getenv "COLORTERM" (selected-frame))))
466 (tty-run-terminal-initialization (selected-frame) "rxvt") 466 (tty-run-terminal-initialization (selected-frame) "rxvt")
diff --git a/lisp/terminal.el b/lisp/terminal.el
index 6fdaecf9c9c..99f652f7df4 100644
--- a/lisp/terminal.el
+++ b/lisp/terminal.el
@@ -1285,7 +1285,7 @@ in the directory specified by `te-terminfo-directory'."
1285 ;; Rename it to the desired name. 1285 ;; Rename it to the desired name.
1286 ;; We use this roundabout approach 1286 ;; We use this roundabout approach
1287 ;; to avoid any risk of writing a name that 1287 ;; to avoid any risk of writing a name that
1288 ;; was michievouslyt set up as a symlink. 1288 ;; was mischievously set up as a symlink.
1289 (rename-file temp-file file-name)) 1289 (rename-file temp-file file-name))
1290 ;; Now compile that source to make the binary that the 1290 ;; Now compile that source to make the binary that the
1291 ;; programs actually use. 1291 ;; programs actually use.
diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el
index d13437f4c7c..232d42efc94 100644
--- a/lisp/textmodes/artist.el
+++ b/lisp/textmodes/artist.el
@@ -1985,7 +1985,7 @@ Also updates the variables `artist-draw-min-y' and `artist-draw-max-y'."
1985 "Retrieve a replacement for character C from `artist-replacement-table'. 1985 "Retrieve a replacement for character C from `artist-replacement-table'.
1986The replacement is used to convert tabs and new-lines to spaces." 1986The replacement is used to convert tabs and new-lines to spaces."
1987 ;; Characters may be outside the range of the `artist-replacement-table', 1987 ;; Characters may be outside the range of the `artist-replacement-table',
1988 ;; for example if they are unicode code points >= 256. 1988 ;; for example if they are Unicode code points >= 256.
1989 ;; Check so we don't attempt to access the array out of its bounds, 1989 ;; Check so we don't attempt to access the array out of its bounds,
1990 ;; assuming no such character needs to be replaced. 1990 ;; assuming no such character needs to be replaced.
1991 (if (< c (length artist-replacement-table)) 1991 (if (< c (length artist-replacement-table))
@@ -2338,7 +2338,7 @@ Octant are numbered 1--8, anti-clockwise as:
2338 5 2338 5
2339 6)))) 2339 6))))
2340 2340
2341;; Some inline funtions for creating, setting and reading 2341;; Some inline functions for creating, setting and reading
2342;; members of a coordinate 2342;; members of a coordinate
2343;; 2343;;
2344 2344
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index 4459ac10098..c9b1c44eb91 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -3595,7 +3595,7 @@ If optional arg CONTENT is non-nil extract content of text fields."
3595(defun bibtex-autofill-entry () 3595(defun bibtex-autofill-entry ()
3596 "Try to fill fields of current BibTeX entry based on neighboring entries. 3596 "Try to fill fields of current BibTeX entry based on neighboring entries.
3597The current entry must have a key. Determine the neighboring entry 3597The current entry must have a key. Determine the neighboring entry
3598\(previouse or next\) whose key is more similar to the key of the current 3598\(previous or next\) whose key is more similar to the key of the current
3599entry. For all empty fields of the current entry insert the corresponding 3599entry. For all empty fields of the current entry insert the corresponding
3600field contents of the neighboring entry. Finally try to update the text 3600field contents of the neighboring entry. Finally try to update the text
3601based on the difference between the keys of the neighboring and the current 3601based on the difference between the keys of the neighboring and the current
diff --git a/lisp/textmodes/conf-mode.el b/lisp/textmodes/conf-mode.el
index 5cc5ba45e13..1127e6a5d20 100644
--- a/lisp/textmodes/conf-mode.el
+++ b/lisp/textmodes/conf-mode.el
@@ -155,7 +155,7 @@ not align (only setting space according to `conf-assignment-space')."
155 (modify-syntax-entry ?/ ". 124" table) 155 (modify-syntax-entry ?/ ". 124" table)
156 (modify-syntax-entry ?* ". 23b" table) 156 (modify-syntax-entry ?* ". 23b" table)
157 table) 157 table)
158 "Syntax table in use in Java prperties buffers.") 158 "Syntax table in use in Java properties buffers.")
159 159
160(defvar conf-ppd-mode-syntax-table 160(defvar conf-ppd-mode-syntax-table
161 (let ((table (make-syntax-table conf-mode-syntax-table))) 161 (let ((table (make-syntax-table conf-mode-syntax-table)))
diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el
index db536c100f3..d54debcec4c 100644
--- a/lisp/textmodes/flyspell.el
+++ b/lisp/textmodes/flyspell.el
@@ -715,7 +715,7 @@ not the very same deplacement command."
715 (remove-hook 'after-change-functions 'flyspell-after-change-function t) 715 (remove-hook 'after-change-functions 'flyspell-after-change-function t)
716 (remove-hook 'hack-local-variables-hook 716 (remove-hook 'hack-local-variables-hook
717 (function flyspell-hack-local-variables-hook) t) 717 (function flyspell-hack-local-variables-hook) t)
718 ;; we remove all the flyspell hilightings 718 ;; we remove all the flyspell highlightings
719 (flyspell-delete-all-overlays) 719 (flyspell-delete-all-overlays)
720 ;; we have to erase pre cache variables 720 ;; we have to erase pre cache variables
721 (setq flyspell-pre-buffer nil) 721 (setq flyspell-pre-buffer nil)
diff --git a/lisp/textmodes/reftex-cite.el b/lisp/textmodes/reftex-cite.el
index 78d80da41ac..e0fd940208a 100644
--- a/lisp/textmodes/reftex-cite.el
+++ b/lisp/textmodes/reftex-cite.el
@@ -69,14 +69,14 @@
69 (unless (eq (get 'reftex-default-bibliography :reftex-raw) 69 (unless (eq (get 'reftex-default-bibliography :reftex-raw)
70 reftex-default-bibliography) 70 reftex-default-bibliography)
71 (put 'reftex-default-bibliography :reftex-expanded 71 (put 'reftex-default-bibliography :reftex-expanded
72 (reftex-locate-bibliography-files 72 (reftex-locate-bibliography-files
73 default-directory reftex-default-bibliography)) 73 default-directory reftex-default-bibliography))
74 (put 'reftex-default-bibliography :reftex-raw 74 (put 'reftex-default-bibliography :reftex-raw
75 reftex-default-bibliography)) 75 reftex-default-bibliography))
76 (get 'reftex-default-bibliography :reftex-expanded)) 76 (get 'reftex-default-bibliography :reftex-expanded))
77 77
78(defun reftex-bib-or-thebib () 78(defun reftex-bib-or-thebib ()
79 ;; Tests if BibTeX or \begin{tehbibliography} should be used for the 79 ;; Tests if BibTeX or \begin{thebibliography} should be used for the
80 ;; citation 80 ;; citation
81 ;; Find the bof of the current file 81 ;; Find the bof of the current file
82 (let* ((docstruct (symbol-value reftex-docstruct-symbol)) 82 (let* ((docstruct (symbol-value reftex-docstruct-symbol))
@@ -128,7 +128,7 @@
128 ;; If RETURN is non-nil, just return the entry and restore point. 128 ;; If RETURN is non-nil, just return the entry and restore point.
129 129
130 (let* ((re 130 (let* ((re
131 (if item 131 (if item
132 (concat "\\\\bibitem\\(\\[[^]]*\\]\\)?{" (regexp-quote key) "}") 132 (concat "\\\\bibitem\\(\\[[^]]*\\]\\)?{" (regexp-quote key) "}")
133 (concat "@[a-zA-Z]+[ \t\n\r]*[{(][ \t\n\r]*" (regexp-quote key) 133 (concat "@[a-zA-Z]+[ \t\n\r]*[{(][ \t\n\r]*" (regexp-quote key)
134 "[, \t\r\n}]"))) 134 "[, \t\r\n}]")))
@@ -152,7 +152,7 @@
152 (when return 152 (when return
153 ;; Just return the relevant entry 153 ;; Just return the relevant entry
154 (if item (goto-char (match-end 0))) 154 (if item (goto-char (match-end 0)))
155 (setq return (buffer-substring 155 (setq return (buffer-substring
156 (point) (reftex-end-of-bib-entry item))) 156 (point) (reftex-end-of-bib-entry item)))
157 (goto-char oldpos) ;; restore point. 157 (goto-char oldpos) ;; restore point.
158 (set-buffer buffer-conf) 158 (set-buffer buffer-conf)
@@ -169,9 +169,9 @@
169 (error "No BibTeX entry with citation key %s" key))))) 169 (error "No BibTeX entry with citation key %s" key)))))
170 170
171(defun reftex-end-of-bib-entry (item) 171(defun reftex-end-of-bib-entry (item)
172 (save-excursion 172 (save-excursion
173 (condition-case nil 173 (condition-case nil
174 (if item 174 (if item
175 (progn (end-of-line) 175 (progn (end-of-line)
176 (re-search-forward 176 (re-search-forward
177 "\\\\bibitem\\|\\end{thebibliography}") 177 "\\\\bibitem\\|\\end{thebibliography}")
@@ -192,16 +192,16 @@
192 192
193 ;; Read a regexp, completing on known citation keys. 193 ;; Read a regexp, completing on known citation keys.
194 (setq default (regexp-quote (reftex-get-bibkey-default))) 194 (setq default (regexp-quote (reftex-get-bibkey-default)))
195 (setq re-list 195 (setq re-list
196 (split-string 196 (split-string
197 (completing-read 197 (completing-read
198 (concat 198 (concat
199 "Regex { && Regex...}: " 199 "Regex { && Regex...}: "
200 "[" default "]: ") 200 "[" default "]: ")
201 (if reftex-mode 201 (if reftex-mode
202 (if (fboundp 'LaTeX-bibitem-list) 202 (if (fboundp 'LaTeX-bibitem-list)
203 (LaTeX-bibitem-list) 203 (LaTeX-bibitem-list)
204 (cdr (assoc 'bibview-cache 204 (cdr (assoc 'bibview-cache
205 (symbol-value reftex-docstruct-symbol)))) 205 (symbol-value reftex-docstruct-symbol))))
206 nil) 206 nil)
207 nil nil nil 'reftex-cite-regexp-hist) 207 nil nil nil 'reftex-cite-regexp-hist)
@@ -248,7 +248,7 @@
248 (error (goto-char key-point) 248 (error (goto-char key-point)
249 (throw 'search-again nil))) 249 (throw 'search-again nil)))
250 (setq end-point (point)) 250 (setq end-point (point))
251 251
252 ;; Ignore @string, @comment and @c entries or things 252 ;; Ignore @string, @comment and @c entries or things
253 ;; outside entries 253 ;; outside entries
254 (when (or (string= (downcase (match-string 2)) "string") 254 (when (or (string= (downcase (match-string 2)) "string")
@@ -257,12 +257,12 @@
257 (< (point) key-point)) ; this means match not in {} 257 (< (point) key-point)) ; this means match not in {}
258 (goto-char key-point) 258 (goto-char key-point)
259 (throw 'search-again nil)) 259 (throw 'search-again nil))
260 260
261 ;; Well, we have got a match 261 ;; Well, we have got a match
262 ;;(setq entry (concat 262 ;;(setq entry (concat
263 ;; (buffer-substring start-point (point)) "\n")) 263 ;; (buffer-substring start-point (point)) "\n"))
264 (setq entry (buffer-substring start-point (point))) 264 (setq entry (buffer-substring start-point (point)))
265 265
266 ;; Check if other regexp match as well 266 ;; Check if other regexp match as well
267 (setq re-list rest-re) 267 (setq re-list rest-re)
268 (while re-list 268 (while re-list
@@ -270,24 +270,24 @@
270 ;; nope - move on 270 ;; nope - move on
271 (throw 'search-again nil)) 271 (throw 'search-again nil))
272 (pop re-list)) 272 (pop re-list))
273 273
274 (setq alist (reftex-parse-bibtex-entry 274 (setq alist (reftex-parse-bibtex-entry
275 nil start-point end-point)) 275 nil start-point end-point))
276 (push (cons "&entry" entry) alist) 276 (push (cons "&entry" entry) alist)
277 277
278 ;; check for crossref entries 278 ;; check for crossref entries
279 (if (assoc "crossref" alist) 279 (if (assoc "crossref" alist)
280 (setq alist 280 (setq alist
281 (append 281 (append
282 alist (reftex-get-crossref-alist alist)))) 282 alist (reftex-get-crossref-alist alist))))
283 283
284 ;; format the entry 284 ;; format the entry
285 (push (cons "&formatted" (reftex-format-bib-entry alist)) 285 (push (cons "&formatted" (reftex-format-bib-entry alist))
286 alist) 286 alist)
287 287
288 ;; make key the first element 288 ;; make key the first element
289 (push (reftex-get-bib-field "&key" alist) alist) 289 (push (reftex-get-bib-field "&key" alist) alist)
290 290
291 ;; add it to the list 291 ;; add it to the list
292 (push alist found-list))))) 292 (push alist found-list)))))
293 (reftex-kill-temporary-buffers)))) 293 (reftex-kill-temporary-buffers))))
@@ -350,7 +350,7 @@
350 (unless files 350 (unless files
351 (error "Need file name to find thebibliography environment")) 351 (error "Need file name to find thebibliography environment"))
352 (while (setq file (pop files)) 352 (while (setq file (pop files))
353 (setq buf (reftex-get-file-buffer-force 353 (setq buf (reftex-get-file-buffer-force
354 file (not reftex-keep-temporary-buffers))) 354 file (not reftex-keep-temporary-buffers)))
355 (unless buf 355 (unless buf
356 (error "No such file %s" file)) 356 (error "No such file %s" file))
@@ -386,16 +386,16 @@
386 386
387 ;; Read a regexp, completing on known citation keys. 387 ;; Read a regexp, completing on known citation keys.
388 (setq default (regexp-quote (reftex-get-bibkey-default))) 388 (setq default (regexp-quote (reftex-get-bibkey-default)))
389 (setq re-list 389 (setq re-list
390 (split-string 390 (split-string
391 (completing-read 391 (completing-read
392 (concat 392 (concat
393 "Regex { && Regex...}: " 393 "Regex { && Regex...}: "
394 "[" default "]: ") 394 "[" default "]: ")
395 (if reftex-mode 395 (if reftex-mode
396 (if (fboundp 'LaTeX-bibitem-list) 396 (if (fboundp 'LaTeX-bibitem-list)
397 (LaTeX-bibitem-list) 397 (LaTeX-bibitem-list)
398 (cdr (assoc 'bibview-cache 398 (cdr (assoc 'bibview-cache
399 (symbol-value reftex-docstruct-symbol)))) 399 (symbol-value reftex-docstruct-symbol))))
400 nil) 400 nil)
401 nil nil nil 'reftex-cite-regexp-hist) 401 nil nil nil 'reftex-cite-regexp-hist)
@@ -408,14 +408,14 @@
408 (error "Empty regular expression")) 408 (error "Empty regular expression"))
409 409
410 (while (and (setq re (pop re-list)) entries) 410 (while (and (setq re (pop re-list)) entries)
411 (setq entries 411 (setq entries
412 (delq nil (mapcar 412 (delq nil (mapcar
413 (lambda (x) 413 (lambda (x)
414 (if (string-match re (cdr (assoc "&entry" x))) 414 (if (string-match re (cdr (assoc "&entry" x)))
415 x nil)) 415 x nil))
416 entries)))) 416 entries))))
417 (setq entries 417 (setq entries
418 (mapcar 418 (mapcar
419 (lambda (x) 419 (lambda (x)
420 (push (cons "&formatted" (reftex-format-bibitem x)) x) 420 (push (cons "&formatted" (reftex-format-bibitem x)) x)
421 (push (reftex-get-bib-field "&key" x) x) 421 (push (reftex-get-bib-field "&key" x) x)
@@ -655,12 +655,12 @@ While entering the regexp, completion on knows citation keys is possible.
655 655
656 (when (eq (car selected-entries) 'concat) 656 (when (eq (car selected-entries) 'concat)
657 ;; All keys go into a single command - we need to trick a little 657 ;; All keys go into a single command - we need to trick a little
658 ;; FIXME: Unfortunately, this meens that commenting does not work right. 658 ;; FIXME: Unfortunately, this means that commenting does not work right.
659 (pop selected-entries) 659 (pop selected-entries)
660 (let ((concat-keys (mapconcat 'car selected-entries ","))) 660 (let ((concat-keys (mapconcat 'car selected-entries ",")))
661 (setq insert-entries 661 (setq insert-entries
662 (list (list concat-keys (cons "&key" concat-keys)))))) 662 (list (list concat-keys (cons "&key" concat-keys))))))
663 663
664 (unless no-insert 664 (unless no-insert
665 665
666 ;; We shall insert this into the buffer... 666 ;; We shall insert this into the buffer...
diff --git a/lisp/textmodes/reftex-dcr.el b/lisp/textmodes/reftex-dcr.el
index 7de15c66cec..ff6ffffc382 100644
--- a/lisp/textmodes/reftex-dcr.el
+++ b/lisp/textmodes/reftex-dcr.el
@@ -361,7 +361,7 @@ will display info in the echo area."
361 "View location in a LaTeX document which cites the BibTeX entry at point. 361 "View location in a LaTeX document which cites the BibTeX entry at point.
362Since BibTeX files can be used by many LaTeX documents, this function 362Since BibTeX files can be used by many LaTeX documents, this function
363prompts upon first use for a buffer in RefTeX mode. To reset this 363prompts upon first use for a buffer in RefTeX mode. To reset this
364link to a document, call the function with with a prefix arg. 364link to a document, call the function with a prefix arg.
365Calling this function several times find successive citation locations." 365Calling this function several times find successive citation locations."
366 (interactive "P") 366 (interactive "P")
367 (when arg 367 (when arg
diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el
index fa958632799..f9e3283b783 100644
--- a/lisp/textmodes/sgml-mode.el
+++ b/lisp/textmodes/sgml-mode.el
@@ -847,7 +847,7 @@ and disable it otherwise. If called from Lisp, enable the mode
847if ARG is omitted or nil. 847if ARG is omitted or nil.
848 848
849SGML Electric Tag Pair mode is a buffer-local minor mode for use 849SGML Electric Tag Pair mode is a buffer-local minor mode for use
850with `sgml-mode' and related maor modes. When enabled, editing 850with `sgml-mode' and related major modes. When enabled, editing
851an opening markup tag automatically updates the closing tag." 851an opening markup tag automatically updates the closing tag."
852 :lighter "/e" 852 :lighter "/e"
853 (if sgml-electric-tag-pair-mode 853 (if sgml-electric-tag-pair-mode
diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el
index 08922445521..08a45b6b302 100644
--- a/lisp/textmodes/table.el
+++ b/lisp/textmodes/table.el
@@ -5535,7 +5535,7 @@ When COORDINATE is omitted or nil the point in current buffer is assumed in plac
5535 table-cell-info-lu-coordinate)) 5535 table-cell-info-lu-coordinate))
5536 5536
5537(defun table--offset-coordinate (coordinate offset &optional negative) 5537(defun table--offset-coordinate (coordinate offset &optional negative)
5538 "Return the offseted COORDINATE by OFFSET. 5538 "Return the offset COORDINATE by OFFSET.
5539When optional NEGATIVE is non-nil offsetting direction is negative." 5539When optional NEGATIVE is non-nil offsetting direction is negative."
5540 (cons (if negative (- (car coordinate) (car offset)) 5540 (cons (if negative (- (car coordinate) (car offset))
5541 (+ (car coordinate) (car offset))) 5541 (+ (car coordinate) (car offset)))
diff --git a/lisp/thumbs.el b/lisp/thumbs.el
index 6ac8eddc9d6..6ffd256d0a0 100644
--- a/lisp/thumbs.el
+++ b/lisp/thumbs.el
@@ -92,7 +92,7 @@ When it reaches that size (in bytes), a warning is sent."
92 :group 'thumbs) 92 :group 'thumbs)
93 93
94;; Unfortunately Windows XP has a program called CONVERT.EXE in 94;; Unfortunately Windows XP has a program called CONVERT.EXE in
95;; C:/WINDOWS/SYSTEM32/ for partioning NTFS system. So Emacs 95;; C:/WINDOWS/SYSTEM32/ for partitioning NTFS systems. So Emacs
96;; can find the one in your ImageMagick directory, you need to 96;; can find the one in your ImageMagick directory, you need to
97;; customize this value to the absolute filename. 97;; customize this value to the absolute filename.
98(defcustom thumbs-conversion-program 98(defcustom thumbs-conversion-program
@@ -235,7 +235,7 @@ reached."
235 (setq dirsize (- dirsize (car (cdar files-list)))) 235 (setq dirsize (- dirsize (car (cdar files-list))))
236 (setq files-list (cdr files-list))))) 236 (setq files-list (cdr files-list)))))
237 237
238;; Check the thumbsnail directory size and clean it if necessary. 238;; Check the thumbnail directory size and clean it if necessary.
239(when thumbs-thumbsdir-auto-clean 239(when thumbs-thumbsdir-auto-clean
240 (thumbs-cleanup-thumbsdir)) 240 (thumbs-cleanup-thumbsdir))
241 241
diff --git a/lisp/url/url-dav.el b/lisp/url/url-dav.el
index 9e29de0cbed..0e3713c9fcc 100644
--- a/lisp/url/url-dav.el
+++ b/lisp/url/url-dav.el
@@ -417,7 +417,7 @@ XML document."
417Automatically creates an XML request body if TAG is non-nil. 417Automatically creates an XML request body if TAG is non-nil.
418BODY is the XML document fragment to be enclosed by <TAG></TAG>. 418BODY is the XML document fragment to be enclosed by <TAG></TAG>.
419 419
420DEPTH is how deep the request should propogate. Default is 0, meaning 420DEPTH is how deep the request should propagate. Default is 0, meaning
421it should apply only to URL. A negative number means to use 421it should apply only to URL. A negative number means to use
422`Infinity' for the depth. Not all WebDAV servers support this depth 422`Infinity' for the depth. Not all WebDAV servers support this depth
423though. 423though.
diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index bb7744be434..a9ff042d681 100644
--- a/lisp/url/url-http.el
+++ b/lisp/url/url-http.el
@@ -721,7 +721,7 @@ should be shown to the user."
721 ;; The request could not be completed due to a conflict with 721 ;; The request could not be completed due to a conflict with
722 ;; the current state of the resource. This code is only 722 ;; the current state of the resource. This code is only
723 ;; allowed in situations where it is expected that the user 723 ;; allowed in situations where it is expected that the user
724 ;; mioght be able to resolve the conflict and resubmit the 724 ;; might be able to resolve the conflict and resubmit the
725 ;; request. The response body SHOULD include enough 725 ;; request. The response body SHOULD include enough
726 ;; information for the user to recognize the source of the 726 ;; information for the user to recognize the source of the
727 ;; conflict. 727 ;; conflict.
diff --git a/lisp/vc/ediff-diff.el b/lisp/vc/ediff-diff.el
index 20c83429ced..85ec49885bd 100644
--- a/lisp/vc/ediff-diff.el
+++ b/lisp/vc/ediff-diff.el
@@ -1292,7 +1292,7 @@ delimiter regions"))
1292Used for splitting difference regions into individual words.") 1292Used for splitting difference regions into individual words.")
1293(make-variable-buffer-local 'ediff-forward-word-function) 1293(make-variable-buffer-local 'ediff-forward-word-function)
1294 1294
1295;; \240 is unicode symbol for nonbreakable whitespace 1295;; \240 is Unicode symbol for nonbreakable whitespace
1296(defvar ediff-whitespace " \n\t\f\r\240" 1296(defvar ediff-whitespace " \n\t\f\r\240"
1297 "*Characters constituting white space. 1297 "*Characters constituting white space.
1298These characters are ignored when differing regions are split into words.") 1298These characters are ignored when differing regions are split into words.")
diff --git a/lisp/vc/ediff-mult.el b/lisp/vc/ediff-mult.el
index cadcdec29b4..ce7818d5ef4 100644
--- a/lisp/vc/ediff-mult.el
+++ b/lisp/vc/ediff-mult.el
@@ -2164,7 +2164,7 @@ all marked sessions must be active."
2164;; If meta-buf doesn't exist, it is created. In that case, id doesn't have a 2164;; If meta-buf doesn't exist, it is created. In that case, id doesn't have a
2165;; parent meta-buf 2165;; parent meta-buf
2166;; Check if META-BUF exists before calling this function 2166;; Check if META-BUF exists before calling this function
2167;; Optional MUST-REDRAW, if non-nil, would force redrawal of the whole meta 2167;; Optional MUST-REDRAW, if non-nil, would force redrawing of the whole meta
2168;; buffer. Otherwise, it will just go over the buffer and update activity marks 2168;; buffer. Otherwise, it will just go over the buffer and update activity marks
2169;; and session status. 2169;; and session status.
2170;; SESSION-NUMBER, if specified, says which session caused the update. 2170;; SESSION-NUMBER, if specified, says which session caused the update.
diff --git a/lisp/vc/ediff-util.el b/lisp/vc/ediff-util.el
index df6a7e938af..5d7d2451422 100644
--- a/lisp/vc/ediff-util.el
+++ b/lisp/vc/ediff-util.el
@@ -452,7 +452,7 @@ to invocation.")
452 (if ediff-3way-job 452 (if ediff-3way-job
453 (ediff-with-current-buffer ediff-buffer-C 453 (ediff-with-current-buffer ediff-buffer-C
454 (ediff-nuke-selective-display) 454 (ediff-nuke-selective-display)
455 ;; the merge bufer should never be narrowed 455 ;; the merge buffer should never be narrowed
456 ;; (it can happen if it is on rmail-mode or similar) 456 ;; (it can happen if it is on rmail-mode or similar)
457 (if (ediff-with-current-buffer control-buffer ediff-merge-job) 457 (if (ediff-with-current-buffer control-buffer ediff-merge-job)
458 (widen)) 458 (widen))
diff --git a/lisp/vc/pcvs-parse.el b/lisp/vc/pcvs-parse.el
index c514026b1f1..43292ed14e4 100644
--- a/lisp/vc/pcvs-parse.el
+++ b/lisp/vc/pcvs-parse.el
@@ -430,7 +430,7 @@ The remaining KEYS are passed directly to `cvs-create-fileinfo'."
430 ;; Conflict 430 ;; Conflict
431 (and 431 (and
432 (cvs-match (concat "C \\(.*" qfile "\\)$") (path 1) (type 'CONFLICT)) 432 (cvs-match (concat "C \\(.*" qfile "\\)$") (path 1) (type 'CONFLICT))
433 ;; C might be followed by a "suprious" U for non-mergeable files 433 ;; C might be followed by a "spurious" U for non-mergable files
434 (cvs-or (cvs-match (concat "U \\(.*" qfile "\\)$")) t)) 434 (cvs-or (cvs-match (concat "U \\(.*" qfile "\\)$")) t))
435 ;; Successful merge 435 ;; Successful merge
436 (cvs-match (concat "M \\(.*" qfile "\\)$") (path 1)) 436 (cvs-match (concat "M \\(.*" qfile "\\)$") (path 1))
diff --git a/lisp/vc/pcvs-util.el b/lisp/vc/pcvs-util.el
index 4915cb9bf7f..ea739ea726a 100644
--- a/lisp/vc/pcvs-util.el
+++ b/lisp/vc/pcvs-util.el
@@ -89,7 +89,7 @@ try to split a new window instead."
89 (or (let ((buf (get-buffer-window buf))) (and buf (select-window buf))) 89 (or (let ((buf (get-buffer-window buf))) (and buf (select-window buf)))
90 (and pop-up-windows 90 (and pop-up-windows
91 (ignore-errors (select-window (split-window-below))) 91 (ignore-errors (select-window (split-window-below)))
92 (switch-to-buffer buf)) 92 (switch-to-buffer buf nil 'force-same-window))
93 (pop-to-buffer (current-buffer))))) 93 (pop-to-buffer (current-buffer)))))
94 94
95(defun cvs-bury-buffer (buf &optional mainbuf) 95(defun cvs-bury-buffer (buf &optional mainbuf)
diff --git a/lisp/vc/vc-arch.el b/lisp/vc/vc-arch.el
index eeac55ac0f8..a20a49a4c39 100644
--- a/lisp/vc/vc-arch.el
+++ b/lisp/vc/vc-arch.el
@@ -398,7 +398,7 @@ CALLBACK expects (ENTRIES &optional MORE-TO-COME); see
398 (with-temp-buffer 398 (with-temp-buffer
399 (insert-file-contents rej) 399 (insert-file-contents rej)
400 (goto-char (point-min)) 400 (goto-char (point-min))
401 (looking-at "Conflicts occured, diff3 conflict markers left in file\\."))))) 401 (looking-at "Conflicts occurred, diff3 conflict markers left in file\\.")))))
402 402
403(defun vc-arch-delete-rej-if-obsolete () 403(defun vc-arch-delete-rej-if-obsolete ()
404 "For use in `after-save-hook'." 404 "For use in `after-save-hook'."
diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el
index 82eb8783a74..d4b631a1d1b 100644
--- a/lisp/vc/vc-dir.el
+++ b/lisp/vc/vc-dir.el
@@ -1021,7 +1021,7 @@ specific headers."
1021 (lambda (info) 1021 (lambda (info)
1022 ;; The state for directory entries might 1022 ;; The state for directory entries might
1023 ;; have been changed to 'up-to-date, 1023 ;; have been changed to 'up-to-date,
1024 ;; reset it, othewise it will be removed when doing 'x' 1024 ;; reset it, otherwise it will be removed when doing 'x'
1025 ;; next time. 1025 ;; next time.
1026 ;; FIXME: There should be a more elegant way to do this. 1026 ;; FIXME: There should be a more elegant way to do this.
1027 (when (and (vc-dir-fileinfo->directory info) 1027 (when (and (vc-dir-fileinfo->directory info)
diff --git a/lisp/vc/vc-dispatcher.el b/lisp/vc/vc-dispatcher.el
index 84c7f4a510b..7fe727bd179 100644
--- a/lisp/vc/vc-dispatcher.el
+++ b/lisp/vc/vc-dispatcher.el
@@ -103,7 +103,7 @@
103;; 103;;
104;; When the client mode adds a local vc-mode-line-hook to a buffer, it 104;; When the client mode adds a local vc-mode-line-hook to a buffer, it
105;; will be called with the buffer file name as argument whenever the 105;; will be called with the buffer file name as argument whenever the
106;; dispatcher resynchs the buffer. 106;; dispatcher resyncs the buffer.
107 107
108;; To do: 108;; To do:
109;; 109;;
diff --git a/lisp/vc/vc-mtn.el b/lisp/vc/vc-mtn.el
index 0b263e9c669..0fc7ba96fb7 100644
--- a/lisp/vc/vc-mtn.el
+++ b/lisp/vc/vc-mtn.el
@@ -299,7 +299,7 @@ If nil, use the value of `vc-diff-switches'. If t, use no switches."
299 ids))) 299 ids)))
300 300
301(defun vc-mtn-revision-completion-table (files) 301(defun vc-mtn-revision-completion-table (files)
302 ;; TODO: Implement completion for for selectors 302 ;; TODO: Implement completion for selectors
303 ;; TODO: Implement completion for composite selectors. 303 ;; TODO: Implement completion for composite selectors.
304 (lexical-let ((files files)) 304 (lexical-let ((files files))
305 ;; What about using `files'?!? --Stef 305 ;; What about using `files'?!? --Stef
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 909585138fc..ed2bac17217 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -2690,7 +2690,7 @@ log entries should be gathered."
2690 (substring rev 0 index)))) 2690 (substring rev 0 index))))
2691 2691
2692(defun vc-default-responsible-p (backend file) 2692(defun vc-default-responsible-p (backend file)
2693 "Indicate whether BACKEND is reponsible for FILE. 2693 "Indicate whether BACKEND is responsible for FILE.
2694The default is to return nil always." 2694The default is to return nil always."
2695 nil) 2695 nil)
2696 2696
diff --git a/lisp/w32-fns.el b/lisp/w32-fns.el
index cb21d4b08c0..20361d32450 100644
--- a/lisp/w32-fns.el
+++ b/lisp/w32-fns.el
@@ -381,7 +381,7 @@ bit output with no translation."
381(w32-add-charset-info "mac-roman" 'w32-charset-mac 10000) 381(w32-add-charset-info "mac-roman" 'w32-charset-mac 10000)
382(w32-add-charset-info "iso10646-1" 'w32-charset-default t) 382(w32-add-charset-info "iso10646-1" 'w32-charset-default t)
383 383
384;; ;; If unicode windows charset is not defined, use ansi fonts. 384;; ;; If Unicode Windows charset is not defined, use ansi fonts.
385;; (w32-add-charset-info "iso10646-1" 'w32-charset-ansi t)) 385;; (w32-add-charset-info "iso10646-1" 'w32-charset-ansi t))
386 386
387;; Prefered names 387;; Prefered names
diff --git a/lisp/window.el b/lisp/window.el
index 10c6adc04e4..2885c3a5c70 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -246,51 +246,51 @@ windows horizontally arranged within WINDOW."
246 (setq child (window-right child))) 246 (setq child (window-right child)))
247 count)))) 247 count))))
248 248
249(defun walk-window-tree-1 (proc walk-window-tree-window any &optional sub-only) 249(defun walk-window-tree-1 (fun walk-window-tree-window any &optional sub-only)
250 "Helper function for `walk-window-tree' and `walk-window-subtree'." 250 "Helper function for `walk-window-tree' and `walk-window-subtree'."
251 (let (walk-window-tree-buffer) 251 (let (walk-window-tree-buffer)
252 (while walk-window-tree-window 252 (while walk-window-tree-window
253 (setq walk-window-tree-buffer 253 (setq walk-window-tree-buffer
254 (window-buffer walk-window-tree-window)) 254 (window-buffer walk-window-tree-window))
255 (when (or walk-window-tree-buffer any) 255 (when (or walk-window-tree-buffer any)
256 (funcall proc walk-window-tree-window)) 256 (funcall fun walk-window-tree-window))
257 (unless walk-window-tree-buffer 257 (unless walk-window-tree-buffer
258 (walk-window-tree-1 258 (walk-window-tree-1
259 proc (window-left-child walk-window-tree-window) any) 259 fun (window-left-child walk-window-tree-window) any)
260 (walk-window-tree-1 260 (walk-window-tree-1
261 proc (window-top-child walk-window-tree-window) any)) 261 fun (window-top-child walk-window-tree-window) any))
262 (if sub-only 262 (if sub-only
263 (setq walk-window-tree-window nil) 263 (setq walk-window-tree-window nil)
264 (setq walk-window-tree-window 264 (setq walk-window-tree-window
265 (window-right walk-window-tree-window)))))) 265 (window-right walk-window-tree-window))))))
266 266
267(defun walk-window-tree (proc &optional frame any) 267(defun walk-window-tree (fun &optional frame any)
268 "Run function PROC on each live window of FRAME. 268 "Run function FUN on each live window of FRAME.
269PROC must be a function with one argument - a window. FRAME must 269FUN must be a function with one argument - a window. FRAME must
270be a live frame and defaults to the selected one. ANY, if 270be a live frame and defaults to the selected one. ANY, if
271non-nil means to run PROC on all live and internal windows of 271non-nil means to run FUN on all live and internal windows of
272FRAME. 272FRAME.
273 273
274This function performs a pre-order, depth-first traversal of the 274This function performs a pre-order, depth-first traversal of the
275window tree. If PROC changes the window tree, the result is 275window tree. If FUN changes the window tree, the result is
276unpredictable." 276unpredictable."
277 (let ((walk-window-tree-frame (window-normalize-frame frame))) 277 (let ((walk-window-tree-frame (window-normalize-frame frame)))
278 (walk-window-tree-1 278 (walk-window-tree-1
279 proc (frame-root-window walk-window-tree-frame) any))) 279 fun (frame-root-window walk-window-tree-frame) any)))
280 280
281(defun walk-window-subtree (proc &optional window any) 281(defun walk-window-subtree (fun &optional window any)
282 "Run function PROC on the subtree of windows rooted at WINDOW. 282 "Run function FUN on the subtree of windows rooted at WINDOW.
283WINDOW defaults to the selected window. PROC must be a function 283WINDOW defaults to the selected window. FUN must be a function
284with one argument - a window. By default, run PROC only on live 284with one argument - a window. By default, run FUN only on live
285windows of the subtree. If the optional argument ANY is non-nil, 285windows of the subtree. If the optional argument ANY is non-nil,
286run PROC on all live and internal windows of the subtree. If 286run FUN on all live and internal windows of the subtree. If
287WINDOW is live, run PROC on WINDOW only. 287WINDOW is live, run FUN on WINDOW only.
288 288
289This function performs a pre-order, depth-first traversal of the 289This function performs a pre-order, depth-first traversal of the
290subtree rooted at WINDOW. If PROC changes that tree, the result 290subtree rooted at WINDOW. If FUN changes that tree, the result
291is unpredictable." 291is unpredictable."
292 (setq window (window-normalize-window window)) 292 (setq window (window-normalize-window window))
293 (walk-window-tree-1 proc window any t)) 293 (walk-window-tree-1 fun window any t))
294 294
295(defun window-with-parameter (parameter &optional value frame any) 295(defun window-with-parameter (parameter &optional value frame any)
296 "Return first window on FRAME with PARAMETER non-nil. 296 "Return first window on FRAME with PARAMETER non-nil.
@@ -524,10 +524,10 @@ imposed by fixed size windows, `window-min-height' or
524windows may get as small as `window-safe-min-height' lines and 524windows may get as small as `window-safe-min-height' lines and
525`window-safe-min-width' columns. IGNORE a window means ignore 525`window-safe-min-width' columns. IGNORE a window means ignore
526restrictions for that window only." 526restrictions for that window only."
527 (window-min-size-1 527 (window--min-size-1
528 (window-normalize-window window) horizontal ignore)) 528 (window-normalize-window window) horizontal ignore))
529 529
530(defun window-min-size-1 (window horizontal ignore) 530(defun window--min-size-1 (window horizontal ignore)
531 "Internal function of `window-min-size'." 531 "Internal function of `window-min-size'."
532 (let ((sub (window-child window))) 532 (let ((sub (window-child window)))
533 (if sub 533 (if sub
@@ -538,13 +538,13 @@ restrictions for that window only."
538 ;; the minimum sizes of its child windows. 538 ;; the minimum sizes of its child windows.
539 (while sub 539 (while sub
540 (setq value (+ value 540 (setq value (+ value
541 (window-min-size-1 sub horizontal ignore))) 541 (window--min-size-1 sub horizontal ignore)))
542 (setq sub (window-right sub))) 542 (setq sub (window-right sub)))
543 ;; The minimum size of an ortho-combination is the maximum of 543 ;; The minimum size of an ortho-combination is the maximum of
544 ;; the minimum sizes of its child windows. 544 ;; the minimum sizes of its child windows.
545 (while sub 545 (while sub
546 (setq value (max value 546 (setq value (max value
547 (window-min-size-1 sub horizontal ignore))) 547 (window--min-size-1 sub horizontal ignore)))
548 (setq sub (window-right sub)))) 548 (setq sub (window-right sub))))
549 value) 549 value)
550 (with-current-buffer (window-buffer window) 550 (with-current-buffer (window-buffer window)
@@ -687,7 +687,7 @@ WINDOW can be resized in the desired direction. The function
687 (window--size-fixed-1 687 (window--size-fixed-1
688 (window-normalize-window window) horizontal)) 688 (window-normalize-window window) horizontal))
689 689
690(defun window-min-delta-1 (window delta &optional horizontal ignore trail noup) 690(defun window--min-delta-1 (window delta &optional horizontal ignore trail noup)
691 "Internal function for `window-min-delta'." 691 "Internal function for `window-min-delta'."
692 (if (not (window-parent window)) 692 (if (not (window-parent window))
693 ;; If we can't go up, return zero. 693 ;; If we can't go up, return zero.
@@ -723,7 +723,7 @@ WINDOW can be resized in the desired direction. The function
723 (setq sub (window-right sub)))) 723 (setq sub (window-right sub))))
724 (if noup 724 (if noup
725 delta 725 delta
726 (window-min-delta-1 parent delta horizontal ignore trail)))))) 726 (window--min-delta-1 parent delta horizontal ignore trail))))))
727 727
728(defun window-min-delta (&optional window horizontal ignore trail noup nodown) 728(defun window-min-delta (&optional window horizontal ignore trail noup nodown)
729 "Return number of lines by which WINDOW can be shrunk. 729 "Return number of lines by which WINDOW can be shrunk.
@@ -757,7 +757,7 @@ at least one other window can be enlarged appropriately."
757 (cond 757 (cond
758 (nodown 758 (nodown
759 ;; If NODOWN is t, try to recover the entire size of WINDOW. 759 ;; If NODOWN is t, try to recover the entire size of WINDOW.
760 (window-min-delta-1 window size horizontal ignore trail noup)) 760 (window--min-delta-1 window size horizontal ignore trail noup))
761 ((= size minimum) 761 ((= size minimum)
762 ;; If NODOWN is nil and WINDOW's size is already at its minimum, 762 ;; If NODOWN is nil and WINDOW's size is already at its minimum,
763 ;; there's nothing to recover. 763 ;; there's nothing to recover.
@@ -765,10 +765,10 @@ at least one other window can be enlarged appropriately."
765 (t 765 (t
766 ;; Otherwise, try to recover whatever WINDOW is larger than its 766 ;; Otherwise, try to recover whatever WINDOW is larger than its
767 ;; minimum size. 767 ;; minimum size.
768 (window-min-delta-1 768 (window--min-delta-1
769 window (- size minimum) horizontal ignore trail noup))))) 769 window (- size minimum) horizontal ignore trail noup)))))
770 770
771(defun window-max-delta-1 (window delta &optional horizontal ignore trail noup) 771(defun window--max-delta-1 (window delta &optional horizontal ignore trail noup)
772 "Internal function of `window-max-delta'." 772 "Internal function of `window-max-delta'."
773 (if (not (window-parent window)) 773 (if (not (window-parent window))
774 ;; Can't go up. Return DELTA. 774 ;; Can't go up. Return DELTA.
@@ -804,7 +804,7 @@ at least one other window can be enlarged appropriately."
804 delta 804 delta
805 ;; Else try with parent of WINDOW, passing the DELTA we 805 ;; Else try with parent of WINDOW, passing the DELTA we
806 ;; recovered so far. 806 ;; recovered so far.
807 (window-max-delta-1 parent delta horizontal ignore trail)))))) 807 (window--max-delta-1 parent delta horizontal ignore trail))))))
808 808
809(defun window-max-delta (&optional window horizontal ignore trail noup nodown) 809(defun window-max-delta (&optional window horizontal ignore trail noup nodown)
810 "Return maximum number of lines WINDOW by which WINDOW can be enlarged. 810 "Return maximum number of lines WINDOW by which WINDOW can be enlarged.
@@ -840,7 +840,7 @@ only whether other windows can be shrunk appropriately."
840 ;; size. 840 ;; size.
841 0 841 0
842 ;; WINDOW has no fixed size. 842 ;; WINDOW has no fixed size.
843 (window-max-delta-1 window 0 horizontal ignore trail noup))) 843 (window--max-delta-1 window 0 horizontal ignore trail noup)))
844 844
845;; Make NOUP also inhibit the min-size check. 845;; Make NOUP also inhibit the min-size check.
846(defun window--resizable (window delta &optional horizontal ignore trail noup nodown) 846(defun window--resizable (window delta &optional horizontal ignore trail noup nodown)
@@ -997,9 +997,9 @@ taken into account."
997 (setq hor (cdr fcsb))))) 997 (setq hor (cdr fcsb)))))
998 (cons vert hor))) 998 (cons vert hor)))
999 999
1000(defun walk-windows (proc &optional minibuf all-frames) 1000(defun walk-windows (fun &optional minibuf all-frames)
1001 "Cycle through all live windows, calling PROC for each one. 1001 "Cycle through all live windows, calling FUN for each one.
1002PROC must specify a function with a window as its sole argument. 1002FUN must specify a function with a window as its sole argument.
1003The optional arguments MINIBUF and ALL-FRAMES specify the set of 1003The optional arguments MINIBUF and ALL-FRAMES specify the set of
1004windows to include in the walk. 1004windows to include in the walk.
1005 1005
@@ -1041,7 +1041,7 @@ windows nor the buffer list."
1041 (when (framep all-frames) 1041 (when (framep all-frames)
1042 (select-window (frame-first-window all-frames) 'norecord)) 1042 (select-window (frame-first-window all-frames) 'norecord))
1043 (dolist (walk-windows-window (window-list-1 nil minibuf all-frames)) 1043 (dolist (walk-windows-window (window-list-1 nil minibuf all-frames))
1044 (funcall proc walk-windows-window)))) 1044 (funcall fun walk-windows-window))))
1045 1045
1046(defun window-point-1 (&optional window) 1046(defun window-point-1 (&optional window)
1047 "Return value of WINDOW's point. 1047 "Return value of WINDOW's point.
@@ -2039,8 +2039,8 @@ move it as far as possible in the desired direction."
2039 ;; two windows we want to resize. 2039 ;; two windows we want to resize.
2040 (cond 2040 (cond
2041 ((> delta 0) 2041 ((> delta 0)
2042 (setq max-delta (window-max-delta-1 left 0 horizontal nil 'after)) 2042 (setq max-delta (window--max-delta-1 left 0 horizontal nil 'after))
2043 (setq min-delta (window-min-delta-1 right (- delta) horizontal nil 'before)) 2043 (setq min-delta (window--min-delta-1 right (- delta) horizontal nil 'before))
2044 (when (or (< max-delta delta) (> min-delta (- delta))) 2044 (when (or (< max-delta delta) (> min-delta (- delta)))
2045 ;; We can't get the whole DELTA - move as far as possible. 2045 ;; We can't get the whole DELTA - move as far as possible.
2046 (setq delta (min max-delta (- min-delta)))) 2046 (setq delta (min max-delta (- min-delta))))
@@ -2062,8 +2062,8 @@ move it as far as possible in the desired direction."
2062 (window-left-column right) 2062 (window-left-column right)
2063 (window-top-line right))))) 2063 (window-top-line right)))))
2064 ((< delta 0) 2064 ((< delta 0)
2065 (setq max-delta (window-max-delta-1 right 0 horizontal nil 'before)) 2065 (setq max-delta (window--max-delta-1 right 0 horizontal nil 'before))
2066 (setq min-delta (window-min-delta-1 left delta horizontal nil 'after)) 2066 (setq min-delta (window--min-delta-1 left delta horizontal nil 'after))
2067 (when (or (< max-delta (- delta)) (> min-delta delta)) 2067 (when (or (< max-delta (- delta)) (> min-delta delta))
2068 ;; We can't get the whole DELTA - move as far as possible. 2068 ;; We can't get the whole DELTA - move as far as possible.
2069 (setq delta (max (- max-delta) min-delta))) 2069 (setq delta (max (- max-delta) min-delta)))
@@ -2920,6 +2920,7 @@ window.
2920 2920
2921This function removes the buffer denoted by BUFFER-OR-NAME from 2921This function removes the buffer denoted by BUFFER-OR-NAME from
2922all window-local buffer lists." 2922all window-local buffer lists."
2923 (interactive "bBuffer to replace: ")
2923 (let ((buffer (window-normalize-buffer buffer-or-name))) 2924 (let ((buffer (window-normalize-buffer buffer-or-name)))
2924 (dolist (window (window-list-1 nil nil t)) 2925 (dolist (window (window-list-1 nil nil t))
2925 (if (eq (window-buffer window) buffer) 2926 (if (eq (window-buffer window) buffer)
@@ -3570,7 +3571,7 @@ specific buffers."
3570(defvar window-state-ignored-parameters '(quit-restore) 3571(defvar window-state-ignored-parameters '(quit-restore)
3571 "List of window parameters ignored by `window-state-get'.") 3572 "List of window parameters ignored by `window-state-get'.")
3572 3573
3573(defun window-state-get-1 (window &optional markers) 3574(defun window--state-get-1 (window &optional markers)
3574 "Helper function for `window-state-get'." 3575 "Helper function for `window-state-get'."
3575 (let* ((type 3576 (let* ((type
3576 (cond 3577 (cond
@@ -3625,7 +3626,7 @@ specific buffers."
3625 (let (list) 3626 (let (list)
3626 (setq window (window-child window)) 3627 (setq window (window-child window))
3627 (while window 3628 (while window
3628 (setq list (cons (window-state-get-1 window markers) list)) 3629 (setq list (cons (window--state-get-1 window markers) list))
3629 (setq window (window-right window))) 3630 (setq window (window-right window)))
3630 (nreverse list))))) 3631 (nreverse list)))))
3631 (append head tail))) 3632 (append head tail)))
@@ -3664,12 +3665,12 @@ value can be also stored on disk and read back in a new session."
3664 ;; These are probably not needed. 3665 ;; These are probably not needed.
3665 ,@(when (window-size-fixed-p window) `((fixed-height . t))) 3666 ,@(when (window-size-fixed-p window) `((fixed-height . t)))
3666 ,@(when (window-size-fixed-p window t) `((fixed-width . t)))) 3667 ,@(when (window-size-fixed-p window t) `((fixed-width . t))))
3667 (window-state-get-1 window markers))) 3668 (window--state-get-1 window markers)))
3668 3669
3669(defvar window-state-put-list nil 3670(defvar window-state-put-list nil
3670 "Helper variable for `window-state-put'.") 3671 "Helper variable for `window-state-put'.")
3671 3672
3672(defun window-state-put-1 (state &optional window ignore totals) 3673(defun window--state-put-1 (state &optional window ignore totals)
3673 "Helper function for `window-state-put'." 3674 "Helper function for `window-state-put'."
3674 (let ((type (car state))) 3675 (let ((type (car state)))
3675 (setq state (cdr state)) 3676 (setq state (cdr state))
@@ -3677,8 +3678,7 @@ value can be also stored on disk and read back in a new session."
3677 ((eq type 'leaf) 3678 ((eq type 'leaf)
3678 ;; For a leaf window just add unprocessed entries to 3679 ;; For a leaf window just add unprocessed entries to
3679 ;; `window-state-put-list'. 3680 ;; `window-state-put-list'.
3680 (setq window-state-put-list 3681 (push (cons window state) window-state-put-list))
3681 (cons (cons window state) window-state-put-list)))
3682 ((memq type '(vc hc)) 3682 ((memq type '(vc hc))
3683 (let* ((horizontal (eq type 'hc)) 3683 (let* ((horizontal (eq type 'hc))
3684 (total (window-total-size window horizontal)) 3684 (total (window-total-size window horizontal))
@@ -3689,7 +3689,7 @@ value can be also stored on disk and read back in a new session."
3689 ;; real window that we want to fill with what we find here. 3689 ;; real window that we want to fill with what we find here.
3690 (when (memq (car item) '(leaf vc hc)) 3690 (when (memq (car item) '(leaf vc hc))
3691 (if (assq 'last item) 3691 (if (assq 'last item)
3692 ;; The last child window. Below `window-state-put-1' 3692 ;; The last child window. Below `window--state-put-1'
3693 ;; will put into it whatever ITEM has in store. 3693 ;; will put into it whatever ITEM has in store.
3694 (setq new nil) 3694 (setq new nil)
3695 ;; Not the last child window, prepare for splitting 3695 ;; Not the last child window, prepare for splitting
@@ -3730,11 +3730,11 @@ value can be also stored on disk and read back in a new session."
3730 3730
3731 ;; Now process the current window (either the one we've just 3731 ;; Now process the current window (either the one we've just
3732 ;; split or the last child of its parent). 3732 ;; split or the last child of its parent).
3733 (window-state-put-1 item window ignore totals) 3733 (window--state-put-1 item window ignore totals)
3734 ;; Continue with the last window split off. 3734 ;; Continue with the last window split off.
3735 (setq window new)))))))) 3735 (setq window new))))))))
3736 3736
3737(defun window-state-put-2 (ignore) 3737(defun window--state-put-2 (ignore)
3738 "Helper function for `window-state-put'." 3738 "Helper function for `window-state-put'."
3739 (dolist (item window-state-put-list) 3739 (dolist (item window-state-put-list)
3740 (let ((window (car item)) 3740 (let ((window (car item))
@@ -3860,11 +3860,11 @@ windows can get as small as `window-safe-min-height' and
3860 ;; Work on the windows of a temporary buffer to make sure that 3860 ;; Work on the windows of a temporary buffer to make sure that
3861 ;; splitting proceeds regardless of any buffer local values of 3861 ;; splitting proceeds regardless of any buffer local values of
3862 ;; `window-size-fixed'. Release that buffer after the buffers of 3862 ;; `window-size-fixed'. Release that buffer after the buffers of
3863 ;; all live windows have been set by `window-state-put-2'. 3863 ;; all live windows have been set by `window--state-put-2'.
3864 (with-temp-buffer 3864 (with-temp-buffer
3865 (set-window-buffer window (current-buffer)) 3865 (set-window-buffer window (current-buffer))
3866 (window-state-put-1 state window nil totals) 3866 (window--state-put-1 state window nil totals)
3867 (window-state-put-2 ignore)) 3867 (window--state-put-2 ignore))
3868 (window--check frame)))) 3868 (window--check frame))))
3869 3869
3870(defun display-buffer-record-window (type window buffer) 3870(defun display-buffer-record-window (type window buffer)
@@ -4951,7 +4951,7 @@ the list of recently selected ones."
4951 4951
4952(defun read-buffer-to-switch (prompt) 4952(defun read-buffer-to-switch (prompt)
4953 "Read the name of a buffer to switch to, prompting with PROMPT. 4953 "Read the name of a buffer to switch to, prompting with PROMPT.
4954Return the neame of the buffer as a string. 4954Return the name of the buffer as a string.
4955 4955
4956This function is intended for the `switch-to-buffer' family of 4956This function is intended for the `switch-to-buffer' family of
4957commands since these need to omit the name of the current buffer 4957commands since these need to omit the name of the current buffer
diff --git a/lisp/woman.el b/lisp/woman.el
index a16bfa39c86..243196a5302 100644
--- a/lisp/woman.el
+++ b/lisp/woman.el
@@ -2558,7 +2558,7 @@ REQUEST is the invoking directive without the leading dot."
2558 ;; ((looking-at "[te]") (setq c nil)) ; reject t(roff) and e(ven page) 2558 ;; ((looking-at "[te]") (setq c nil)) ; reject t(roff) and e(ven page)
2559 ((looking-at "[ntoe]") 2559 ((looking-at "[ntoe]")
2560 (setq c (memq (following-char) woman-if-conditions-true))) 2560 (setq c (memq (following-char) woman-if-conditions-true)))
2561 ;; Unrecognised letter so reject: 2561 ;; Unrecognized letter so reject:
2562 ((looking-at "[A-Za-z]") (setq c nil) 2562 ((looking-at "[A-Za-z]") (setq c nil)
2563 (WoMan-warn "%s %s -- unrecognized condition name rejected!" 2563 (WoMan-warn "%s %s -- unrecognized condition name rejected!"
2564 request (match-string 0))) 2564 request (match-string 0)))
@@ -3697,7 +3697,7 @@ expression in parentheses. Leaves point after the value."
3697 (setq woman-request (match-string 1))))) 3697 (setq woman-request (match-string 1)))))
3698 ;; Delete request or macro name: 3698 ;; Delete request or macro name:
3699 (woman-delete-match 0)) 3699 (woman-delete-match 0))
3700 ;; Unrecognised request: 3700 ;; Unrecognized request:
3701 ((prog1 nil 3701 ((prog1 nil
3702 ;; (WoMan-warn ".%s request ignored!" woman-request) 3702 ;; (WoMan-warn ".%s request ignored!" woman-request)
3703 (WoMan-warn-ignored woman-request "ignored!") 3703 (WoMan-warn-ignored woman-request "ignored!")
diff --git a/lisp/xml.el b/lisp/xml.el
index 68aa5f4db6f..478872dd92e 100644
--- a/lisp/xml.el
+++ b/lisp/xml.el
@@ -756,7 +756,7 @@ This follows the rule [28] in the XML specifications."
756;;******************************************************************* 756;;*******************************************************************
757 757
758(defun xml-substitute-special (string) 758(defun xml-substitute-special (string)
759 "Return STRING, after subsituting entity references." 759 "Return STRING, after substituting entity references."
760 ;; This originally made repeated passes through the string from the 760 ;; This originally made repeated passes through the string from the
761 ;; beginning, which isn't correct, since then either "&amp;amp;" or 761 ;; beginning, which isn't correct, since then either "&amp;amp;" or
762 ;; "&#38;amp;" won't DTRT. 762 ;; "&#38;amp;" won't DTRT.
diff --git a/lwlib/xlwmenu.c b/lwlib/xlwmenu.c
index 5ed33d5be05..0128464d6e0 100644
--- a/lwlib/xlwmenu.c
+++ b/lwlib/xlwmenu.c
@@ -113,7 +113,7 @@ xlwMenuTranslations [] =
113<KeyUp>: key()\n\ 113<KeyUp>: key()\n\
114"; 114";
115 115
116/* FIXME: Space should toggle toggleable menu item but not remove the menu 116/* FIXME: Space should toggle togglable menu item but not remove the menu
117 so you can toggle the next one without entering the menu again. */ 117 so you can toggle the next one without entering the menu again. */
118 118
119/* FIXME: Should ESC close one level of menu structure or the complete menu? */ 119/* FIXME: Should ESC close one level of menu structure or the complete menu? */
@@ -1486,7 +1486,7 @@ remap_menubar (XlwMenuWidget mw)
1486 if (new_selection && !new_selection->enabled) 1486 if (new_selection && !new_selection->enabled)
1487 new_selection = NULL; 1487 new_selection = NULL;
1488 1488
1489 /* Call callback when the hightlighted item changes. */ 1489 /* Call callback when the highlighted item changes. */
1490 if (old_selection || new_selection) 1490 if (old_selection || new_selection)
1491 XtCallCallbackList ((Widget)mw, mw->menu.highlight, 1491 XtCallCallbackList ((Widget)mw, mw->menu.highlight,
1492 (XtPointer) new_selection); 1492 (XtPointer) new_selection);
diff --git a/nt/INSTALL b/nt/INSTALL
index 63285047a67..bb621dceb6b 100644
--- a/nt/INSTALL
+++ b/nt/INSTALL
@@ -29,7 +29,7 @@
29 29
30 "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x86 /Debug 30 "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x86 /Debug
31 31
32 if you are goiung to compile a debug version, or 32 if you are going to compile a debug version, or
33 33
34 "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x86 /Release 34 "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x86 /Release
35 35
@@ -268,7 +268,7 @@
268 "Error in --cflags argument: ... Backslashes and quotes cannot be 268 "Error in --cflags argument: ... Backslashes and quotes cannot be
269 used with --cflags. Please use forward slashes for filenames and 269 used with --cflags. Please use forward slashes for filenames and
270 paths (e.g. when passing directories to -I)." 270 paths (e.g. when passing directories to -I)."
271 271
272 N.B. It is normal to see a few error messages output while configure 272 N.B. It is normal to see a few error messages output while configure
273 is running, when gcc support is being tested. These cannot be 273 is running, when gcc support is being tested. These cannot be
274 suppressed because of limitations in the Windows 9X command.com shell. 274 suppressed because of limitations in the Windows 9X command.com shell.
diff --git a/nt/README b/nt/README
index 5d54ce90041..75a3c1cb111 100644
--- a/nt/README
+++ b/nt/README
@@ -34,7 +34,7 @@
34 34
35 + emacsclient.exe - A command-line client program that can 35 + emacsclient.exe - A command-line client program that can
36 communicate with a running Emacs process. See the `Emacs Server' 36 communicate with a running Emacs process. See the `Emacs Server'
37 node of the Emacs manul. 37 node of the Emacs manual.
38 38
39 + emacsclientw.exe - A version of emacsclient that does not open 39 + emacsclientw.exe - A version of emacsclient that does not open
40 a command-line window. 40 a command-line window.
diff --git a/nt/runemacs.c b/nt/runemacs.c
index 47b8f54bb02..2d2474c3592 100644
--- a/nt/runemacs.c
+++ b/nt/runemacs.c
@@ -111,7 +111,7 @@ WinMain (HINSTANCE hSelf, HINSTANCE hPrev, LPSTR cmdline, int nShow)
111#endif 111#endif
112 112
113 /* Append original arguments if any; first look for arguments we 113 /* Append original arguments if any; first look for arguments we
114 recognise (-wait, -high, and -low), and apply them ourselves. */ 114 recognize (-wait, -high, and -low), and apply them ourselves. */
115 while (cmdline[0] == '-' || cmdline[0] == '/') 115 while (cmdline[0] == '-' || cmdline[0] == '/')
116 { 116 {
117 if (strncmp (cmdline+1, "wait", 4) == 0) 117 if (strncmp (cmdline+1, "wait", 4) == 0)
diff --git a/oldXMenu/AddSel.c b/oldXMenu/AddSel.c
index 9bbcf71cd3c..2b1ff3d6c89 100644
--- a/oldXMenu/AddSel.c
+++ b/oldXMenu/AddSel.c
@@ -30,7 +30,7 @@ XMenuAddSelection(Display *display, register XMenu *menu, register int p_num, ch
30 register XMSelect *sel; /* Newly created selection. */ 30 register XMSelect *sel; /* Newly created selection. */
31 31
32 32
33 int label_length; /* Label lenght in characters. */ 33 int label_length; /* Label length in characters. */
34 int label_width; /* Label width in pixels. */ 34 int label_width; /* Label width in pixels. */
35 35
36 /* 36 /*
diff --git a/src/ChangeLog b/src/ChangeLog
index e1854d7ffcd..a0f83560603 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,115 @@
12011-11-21 Lars Magne Ingebrigtsen <larsi@gnus.org>
2
3 * process.c (wait_reading_process_output): Fix asynchrounous
4 GnuTLS socket handling on some versions of the GnuTLS library.
5 (wait_reading_process_output): Add comment and URL.
6
72011-11-21 Jan Djärv <jan.h.d@swipnet.se>
8
9 * xterm.c (x_clear_frame): Reinstate the XClearWindow call.
10
112011-11-21 Chong Yidong <cyd@gnu.org>
12
13 * window.c (Fnext_window, Fprevious_window): Doc fix.
14
152011-11-20 Stefan Monnier <monnier@iro.umontreal.ca>
16
17 * window.c (get_phys_cursor_glyph): Fix Lisp_Object/int mixup.
18
192011-11-20 Juanma Barranquero <lekktu@gmail.com>
20
21 * nsfont.m (syms_of_nsfont) <ns-reg-to-script>: Fix typo.
22
232011-11-20 Martin Rudalics <rudalics@gmx.at>
24
25 * window.c (Fset_window_combination_limit): Rename argument
26 STATUS to LIMIT.
27 (Vwindow_combination_limit): Remove "status" from doc-string.
28
292011-11-20 Andreas Schwab <schwab@linux-m68k.org>
30
31 * m/ibms390.h: Remove.
32 * m/ibms390x.h: Don't include "ibms390.h".
33
342011-11-20 Stefan Monnier <monnier@iro.umontreal.ca>
35
36 * fileio.c (Finsert_file_contents): Add missing gcpro1 variable.
37 Suggested by Dmitry Antipov <dmantipov@yandex.ru>.
38
392011-11-20 Juanma Barranquero <lekktu@gmail.com>
40
41 * casetab.c (Fset_case_table):
42 * charset.c (Fcharset_after): Fix typos.
43
442011-11-20 Paul Eggert <eggert@cs.ucla.edu>
45
46 Standardize on VIRT_ADDR_VARIES behavior (Bug#10042).
47 Otherwise, valgrind does not work on some platforms.
48 Problem reported by Andreas Schwab in
49 <http://lists.gnu.org/archive/html/emacs-devel/2011-11/msg00081.html>.
50 * puresize.h (pure, PURE_P): Always behave as if VIRT_ADDR_VARIES
51 is set, removing the need for VIRT_ADDRESS_VARIES.
52 (PURE_P): Use a more-efficient implementation that needs just one
53 comparison, not two: on x86-64 with GCC 4.6.2, this cut down the
54 number of instructions from 6 (xorl, cmpq, jge, xorl, cmpq, setge)
55 to 4 (xorl, subq, cmpq, setbe).
56 * alloc.c (pure): Always extern now, since that's the
57 VIRT_ADDR_VARIES behavior.
58 (PURE_POINTER_P): Use a single comparison, not two, for
59 consistency with the new puresize.h.
60 * lisp.h (PNTR_COMPARISON_TYPE): Remove; no longer needed.
61 * m/ibms390.h, m/intel386.h, m/template.h, s/cygwin.h, s/hpux10-20.h:
62 Remove VIRT_ADDR_VARIES no longer needed.
63
642011-11-19 Eli Zaretskii <eliz@gnu.org>
65
66 * xdisp.c (x_write_glyphs, draw_phys_cursor_glyph)
67 (erase_phys_cursor, update_window_cursor, show_mouse_face)
68 (cursor_in_mouse_face_p): If the cursor position is out of bounds,
69 behave as if the cursor position were at the window margin.
70
71 * window.c (get_phys_cursor_glyph): If the window is hscrolled,
72 and the cursor position is out of bounds, behave as if the cursor
73 position were at the window margin. (Bug#10075)
74
752011-11-18 Chong Yidong <cyd@gnu.org>
76
77 * window.c (Fwindow_combination_limit): Make first argument
78 non-optional, since it is meaningless for live windows like the
79 selected window.
80
812011-11-18 Dmitry Antipov <dmantipov@yandex.ru>
82
83 * keymap.c (Fwhere_is_internal): Add missing RETURN_UNGCPROs.
84
852011-11-18 Stefan Monnier <monnier@iro.umontreal.ca>
86
87 * intervals.c: Fix grafting over the whole buffer (bug#10071).
88 (graft_intervals_into_buffer): Simplify.
89
902011-11-18 Eli Zaretskii <eliz@gnu.org>
91
92 * dispnew.c (swap_glyph_pointers): Swap the used[] arrays and the
93 hash values of the two rows.
94 (copy_row_except_pointers): Preserve the used[] arrays and the
95 hash values of the two rows. (Bug#10035)
96 (add_row_entry): Add xassert to verify that ROW's hash code is valid.
97
98 * xdisp.c (row_hash): New function, body extracted from
99 compute_line_metrics.
100 (compute_line_metrics): Call row_hash, instead of computing the
101 hash code inline.
102
103 * dispnew.c (verify_row_hash): Call row_hash for computing the
104 hash code of a row, instead of duplicating code from xdisp.c.
105
106 * dispextern.h (row_hash): Add prototype.
107
1082011-11-18 Tassilo Horn <tassilo@member.fsf.org>
109
110 * frame.c (delete_frame): Don't delete the terminal when the last
111 X frame is closed if emacs is built with GTK toolkit.
112
12011-11-17 Juanma Barranquero <lekktu@gmail.com> 1132011-11-17 Juanma Barranquero <lekktu@gmail.com>
2 114
3 * window.c (syms_of_window) <window-combination-resize>: Fix typo. 115 * window.c (syms_of_window) <window-combination-resize>: Fix typo.
@@ -371,7 +483,7 @@
371 483
372 Fix the `xbytecode' command. 484 Fix the `xbytecode' command.
373 * .gdbinit (xprintbytestr): New command. 485 * .gdbinit (xprintbytestr): New command.
374 (xwhichsymbols): Renamed from `which'; all callers changed. 486 (xwhichsymbols): Rename from `which'; all callers changed.
375 (xbytecode): Print the byte-code string as well. 487 (xbytecode): Print the byte-code string as well.
376 488
3772011-10-29 Kim Storm <storm@cua.dk> 4892011-10-29 Kim Storm <storm@cua.dk>
diff --git a/src/ChangeLog.1 b/src/ChangeLog.1
index efe77648458..7fef45f36da 100644
--- a/src/ChangeLog.1
+++ b/src/ChangeLog.1
@@ -2237,7 +2237,7 @@
2237 2237
2238 * data.c (Fset): 2238 * data.c (Fset):
2239 If Vautoload_queue non-nil, record function and old definition 2239 If Vautoload_queue non-nil, record function and old definition
2240 by consing onto Vautoload_qeueue. 2240 by consing onto Vautoload_queue.
2241 2241
2242 * fns.c (Fprovide): 2242 * fns.c (Fprovide):
2243 If Vautoload_queue is non-nil, record old value of Vfeatures. 2243 If Vautoload_queue is non-nil, record old value of Vfeatures.
diff --git a/src/ChangeLog.10 b/src/ChangeLog.10
index 181b11b5a2b..99ab02577d5 100644
--- a/src/ChangeLog.10
+++ b/src/ChangeLog.10
@@ -6387,7 +6387,7 @@
63872005-11-20 Nick Roberts <nickrob@snap.net.nz> 63872005-11-20 Nick Roberts <nickrob@snap.net.nz>
6388 6388
6389 * lisp.h: Use typedef when Lisp_Object is EMACS_INT so that 6389 * lisp.h: Use typedef when Lisp_Object is EMACS_INT so that
6390 this type is recognised when debugging. 6390 this type is recognized when debugging.
6391 6391
63922005-11-19 Andreas Schwab <schwab@suse.de> 63922005-11-19 Andreas Schwab <schwab@suse.de>
6393 6393
@@ -13398,7 +13398,7 @@
133982004-07-04 John Paul Wallington <jpw@gnu.org> 133982004-07-04 John Paul Wallington <jpw@gnu.org>
13399 13399
13400 * fileio.c (read_file_name_completion_ignore_case): New variable. 13400 * fileio.c (read_file_name_completion_ignore_case): New variable.
13401 (syms_of_fileio): Declare and initialise it. 13401 (syms_of_fileio): Declare and initialize it.
13402 (Fread_file_name): Bind `completion-ignore-case' to respect it. 13402 (Fread_file_name): Bind `completion-ignore-case' to respect it.
13403 13403
134042004-07-03 Eli Zaretskii <eliz@gnu.org> 134042004-07-03 Eli Zaretskii <eliz@gnu.org>
@@ -18755,7 +18755,7 @@
18755 18755
187562003-05-21 Dave Love <fx@gnu.org> 187562003-05-21 Dave Love <fx@gnu.org>
18757 18757
18758 [Merged from unicode branch.] 18758 [Merged from Unicode branch.]
18759 18759
18760 * xfns.c (x_window, x_window): Use use_xim. 18760 * xfns.c (x_window, x_window): Use use_xim.
18761 18761
diff --git a/src/ChangeLog.11 b/src/ChangeLog.11
index 73ac5fd4e00..07d4f4ec116 100644
--- a/src/ChangeLog.11
+++ b/src/ChangeLog.11
@@ -4839,7 +4839,7 @@
4839 4839
48402010-08-13 Jason Rumney <jasonr@gnu.org> 48402010-08-13 Jason Rumney <jasonr@gnu.org>
4841 4841
4842 * w32menu.c (simple_dialog_show): Use unicode message box if available. 4842 * w32menu.c (simple_dialog_show): Use Unicode message box if available.
4843 (MessageBoxW_Proc): New function typedef. 4843 (MessageBoxW_Proc): New function typedef.
4844 (unicode-message-box): New function pointer. 4844 (unicode-message-box): New function pointer.
4845 (globals_of_w32menu): Import it from user32.dll. (Bug#5629) 4845 (globals_of_w32menu): Import it from user32.dll. (Bug#5629)
@@ -5896,7 +5896,7 @@
5896 * eval.c (Feval, Ffuncall): Use the new names. 5896 * eval.c (Feval, Ffuncall): Use the new names.
5897 5897
5898 * lisp.h (struct Lisp_Subr): Rename `am' to aMANY and add aUNEVALLED. 5898 * lisp.h (struct Lisp_Subr): Rename `am' to aMANY and add aUNEVALLED.
5899 (DEFUN): Add braces around the union initialisation and use ## to 5899 (DEFUN): Add braces around the union initialization and use ## to
5900 specify the right union alternative and avoid a cast. 5900 specify the right union alternative and avoid a cast.
5901 5901
59022010-07-18 Juanma Barranquero <lekktu@gmail.com> 59022010-07-18 Juanma Barranquero <lekktu@gmail.com>
@@ -6604,9 +6604,9 @@
6604 * keyboard.c (input_available_signal): Declare. 6604 * keyboard.c (input_available_signal): Declare.
6605 (kbd_buffer_nr_stored): New function. 6605 (kbd_buffer_nr_stored): New function.
6606 (kbd_buffer_store_event_hold): If kbd_buffer_nr_stored returns 6606 (kbd_buffer_store_event_hold): If kbd_buffer_nr_stored returns
6607 more than KBD_BUFFER_SIZE/2, stop reding input (Bug#6571). 6607 more than KBD_BUFFER_SIZE/2, stop reading input (Bug#6571).
6608 (kbd_buffer_get_event): If input is suspended and kbd_buffer_nr_stored 6608 (kbd_buffer_get_event): If input is suspended and kbd_buffer_nr_stored
6609 returns less than KBD_BUFFER_SIZE/4, resume reding input (Bug#6571). 6609 returns less than KBD_BUFFER_SIZE/4, resume reading input (Bug#6571).
6610 (tty_read_avail_input): If input is on hold, return. 6610 (tty_read_avail_input): If input is on hold, return.
6611 Don't read more that free slots in kbd_buffer (Bug#6571). 6611 Don't read more that free slots in kbd_buffer (Bug#6571).
6612 6612
@@ -7199,7 +7199,7 @@
7199 7199
72002010-06-27 Chong Yidong <cyd@stupidchicken.com> 72002010-06-27 Chong Yidong <cyd@stupidchicken.com>
7201 7201
7202 * xfns.c (Fx_create_frame): Don't consult X resouces when setting 7202 * xfns.c (Fx_create_frame): Don't consult X resources when setting
7203 menu-bar-lines and tool-bar-lines. Use menu-bar-mode and 7203 menu-bar-lines and tool-bar-lines. Use menu-bar-mode and
7204 tool-bar-mode, which are now set using these X resources at 7204 tool-bar-mode, which are now set using these X resources at
7205 startup, to determine the defaults (Bug#2249). 7205 startup, to determine the defaults (Bug#2249).
@@ -7683,7 +7683,7 @@
7683 7683
76842010-05-20 Juri Linkov <juri@jurta.org> 76842010-05-20 Juri Linkov <juri@jurta.org>
7685 7685
7686 * fileio.c (Fdelete_file): Change interative spec to use 7686 * fileio.c (Fdelete_file): Change interactive spec to use
7687 `read-file-name' like in `find-file-read-args' where the default 7687 `read-file-name' like in `find-file-read-args' where the default
7688 value is `default-directory' instead of `buffer-file-name'. 7688 value is `default-directory' instead of `buffer-file-name'.
7689 http://lists.gnu.org/archive/html/emacs-devel/2010-05/msg00533.html 7689 http://lists.gnu.org/archive/html/emacs-devel/2010-05/msg00533.html
@@ -8991,8 +8991,8 @@
89912010-04-13 Jan Djärv <jan.h.d@swipnet.se> 89912010-04-13 Jan Djärv <jan.h.d@swipnet.se>
8992 8992
8993 * gtkutil.c (xg_set_geometry): Set geometry for PPosition also. 8993 * gtkutil.c (xg_set_geometry): Set geometry for PPosition also.
8994 (x_wm_set_size_hint): Dont set position flags, gtk_window_parse_geometry 8994 (x_wm_set_size_hint): Don't set position flags,
8995 does that. 8995 gtk_window_parse_geometry does that.
8996 8996
8997 * xfns.c (Fx_create_frame, x_create_tip_frame): Set default border width 8997 * xfns.c (Fx_create_frame, x_create_tip_frame): Set default border width
8998 to zero. 8998 to zero.
@@ -9266,7 +9266,7 @@
9266 9266
9267 Get rid of the direct_output optimizations. 9267 Get rid of the direct_output optimizations.
9268 * keyboard.c (nonundocount): Remove extern declaration. 9268 * keyboard.c (nonundocount): Remove extern declaration.
9269 (command_loop_1): Remove brittle optimisation for cheap and 9269 (command_loop_1): Remove brittle optimization for cheap and
9270 common operations. 9270 common operations.
9271 * xdisp.c (redisplay_internal): Don't bother checking 9271 * xdisp.c (redisplay_internal): Don't bother checking
9272 redisplay_performed_directly_p any more. 9272 redisplay_performed_directly_p any more.
@@ -9864,8 +9864,8 @@
9864 9864
98652010-01-27 Jason Rumney <jasonr@gnu.org> 98652010-01-27 Jason Rumney <jasonr@gnu.org>
9866 9866
9867 * w32inevt.c (w32_kbd_patch_key): Save the unicode character. 9867 * w32inevt.c (w32_kbd_patch_key): Save the Unicode character.
9868 (key_event): Use unicode for characters 128 and higher (Bug#4567). 9868 (key_event): Use Unicode for characters 128 and higher (Bug#4567).
9869 9869
98702010-01-27 Kenichi Handa <handa@m17n.org> 98702010-01-27 Kenichi Handa <handa@m17n.org>
9871 9871
@@ -11541,7 +11541,7 @@
11541 (syms_of_nsfont): Declare it. 11541 (syms_of_nsfont): Declare it.
11542 (ns_registry_to_script): New function. 11542 (ns_registry_to_script): New function.
11543 (ns_get_req_script): Call it. 11543 (ns_get_req_script): Call it.
11544 (ns_findfonts): Don't give up on non-unicode registry. 11544 (ns_findfonts): Don't give up on non-Unicode registry.
11545 11545
11546 * font.c (DEFAULT_ENCODING) [HAVE_NS]: Remove special case. 11546 * font.c (DEFAULT_ENCODING) [HAVE_NS]: Remove special case.
11547 11547
@@ -11923,7 +11923,7 @@
11923 11923
11924 * process.c (status_notify): Don't perform redisplay. 11924 * process.c (status_notify): Don't perform redisplay.
11925 (Fdelete_process, list_processes_1, process_send_signal): 11925 (Fdelete_process, list_processes_1, process_send_signal):
11926 Expliticly perform redisplay. 11926 Explicitly perform redisplay.
11927 (wait_reading_process_output): Always check process status, but 11927 (wait_reading_process_output): Always check process status, but
11928 don't perform redisplay unless DO_DISPLAY is non-zero (Bug#2930). 11928 don't perform redisplay unless DO_DISPLAY is non-zero (Bug#2930).
11929 11929
@@ -12481,7 +12481,7 @@
12481 12481
12482 * dbusbind.c (XD_SYMBOL_TO_DBUS_TYPE): Convert macro into function 12482 * dbusbind.c (XD_SYMBOL_TO_DBUS_TYPE): Convert macro into function
12483 xd_symbol_to_dbus_type. With Solaris 2.11, it was said to compile 12483 xd_symbol_to_dbus_type. With Solaris 2.11, it was said to compile
12484 for hours, when optimzation is enabled. 12484 for hours, when optimization is enabled.
12485 (xd_signature, xd_append_arg, xd_retrieve_arg, xd_initialize) 12485 (xd_signature, xd_append_arg, xd_retrieve_arg, xd_initialize)
12486 (xd_read_message): Make them static. 12486 (xd_read_message): Make them static.
12487 12487
@@ -13149,7 +13149,7 @@
13149 (ftfont_has_char): Special handling of `ja' and `ko' adstyle. 13149 (ftfont_has_char): Special handling of `ja' and `ko' adstyle.
13150 13150
13151 * font.c (font_sort_entites): Change the meaning of the arg 13151 * font.c (font_sort_entites): Change the meaning of the arg
13152 BEST-ONLY. Don't optimize for VEC of lenght 1. 13152 BEST-ONLY. Don't optimize for VEC of length 1.
13153 (font_select_entity): Just return the value of font_sort_entites. 13153 (font_select_entity): Just return the value of font_sort_entites.
13154 13154
13155 * xfaces.c (merge_face_vectors): Reflect font properties in 13155 * xfaces.c (merge_face_vectors): Reflect font properties in
@@ -16072,7 +16072,7 @@
160722008-09-07 Andreas Schwab <schwab@suse.de> 160722008-09-07 Andreas Schwab <schwab@suse.de>
16073 16073
16074 * callproc.c (Fcall_process): Don't hold references to string data 16074 * callproc.c (Fcall_process): Don't hold references to string data
16075 across garbage collection. Move initialisation of new_argv down 16075 across garbage collection. Move initialization of new_argv down
16076 to avoid compiler bug. 16076 to avoid compiler bug.
16077 16077
160782008-09-07 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de> 160782008-09-07 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
@@ -17147,10 +17147,10 @@
17147 17147
171482008-07-30 Jason Rumney <jasonr@gnu.org> 171482008-07-30 Jason Rumney <jasonr@gnu.org>
17149 17149
17150 * w32font.h (struct w32font_info): Use unicode version of textmetrics. 17150 * w32font.h (struct w32font_info): Use Unicode version of textmetrics.
17151 17151
17152 * w32font.c (w32font_encode_char): Leave as unicode if in range. 17152 * w32font.c (w32font_encode_char): Leave as Unicode if in range.
17153 (w32font_open_internal): Get unicode version of textmetrics. 17153 (w32font_open_internal): Get Unicode version of textmetrics.
17154 Don't enable or disable glyph indices here. 17154 Don't enable or disable glyph indices here.
17155 (w32font_open): Disable use of glyph indices. 17155 (w32font_open): Disable use of glyph indices.
17156 17156
@@ -19178,7 +19178,7 @@
191782008-06-10 Jason Rumney <jasonr@gnu.org> 191782008-06-10 Jason Rumney <jasonr@gnu.org>
19179 19179
19180 * w32uniscribe.c (add_opentype_font_name_to_list): 19180 * w32uniscribe.c (add_opentype_font_name_to_list):
19181 Skip non unicode fonts. 19181 Skip non Unicode fonts.
19182 19182
191832008-06-10 Chong Yidong <cyd@stupidchicken.com> 191832008-06-10 Chong Yidong <cyd@stupidchicken.com>
19184 19184
@@ -19248,7 +19248,7 @@
19248 * w32menu.c (Fx_popup_menu): Unwind protect while building menu. 19248 * w32menu.c (Fx_popup_menu): Unwind protect while building menu.
19249 (parse_single_submenu): Remove. 19249 (parse_single_submenu): Remove.
19250 (digest_single_submenu): Remove. 19250 (digest_single_submenu): Remove.
19251 (syms_of_w32menu): Don't initialise variables that have moved 19251 (syms_of_w32menu): Don't initialize variables that have moved
19252 to menu.c. 19252 to menu.c.
19253 (set_frame_menubar): Sync with version in xmenu.c. 19253 (set_frame_menubar): Sync with version in xmenu.c.
19254 (w32_menu_show): Sync with xmenu_show in xmenu.c. 19254 (w32_menu_show): Sync with xmenu_show in xmenu.c.
@@ -19647,7 +19647,7 @@
19647 `raster' specified. 19647 `raster' specified.
19648 (add_font_entity_to_list): Allow non-opentype truetype fonts back 19648 (add_font_entity_to_list): Allow non-opentype truetype fonts back
19649 in the uniscribe backend, but disallow any font that has no 19649 in the uniscribe backend, but disallow any font that has no
19650 unicode subrange support. 19650 Unicode subrange support.
19651 19651
196522008-05-29 Juanma Barranquero <lekktu@gmail.com> 196522008-05-29 Juanma Barranquero <lekktu@gmail.com>
19653 19653
@@ -21290,7 +21290,7 @@
21290 (CACHE_BLOCKSIZE): New constants. 21290 (CACHE_BLOCKSIZE): New constants.
21291 21291
21292 * w32font.c (Qja, Qko, Qzh): New symbols. 21292 * w32font.c (Qja, Qko, Qzh): New symbols.
21293 (syms_of_w32font): Initialise them. 21293 (syms_of_w32font): Initialize them.
21294 (font_matches_spec): Use them to filter by language. 21294 (font_matches_spec): Use them to filter by language.
21295 (recompute_cached_metrics): Remove function. 21295 (recompute_cached_metrics): Remove function.
21296 (compute_metrics, clear_cached_metrics): New functions. 21296 (compute_metrics, clear_cached_metrics): New functions.
@@ -21813,8 +21813,8 @@
218132008-03-06 Jason Rumney <jasonr@gnu.org> 218132008-03-06 Jason Rumney <jasonr@gnu.org>
21814 21814
21815 * w32font.c (w32_registry): Take font_type argument. Use ANSI 21815 * w32font.c (w32_registry): Take font_type argument. Use ANSI
21816 when charset not specified. Only translate ANSI to unicode when 21816 when charset not specified. Only translate ANSI to Unicode when
21817 font_type is truetype. 21817 font_type is TrueType.
21818 (w32font_coverage_ok): New function. 21818 (w32font_coverage_ok): New function.
21819 (add_font_entity_to_list): Use it to filter unsuitable fonts. 21819 (add_font_entity_to_list): Use it to filter unsuitable fonts.
21820 21820
@@ -23463,10 +23463,10 @@
23463 (w32font_list, w32font_match): Use it. 23463 (w32font_list, w32font_match): Use it.
23464 (w32font_open): Don't populate subranges. 23464 (w32font_open): Don't populate subranges.
23465 (w32font_has_char): Use script Lisp symbols, not subrange bitmask. 23465 (w32font_has_char): Use script Lisp symbols, not subrange bitmask.
23466 (w32font_encode_char): Always return unicode code-point as-is. 23466 (w32font_encode_char): Always return Unicode code-point as-is.
23467 (w32font_text_extents): Supply a transformation matrix to 23467 (w32font_text_extents): Supply a transformation matrix to
23468 GetGlyphOutline. Never look up by glyph index. Avoid looping 23468 GetGlyphOutline. Never look up by glyph index. Avoid looping
23469 twice. Use unicode version of GetTexExtentPoint32 instead of 23469 twice. Use Unicode version of GetTexExtentPoint32 instead of
23470 glyph index version. 23470 glyph index version.
23471 (set_fonts_frame): Remove. 23471 (set_fonts_frame): Remove.
23472 (w32_enumfont_pattern_entity): Add frame parameter, use it to 23472 (w32_enumfont_pattern_entity): Add frame parameter, use it to
@@ -25081,7 +25081,7 @@
25081 * keymap.c (describe_vector): Handle default value of a char table. 25081 * keymap.c (describe_vector): Handle default value of a char table.
25082 25082
25083 * fontset.c (fontset_face): Handle fallback fonts correctly. 25083 * fontset.c (fontset_face): Handle fallback fonts correctly.
25084 (Ffontset_info): Return infomation about fallback fonts. 25084 (Ffontset_info): Return information about fallback fonts.
25085 25085
250862008-02-01 Kenichi Handa <handa@m17n.org> 250862008-02-01 Kenichi Handa <handa@m17n.org>
25087 25087
@@ -25425,16 +25425,16 @@
25425 (pfnGetFontUnicodeRanges): New dynamically loaded function. 25425 (pfnGetFontUnicodeRanges): New dynamically loaded function.
25426 (w32_initialize): Try to load it. 25426 (w32_initialize): Try to load it.
25427 (x_get_font_repertory): Use it if available. 25427 (x_get_font_repertory): Use it if available.
25428 (w32_encode_char): Add shortcut for unicode output. 25428 (w32_encode_char): Add shortcut for Unicode output.
25429 25429
25430 * w32fns.c (w32_load_system_font): Default charset to -1. 25430 * w32fns.c (w32_load_system_font): Default charset to -1.
25431 (x_to_w32_charset): Match all fonts for unicode. 25431 (x_to_w32_charset): Match all fonts for Unicode.
25432 (w32_to_x_charset): New parameter matching. Don't return partial 25432 (w32_to_x_charset): New parameter matching. Don't return partial
25433 or wildcard charsets. 25433 or wildcard charsets.
25434 (w32_to_all_x_charsets): Don't return partial or wildcard charsets. 25434 (w32_to_all_x_charsets): Don't return partial or wildcard charsets.
25435 (w32_codepage_for_font): Return CP_UNICODE for unicode. 25435 (w32_codepage_for_font): Return CP_UNICODE for Unicode.
25436 (w32_to_x_font): Match charset to real charset. 25436 (w32_to_x_font): Match charset to real charset.
25437 (enum_font_cb2): Always list unicode versions. 25437 (enum_font_cb2): Always list Unicode versions.
25438 25438
25439 * makefile.w32-in (temacs): Increase EMHEAP. 25439 * makefile.w32-in (temacs): Increase EMHEAP.
25440 25440
@@ -25458,7 +25458,7 @@
25458 25458
25459 * w32fns.c (Fx_create_frame, x_create_tip_frame): Use new version 25459 * w32fns.c (Fx_create_frame, x_create_tip_frame): Use new version
25460 of x_new_fontset. 25460 of x_new_fontset.
25461 (w32_load_system_font): Initialize charset as unicode. 25461 (w32_load_system_font): Initialize charset as Unicode.
25462 font_info.encoding becomes encoding_type. 25462 font_info.encoding becomes encoding_type.
25463 (w32_to_x_font): Use decode_coding_c_string in place of decode_coding. 25463 (w32_to_x_font): Use decode_coding_c_string in place of decode_coding.
25464 (x_to_w32_font): Use encode_coding_object in place of encode_coding. 25464 (x_to_w32_font): Use encode_coding_object in place of encode_coding.
@@ -27685,7 +27685,7 @@
27685 * xterm.c (handle_one_xevent): Revert to counting chars not bytes. 27685 * xterm.c (handle_one_xevent): Revert to counting chars not bytes.
27686 27686
27687 * w32term.c (w32_read_socket) <WM_CHAR>: Decode characters outside 27687 * w32term.c (w32_read_socket) <WM_CHAR>: Decode characters outside
27688 the unicode range available in MULE by locale-coding-system. 27688 the Unicode range available in MULE by locale-coding-system.
27689 Improve dbcs lead byte detection. Set event timestamp and modifiers 27689 Improve dbcs lead byte detection. Set event timestamp and modifiers
27690 earlier. 27690 earlier.
27691 27691
@@ -29136,7 +29136,7 @@
29136 29136
29137 * lisp.h (defvar_per_buffer, DEFVAR_PER_BUFFER): 29137 * lisp.h (defvar_per_buffer, DEFVAR_PER_BUFFER):
29138 * lread.c (defvar_per_buffer): 29138 * lread.c (defvar_per_buffer):
29139 * abbrev.c (syms_of_abbrev) <local-abbrev-tabl>: Move to buffer.c. 29139 * abbrev.c (syms_of_abbrev) <local-abbrev-table>: Move to buffer.c.
29140 29140
29141 * window.c (candidate_window_p): Only consider as visible frames that 29141 * window.c (candidate_window_p): Only consider as visible frames that
29142 are on the same terminal. 29142 are on the same terminal.
@@ -29651,7 +29651,7 @@
29651 29651
29652 * callproc.c (child_setup, getenv_internal): Use the 29652 * callproc.c (child_setup, getenv_internal): Use the
29653 display-environment-variable and term-environment-variable frame params. 29653 display-environment-variable and term-environment-variable frame params.
29654 (set_initial_environment): Initialise Vprocess_environment. 29654 (set_initial_environment): Initialize Vprocess_environment.
29655 29655
29656 * config.in: Disable multi-keyboard support on a mac. 29656 * config.in: Disable multi-keyboard support on a mac.
29657 29657
@@ -30873,7 +30873,7 @@
308732007-06-17 Jason Rumney <jasonr@gnu.org> 308732007-06-17 Jason Rumney <jasonr@gnu.org>
30874 30874
30875 * w32menu.c (add_menu_item): Don't use multibyte string functions on 30875 * w32menu.c (add_menu_item): Don't use multibyte string functions on
30876 unicode strings. 30876 Unicode strings.
30877 30877
308782007-06-16 Juanma Barranquero <lekktu@gmail.com> 308782007-06-16 Juanma Barranquero <lekktu@gmail.com>
30879 30879
@@ -30892,7 +30892,7 @@
308922007-06-14 Jason Rumney <jasonr@gnu.org> 308922007-06-14 Jason Rumney <jasonr@gnu.org>
30893 30893
30894 * w32.c (get_process_times_fn): New function pointer. 30894 * w32.c (get_process_times_fn): New function pointer.
30895 (globals_of_w32): Intialize it if present in kernel32.dll. 30895 (globals_of_w32): Initialize it if present in kernel32.dll.
30896 (w32_get_internal_run_time): New function. 30896 (w32_get_internal_run_time): New function.
30897 30897
30898 * editfns.c (Fget_internal_run_time) [WINDOWSNT]: Use it. 30898 * editfns.c (Fget_internal_run_time) [WINDOWSNT]: Use it.
@@ -31298,7 +31298,7 @@
31298 (term_mouse_highlight, term_mouse_movement, term_mouse_position) 31298 (term_mouse_highlight, term_mouse_movement, term_mouse_position)
31299 (term_mouse_click, handle_one_term_event, Fterm_open_connection) 31299 (term_mouse_click, handle_one_term_event, Fterm_open_connection)
31300 (Fterm_close_connection): New functions. 31300 (Fterm_close_connection): New functions.
31301 (term_init): Initialise mouse_face_window. 31301 (term_init): Initialize mouse_face_window.
31302 31302
313032007-05-19 Chong Yidong <cyd@stupidchicken.com> 313032007-05-19 Chong Yidong <cyd@stupidchicken.com>
31304 31304
diff --git a/src/ChangeLog.2 b/src/ChangeLog.2
index 05e448c043c..62e3de22b09 100644
--- a/src/ChangeLog.2
+++ b/src/ChangeLog.2
@@ -1152,7 +1152,7 @@
1152 1152
11531987-07-29 Richard Mlynarik (mly@prep) 11531987-07-29 Richard Mlynarik (mly@prep)
1154 1154
1155 * lread.c (init_read): Initialise load_in_progress. 1155 * lread.c (init_read): Initialize load_in_progress.
1156 1156
11571987-07-28 Richard M. Stallman (rms@prep) 11571987-07-28 Richard M. Stallman (rms@prep)
1158 1158
@@ -2251,7 +2251,7 @@
22511987-01-16 Richard Mlynarik (mly@prep) 22511987-01-16 Richard Mlynarik (mly@prep)
2252 2252
2253 * xfns.c (Fx_set_{background,cursor,mouse}_color): 2253 * xfns.c (Fx_set_{background,cursor,mouse}_color):
2254 Initialise save_color. 2254 Initialize save_color.
2255 2255
2256 * fileio.c, search.c, sysdep.c, filelock.c, editfns.c, process.c: 2256 * fileio.c, search.c, sysdep.c, filelock.c, editfns.c, process.c:
2257 Delete/replace unused/conditionalised variables 2257 Delete/replace unused/conditionalised variables
@@ -3002,7 +3002,7 @@
30021986-11-18 Richard Mlynarik (mly@prep) 30021986-11-18 Richard Mlynarik (mly@prep)
3003 3003
3004 * emacs.c (main): 3004 * emacs.c (main):
3005 Giving `inhibit_x_windows' an initialisation loses; 3005 Giving `inhibit_x_windows' an initialization loses;
3006 do it explicitly. 3006 do it explicitly.
3007 3007
3008 * xfns.c (Fx_rubber_band): 3008 * xfns.c (Fx_rubber_band):
@@ -3291,7 +3291,7 @@
32911986-11-03 Richard Mlynarik (mly@prep) 32911986-11-03 Richard Mlynarik (mly@prep)
3292 3292
3293 * xterm.c (stufflines): 3293 * xterm.c (stufflines):
3294 Initialise signal mask. 3294 Initialize signal mask.
3295 3295
3296 * xterm.h: 3296 * xterm.h:
3297 Add definition of sigmask 3297 Add definition of sigmask
@@ -3346,7 +3346,7 @@
3346 New function. 3346 New function.
3347 3347
3348 * window.c (Fset_window_hscroll): 3348 * window.c (Fset_window_hscroll):
3349 Don't inhibit redisplay optimisations if hscroll is same. 3349 Don't inhibit redisplay optimizations if hscroll is same.
3350 3350
3351 * ymakefile: 3351 * ymakefile:
3352 rm ../etc/DOC to avoid make-docfile overwriting any files which 3352 rm ../etc/DOC to avoid make-docfile overwriting any files which
@@ -3358,7 +3358,7 @@
3358 VMS changes from Sasaki 3358 VMS changes from Sasaki
3359 3359
3360 * termcap.c (tgetent): 3360 * termcap.c (tgetent):
3361 Make sure `indirect' initialised. 3361 Make sure `indirect' initialized.
3362 3362
3363 * xfns.c (grey_p and callers): 3363 * xfns.c (grey_p and callers):
3364 New function to compensate for ugly chauvinistic American 3364 New function to compensate for ugly chauvinistic American
@@ -3496,7 +3496,7 @@
3496 core-dump) 3496 core-dump)
3497 3497
3498 Dike out global-minor-modes. This wasn't actually being used by 3498 Dike out global-minor-modes. This wasn't actually being used by
3499 anything (due to a bug) and wasn't even being initialised! 3499 anything (due to a bug) and wasn't even being initialized!
3500 minor-mode-alist does what this thought it was doing. 3500 minor-mode-alist does what this thought it was doing.
3501 3501
35021986-10-11 Richard Mlynarik (mly@prep) 35021986-10-11 Richard Mlynarik (mly@prep)
diff --git a/src/ChangeLog.3 b/src/ChangeLog.3
index cdfe63fc59c..cbf867829c7 100644
--- a/src/ChangeLog.3
+++ b/src/ChangeLog.3
@@ -6089,7 +6089,7 @@
6089 shrink below the minimum, this code would only try to delete it if 6089 shrink below the minimum, this code would only try to delete it if
6090 it had a parent. Well, even if the window doesn't have a parent, 6090 it had a parent. Well, even if the window doesn't have a parent,
6091 you want Fdelete_window to signal an error, since you're trying to 6091 you want Fdelete_window to signal an error, since you're trying to
6092 resize one of the undeleteable windows into nothingness. So call 6092 resize one of the undeletable windows into nothingness. So call
6093 Fdelete_window even if the window doesn't have a parent. 6093 Fdelete_window even if the window doesn't have a parent.
6094 6094
6095 * window.c (MINSIZE): Add kludge so that the minibuffer is always 6095 * window.c (MINSIZE): Add kludge so that the minibuffer is always
@@ -9010,7 +9010,7 @@
9010 * keyboard.c (cmd_error): If an error occurs before somebody has 9010 * keyboard.c (cmd_error): If an error occurs before somebody has
9011 provided a screen to print it on, print it to stderr and exit 9011 provided a screen to print it on, print it to stderr and exit
9012 Emacs. Handle batch-mode errors with the same code. 9012 Emacs. Handle batch-mode errors with the same code.
9013 * lisp.h (Qexternal_debugging_ouput): New extern declaration, for 9013 * lisp.h (Qexternal_debugging_output): New extern declaration, for
9014 use in cmd_error. 9014 use in cmd_error.
9015 9015
9016 * screen.c (Fscreen_pixel_size, Fset_screen_position): Doc fix. 9016 * screen.c (Fscreen_pixel_size, Fset_screen_position): Doc fix.
@@ -13137,7 +13137,7 @@
13137 * print.c: Include dispextern.h. 13137 * print.c: Include dispextern.h.
13138 (printchar, strout): Use message_buf. 13138 (printchar, strout): Use message_buf.
13139 13139
13140 * sysdep.c (get_screen_size): Don't use MscreenWidth, MscreenLenght. 13140 * sysdep.c (get_screen_size): Don't use MscreenWidth, MscreenLength.
13141 * term.c: Likewise. 13141 * term.c: Likewise.
13142 13142
13143 * scroll.c (CalcIDCosts, CalcIDCosts1, CalcLID): These now take a 13143 * scroll.c (CalcIDCosts, CalcIDCosts1, CalcLID): These now take a
@@ -13147,7 +13147,7 @@
13147 (do_scrolling): Use alloca for queue. 13147 (do_scrolling): Use alloca for queue.
13148 13148
13149 * dispnew.c (remake_screen_structures): Allocate message_buf. 13149 * dispnew.c (remake_screen_structures): Allocate message_buf.
13150 Don't use MscreenWidth, MscreenLenght. 13150 Don't use MscreenWidth, MscreenLength.
13151 13151
13152 * xdisp.c: bf_cur replaced with current_buffer. 13152 * xdisp.c: bf_cur replaced with current_buffer.
13153 Calls to SetBfx deleted. 13153 Calls to SetBfx deleted.
diff --git a/src/ChangeLog.4 b/src/ChangeLog.4
index 208d9c2cdb0..88c9e3dbf71 100644
--- a/src/ChangeLog.4
+++ b/src/ChangeLog.4
@@ -3656,7 +3656,7 @@
3656 3656
3657 * m/delta.h (BROKEN_CLOSEDIR): Added because closedir is interruptible. 3657 * m/delta.h (BROKEN_CLOSEDIR): Added because closedir is interruptible.
3658 (HAVE_UNISTD_H): Deleted because configure takes care of it. 3658 (HAVE_UNISTD_H): Deleted because configure takes care of it.
3659 (C_SWITCH_MACHINE): Added optimisation options for gnu cc. 3659 (C_SWITCH_MACHINE): Added optimization options for gnu cc.
3660 3660
36611993-12-17 Mike Long (mike.long@analog.com) 36611993-12-17 Mike Long (mike.long@analog.com)
3662 3662
@@ -5007,7 +5007,7 @@
5007 Change display code to handle the `invisible' text property. 5007 Change display code to handle the `invisible' text property.
5008 * dispnew.c (direct_output_for_insert): Fail if character 5008 * dispnew.c (direct_output_for_insert): Fail if character
5009 just inserted has text properties. 5009 just inserted has text properties.
5010 (direct_ouput_forward_char): Fail if moving near invisible chars. 5010 (direct_output_forward_char): Fail if moving near invisible chars.
5011 * indent.c (compute_motion): Compute correctly for invisible text. 5011 * indent.c (compute_motion): Compute correctly for invisible text.
5012 (vmotion): Take care of invisible newlines. 5012 (vmotion): Take care of invisible newlines.
5013 * intervals.c (set_point): Ignore `invisible' property 5013 * intervals.c (set_point): Ignore `invisible' property
diff --git a/src/ChangeLog.5 b/src/ChangeLog.5
index 1f21e9fb99c..ee79917a34d 100644
--- a/src/ChangeLog.5
+++ b/src/ChangeLog.5
@@ -3463,7 +3463,7 @@
3463 3463
3464 * lisp.h (running_asynch_code): New global flag. 3464 * lisp.h (running_asynch_code): New global flag.
3465 * emacs.c (running_asynch_code): New global flag. 3465 * emacs.c (running_asynch_code): New global flag.
3466 (main): Initialise it. 3466 (main): Initialize it.
3467 * process.c (read_process_output, exec_sentinel): Set and 3467 * process.c (read_process_output, exec_sentinel): Set and
3468 reset the running_asynch_code global flag and restore match data. 3468 reset the running_asynch_code global flag and restore match data.
3469 3469
diff --git a/src/ChangeLog.6 b/src/ChangeLog.6
index 141a570040c..af97d0de7b4 100644
--- a/src/ChangeLog.6
+++ b/src/ChangeLog.6
@@ -1182,7 +1182,7 @@
1182 support in sys_select. 1182 support in sys_select.
1183 1183
1184 (term_ntproc): New function. 1184 (term_ntproc): New function.
1185 (init_ntproc): New function to initialise socket support and make 1185 (init_ntproc): New function to initialize socket support and make
1186 initial std handles non-inheritable. Also ensure stdin, stdout 1186 initial std handles non-inheritable. Also ensure stdin, stdout
1187 and stderr have valid handles so that pipes and sockets can't 1187 and stderr have valid handles so that pipes and sockets can't
1188 inadvertently use fd 0, 1, or 2. 1188 inadvertently use fd 0, 1, or 2.
@@ -1440,7 +1440,7 @@
1440 Correctly detect when default_directory is absolute. 1440 Correctly detect when default_directory is absolute.
1441 Be strict when looking for MSDOS drive specifier; defer calling 1441 Be strict when looking for MSDOS drive specifier; defer calling
1442 getdefdir. Ignore drive specifier if name now has UNC prefix. 1442 getdefdir. Ignore drive specifier if name now has UNC prefix.
1443 Correctly recognise if name is not absolute when trying simple 1443 Correctly recognize if name is not absolute when trying simple
1444 method to expand; return original string if possible. 1444 method to expand; return original string if possible.
1445 Skip dir sep after ~ or ~user. 1445 Skip dir sep after ~ or ~user.
1446 Use getpwnam instead of HOME for ~user on NT. 1446 Use getpwnam instead of HOME for ~user on NT.
diff --git a/src/ChangeLog.7 b/src/ChangeLog.7
index 73d0d45e9c1..fc97acdeb1e 100644
--- a/src/ChangeLog.7
+++ b/src/ChangeLog.7
@@ -5774,7 +5774,7 @@
5774 5774
5775 (w32_initialize): Set input mode. Use w32_msg_worker instead 5775 (w32_initialize): Set input mode. Use w32_msg_worker instead
5776 of windows_msg_worker. Dynamically link proportional scroll bar 5776 of windows_msg_worker. Dynamically link proportional scroll bar
5777 functions and intialize proportional scroll bar variables. 5777 functions and initialize proportional scroll bar variables.
5778 (syms_of_w32term): DEFVAR new variables. 5778 (syms_of_w32term): DEFVAR new variables.
5779 5779
5780 * w32term.h (w32_output): New fields menubar_widget, menubar_active, 5780 * w32term.h (w32_output): New fields menubar_widget, menubar_active,
@@ -10963,7 +10963,7 @@
109631996-08-28 Morten Welinder <terra@diku.dk> 109631996-08-28 Morten Welinder <terra@diku.dk>
10964 10964
10965 * minibuf.c (Vhistory_length, Qhistory_length): New variables. 10965 * minibuf.c (Vhistory_length, Qhistory_length): New variables.
10966 (syms_of_minibuf): Register and initialise these. 10966 (syms_of_minibuf): Register and initialize these.
10967 (read_minibuf): Truncate history list if needed. 10967 (read_minibuf): Truncate history list if needed.
10968 10968
109691996-08-28 Richard Stallman <rms@psilocin.gnu.ai.mit.edu> 109691996-08-28 Richard Stallman <rms@psilocin.gnu.ai.mit.edu>
diff --git a/src/ChangeLog.8 b/src/ChangeLog.8
index 00e4a1f62c8..e21af17657f 100644
--- a/src/ChangeLog.8
+++ b/src/ChangeLog.8
@@ -2723,7 +2723,7 @@
2723 (CURSOR_FACE_ID, MOUSE_FACE_ID): New. 2723 (CURSOR_FACE_ID, MOUSE_FACE_ID): New.
2724 2724
2725 * xfaces.c (Qscroll_bar, Qcursor, Qborder, Qmouse): New. 2725 * xfaces.c (Qscroll_bar, Qcursor, Qborder, Qmouse): New.
2726 (syms_of_xfaces): Intialize new symbols. 2726 (syms_of_xfaces): Initialize new symbols.
2727 2727
2728 * fns.c (Fmakehash): Take one argument, test, make all the 2728 * fns.c (Fmakehash): Take one argument, test, make all the
2729 rest keyword arguments. 2729 rest keyword arguments.
@@ -9227,7 +9227,7 @@
9227 * xdisp.c (store_frame_title_char): New function to store a 9227 * xdisp.c (store_frame_title_char): New function to store a
9228 single character for the frame title with re-allocation of 9228 single character for the frame title with re-allocation of
9229 frame_title_buf. 9229 frame_title_buf.
9230 (init_xdisp): Intialize frame_title_.* variables to null. 9230 (init_xdisp): Initialize frame_title_.* variables to null.
9231 9231
9232 * dispnew.c (quit_error_check): Removed. 9232 * dispnew.c (quit_error_check): Removed.
9233 9233
@@ -12321,7 +12321,7 @@
12321 (enumfont_t): Remove unused head pointer. 12321 (enumfont_t): Remove unused head pointer.
12322 (enum_font_cb2): Dereference elfLogFont. 12322 (enum_font_cb2): Dereference elfLogFont.
12323 (w32_list_bdf_fonts): New function. 12323 (w32_list_bdf_fonts): New function.
12324 (w32_list_fonts): Use one_w32_dispay_info instead of insisting on 12324 (w32_list_fonts): Use one_w32_display_info instead of insisting on
12325 valid frame. Remove MessageBox. Support BDF fonts. 12325 valid frame. Remove MessageBox. Support BDF fonts.
12326 (Fw32_find_bdf_fonts): New function. 12326 (Fw32_find_bdf_fonts): New function.
12327 (syms_of_w32fns): Add Vw32_bdf_filename_alist and 12327 (syms_of_w32fns): Add Vw32_bdf_filename_alist and
@@ -13266,7 +13266,7 @@
13266 13266
13267 * charset.c (Fchar_bytes): Doc fix. 13267 * charset.c (Fchar_bytes): Doc fix.
13268 (char_bytes): Fix returned value to match returned type. 13268 (char_bytes): Fix returned value to match returned type.
13269 (syms_of_charset): Fix type clash in initialisation of 13269 (syms_of_charset): Fix type clash in initialization of
13270 Vauto_fill_chars. 13270 Vauto_fill_chars.
13271 13271
132721998-10-29 Geoff Voelker <voelker@cs.washington.edu> 132721998-10-29 Geoff Voelker <voelker@cs.washington.edu>
@@ -13429,7 +13429,7 @@
13429 `x-list-fonts.c'. 13429 `x-list-fonts.c'.
13430 (w32_get_font_info, w32_query_font, w32_find_ccl_program): New 13430 (w32_get_font_info, w32_query_font, w32_find_ccl_program): New
13431 functions for fontset support - adapted from x_ equivalents. 13431 functions for fontset support - adapted from x_ equivalents.
13432 (syms_of_w32fns): New lisp variables initialised. Function 13432 (syms_of_w32fns): New lisp variables initialized. Function
13433 pointers for fontset.c set up. 13433 pointers for fontset.c set up.
13434 13434
13435 * w32term.c: Include fontset.h. Define codepage macros. 13435 * w32term.c: Include fontset.h. Define codepage macros.
diff --git a/src/ChangeLog.9 b/src/ChangeLog.9
index 9e7bd24f792..6f007992bef 100644
--- a/src/ChangeLog.9
+++ b/src/ChangeLog.9
@@ -5150,7 +5150,7 @@
51502000-11-27 Jason Rumney <jasonr@gnu.org> 51502000-11-27 Jason Rumney <jasonr@gnu.org>
5151 5151
5152 * w32fns.c (w32_load_system_font): Always mark font as double byte 5152 * w32fns.c (w32_load_system_font): Always mark font as double byte
5153 if codepage is unicode. 5153 if codepage is Unicode.
5154 5154
51552000-11-27 Gerd Moellmann <gerd@gnu.org> 51552000-11-27 Gerd Moellmann <gerd@gnu.org>
5156 5156
diff --git a/src/alloc.c b/src/alloc.c
index 5d04bd77872..96d63f53cf9 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -203,9 +203,6 @@ static int malloc_hysteresis;
203 remapping on more recent systems because this is less important 203 remapping on more recent systems because this is less important
204 nowadays than in the days of small memories and timesharing. */ 204 nowadays than in the days of small memories and timesharing. */
205 205
206#ifndef VIRT_ADDR_VARIES
207static
208#endif
209EMACS_INT pure[(PURESIZE + sizeof (EMACS_INT) - 1) / sizeof (EMACS_INT)] = {1,}; 206EMACS_INT pure[(PURESIZE + sizeof (EMACS_INT) - 1) / sizeof (EMACS_INT)] = {1,};
210#define PUREBEG (char *) pure 207#define PUREBEG (char *) pure
211 208
@@ -222,10 +219,7 @@ static ptrdiff_t pure_bytes_used_before_overflow;
222/* Value is non-zero if P points into pure space. */ 219/* Value is non-zero if P points into pure space. */
223 220
224#define PURE_POINTER_P(P) \ 221#define PURE_POINTER_P(P) \
225 (((PNTR_COMPARISON_TYPE) (P) \ 222 ((uintptr_t) (P) - (uintptr_t) purebeg <= pure_size)
226 < (PNTR_COMPARISON_TYPE) ((char *) purebeg + pure_size)) \
227 && ((PNTR_COMPARISON_TYPE) (P) \
228 >= (PNTR_COMPARISON_TYPE) purebeg))
229 223
230/* Index in pure at which next pure Lisp object will be allocated.. */ 224/* Index in pure at which next pure Lisp object will be allocated.. */
231 225
diff --git a/src/bidi.c b/src/bidi.c
index e688637a408..e0337927ec5 100644
--- a/src/bidi.c
+++ b/src/bidi.c
@@ -51,7 +51,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
51 51
52 A note about references to UAX#9 rules: if the reference says 52 A note about references to UAX#9 rules: if the reference says
53 something like "X9/Retaining", it means that you need to refer to 53 something like "X9/Retaining", it means that you need to refer to
54 rule X9 and to its modifications decribed in the "Implementation 54 rule X9 and to its modifications described in the "Implementation
55 Notes" section of UAX#9, under "Retaining Format Codes". */ 55 Notes" section of UAX#9, under "Retaining Format Codes". */
56 56
57#include <config.h> 57#include <config.h>
diff --git a/src/buffer.c b/src/buffer.c
index 90b43d29fc8..a327a1650f1 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -4400,7 +4400,7 @@ static int mmap_fd_1;
4400 4400
4401static int mmap_page_size; 4401static int mmap_page_size;
4402 4402
4403/* 1 means mmap has been intialized. */ 4403/* 1 means mmap has been initialized. */
4404 4404
4405static int mmap_initialized_p; 4405static int mmap_initialized_p;
4406 4406
@@ -4439,7 +4439,7 @@ static int mmap_initialized_p;
4439#define MMAP_ALLOCATED_P(start, end) 1 4439#define MMAP_ALLOCATED_P(start, end) 1
4440#endif 4440#endif
4441 4441
4442/* Perform necessary intializations for the use of mmap. */ 4442/* Perform necessary initializations for the use of mmap. */
4443 4443
4444static void 4444static void
4445mmap_init (void) 4445mmap_init (void)
diff --git a/src/buffer.h b/src/buffer.h
index a6b82abf053..fa65a4b81fd 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -978,7 +978,7 @@ extern int last_per_buffer_idx;
978 variable has an index > 0 associated with it, except when it always 978 variable has an index > 0 associated with it, except when it always
979 has buffer-local values, in which case the index is -1. If this is 979 has buffer-local values, in which case the index is -1. If this is
980 0, this is a bug and means that the slot of VAR in 980 0, this is a bug and means that the slot of VAR in
981 buffer_local_flags wasn't intiialized. */ 981 buffer_local_flags wasn't initialized. */
982 982
983#define PER_BUFFER_VAR_IDX(VAR) \ 983#define PER_BUFFER_VAR_IDX(VAR) \
984 PER_BUFFER_IDX (PER_BUFFER_VAR_OFFSET (VAR)) 984 PER_BUFFER_IDX (PER_BUFFER_VAR_OFFSET (VAR))
diff --git a/src/casetab.c b/src/casetab.c
index 3433b313c03..575a48ed146 100644
--- a/src/casetab.c
+++ b/src/casetab.c
@@ -95,7 +95,7 @@ CANONICALIZE maps each character to a canonical equivalent;
95 any two characters that are related by case-conversion have the same 95 any two characters that are related by case-conversion have the same
96 canonical equivalent character; it may be nil, in which case it is 96 canonical equivalent character; it may be nil, in which case it is
97 deduced from DOWNCASE and UPCASE. 97 deduced from DOWNCASE and UPCASE.
98EQUIVALENCES is a map that cyclicly permutes each equivalence class 98EQUIVALENCES is a map that cyclically permutes each equivalence class
99 (of characters with the same canonical equivalent); it may be nil, 99 (of characters with the same canonical equivalent); it may be nil,
100 in which case it is deduced from CANONICALIZE. */) 100 in which case it is deduced from CANONICALIZE. */)
101 (Lisp_Object table) 101 (Lisp_Object table)
diff --git a/src/ccl.c b/src/ccl.c
index 6366f1acb88..84d7a6a25ff 100644
--- a/src/ccl.c
+++ b/src/ccl.c
@@ -47,7 +47,7 @@ static Lisp_Object Qcode_conversion_map;
47static Lisp_Object Qcode_conversion_map_id; 47static Lisp_Object Qcode_conversion_map_id;
48 48
49/* Symbols of ccl program have this property, a value of the property 49/* Symbols of ccl program have this property, a value of the property
50 is an index for Vccl_protram_table. */ 50 is an index for Vccl_program_table. */
51static Lisp_Object Qccl_program_idx; 51static Lisp_Object Qccl_program_idx;
52 52
53/* Table of registered CCL programs. Each element is a vector of 53/* Table of registered CCL programs. Each element is a vector of
@@ -826,7 +826,7 @@ while (0)
826 : (charset = CHARSET_FROM_ID ((id)), DECODE_CHAR (charset, (code)))) 826 : (charset = CHARSET_FROM_ID ((id)), DECODE_CHAR (charset, (code))))
827 827
828/* Encode character C by some of charsets in CHARSET_LIST. Set ID to 828/* Encode character C by some of charsets in CHARSET_LIST. Set ID to
829 the id of the used charset, ENCODED to the resulf of encoding. 829 the id of the used charset, ENCODED to the result of encoding.
830 Assume that we can use the variable `charset'. */ 830 Assume that we can use the variable `charset'. */
831 831
832#define CCL_ENCODE_CHAR(c, charset_list, id, encoded) \ 832#define CCL_ENCODE_CHAR(c, charset_list, id, encoded) \
diff --git a/src/character.c b/src/character.c
index a21760c8ab2..88b1f11b96b 100644
--- a/src/character.c
+++ b/src/character.c
@@ -669,7 +669,7 @@ str_as_multibyte (unsigned char *str, EMACS_INT len, EMACS_INT nbytes,
669} 669}
670 670
671/* Parse unibyte string at STR of LEN bytes, and return the number of 671/* Parse unibyte string at STR of LEN bytes, and return the number of
672 bytes it may ocupy when converted to multibyte string by 672 bytes it may occupy when converted to multibyte string by
673 `str_to_multibyte'. */ 673 `str_to_multibyte'. */
674 674
675EMACS_INT 675EMACS_INT
diff --git a/src/character.h b/src/character.h
index 09bcf17ab96..5ae6cb8c49c 100644
--- a/src/character.h
+++ b/src/character.h
@@ -596,7 +596,7 @@ sanitize_char_width (EMACS_INT width)
596 ? ASCII_CHAR_WIDTH (c) \ 596 ? ASCII_CHAR_WIDTH (c) \
597 : sanitize_char_width (XINT (CHAR_TABLE_REF (Vchar_width_table, c)))) 597 : sanitize_char_width (XINT (CHAR_TABLE_REF (Vchar_width_table, c))))
598 598
599/* If C is a variation selector, return the index numnber of the 599/* If C is a variation selector, return the index of the
600 variation selector (1..256). Otherwise, return 0. */ 600 variation selector (1..256). Otherwise, return 0. */
601 601
602#define CHAR_VARIATION_SELECTOR_P(c) \ 602#define CHAR_VARIATION_SELECTOR_P(c) \
diff --git a/src/charset.c b/src/charset.c
index 266753f9d05..b6921a762b6 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -2082,7 +2082,7 @@ that case, find the charset from what supported by that coding system. */)
2082DEFUN ("charset-after", Fcharset_after, Scharset_after, 0, 1, 0, 2082DEFUN ("charset-after", Fcharset_after, Scharset_after, 0, 1, 0,
2083 doc: /* 2083 doc: /*
2084Return charset of a character in the current buffer at position POS. 2084Return charset of a character in the current buffer at position POS.
2085If POS is nil, it defauls to the current point. 2085If POS is nil, it defaults to the current point.
2086If POS is out of range, the value is nil. */) 2086If POS is out of range, the value is nil. */)
2087 (Lisp_Object pos) 2087 (Lisp_Object pos)
2088{ 2088{
diff --git a/src/chartab.c b/src/chartab.c
index 724b3076a11..8d903749284 100644
--- a/src/chartab.c
+++ b/src/chartab.c
@@ -747,7 +747,7 @@ equivalent and can be merged. It defaults to `equal'. */)
747 ARG is passed to C_FUNCTION when that is called. 747 ARG is passed to C_FUNCTION when that is called.
748 748
749 It returns the value of last character covered by TABLE (not the 749 It returns the value of last character covered by TABLE (not the
750 value inheritted from the parent), and by side-effect, the car part 750 value inherited from the parent), and by side-effect, the car part
751 of RANGE is updated to the minimum character C where C and all the 751 of RANGE is updated to the minimum character C where C and all the
752 following characters in TABLE have the same value. */ 752 following characters in TABLE have the same value. */
753 753
diff --git a/src/dbusbind.c b/src/dbusbind.c
index 52e08d8ee2a..7984be3564b 100644
--- a/src/dbusbind.c
+++ b/src/dbusbind.c
@@ -184,7 +184,7 @@ static int xd_in_read_queued_messages = 0;
184#endif 184#endif
185 185
186/* This was a macro. On Solaris 2.11 it was said to compile for 186/* This was a macro. On Solaris 2.11 it was said to compile for
187 hours, when optimzation is enabled. So we have transferred it into 187 hours, when optimization is enabled. So we have transferred it into
188 a function. */ 188 a function. */
189/* Determine the DBusType of a given Lisp symbol. OBJECT must be one 189/* Determine the DBusType of a given Lisp symbol. OBJECT must be one
190 of the predefined D-Bus type symbols. */ 190 of the predefined D-Bus type symbols. */
diff --git a/src/dispextern.h b/src/dispextern.h
index 006ceb31a5a..a45c5cc138f 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -2677,11 +2677,11 @@ struct redisplay_interface
2677 void (*flush_display) (struct frame *f); 2677 void (*flush_display) (struct frame *f);
2678 2678
2679 /* Flush the display of frame F if non-NULL. This is called 2679 /* Flush the display of frame F if non-NULL. This is called
2680 during redisplay, and should be NULL on systems which flushes 2680 during redisplay, and should be NULL on systems which flush
2681 automatically before reading input. */ 2681 automatically before reading input. */
2682 void (*flush_display_optional) (struct frame *f); 2682 void (*flush_display_optional) (struct frame *f);
2683 2683
2684 /* Clear the mouse hightlight in window W, if there is any. */ 2684 /* Clear the mouse highlight in window W, if there is any. */
2685 void (*clear_window_mouse_face) (struct window *w); 2685 void (*clear_window_mouse_face) (struct window *w);
2686 2686
2687 /* Set *LEFT and *RIGHT to the left and right overhang of GLYPH on 2687 /* Set *LEFT and *RIGHT to the left and right overhang of GLYPH on
@@ -3154,6 +3154,9 @@ void compute_fringe_widths (struct frame *, int);
3154void w32_init_fringe (struct redisplay_interface *); 3154void w32_init_fringe (struct redisplay_interface *);
3155void w32_reset_fringes (void); 3155void w32_reset_fringes (void);
3156#endif 3156#endif
3157
3158extern unsigned row_hash (struct glyph_row *);
3159
3157/* Defined in image.c */ 3160/* Defined in image.c */
3158 3161
3159#ifdef HAVE_WINDOW_SYSTEM 3162#ifdef HAVE_WINDOW_SYSTEM
diff --git a/src/dispnew.c b/src/dispnew.c
index 700952f6ae3..b920693688c 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -438,18 +438,7 @@ margin_glyphs_to_reserve (struct window *w, int total_glyphs, Lisp_Object margin
438int 438int
439verify_row_hash (struct glyph_row *row) 439verify_row_hash (struct glyph_row *row)
440{ 440{
441 int area, k; 441 return row->hash == row_hash (row);
442 unsigned row_hash = 0;
443
444 for (area = LEFT_MARGIN_AREA; area < LAST_AREA; ++area)
445 for (k = 0; k < row->used[area]; ++k)
446 row_hash = ((((row_hash << 4) + (row_hash >> 24)) & 0x0fffffff)
447 + row->glyphs[area][k].u.val
448 + row->glyphs[area][k].face_id
449 + row->glyphs[area][k].padding_p
450 + (row->glyphs[area][k].type << 2));
451
452 return row_hash == row->hash;
453} 442}
454#endif 443#endif
455 444
@@ -1087,37 +1076,55 @@ swap_glyphs_in_rows (struct glyph_row *a, struct glyph_row *b)
1087 1076
1088#endif /* 0 */ 1077#endif /* 0 */
1089 1078
1090/* Exchange pointers to glyph memory between glyph rows A and B. */ 1079/* Exchange pointers to glyph memory between glyph rows A and B. Also
1080 exchange the used[] array and the hash values of the rows, because
1081 these should all go together for the row's hash value to be
1082 correct. */
1091 1083
1092static inline void 1084static inline void
1093swap_glyph_pointers (struct glyph_row *a, struct glyph_row *b) 1085swap_glyph_pointers (struct glyph_row *a, struct glyph_row *b)
1094{ 1086{
1095 int i; 1087 int i;
1088 unsigned hash_tem = a->hash;
1089
1096 for (i = 0; i < LAST_AREA + 1; ++i) 1090 for (i = 0; i < LAST_AREA + 1; ++i)
1097 { 1091 {
1098 struct glyph *temp = a->glyphs[i]; 1092 struct glyph *temp = a->glyphs[i];
1093 short used_tem = a->used[i];
1094
1099 a->glyphs[i] = b->glyphs[i]; 1095 a->glyphs[i] = b->glyphs[i];
1100 b->glyphs[i] = temp; 1096 b->glyphs[i] = temp;
1097 a->used[i] = b->used[i];
1098 b->used[i] = used_tem;
1101 } 1099 }
1100 a->hash = b->hash;
1101 b->hash = hash_tem;
1102} 1102}
1103 1103
1104 1104
1105/* Copy glyph row structure FROM to glyph row structure TO, except 1105/* Copy glyph row structure FROM to glyph row structure TO, except
1106 that glyph pointers in the structures are left unchanged. */ 1106 that glyph pointers, the `used' counts, and the hash values in the
1107 structures are left unchanged. */
1107 1108
1108static inline void 1109static inline void
1109copy_row_except_pointers (struct glyph_row *to, struct glyph_row *from) 1110copy_row_except_pointers (struct glyph_row *to, struct glyph_row *from)
1110{ 1111{
1111 struct glyph *pointers[1 + LAST_AREA]; 1112 struct glyph *pointers[1 + LAST_AREA];
1113 short used[1 + LAST_AREA];
1114 unsigned hashval;
1112 1115
1113 /* Save glyph pointers of TO. */ 1116 /* Save glyph pointers of TO. */
1114 memcpy (pointers, to->glyphs, sizeof to->glyphs); 1117 memcpy (pointers, to->glyphs, sizeof to->glyphs);
1118 memcpy (used, to->used, sizeof to->used);
1119 hashval = to->hash;
1115 1120
1116 /* Do a structure assignment. */ 1121 /* Do a structure assignment. */
1117 *to = *from; 1122 *to = *from;
1118 1123
1119 /* Restore original pointers of TO. */ 1124 /* Restore original pointers of TO. */
1120 memcpy (to->glyphs, pointers, sizeof to->glyphs); 1125 memcpy (to->glyphs, pointers, sizeof to->glyphs);
1126 memcpy (to->used, used, sizeof to->used);
1127 to->hash = hashval;
1121} 1128}
1122 1129
1123 1130
@@ -4240,6 +4247,7 @@ add_row_entry (struct glyph_row *row)
4240 ptrdiff_t i = row->hash % row_table_size; 4247 ptrdiff_t i = row->hash % row_table_size;
4241 4248
4242 entry = row_table[i]; 4249 entry = row_table[i];
4250 xassert (entry || verify_row_hash (row));
4243 while (entry && !row_equal_p (entry->row, row, 1)) 4251 while (entry && !row_equal_p (entry->row, row, 1))
4244 entry = entry->next; 4252 entry = entry->next;
4245 4253
diff --git a/src/fileio.c b/src/fileio.c
index 44a85ab1977..7e75e6285f0 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -62,7 +62,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
62 62
63#ifdef DOS_NT 63#ifdef DOS_NT
64/* On Windows, drive letters must be alphabetic - on DOS, the Netware 64/* On Windows, drive letters must be alphabetic - on DOS, the Netware
65 redirector allows the six letters between 'Z' and 'a' as well. */ 65 redirector allows the six letters between 'Z' and 'a' as well. */
66#ifdef MSDOS 66#ifdef MSDOS
67#define IS_DRIVE(x) ((x) >= 'A' && (x) <= 'z') 67#define IS_DRIVE(x) ((x) >= 'A' && (x) <= 'z')
68#endif 68#endif
@@ -70,7 +70,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
70#define IS_DRIVE(x) isalpha ((unsigned char) (x)) 70#define IS_DRIVE(x) isalpha ((unsigned char) (x))
71#endif 71#endif
72/* Need to lower-case the drive letter, or else expanded 72/* Need to lower-case the drive letter, or else expanded
73 filenames will sometimes compare inequal, because 73 filenames will sometimes compare unequal, because
74 `expand-file-name' doesn't always down-case the drive letter. */ 74 `expand-file-name' doesn't always down-case the drive letter. */
75#define DRIVE_LETTER(x) (tolower ((unsigned char) (x))) 75#define DRIVE_LETTER(x) (tolower ((unsigned char) (x)))
76#endif 76#endif
@@ -338,7 +338,7 @@ Given a Unix syntax file name, returns a string ending in slash. */)
338 338
339 while (p != beg && !IS_DIRECTORY_SEP (p[-1]) 339 while (p != beg && !IS_DIRECTORY_SEP (p[-1])
340#ifdef DOS_NT 340#ifdef DOS_NT
341 /* only recognise drive specifier at the beginning */ 341 /* only recognize drive specifier at the beginning */
342 && !(p[-1] == ':' 342 && !(p[-1] == ':'
343 /* handle the "/:d:foo" and "/:foo" cases correctly */ 343 /* handle the "/:d:foo" and "/:foo" cases correctly */
344 && ((p == beg + 2 && !IS_DIRECTORY_SEP (*beg)) 344 && ((p == beg + 2 && !IS_DIRECTORY_SEP (*beg))
@@ -401,7 +401,7 @@ or the entire name if it contains no slash. */)
401 401
402 while (p != beg && !IS_DIRECTORY_SEP (p[-1]) 402 while (p != beg && !IS_DIRECTORY_SEP (p[-1])
403#ifdef DOS_NT 403#ifdef DOS_NT
404 /* only recognise drive specifier at beginning */ 404 /* only recognize drive specifier at beginning */
405 && !(p[-1] == ':' 405 && !(p[-1] == ':'
406 /* handle the "/:d:foo" case correctly */ 406 /* handle the "/:d:foo" case correctly */
407 && (p == beg + 2 || (p == beg + 4 && IS_DIRECTORY_SEP (*beg)))) 407 && (p == beg + 2 || (p == beg + 4 && IS_DIRECTORY_SEP (*beg))))
@@ -3686,6 +3686,7 @@ variable `last-coding-system-used' to the coding system actually used. */)
3686 int this_count = SPECPDL_INDEX (); 3686 int this_count = SPECPDL_INDEX ();
3687 int multibyte = ! NILP (BVAR (current_buffer, enable_multibyte_characters)); 3687 int multibyte = ! NILP (BVAR (current_buffer, enable_multibyte_characters));
3688 Lisp_Object conversion_buffer; 3688 Lisp_Object conversion_buffer;
3689 struct gcpro gcpro1;
3689 3690
3690 conversion_buffer = code_conversion_save (1, multibyte); 3691 conversion_buffer = code_conversion_save (1, multibyte);
3691 3692
@@ -3706,7 +3707,7 @@ variable `last-coding-system-used' to the coding system actually used. */)
3706 { 3707 {
3707 /* We read one bunch by one (READ_BUF_SIZE bytes) to allow 3708 /* We read one bunch by one (READ_BUF_SIZE bytes) to allow
3708 quitting while reading a huge while. */ 3709 quitting while reading a huge while. */
3709 /* try is reserved in some compilers (Microsoft C) */ 3710 /* `try'' is reserved in some compilers (Microsoft C). */
3710 EMACS_INT trytry = min (total - how_much, 3711 EMACS_INT trytry = min (total - how_much,
3711 READ_BUF_SIZE - unprocessed); 3712 READ_BUF_SIZE - unprocessed);
3712 3713
diff --git a/src/fns.c b/src/fns.c
index 392f447a6d8..04b51d10d9b 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -3252,7 +3252,7 @@ DEFUN ("base64-decode-string", Fbase64_decode_string, Sbase64_decode_string,
3252 return decoded_string; 3252 return decoded_string;
3253} 3253}
3254 3254
3255/* Base64-decode the data at FROM of LENGHT bytes into TO. If 3255/* Base64-decode the data at FROM of LENGTH bytes into TO. If
3256 MULTIBYTE is nonzero, the decoded result should be in multibyte 3256 MULTIBYTE is nonzero, the decoded result should be in multibyte
3257 form. If NCHARS_RETRUN is not NULL, store the number of produced 3257 form. If NCHARS_RETRUN is not NULL, store the number of produced
3258 characters in *NCHARS_RETURN. */ 3258 characters in *NCHARS_RETURN. */
diff --git a/src/fontset.c b/src/fontset.c
index 34b2131832f..9697f62ea72 100644
--- a/src/fontset.c
+++ b/src/fontset.c
@@ -905,7 +905,7 @@ face_suitable_for_char_p (struct face *face, int c)
905 905
906 906
907/* Return ID of face suitable for displaying character C on frame F. 907/* Return ID of face suitable for displaying character C on frame F.
908 FACE must be reazlied for ASCII characters in advance. Called from 908 FACE must be realized for ASCII characters in advance. Called from
909 the macro FACE_FOR_CHAR. */ 909 the macro FACE_FOR_CHAR. */
910 910
911int 911int
@@ -1346,7 +1346,7 @@ accumulate_script_ranges (Lisp_Object arg, Lisp_Object range, Lisp_Object val)
1346 1346
1347 In FONTSET, set FONT_DEF in a fashion specified by ADD for 1347 In FONTSET, set FONT_DEF in a fashion specified by ADD for
1348 characters in RANGE and ranges in SCRIPT_RANGE_LIST before RANGE. 1348 characters in RANGE and ranges in SCRIPT_RANGE_LIST before RANGE.
1349 The consumed ranges are poped up from SCRIPT_RANGE_LIST, and the 1349 The consumed ranges are popped up from SCRIPT_RANGE_LIST, and the
1350 new SCRIPT_RANGE_LIST is stored in ARG. 1350 new SCRIPT_RANGE_LIST is stored in ARG.
1351 1351
1352 If ASCII is nil, don't set FONT_DEF for ASCII characters. It is 1352 If ASCII is nil, don't set FONT_DEF for ASCII characters. It is
diff --git a/src/frame.c b/src/frame.c
index c14f4db91da..039ed6543cb 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -374,7 +374,7 @@ make_frame (int mini_p)
374 374
375 /* Use set_window_buffer, not Fset_window_buffer, and don't let 375 /* Use set_window_buffer, not Fset_window_buffer, and don't let
376 hooks be run by it. The reason is that the whole frame/window 376 hooks be run by it. The reason is that the whole frame/window
377 arrangement is not yet fully intialized at this point. Windows 377 arrangement is not yet fully initialized at this point. Windows
378 don't have the right size, glyph matrices aren't initialized 378 don't have the right size, glyph matrices aren't initialized
379 etc. Running Lisp functions at this point surely ends in a 379 etc. Running Lisp functions at this point surely ends in a
380 SEGV. */ 380 SEGV. */
@@ -1359,6 +1359,13 @@ delete_frame (Lisp_Object frame, Lisp_Object force)
1359 /* If needed, delete the terminal that this frame was on. 1359 /* If needed, delete the terminal that this frame was on.
1360 (This must be done after the frame is killed.) */ 1360 (This must be done after the frame is killed.) */
1361 terminal->reference_count--; 1361 terminal->reference_count--;
1362#ifdef USE_GTK
1363 /* FIXME: Deleting the terminal crashes emacs because of a GTK
1364 bug.
1365 http://lists.gnu.org/archive/html/emacs-devel/2011-10/msg00363.html */
1366 if (terminal->reference_count == 0 && terminal->type == output_x_window)
1367 terminal->reference_count = 1;
1368#endif /* USE_GTK */
1362 if (terminal->reference_count == 0) 1369 if (terminal->reference_count == 0)
1363 { 1370 {
1364 Lisp_Object tmp; 1371 Lisp_Object tmp;
@@ -1705,7 +1712,7 @@ If omitted, FRAME defaults to the currently selected frame. */)
1705} 1712}
1706 1713
1707/* Update the display_time slot of the buffers shown in WINDOW 1714/* Update the display_time slot of the buffers shown in WINDOW
1708 and all its descendents. */ 1715 and all its descendants. */
1709 1716
1710static void 1717static void
1711make_frame_visible_1 (Lisp_Object window) 1718make_frame_visible_1 (Lisp_Object window)
diff --git a/src/ftfont.c b/src/ftfont.c
index 7858a31be21..5c540f9bf82 100644
--- a/src/ftfont.c
+++ b/src/ftfont.c
@@ -272,7 +272,7 @@ ftfont_pattern_entity (FcPattern *p, Lisp_Object extra)
272 } 272 }
273 else 273 else
274 { 274 {
275 /* As this font is not scalable, parhaps this is a BDF or PCF 275 /* As this font is not scalable, perhaps this is a BDF or PCF
276 font. */ 276 font. */
277 FT_Face ft_face; 277 FT_Face ft_face;
278 278
@@ -730,7 +730,7 @@ ftfont_spec_pattern (Lisp_Object spec, char *otlayout, struct OpenTypeSpec **ots
730 730
731 if ((n = FONT_SLANT_NUMERIC (spec)) >= 0 731 if ((n = FONT_SLANT_NUMERIC (spec)) >= 0
732 && n < 100) 732 && n < 100)
733 /* Fontconfig doesn't support reverse-italic/obligue. */ 733 /* Fontconfig doesn't support reverse-italic/oblique. */
734 return NULL; 734 return NULL;
735 735
736 if (INTEGERP (AREF (spec, FONT_DPI_INDEX))) 736 if (INTEGERP (AREF (spec, FONT_DPI_INDEX)))
diff --git a/src/ftxfont.c b/src/ftxfont.c
index bbba3ca8163..608cfd8d44d 100644
--- a/src/ftxfont.c
+++ b/src/ftxfont.c
@@ -55,7 +55,7 @@ struct ftxfont_frame_data
55{ 55{
56 /* Background and foreground colors. */ 56 /* Background and foreground colors. */
57 XColor colors[2]; 57 XColor colors[2];
58 /* GCs interporationg the above colors. gcs[0] is for a color 58 /* GCs interpolating the above colors. gcs[0] is for a color
59 closest to BACKGROUND, and gcs[5] is for a color closest to 59 closest to BACKGROUND, and gcs[5] is for a color closest to
60 FOREGROUND. */ 60 FOREGROUND. */
61 GC gcs[6]; 61 GC gcs[6];
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 0b7fd41f5f6..7e6f5c3164d 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -127,7 +127,7 @@ xg_set_screen (GtkWidget *w, FRAME_PTR f)
127 127
128 Returns non-zero if display could be opened, zero if display could not 128 Returns non-zero if display could be opened, zero if display could not
129 be opened, and less than zero if the GTK version doesn't support 129 be opened, and less than zero if the GTK version doesn't support
130 multipe displays. */ 130 multiple displays. */
131 131
132void 132void
133xg_display_open (char *display_name, Display **dpy) 133xg_display_open (char *display_name, Display **dpy)
@@ -348,7 +348,7 @@ file_for_image (Lisp_Object image)
348 348
349/* For the image defined in IMG, make and return a GtkImage. For displays with 349/* For the image defined in IMG, make and return a GtkImage. For displays with
350 8 planes or less we must make a GdkPixbuf and apply the mask manually. 350 8 planes or less we must make a GdkPixbuf and apply the mask manually.
351 Otherwise the highlightning and dimming the tool bar code in GTK does 351 Otherwise the highlighting and dimming the tool bar code in GTK does
352 will look bad. For display with more than 8 planes we just use the 352 will look bad. For display with more than 8 planes we just use the
353 pixmap and mask directly. For monochrome displays, GTK doesn't seem 353 pixmap and mask directly. For monochrome displays, GTK doesn't seem
354 able to use external pixmaps, it looks bad whatever we do. 354 able to use external pixmaps, it looks bad whatever we do.
@@ -2363,7 +2363,7 @@ xg_create_one_menuitem (widget_value *item,
2363 HIGHLIGHT_CB is the callback to call when entering/leaving menu items. 2363 HIGHLIGHT_CB is the callback to call when entering/leaving menu items.
2364 POP_UP_P is non-zero if we shall create a popup menu. 2364 POP_UP_P is non-zero if we shall create a popup menu.
2365 MENU_BAR_P is non-zero if we shall create a menu bar. 2365 MENU_BAR_P is non-zero if we shall create a menu bar.
2366 ADD_TEAROFF_P is non-zero if we shall add a teroff menu item. Ignored 2366 ADD_TEAROFF_P is non-zero if we shall add a tearoff menu item. Ignored
2367 if MENU_BAR_P is non-zero. 2367 if MENU_BAR_P is non-zero.
2368 TOPMENU is the topmost GtkWidget that others shall be placed under. 2368 TOPMENU is the topmost GtkWidget that others shall be placed under.
2369 It may be NULL, in that case we create the appropriate widget 2369 It may be NULL, in that case we create the appropriate widget
@@ -4262,7 +4262,7 @@ xg_make_tool_item (FRAME_PTR f,
4262#endif 4262#endif
4263 gtk_tool_item_set_homogeneous (ti, FALSE); 4263 gtk_tool_item_set_homogeneous (ti, FALSE);
4264 4264
4265 /* Callback to save modifyer mask (Shift/Control, etc). GTK makes 4265 /* Callback to save modifier mask (Shift/Control, etc). GTK makes
4266 no distinction based on modifiers in the activate callback, 4266 no distinction based on modifiers in the activate callback,
4267 so we have to do it ourselves. */ 4267 so we have to do it ourselves. */
4268 g_signal_connect (wb, "button-release-event", 4268 g_signal_connect (wb, "button-release-event",
diff --git a/src/image.c b/src/image.c
index e80f2b72102..8b61c7eefbc 100644
--- a/src/image.c
+++ b/src/image.c
@@ -7754,7 +7754,7 @@ imagemagick_load_image (struct frame *f, struct image *img,
7754 } 7754 }
7755 7755
7756 /* Finally we are done manipulating the image. Figure out the 7756 /* Finally we are done manipulating the image. Figure out the
7757 resulting width/height and transfer ownerwship to Emacs. */ 7757 resulting width/height and transfer ownership to Emacs. */
7758 height = MagickGetImageHeight (image_wand); 7758 height = MagickGetImageHeight (image_wand);
7759 width = MagickGetImageWidth (image_wand); 7759 width = MagickGetImageWidth (image_wand);
7760 7760
@@ -7786,7 +7786,7 @@ imagemagick_load_image (struct frame *f, struct image *img,
7786 goto imagemagick_error; 7786 goto imagemagick_error;
7787 } 7787 }
7788 7788
7789 /* Copy imagegmagick image to x with primitive yet robust pixel 7789 /* Copy imagemagick image to x with primitive yet robust pixel
7790 pusher loop. This has been tested a lot with many different 7790 pusher loop. This has been tested a lot with many different
7791 images. */ 7791 images. */
7792 7792
diff --git a/src/insdel.c b/src/insdel.c
index 01e5c57b2b0..e39a362eac7 100644
--- a/src/insdel.c
+++ b/src/insdel.c
@@ -1316,7 +1316,7 @@ replace_range (EMACS_INT from, EMACS_INT to, Lisp_Object new,
1316 1316
1317 UNGCPRO; 1317 UNGCPRO;
1318 1318
1319 /* Make args be valid */ 1319 /* Make args be valid. */
1320 if (from < BEGV) 1320 if (from < BEGV)
1321 from = BEGV; 1321 from = BEGV;
1322 if (to > ZV) 1322 if (to > ZV)
diff --git a/src/intervals.c b/src/intervals.c
index a78c7f07f6c..05b7175ac3f 100644
--- a/src/intervals.c
+++ b/src/intervals.c
@@ -1317,7 +1317,7 @@ interval_deletion_adjustment (register INTERVAL tree, register EMACS_INT from,
1317 if (NULL_INTERVAL_P (tree)) 1317 if (NULL_INTERVAL_P (tree))
1318 return 0; 1318 return 0;
1319 1319
1320 /* Left branch */ 1320 /* Left branch. */
1321 if (relative_position < LEFT_TOTAL_LENGTH (tree)) 1321 if (relative_position < LEFT_TOTAL_LENGTH (tree))
1322 { 1322 {
1323 EMACS_INT subtract = interval_deletion_adjustment (tree->left, 1323 EMACS_INT subtract = interval_deletion_adjustment (tree->left,
@@ -1327,7 +1327,7 @@ interval_deletion_adjustment (register INTERVAL tree, register EMACS_INT from,
1327 CHECK_TOTAL_LENGTH (tree); 1327 CHECK_TOTAL_LENGTH (tree);
1328 return subtract; 1328 return subtract;
1329 } 1329 }
1330 /* Right branch */ 1330 /* Right branch. */
1331 else if (relative_position >= (TOTAL_LENGTH (tree) 1331 else if (relative_position >= (TOTAL_LENGTH (tree)
1332 - RIGHT_TOTAL_LENGTH (tree))) 1332 - RIGHT_TOTAL_LENGTH (tree)))
1333 { 1333 {
@@ -1699,54 +1699,37 @@ graft_intervals_into_buffer (INTERVAL source, EMACS_INT position,
1699 Qnil, buf, 0); 1699 Qnil, buf, 0);
1700 } 1700 }
1701 if (! NULL_INTERVAL_P (BUF_INTERVALS (buffer))) 1701 if (! NULL_INTERVAL_P (BUF_INTERVALS (buffer)))
1702 /* Shouldn't be necessary. -stef */ 1702 /* Shouldn't be necessary. --Stef */
1703 BUF_INTERVALS (buffer) = balance_an_interval (BUF_INTERVALS (buffer)); 1703 BUF_INTERVALS (buffer) = balance_an_interval (BUF_INTERVALS (buffer));
1704 return; 1704 return;
1705 } 1705 }
1706 1706
1707 if (NULL_INTERVAL_P (tree)) 1707 eassert (length == TOTAL_LENGTH (source));
1708 { 1708
1709 /* The inserted text constitutes the whole buffer, so 1709 if ((BUF_Z (buffer) - BUF_BEG (buffer)) == length)
1710 { /* The inserted text constitutes the whole buffer, so
1710 simply copy over the interval structure. */ 1711 simply copy over the interval structure. */
1711 if ((BUF_Z (buffer) - BUF_BEG (buffer)) == TOTAL_LENGTH (source))
1712 {
1713 Lisp_Object buf; 1712 Lisp_Object buf;
1714 XSETBUFFER (buf, buffer); 1713 XSETBUFFER (buf, buffer);
1715 BUF_INTERVALS (buffer) = reproduce_tree_obj (source, buf); 1714 BUF_INTERVALS (buffer) = reproduce_tree_obj (source, buf);
1716 BUF_INTERVALS (buffer)->position = BEG; 1715 BUF_INTERVALS (buffer)->position = BUF_BEG (buffer);
1717 BUF_INTERVALS (buffer)->up_obj = 1; 1716 eassert (BUF_INTERVALS (buffer)->up_obj == 1);
1718
1719 return; 1717 return;
1720 } 1718 }
1721 1719 else if (NULL_INTERVAL_P (tree))
1722 /* Create an interval tree in which to place a copy 1720 { /* Create an interval tree in which to place a copy
1723 of the intervals of the inserted string. */ 1721 of the intervals of the inserted string. */
1724 {
1725 Lisp_Object buf; 1722 Lisp_Object buf;
1726 XSETBUFFER (buf, buffer); 1723 XSETBUFFER (buf, buffer);
1727 tree = create_root_interval (buf); 1724 tree = create_root_interval (buf);
1728 } 1725 }
1729 }
1730 else if (TOTAL_LENGTH (tree) == TOTAL_LENGTH (source))
1731 /* If the buffer contains only the new string, but
1732 there was already some interval tree there, then it may be
1733 some zero length intervals. Eventually, do something clever
1734 about inserting properly. For now, just waste the old intervals. */
1735 {
1736 BUF_INTERVALS (buffer) = reproduce_tree (source, INTERVAL_PARENT (tree));
1737 BUF_INTERVALS (buffer)->position = BEG;
1738 BUF_INTERVALS (buffer)->up_obj = 1;
1739 /* Explicitly free the old tree here. */
1740
1741 return;
1742 }
1743 /* Paranoia -- the text has already been added, so this buffer 1726 /* Paranoia -- the text has already been added, so this buffer
1744 should be of non-zero length. */ 1727 should be of non-zero length. */
1745 else if (TOTAL_LENGTH (tree) == 0) 1728 else if (TOTAL_LENGTH (tree) == 0)
1746 abort (); 1729 abort ();
1747 1730
1748 this = under = find_interval (tree, position); 1731 this = under = find_interval (tree, position);
1749 if (NULL_INTERVAL_P (under)) /* Paranoia */ 1732 if (NULL_INTERVAL_P (under)) /* Paranoia. */
1750 abort (); 1733 abort ();
1751 over = find_interval (source, interval_start_pos (source)); 1734 over = find_interval (source, interval_start_pos (source));
1752 1735
@@ -1917,7 +1900,7 @@ set_point (EMACS_INT charpos)
1917 current buffer, and the invisible property has a `stickiness' such that 1900 current buffer, and the invisible property has a `stickiness' such that
1918 inserting a character at position POS would inherit the property it, 1901 inserting a character at position POS would inherit the property it,
1919 return POS + ADJ, otherwise return POS. If TEST_INTANG is non-zero, 1902 return POS + ADJ, otherwise return POS. If TEST_INTANG is non-zero,
1920 then intangibility is required as well as invisibleness. 1903 then intangibility is required as well as invisibility.
1921 1904
1922 TEST_OFFS should be either 0 or -1, and ADJ should be either 1 or -1. 1905 TEST_OFFS should be either 0 or -1, and ADJ should be either 1 or -1.
1923 1906
diff --git a/src/intervals.h b/src/intervals.h
index 720598fe7a6..977f3d965a4 100644
--- a/src/intervals.h
+++ b/src/intervals.h
@@ -64,71 +64,71 @@ struct interval
64 Lisp_Object plist; 64 Lisp_Object plist;
65}; 65};
66 66
67/* These are macros for dealing with the interval tree. */ 67/* These are macros for dealing with the interval tree. */
68 68
69/* Size of the structure used to represent an interval */ 69/* Size of the structure used to represent an interval. */
70#define INTERVAL_SIZE (sizeof (struct interval)) 70#define INTERVAL_SIZE (sizeof (struct interval))
71 71
72/* Size of a pointer to an interval structure */ 72/* Size of a pointer to an interval structure. */
73#define INTERVAL_PTR_SIZE (sizeof (struct interval *)) 73#define INTERVAL_PTR_SIZE (sizeof (struct interval *))
74 74
75#define NULL_INTERVAL_P(i) ((i) == NULL_INTERVAL) 75#define NULL_INTERVAL_P(i) ((i) == NULL_INTERVAL)
76 76
77/* True if this interval has no right child. */ 77/* True if this interval has no right child. */
78#define NULL_RIGHT_CHILD(i) ((i)->right == NULL_INTERVAL) 78#define NULL_RIGHT_CHILD(i) ((i)->right == NULL_INTERVAL)
79 79
80/* True if this interval has no left child. */ 80/* True if this interval has no left child. */
81#define NULL_LEFT_CHILD(i) ((i)->left == NULL_INTERVAL) 81#define NULL_LEFT_CHILD(i) ((i)->left == NULL_INTERVAL)
82 82
83/* True if this interval has no parent. */ 83/* True if this interval has no parent. */
84#define NULL_PARENT(i) ((i)->up_obj || (i)->up.interval == 0) 84#define NULL_PARENT(i) ((i)->up_obj || (i)->up.interval == 0)
85 85
86/* True if this interval is the left child of some other interval. */ 86/* True if this interval is the left child of some other interval. */
87#define AM_LEFT_CHILD(i) (! NULL_PARENT (i) \ 87#define AM_LEFT_CHILD(i) (! NULL_PARENT (i) \
88 && INTERVAL_PARENT (i)->left == (i)) 88 && INTERVAL_PARENT (i)->left == (i))
89 89
90/* True if this interval is the right child of some other interval. */ 90/* True if this interval is the right child of some other interval. */
91#define AM_RIGHT_CHILD(i) (! NULL_PARENT (i) \ 91#define AM_RIGHT_CHILD(i) (! NULL_PARENT (i) \
92 && INTERVAL_PARENT (i)->right == (i)) 92 && INTERVAL_PARENT (i)->right == (i))
93 93
94/* True if this interval has no children. */ 94/* True if this interval has no children. */
95#define LEAF_INTERVAL_P(i) ((i)->left == NULL_INTERVAL \ 95#define LEAF_INTERVAL_P(i) ((i)->left == NULL_INTERVAL \
96 && (i)->right == NULL_INTERVAL) 96 && (i)->right == NULL_INTERVAL)
97 97
98/* True if this interval has no parent and is therefore the root. */ 98/* True if this interval has no parent and is therefore the root. */
99#define ROOT_INTERVAL_P(i) (NULL_PARENT (i)) 99#define ROOT_INTERVAL_P(i) (NULL_PARENT (i))
100 100
101/* True if this interval is the only interval in the interval tree. */ 101/* True if this interval is the only interval in the interval tree. */
102#define ONLY_INTERVAL_P(i) (ROOT_INTERVAL_P ((i)) && LEAF_INTERVAL_P ((i))) 102#define ONLY_INTERVAL_P(i) (ROOT_INTERVAL_P ((i)) && LEAF_INTERVAL_P ((i)))
103 103
104/* True if this interval has both left and right children. */ 104/* True if this interval has both left and right children. */
105#define BOTH_KIDS_P(i) ((i)->left != NULL_INTERVAL \ 105#define BOTH_KIDS_P(i) ((i)->left != NULL_INTERVAL \
106 && (i)->right != NULL_INTERVAL) 106 && (i)->right != NULL_INTERVAL)
107 107
108/* The total size of all text represented by this interval and all its 108/* The total size of all text represented by this interval and all its
109 children in the tree. This is zero if the interval is null. */ 109 children in the tree. This is zero if the interval is null. */
110#define TOTAL_LENGTH(i) ((i) == NULL_INTERVAL ? 0 : (i)->total_length) 110#define TOTAL_LENGTH(i) ((i) == NULL_INTERVAL ? 0 : (i)->total_length)
111 111
112/* The size of text represented by this interval alone. */ 112/* The size of text represented by this interval alone. */
113#define LENGTH(i) ((i) == NULL_INTERVAL ? 0 : (TOTAL_LENGTH ((i)) \ 113#define LENGTH(i) ((i) == NULL_INTERVAL ? 0 : (TOTAL_LENGTH ((i)) \
114 - TOTAL_LENGTH ((i)->right) \ 114 - TOTAL_LENGTH ((i)->right) \
115 - TOTAL_LENGTH ((i)->left))) 115 - TOTAL_LENGTH ((i)->left)))
116 116
117/* The position of the character just past the end of I. Note that 117/* The position of the character just past the end of I. Note that
118 the position cache i->position must be valid for this to work. */ 118 the position cache i->position must be valid for this to work. */
119#define INTERVAL_LAST_POS(i) ((i)->position + LENGTH ((i))) 119#define INTERVAL_LAST_POS(i) ((i)->position + LENGTH ((i)))
120 120
121/* The total size of the left subtree of this interval. */ 121/* The total size of the left subtree of this interval. */
122#define LEFT_TOTAL_LENGTH(i) ((i)->left ? (i)->left->total_length : 0) 122#define LEFT_TOTAL_LENGTH(i) ((i)->left ? (i)->left->total_length : 0)
123 123
124/* The total size of the right subtree of this interval. */ 124/* The total size of the right subtree of this interval. */
125#define RIGHT_TOTAL_LENGTH(i) ((i)->right ? (i)->right->total_length : 0) 125#define RIGHT_TOTAL_LENGTH(i) ((i)->right ? (i)->right->total_length : 0)
126 126
127 127
128/* These macros are for dealing with the interval properties. */ 128/* These macros are for dealing with the interval properties. */
129 129
130/* True if this is a default interval, which is the same as being null 130/* True if this is a default interval, which is the same as being null
131 or having no properties. */ 131 or having no properties. */
132#define DEFAULT_INTERVAL_P(i) (NULL_INTERVAL_P (i) || EQ ((i)->plist, Qnil)) 132#define DEFAULT_INTERVAL_P(i) (NULL_INTERVAL_P (i) || EQ ((i)->plist, Qnil))
133 133
134/* Test what type of parent we have. Three possibilities: another 134/* Test what type of parent we have. Three possibilities: another
@@ -169,7 +169,7 @@ struct interval
169 } \ 169 } \
170 while (0) 170 while (0)
171 171
172/* Reset this interval to its vanilla, or no-property state. */ 172/* Reset this interval to its vanilla, or no-property state. */
173#define RESET_INTERVAL(i) \ 173#define RESET_INTERVAL(i) \
174{ \ 174{ \
175 (i)->total_length = (i)->position = 0; \ 175 (i)->total_length = (i)->position = 0; \
@@ -181,7 +181,7 @@ struct interval
181 (i)->plist = Qnil; \ 181 (i)->plist = Qnil; \
182} 182}
183 183
184/* Copy the cached property values of interval FROM to interval TO. */ 184/* Copy the cached property values of interval FROM to interval TO. */
185#define COPY_INTERVAL_CACHE(from,to) \ 185#define COPY_INTERVAL_CACHE(from,to) \
186{ \ 186{ \
187 (to)->write_protect = (from)->write_protect; \ 187 (to)->write_protect = (from)->write_protect; \
@@ -190,7 +190,7 @@ struct interval
190 (to)->rear_sticky = (from)->rear_sticky; \ 190 (to)->rear_sticky = (from)->rear_sticky; \
191} 191}
192 192
193/* Copy only the set bits of FROM's cache. */ 193/* Copy only the set bits of FROM's cache. */
194#define MERGE_INTERVAL_CACHE(from,to) \ 194#define MERGE_INTERVAL_CACHE(from,to) \
195{ \ 195{ \
196 if ((from)->write_protect) (to)->write_protect = 1; \ 196 if ((from)->write_protect) (to)->write_protect = 1; \
@@ -201,18 +201,18 @@ struct interval
201 201
202/* Macro determining whether the properties of an interval being 202/* Macro determining whether the properties of an interval being
203 inserted should be merged with the properties of the text where 203 inserted should be merged with the properties of the text where
204 they are being inserted. */ 204 they are being inserted. */
205#define MERGE_INSERTIONS(i) 1 205#define MERGE_INSERTIONS(i) 1
206 206
207/* Macro determining if an invisible interval should be displayed 207/* Macro determining if an invisible interval should be displayed
208 as a special glyph, or not at all. */ 208 as a special glyph, or not at all. */
209#define DISPLAY_INVISIBLE_GLYPH(i) 0 209#define DISPLAY_INVISIBLE_GLYPH(i) 0
210 210
211/* Is this interval visible? Replace later with cache access */ 211/* Is this interval visible? Replace later with cache access. */
212#define INTERVAL_VISIBLE_P(i) \ 212#define INTERVAL_VISIBLE_P(i) \
213 (! NULL_INTERVAL_P (i) && NILP (textget ((i)->plist, Qinvisible))) 213 (! NULL_INTERVAL_P (i) && NILP (textget ((i)->plist, Qinvisible)))
214 214
215/* Is this interval writable? Replace later with cache access */ 215/* Is this interval writable? Replace later with cache access. */
216#define INTERVAL_WRITABLE_P(i) \ 216#define INTERVAL_WRITABLE_P(i) \
217 (! NULL_INTERVAL_P (i) \ 217 (! NULL_INTERVAL_P (i) \
218 && (NILP (textget ((i)->plist, Qread_only)) \ 218 && (NILP (textget ((i)->plist, Qread_only)) \
@@ -222,7 +222,7 @@ struct interval
222 : !NILP (Vinhibit_read_only))))) \ 222 : !NILP (Vinhibit_read_only))))) \
223 223
224/* Macros to tell whether insertions before or after this interval 224/* Macros to tell whether insertions before or after this interval
225 should stick to it. */ 225 should stick to it. */
226/* Replace later with cache access */ 226/* Replace later with cache access */
227/*#define FRONT_STICKY_P(i) ((i)->front_sticky != 0) 227/*#define FRONT_STICKY_P(i) ((i)->front_sticky != 0)
228 #define END_STICKY_P(i) ((i)->rear_sticky != 0)*/ 228 #define END_STICKY_P(i) ((i)->rear_sticky != 0)*/
@@ -245,11 +245,11 @@ struct interval
245 ? !NILP (prop) \ 245 ? !NILP (prop) \
246 : invisible_p (prop, BVAR (current_buffer, invisibility_spec))) 246 : invisible_p (prop, BVAR (current_buffer, invisibility_spec)))
247 247
248/* Declared in alloc.c */ 248/* Declared in alloc.c. */
249 249
250extern INTERVAL make_interval (void); 250extern INTERVAL make_interval (void);
251 251
252/* Declared in intervals.c */ 252/* Declared in intervals.c. */
253 253
254extern INTERVAL create_root_interval (Lisp_Object); 254extern INTERVAL create_root_interval (Lisp_Object);
255extern void copy_properties (INTERVAL, INTERVAL); 255extern void copy_properties (INTERVAL, INTERVAL);
@@ -288,12 +288,12 @@ extern INTERVAL validate_interval_range (Lisp_Object, Lisp_Object *,
288 Lisp_Object *, int); 288 Lisp_Object *, int);
289extern INTERVAL interval_of (EMACS_INT, Lisp_Object); 289extern INTERVAL interval_of (EMACS_INT, Lisp_Object);
290 290
291/* Defined in xdisp.c */ 291/* Defined in xdisp.c. */
292extern int invisible_p (Lisp_Object, Lisp_Object); 292extern int invisible_p (Lisp_Object, Lisp_Object);
293 293
294/* Declared in textprop.c */ 294/* Declared in textprop.c. */
295 295
296/* Types of hooks. */ 296/* Types of hooks. */
297extern Lisp_Object Qpoint_left; 297extern Lisp_Object Qpoint_left;
298extern Lisp_Object Qpoint_entered; 298extern Lisp_Object Qpoint_entered;
299extern Lisp_Object Qmodification_hooks; 299extern Lisp_Object Qmodification_hooks;
@@ -301,11 +301,11 @@ extern Lisp_Object Qcategory;
301extern Lisp_Object Qlocal_map; 301extern Lisp_Object Qlocal_map;
302extern Lisp_Object Qkeymap; 302extern Lisp_Object Qkeymap;
303 303
304/* Visual properties text (including strings) may have. */ 304/* Visual properties text (including strings) may have. */
305extern Lisp_Object Qfont; 305extern Lisp_Object Qfont;
306extern Lisp_Object Qinvisible, Qintangible; 306extern Lisp_Object Qinvisible, Qintangible;
307 307
308/* Sticky properties */ 308/* Sticky properties. */
309extern Lisp_Object Qfront_sticky, Qrear_nonsticky; 309extern Lisp_Object Qfront_sticky, Qrear_nonsticky;
310 310
311EXFUN (Fget_char_property, 3); 311EXFUN (Fget_char_property, 3);
diff --git a/src/keyboard.c b/src/keyboard.c
index 8b94ee6b5d1..bee91c6b5cf 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -4823,7 +4823,7 @@ const char *const lispy_function_keys[] =
4823 "ico-00", /* VK_ICO_00 0xE4 */ 4823 "ico-00", /* VK_ICO_00 0xE4 */
4824 0, /* VK_PROCESSKEY 0xE5 - used by IME */ 4824 0, /* VK_PROCESSKEY 0xE5 - used by IME */
4825 "ico-clear", /* VK_ICO_CLEAR 0xE6 */ 4825 "ico-clear", /* VK_ICO_CLEAR 0xE6 */
4826 0, /* VK_PACKET 0xE7 - used to pass unicode chars */ 4826 0, /* VK_PACKET 0xE7 - used to pass Unicode chars */
4827 0, /* 0xE8 */ 4827 0, /* 0xE8 */
4828 "reset", /* VK_OEM_RESET 0xE9 */ 4828 "reset", /* VK_OEM_RESET 0xE9 */
4829 "jump", /* VK_OEM_JUMP 0xEA */ 4829 "jump", /* VK_OEM_JUMP 0xEA */
@@ -10153,7 +10153,7 @@ will read just one key sequence. */)
10153 ! NILP (can_return_switch_frame), 0); 10153 ! NILP (can_return_switch_frame), 0);
10154 10154
10155#if 0 /* The following is fine for code reading a key sequence and 10155#if 0 /* The following is fine for code reading a key sequence and
10156 then proceeding with a lenghty computation, but it's not good 10156 then proceeding with a lengthy computation, but it's not good
10157 for code reading keys in a loop, like an input method. */ 10157 for code reading keys in a loop, like an input method. */
10158#ifdef HAVE_WINDOW_SYSTEM 10158#ifdef HAVE_WINDOW_SYSTEM
10159 if (display_hourglass_p) 10159 if (display_hourglass_p)
@@ -12120,7 +12120,7 @@ This variable is keyboard-local. */);
12120Function key definitions that apply to all terminal devices should go 12120Function key definitions that apply to all terminal devices should go
12121here. If a mapping is defined in both the current 12121here. If a mapping is defined in both the current
12122`local-function-key-map' binding and this variable, then the local 12122`local-function-key-map' binding and this variable, then the local
12123definition will take precendence. */); 12123definition will take precedence. */);
12124 Vfunction_key_map = Fmake_sparse_keymap (Qnil); 12124 Vfunction_key_map = Fmake_sparse_keymap (Qnil);
12125 12125
12126 DEFVAR_LISP ("key-translation-map", Vkey_translation_map, 12126 DEFVAR_LISP ("key-translation-map", Vkey_translation_map,
diff --git a/src/keymap.c b/src/keymap.c
index 6f9cf288f6d..b429ca968d7 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -2624,11 +2624,11 @@ remapped command in the returned list. */)
2624 /* We have a list of advertised bindings. */ 2624 /* We have a list of advertised bindings. */
2625 while (CONSP (tem)) 2625 while (CONSP (tem))
2626 if (EQ (shadow_lookup (keymaps, XCAR (tem), Qnil, 0), definition)) 2626 if (EQ (shadow_lookup (keymaps, XCAR (tem), Qnil, 0), definition))
2627 return XCAR (tem); 2627 RETURN_UNGCPRO (XCAR (tem));
2628 else 2628 else
2629 tem = XCDR (tem); 2629 tem = XCDR (tem);
2630 if (EQ (shadow_lookup (keymaps, tem, Qnil, 0), definition)) 2630 if (EQ (shadow_lookup (keymaps, tem, Qnil, 0), definition))
2631 return tem; 2631 RETURN_UNGCPRO (tem);
2632 } 2632 }
2633 2633
2634 sequences = Freverse (where_is_internal (definition, keymaps, 2634 sequences = Freverse (where_is_internal (definition, keymaps,
diff --git a/src/lisp.h b/src/lisp.h
index 5407956c202..2056b7caff8 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -947,7 +947,7 @@ struct Lisp_Vector
947 947
948/* Compute A OP B, using the unsigned comparison operator OP. A and B 948/* Compute A OP B, using the unsigned comparison operator OP. A and B
949 should be integer expressions. This is not the same as 949 should be integer expressions. This is not the same as
950 mathemeatical comparison; for example, UNSIGNED_CMP (0, <, -1) 950 mathematical comparison; for example, UNSIGNED_CMP (0, <, -1)
951 returns 1. For efficiency, prefer plain unsigned comparison if A 951 returns 1. For efficiency, prefer plain unsigned comparison if A
952 and B's sizes both fit (after integer promotion). */ 952 and B's sizes both fit (after integer promotion). */
953#define UNSIGNED_CMP(a, op, b) \ 953#define UNSIGNED_CMP(a, op, b) \
@@ -1881,9 +1881,6 @@ typedef struct {
1881 CHECK_NATNUM (tmp); \ 1881 CHECK_NATNUM (tmp); \
1882 XSETCDR ((x), tmp); \ 1882 XSETCDR ((x), tmp); \
1883 } while (0) 1883 } while (0)
1884
1885/* Cast pointers to this type to compare them. */
1886#define PNTR_COMPARISON_TYPE uintptr_t
1887 1884
1888/* Define a built-in function for calling from Lisp. 1885/* Define a built-in function for calling from Lisp.
1889 `lname' should be the name to give the function in Lisp, 1886 `lname' should be the name to give the function in Lisp,
diff --git a/src/lread.c b/src/lread.c
index 110f3e62f71..f1f6f0cbd78 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -3984,7 +3984,7 @@ init_obarray (void)
3984 Qnil = intern_c_string ("nil"); 3984 Qnil = intern_c_string ("nil");
3985 3985
3986 /* Fmake_symbol inits fields of new symbols with Qunbound and Qnil, 3986 /* Fmake_symbol inits fields of new symbols with Qunbound and Qnil,
3987 so those two need to be fixed manally. */ 3987 so those two need to be fixed manually. */
3988 SET_SYMBOL_VAL (XSYMBOL (Qunbound), Qunbound); 3988 SET_SYMBOL_VAL (XSYMBOL (Qunbound), Qunbound);
3989 XSYMBOL (Qunbound)->function = Qunbound; 3989 XSYMBOL (Qunbound)->function = Qunbound;
3990 XSYMBOL (Qunbound)->plist = Qnil; 3990 XSYMBOL (Qunbound)->plist = Qnil;
diff --git a/src/m/ibms390.h b/src/m/ibms390.h
deleted file mode 100644
index c309035dc5c..00000000000
--- a/src/m/ibms390.h
+++ /dev/null
@@ -1,27 +0,0 @@
1/* Machine description file for IBM S390 in 32-bit mode
2
3Copyright (C) 1985-1986, 2001-2011 Free Software Foundation, Inc.
4
5This file is part of GNU Emacs.
6
7GNU Emacs is free software: you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation, either version 3 of the License, or
10(at your option) any later version.
11
12GNU Emacs is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
19
20
21/* Define VIRT_ADDR_VARIES if the virtual addresses of
22 pure and impure space as loaded can vary, and even their
23 relative order cannot be relied on.
24
25 Otherwise Emacs assumes that text space precedes data space,
26 numerically. */
27#define VIRT_ADDR_VARIES
diff --git a/src/m/ibms390x.h b/src/m/ibms390x.h
index 04092d6e1ac..5ea7974b052 100644
--- a/src/m/ibms390x.h
+++ b/src/m/ibms390x.h
@@ -17,8 +17,6 @@ GNU General Public License for more details.
17You should have received a copy of the GNU General Public License 17You should have received a copy of the GNU General Public License
18along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ 18along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
19 19
20#include "ibms390.h"
21
22#define BITS_PER_LONG 64 20#define BITS_PER_LONG 64
23#define BITS_PER_EMACS_INT 64 21#define BITS_PER_EMACS_INT 64
24 22
diff --git a/src/m/intel386.h b/src/m/intel386.h
index 16f0645715c..114b7fef963 100644
--- a/src/m/intel386.h
+++ b/src/m/intel386.h
@@ -19,7 +19,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
19 19
20 20
21#ifdef WINDOWSNT 21#ifdef WINDOWSNT
22#define VIRT_ADDR_VARIES
23#define DATA_START get_data_start () 22#define DATA_START get_data_start ()
24#endif 23#endif
25 24
@@ -28,4 +27,3 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
28/* we cannot get the maximum address for brk */ 27/* we cannot get the maximum address for brk */
29#define ULIMIT_BREAK_VALUE (32*1024*1024) 28#define ULIMIT_BREAK_VALUE (32*1024*1024)
30#endif 29#endif
31
diff --git a/src/m/template.h b/src/m/template.h
index 54fb0da9521..38649e8ac6d 100644
--- a/src/m/template.h
+++ b/src/m/template.h
@@ -21,14 +21,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
21 does not define it automatically. 21 does not define it automatically.
22 Ones defined so far include m68k and many others */ 22 Ones defined so far include m68k and many others */
23 23
24/* Define VIRT_ADDR_VARIES if the virtual addresses of
25 pure and impure space as loaded can vary, and even their
26 relative order cannot be relied on.
27
28 Otherwise Emacs assumes that text space precedes data space,
29 numerically. */
30#define VIRT_ADDR_VARIES
31
32/* After adding support for a new machine, modify the large case 24/* After adding support for a new machine, modify the large case
33 statement in configure.in to recognize reasonable 25 statement in configure.in to recognize reasonable
34 configuration names, and add a description of the system to 26 configuration names, and add a description of the system to
diff --git a/src/msdos.c b/src/msdos.c
index 6b6e365a165..4c08c5b29e0 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -1342,7 +1342,7 @@ static void
1342IT_copy_glyphs (int xfrom, int xto, size_t len, int ypos) 1342IT_copy_glyphs (int xfrom, int xto, size_t len, int ypos)
1343{ 1343{
1344 /* The offsets of source and destination relative to the 1344 /* The offsets of source and destination relative to the
1345 conventional memorty selector. */ 1345 conventional memory selector. */
1346 int from = 2 * (xfrom + screen_size_X * ypos) + ScreenPrimary; 1346 int from = 2 * (xfrom + screen_size_X * ypos) + ScreenPrimary;
1347 int to = 2 * (xto + screen_size_X * ypos) + ScreenPrimary; 1347 int to = 2 * (xto + screen_size_X * ypos) + ScreenPrimary;
1348 1348
diff --git a/src/nsfont.m b/src/nsfont.m
index c4d9123faef..7d691ced6e1 100644
--- a/src/nsfont.m
+++ b/src/nsfont.m
@@ -256,7 +256,7 @@ ns_char_width (NSFont *sfont, int c)
256 256
257 257
258/* Return whether set1 covers set2 to a reasonable extent given by pct. 258/* Return whether set1 covers set2 to a reasonable extent given by pct.
259 We check, out of each 16 unicode char range containing chars in set2, 259 We check, out of each 16 Unicode char range containing chars in set2,
260 whether at least one character is present in set1. 260 whether at least one character is present in set1.
261 This must be true for pct of the pairs to consider it covering. */ 261 This must be true for pct of the pairs to consider it covering. */
262static BOOL 262static BOOL
@@ -297,7 +297,7 @@ static NSString
297 297
298 298
299/* Convert OTF 4-letter script code to emacs script name. (Why can't 299/* Convert OTF 4-letter script code to emacs script name. (Why can't
300 everyone just use some standard unicode names for these?) */ 300 everyone just use some standard Unicode names for these?) */
301static NSString 301static NSString
302*ns_otf_to_script (Lisp_Object otf) 302*ns_otf_to_script (Lisp_Object otf)
303{ 303{
@@ -329,7 +329,7 @@ static NSString
329 329
330/* Searches the :script, :lang, and :otf extra-bundle properties of the spec, 330/* Searches the :script, :lang, and :otf extra-bundle properties of the spec,
331 plus registry regular property, for something that can be mapped to a 331 plus registry regular property, for something that can be mapped to a
332 unicode script. Empty string returned if no script spec found. */ 332 Unicode script. Empty string returned if no script spec found. */
333static NSString 333static NSString
334*ns_get_req_script (Lisp_Object font_spec) 334*ns_get_req_script (Lisp_Object font_spec)
335{ 335{
@@ -385,7 +385,7 @@ accumulate_script_ranges (Lisp_Object arg, Lisp_Object range, Lisp_Object val)
385} 385}
386 386
387 387
388/* Use the unicode range information in Vchar_script_table to convert a script 388/* Use the Unicode range information in Vchar_script_table to convert a script
389 name into an NSCharacterSet. */ 389 name into an NSCharacterSet. */
390static NSCharacterSet 390static NSCharacterSet
391*ns_script_to_charset (NSString *scriptName) 391*ns_script_to_charset (NSString *scriptName)
@@ -426,7 +426,7 @@ static NSCharacterSet
426 If none are found, we reduce the percentage and try again, until 5%. 426 If none are found, we reduce the percentage and try again, until 5%.
427 This provides a font with at least some characters if such can be found. 427 This provides a font with at least some characters if such can be found.
428 We don't use isSupersetOfSet: because (a) it doesn't work on Tiger, and 428 We don't use isSupersetOfSet: because (a) it doesn't work on Tiger, and
429 (b) need approximate match as fonts covering full unicode ranges are rare. */ 429 (b) need approximate match as fonts covering full Unicode ranges are rare. */
430static NSSet 430static NSSet
431*ns_get_covering_families (NSString *script, float pct) 431*ns_get_covering_families (NSString *script, float pct)
432{ 432{
@@ -1292,7 +1292,7 @@ ns_uni_to_glyphs (struct nsfont_info *font_info, unsigned char block)
1292 if (!unichars || !(font_info->glyphs[block])) 1292 if (!unichars || !(font_info->glyphs[block]))
1293 abort (); 1293 abort ();
1294 1294
1295 /* create a string containing all unicode characters in this block */ 1295 /* create a string containing all Unicode characters in this block */
1296 for (idx = block<<8, i =0; i<0x100; idx++, i++) 1296 for (idx = block<<8, i =0; i<0x100; idx++, i++)
1297 if (idx < 0xD800 || idx > 0xDFFF) 1297 if (idx < 0xD800 || idx > 0xDFFF)
1298 unichars[i] = idx; 1298 unichars[i] = idx;
@@ -1487,5 +1487,5 @@ syms_of_nsfont (void)
1487 DEFSYM (Qroman, "roman"); 1487 DEFSYM (Qroman, "roman");
1488 DEFSYM (Qmedium, "medium"); 1488 DEFSYM (Qmedium, "medium");
1489 DEFVAR_LISP ("ns-reg-to-script", Vns_reg_to_script, 1489 DEFVAR_LISP ("ns-reg-to-script", Vns_reg_to_script,
1490 doc: /* Internal use: maps font registry to unicode script. */); 1490 doc: /* Internal use: maps font registry to Unicode script. */);
1491} 1491}
diff --git a/src/nsterm.h b/src/nsterm.h
index 574d31c962a..52246caac84 100644
--- a/src/nsterm.h
+++ b/src/nsterm.h
@@ -470,7 +470,7 @@ struct nsfont_info
470 XCharStruct max_bounds; 470 XCharStruct max_bounds;
471 /* we compute glyph codes and metrics on-demand in blocks of 256 indexed 471 /* we compute glyph codes and metrics on-demand in blocks of 256 indexed
472 by hibyte, lobyte */ 472 by hibyte, lobyte */
473 unsigned short **glyphs; /* map unicode index to glyph */ 473 unsigned short **glyphs; /* map Unicode index to glyph */
474 struct font_metrics **metrics; 474 struct font_metrics **metrics;
475}; 475};
476 476
diff --git a/src/print.c b/src/print.c
index 1d6998d8f1a..0fdb750f370 100644
--- a/src/print.c
+++ b/src/print.c
@@ -1637,7 +1637,7 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
1637 /* Detect circular list. */ 1637 /* Detect circular list. */
1638 if (NILP (Vprint_circle)) 1638 if (NILP (Vprint_circle))
1639 { 1639 {
1640 /* Simple but imcomplete way. */ 1640 /* Simple but incomplete way. */
1641 if (i != 0 && EQ (obj, halftail)) 1641 if (i != 0 && EQ (obj, halftail))
1642 { 1642 {
1643 sprintf (buf, " . #%"pMd, i / 2); 1643 sprintf (buf, " . #%"pMd, i / 2);
diff --git a/src/process.c b/src/process.c
index 53382d804f2..a02ba44ae71 100644
--- a/src/process.c
+++ b/src/process.c
@@ -1414,7 +1414,7 @@ usage: (start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS) */)
1414 val = XCDR (Vdefault_process_coding_system); 1414 val = XCDR (Vdefault_process_coding_system);
1415 } 1415 }
1416 XPROCESS (proc)->encode_coding_system = val; 1416 XPROCESS (proc)->encode_coding_system = val;
1417 /* Note: At this momemnt, the above coding system may leave 1417 /* Note: At this moment, the above coding system may leave
1418 text-conversion or eol-conversion unspecified. They will be 1418 text-conversion or eol-conversion unspecified. They will be
1419 decided after we read output from the process and decode it by 1419 decided after we read output from the process and decode it by
1420 some coding system, or just before we actually send a text to 1420 some coding system, or just before we actually send a text to
@@ -4620,15 +4620,43 @@ wait_reading_process_output (int time_limit, int microsecs, int read_kbd,
4620 some data in the TCP buffers so that select works, but 4620 some data in the TCP buffers so that select works, but
4621 with custom pull/push functions we need to check if some 4621 with custom pull/push functions we need to check if some
4622 data is available in the buffers manually. */ 4622 data is available in the buffers manually. */
4623 if (nfds == 0 && 4623 if (nfds == 0)
4624 wait_proc && wait_proc->gnutls_p /* Check for valid process. */ 4624 {
4625 /* Do we have pending data? */ 4625 if (! wait_proc)
4626 && emacs_gnutls_record_check_pending (wait_proc->gnutls_state) > 0) 4626 {
4627 { 4627 /* We're not waiting on a specific process, so loop
4628 nfds = 1; 4628 through all the channels and check for data.
4629 /* Set to Available. */ 4629 This is a workaround needed for some versions of
4630 FD_SET (wait_proc->infd, &Available); 4630 the gnutls library -- 2.12.14 has been confirmed
4631 } 4631 to need it. See
4632 http://comments.gmane.org/gmane.emacs.devel/145074 */
4633 struct Lisp_Process *proc;
4634 for (channel = 0; channel < MAXDESC; ++channel)
4635 {
4636 if (! NILP (chan_process[channel]) &&
4637 (proc = XPROCESS (chan_process[channel])) != NULL &&
4638 proc->gnutls_p &&
4639 proc->infd &&
4640 emacs_gnutls_record_check_pending (proc->gnutls_state) > 0)
4641 {
4642 nfds++;
4643 FD_SET (proc->infd, &Available);
4644 }
4645 }
4646 }
4647 else
4648 {
4649 /* Check this specific channel. */
4650 if (wait_proc->gnutls_p && /* Check for valid process. */
4651 /* Do we have pending data? */
4652 emacs_gnutls_record_check_pending (wait_proc->gnutls_state) > 0)
4653 {
4654 nfds = 1;
4655 /* Set to Available. */
4656 FD_SET (wait_proc->infd, &Available);
4657 }
4658 }
4659 }
4632#endif 4660#endif
4633 } 4661 }
4634 4662
diff --git a/src/puresize.h b/src/puresize.h
index c26c496a757..4290c30c68d 100644
--- a/src/puresize.h
+++ b/src/puresize.h
@@ -75,21 +75,7 @@ extern void pure_write_error (void) NO_RETURN;
75 75
76/* Define PURE_P. */ 76/* Define PURE_P. */
77 77
78#ifdef VIRT_ADDR_VARIES
79/* For machines where text and data can go anywhere
80 in virtual memory. */
81
82extern EMACS_INT pure[]; 78extern EMACS_INT pure[];
83 79
84#define PURE_P(obj) \ 80#define PURE_P(obj) \
85 ((PNTR_COMPARISON_TYPE) XPNTR (obj) < (PNTR_COMPARISON_TYPE) ((char *) pure + PURESIZE) \ 81 ((uintptr_t) XPNTR (obj) - (uintptr_t) pure <= PURESIZE)
86 && (PNTR_COMPARISON_TYPE) XPNTR (obj) >= (PNTR_COMPARISON_TYPE) pure)
87
88#else /* not VIRT_ADDR_VARIES */
89
90extern char my_edata[];
91
92#define PURE_P(obj) \
93 ((PNTR_COMPARISON_TYPE) XPNTR (obj) < (PNTR_COMPARISON_TYPE) my_edata)
94
95#endif /* VIRT_ADDRESS_VARIES */
diff --git a/src/s/cygwin.h b/src/s/cygwin.h
index af5308ff7bb..8f5a0ab1fc7 100644
--- a/src/s/cygwin.h
+++ b/src/s/cygwin.h
@@ -91,9 +91,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
91 why it needed to be changed. */ 91 why it needed to be changed. */
92#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS 92#define GC_MARK_STACK GC_MAKE_GCPROS_NOOPS
93 93
94/* Virtual addresses of pure and impure space can vary, as on Windows. */
95#define VIRT_ADDR_VARIES
96
97/* Emacs supplies its own malloc, but glib (part of Gtk+) calls 94/* Emacs supplies its own malloc, but glib (part of Gtk+) calls
98 memalign and on Cygwin, that becomes the Cygwin-supplied memalign. 95 memalign and on Cygwin, that becomes the Cygwin-supplied memalign.
99 As malloc is not the Cygwin malloc, the Cygwin memalign always 96 As malloc is not the Cygwin malloc, the Cygwin memalign always
diff --git a/src/s/hpux10-20.h b/src/s/hpux10-20.h
index 37199bcc29b..be457498add 100644
--- a/src/s/hpux10-20.h
+++ b/src/s/hpux10-20.h
@@ -100,14 +100,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
100 header sections which lose when `static' is defined away, as it is 100 header sections which lose when `static' is defined away, as it is
101 on HP-UX. (You get duplicate symbol errors on linking). */ 101 on HP-UX. (You get duplicate symbol errors on linking). */
102#undef _FILE_OFFSET_BITS 102#undef _FILE_OFFSET_BITS
103
104/* Define VIRT_ADDR_VARIES if the virtual addresses of
105 pure and impure space as loaded can vary, and even their
106 relative order cannot be relied on.
107
108 Otherwise Emacs assumes that text space precedes data space,
109 numerically. */
110#define VIRT_ADDR_VARIES
111 103
112/* The data segment on this machine always starts at address 0x40000000. */ 104/* The data segment on this machine always starts at address 0x40000000. */
113#define DATA_SEG_BITS 0x40000000 105#define DATA_SEG_BITS 0x40000000
diff --git a/src/search.c b/src/search.c
index a3b4e1dcbce..a6a0fddb137 100644
--- a/src/search.c
+++ b/src/search.c
@@ -1892,7 +1892,7 @@ boyer_moore (EMACS_INT n, unsigned char *base_pat,
1892 || CHAR_HEAD_P (cursor[1])) 1892 || CHAR_HEAD_P (cursor[1]))
1893 && (CHAR_HEAD_P (cursor[0]) 1893 && (CHAR_HEAD_P (cursor[0])
1894 /* Check if this is the last byte of 1894 /* Check if this is the last byte of
1895 a translable character. */ 1895 a translatable character. */
1896 || (translate_prev_byte1 == cursor[-1] 1896 || (translate_prev_byte1 == cursor[-1]
1897 && (CHAR_HEAD_P (translate_prev_byte1) 1897 && (CHAR_HEAD_P (translate_prev_byte1)
1898 || (translate_prev_byte2 == cursor[-2] 1898 || (translate_prev_byte2 == cursor[-2]
@@ -1991,7 +1991,7 @@ boyer_moore (EMACS_INT n, unsigned char *base_pat,
1991 || CHAR_HEAD_P (ptr[1])) 1991 || CHAR_HEAD_P (ptr[1]))
1992 && (CHAR_HEAD_P (ptr[0]) 1992 && (CHAR_HEAD_P (ptr[0])
1993 /* Check if this is the last byte of a 1993 /* Check if this is the last byte of a
1994 translable character. */ 1994 translatable character. */
1995 || (translate_prev_byte1 == ptr[-1] 1995 || (translate_prev_byte1 == ptr[-1]
1996 && (CHAR_HEAD_P (translate_prev_byte1) 1996 && (CHAR_HEAD_P (translate_prev_byte1)
1997 || (translate_prev_byte2 == ptr[-2] 1997 || (translate_prev_byte2 == ptr[-2]
diff --git a/src/sound.c b/src/sound.c
index 39007574afc..4e9758d27df 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -267,7 +267,7 @@ struct sound
267 read from the start of a sound file. */ 267 read from the start of a sound file. */
268 char *header; 268 char *header;
269 269
270 /* Number of bytes raed from sound file. This is always <= 270 /* Number of bytes read from sound file. This is always <=
271 MAX_SOUND_HEADER_BYTES. */ 271 MAX_SOUND_HEADER_BYTES. */
272 int header_size; 272 int header_size;
273 273
diff --git a/src/sysdep.c b/src/sysdep.c
index d666f8dbb79..ae200308bf3 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -1663,7 +1663,7 @@ init_signals (void)
1663 sys_siglist[SIGQUIT] = "Quit"; 1663 sys_siglist[SIGQUIT] = "Quit";
1664# endif 1664# endif
1665# ifdef SIGRETRACT 1665# ifdef SIGRETRACT
1666 sys_siglist[SIGRETRACT] = "Need to relinguish monitor mode"; 1666 sys_siglist[SIGRETRACT] = "Need to relinquish monitor mode";
1667# endif 1667# endif
1668# ifdef SIGSAK 1668# ifdef SIGSAK
1669 sys_siglist[SIGSAK] = "Secure attention"; 1669 sys_siglist[SIGSAK] = "Secure attention";
diff --git a/src/w32.c b/src/w32.c
index c752333c68d..304445e2238 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -3057,7 +3057,7 @@ generate_inode_val (const char * name)
3057 unsigned hash; 3057 unsigned hash;
3058 3058
3059 /* Get the truly canonical filename, if it exists. (Note: this 3059 /* Get the truly canonical filename, if it exists. (Note: this
3060 doesn't resolve aliasing due to subst commands, or recognise hard 3060 doesn't resolve aliasing due to subst commands, or recognize hard
3061 links. */ 3061 links. */
3062 if (!w32_get_long_filename ((char *)name, fullname, MAX_PATH)) 3062 if (!w32_get_long_filename ((char *)name, fullname, MAX_PATH))
3063 abort (); 3063 abort ();
@@ -3403,7 +3403,7 @@ stat (const char * path, struct stat * buf)
3403 FILE_FLAG_BACKUP_SEMANTICS, NULL)) 3403 FILE_FLAG_BACKUP_SEMANTICS, NULL))
3404 != INVALID_HANDLE_VALUE) 3404 != INVALID_HANDLE_VALUE)
3405 { 3405 {
3406 /* This is more accurate in terms of gettting the correct number 3406 /* This is more accurate in terms of getting the correct number
3407 of links, but is quite slow (it is noticeable when Emacs is 3407 of links, but is quite slow (it is noticeable when Emacs is
3408 making a list of file name completions). */ 3408 making a list of file name completions). */
3409 BY_HANDLE_FILE_INFORMATION info; 3409 BY_HANDLE_FILE_INFORMATION info;
@@ -5845,7 +5845,7 @@ term_ntproc (void)
5845void 5845void
5846init_ntproc (void) 5846init_ntproc (void)
5847{ 5847{
5848 /* Initialise the socket interface now if available and requested by 5848 /* Initialize the socket interface now if available and requested by
5849 the user by defining PRELOAD_WINSOCK; otherwise loading will be 5849 the user by defining PRELOAD_WINSOCK; otherwise loading will be
5850 delayed until open-network-stream is called (w32-has-winsock can 5850 delayed until open-network-stream is called (w32-has-winsock can
5851 also be used to dynamically load or reload winsock). 5851 also be used to dynamically load or reload winsock).
diff --git a/src/w32console.c b/src/w32console.c
index 49bf56ddee9..30c71f1c276 100644
--- a/src/w32console.c
+++ b/src/w32console.c
@@ -748,7 +748,7 @@ syms_of_ntterm (void)
748 doc: /* Non-nil means make terminal frames use the full screen buffer dimensions. 748 doc: /* Non-nil means make terminal frames use the full screen buffer dimensions.
749This is desirable when running Emacs over telnet. 749This is desirable when running Emacs over telnet.
750A value of nil means use the current console window dimensions; this 750A value of nil means use the current console window dimensions; this
751may be preferrable when working directly at the console with a large 751may be preferable when working directly at the console with a large
752scroll-back buffer. */); 752scroll-back buffer. */);
753 w32_use_full_screen_buffer = 0; 753 w32_use_full_screen_buffer = 0;
754 754
@@ -757,4 +757,3 @@ scroll-back buffer. */);
757 defsubr (&Sset_cursor_size); 757 defsubr (&Sset_cursor_size);
758 defsubr (&Sset_message_beep); 758 defsubr (&Sset_message_beep);
759} 759}
760
diff --git a/src/w32fns.c b/src/w32fns.c
index 4a6da46141c..434861320a5 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -2262,7 +2262,7 @@ w32_msg_pump (deferred_msg * msg_buf)
2262 some third party shell extensions can cause it to be used in 2262 some third party shell extensions can cause it to be used in
2263 system dialogs, which causes a crash if it is not initialized. 2263 system dialogs, which causes a crash if it is not initialized.
2264 This is a known bug in Windows, which was fixed long ago, but 2264 This is a known bug in Windows, which was fixed long ago, but
2265 the patch for XP is not publically available until XP SP3, 2265 the patch for XP is not publicly available until XP SP3,
2266 and older versions will never be patched. */ 2266 and older versions will never be patched. */
2267 CoInitialize (NULL); 2267 CoInitialize (NULL);
2268 w32_createwindow ((struct frame *) msg.wParam); 2268 w32_createwindow ((struct frame *) msg.wParam);
@@ -2880,7 +2880,7 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
2880 key.dwControlKeyState = modifiers; 2880 key.dwControlKeyState = modifiers;
2881 2881
2882 add = w32_kbd_patch_key (&key); 2882 add = w32_kbd_patch_key (&key);
2883 /* 0 means an unrecognised keycode, negative means 2883 /* 0 means an unrecognized keycode, negative means
2884 dead key. Ignore both. */ 2884 dead key. Ignore both. */
2885 while (--add >= 0) 2885 while (--add >= 0)
2886 { 2886 {
@@ -2943,7 +2943,7 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
2943 break; 2943 break;
2944 2944
2945 case WM_IME_CHAR: 2945 case WM_IME_CHAR:
2946 /* If we can't get the IME result as unicode, use default processing, 2946 /* If we can't get the IME result as Unicode, use default processing,
2947 which will at least allow characters decodable in the system locale 2947 which will at least allow characters decodable in the system locale
2948 get through. */ 2948 get through. */
2949 if (!get_composition_string_fn) 2949 if (!get_composition_string_fn)
diff --git a/src/w32font.c b/src/w32font.c
index bd58e7e757b..5cc37c0e74f 100644
--- a/src/w32font.c
+++ b/src/w32font.c
@@ -462,7 +462,7 @@ w32font_has_char (Lisp_Object entity, int c)
462 Return a glyph code of FONT for character C (Unicode code point). 462 Return a glyph code of FONT for character C (Unicode code point).
463 If FONT doesn't have such a glyph, return FONT_INVALID_CODE. 463 If FONT doesn't have such a glyph, return FONT_INVALID_CODE.
464 464
465 For speed, the gdi backend uses unicode (Emacs calls encode_char 465 For speed, the gdi backend uses Unicode (Emacs calls encode_char
466 far too often for it to be efficient). But we still need to detect 466 far too often for it to be efficient). But we still need to detect
467 which characters are not supported by the font. 467 which characters are not supported by the font.
468 */ 468 */
@@ -620,7 +620,7 @@ w32font_text_extents (struct font *font, unsigned *code,
620 total_width = size.cx; 620 total_width = size.cx;
621 } 621 }
622 622
623 /* On 95/98/ME, only some unicode functions are available, so fallback 623 /* On 95/98/ME, only some Unicode functions are available, so fallback
624 on doing a dummy draw to find the total width. */ 624 on doing a dummy draw to find the total width. */
625 if (!total_width) 625 if (!total_width)
626 { 626 {
@@ -1153,7 +1153,7 @@ w32_enumfont_pattern_entity (Lisp_Object frame,
1153 else 1153 else
1154 ASET (entity, FONT_SIZE_INDEX, make_number (0)); 1154 ASET (entity, FONT_SIZE_INDEX, make_number (0));
1155 1155
1156 /* Cache unicode codepoints covered by this font, as there is no other way 1156 /* Cache Unicode codepoints covered by this font, as there is no other way
1157 of getting this information easily. */ 1157 of getting this information easily. */
1158 if (font_type & TRUETYPE_FONTTYPE) 1158 if (font_type & TRUETYPE_FONTTYPE)
1159 { 1159 {
@@ -1514,7 +1514,7 @@ add_font_entity_to_list (ENUMLOGFONTEX *logical_font,
1514 /* Skip non matching fonts. */ 1514 /* Skip non matching fonts. */
1515 1515
1516 /* For uniscribe backend, consider only truetype or opentype fonts 1516 /* For uniscribe backend, consider only truetype or opentype fonts
1517 that have some unicode coverage. */ 1517 that have some Unicode coverage. */
1518 if (match_data->opentype_only 1518 if (match_data->opentype_only
1519 && ((!(physical_font->ntmTm.ntmFlags & NTMFLAGS_OPENTYPE) 1519 && ((!(physical_font->ntmTm.ntmFlags & NTMFLAGS_OPENTYPE)
1520 && !(font_type & TRUETYPE_FONTTYPE)) 1520 && !(font_type & TRUETYPE_FONTTYPE))
@@ -1557,7 +1557,7 @@ add_font_entity_to_list (ENUMLOGFONTEX *logical_font,
1557 Lisp_Object spec_charset = AREF (match_data->orig_font_spec, 1557 Lisp_Object spec_charset = AREF (match_data->orig_font_spec,
1558 FONT_REGISTRY_INDEX); 1558 FONT_REGISTRY_INDEX);
1559 1559
1560 /* iso10646-1 fonts must contain unicode mapping tables. */ 1560 /* iso10646-1 fonts must contain Unicode mapping tables. */
1561 if (EQ (spec_charset, Qiso10646_1)) 1561 if (EQ (spec_charset, Qiso10646_1))
1562 { 1562 {
1563 if (!is_unicode) 1563 if (!is_unicode)
@@ -1572,7 +1572,7 @@ add_font_entity_to_list (ENUMLOGFONTEX *logical_font,
1572 && !(physical_font->ntmFontSig.fsUsb[0] & 0x007F001F)) 1572 && !(physical_font->ntmFontSig.fsUsb[0] & 0x007F001F))
1573 return 1; 1573 return 1;
1574 } 1574 }
1575 /* unicode-sip fonts must contain characters in unicode plane 2. 1575 /* unicode-sip fonts must contain characters in Unicode plane 2.
1576 so look for bit 57 (surrogates) in the Unicode subranges, plus 1576 so look for bit 57 (surrogates) in the Unicode subranges, plus
1577 the bits for CJK ranges that include those characters. */ 1577 the bits for CJK ranges that include those characters. */
1578 else if (EQ (spec_charset, Qunicode_sip)) 1578 else if (EQ (spec_charset, Qunicode_sip))
@@ -1597,7 +1597,7 @@ add_font_entity_to_list (ENUMLOGFONTEX *logical_font,
1597 ASET (entity, FONT_REGISTRY_INDEX, spec_charset); 1597 ASET (entity, FONT_REGISTRY_INDEX, spec_charset);
1598 } 1598 }
1599 /* Otherwise if using the uniscribe backend, report ANSI and DEFAULT 1599 /* Otherwise if using the uniscribe backend, report ANSI and DEFAULT
1600 fonts as unicode and skip other charsets. */ 1600 fonts as Unicode and skip other charsets. */
1601 else if (match_data->opentype_only) 1601 else if (match_data->opentype_only)
1602 { 1602 {
1603 if (logical_font->elfLogFont.lfCharSet == ANSI_CHARSET 1603 if (logical_font->elfLogFont.lfCharSet == ANSI_CHARSET
@@ -1640,7 +1640,7 @@ x_to_w32_charset (char * lpcs)
1640 if (strncmp (lpcs, "*-#", 3) == 0) 1640 if (strncmp (lpcs, "*-#", 3) == 0)
1641 return atoi (lpcs + 3); 1641 return atoi (lpcs + 3);
1642 1642
1643 /* All Windows fonts qualify as unicode. */ 1643 /* All Windows fonts qualify as Unicode. */
1644 if (!strncmp (lpcs, "iso10646", 8)) 1644 if (!strncmp (lpcs, "iso10646", 8))
1645 return DEFAULT_CHARSET; 1645 return DEFAULT_CHARSET;
1646 1646
@@ -1925,7 +1925,7 @@ w32_registry (LONG w32_charset, DWORD font_type)
1925{ 1925{
1926 char *charset; 1926 char *charset;
1927 1927
1928 /* If charset is defaulted, charset is unicode or unknown, depending on 1928 /* If charset is defaulted, charset is Unicode or unknown, depending on
1929 font type. */ 1929 font type. */
1930 if (w32_charset == DEFAULT_CHARSET) 1930 if (w32_charset == DEFAULT_CHARSET)
1931 return font_type == TRUETYPE_FONTTYPE ? Qiso10646_1 : Qunknown; 1931 return font_type == TRUETYPE_FONTTYPE ? Qiso10646_1 : Qunknown;
@@ -2080,7 +2080,7 @@ fill_in_logfont (FRAME_PTR f, LOGFONT *logfont, Lisp_Object font_spec)
2080 { 2080 {
2081 Lisp_Object key, val; 2081 Lisp_Object key, val;
2082 key = XCAR (tmp), val = XCDR (tmp); 2082 key = XCAR (tmp), val = XCDR (tmp);
2083 /* Only use QCscript if charset is not provided, or is unicode 2083 /* Only use QCscript if charset is not provided, or is Unicode
2084 and a single script is specified. This is rather crude, 2084 and a single script is specified. This is rather crude,
2085 and is only used to narrow down the fonts returned where 2085 and is only used to narrow down the fonts returned where
2086 there is a definite match. Some scripts, such as latin, han, 2086 there is a definite match. Some scripts, such as latin, han,
diff --git a/src/w32menu.c b/src/w32menu.c
index 39d101e7bd5..9b2d014cd58 100644
--- a/src/w32menu.c
+++ b/src/w32menu.c
@@ -1219,7 +1219,7 @@ simple_dialog_show (FRAME_PTR f, Lisp_Object contents, Lisp_Object header)
1219 is_simple_dialog, we don't need to worry about checking contents 1219 is_simple_dialog, we don't need to worry about checking contents
1220 to see what type of dialog to use. */ 1220 to see what type of dialog to use. */
1221 1221
1222 /* Use unicode if possible, so any language can be displayed. */ 1222 /* Use Unicode if possible, so any language can be displayed. */
1223 if (unicode_message_box) 1223 if (unicode_message_box)
1224 { 1224 {
1225 WCHAR *text, *title; 1225 WCHAR *text, *title;
@@ -1476,7 +1476,7 @@ add_menu_item (HMENU menu, widget_value *wv, HMENU item)
1476 utf16_string); 1476 utf16_string);
1477 if (!return_value) 1477 if (!return_value)
1478 { 1478 {
1479 /* On W9x/ME, unicode menus are not supported, though AppendMenuW 1479 /* On W9x/ME, Unicode menus are not supported, though AppendMenuW
1480 apparently does exist at least in some cases and appears to be 1480 apparently does exist at least in some cases and appears to be
1481 stubbed out to do nothing. out_string is UTF-8, but since 1481 stubbed out to do nothing. out_string is UTF-8, but since
1482 our standard menus are in English and this is only going to 1482 our standard menus are in English and this is only going to
@@ -1486,7 +1486,7 @@ add_menu_item (HMENU menu, widget_value *wv, HMENU item)
1486 AppendMenu (menu, fuFlags, 1486 AppendMenu (menu, fuFlags,
1487 item != NULL ? (UINT) item: (UINT) wv->call_data, 1487 item != NULL ? (UINT) item: (UINT) wv->call_data,
1488 out_string); 1488 out_string);
1489 /* Don't use unicode menus in future. */ 1489 /* Don't use Unicode menus in future. */
1490 unicode_append_menu = NULL; 1490 unicode_append_menu = NULL;
1491 } 1491 }
1492 1492
diff --git a/src/w32proc.c b/src/w32proc.c
index 279816bcc3e..254a32503c4 100644
--- a/src/w32proc.c
+++ b/src/w32proc.c
@@ -122,12 +122,12 @@ new_child (void)
122 122
123 for (cp = child_procs + (child_proc_count-1); cp >= child_procs; cp--) 123 for (cp = child_procs + (child_proc_count-1); cp >= child_procs; cp--)
124 if (!CHILD_ACTIVE (cp)) 124 if (!CHILD_ACTIVE (cp))
125 goto Initialise; 125 goto Initialize;
126 if (child_proc_count == MAX_CHILDREN) 126 if (child_proc_count == MAX_CHILDREN)
127 return NULL; 127 return NULL;
128 cp = &child_procs[child_proc_count++]; 128 cp = &child_procs[child_proc_count++];
129 129
130 Initialise: 130 Initialize:
131 memset (cp, 0, sizeof (*cp)); 131 memset (cp, 0, sizeof (*cp));
132 cp->fd = -1; 132 cp->fd = -1;
133 cp->pid = -1; 133 cp->pid = -1;
@@ -821,7 +821,7 @@ sys_spawnve (int mode, char *cmdname, char **argv, char **envp)
821 821
822 The w32 GNU-based library from Cygnus doubles quotes to escape 822 The w32 GNU-based library from Cygnus doubles quotes to escape
823 them, while MSVC uses backslash for escaping. (Actually the MSVC 823 them, while MSVC uses backslash for escaping. (Actually the MSVC
824 startup code does attempt to recognise doubled quotes and accept 824 startup code does attempt to recognize doubled quotes and accept
825 them, but gets it wrong and ends up requiring three quotes to get a 825 them, but gets it wrong and ends up requiring three quotes to get a
826 single embedded quote!) So by default we decide whether to use 826 single embedded quote!) So by default we decide whether to use
827 quote or backslash as the escape character based on whether the 827 quote or backslash as the escape character based on whether the
diff --git a/src/w32term.c b/src/w32term.c
index e9fa16ba325..a2ccdd21f7d 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -4506,7 +4506,7 @@ w32_read_socket (struct terminal *terminal, int expected,
4506 } 4506 }
4507 4507
4508 /* If window has been obscured or exposed by another window 4508 /* If window has been obscured or exposed by another window
4509 being maximised or minimised/restored, then recheck 4509 being maximized or minimized/restored, then recheck
4510 visibility of all frames. Direct changes to our own 4510 visibility of all frames. Direct changes to our own
4511 windows get handled by WM_SIZE. */ 4511 windows get handled by WM_SIZE. */
4512#if 0 4512#if 0
@@ -5576,7 +5576,7 @@ x_raise_frame (struct frame *f)
5576 input focus anyway (so the window with focus will never be 5576 input focus anyway (so the window with focus will never be
5577 completely obscured) - if not, then just moving the mouse over it 5577 completely obscured) - if not, then just moving the mouse over it
5578 is sufficient to give it focus. On Windows, the user must actually 5578 is sufficient to give it focus. On Windows, the user must actually
5579 click on the frame (preferrably the title bar so as not to move 5579 click on the frame (preferably the title bar so as not to move
5580 point), which is more awkward. Also, no other Windows program 5580 point), which is more awkward. Also, no other Windows program
5581 raises a window to the top but leaves another window (possibly now 5581 raises a window to the top but leaves another window (possibly now
5582 completely obscured) with input focus. 5582 completely obscured) with input focus.
@@ -5692,10 +5692,10 @@ x_make_frame_visible (struct frame *f)
5692 5692
5693 /* According to a report in emacs-devel 2008-06-03, SW_SHOWNORMAL 5693 /* According to a report in emacs-devel 2008-06-03, SW_SHOWNORMAL
5694 causes unexpected behavior when unminimizing frames that were 5694 causes unexpected behavior when unminimizing frames that were
5695 previously maximised. But only SW_SHOWNORMAL works properly for 5695 previously maximized. But only SW_SHOWNORMAL works properly for
5696 frames that were truely hidden (using make-frame-invisible), so 5696 frames that were truely hidden (using make-frame-invisible), so
5697 we need it to avoid Bug#5482. It seems that async_iconified 5697 we need it to avoid Bug#5482. It seems that async_iconified
5698 is only set for minimised windows that are still visible, so 5698 is only set for minimized windows that are still visible, so
5699 use that to determine the appropriate flag to pass ShowWindow. */ 5699 use that to determine the appropriate flag to pass ShowWindow. */
5700 my_show_window (f, FRAME_W32_WINDOW (f), 5700 my_show_window (f, FRAME_W32_WINDOW (f),
5701 f->async_iconified ? SW_RESTORE : SW_SHOWNORMAL); 5701 f->async_iconified ? SW_RESTORE : SW_SHOWNORMAL);
@@ -6164,7 +6164,7 @@ w32_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
6164 dpyinfo->has_palette = GetDeviceCaps (hdc, RASTERCAPS) & RC_PALETTE; 6164 dpyinfo->has_palette = GetDeviceCaps (hdc, RASTERCAPS) & RC_PALETTE;
6165 ReleaseDC (NULL, hdc); 6165 ReleaseDC (NULL, hdc);
6166 6166
6167 /* initialise palette with white and black */ 6167 /* initialize palette with white and black */
6168 { 6168 {
6169 XColor color; 6169 XColor color;
6170 w32_defined_color (0, "white", &color, 1); 6170 w32_defined_color (0, "white", &color, 1);
diff --git a/src/w32uniscribe.c b/src/w32uniscribe.c
index 36197b3b28a..63da3b9e962 100644
--- a/src/w32uniscribe.c
+++ b/src/w32uniscribe.c
@@ -469,7 +469,7 @@ uniscribe_encode_char (struct font *font, int c)
469 469
470 /* Non BMP characters must be handled by the uniscribe shaping 470 /* Non BMP characters must be handled by the uniscribe shaping
471 engine as GDI functions (except blindly displaying lines of 471 engine as GDI functions (except blindly displaying lines of
472 unicode text) and the promising looking ScriptGetCMap do not 472 Unicode text) and the promising looking ScriptGetCMap do not
473 convert surrogate pairs to glyph indexes correctly. */ 473 convert surrogate pairs to glyph indexes correctly. */
474 { 474 {
475 items = (SCRIPT_ITEM *) alloca (sizeof (SCRIPT_ITEM) * 2 + 1); 475 items = (SCRIPT_ITEM *) alloca (sizeof (SCRIPT_ITEM) * 2 + 1);
@@ -581,7 +581,7 @@ add_opentype_font_name_to_list (ENUMLOGFONTEX *logical_font,
581 && font_type != TRUETYPE_FONTTYPE) 581 && font_type != TRUETYPE_FONTTYPE)
582 return 1; 582 return 1;
583 583
584 /* Skip fonts that have no unicode coverage. */ 584 /* Skip fonts that have no Unicode coverage. */
585 if (!physical_font->ntmFontSig.fsUsb[3] 585 if (!physical_font->ntmFontSig.fsUsb[3]
586 && !physical_font->ntmFontSig.fsUsb[2] 586 && !physical_font->ntmFontSig.fsUsb[2]
587 && !physical_font->ntmFontSig.fsUsb[1] 587 && !physical_font->ntmFontSig.fsUsb[1]
diff --git a/src/w32xfns.c b/src/w32xfns.c
index fbbf11bd65c..fc2d5904d67 100644
--- a/src/w32xfns.c
+++ b/src/w32xfns.c
@@ -188,7 +188,7 @@ get_next_msg (W32Msg * lpmsg, BOOL bWait)
188 } 188 }
189 189
190 nQueue--; 190 nQueue--;
191 /* Consolidate WM_PAINT messages to optimise redrawing. */ 191 /* Consolidate WM_PAINT messages to optimize redrawing. */
192 if (lpmsg->msg.message == WM_PAINT && nQueue) 192 if (lpmsg->msg.message == WM_PAINT && nQueue)
193 { 193 {
194 int_msg * lpCur = lpHead; 194 int_msg * lpCur = lpHead;
@@ -441,4 +441,3 @@ void
441x_sync (void *f) 441x_sync (void *f)
442{ 442{
443} 443}
444
diff --git a/src/window.c b/src/window.c
index a7daa1353bd..728e811f304 100644
--- a/src/window.c
+++ b/src/window.c
@@ -467,10 +467,8 @@ Return nil if WINDOW has no previous sibling. */)
467 return decode_any_window (window)->prev; 467 return decode_any_window (window)->prev;
468} 468}
469 469
470DEFUN ("window-combination-limit", Fwindow_combination_limit, Swindow_combination_limit, 0, 1, 0, 470DEFUN ("window-combination-limit", Fwindow_combination_limit, Swindow_combination_limit, 1, 1, 0,
471 doc: /* Return combination limit of window WINDOW. 471 doc: /* Return combination limit of window WINDOW.
472If WINDOW is omitted or nil, it defaults to the selected window.
473
474If the return value is nil, child windows of WINDOW can be recombined with 472If the return value is nil, child windows of WINDOW can be recombined with
475WINDOW's siblings. A return value of t means that child windows of 473WINDOW's siblings. A return value of t means that child windows of
476WINDOW are never \(re-)combined with WINDOW's siblings. */) 474WINDOW are never \(re-)combined with WINDOW's siblings. */)
@@ -480,18 +478,16 @@ WINDOW are never \(re-)combined with WINDOW's siblings. */)
480} 478}
481 479
482DEFUN ("set-window-combination-limit", Fset_window_combination_limit, Sset_window_combination_limit, 2, 2, 0, 480DEFUN ("set-window-combination-limit", Fset_window_combination_limit, Sset_window_combination_limit, 2, 2, 0,
483 doc: /* Set combination limit of window WINDOW to STATUS; return STATUS. 481 doc: /* Set combination limit of window WINDOW to LIMIT; return LIMIT.
484If WINDOW is omitted or nil, it defaults to the selected window. 482If LIMIT is nil, child windows of WINDOW can be recombined with
485 483WINDOW's siblings. LIMIT t means that child windows of WINDOW are
486If STATUS is nil, child windows of WINDOW can be recombined with
487WINDOW's siblings. STATUS t means that child windows of WINDOW are
488never \(re-)combined with WINDOW's siblings. Other values are reserved 484never \(re-)combined with WINDOW's siblings. Other values are reserved
489for future use. */) 485for future use. */)
490 (Lisp_Object window, Lisp_Object status) 486 (Lisp_Object window, Lisp_Object limit)
491{ 487{
492 register struct window *w = decode_any_window (window); 488 register struct window *w = decode_any_window (window);
493 489
494 w->combination_limit = status; 490 w->combination_limit = limit;
495 491
496 return w->combination_limit; 492 return w->combination_limit;
497} 493}
@@ -2187,7 +2183,7 @@ next_window (Lisp_Object window, Lisp_Object minibuf, Lisp_Object all_frames, in
2187 2183
2188 2184
2189DEFUN ("next-window", Fnext_window, Snext_window, 0, 3, 0, 2185DEFUN ("next-window", Fnext_window, Snext_window, 0, 3, 0,
2190 doc: /* Return window following WINDOW in cyclic ordering of windows. 2186 doc: /* Return live window after WINDOW in the cyclic ordering of windows.
2191WINDOW must be a live window and defaults to the selected one. The 2187WINDOW must be a live window and defaults to the selected one. The
2192optional arguments MINIBUF and ALL-FRAMES specify the set of windows to 2188optional arguments MINIBUF and ALL-FRAMES specify the set of windows to
2193consider. 2189consider.
@@ -2226,7 +2222,7 @@ windows, eventually ending up back at the window you started with.
2226 2222
2227 2223
2228DEFUN ("previous-window", Fprevious_window, Sprevious_window, 0, 3, 0, 2224DEFUN ("previous-window", Fprevious_window, Sprevious_window, 0, 3, 0,
2229 doc: /* Return window preceding WINDOW in cyclic ordering of windows. 2225 doc: /* Return live window before WINDOW in the cyclic ordering of windows.
2230WINDOW must be a live window and defaults to the selected one. The 2226WINDOW must be a live window and defaults to the selected one. The
2231optional arguments MINIBUF and ALL-FRAMES specify the set of windows to 2227optional arguments MINIBUF and ALL-FRAMES specify the set of windows to
2232consider. 2228consider.
@@ -5782,13 +5778,30 @@ get_phys_cursor_glyph (struct window *w)
5782{ 5778{
5783 struct glyph_row *row; 5779 struct glyph_row *row;
5784 struct glyph *glyph; 5780 struct glyph *glyph;
5781 int hpos = w->phys_cursor.hpos;
5782
5783 if (!(w->phys_cursor.vpos >= 0
5784 && w->phys_cursor.vpos < w->current_matrix->nrows))
5785 return NULL;
5786
5787 row = MATRIX_ROW (w->current_matrix, w->phys_cursor.vpos);
5788 if (!row->enabled_p)
5789 return NULL;
5790
5791 if (XINT (w->hscroll))
5792 {
5793 /* When the window is hscrolled, cursor hpos can legitimately be
5794 out of bounds, but we draw the cursor at the corresponding
5795 window margin in that case. */
5796 if (!row->reversed_p && hpos < 0)
5797 hpos = 0;
5798 if (row->reversed_p && hpos >= row->used[TEXT_AREA])
5799 hpos = row->used[TEXT_AREA] - 1;
5800 }
5785 5801
5786 if (w->phys_cursor.vpos >= 0 5802 if (row->used[TEXT_AREA] > hpos
5787 && w->phys_cursor.vpos < w->current_matrix->nrows 5803 && 0 <= hpos)
5788 && (row = MATRIX_ROW (w->current_matrix, w->phys_cursor.vpos), 5804 glyph = row->glyphs[TEXT_AREA] + hpos;
5789 row->enabled_p)
5790 && row->used[TEXT_AREA] > w->phys_cursor.hpos)
5791 glyph = row->glyphs[TEXT_AREA] + w->phys_cursor.hpos;
5792 else 5805 else
5793 glyph = NULL; 5806 glyph = NULL;
5794 5807
@@ -6524,10 +6537,10 @@ sibling.
6524 6537
6525Other values are reserved for future use. 6538Other values are reserved for future use.
6526 6539
6527The value of this variable is also assigned to the combination-limit 6540The value of this variable is also assigned to the combination limit of
6528status of the new parent window. The combination-limit status of a 6541the new parent window. The combination limit of a window can be
6529window can be retrieved via the function `window-combination-limit' and 6542retrieved via the function `window-combination-limit' and altered by the
6530altered by the function `set-window-combination-limit'. */); 6543function `set-window-combination-limit'. */);
6531 Vwindow_combination_limit = Qnil; 6544 Vwindow_combination_limit = Qnil;
6532 6545
6533 defsubr (&Sselected_window); 6546 defsubr (&Sselected_window);
diff --git a/src/window.h b/src/window.h
index de0f7307a51..df29ca1368f 100644
--- a/src/window.h
+++ b/src/window.h
@@ -268,7 +268,7 @@ struct window
268 /* List of buffers re-shown in this window. */ 268 /* List of buffers re-shown in this window. */
269 Lisp_Object next_buffers; 269 Lisp_Object next_buffers;
270 270
271 /* An alist with parameteres. */ 271 /* An alist with parameters. */
272 Lisp_Object window_parameters; 272 Lisp_Object window_parameters;
273 273
274 /* No Lisp data may follow below this point without changing 274 /* No Lisp data may follow below this point without changing
diff --git a/src/xdisp.c b/src/xdisp.c
index 747b91fa4ab..7c415e485b5 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -1450,7 +1450,7 @@ pos_visible_p (struct window *w, EMACS_INT charpos, int *x, int *y,
1450 position is CHARPOS. For the contingency that we 1450 position is CHARPOS. For the contingency that we
1451 didn't, and stopped at the first newline from the 1451 didn't, and stopped at the first newline from the
1452 display string, move back over the glyphs 1452 display string, move back over the glyphs
1453 prfoduced from the string, until we find the 1453 produced from the string, until we find the
1454 rightmost glyph not from the string. */ 1454 rightmost glyph not from the string. */
1455 if (IT_CHARPOS (it3) != charpos && EQ (it3.object, string)) 1455 if (IT_CHARPOS (it3) != charpos && EQ (it3.object, string))
1456 { 1456 {
@@ -14170,7 +14170,7 @@ set_cursor_from_row (struct window *w, struct glyph_row *row,
14170 || (STRINGP (g1->object) 14170 || (STRINGP (g1->object)
14171 && (!NILP (Fget_char_property (make_number (g1->charpos), 14171 && (!NILP (Fget_char_property (make_number (g1->charpos),
14172 Qcursor, g1->object)) 14172 Qcursor, g1->object))
14173 /* pevious candidate is from the same display 14173 /* previous candidate is from the same display
14174 string as this one, and the display string 14174 string as this one, and the display string
14175 came from a text property */ 14175 came from a text property */
14176 || (EQ (g1->object, glyph->object) 14176 || (EQ (g1->object, glyph->object)
@@ -15092,7 +15092,7 @@ redisplay_window (Lisp_Object window, int just_this_one_p)
15092 int current_matrix_up_to_date_p = 0; 15092 int current_matrix_up_to_date_p = 0;
15093 int used_current_matrix_p = 0; 15093 int used_current_matrix_p = 0;
15094 /* This is less strict than current_matrix_up_to_date_p. 15094 /* This is less strict than current_matrix_up_to_date_p.
15095 It indictes that the buffer contents and narrowing are unchanged. */ 15095 It indicates that the buffer contents and narrowing are unchanged. */
15096 int buffer_unchanged_p = 0; 15096 int buffer_unchanged_p = 0;
15097 int temp_scroll_step = 0; 15097 int temp_scroll_step = 0;
15098 int count = SPECPDL_INDEX (); 15098 int count = SPECPDL_INDEX ();
@@ -17102,7 +17102,7 @@ try_window_id (struct window *w)
17102 last_unchanged_at_beg_row = find_last_unchanged_at_beg_row (w); 17102 last_unchanged_at_beg_row = find_last_unchanged_at_beg_row (w);
17103 if (last_unchanged_at_beg_row) 17103 if (last_unchanged_at_beg_row)
17104 { 17104 {
17105 /* Avoid starting to display in the moddle of a character, a TAB 17105 /* Avoid starting to display in the middle of a character, a TAB
17106 for instance. This is easier than to set up the iterator 17106 for instance. This is easier than to set up the iterator
17107 exactly, and it's not a frequent case, so the additional 17107 exactly, and it's not a frequent case, so the additional
17108 effort wouldn't really pay off. */ 17108 effort wouldn't really pay off. */
@@ -18054,6 +18054,23 @@ insert_left_trunc_glyphs (struct it *it)
18054 } 18054 }
18055} 18055}
18056 18056
18057/* Compute the hash code for ROW. */
18058unsigned
18059row_hash (struct glyph_row *row)
18060{
18061 int area, k;
18062 unsigned hashval = 0;
18063
18064 for (area = LEFT_MARGIN_AREA; area < LAST_AREA; ++area)
18065 for (k = 0; k < row->used[area]; ++k)
18066 hashval = ((((hashval << 4) + (hashval >> 24)) & 0x0fffffff)
18067 + row->glyphs[area][k].u.val
18068 + row->glyphs[area][k].face_id
18069 + row->glyphs[area][k].padding_p
18070 + (row->glyphs[area][k].type << 2));
18071
18072 return hashval;
18073}
18057 18074
18058/* Compute the pixel height and width of IT->glyph_row. 18075/* Compute the pixel height and width of IT->glyph_row.
18059 18076
@@ -18140,17 +18157,7 @@ compute_line_metrics (struct it *it)
18140 } 18157 }
18141 18158
18142 /* Compute a hash code for this row. */ 18159 /* Compute a hash code for this row. */
18143 { 18160 row->hash = row_hash (row);
18144 int area, i;
18145 row->hash = 0;
18146 for (area = LEFT_MARGIN_AREA; area < LAST_AREA; ++area)
18147 for (i = 0; i < row->used[area]; ++i)
18148 row->hash = ((((row->hash << 4) + (row->hash >> 24)) & 0x0fffffff)
18149 + row->glyphs[area][i].u.val
18150 + row->glyphs[area][i].face_id
18151 + row->glyphs[area][i].padding_p
18152 + (row->glyphs[area][i].type << 2));
18153 }
18154 18161
18155 it->max_ascent = it->max_descent = 0; 18162 it->max_ascent = it->max_descent = 0;
18156 it->max_phys_ascent = it->max_phys_descent = 0; 18163 it->max_phys_ascent = it->max_phys_descent = 0;
@@ -24895,9 +24902,17 @@ x_produce_glyphs (struct it *it)
24895void 24902void
24896x_write_glyphs (struct glyph *start, int len) 24903x_write_glyphs (struct glyph *start, int len)
24897{ 24904{
24898 int x, hpos; 24905 int x, hpos, chpos = updated_window->phys_cursor.hpos;
24899 24906
24900 xassert (updated_window && updated_row); 24907 xassert (updated_window && updated_row);
24908 /* When the window is hscrolled, cursor hpos can legitimately be out
24909 of bounds, but we draw the cursor at the corresponding window
24910 margin in that case. */
24911 if (!updated_row->reversed_p && chpos < 0)
24912 chpos = 0;
24913 if (updated_row->reversed_p && chpos >= updated_row->used[TEXT_AREA])
24914 chpos = updated_row->used[TEXT_AREA] - 1;
24915
24901 BLOCK_INPUT; 24916 BLOCK_INPUT;
24902 24917
24903 /* Write glyphs. */ 24918 /* Write glyphs. */
@@ -24912,8 +24927,8 @@ x_write_glyphs (struct glyph *start, int len)
24912 if (updated_area == TEXT_AREA 24927 if (updated_area == TEXT_AREA
24913 && updated_window->phys_cursor_on_p 24928 && updated_window->phys_cursor_on_p
24914 && updated_window->phys_cursor.vpos == output_cursor.vpos 24929 && updated_window->phys_cursor.vpos == output_cursor.vpos
24915 && updated_window->phys_cursor.hpos >= hpos 24930 && chpos >= hpos
24916 && updated_window->phys_cursor.hpos < hpos + len) 24931 && chpos < hpos + len)
24917 updated_window->phys_cursor_on_p = 0; 24932 updated_window->phys_cursor_on_p = 0;
24918 24933
24919 UNBLOCK_INPUT; 24934 UNBLOCK_INPUT;
@@ -25430,8 +25445,17 @@ draw_phys_cursor_glyph (struct window *w, struct glyph_row *row,
25430 { 25445 {
25431 int on_p = w->phys_cursor_on_p; 25446 int on_p = w->phys_cursor_on_p;
25432 int x1; 25447 int x1;
25433 x1 = draw_glyphs (w, w->phys_cursor.x, row, TEXT_AREA, 25448 int hpos = w->phys_cursor.hpos;
25434 w->phys_cursor.hpos, w->phys_cursor.hpos + 1, 25449
25450 /* When the window is hscrolled, cursor hpos can legitimately be
25451 out of bounds, but we draw the cursor at the corresponding
25452 window margin in that case. */
25453 if (!row->reversed_p && hpos < 0)
25454 hpos = 0;
25455 if (row->reversed_p && hpos >= row->used[TEXT_AREA])
25456 hpos = row->used[TEXT_AREA] - 1;
25457
25458 x1 = draw_glyphs (w, w->phys_cursor.x, row, TEXT_AREA, hpos, hpos + 1,
25435 hl, 0); 25459 hl, 0);
25436 w->phys_cursor_on_p = on_p; 25460 w->phys_cursor_on_p = on_p;
25437 25461
@@ -25519,6 +25543,14 @@ erase_phys_cursor (struct window *w)
25519 : (w->phys_cursor.hpos >= cursor_row->used[TEXT_AREA]))) 25543 : (w->phys_cursor.hpos >= cursor_row->used[TEXT_AREA])))
25520 goto mark_cursor_off; 25544 goto mark_cursor_off;
25521 25545
25546 /* When the window is hscrolled, cursor hpos can legitimately be out
25547 of bounds, but we draw the cursor at the corresponding window
25548 margin in that case. */
25549 if (!cursor_row->reversed_p && hpos < 0)
25550 hpos = 0;
25551 if (cursor_row->reversed_p && hpos >= cursor_row->used[TEXT_AREA])
25552 hpos = cursor_row->used[TEXT_AREA] - 1;
25553
25522 /* If the cursor is in the mouse face area, redisplay that when 25554 /* If the cursor is in the mouse face area, redisplay that when
25523 we clear the cursor. */ 25555 we clear the cursor. */
25524 if (! NILP (hlinfo->mouse_face_window) 25556 if (! NILP (hlinfo->mouse_face_window)
@@ -25662,8 +25694,26 @@ update_window_cursor (struct window *w, int on)
25662 of being deleted. */ 25694 of being deleted. */
25663 if (w->current_matrix) 25695 if (w->current_matrix)
25664 { 25696 {
25697 int hpos = w->phys_cursor.hpos;
25698 int vpos = w->phys_cursor.vpos;
25699 struct glyph_row *row;
25700
25701 if (vpos >= w->current_matrix->nrows
25702 || hpos >= w->current_matrix->matrix_w)
25703 return;
25704
25705 row = MATRIX_ROW (w->current_matrix, vpos);
25706
25707 /* When the window is hscrolled, cursor hpos can legitimately be
25708 out of bounds, but we draw the cursor at the corresponding
25709 window margin in that case. */
25710 if (!row->reversed_p && hpos < 0)
25711 hpos = 0;
25712 if (row->reversed_p && hpos >= row->used[TEXT_AREA])
25713 hpos = row->used[TEXT_AREA] - 1;
25714
25665 BLOCK_INPUT; 25715 BLOCK_INPUT;
25666 display_and_set_cursor (w, on, w->phys_cursor.hpos, w->phys_cursor.vpos, 25716 display_and_set_cursor (w, on, hpos, vpos,
25667 w->phys_cursor.x, w->phys_cursor.y); 25717 w->phys_cursor.x, w->phys_cursor.y);
25668 UNBLOCK_INPUT; 25718 UNBLOCK_INPUT;
25669 } 25719 }
@@ -25833,9 +25883,18 @@ show_mouse_face (Mouse_HLInfo *hlinfo, enum draw_glyphs_face draw)
25833 if (FRAME_WINDOW_P (f) 25883 if (FRAME_WINDOW_P (f)
25834 && phys_cursor_on_p && !w->phys_cursor_on_p) 25884 && phys_cursor_on_p && !w->phys_cursor_on_p)
25835 { 25885 {
25886 int hpos = w->phys_cursor.hpos;
25887
25888 /* When the window is hscrolled, cursor hpos can legitimately be
25889 out of bounds, but we draw the cursor at the corresponding
25890 window margin in that case. */
25891 if (!row->reversed_p && hpos < 0)
25892 hpos = 0;
25893 if (row->reversed_p && hpos >= row->used[TEXT_AREA])
25894 hpos = row->used[TEXT_AREA] - 1;
25895
25836 BLOCK_INPUT; 25896 BLOCK_INPUT;
25837 display_and_set_cursor (w, 1, 25897 display_and_set_cursor (w, 1, hpos, w->phys_cursor.vpos,
25838 w->phys_cursor.hpos, w->phys_cursor.vpos,
25839 w->phys_cursor.x, w->phys_cursor.y); 25898 w->phys_cursor.x, w->phys_cursor.y);
25840 UNBLOCK_INPUT; 25899 UNBLOCK_INPUT;
25841 } 25900 }
@@ -25934,7 +25993,19 @@ coords_in_mouse_face_p (struct window *w, int hpos, int vpos)
25934int 25993int
25935cursor_in_mouse_face_p (struct window *w) 25994cursor_in_mouse_face_p (struct window *w)
25936{ 25995{
25937 return coords_in_mouse_face_p (w, w->phys_cursor.hpos, w->phys_cursor.vpos); 25996 int hpos = w->phys_cursor.hpos;
25997 int vpos = w->phys_cursor.vpos;
25998 struct glyph_row *row = MATRIX_ROW (w->current_matrix, vpos);
25999
26000 /* When the window is hscrolled, cursor hpos can legitimately be out
26001 of bounds, but we draw the cursor at the corresponding window
26002 margin in that case. */
26003 if (!row->reversed_p && hpos < 0)
26004 hpos = 0;
26005 if (row->reversed_p && hpos >= row->used[TEXT_AREA])
26006 hpos = row->used[TEXT_AREA] - 1;
26007
26008 return coords_in_mouse_face_p (w, hpos, vpos);
25938} 26009}
25939 26010
25940 26011
diff --git a/src/xfns.c b/src/xfns.c
index 6de412c4e68..c68149cce11 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -2962,7 +2962,7 @@ x_default_font_parameter (struct frame *f, Lisp_Object parms)
2962 2962
2963 if (NILP (font_param)) 2963 if (NILP (font_param))
2964 { 2964 {
2965 /* System font should take precedendce over X resources. We suggest this 2965 /* System font should take precedence over X resources. We suggest this
2966 regardless of font-use-system-font because .emacs may not have been 2966 regardless of font-use-system-font because .emacs may not have been
2967 read yet. */ 2967 read yet. */
2968 const char *system_font = xsettings_get_system_font (); 2968 const char *system_font = xsettings_get_system_font ();
@@ -5914,7 +5914,7 @@ the tool bar buttons. */);
5914 x_gtk_whole_detached_tool_bar = 0; 5914 x_gtk_whole_detached_tool_bar = 0;
5915 5915
5916 DEFVAR_BOOL ("x-gtk-use-system-tooltips", x_gtk_use_system_tooltips, 5916 DEFVAR_BOOL ("x-gtk-use-system-tooltips", x_gtk_use_system_tooltips,
5917 doc: /* *If non-nil with a Gtk+ built Emacs, the Gtk+ toolip is used. 5917 doc: /* *If non-nil with a Gtk+ built Emacs, the Gtk+ tooltip is used.
5918Otherwise use Emacs own tooltip implementation. 5918Otherwise use Emacs own tooltip implementation.
5919When using Gtk+ tooltips, the tooltip face is not used. */); 5919When using Gtk+ tooltips, the tooltip face is not used. */);
5920 x_gtk_use_system_tooltips = 1; 5920 x_gtk_use_system_tooltips = 1;
diff --git a/src/xmenu.c b/src/xmenu.c
index 0dd652b566d..4b7bbfd73dc 100644
--- a/src/xmenu.c
+++ b/src/xmenu.c
@@ -1304,7 +1304,7 @@ free_frame_menubar (FRAME_PTR f)
1304#ifdef USE_MOTIF 1304#ifdef USE_MOTIF
1305 /* Removing the menu bar magically changes the shell widget's x 1305 /* Removing the menu bar magically changes the shell widget's x
1306 and y position of (0, 0) which, when the menu bar is turned 1306 and y position of (0, 0) which, when the menu bar is turned
1307 on again, leads to pull-down menuss appearing in strange 1307 on again, leads to pull-down menus appearing in strange
1308 positions near the upper-left corner of the display. This 1308 positions near the upper-left corner of the display. This
1309 happens only with some window managers like twm and ctwm, 1309 happens only with some window managers like twm and ctwm,
1310 but not with other like Motif's mwm or kwm, because the 1310 but not with other like Motif's mwm or kwm, because the
diff --git a/src/xterm.c b/src/xterm.c
index f8af8ae3df0..f750c00cea0 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -2972,9 +2972,7 @@ x_clear_frame (struct frame *f)
2972 follow an explicit cursor_to. */ 2972 follow an explicit cursor_to. */
2973 BLOCK_INPUT; 2973 BLOCK_INPUT;
2974 2974
2975 /* The following call is commented out because it does not seem to accomplish 2975 XClearWindow (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f));
2976 anything, apart from causing flickering during window resize. */
2977 /* XClearWindow (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f)); */
2978 2976
2979 /* We have to clear the scroll bars. If we have changed colors or 2977 /* We have to clear the scroll bars. If we have changed colors or
2980 something like that, then they should be notified. */ 2978 something like that, then they should be notified. */
@@ -4193,7 +4191,7 @@ static Boolean xaw3d_arrow_scroll;
4193 4191
4194/* Whether the drag scrolling maintains the mouse at the top of the 4192/* Whether the drag scrolling maintains the mouse at the top of the
4195 thumb. If not, resizing the thumb needs to be done more carefully 4193 thumb. If not, resizing the thumb needs to be done more carefully
4196 to avoid jerkyness. */ 4194 to avoid jerkiness. */
4197 4195
4198static Boolean xaw3d_pick_top; 4196static Boolean xaw3d_pick_top;
4199 4197
@@ -8779,7 +8777,7 @@ x_wait_for_event (struct frame *f, int eventtype)
8779 pending_event_wait.f = f; 8777 pending_event_wait.f = f;
8780 pending_event_wait.eventtype = eventtype; 8778 pending_event_wait.eventtype = eventtype;
8781 8779
8782 /* Set timeout to 0.1 second. Hopefully not noticable. 8780 /* Set timeout to 0.1 second. Hopefully not noticeable.
8783 Maybe it should be configurable. */ 8781 Maybe it should be configurable. */
8784 EMACS_SET_SECS_USECS (tmo, 0, 100000); 8782 EMACS_SET_SECS_USECS (tmo, 0, 100000);
8785 EMACS_GET_TIME (tmo_at); 8783 EMACS_GET_TIME (tmo_at);
diff --git a/test/ChangeLog b/test/ChangeLog
index 9afed6f5f90..04a70737d61 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,11 @@
12011-11-22 Glenn Morris <rgm@gnu.org>
2
3 * rmailmm.el: New file, split from lisp/mail/rmailmm.el.
4
52011-11-20 Juanma Barranquero <lekktu@gmail.com>
6
7 * cedet/semantic-utest-c.el (semantic-utest-c-comparisons): Fix typo.
8
12011-11-16 Juanma Barranquero <lekktu@gmail.com> 92011-11-16 Juanma Barranquero <lekktu@gmail.com>
2 10
3 * automated/icalendar-tests.el (icalendar-tests--get-ical-event) 11 * automated/icalendar-tests.el (icalendar-tests--get-ical-event)
diff --git a/test/cedet/semantic-utest-c.el b/test/cedet/semantic-utest-c.el
index 946a818e70e..3fbd180290c 100644
--- a/test/cedet/semantic-utest-c.el
+++ b/test/cedet/semantic-utest-c.el
@@ -28,7 +28,7 @@
28(defvar semantic-utest-c-comparisons 28(defvar semantic-utest-c-comparisons
29 '( ("testsppreplace.c" . "testsppreplaced.c") 29 '( ("testsppreplace.c" . "testsppreplaced.c")
30 ) 30 )
31 "List of files to parse and compare against eachother.") 31 "List of files to parse and compare against each other.")
32 32
33;;; Code: 33;;; Code:
34;;;###autoload 34;;;###autoload
diff --git a/test/cedet/semantic-utest.el b/test/cedet/semantic-utest.el
index db737b60c6f..ff62040129d 100644
--- a/test/cedet/semantic-utest.el
+++ b/test/cedet/semantic-utest.el
@@ -170,7 +170,7 @@ def fun2(a,b,c): #1
170 170
171 171
172) 172)
173; "pyhon test case. notice that python is indentation sensitive 173; "python test case. notice that python is indentation sensitive
174 174
175 175
176(defvar semantic-utest-Python-name-contents 176(defvar semantic-utest-Python-name-contents
@@ -622,7 +622,7 @@ INSERTME is the text to be inserted after the deletion."
622 ) 622 )
623 623
624;look at http://mfgames.com/linux/csharp-mode 624;look at http://mfgames.com/linux/csharp-mode
625(defun semantic-utest-Csharp() ;; hmm i dont even know how to edit a scharp file. need a csharp mode implementation i suppose 625(defun semantic-utest-Csharp() ;; hmm i don't even know how to edit a scharp file. need a csharp mode implementation i suppose
626 (interactive) 626 (interactive)
627 (if (fboundp 'csharp-mode) 627 (if (fboundp 'csharp-mode)
628 (semantic-utest-generic "C#" (semantic-utest-fname "csharptest.cs") semantic-utest-Csharp-buffer-contents semantic-utest-Csharp-name-contents '("fun2") "//1" "//deleted line") 628 (semantic-utest-generic "C#" (semantic-utest-fname "csharptest.cs") semantic-utest-Csharp-buffer-contents semantic-utest-Csharp-name-contents '("fun2") "//1" "//deleted line")
diff --git a/test/cedet/tests/testsppreplaced.c b/test/cedet/tests/testsppreplaced.c
index 5098715081f..58d1ac2b684 100644
--- a/test/cedet/tests/testsppreplaced.c
+++ b/test/cedet/tests/testsppreplaced.c
@@ -69,7 +69,7 @@ int continuation_symbol () { };
69 69
70int tail (int q) {} 70int tail (int q) {}
71 71
72/* TEST: macros used impropertly. */ 72/* TEST: macros used improperly */
73 73
74int tail_fcn(int q); 74int tail_fcn(int q);
75 75
@@ -98,7 +98,7 @@ namespace foo { namespace bar {
98 98
99 int foo_bar_func(int a) { } 99 int foo_bar_func(int a) { }
100 100
101 } 101 }
102} 102}
103 103
104/* TEST: The VC++ macro hack. */ 104/* TEST: The VC++ macro hack. */
@@ -115,4 +115,3 @@ int MACROA () {
115 115
116 116
117/* End */ 117/* End */
118
diff --git a/test/rmailmm.el b/test/rmailmm.el
new file mode 100644
index 00000000000..97577ee35cb
--- /dev/null
+++ b/test/rmailmm.el
@@ -0,0 +1,93 @@
1;;; rmailmm.el --- tests for mail/rmailmm.el
2
3;; Copyright (C) 2006-2011 Free Software Foundation, Inc.
4
5;; This file is part of GNU Emacs.
6
7;; GNU Emacs is free software: you can redistribute it and/or modify
8;; it under the terms of the GNU General Public License as published by
9;; the Free Software Foundation, either version 3 of the License, or
10;; (at your option) any later version.
11
12;; GNU Emacs is distributed in the hope that it will be useful,
13;; but WITHOUT ANY WARRANTY; without even the implied warranty of
14;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15;; GNU General Public License for more details.
16
17;; You should have received a copy of the GNU General Public License
18;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
19
20;;; Commentary:
21
22;;; Code:
23
24(require 'rmailmm)
25
26(defun rmailmm-test-handler ()
27 "Test of a mail using no MIME parts at all."
28 (let ((mail "To: alex@gnu.org
29Content-Type: text/plain; charset=koi8-r
30Content-Transfer-Encoding: 8bit
31MIME-Version: 1.0
32
33\372\304\322\301\327\323\324\327\325\312\324\305\41"))
34 (switch-to-buffer (get-buffer-create "*test*"))
35 (erase-buffer)
36 (set-buffer-multibyte nil)
37 (insert mail)
38 (rmail-mime-show t)
39 (set-buffer-multibyte t)))
40
41(defun rmailmm-test-bulk-handler ()
42 "Test of a mail used as an example in RFC 2183."
43 (let ((mail "Content-Type: image/jpeg
44Content-Disposition: attachment; filename=genome.jpeg;
45 modification-date=\"Wed, 12 Feb 1997 16:29:51 -0500\";
46Content-Description: a complete map of the human genome
47Content-Transfer-Encoding: base64
48
49iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAABGdBTUEAALGPC/xhBQAAAAZQ
50TFRF////AAAAVcLTfgAAAPZJREFUeNq9ldsOwzAIQ+3//+l1WlvA5ZLsoUiTto4TB+ISoAjy
51+ITfRBfcAmgRFFeAm+J6uhdKdFhFWUgDkFsK0oUp/9G2//Kj7Jx+5tSKOdBscgUYiKHRS/me
52WATQdRUvAK0Bnmshmtn79PpaLBbbOZkjKvRnjRZoRswOkG1wFchKew2g9wXVJVZL/m4+B+vv
539AxQQR2Q33SgAYJzzVACdAWjAfRYzYFO9n6SLnydtQHSMxYDMAKqZ/8FS/lTK+zuq3CtK64L
54UDwbgUEAUmk2Zyg101d6PhCDySgAvTvDgKiuOrc4dLxUb7UMnhGIexyI+d6U+ABuNAP4Simx
55lgAAAABJRU5ErkJggg==
56"))
57 (switch-to-buffer (get-buffer-create "*test*"))
58 (erase-buffer)
59 (insert mail)
60 (rmail-mime-show)))
61
62(defun rmailmm-test-multipart-handler ()
63 "Test of a mail used as an example in RFC 2046."
64 (let ((mail "From: Nathaniel Borenstein <nsb@bellcore.com>
65To: Ned Freed <ned@innosoft.com>
66Date: Sun, 21 Mar 1993 23:56:48 -0800 (PST)
67Subject: Sample message
68MIME-Version: 1.0
69Content-type: multipart/mixed; boundary=\"simple boundary\"
70
71This is the preamble. It is to be ignored, though it
72is a handy place for composition agents to include an
73explanatory note to non-MIME conformant readers.
74
75--simple boundary
76
77This is implicitly typed plain US-ASCII text.
78It does NOT end with a linebreak.
79--simple boundary
80Content-type: text/plain; charset=us-ascii
81
82This is explicitly typed plain US-ASCII text.
83It DOES end with a linebreak.
84
85--simple boundary--
86
87This is the epilogue. It is also to be ignored."))
88 (switch-to-buffer (get-buffer-create "*test*"))
89 (erase-buffer)
90 (insert mail)
91 (rmail-mime-show t)))
92
93;;; rmailmm.el ends here